KR20010072128A - 비휘발성 메모리를 갱신하기 위한 방법 및 장치 - Google Patents

비휘발성 메모리를 갱신하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20010072128A
KR20010072128A KR1020017001307A KR20017001307A KR20010072128A KR 20010072128 A KR20010072128 A KR 20010072128A KR 1020017001307 A KR1020017001307 A KR 1020017001307A KR 20017001307 A KR20017001307 A KR 20017001307A KR 20010072128 A KR20010072128 A KR 20010072128A
Authority
KR
South Korea
Prior art keywords
block
nonvolatile memory
selector
group
range
Prior art date
Application number
KR1020017001307A
Other languages
English (en)
Other versions
KR100437230B1 (ko
Inventor
하스번로버트엔.
Original Assignee
피터 엔. 데트킨
인텔 코오퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 피터 엔. 데트킨, 인텔 코오퍼레이션 filed Critical 피터 엔. 데트킨
Publication of KR20010072128A publication Critical patent/KR20010072128A/ko
Application granted granted Critical
Publication of KR100437230B1 publication Critical patent/KR100437230B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation

Abstract

본 발명은 비휘발성 메모리(340)를 갱신하기 위한 장치 및 방법에 관한 것이다. 어드레스의 제1 범위에 연관된 제1 블록(342) 및 어드레스의 제2 범위에 연관된 제2 블록(344)을 구비한 비휘발성 메모리(340)의 선택된 부분에 코드가 기록되는데, 여기서, 상기 선택된 부분은 제2 블록(344)이다. 블록 선택기(310)의 토글링은 제1 및 제2 블록의 어드레스를 스와핑하는데, 여기서, 어드레스의 제1 범위는 비휘발성 메모리(340)의 제2 블록(344)을 참조하고, 어드레스의 제2 범위는 비휘발성 메모리(340)의 제1 블록(342)을 참조한다. 장치는 소정의 어드레스에서 부트 시퀀스를 개시하는 프로세서(330)를 포함한다. 어드레스 디코더(320)는 블록 선택기(310)의 값에 따라 소정의 어드레스에 응답하여 비휘발성 메모리(340)의 제1 블록(342) 또는 제2 블록(344)을 액세스한다.

Description

비휘발성 메모리를 갱신하기 위한 방법 및 장치{METHOD AND APPARATUS FOR UPDATING A NONVOLATILE MEMORY}
컴퓨터 시스템의 초기화("부팅(booting)")는 컴퓨터 시스템의 파워-업, 또는 하드웨어 또는 소프트웨어 리셋 동작 직후에 수행된다. 하나의 부트 구조에서, 프로세서가 리셋 또는 파워-업 될 때, 그 프로세서는 소정의 메모리 위치를 판독하도록 설계된다. 상기 소정의 메모리 위치는 프로세서로 부트스트랩 루틴 시작의 메모리 어드레스를 지시하는 포인터 또는 어드레스를 저장하고 있다. 이 포인터 또는 어드레스를 부트 벡터(boot vector)라 한다.
부트 벡터는 ROM(read-only memory)과 같은 비휘발성 메모리의 어드레스에 대해 디폴트된다. 그러나, 소프트웨어 리셋에 있어서, 부트 벡터는 RAM(random access memory) 위치를 가리킬 수 있다. 비휘발성 메모리는 부트스트랩 로더(loader)를 저장하고, 통상적으로 POST(power on system test)와 같은 다른 초기화 루틴을 저장한다. 부트스트랩 로더 및 다른 최소 초기화 절차를 저장하고 있는 장치를 부트 장치(boot device)라 한다.
비휘발성 메모리는 또한 컴퓨터 시스템 내의 입력/출력 장치와 통신하기 위한 루틴을 포함할 수 있다. 일부 컴퓨터 시스템에서, 이들 루틴을 합쳐서 BIOS(Basic Input Output System)라 한다. 프로세서 상에 실행되는 소프트웨어가 키보드, 마우스, 비휘발성 대용량 메모리 저장 장치 및 다른 주변 장치와 통신할 수 있도록 하기 위하여, BIOS는 공통 인터페이스를 제공한다.
부트 코드 및 BIOS를 위한 ROM 기반 저장 기술은 수정(modification)이 불가능한 경향이 있다. 시스템에 제공된 BIOS는 어떤 종류 또는 형태의 주변 장치를 조정하는데 제한되거나 또는 에러가 발생할 수 있다. BIOS 또는 부트 코드를 수정하기 위해서는, 그 BIOS를 포함한 ROM이 교체되어야 한다. 이것은 ROM에 대한 액세스를 얻기 위해 그 컴퓨터 시스템의 부분적 해체를 필요로 한다. 만일, 이 ROM이 땜납으로 마운트되었다면, 이것은 교체되기 어려울 것이다.
ROM, PROM(programmable ROM) 및 EPROM(electrically programmable ROM)은 다양한 형태의 비휘발성 반도체 메모리를 나타낸다. 플래시 EPROM("flash memory")은 재기록이 가능한 비휘발성 반도체 메모리 형태이다.
BIOS 및 부트 코드를 저장하기 위한 플래시 메모리의 사용은 갱신(update)을 조절하는데 보다 큰 유연성을 제공한다. 예를 들어, BIOS는 프로그램을 실행함으로써 갱신될 수 있고, 이에 따라 ROM을 교체할 필요가 없어진다.
그러나, 통상적으로 부트 코드 자신을 갱신할 수 있는 것은 제공되지 않는다. 만일, 부트 코드가 소정의 어드레스에서 시작되어야 한다면, 갱신된 부트 코드는 그 부트 코드의 현재 버전과 동일한 위치에서 시작되어야 한다. 따라서, 갱신 동작은 부트 코드의 현재 버전을 갱신된 부트 코드로 효과적으로 덮어쓰기(overwrite)해야 한다. 만일, 갱신된 부트 코드가 기록되기 전에 파워 손실이 발생하면, 현재 버전 및 갱신된 부트 코드 모두가 사용 불가능하게 처리될 수 있다. 만일, 부트 코드가 손상되면, 그 시스템은 부팅할 수 없고, 통상적으로 동작 불가능으로 처리된다.
이 문제에 대한 소극적 해결책은 간단히 부트 코드를 갱신하는 어떠한 준비 수단도 제공하지 않는 것이다. 그러나, 어떠한 물리적 장애가 부트 코드를 포함하는 메모리 범위의 수정을 막지 않는 한, 그 컴퓨터 시스템은 부트 코드의 고의적인 또는 부주의한 수정의 위험에 노출 되어진다. 부주의한 또는 고의적인 수정은 그 비휘발성 메모리가 교체될 때가지 컴퓨터를 동작 불가능으로 처리되도록 하는 결과를 초래할 수 있다. 숙련된 유저가 부트 코드를 고의적으로 수정하려고 시도하더라도, 성공적이지 못한 프로그래밍 시도 이벤트에서 부트 코드의 이전 버전을 사용하기 위한 제공은 없다. 만일, 부트 코드에 대해 시도된 갱신 중에 파워 손실이 발생한다면, 그 부트 코드의 이전 및 새로운 버전 모두가 손상될 수 있다. 이에 따라, 컴퓨터는 그 비휘발성 메모리가 물리적으로 교체될 때까지 동작 불가능으로 처리될 수 있다.
부트 코드의 손상을 방지하도록 설계된 또 다른 기술은 그 내용이 제거 또는 수정되지 못하도록 하기 위해 재기록 가능한 비휘발성 메모리의 일부 부분을로킹(locking)하는 것이다. 이 로킹된 부분은 통상적으로 부트 코드는 포함하지만 BIOS는 포함하지 않는다. 따라서, BIOS 갱신 소프트웨어는 완전히 언로킹 되거나 또는 부분적으로 로킹된 비휘발성 메모리로 그 BIOS를 갱신할 수 있으나, 부트 코드는 두 방법으로는 쉽게 수정되지 않는다. 로킹된 부분은 BIOS가 손상될 때마다 자동적으로 사용되는 특별 갱신 코드를 저장할 수 있다. 이 특별 갱신 코드는 BIOS가 저장 매체로부터 갱신될 수 있도록 하기 위하여 그 BIOS의 카피를 가진 일부 저장 매체를 제공하도록 유저에게 요구한다. 그러나, 특별 갱신 코드는 부트 코드를 교체하기 위한 어떠한 메커니즘도 제공하지 않는다.
본 발명은 컴퓨터 시스템 분야에 관한 것이다. 특히, 본 발명은 비휘발성 메모리를 갱신하기 위한 방법 및 장치에 관한 것이다.
본 발명은 첨부된 도면의 구성으로 제한되지 않고 예시로써 도시되며, 여기서, 동일한 참조 부호는 유사한 구성요소를 가리킨다.
도1은 컴퓨터 시스템을 도시한 블록도.
도2는 비대칭적 및 대칭적으로 블록된 비휘발성 메모리 벌크를 도시한 도면.
도3은 비휘발성 메모리의 제1 및 제2 부분 중 하나에 저장된 부트 코드를 갱신할 수 있는 장치의 일실시예를 도시한 도면.
도4는 블록 선택기의 값에 따른 디코딩 방법을 도시한 도면.
도5는 비휘발성 메모리에 저장된 부트 코드를 갱신하는 방법을 도시한 도면.
도6은 블록 선택기 값 및 설명의 테이블을 도시한 도면.
도7은 블록 선택기의 값에 따른 비휘발성 메모리 어드레스의 스와핑을 도시한 도면.
도8은 그룹 선택기의 값에 따른 비휘발성 메모리의 블록 그룹에 대한 메모리 어드레스의 스와핑을 도시한 도면.
발명의 요약
코드를 갱신하는 방법은 어드레스의 제1 범위에 연관된 제1 부분 및 어드레스의 제2 범위에 연관된 제2 부분을 구비한 비휘발성 메모리의 선택된 부분에 코드를 기록하는 단계 - 여기서, 상기 선택된 부분은 제2 부분임- 를 포함한다. 블록 선택기는 상기 제1 및 제2 부분의 어드레스를 스와핑(swapping)하도록 토글링(toggling)되는데, 여기서, 상기 어드레스의 제1 범위는 비휘발성 메모리의 제2 부분을 참조하고, 어드레스의 제2 범위는 비휘발성 메모리의 제1 부분을 참조한다.
블록 선택기를 이용한 장치는 소정의 어드레스에서 부트 시퀀스를 개시하는 프로세서를 포함한다. 블록 선택기가 제1 값을 갖는 경우, 어드레스 디코더는 상기소정의 어드레스에 응답하여 제1 블록에 액세스한다. 블록 선택기가 제2 값을 갖는 경우, 어드레스 디코더는 소정의 어드레스에 응답하여 제2 블록에 액세스한다.
또 다른 방법은 프로세서로부터 어드레스를 수신하는 단계를 포함한다. 어드레스는 어드레스의 제1 범위에 연관된 비휘발성 메모리의 적어도 하나의 블록의 제1 그룹을 액세스하도록 그룹 선택기의 제1 값에 따라 디코딩되는데, 여기서 비휘발성 메모리의 적어도 하나의 블록의 제2 그룹은 어드레스의 제2 범위에 연관된다. 그룹 선택기가 제2 값으로 토글링되는데, 여기서 제1 범위는 제2 그룹에 연관되고, 제2 범위는 제2 그룹에 연관된다.
그룹 선택기를 이용한 장치는 다수의 블록 및 어드레스 디코더를 구비한 비휘발성 메모리를 포함한다. 그룹 선택기가 제1 값을 갖는 경우, 어드레스 디코더는 어드레스의 제1 범위를 비휘발성 메모리의 적어도 하나의 블록의 제1 그룹에, 어드레스의 제2 범위를 비휘발성 메모리의 적어도 하나의 블록의 제2 그룹에 연관시킨다. 그룹 선택기가 제2 값을 갖는 경우, 어드레스 디코더는 제1 범위를 제2 그룹에, 제2 범위를 제1 그룹에 연관시킨다.
본 발명의 다른 특징 및 장점들은 첨부된 도면과 이하에 뒤따르는 상세한 설명으로부터 명백해질 것이다.
도1은 컴퓨터 시스템 아키텍처를 도시하고 있다. 컴퓨터 시스템(100)은 프로세서(110)를 포함한다. 마우스(120) 및 키보드(130)와 같은 입력 장치는 유저가 컴퓨터 시스템(100)으로 데이터를 입력할 수 있도록 한다. 프로세서에 의해 생성된 정보는 디스플레이(140)와 같은 출력 장치로 제공된다. 컴퓨터 시스템(100)은 프로세서에 의해 사용되는 RAM을 포함한다. 비휘발성 대용량 데이터 저장 장치(170)는 컴퓨터 시스템이 파워-다운될 때에도 프로그램 및 데이터를 유지하도록 사용된다. 일실시예에서, 비휘발성 대용량 저장 장치(170)는 전기-기계적(electro-mechanical) 하드 장치이다. 다른 실시예에서, 비휘발성 대용량 저장 장치(170)는 고체 상태의 디스크 드라이브이다. 마우스(120), 키보드(130), RAM(160), 부트 장치(180) 및 비휘발성 대용량 기억 장치(170)는 통상적으로 버스(150)와 같은 하나 이상의 어드레스 및 데이터 버스를 통해 프로세서(110)에 상호 연결된다.
컴퓨터 시스템의 초기화는 그 컴퓨터 시스템의 파워-업, 또는 하드웨어 또는 소프트웨어 리셋 동작 후에 수행된다. 일실시예에서는, 프로세서가 리셋 또는 파워-업될 때 그 프로세서가 소정의 메모리 위치를 판독하도록 설계된다. 소정의 메모리 위치는 프로세서로 부트스트랩 루틴의 시작점의 메모리 어드레스를 지시하는 포인터 또는 어드레스를 저장한다. 이 포인터 또는 어드레스를 부트 벡터라 한다. 일실시예에서, 이 부트 벡터는 디폴트로 부트 장치(180)를 참조한다.
일실시예에서, 부트 장치(180)는 플래시 EPROM(또는 플래시 메모리)과 같은 비휘발성 메모리이다. 부트 코드 및 BIOS를 저장하기 위한 플래시 메모리의 사용은 시스템 수정 또는 BIOS 갱신을 조정하는데 보다 큰 유연성을 제공한다. 이 비휘발성 메모리는 프로그램을 실행함으로써 갱신될 수 있으므로 ROM을 교체할 필요가 없게 된다.
삭제 상태에서 어떠한 플래시 메모리 셀도 프로그램될 수 있다는 것을 제외하면, 플래시 메모리 셀은 먼저 데이터를 제거하지 않고는 새로운 데이터를 재기록할 수 없다. 일반적으로, 플래시 메모리 셀은 개별적으로 삭제할 수 없다. 통상적으로, 플래시 메모리는 하나 이상의 개별적으로 제거가능한 블록들로 나누어진다. 그 블록 안의 어떠한 셀을 삭제하기 위해서는 전체 블록이 삭제되어야 한다. 플래시 메모리 블록의 삭제는 그 블록 안의 모든 셀을 소정의 값으로 설정한다. 보통, 삭제된 플래시 셀은 "1"의 값을 저장하도록 한다. 플래시 EPROM 셀은 통상적으로 단일 트랜지스터 메모리 셀이고, 이에 따라 블록이 삭제가능한 2-트랜지스터 EPROM과 구별될 수 있다.
도2는 부트스트랩 루틴, 파라미터 데이터 및 BIOS를 저장하기 위한 단일 블록 아키덱처(210) 및 비대칭으로 블록된 아키텍처(220)를 도시하고 있다. 단일 또는 "벌크(bulk)" 블록 아키텍처(210)는 재프로그램되기 전에 완전히 삭제되어야 한다. 따라서, 부트스트랩 로더, BIOS 및 컴퓨터 시스템 특정 파라미터 정보는 BIOS 또는 파라미터 정보가 수정될 때마다 삭제된다.
부트스트랩 로더, BIOS 및 파라미터 데이터는 독립적인 수정을 허가하도록 하기 위해 개별적인 블록으로 교체될 수 있다. 부트스트랩 로더, BIOS 및 파라미터 데이터의 상대적인 사이즈에 따라 개별적인 블록 안에 부트스트랩 로더, BIOS 및 파라미터 데이터의 저장을 수용하도록 비대칭 블로킹 아키텍처가 설계된다.
비대칭으로 블록된 아키텍처(220)는 개별적인 블록에 부트스트랩 루틴, 파라미터 데이터 및 BIOS를 제공한다. 부트스트랩 루틴은 부트 블록(222)에 저장된다. 부트 블록(222)은 또한 시동(startup) 블록(22)으로 언급될 수 있다. 파라미터 데이터는 블록(224, 226)에 저장된다. BIOS는 블록(228, 229)에 저장된다. 이에 따라, 부트스트랩 루틴, 파라미터 데이터 및 BIOS는 물리적으로 구별된 블록에서 그들을 교체함으로써 독립적으로 수정될 수 있는 객체로 취급된다. 부트 블록은 수정을 방지하기 위해 하드웨어-로킹된 블록일 수 있다.
단일 및 비대칭적으로 블록된 아키텍처를 위한 갱신 프로세스는 통상적으로 신뢰할 수 있는 프로세스가 아니다. 삭제 절차의 개시와 블록이 완전히 재프로그램되기 전의 사이에 파워 실패가 발생하면, 그 블록의 내용을 잃어버리거나 무효가 될 수 있기 때문에 컴퓨터 시스템이 알맞게 재부팅될 수 없다.
단일 블록 아키텍처에 있어서, 파워 손실은 특히 큰 피해일 수 있다. 플래시 메모리는 재프로그램되기 전에 먼저 삭제되어야 하기 때문에, 부트스트랩 로더 및 다른 초기화 루틴은 파워-업 직후에는 이용할 수 없다.
비대칭으로 블록된 아키텍처는 BIOS, 파라미터 데이터 및 부트 코드를 개별적인 블록에 저장하도록 설계되기 때문에, 이 비대칭 블록 아키텍처는 시동 블록을 삭제하지 않고도 BIOS 또는 파라미터 데이터를 독립적으로 갱신할 수 있다. 이 장치는 부트스트랩 루틴, 파라미터 데이터 및 BIOS와 같은 객체들이 개별적으로 삭제가능한 블록에서 교체될 수 있도록 블록된다. 소정 사이즈의 비휘발성 메모리 안의 모든 객체를 교체하기 위해 부트 장치 안의 소비된 메모리를 제한할 필요가 있다. 이러한 제한의 결과로 상이한 사이즈의 블록을 갖는 비휘발성 메모리를 갖게된다. 컴퓨터 시스템이 점점 복잡해짐에 따라, 블록의 사이즈 및 수가 변화할 필요가 있다. 그러나, 비대칭으로 블록된 플래시의 블록 사이즈는 비휘발성 메모리가 제조될 때 결정된다. 따라서, 비대칭 블록 아키텍처는 시동 블록, 파라미터 정보 및 BIOS의 확장 또는 축소에 대해 유연하지 못한 경향이 있다.
예를 들어, 파라미터 블록의 사이즈가 고정되어, 파라미터 데이터가 제조할 때 결정된 블록 사이즈를 초과할 수 없다. 또한, 이 아키텍처는 각 블록 안에 특정형태의 정보를 저장하도록 설계되기 때문에, 블록 내에 초과된 메모리는 버려진다. BIOS 갱신 동안 손실될 곳에 데이터가 저장되기 때문에, BIOS 블록 안의 초과 공간은 사용될 수 없다. 이에 따라, 비대칭으로 블록된 플래시 아키텍처의 저장 "상태(granularity)"는 변화하고, 개별적인 블록의 사이즈에 대해 제한된다.
벌크 및 비대칭 블록 아키텍처에 대한 대안으로 대칭적으로 블록된 아키텍처(230)와 함께 플래시 메모리 매니저(FMM)를 사용하는 것이 있다. 이 FMM은 각 저장된 객체가 자신의 블록에 존재하는 것처럼 취급되도록 블록 범위를 "가정"한다. FMM 외부의 애플리케이션에 대하여, 이것은 내부 또는 근처에 존재하는 물리적인 블록을 고려하지 않고 저장된 객체를 조정할 수 있게 한다. 개별적인 블록 안의 기능적으로 구별된 루틴 및 데이터를 독립적으로 수정할 수 있도록 교체하는 대신에, FMM은 물리적 블록 범위의 객체를 독립적으로 관리하는 수단을 제공한다. 플래시 메모리 관리자의 일례는 Hasbun에 의해 1997년 4월 6일 출원된 미국 출원 번호 08/834,930, "Method of Performing Reliable Updates in a Symmetrically Blocked Nonvolatile Memory having a Bifurcated Storage Architecture"에 기술되어 있다.
도3은 블록 자체가 영구적으로 로킹되었지만 그 블록 안에 저장된 정보를 갱신하기 위한 회로를 도시하고 있다. 비휘발성 메모리(340)는 다수의 블록(342-350)을 구비한다. 로킹된 블록 자체는 수정될 수 없지만, 관련된 내용은 어드레스를 동일한 사이즈의 다른 언로킹된 블록으로 교환함으로써 갱신될 수 있다. 이것은 물리적으로 로킹된 블록에 저장된 부트 코드를 갱신하는데 특히 유용할 수 있다. 이 회로는 비휘발성 메모리의 블로킹 아키텍처(예로, 대칭적 또는 비대칭적인)를 고려하지 않고 적용할 수 있다. 일실시예에서, 비휘발성 메모리(340)는 대칭적으로 블록된다. 대안적 실시예에서, 비휘발성 메모리(340)는 비대칭적으로 블록된다.
프로세서(330)는 어드레스 디코더(320)로 어드레스를 제공함으로써 비휘발성 메모리(340)의 특정 어드레스에 저장된 정보를 요청한다. 그리고 나서, 어드레스 디코더(320)는 비휘발성 메모리로 그 어드레스를 매핑함에 따라 비휘발성 메모리에 액세스한다.
블록 선택기(310)는 어드레스 디코더(320)에 대한 제어 입력으로 이용된다. 일실시예에서, 블록 선택기(310)는 단일 비트의 레지스터이다. 블록 선택기(310)의 값에 따라, 어드레스 디코더(330)는 블록(342) 또는 블록(344)을 액티브 부트 블록으로 선택한다. 블록(342, 344)이 동일하게 어드레싱 가능한 저장 용량(예로, 동일한 사이즈 블록)을 갖는 한, 그 비휘발성 메모리(340)는 비대칭적으로 블록될 수 있다.
일실시예에서, 블록 선택기(310), 어드레스 디코더(320) 및 비휘발성 메모리(340)는 동일한 비휘발성 메모리 장치 안에 존재한다. 일실시예에서, 블록 선택기(310), 어드레스 디코더(320) 및 비휘발성 메모리는 동일한 집적 회로 다이 상에 존재한다.
블록 선택기의 하나의 값에 대하여, 어드레스 디코더는 어드레스의 제1 범위를 블록(342)에 연관시키고, 어드레스의 제2 범위를 블록(344)에 연관시킨다. 블록 선택기의 다른 값에 대하여, 어드레스 디코더는 어드레스의 제1 범위를 블록(344)에, 어드레스의 제2 범위를 블록(342)에 연관시킨다. 이에 따라, 어드레스 디코더는 블록 선택기의 값에 따라 블록(342) 및 블록(344)에 대한 참조를 상호 스와핑(swapping)한다. 일실시예에서, 다른 블록에 매핑되는 어드레스를 변경되지 않은 상태로 두기 위해, 스와핑(swapping) 또는 재매핑(remapping) 기술은 단지 비휘발성 메모리 안의 다수의 블록의 서브세트에만 영향을 준다. 따라서, 예를 들어, 블록 선택기 값은 블록(346-350)에 대한 어드레스의 매핑에 영향을 미치지 않는다.
도4는 어드레스(예로, 부트 벡터) 수신으로 시작되는 부트 시퀀스 동안의 어드레스 디코더의 동작을 도시하고 있다. 단계(420)는 어떤 블록이 블록 선택기의 값에 근거한 액티브 부트 블록인지를 판단한다.
만일, 블록 선택기 값이 블록1(342)을 액티브 부트 블록으로 선택되도록 지시하면, 이 과정은 단계(430)로 계속된다. 어드레스(부트 프로세스에 관련된)의 제1 범위에 대하여, 디코더는 블록(342)을 액세스하도록 어드레스의 제1 범위를 변환한다. 어드레스의 제2 범위는 블록(344)을 액세스하게 된다.
그러나, 만일, 블록 선택기 값이 블록2(344)를 액티브 부트 블록으로 선택하도록 지시하면, 이 과정은 단계(440)로 진행된다. 디코더는 블록(342) 대신에 블록(344)을 액세스하도록 어드레스의 제1 범위를 변환한다. 어드레스의 제2 범위 안의 모든 어드레스는 블록(342)을 액세스하도록 디코딩될 것이다. 이에 따라, 블록 선택기의 값의 토글링(toggling)은 블록(342) 및 블록(344)에 대한 어드레스를 상호 재매핑 또는 스와핑한다.
만일, 블록 자신이 물리적으로 로킹되지 않으면, 블록 선택기는 제1 또는제2 블록 중 하나로부터 갱신 및 다음의 부팅을 허가하도록 토글링될 수 있다. 일실시예에서, 블록 선택기는 알맞은 부트 블록 선택이 다음의 부트 시퀀스를 위해 유지되도록 비휘발성 메모리 안에 구현된다. 일실시예에서, 블록 선택기(310) 자체가 부트 블록으로 다른 블록을 다음에 선택하는 것을 방지하도록 로킹될 수 있다.
도5는 블록 선택기를 이용하여 부트 코드를 갱신하는 방법을 도시하고 있다. 단계(510)에서, 프로세서는 비휘발성 메모리의 제1 부분(블록)에 저장된 부트 코드로 부팅된다. 단계(520)에서, 신규 부트 코드는 비휘발성 메모리의 제2 부분(블록)에 기록될 수 있다. 단계(530)에서, 블록 선택기는 비휘발성 메모리의 제1 부분과 제2 부분(블록) 사이의 물리적인 어드레스 참조를 스와핑하도록 토글링된다. 단계(540)에서, 블록 선택기는 원치않는 토글링을 방지하도록 로킹될 수 있다. 또한, 로킹은 현재 선택된 부트 블록이 부주의로 갱신되는 것을 방지한다. 그리고 나서, 단계(550)에서, 프로세서는 블록 선택기에 의해 지시된 비휘발성 메모리의 제2 부분(블록)에 저장된 부트 코드를 이용하여 재부팅될 수 있다.
컴퓨터 시스템에 대한 파워의 재인가 후에 적절한 부트 블록이 선택되도록 하기 위해, 블록 선택기는 비휘발성 메모리 안에 구현될 수 있다. 일실시예에서, 유저는 원하는대로 자유롭게 블록 선택기를 토글링한다. 이에 따라, 블록 선택기는 다음의 부트 시퀀스에 대해 상이한 블록을 선택하도록 토글링될 수 있다.
일실시예에서, 로킹 특성은 블록 선택기의 원치 않는 토글링이 발생하지 않도록 하기 위해 블록 선택기에 제공된다. 로킹 특성은 또한 파워 손실 복구를 위한 검증 수단으로 동작한다. 블록 선택기가 실제적으로 2비트 값이 되도록 하기 위해,이 로킹 구조는 비휘발성 메모리 안에 단일 비트로 구현될 수 있다. 대안적으로, 블록 선택기 자체는 로크 지시자로 제공될 수 있다. 이 실시예에서, 블록 선택기는 선택된 부트 블록이 그 블록 선택기의 값에 따라 갱신되지 않도록 로킹되었음을 나타낸다.
현재 세션에서 컴퓨터를 부팅하는데 사용된 블록 이외의 다른 블록은 유저가 다음의 세션에서 적절히 부팅할 수 있도록 갱신하기 위해 선택되는 것이 바람직하다. 따라서, 예를 들어, 현재의 세션에서 제1 블록에서 부팅되었다면, 유저는 제2 블록에서 부트 코드를 갱신해야 한다. 이에 따라, 만일, 제2 블록에서 부트 코드에 대한 갱신 중에 파워 손실이 발생하면, 프로세서는 제1 블록 안의 코드를 부팅하는데 사용할 수 있다. 로킹 특성은 단지 부팅하려고 선택된 블록의 갱신을 방지한다.
도6은 프로세서가 부팅하는 중이거나 또는 갱신의 수행에 따른 블록 선택기 값의 테이블(610) 및 동작을 도시하고 있다.
만일, 블록 선택기가 "1"의 값을 가지면, 그 비휘발성 메모리의 제1 블록은 그 부트 시퀀스 동안에 부트 코드를 검색하는데 사용될 것이다. 제2 블록은 갱신이 가능하지만, 제1 블록은 갱신을 방지하도록 로킹된다. 만일, 블록 선택기가 "0"의 값을 가지면, 제2 블록은 부트 시퀀스 동안에 부트 코드를 검색하는데 사용될 것이다. 제2 블록은 갱신을 방지하도록 로킹되지만, 제1 블록은 갱신이 가능하도록 언로킹된다.
기술된 방법 및 장치는, Christeson의 미국 특허 번호 5,579,522, "Dynamic Non-Volatile Memory Update in a Computer System."에 기술된 바와 같이, 유저가강제적 갱신 모드를 하도록 하는 종래 기술과 결합될 수 있다.
예를 들어, 부트 프로세스 동안 저장된 코드를 실행하기 전에 부팅을 위해 선택된 블록에서 검증 단계가 수행될 수 있다. 만일, 이 선택된 블록의 부트 코드가 유효한 것으로 판단되면, 부트 시퀀스는 그 선택된 블록 내의 코드를 이용하여 계속될 수 있다. 만일, 부트 코드가 유효하지 않다면, 유저가 제1 블록 안의 부트 코드를 갱신하도록 하기 위해, 특별히 제한된 부트 시퀀스가 수행될 수 있다. 대안적으로, 만일, 선택된 블록의 부트 코드가 유효하지 않거나 또는 손상되었다면, 프로세서는 검증 후 선택되지 않은 블록(즉, 블록 선택기가 토글링되었다면 선택되었을 블록) 안에 존재하는 부트 코드의 이전 버전으로 부팅될 수 있다.
위에 나타난 예들은 2개의 부트 블록 중 하나의 선택에 대해 특별히 나타내었다. 블록 스와핑의 애플리케이션은 부트 블록 또는 단일 블록에 대해 제한되지 않는다. 단지 하나의 블록 보다는 하나 이상의 블록의 그룹을 스와핑하기 위해 블록 선택기와 유사한 그룹 선택기가 사용될 수 있다.
도8은 그룹 선택기의 값에 따라 블록의 그룹에 대한 어드레스 참조의 스와핑을 도시하고 있다. 그룹은 하나 이상의 블록으로 구성될 수 있다. 단일 블록의 경우와 같이, 하나의 그룹을 다른 그룹과 스와핑하는 것은 부트 블록을 포함한 그룹 이외의 다른 그룹에 적용될 수 있다. 따라서, 예를 들어, 그룹 A(830) 및 B(840)는 각각 하나 이상의 블록을 포함한다. 그룹 선택기에 따른 디코더의 동작은 도3 및 도4에 도시된 블록 선택기에 따른 디코더의 동작과 유사하다.
따라서, 그룹 선택기가 제1 값을 가질 때에는, 비휘발성 메모리(810)의 매핑으로 도시된 바와 같이, 어드레스의 제1 범위는 그룹 A를 참조하도록 디코딩될 것이고, 어드레스의 제2 범위는 그룹 B를 참조하도록 디코딩될 것이다. 그러나, 그룹 선택기가 제2 값을 가질 때에는, 비휘발성 메모리(820)의 매핑으로 도시된 바와 같이, 어드레스의 제1 범위는 그룹 B를 참조하도록 디코딩될 것이고, 어드레스의 제2 범위는 그룹 A를 참조하도록 디코딩될 것이다.
하나의 그룹을 다른 그룹과 스와핑하는 것은 인접한 블록의 그룹을 스와핑하는 것으로 한정될 필요는 없다. 그룹 내에서, 블록들은 그룹 A 및 B로 도시된 바와 같이 인접하게 어드레싱된다. 그러나, 스와핑된 그룹은 서로 인접할 필요는 없다. 따라서, 그룹 A는 도8에 도시된 것과 같이 그룹 B에 인접할 필요는 없다. 예를 들어, 인접한 그룹 A 및 B보다는 그룹 A(830) 및 그룹 C(850)를 스와핑하기 위해, 디코더가 구성될 수 있다. 그러나, 스와핑된 그룹들은 동일한 대응 수 및 크기의 블록을 가지도록 구성되어야 한다.
앞의 상세한 설명에서, 본 발명은 특정한 예시적인 실시예를 참조하여 설명되었다. 그러나, 첨부된 청구항에서 기술되는 바와 같이, 본 발명의 보다 넓은 사상 및 범위에서 벗어나지 않는 한, 다양한 수정 및 변경이 가능하다는 것은 명백한 사실이다. 따라서, 본 명세서 및 도면은 제한적 관점이라기 보다는 하나의 예시로서 간주되어야 한다. 이에 따라, 본 발명의 범위는 첨부한 청구항에 의해서만 제한되어야 한다.

Claims (23)

  1. a) 어드레스의 제1 범위에 연관된 제1 부분 및 어드레스의 제2 범위에 연관된 제2 부분을 구비한 비휘발성 메모리의 선택된 부분에 코드를 기록하는 단계 - 여기서, 상기 선택된 부분은 상기 제2 부분임 -; 및
    b) 상기 제1 및 제2 부분의 어드레스를 스와핑(swapping)하기 위해 블록 선택기를 토글링(toggling)하는 단계 - 여기서, 상기 어드레스의 제1 범위는 상기 비휘발성 메모리의 제2 부분을 참조하고, 상기 어드레스의 제2 범위는 상기 비휘발성 메모리의 제1 부분을 참조함 -
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 a)단계 전에 상기 비휘발성 메모리 내의 소정의 위치에 저장된 부트 코드를 이용하여 프로세서를 부팅하는 단계 - 여기서, 상기 소정의 위치는 상기 블록 선택기에 따라 상기 제1 부분을 참조함 -
    를 더 포함하는 방법.
  3. 제2항에 있어서,
    C) 상기 b)단계 후에 상기 프로세서를 재부팅하는 단계 - 여기서, 상기 소정의 위치는 상기 블록 선택기에 따라 상기 제2 부분을 참조함 -
    를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 비휘발성 메모리는 플래시 EEPROM(electrically erasable programmable read only memory)인
    방법.
  5. 제1항에 있어서,
    상기 제1 및 제2 부분은 각각 상기 비휘발성 메모리의 블록을 포함하는
    방법.
  6. 제1항에 있어서,
    상기 블록 선택기를 로킹(locking)하는 단계
    를 더 포함하는 방법.
  7. 소정의 어드레스에서 부트 시퀀스를 개시하는 프로세서;
    블록 선택기;
    제1 및 제2 블록을 구비한 비휘발성 메모리; 및
    상기 블록 선택기가 제1 값을 가질 경우에는 상기 소정의 어드레스에 응답하여 상기 제1 블록에 액세스하고, 상기 블록 선택기가 제2 값을 가질 경우에는 상기 소정의 어드레스에 응답하여 상기 제2 블록에 액세스하는 어드레스 디코더
    를 포함하는 장치.
  8. 제7항에 있어서,
    상기 제1 및 제2 블록 중 적어도 하나는 부트 코드를 저장하는
    장치.
  9. 제7항에 있어서,
    상기 제1 및 제2 블록 중 적어도 하나는 수정을 방지하도록 로킹되는
    장치.
  10. 제7항에 있어서,
    상기 블록 선택기는 블록 선택기 값의 다음의 수정을 방지하도록 로킹될 수 있는
    장치.
  11. a) 프로세서로부터 어드레스를 수신하는 단계;
    b) 어드레스의 제1 범위에 연관된 비휘발성 메모리의 적어도 하나의 블록의 제1 그룹을 액세스하도록 그룹 선택기의 제1 값에 따라 상기 어드레스를 디코딩하는 단계 - 여기서, 상기 비휘발성 메모리의 적어도 하나의 블록의 제2 그룹은 어드레스의 제2 범위에 연관됨 - 및
    c) 상기 그룹 선택기를 제2 값으로 토글링하는 단계 - 여기서, 상기 제1 범위는 상기 제2 그룹에 연관되고, 상기 제2 범위는 상기 제1 그룹에 연관됨 -
    를 포함하는 방법.
  12. 제11항에 있어서,
    상기 제1 및 제2 그룹 중 하나는 부트 코드를 저장한 블록을 포함하는
    방법.
  13. 제11항에 있어서,
    상기 제1 및 제2 그룹은 각각 단일 블록을 포함하는
    방법.
  14. 제11항에 있어서,
    상기 제1 및 제2 그룹은 각각 다수의 블록을 포함하는
    방법.
  15. 제11항에 있어서,
    상기 제1 및 제2 그룹은 비휘발성 메모리의 인접한 그룹인
    방법.
  16. 제11항에 있어서,
    상기 제1 및 제2 그룹은 비휘발성 메모리의 인접하지 않은 그룹인
    방법.
  17. 다수의 블록을 구비한 비휘발성 메모리;
    그룹 선택기; 및
    상기 그룹 선택기 및 상기 비휘발성 메모리에 연결된 어드레스 디코더 - 여기서, 상기 그룹 선택기가 제1 값을 갖는 경우 상기 어드레스 디코더는 어드레스의 제1 범위를 비휘발성 메모리의 적어도 하나의 블록의 제1 그룹에 연관시키고 어드레스의 제2 범위를 비휘발성 메모리의 적어도 하나의 블록의 제2 그룹에 연관시키고, 상기 그룹 선택기가 제2 값을 갖는 경우 상기 어드레스 디코더는 상기 제1 범위를 상기 제2 그룹에 연관시키고 상기 제2 범위를 상기 제1 그룹에 연관시킴 -
    를 포함하는 장치.
  18. 제17항에 있어서,
    상기 제1 및 제2 그룹 중 적어도 하나는 부트 코드를 저장한 블록을 포함하는
    장치.
  19. 제17항에 있어서,
    상기 제1 및 제2 그룹은 각각 단일 블록을 포함하는
    장치.
  20. 제17항에 있어서,
    상기 제1 및 제2 그룹은 각각 다수의 블록을 포함하는
    장치.
  21. 제17항에 있어서,
    상기 제1 및 제2 그룹은 비휘발성 메모리의 인접한 그룹인
    장치.
  22. 제17항에 있어서,
    상기 제1 및 제2 그룹은 비휘발성 메모리의 인접하지 않은 그룹인
    장치.
  23. 제17항에 있어서,
    상기 비휘발성 메모리의 제1 및 제2 그룹 중 적어도 하나는 수정을 방지하도록 로킹될 수 있는
    장치.
