KR101467302B1 - 에러 검출 테이블을 이용한 패스트 부팅 방법 및 이를 적용한 시스템 - Google Patents

에러 검출 테이블을 이용한 패스트 부팅 방법 및 이를 적용한 시스템 Download PDF

Info

Publication number
KR101467302B1
KR101467302B1 KR1020130025719A KR20130025719A KR101467302B1 KR 101467302 B1 KR101467302 B1 KR 101467302B1 KR 1020130025719 A KR1020130025719 A KR 1020130025719A KR 20130025719 A KR20130025719 A KR 20130025719A KR 101467302 B1 KR101467302 B1 KR 101467302B1
Authority
KR
South Korea
Prior art keywords
error
page
error detection
image
detection table
Prior art date
Application number
KR1020130025719A
Other languages
English (en)
Other versions
KR20140112606A (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 KR1020130025719A priority Critical patent/KR101467302B1/ko
Publication of KR20140112606A publication Critical patent/KR20140112606A/ko
Application granted granted Critical
Publication of KR101467302B1 publication Critical patent/KR101467302B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Stored Programmes (AREA)

Abstract

에러 검출 테이블을 이용한 패스트 부팅 방법 및 이를 적용한 시스템이 제공된다. 본 발명의 실시예에 따른 패스트 부팅 방법은, 스토리지의 블럭을 구성하는 페이지들의 에러 여부가 수록된 에러 검출 테이블을 참조하여 에러 페이지들을 판단하고, 에러 페이지가 아닌 페이지들에서 이미지를 읽어들인다. 이에 의해, 에러 검출 테이블을 이용하여 스토리지 디바이스에서 발생하는 원천적인 오버헤드를 제거할 수 있어, 부팅 속도를 현저히 증가시킬 수 있게 된다.

Description

에러 검출 테이블을 이용한 패스트 부팅 방법 및 이를 적용한 시스템{Method for Fast Booting with Error Detection Table and System using the same}
본 발명은 부팅 방법에 관한 것으로, 더욱 상세하게는 부팅 속도를 향상시킨 패스트 부팅 방법 및 이를 적용한 시스템에 관한 것이다.
스마트 디바이스의 보급은 사람의 일상 생활을 변화시키고 있으며, Arm 아키텍쳐를 이용한 시스템은 전체 시스템에서 많은 양을 차지하고 있다.
ARM Cortex는 고성능 저전력을 요구하는 시스템에서 사용되고 있으며, 현재 스마트 디바이스의 대표적인 제품이라고 할 수 있는 Apple사의 iPad, iPhone, 삼성전자의 Galaxy 시리즈의 제품에도 사용되고 있다. 또한, Arm 아키텍쳐의 성능 향상으로 사용이 제한적이던 오토모티브 시스템에서 블랙박스, 이미지 처리, 네비게이션 시스템 등과 같이 제품이 많아지고 있으며 사용 영역이 증가하고 있다.
기존 Arm 아키텍쳐 기반에서 Fast booting(패스트 부팅)과 관련된 연구는 ARMv6 이전의 Arm 아키텍쳐 기반에서 이뤄져 왔으며, Real Time Operating System 보다는 범용적으로 사용되고 있는 리눅스 시스템에서 많은 연구가 진행되어 왔다.
리눅스 시스템의 Fast booting과 관련된 연구는 주로 부트로더, 루트 파일 시스템의 최적화와 관련된 연구로 진행되어 왔다. 기존의 연구들은 낸드 플래시 메모리를 스토리지 디바이스로 사용하는 리눅스 환경에서 연구가 진행되었으나, 이는 오버헤드 발생의 근원적인 해결책이 되기 어려우며, 구체적으로 아래와 같다.
기존에 빠른 부팅을 위한 연구는 다음의 조건들을 만족시키는 방향으로 연구가 진행되어 왔다.
첫 번째, Fast Boot를 위해 제품에 필요하지 않은 하드웨어 초기화를 생략하도록 부트로더와 커널 부팅 순서 등을 최적화하였다. 이러한 최적화를 통해 길게는 200msec 이상에서 짧게는 10usec까지 소요되는 각각의 디바이스 초기화 시간을 제거할 수 있다. CPU의 개발 과정 또는 개발용 보드의 테스트 과정에서 다양한 디바이스의 테스트가 이뤄지는데, 상용 제품에서 사용하지 않는 디바이스 초기화를 진행한다면 이는 오버헤드로 작용한다.
두 번째, 사용자 지연시간 제거이다. 각각의 제품은 개발 또는 제품의 A/S를 위해 디버깅을 위한 지연시간 시간을 추가하고 있는데, 이러한 디버깅을 위한 지연시간을 제거할 경우, 많게는 3sec에서 100 msec을 제거할 수 있다.
세 번째, 스토리지 디바이스 내 커널 이미지의 저장 방법이다. gzip으로 압축된 커널 이미지를 사용할 경우, 커널 이미지의 크기가 제품의 용도에 따라 커질 수가 있는데 이는 스토리지 디바이스로부터 읽어오는 시간이 점차 증가하는 영향을 미친다. 또한, 압축된 커널 이미지는 스토리지 디바이스로부터 읽어오는 시간을 줄일 수 있으나, 커널 부팅을 위해 메모리 영역에 압축해제를 해야 하는 과정을 필요로 한다. 따라서, 압축되지 않은 커널 이미지 또는 압축된 커널 이미지 사용과 관련된 결정은 수많은 실험을 필요로 한다.
마지막으로 마운트 시간이 빠른 루트 파일 시스템의 사용이다. 현재 제품에 사용되는 대다수의 파일 시스템은 Fast Boot를 위하여 압축된 Read-only 파일 시스템인 Cramfs, SquashFS 등이 사용하고 있으며, 사용자를 위한 여분의 파일 시스템 영역을 제공하여 사용자 데이터 저장을 가능하게 한다.
기존의 연구 결과를 살펴보면 Fast boot에 가장 큰 영향을 주는 요소는 CPU의 성능과 스토리지 디바이스의 읽기 성능이다. CPU의 성능은 고정적인 요소로 CPU의 클럭 스피드가 2배로 향상되면 RAM에서 처리되는 모든 일련의 작업 시간과 관련된 부팅 성능 향상은 약 2배의 향상을 보이는 것으로 나타났다.
하지만, 스토리지 디바이스와 연관된 부트로더 리드, 커널 리드 오퍼레이션 오버헤드는 어떠한 스토리지 디바이스를 쓰는가에 따라 큰 성능 차이를 나타내고 있다. 또한 같은 스토리지 디바이스라도 어떠한 방법으로 스토리지 디바이스 내에 이미지를 RAM으로 읽어들이고 실행하였는지에 따라 큰 성능 차이를 나타내고 있다.
본 발명은 상기와 같은 문제점을 해결하기 위하여 안출된 것으로서, 본 발명의 목적은, 스토리지에서 발생할 수 있는 에러 정정과 관련된 오버헤드를 최소화하기 위한 패스트 부팅 방법 및 이를 적용한 시스템을 제공함에 있다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른, 패스트 부팅 방법은, 스토리지의 블럭을 구성하는 페이지들의 에러 여부가 수록된 에러 검출 테이블을 참조하여, 에러 페이지들을 판단하는 단계; 및 상기 에러 페이지가 아닌 페이지들에서, 이미지를 읽어들이는 단계;를 포함한다.
그리고, 상기 판단단계는, 배드 블럭이 아닌 블럭들을 구성하는 페이지들에 대해 수행할 수 있다.
또한, 배드 블럭 여부는, 배드 블럭 테이블을 참고하여 결정하며, 상기 에러 검출 테이블은 상기 배드 블럭 테이블의 앞 부분에 기록될 수 있다.
그리고, 상기 에러 페이지가 아닌 페이지들에서, 이미지를 기록하는 단계;를 더 포함할 수 있다.
또한, 상기 이미지는, 부트로더 이미지 및 커널 이미지 중 적어도 하나를 포함할 수 있다.
한편, 본 발명의 다른 실시예에 따른, 시스템은, 페이지들로 구성되는 블럭들을 포함하는 스토리지; 및 상기 스토리지의 블럭을 구성하는 페이지들의 에러 여부가 수록된 에러 검출 테이블을 참조하여 에러 페이지들을 판단하고, 상기 에러 페이지가 아닌 페이지들에서 이미지를 읽어들이는 프로세서;를 포함한다.
이상 설명한 바와 같이, 본 발명의 실시예들에 따르면, 에러 검출 테이블을 이용하여 스토리지 디바이스에서 발생하는 원천적인 오버헤드를 제거할 수 있어, 부팅 속도를 현저히 증가시킬 수 있게 된다.
도 1은 제1 부트로더를 내부-RAM에 로딩하는 과정의 설명에 제공되는 도면,
도 2는 커널 이미지 로딩 과정의 설명에 제공되는 도면,
도 3은 낸드 플래시 메모리 읽기 동작의 설명에 제공되는 도면,
도 4는 SLC 낸드 플래시 메모리와 MLC 낸드 플래시 메모리의 성능 차를 나타낸 테이블,
도 5는 에러 정정 및 검출 오버헤드를 나타낸 테이블,
도 6은 낸드 플래시 메모리에서 에러 검출 테이블 위치의 설명에 제공되는 도면,
도 7은 에러 검출 테이블 생성방법의 설명에 제공되는 흐름도,
도 8은, 도 7의 S130단계의 상세 블럭도,
도 9는 에러 검출 테이블 생성을 위한 구체적인 프로그램 코드,
도 10은 에러 검출 테이블을 이용하여 낸드 플래시 메모리에 데이터를 기록하는 과정의 설명에 제공되는 흐름도,
도 11은, 도 10의 S240단계와 S260단계의 상세 블럭도,
도 12는 에러 검출 테이블을 이용한 낸드 플래시 메모리 쓰기 알고리즘의 구체적인 프로그램 코드,
도 13은 에러 검출 테이블을 이용하여 낸드 플래시 메모리로부터 데이터를 읽어들이는 과정의 설명에 제공되는 흐름도,
도 14는, 도 13의 S420단계와 S440단계의 상세 블럭도,
도 15는 에러 검출 테이블을 이용한 낸드 플래시 메모리 읽기 알고리즘의 구체적인 프로그램 코드, 그리고,
도 16은 위 알고리즘들이 적용가능한 시스템의 블럭도이다.
이하에서는 도면을 참조하여 본 발명을 보다 상세하게 설명한다.
1. 낸드 플래시 메모리를 이용한 부팅 순서( Booting Sequence )
ARM 아키텍쳐를 기반으로 하는 대다수의 프로세서는 부팅에 사용할 스토리지 디바이스의 컨트롤러 IP를 다양하게 제공하고 있다. 한편, 낸드 플래시 메모리는 블럭 소거 동작(erase operation)에 대한 횟수 제한이 있다.
ARM 프로세서는 Operating Mode Pin을 이용하여 하드웨어적으로 부팅에 사용할 스토리지 디바이스을 선택한다.
구체적으로, 도 1에 도시된 바와 같이, 시스템에 전원이 인가된 CPU는 내부-ROM의 내부-프로그램에 의해 Operating Mode Pin 값을 확인하는 과정을 진행한다. 내부-ROM의 내부-프로그램은 Operation Mode Pin 값을 확인하여 어떤 스토리지 디바이스에 있는 부트로더를 선택하여 내부-RAM에 읽을지 결정하게 된다.
내부-ROM에 의하여 스토리지 디바이스로부터 읽어들인 첫 번째 부트로더(이하, '제1 부트로더'로 표기)는 내부-RAM 내부에서 동작하며, 부트로더의 주 기능을 갖는 두 번째 부트로더(이하, '제2 부트로더'로 표기)의 모든 부분을 메모리로 읽기는 기능을 담당한다.
제1 부트로더와 제2 부트로더는 CPU 내의 내부-RAM 크기와 연관되어 있으며, 다양한 기능을 포함하는 부트로더의 크기가 점차 커지면 이로 인하여 내부-RAM 내부에 부트로더 모두를 읽는데 한계가 있기 때문에 기능상으로 분리를 하여 사용한다.
제1 부트로더에 의하여 읽어들인 제2 부트로더는 다음과 같은 순서를 통해 부트로더의 기능을 진행한다.
- 코어 프로세서 초기화
- DRAM 컨트롤러 초기화,
- UART 초기화
- 낸드 플래시 메모리 컨트롤러 초기화
- 낸드 플래시 메모리로부터 DRAM에 커널 이미지 로드
- (필요시) 커널 이미지 압축해제
- 프로그램 카운터를 OS 시작 메모리 주소로 점프
제2 부트로더에서 진행하는 코어 프로세서 초기화는 MMU 초기화와 함께 I/D Cache 초기화가 있으며, 현재 코어 프로세서의 상태를 관리자 모드로 설정한다. 또한, 추후 OS 이미지가 동작할 DRAM 영역을 위해 DRAM 컨트롤러를 초기화한다. UART는 디버깅을 이유로 사용하며, 낸드 플래시 메모리 컨트롤러는 낸드 플래시 메모리 읽기와 함께 발생할 수 있는 에러에 대한 정정을 위해 진행한다.
부트로더가 읽어들인 커널 이미지는 경우에 따라 압축되어 있는데, 도 2에 도시되어 있는 일련의 작업을 통해 커널를 구동한다. 부트로더는 커널의 이미지를 DRAM의 영역에 읽어들이고, 커널 이미지의 헤더를 분석하여 압축되어 있는 이미지인지 확인하는 과정을 거친다. 압축되어 있는 커널 이미지는 부트로더 내부의 압축해제 루틴을 이용하여 커널 이미지을 DRAM의 다른 영역에 압축해제하고 해당 이미지로 프로그램 카운터를 이동한다. 압축되어 있지 않은 커널 이미지일 경우 프로그램 카운터를 커널 이미지의 영역에 이동한다.
2. 낸드 플래시 메모리 부팅 오버헤드 최소화 알고리즘
낸드 플래시 메모리의 마지막 4 블럭은 배드 블럭 테이블(Bad Block Table)을 위한 영역으로 할당되며, 해당 배드 블럭 테이블은 2개의 블럭을 이용하여 관리된다. 배드 블럭은 비트맵 테이블을 이용하여 배드 블럭을 스킵하여 사용하는 방식으로 관리한다. 한편, 낸드 플래시 메모리의 읽기 동작은 도 3에 도시된 바와 같이 세부적으로 구분할 수 있다.
낸드 플래시 메모리의 읽기 동작 중, 오버헤드를 발생할 수 있는 과정은 에러 정정 과정으로 에러 검출과 에러 정정은 낸드 플래시 메모리 내 모든 페이지에서 발생한다.
에러 검출은 낸드 플래시 메모리 동작 중에서 필수적으로 동작해야 하는 작업이며, 에러 정정은 도 5의 테이블에 나타난 바와 같이 각 비트수 만큼 오버헤드를 발생시킨다. 일반적으로 소프트웨어 에러 정정 과정은 예비 영역의 에러 정정 코드 데이터와 페이지 내의 데이터를 읽으면서 결과로 발생하는 에러 검출 코드를 비교 연산하는 과정을 진행한다.
비교 연산하는 데이터의 크기는 에러 정정 알고리즘에 따라 다르며, SLC 낸드 플래시 메모리는 해밍 코드 알고리즘을 사용하고 MLC 낸드 플래시 메모리는 4bit 이상의 ECC를 하는 이유로 리드-솔로몬, BCH 알고리즘을 응용하여 사용하고 있다. ARM 아키텍쳐 기반의 CPU는 낸드 플래시 메모리 IP내에 해밍 코드 알고리즘이 반영되는 경우도 있으며, ARMv4 아키텍쳐의 경우 소프트웨어 해밍 코드 알고리즘을 이용하여 에러 검출과 에러 정정을 진행한다. SLC와 MLC의 성능상 차이는 도 4에 도시된 테이블을 통해 알 수 있으며, 이는 에러 검출과 에러 정정에도 큰 영향을 나타낸다.
반면, 하드웨어 에러 정정 과정은 보장하는 비트 에러 보정 개수 마다 틀리지만, 대다수의 낸드 플래시 메모리 컨트롤러 IP들은 예비 영역 내 에러 정정 코드 데이터를 신드롬(Syndrome)으로 사용하는 변형된 리드-솔로몬 또는 BCH 부호를 이용하여 하드웨어적으로 에러를 보정하는 방법을 사용한다.
도 5에는 각 소프트웨어적인 에러 정정 방법과 S/W 및 H/W 에러 정정 방법의 성능을 측정한 결과를 나타내었다. 1bit 하드웨어 ECC 결과는 S5PV210 내 낸드 플래시 메모리 IP의 하드웨어 ECC 결과를 측정한 것이다. S/W 에러 정정 방법은 해밍 코드를 기반으로 동작하는 S/W 에러 정정 방법을 시험한 결과를 나타낸다. 에러 정정을 위한 ECC 연산 오버헤드는 모든 페이지 마다 고정적으로 나타나고 있으며, 에러 검출 이후 에러 정정 과정은 사용하는 환경마다 다르다는 것을 도 5를 통해 알 수 있다.
따라서, 본 발명의 실시예에서는 낸드 플래시 메모리 동작에서 발생할 수 있는 에러 정정과 관련된 오버헤드를 최소화하기 위한 방법으로 에러 검출 테이블(Error Detection Table)을 이용하는 방법을 제안한다.
에러 검출 테이블은 배드 블럭 테이블의 앞 부분에 위치시켜, 부트로더 동작 과정에서 사용 가능하도록 구성하였다. 부트로더는 에러 검출 테이블을 이용하여 에러가 발생하지 않은 페이지들을 이용하여 부트로더 이미지, 커널 이미지를 낸드 플래시 메모리에 저장한다.
구체적으로, 도 6에 도시된 바와 같이, 에러 검출 테이블은 배드 블럭 테이블의 앞 2 블럭을 이용하여 저장되며, 해당 정보는 부트로더에서 생성을 담당한다. 또한, 에러 검출 테이블은 모든 블럭에 사용하는 것이 아니라, 부트로더, 커널이 저장되는 블럭 영역에 대한 정보만을 저장하도록 하여 에러 검출 테이블 읽기 시 발생하는 오버헤드를 최소화하도록 설계되었다.
에러 검출 테이블의 크기는 아래의 수식을 이용하여 확인된다. 현재 사용되는 낸드 플래시 메모리의 블럭 크기는 평균적으로 128KB또는 256KB의 크기를 갖으며, 2~4KB의 크기를 갖는 페이지로 구성된다.
부트로더의 이미지 크기는 400KB~500KB이며, 압축 커널 이미지인 zImage는 대략적으로 3~5MB 크기를 갖는다. 배드 블럭 스킵 방식으로 배드 블럭을 관리할 경우, 각 이미지를 위한 할당된 파티션에서 배드 블럭을 대비하기 위해 여분의 블럭을 추가하는 방법을 이용하기 때문에 실제 이미지크기보다 많은 블럭이 할당되어 사용된다.
α는 에러 검출 테이블이 동작할 낸드 플래시 메모리의 영역 크기를 나타내는 정보이며, β는 낸드 플래시 메모리의 페이지 크기를 나타낸다. 에러 검출 테이블의 총 크기는 α을 페이지의 크기인 β로 나눈 값에 1을 추가하며, 1 Byte를 8개 bit로 표시가 가능하기 때문에 다음과 같은 수식으로 나타내었다.
Figure 112013021030059-pat00001
위의 수식을 이용하여 H-AndroSV210 보드에서 사용하는 K9F2G08UOB을 기준으로 에러 검출 테이블의 크기를 계산하면 α(6MB), β(2KB)를 기준으로 384Byte의 크기를 갖는다. 이는 가장 최소한의 에러 정정, 에러 검출의 단위인 512Byte보다 작은 값으로 전체 성능에 큰 영향을 주지 않는다.
3. 에러 검출 테이블 생성 알고리즘
도 7은 에러 검출 테이블 생성방법의 설명에 제공되는 흐름도이다. 도 7에 도시된 에러 검출 테이블 생성은 낸드 플래시 메모리의 관리 차원에서 이루어진다.
도 7에 도시된 바와 같이, 먼저 제1 부트로더가 낸드 플래시 메모리에서 배드 블럭 테이블을 읽어 들인다(S110). 제1 부트로더는 S110단계에서 읽어들인 배드 블럭 테이블로부터 배드 블럭으로 판단되는 블럭들을 소거한다(S120-Y, S170).
배드 블럭이 아닌 블럭에 대해(S120-N), 제1 부트로더는 먼저 블럭을 구성하는 페이지들이 에러 페이지인지 판단한다(S130). S130단계에서 에러 페이지로 판단되면(S130-Y), 제1 부트로더는 에러 검출 테이블에서 해당 페이지의 비트를 "1"로 설정한다(S140). 반면, 에러 페이지가 아닌 페이지에 대해서는 S140단계가 수행되지 않는다.
S130단계 및 S140단계는, 블럭을 구성하는 모든 페이지들에 대해 수행되고(S150), S120단계 내지 S150단계는, 낸드 플래시 메모리를 구성하는 블럭들 중 부트로더와 커널을 저장할 대상 블럭들에 대해 수행된다(S160).
도 8은, 도 7의 S130단계의 상세 블럭도이다. 도 8에 도시된 바와 같이, 페이지가 에러 페이지인지 여부를 판단하기 위해, 제1 부트로더는 먼저 블럭을 구성하는 페이지들에 대해 하나씩 테스트 데이터를 기록한다(S131).
그리고, 제1 부트로더는 페이지를 버퍼에 읽어들여(S133), 버퍼와 테스트 데이터를 비교한다(S135). S135단계에서의 비교 결과 테스트 데이터 불일치하는 경우(S137-Y), 에러 페이지로 판단하여 도 7의 S140단계가 수행된다.
반면, S135단계에서의 비교 결과 테스트 데이터 일치하는 경우(S137-N), 에러 페이지가 아닌 것으로 판단하여 도 7의 S150단계가 수행된다.
도 9에는 에러 검출 테이블 생성을 위한 구체적인 프로그램 코드를 나타내었다. 에러 검출 테이블 생성은 에러 검출 테이블이 없는 초기 낸드 플래시 메모리에서 1회만 발생하기 때문에 이후 부팅 과정에서는 오버헤드를 발생시키지 않는다. 또한, 에러 검출 테이블의 에러 발생 페이지의 확인은 bit 오퍼레이션 연산으로 main 메모리 영역에서 진행되기 때문에 오버헤드가 거의 발생하지 않는다.
4. 에러 검출 테이블을 이용한 낸드 플래시 메모리 쓰기 알고리즘
도 10은 에러 검출 테이블을 이용하여 낸드 플래시 메모리에 데이터를 기록하는 과정의 설명에 제공되는 흐름도이다. 여기서, 데이터는 부팅 과정에서 저장되는 부트로더 이미지와 커널 이미지를 말한다.
도 10에 도시된 바와 같이, 먼저 CPU는 제1 부트로더 이미지 주소를 획득하여(S210), 낸드 플래시 메모리에 제1 부트로더 이미지를 기록한다(S220).
다음, 제1 부트로더는 제2 부트로더 이미지 주소를 획득하고(S230), 전술한 알고리즘에 의해 생성된 에러 검출 테이블을 참조하여, 낸드 플래시 메모리에 제2 부트로더 이미지를 기록한다(S240).
그리고, 제2 부트로더는 커널 이미지 주소를 획득하고(S250), 에러 검출 테이블을 참조하여, 낸드 플래시 메모리에 커널 이미지를 기록한다(S260).
도 11은, 도 10의 S240단계와 S260단계의 상세 블럭도이다. 도 11에 도시된 바와 같이, 제2 부트로더/커널 이미지를 기록하기 위해, 먼저 현재 블럭이 배드 블럭인지 판단한다(S310).
S310단계에서 배드 블럭으로 판단되면(S310-Y), 다음 블럭으로 이동한다(S320). 반면, 배드 블럭이 아니면(S310-N), 블럭을 구성하는 페이지들에 선별적으로 제2 부트로더/커널 이미지를 기록한다(S330 내지 S350).
구체적으로, 에러 검출 테이블로부터 현재 페이지가 에러 페이지로 판단되면(S330-Y), 다음 페이지로 이동한다(S340). 반면, 에러 검출 테이블로부터 현재 페이지가 에러 페이지가 아닌 것으로 판단되면(S330-N), 현재 페이지에 제2 부트로더/커널 이미지를 기록한다(S350).
제2 부트로더/커널 이미지 기록이 종료되지 않은 상태에서(S360), 블럭을 구성하는 모든 페이지들에 대해 S330단계 내지 S350단계가 완료되면(S370-Y), 다음 블럭으로 이동하고(S380), S310단계부터 재수행한다.
도 12에는 에러 검출 테이블을 이용한 낸드 플래시 메모리 쓰기 알고리즘을 구체적인 프로그램 코드를 나타내었다.
도 12의 과정에서 주된 연산을 하는 배드 블럭 검출 과정과 에러 발생 페이지 검출 과정은 메모리 내 bit 연산으로 이뤄지기 때문에 에러 검출 테이블을 이용한 낸드 플래시 메모리의 쓰기 동작은 오버헤드가 거의 발생하지 않는다.
실험결과에 따르면 위의 알고리즘을 사용할 경우 비교연산에 필요한 오버헤드는 1 페이지당 10 nsec보다 작은 값을 표출하였다. 이는 도 5에 나타난 에러 정정 시간보다 작은 값으로 본 발명의 실시예에서 제안한 에러 검출 테이블의 성능이 좋다는 것을 나타낸다.
5. 에러 검출 테이블을 이용한 낸드 플래시 메모리 읽기 알고리즘
도 13은 에러 검출 테이블을 이용하여 낸드 플래시 메모리로부터 데이터를 읽어들이는 과정의 설명에 제공되는 흐름도이다. 여기서, 데이터는 부팅 과정에서 저장되는 부트로더 이미지와 커널 이미지를 말한다.
도 13에 도시된 바와 같이, 먼저 제1 부트로더는 제2 부트로더 이미지 주소를 획득하고(S410), 전술한 알고리즘에 의해 생성된 에러 검출 테이블을 참조하여, 낸드 플래시 메모리로부터 제2 부트로더 이미지를 읽어들인다(S420).
다음, 제2 부트로더는 커널 이미지 주소를 획득하고(S430), 에러 검출 테이블을 참조하여, 낸드 플래시 메모리로부터 커널 이미지를 읽어들인다(S440).
도 14는, 도 13의 S420단계와 S440단계의 상세 블럭도이다. 도 14에 도시된 바와 같이, 제2 부트로더/커널 이미지를 읽기 위해, 먼저 현재 블럭이 배드 블럭인지 판단한다(S510).
S510단계에서 배드 블럭으로 판단되면(S510-Y), 다음 블럭으로 이동한다(S520). 반면, 배드 블럭이 아니면(S510-N), 블럭을 구성하는 페이지들에 선별적으로 접근하여 제2 부트로더/커널 이미지를 읽어들인다(S530 내지 S550).
구체적으로, 에러 검출 테이블로부터 현재 페이지가 에러 페이지로 판단되면(S530-Y), 다음 페이지로 이동한다(S540). 반면, 에러 검출 테이블로부터 현재 페이지가 에러 페이지가 아닌 것으로 판단되면(S530-N), 현재 페이지에서 데이터를 읽어들인다(S550).
S550단계에서 읽어들인 데이터에 에러가 있는 것으로 판단되면(S560-Y), 에러 정정 알고리즘을 통해 에러를 정정한다(S570).
제2 부트로더/커널 이미지 읽기가 종료되지 않은 상태에서(S580-N), 블럭을 구성하는 모든 페이지들에 대해 S530단계 내지 S570단계가 완료되면(S590-Y), 다음 블럭으로 이동하고(S595), S510단계부터 재수행한다.
도 15에는 에러 검출 테이블을 이용한 낸드 플래시 메모리 읽기 알고리즘을 구체적인 프로그램 코드를 나타내었다.
도 15의 과정에서 주된 연산을 하는 배드 블럭 검출 과정과 에러 발생 페이지 검출 과정은 메모리 내 bit 연산으로 이뤄지기 ?문에 에러 검출 테이블을 이용한 낸드 플래시 메모리의 읽기 동작은 오버헤드가 거의 발생하지 않는다.
실험결과에 따르면 위의 알고리즘을 사용할 경우 비교연산에 필요한 오버헤드는 1 페이지당 10 nsec보다 작은 값을 표출하였다. 이는 도 5에 나타난 에러 정정 시간보다 작은 값으로 본 발명의 실시예에서 제안한 에러 검출 테이블의 성능이 좋다는 것을 나타낸다.
6. 위 알고리즘이 적용가능한 시스템
도 16은 위 알고리즘이 적용가능한 시스템의 블럭도이다. 도 16에 도시된 시스템은 전자 시스템, 모바일 시스템은 물론, 오토모티브 시스템으로도 구현가능하다.
도 10에 도시된 바와 같이, 시스템(600)은 낸드 플래시 메모리(610), CPU(620) 및 I/Os(630)를 포함한다.
낸드 플래시 메모리(610)는 부트 로더와 커널 등의 프로그램이 저장되어 있는 저장매체이다. CPU(620)는 도 7 내지 도 14에 도시된 알고리즘을 수행한다.
I/Os(630)는 시스템(600)에 의한 기능 수행 결과를 위한 다양한 I/O들을 포함한다.
또한, 이상에서는 본 발명의 바람직한 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
600 : 시스템
610 : 낸드 플래시 메모리
620 : CPU
630 : I/Os

Claims (6)

  1. 패스트 부팅 시스템이, 스토리지의 블럭들을 구성하는 페이지들의 에러 여부가 수록된 에러 검출 테이블을 참조하여, 에러 페이지들을 판단하는 단계; 및
    상기 패스트 부팅 시스템이, 상기 에러 페이지가 아닌 페이지들에서, 이미지를 읽어들이는 단계;를 포함하고,
    상기 이미지는,
    부트로더 이미지 및 커널 이미지 중 적어도 하나를 포함하며,
    상기 에러 검출 테이블은,
    상기 스토리지의 블럭들 중 상기 부트로더 이미지와 상기 커널 이미지가 기록될 블럭들을 구성하는 페이지들이 에러 페이지인지 여부가 수록된 테이블이고,
    상기 에러 페이지는,
    테스트 데이터를 페이지에 기록한 후 페이지를 버퍼에 읽어들여, 버퍼와 테스트 데이터를 비교하였을 때 불일치 하는 페이지인 것을 특징으로 하는 패스트 부팅 방법.
  2. 제 1항에 있어서,
    상기 판단단계는,
    배드 블럭이 아닌 블럭들을 구성하는 페이지들에 대해 수행하는 것을 특징으로 하는 패스트 부팅 방법.
  3. 제 2항에 있어서,
    배드 블럭 여부는, 배드 블럭 테이블을 참고하여 결정하며,
    상기 에러 검출 테이블은, 상기 배드 블럭 테이블의 앞 부분에 기록되어 있는 것을 특징으로 하는 패스트 부팅 방법.
  4. 삭제
  5. 삭제
  6. 페이지들로 구성되는 블럭들을 포함하는 스토리지; 및
    상기 스토리지의 블럭들을 구성하는 페이지들의 에러 여부가 수록된 에러 검출 테이블을 참조하여 에러 페이지들을 판단하고, 상기 에러 페이지가 아닌 페이지들에서 이미지를 읽어들이는 프로세서;를 포함하고,
    상기 이미지는,
    부트로더 이미지 및 커널 이미지 중 적어도 하나를 포함하며,
    상기 에러 검출 테이블은,
    상기 스토리지의 블럭들 중 상기 부트로더 이미지와 상기 커널 이미지가 기록될 블럭들을 구성하는 페이지들이 에러 페이지인지 여부가 수록된 테이블이고,
    상기 에러 페이지는,
    테스트 데이터를 페이지에 기록한 후 페이지를 버퍼에 읽어들여, 버퍼와 테스트 데이터를 비교하였을 때 불일치 하는 페이지인 것을 특징으로 하는 패스트 부팅 시스템.
KR1020130025719A 2013-03-11 2013-03-11 에러 검출 테이블을 이용한 패스트 부팅 방법 및 이를 적용한 시스템 KR101467302B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130025719A KR101467302B1 (ko) 2013-03-11 2013-03-11 에러 검출 테이블을 이용한 패스트 부팅 방법 및 이를 적용한 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130025719A KR101467302B1 (ko) 2013-03-11 2013-03-11 에러 검출 테이블을 이용한 패스트 부팅 방법 및 이를 적용한 시스템

Publications (2)

Publication Number Publication Date
KR20140112606A KR20140112606A (ko) 2014-09-24
KR101467302B1 true KR101467302B1 (ko) 2014-12-02

Family

ID=51757405

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130025719A KR101467302B1 (ko) 2013-03-11 2013-03-11 에러 검출 테이블을 이용한 패스트 부팅 방법 및 이를 적용한 시스템

Country Status (1)

Country Link
KR (1) KR101467302B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070063132A (ko) * 2005-12-14 2007-06-19 주식회사 팬택앤큐리텔 이동 통신 단말기의 배드 블럭 관리장치와 배드 블럭관리방법
JP2008226149A (ja) * 2007-03-15 2008-09-25 Hitachi Ltd ストレージシステム及びストレージシステムのライト性能低下防止方法
KR20100026195A (ko) * 2008-08-29 2010-03-10 주식회사 안철수연구소 시스템 보호 장치 및 방법
KR20120021210A (ko) * 2010-08-31 2012-03-08 애플 인크. 불휘발성 메모리로부터의 디바이스 부트업 동안 에러들의 핸들링

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070063132A (ko) * 2005-12-14 2007-06-19 주식회사 팬택앤큐리텔 이동 통신 단말기의 배드 블럭 관리장치와 배드 블럭관리방법
JP2008226149A (ja) * 2007-03-15 2008-09-25 Hitachi Ltd ストレージシステム及びストレージシステムのライト性能低下防止方法
KR20100026195A (ko) * 2008-08-29 2010-03-10 주식회사 안철수연구소 시스템 보호 장치 및 방법
KR20120021210A (ko) * 2010-08-31 2012-03-08 애플 인크. 불휘발성 메모리로부터의 디바이스 부트업 동안 에러들의 핸들링

Also Published As

Publication number Publication date
KR20140112606A (ko) 2014-09-24

Similar Documents

Publication Publication Date Title
US8560926B2 (en) Data writing method, memory controller and memory storage apparatus
US9817711B2 (en) Memory controller
CN104572489B (zh) 磨损均衡方法及装置
US8650463B2 (en) Solid state drive and method of controlling an error thereof
KR100873943B1 (ko) 비휘발성 컴퓨터 메모리를 독출하기 위한 시스템 및 방법
JP4901987B1 (ja) 記憶装置、電子機器及び誤りデータの訂正方法
US20150085571A1 (en) Updating read voltages
US9633749B2 (en) System and method of managing tags associated with read voltages
US20090193058A1 (en) System and method for providing copyback data integrity in a non-volatile memory system
US10475517B2 (en) Characterizing and operating a non-volatile memory device
US11816015B2 (en) Management of event log information of a memory sub-system
JP7308025B2 (ja) 集積回路装置及びストレージ装置
US11537328B2 (en) Method and apparatus for executing host commands
TWI796882B (zh) 讀取干擾檢查方法、記憶體儲存裝置及記憶體控制電路單元
US8595594B2 (en) Data processing method, memory controller, and memory storage device
US9213597B2 (en) Memory storage device, memory controller thereof, and method for programming data thereof
US8850291B2 (en) Data input and output method of NAND flash memory and embedded system using the same
KR101467302B1 (ko) 에러 검출 테이블을 이용한 패스트 부팅 방법 및 이를 적용한 시스템
KR101467309B1 (ko) 에러 검출 테이블 생성에 의한 스토리지 관리 방법 및 이를 적용한 시스템
CN114327265B (zh) 读取干扰检查方法、存储器存储装置及控制电路单元
US20240004745A1 (en) Pausing memory system based on critical event
CN113515405A (zh) 地址管理方法和装置
CN113010458A (zh) 存储器管理方法、存储控制器与存储装置
JP2010140132A (ja) メモリシステム及びメモリコントローラ

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20180620

Year of fee payment: 4

R401 Registration of restoration