KR10-2001-7001307A 1998-07-31 1999-07-09 비휘발성 메모리를 갱신하기 위한 방법 및 장치 KR100437230B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/127,426 1998-07-31
US09/127,426 US6205548B1 (en) 1998-07-31 1998-07-31 Methods and apparatus for updating a nonvolatile memory

Publications (2)

Publication Number Publication Date
KR20010072128A true KR20010072128A (ko) 2001-07-31
KR100437230B1 KR100437230B1 (ko) 2004-06-23

Family

ID=22430049

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-7001307A KR100437230B1 (ko) 1998-07-31 1999-07-09 비휘발성 메모리를 갱신하기 위한 방법 및 장치

Country Status (8)

Country Link
US (1) US6205548B1 (ko)
KR (1) KR100437230B1 (ko)
AU (1) AU4868399A (ko)
DE (1) DE19983420T1 (ko)
GB (1) GB2354863B (ko)
HK (1) HK1032460A1 (ko)
MY (1) MY117508A (ko)
WO (1) WO2000007106A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100811559B1 (ko) * 2006-08-08 2008-03-10 경북대학교 산학협력단 비휘발성 메모리의 데이터 저장영역 관리 방법 및 장치
KR100974401B1 (ko) * 2002-05-01 2010-08-05 아나로그 디바이시즈 인코포레이티드 주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치
US9858086B2 (en) 2011-10-26 2018-01-02 Hewlett-Packard Development Company, L.P. Load boot data

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282675B1 (en) 1997-08-06 2001-08-28 Macronix International Co., Ltd. Fault-tolerant architecture for in-circuit programming
US6182188B1 (en) * 1997-04-06 2001-01-30 Intel Corporation Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
JP2914360B2 (ja) * 1997-09-30 1999-06-28 ソニー株式会社 外部記憶装置及びデータ処理方法
US6385689B1 (en) * 1998-02-06 2002-05-07 Analog Devices, Inc. Memory and a data processor including a memory
US6754848B1 (en) * 1999-09-30 2004-06-22 International Business Machines Corporation Method, system and program products for operationally migrating a cluster through emulation
US6536038B1 (en) * 1999-11-29 2003-03-18 Intel Corporation Dynamic update of non-upgradeable memory
US6407949B1 (en) * 1999-12-17 2002-06-18 Qualcomm, Incorporated Mobile communication device having integrated embedded flash and SRAM memory
JP3838840B2 (ja) * 2000-01-06 2006-10-25 Necエレクトロニクス株式会社 コンピュータ
JP2001209543A (ja) * 2000-01-28 2001-08-03 Nec Ic Microcomput Syst Ltd フラッシュ・マイコンにおけるプログラム書き換え方法
US6654847B1 (en) * 2000-06-30 2003-11-25 Micron Technology, Inc. Top/bottom symmetrical protection scheme for flash
US7073064B1 (en) * 2000-03-31 2006-07-04 Hewlett-Packard Development Company, L.P. Method and apparatus to provide enhanced computer protection
US6859862B1 (en) * 2000-04-07 2005-02-22 Nintendo Co., Ltd. Method and apparatus for software management of on-chip cache
US6804763B1 (en) * 2000-10-17 2004-10-12 Igt High performance battery backed ram interface
US7111141B2 (en) * 2000-10-17 2006-09-19 Igt Dynamic NV-RAM
US6834331B1 (en) 2000-10-24 2004-12-21 Starfish Software, Inc. System and method for improving flash memory data integrity
US8550922B2 (en) * 2006-03-03 2013-10-08 Igt Game removal with game history
US6370055B1 (en) * 2001-02-28 2002-04-09 Infineon Technologies Ag Semiconductor memory having asymmetric column addressing and twisted read write drive (RWD) line architecture
US6633964B2 (en) * 2001-03-30 2003-10-14 Intel Corporation Method and system using a virtual lock for boot block flash
US20020178352A1 (en) * 2001-05-22 2002-11-28 Lambino John P. Firmware upgrade using address conversion
US6772307B1 (en) 2001-06-11 2004-08-03 Intel Corporation Firmware memory having multiple protected blocks
JP4840553B2 (ja) * 2001-07-31 2011-12-21 日本電気株式会社 無線通信機と、そのブートプログラム書き換え方法及びプログラム
US6990577B2 (en) * 2001-08-10 2006-01-24 Intel Corporation Updating a BIOS image by replacing a portion of the BIOS image with a portion of another BIOS image
US6993647B2 (en) * 2001-08-10 2006-01-31 Hewlett-Packard Development Company, L.P. Method and apparatus for booting an electronic device using a plurality of agent records and agent codes
US7299463B2 (en) 2001-09-28 2007-11-20 Intel Corporation Method for atomically updating a plurality of files
TWI237759B (en) * 2001-10-04 2005-08-11 Via Tech Inc Method for data accessing in a computer and the computer thereof
US20030097552A1 (en) * 2001-11-19 2003-05-22 Lewis Robert E. Resilient boot prom loader
KR100724438B1 (ko) * 2001-12-26 2007-06-04 엘지전자 주식회사 기지국 모뎀의 메모리 제어장치
US7304956B2 (en) * 2002-04-08 2007-12-04 International Business Machines Corporation Extended wrap mode with source/destination wrap
EP1372068A3 (en) * 2002-06-11 2006-02-08 Seiko Epson Corporation System, method and program for rewriting a flash memory
JP2005531846A (ja) * 2002-06-28 2005-10-20 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 受信器へのソフトウェアダウンロード
CN1260642C (zh) * 2002-11-18 2006-06-21 深圳市朗科科技有限公司 一种向移动存储装置发送命令和数据的方法
US7089414B2 (en) * 2003-04-10 2006-08-08 International Business Machines Corporation Method and apparatus for updating a microcode image in a memory
US7174446B2 (en) 2003-04-25 2007-02-06 Dell Products L.P. System and method for managing the boot sequence of an information handling system
US20040225874A1 (en) * 2003-05-09 2004-11-11 Jeremy Burr Method for reduced BIOS boot time
US7188238B2 (en) * 2003-05-21 2007-03-06 Intel Corporation Methods and apparatus to update a basic input/output system (BIOS)
TW200428284A (en) * 2003-06-03 2004-12-16 Hon Hai Prec Ind Co Ltd System and method for bootstrap with backup boot-code in single flash ROM
US7533374B2 (en) * 2003-06-12 2009-05-12 Intel Corporation Adaptively storing system code in non-volatile storage
US20050010811A1 (en) * 2003-06-16 2005-01-13 Zimmer Vincent J. Method and system to support network port authentication from out-of-band firmware
TWI243994B (en) * 2003-09-08 2005-11-21 Mediatek Inc Method and apparatus for protecting a specific memory section
KR100876748B1 (ko) 2004-07-23 2009-01-07 삼성전자주식회사 부트코드 업데이트 방법
US7730326B2 (en) * 2004-11-12 2010-06-01 Apple Inc. Method and system for updating firmware stored in non-volatile memory
US7305544B2 (en) * 2004-12-10 2007-12-04 Intel Corporation Interleaved boot block to support multiple processor architectures and method of use
US7398381B2 (en) * 2004-12-10 2008-07-08 Intel Corporation Utilizing paging to support dynamic code updates
US7340595B2 (en) * 2005-01-07 2008-03-04 International Business Machines Corporation Multiplex execution-path system
JP2007047993A (ja) * 2005-08-09 2007-02-22 Rohm Co Ltd 制御回路、それを用いた電子機器およびファームウェアの更新方法
WO2007095368A2 (en) * 2006-02-14 2007-08-23 Wms Gaming Inc. Reorganizing a wagering game machine's nvram
US7823007B2 (en) 2006-02-17 2010-10-26 International Business Machines Corporation Apparatus, system, and method for switching a volume address association in a point-in-time copy relationship
US7951008B2 (en) * 2006-03-03 2011-05-31 Igt Non-volatile memory management technique implemented in a gaming machine
JP4908026B2 (ja) * 2006-03-22 2012-04-04 株式会社東芝 情報処理装置
US20080046710A1 (en) * 2006-08-17 2008-02-21 Steven Maddocks Switching firmware images in storage systems
US7681009B2 (en) * 2006-12-28 2010-03-16 Motorola, Inc. Dynamically updateable and moveable memory zones
WO2009061488A1 (en) * 2007-11-09 2009-05-14 Wms Gaming Inc. Nvram management in a wagering game machine
DE102008010556A1 (de) * 2008-02-22 2009-09-03 Robert Bosch Gmbh Verfahren und Vorrichtung zum Speichern von Informationsdaten
WO2009156615A1 (fr) * 2008-06-02 2009-12-30 Awox Procede et dispositif de mise a jour d'application informatique
EP2352094B1 (en) * 2008-11-26 2014-06-18 Panasonic Corporation Information updating device and integrated circuit thereof, information updating method, and recording device and integrated circuit thereof
JPWO2010073444A1 (ja) * 2008-12-24 2012-05-31 パナソニック株式会社 バスコントローラ及び初期ブートプログラムのパッチ方法
JP5300496B2 (ja) * 2009-01-07 2013-09-25 パナソニック株式会社 半導体記憶装置、ホスト機器及び半導体記憶システム
TW201030518A (en) * 2009-02-11 2010-08-16 Inventec Corp BIOS, computer device and BIOS recovery
CN102270144B (zh) * 2010-06-04 2014-12-10 鸿富锦精密工业(深圳)有限公司 嵌入式网络设备及其更新固件的方法
KR20140007990A (ko) * 2012-07-09 2014-01-21 삼성전자주식회사 불휘발성 램을 포함하는 사용자 장치 및 그것의 데이터 관리 방법
US10491667B1 (en) * 2015-03-16 2019-11-26 Amazon Technologies, Inc. Customized memory modules in multi-tenant service provider systems
US10191811B2 (en) * 2015-08-13 2019-01-29 Quanta Computer Inc. Dual boot computer system
CN110312991A (zh) * 2017-02-17 2019-10-08 日立汽车系统株式会社 信息处理装置
US10620879B2 (en) 2017-05-17 2020-04-14 Macronix International Co., Ltd. Write-while-read access method for a memory device
US10445088B2 (en) * 2018-01-11 2019-10-15 Macronix International Co., Ltd. System boot code clone
US11099831B2 (en) * 2018-02-08 2021-08-24 Micron Technology, Inc. Firmware update in a storage backed memory system
CN108763099B (zh) * 2018-04-18 2020-05-08 华为技术有限公司 系统的启动方法、装置、电子设备和存储介质
US10572185B2 (en) * 2018-06-01 2020-02-25 Western Digital Technologies, Inc. Non-volatile storage system with command replay
US11243757B2 (en) * 2018-12-03 2022-02-08 Dell Products L.P. Systems and methods for efficient firmware update of memory devices in BIOS/UEFI environment
KR102567097B1 (ko) 2018-12-05 2023-08-14 삼성전자주식회사 임베디드 시스템의 부트 롬 업데이트 방법 및 부팅 방법

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4817004A (en) * 1985-10-16 1989-03-28 Pitney Bowes Inc. Electronic postage meter operating system
US4845632A (en) * 1985-10-16 1989-07-04 Pitney Bowes Inc. Electonic postage meter system having arrangement for rapid storage of critical postage accounting data in plural nonvolatile memories
US4805109A (en) * 1985-10-16 1989-02-14 Pitney Bowes Inc. Nonvolatile memory protection arrangement for electronic postage meter system having plural nonvolatile memories
US5187798A (en) * 1989-03-06 1993-02-16 Pitney Bowes Inc. Electronic postage meter having separate funds charge registers and recredits funds register in predetermined amount when funds fall to predetermined level
JP3098584B2 (ja) * 1990-09-28 2000-10-16 ゼロックス コーポレイション 電子複写システムにおける障害除去及び回復方法及び装置
IT1254937B (it) * 1991-05-06 1995-10-11 Aggiornamento dinamico di memoria non volatile in un sistema informatico
DE4215063C2 (de) * 1991-05-10 1999-11-25 Intel Corp Einrichtung und Verfahren zum Seitenwechsel bei einem nicht-flüchtigen Speicher
US5878256A (en) * 1991-10-16 1999-03-02 International Business Machine Corp. Method and apparatus for providing updated firmware in a data processing system
US5925140A (en) * 1993-04-30 1999-07-20 Intel Corporation Apparatus and method for error free loading of a programmable non-volatile memory over a datalink
US5758056A (en) * 1996-02-08 1998-05-26 Barr; Robert C. Memory system having defective address identification and replacement
US5930504A (en) * 1996-07-22 1999-07-27 Intel Corporation Dynamic nonvolatile memory update in a computer system
US5889987A (en) * 1996-09-30 1999-03-30 Intel Corporation Flexible non-volatile memory controller with boot block emulation
US5860142A (en) * 1996-12-27 1999-01-12 Compaq Computer Corporation Method and apparatus for mapping the memory system of a computer for maximizing memory usage
US5974312A (en) * 1997-07-10 1999-10-26 Ericsson Inc. System and method for updating a memory in an electronic device via wireless data transfer

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100974401B1 (ko) * 2002-05-01 2010-08-05 아나로그 디바이시즈 인코포레이티드 주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치
KR100811559B1 (ko) * 2006-08-08 2008-03-10 경북대학교 산학협력단 비휘발성 메모리의 데이터 저장영역 관리 방법 및 장치
US9858086B2 (en) 2011-10-26 2018-01-02 Hewlett-Packard Development Company, L.P. Load boot data

Also Published As

Publication number Publication date
WO2000007106A1 (en) 2000-02-10
AU4868399A (en) 2000-02-21
HK1032460A1 (en) 2001-07-20
MY117508A (en) 2004-07-31
US6205548B1 (en) 2001-03-20
GB2354863A (en) 2001-04-04
KR100437230B1 (ko) 2004-06-23
GB2354863B (en) 2002-12-11
GB0101452D0 (en) 2001-03-07
DE19983420T1 (de) 2001-06-21

Similar Documents

Publication Publication Date Title
KR100437230B1 (ko) 비휘발성 메모리를 갱신하기 위한 방법 및 장치
JP4668416B2 (ja) ブート・ブロックへの書き込みアクセスを可能にする時のブート・ブロック・コードの保護
US5822581A (en) Method for CMOS configuration information storage and retrieval in flash
CN110032520B (zh) 系统开机代码存储器管理方法、存储器装置及其制造方法
US6412040B2 (en) Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
US7313683B2 (en) Computer system and method which boots from a bootup-memory-image stored in nonvolatile memory and copies data within an address range of predetermined width to main memory so that the system boots quickly after initialization
US5568641A (en) Powerfail durable flash EEPROM upgrade
US6182188B1 (en) Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
US6804772B2 (en) Dynamic field patchable microarchitecture
US5937434A (en) Method of managing a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
US5210854A (en) System for updating program stored in eeprom by storing new version into new location and updating second transfer vector to contain starting address of new version
US6311290B1 (en) Methods of reliably allocating, de-allocating, re-allocating, and reclaiming objects in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
US7222214B2 (en) Device-level address translation within a programmable non-volatile memory device
US20030037282A1 (en) Method and system for version control in a fault tolerant system
US6629192B1 (en) Method and apparatus for use of a non-volatile storage management system for PC/AT compatible system firmware
US20080141016A1 (en) Computer System and Related Method for Preventing Failure of Updating BIOS Programs
US9471483B2 (en) Electronic apparatus having non-volatile memory and method for controlling the same
US8775758B2 (en) Memory device and method for performing a write-abort-safe firmware update
JP6013626B2 (ja) 不揮発性メモリ書込み機構
KR101102155B1 (ko) 메모리 시스템
US6687815B1 (en) Method and apparatus for storing non-volatile configuration information
US6510083B1 (en) Electrically erasable and programmable memory that allows data update without prior erasure of the memory
US20020144103A1 (en) Non-volatile alterable default flash memory configuration registers
US7428635B2 (en) Method of writing non-volatile memory that avoids corrupting the vital initialization code
US7234039B1 (en) Method, system, and apparatus for determining the physical memory address of an allocated and locked memory buffer

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: 20130603

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20140603

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20150529

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20160527

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20170601

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20180529

Year of fee payment: 15