KR20050065431A - 정보 처리 장치 및 이를 위한 rom 이미지 생성 장치 - Google Patents

정보 처리 장치 및 이를 위한 rom 이미지 생성 장치 Download PDF

Info

Publication number
KR20050065431A
KR20050065431A KR1020040112238A KR20040112238A KR20050065431A KR 20050065431 A KR20050065431 A KR 20050065431A KR 1020040112238 A KR1020040112238 A KR 1020040112238A KR 20040112238 A KR20040112238 A KR 20040112238A KR 20050065431 A KR20050065431 A KR 20050065431A
Authority
KR
South Korea
Prior art keywords
storage device
program
cpu
error
check code
Prior art date
Application number
KR1020040112238A
Other languages
English (en)
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 KR20050065431A publication Critical patent/KR20050065431A/ko

Links

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
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • 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
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum

Landscapes

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

Abstract

전원이 동작된 이후에, 전송자(14)는 제1 에러 체크 코드(114)가 할당된 제1 저장 장치(1)내에 저장된 초기 적재 프로그램(111)을 검출하고, 초기 적재 프로그램(111)을 에러 검출/수정 공정을 거치도록 하며, 초기 적재 프로그램(111)을 제2 저장 장치에 전송한다. 전송이 양호하게 완료된 경우, 제2 저장 장치(12) 상의 초기 적재 프로그램(111)을 실행함에 의해, CPU(10)는 제2 에러 체크 코드(115)가 할당된 메인 프로그램(112)에 대한 에러 검출/수정 공정을 수행하고, 메인 프로그램(112)을 제3 저장 장치(13)로 전송하며, 그 이후 CPU의 제어는 제3 저장 장치(13) 상의 메인 프로그램(112)으로 분기한다. 결과적으로, NOR형 플래시 메모리를 채용하지 않고도 시스템 부트가 실행될 수 있다.

Description

정보 처리 장치 및 이를 위한 ROM 이미지 생성 장치{INFORMATION PROCESSING APPARATUS AND A ROM IMAGE GENERATION APPARATUS FOR THE APPARATUS}
본 발명은 배드 블록을 포함할 수 있는 저장 장치내에 저장된 프로그램을 이용함에 의해 시스템 부트를 수행하고, 예를 들면 NAND형 플래시 메모리를 판독한 이후에 에러 검출/수정 공정을 요하는 정보 처리 장치에 관한 것이다.
플래시 메모리는 일반적으로 NOR형과 NAND형으로 분류된다. NOR형 플래시 메모리는 바이트 단위의 랜덤 억세스를 수용할 수 있다는 장점을 갖지만, 고가이고 NAND형 플래시 메모리에 비해 집적도가 낮다는 단점을 갖는다. 반면에, NAND형 플래시 메모리는 일정 개체수 또는 그 이하의 배드 블록을 포함할 수 있는 메모리이다. 그러므로, NAND형 플래시 메모리에 대한 판독 및 기록은 배드 블록들의 위치를 관리하에 두면서 수행되어야 한다. 비록 NAND형 플래시 메모리가 순차적 억세스만을 허용하고 판독이 수행된 이후에 에러 검출/수정 공정을 요하는 단점이 있지만, NAND형 플래시 메모리는 저가이며 NOR형 플래시 메모리에 비해 높은 집적도를 허용한다는 장점을 갖는다.
일반적으로 아래의 기술은 배드 블록을 포함하고 판독 이후에 에러 검출/수정 공정이 필요한 저장 장치(이하 NAND형 플래시 메모리와 같은 "저신뢰성 메모리"라 칭함)내에 저장된 프로그램을 실행하기 위해 시행되어 왔다. 종래의 기술은 저신뢰성 메모리에서 채용될 뿐만 아니라, 배드 블록을 포함하지 않고 에러 검출/수정 공정을 요하지 않는 저장 장치(이하, 마스크 ROM 또는 NOR형 플래시 메모리와 같은 "고신뢰성 메모리"라 칭함)에서도 채용된다. 저신뢰성 메모리는 에러 체크 코드가 할당된 메인 프로그램을 저장하고 있는 반면에, 고신뢰성 메모리는 메인 프로그램의 전송을 포함하는 기능들을 수행하는 초기 프로그램을 저장하고 있다. 리셋 상태를 빠져나온 이후에 시스템 CPU는 메인 프로그램을 저신뢰성 메모리로부터 RAM으로 전송시킨다. 메인 프로그램의 전송이 완료된 이후에, CPU의 제어는 메인 프로그램에서 RAM으로 분기되고, 그 이후부터는 RAM 상의 메인 프로그램이 실행된다.
초기 프로그램을 고속으로 실행할 특별한 필요성은 없으므로, 초기 프로그램은 저속 저장 장치내에 저장되는 것이 바람직하다. 따라서, 초기 프로그램을 저장하기 위하여 고신뢰성 메모리를 채용하지 않고, NAND형 플래시 메모리에 저장된 초기 프로그램을 이용하여 시스템 부트를 수행하는 기술이 공지되어 있다. 그러한 기술은 예를 들면 일본 공개 공보 제2002-55822호에 기재되어 있다. 이 공보에 기재된 기술에 따르면, NAND형 플래시 메모리에 저장된 초기 프로그램은 전원 동작 시에 정적 RAM 등에 전송 회로에 의해 전송된다.
그러나, 이 공보에 기재된 기술에서, 초기 프로그램(초기 적재 프로그램, 드라이버 등을 포함)이 정적 RAM 등에 전송된 경우 에러 검출/수정 공정은 수행되지 않는다.
그러므로, 본 발명의 목적은 초기 프로그램을 저장하기 위한 고신뢰성 메모리를 필요로 하지 않고 시스템 부트를 안정적으로 수행할 수 있는 정보 처리 장치를 제공하는 것이다.
본 발명은 상술한 목적을 성취하기 위하여 아래의 특징을 갖는다.
본 발명에 따른 제1 특징은 비휘발성 저장 장치내에 저장된 프로그램을 이용함에 의해 시스템 부트를 수행하기 위한 정보 처리 장치에 관한 것으로서, CPU; 상기 CPU에 의해 실행될 프로그램으로서 제1 체크 코드가 할당된 초기 적재 프로그램 및 제2 체크 코드가 할당된 메인 프로그램을 저장하기 위한 비휘발성 제1 저장 장치 - 상기 제2 체크 코드는 상기 제1 체크 코드를 연산하기 위해 이용되는 것과는 상이한 방법에 의해 연산됨 -; 상기 제1 저장 장치내에 저장된 프로그램을 판독하기 위한 전송자(transferer) - 시스템 부트 동안 상기 전송자는 상기 제1 저장 장치로부터 초기 적재 프로그램을 판독하고, 상기 초기 적재 프로그램이 상기 제1 체크 코드에 근거하여 제1 에러 검출/수정 공정을 거치도록 하며, 처리된 상기 초기 적재 프로그램을 제2 저장 장치로 전송함 - ; 상기 제1 저장 장치로부터 판독된 프로그램을 저장하기 위한 휘발성 제2 저장 장치; 및 초기 적재 프로그램의 전송이 완료될 때까지 상기 CPU의 동작을 중지하기 위한 CPU 제어기를 포함한다. 이러한 구조에 따르면, 시스템 부트는 초기 프로그램을 저장하기 위한 고신뢰성 메모리(예를 들면 ROM)을 채용하지 않고 저신뢰성 메모리(예를 들면 NAND형 플래시 메모리)내에 저장되어 있고, 체크 코드가 할당되어 있는 프로그램을 이용하여 안정적으로 수행될 수 있다.
이 경우, CPU 제어기에 의한 동작 중지가 없는 경우, 제2 저장 장치내에 저장된 초기 적재 프로그램에 따라, CPU는 제1 저장 장치내에 저장된 메인 프로그램을 제2 저장 장치로 전송하며, 제2 체크 코드에 근거하여 메인 프로그램이 제2 에러 검출/수정 공정을 거치도록 한다. 이러한 구조에 따르면, 에러 검출/수정 공정 이후에 초기 적재 프로그램에 따라 메인 프로그램에 대한 복잡한 소프트웨어 기반의 제2 에러 검출/수정 공정을 수행하는 것이 가능하다.
전송자는 초기 적재 프로그램의 전송을 제어하기 위한 전송 제어부; 제1 체크 코드에 근거하여 전송되는 초기 적재 프로그램에 대한 제1 에러 검출/수정 공정을 수행하기 위한 에러 처리부; 초기 적재 프로그램의 전송이 완료될 때 상기 에러 처리부가 어떠한 수정 불가 에러도 검출하지 않은 경우, 전송의 완료를 상기 CPU 제어기에 통지하기 위한 통지부를 포함한다. 이러한 구조에 따르면, 시스템 부트는 초기 프로그램을 저장하기 위한 고신뢰성 메모리를 채용하지 않고 저신뢰성 메모리내에 저장되어 있고, 체크 코드가 할당된 프로그램을 이용하여 안정적으로 수행될 수 있다.
CPU 제어기는 초기 적재 프로그램의 전송이 완료될 때까지 CPU에 대한 클럭 신호의 공급을 중지할 수 있다. 다르게는, CPU 제어기는 초기 적재 프로그램의 전송이 완료될 때까지 CPU에 대한 리셋 신호를 지속적으로 공급할 수 있다. 이러한 구조에 따르면, CPU의 동작은 작은 양의 하드웨어만을 이용함으로써 중지될 수 있다.
CPU 제어기는 초기 적재 프로그램의 전송이 완료될 때까지 CPU가 제2 저장 장치에 억세스하는 것을 중지할 수 있다. 보다 바람직하게는, CPU 제어기는 초기 적재 프로그램의 전송이 완료될 때까지는 우선권을 전송자에 주고 초기 적재 프로그램의 전송이 완료된 이후에는 우선권을 CPU에 주는 방식으로 제2 저장 장치에 결선된 버스에 대한 억세스 권리를 중재한다. 이러한 구조에 따르면, CPU의 동작은 제2 저장 장치를 위한 억세스 제어 회로의 약간의 변경만을 도입함에 의해 중지될 수 있다.
CPU 제어기는 초기 적재 프로그램의 전송이 실패하는 경우 CPU가 동작하는 것을 계속 중지할 수 있다. 이러한 구조에 따르면, 시스템 부트가 실패될 경우 시스템 런어웨이(system runaway)가 발생하는 것을 방지할 수 있다.
제1 저장 장치는 각각이 정상 블록 또는 배드 블록으로 인식되는 복수개의 블록들을 포함하며, 초기 적재 프로그램, 메인 프로그램, 및 제1 저장 장치내의 메인 프로그램의 저장된 위치를 표시하는 저장 위치 정보는 제1 저장 장치의 정상 블록내에 저장될 수 있다. 이러한 구조에 따르면, 정상 블록 및 배드 블록을 포함하는 예를 들면 NAND형 플래시 메모리와 같은 저신뢰성 메모리내에 저장된 프로그램을 이용함에 의해 시스템 부트를 수행할 수 있는 정보 처리 장치가 제공된다.
특히, 초기 적재 프로그램은 제2 체크 코드에 근거하여 제2 에러 검출/수정 공정을 수행하기 위한 저장 위치 정보 및 에러 처리 프로그램을 포함하며, CPU 제어기에 의해 중지되지 않는 경우, CPU는 제1 체크 코드에 근거한 제1 에러 검출/수정 공정 이후에 저장 위치 정보에 따라 제1 저장 장치내에 저장된 메인 프로그램을 전송자를 경유해 제2 저장 장치로 전송하고, 제1 체크 코드에 근거한 제1 에러 검출/수정 공정 이후에 에러 처리 프로그램에 따라 제2 저장 장치내에 저장된 메인 프로그램에 대한 제2 에러 검출/수정 공정을 수행한다. 이러한 구조에 따르면, 정확한 저장 위치로부터 메인 프로그램을 판독하고, 판독된 메인 프로그램에 대한 복잡한 소프트웨어 기반의 에러 검출/수정 공정을 수행하는 것이 가능하다.
별예로는, 제1 저장 장치는 제1 체크 코드가 할당된 저장 위치 정보를 저장하고; 전송자는 제1 체크 코드에 근거하여 제1 저장 장치로부터 판독된 저장 위치 정보에 대한 제1 에러 검출/수정 공정을 수행하며; 초기 적재 프로그램은 저장 위치 정보가 제1 저장 장치내에 저장되는 어드레스 및 제2 체크 코드에 근거하여 제2 에러 검출/수정 공정을 수행하기 위한 에러 처리 프로그램을 포함하며, CPU 제어기에 의해 중지되지 않을 경우, CPU는 제1 체크 코드에 근거한 제1 에러 검출/수정 공정 이후에 어드레스를 이용함에 의해 제1 저장 장치내에 저장된 저장 위치 정보를 전송자를 경유하여 제2 저장 장치로 전송하며, 제1 체크 코드에 근거한 제1 에러 검출/수정 공정 이후에 저장 위치 정보에 따라 제1 저장 장치내에 저장된 메인 프로그램을 전송자를 경유하여 제2 저장 장치로 전송하며, 제1 체크 코드에 근거한 제1 에러 검출/수정 공정 이후에 에러 처리 프로그램에 따라 제2 체크 코드에 근거하여 제2 저장 장치내에 저장된 메인 프로그램에 대한 제2 에러 검출/수정 공정을 수행한다. 이러한 구조에 따르면, 초기 적재 프로그램은 크기가 줄어들 수 있고, 정확한 저장 위치로부터 메인 프로그램을 판독하고, 판독된 메인 프로그램에 대한 복잡한 소프트웨어 기반의 에러 검출/수정 공정을 수행하는 것이 가능하다.
초기 적재 프로그램은 제1 저장 장치의 정상 블록내에 예정 크기의 데이터 단위로 저장될 수 있고, 전송자는 제1 저장 장치로부터 초기 적재 프로그램의 예정 크기의 데이터 단위 각각을 판독할 수 있으며, 제1 체크 코드에 근거하여 데이터 단위를 제1 에러 검출/수정 공정 처리할 수 있으며, 처리된 데이터 단위를 제2 저장 장치로 전송할 수 있다. 이러한 구조에 따르면, 예정 크기로 분할된 각각의 데이터 단위에 대해 바람직한 에러 검출/수정 능력을 제공하는 체크 코드가 제1 체크 코드로서 할당될 수 있다.
특히, 제1 저장 장치로부터 판독된 예정 크기의 데이터 단위에 대한 제1 체크 코드에 근거한 에러 검출/수정 공정의 수행 결과로서 수정 불가능한 에러가 검출되는 경우, 전송자는 데이터 단위를 포함하고 있는 그 블록에 이웃하는 정상 블록으로부터 처리될 다음 데이터 단위를 판독할 수 있다. 이러한 구조에 따르면, 배드 블록을 포함하는 제1 저장 장치내에 저장된 초기 적재 프로그램은 양호하게 검출될 수 있다.
별예로는, 초기 적재 프로그램은 각각의 데이터 단위에 할당된 코래이션 코드(collation code)와 함께 예정 크기의 데이터 단위로 제1 저장 장치의 정상 블록내에 저장될 수 있으며, 전송자는 코래이션 코드에 대한 기준 데이터를 포함할 수 있으며, 기준 데이터와 동일한 코래이션 코드가 제1 저장 장치로부터 판독된 예정 크기의 데이터 단위에 할당되는 경우, 판독된 데이터 단위를 제2 저장 장치로 전송한다. 이러한 구조에 따르면, 정상 블록에 대해 배드 블록으로 착오하는 문제가 해결될 수 있으며, 배드 블록을 포함하는 제1 저장 장치내에 저장된 초기 적재 프로그램이 신속히 검출될 수 있다.
보다 바람직하게는, 전송자는 주어진 데이터에 근거하여 기준 데이터가 변경되도록 정렬된다. 이러한 구조에 따르면, 상이한 CPU 리비젼(revision) 또는 시스템 구성 등이 존재하는 경우에도, 시스템 부트는 CPU 리비젼, 시스템 구성 등에 따라 제1 저장 장치내로부터의 초기 적재 프로그램을 선택함에 의해 양호하게 수행될 수 있다.
전송자는 초기 적재 프로그램의 전송을 제어하기 위한 전송 제어부; 제1 체크 코드에 근거하여 전송되는 초기 적재 프로그램에 대한 제1 에러 검출/수정 공정을 수행하기 위한 제1 에러 처리부; 제1 저장 장치로부터 판독된 메인 프로그램에 대해 제2 체크 코드에 근거하여 제2 에러 검출/수정 공정의 적어도 일부를 수행하기 위한 제2 에러 처리부; 및 초기 적재 프로그램의 전송이 완료될 때 제1 에러 처리부가 수정 불가능한 에러를 검출하지 않은 경우, 전송 완료를 CPU 제어기에 통지하기 위한 통지부를 포함한다. 이러한 구조에 따르면, 메인 프로그램에 대한 에러 검출/수정 공정은 신속하게 수행될 수 있고, 시스템 부트는 신속히 수행될 수 있다.
특히, 제2 에러 처리부는 제1 저장 장치로부터 판독된 메인 프로그램에 대해 제2 체크 코드에 근거하여 신드롬(syndrome)을 연산할 수 있으며, 제2 저장 장치내에 저장된 초기 적재 프로그램에 따라, CPU는 제2 에러 처리부에 의해 연산된 신드롬을 이용함에 의해 제1 저장 장치로부터 판독된 메인 프로그램에 대해 제2 체크 코드에 근거하여 제2 에러 검출/수정 공정의 나머지를 수행할 수 있다. 이러한 구조에 따르면, 소량의 하드웨어만을 이용함에 의해, 메인 프로그램에 대한 에러 검출/수정 공정의 속도를 개선할 수 있다.
별예로는, 통지부가 전송의 완료를 통지한 경우, 전송자는 제1 저장 장치로부터 판독된 프로그램을 처리하기 위한 처리부를 제1 에러 처리부로부터 제2 에러 처리부로 전환한다. 이러한 구조에 따르면, 초기 적재 프로그램의 전송이 완료된 경우, 전송자내의 에러 검출/수정 공정의 내용은 자동으로 전환될 수 있다.
별예로는, 전송자는 제1 저장 장치로부터 판독된 프로그램을 처리하기 위한 처리부를 CPU의 제어하에 제1 에러 처리부로부터 제2 에러 처리부로 전환할 수 있다. 이러한 구조에 따르면, 전송자내의 에러 검출/수정 공정의 내용은 CPU에 의한 소프트웨어 프로세싱을 통해 자동으로 전환될 수 있다.
별예로는, 제2 에러 처리부가 수정불가 에러를 검출한 경우, 전송자는 CPU에게 전송의 실패를 통지하고, 전송 실패의 통지를 수신하는 경우 CPU는 이상 처리 공정(abnormality handling process)을 수행할 수 있다. 이러한 구조에 따르면, 시스템 부트가 실패하는 경우, 시스템은 이상 종료(abnormal end)가 될 수 있으며, 회복 불가능한 에러의 발생이 사용자에게 통지될 수 있다.
초기 적재 프로그램의 전송 외에도, CPU의 제어하에, 전송자는 제1 저장 장치로부터 예정 크기의 데이터 단위로 메인 프로그램을 판독하며, 판독된 각각의 데이터 단위를 제2 저장 장치로 전송한다. 이러한 구조에 따르면, 초기 적재 프로그램은 크기를 줄일 수 있으며, CPU의 부하가 경감될 수 있으며, 시스템 부트는 신속히 수행될 수 있다.
본 발명에 따른 제2 특징은 비휘발성 저장 장치내에 저장된 프로그램을 이용함에 의해 시스템 부트를 수행하기 위한 정보 처리 장치에 관한 것으로서, CPU; 상기 CPU에 의해 실행될 프로그램으로서 제1 체크 코드가 할당된 초기 적재 프로그램 및 제2 체크 코드가 할당된 메인 프로그램을 저장하기 위한 비휘발성 제1 저장 장치 - 상기 제2 체크 코드는 상기 제1 체크 코드를 연산하기 위해 이용되는 것과는 상이한 방법에 의해 연산됨 - ; 상기 제1 저장 장치내에 저장되는 프로그램을 판독하기 위한 전송자; 및 상기 제1 저장 장치로부터 판독된 프로그램을 저장하기 위한 휘발성 제2 저장 장치를 포함하되, 상기 전송자는 상기 제1 저장 장치로부터 초기 적재 프로그램을 판독하고, 상기 제1 체크 코드에 근거하여 상기 초기 적재 프로그램이 제1 에러 검출/수정 공정을 거치도록 하며, 처리된 초기 적재 프로그램을 내부적으로 저장하며, CPU로부터의 판독 요청에 응답하여 저장된 초기 적재 프로그램을 출력하며, CPU는 상기 전송자내에 저장된 초기 적재 프로그램에 따라 동작하는 것을 특징으로 한다. 이러한 구조에 따르면, 시스템 부트는 초기 프로그램을 저장하기 위한 고신뢰성 메모리(예를 들면 ROM)를 채용하지 않고 저신뢰성 메모리(예를 들면 NAND형 플래시 메모리)내에 저장되어 있고, 체크 코드가 할당된 프로그램을 이용하여 안정적으로 수행될 수 있다. 더욱이, 초기 적재 프로그램을 저장하기 위한 메모리 영역을 확보할 필요가 없다.
이러한 경우, 초기 적재 프로그램은 제2 체크 코드에 근거한 에러 검출/수정 공정을 수행하기 위한 에러 처리 프로그램을 포함하며, 시스템 부트 동안, 전송자내에 저장된 초기 적재 프로그램에 따라 CPU는 제1 저장 장치로부터 판독된 메인 프로그램에 대한 제2 체크 코드에 근거한 에러 검출/수정 공정을 수행할 수 있다. 이러한 구조에 따르면, 제1 에러 검출/수정 공정 이후에 초기 적재 프로그램에 따라 메인 프로그램에 대한 복잡한 소프트웨어 기반 제2 에러 검출/수정 공정을 수행하는 것이 가능하다.
본 발명에 따른 제3의 특징은 배드 블록을 포함하는 저장 장치에 기록될 ROM 이미지를 복수개의 데이터에 근거하여 생성하기 위한 ROM 이미지 생성 장치에 관한 것으로서, ROM 이미지가 기록될 저장 장치내에 포함되는 배드 블록의 위치 정보를 보유하기 위한 배드 블록 정보 보유부(bad block information retaining section); 입력 데이터의 유형과 연관된 체크 코드의 유형을 관리하기 위한 코드 정보 관리부; 입력 데이터를 입력 데이터의 유형과 연관된 할당된 체크 코드를 갖기에 적합한 포맷으로 변환하기 위한 이미지 재포맷부; 및 상기 배드 블록 정보 보유부내에 저장된 위치 정보를 참조로 배드 블록을 회피하면서 상기 이미지 재포맷부에 의해 재포맷된 복수개의 데이터를 단일 데이터로 병합하고, 입력 데이터의 유형과 연관된 체크 코드를 상기 병합된 데이터에 할당하기 위한 기록 이미지 생성부를 포함한다. 이러한 구조에 따르면, ROM 이미지를 생성하여 메모리에 기록하고 이를 본 발명의 제1 특징 또는 제2 특징에 따른 정보 처리 장치내에 포함된 제1 저장 장치로서 이용되도록 하는 것이 가능하다. 데이터의 유형과 일치되는 체크 코드가 할당되고, ROM 이미지가 생성되어, 그 데이터는 배드 블록내에 저장되지 않을 것이다.
이러한 경우, ROM 이미지 생성 장치는 코래이션 코드를 보유하기 위한 코래이션 코드 보유부를 더 포함하며, 이미지 재포맷부는 코래이션 코드 보유부내에 보유된 코래이션 코드를 입력 데이터에 할당한다. 이러한 구조에 따르면, 할당된 코래이션 코드를 갖는 ROM 이미지가 생성될 수 있다.
ROM 이미지 생성 장치는 위치 정보를 습득하기 위하여 저장 장치내의 배드 블록의 위치 정보 검색 공정 및 기록 이미지 생성부에 의해 생성된 데이터를 저장 장치에 기록하는 공정을 수행하기 위한 메모리 제어부를 더 포함한다. 이러한 구조에 따르면, ROM 이미지를 실제 메모리에 기록할 수 있는 ROM 이미지 생성 장치가 얻어질 수 있다.
그러므로, 본 발명의 정보 처리 장치에 따르면, 시스템 부트는 초기 프로그램을 저장하기 위한 고신뢰성 메모리(예를 들면 ROM)를 채용하지 않고 저신뢰성 메모리(예를 들면 NAND형 플래시 메모리)내에 저장되어 있고, 체크 코드가 할당된 프로그램을 이용하여 시스템 부트는 안정적으로 수행될 수 있다. 더욱이, 본 발명의 ROM 이미지 생성 장치에 따르면, ROM 이미지를 생성하여 메모리에 기록하고 이를 정보 처리 장치내에 포함된 제1 저장 장치로서 이용되도록 하는 것이 가능하다.
본 발명의 상술한 목적, 특징, 태양 및 장점은 첨부된 도면을 참조한 아래에 상술하는 본 발명의 상세한 설명으로부터 보다 명확해질 것이다.
아래에는 도면을 참조로 본 발명의 다양한 실시예가 기술된다. 각각의 실시예에서, 이전 실시예의 것과 동일한 구성 요소에 대해서는 동일한 숫자로 병기되었으며, 그에 대한 설명은 생략된다.
(제1 실시예)
도 1은 본 발명의 제1 실시예에 따른 정보 처리 장치의 구조를 도시하는 도면이다. 도 1에 도시된 정보 처리 장치(1)는 CPU(10), 제1 내지 제3 저장 장치(11-13), 전송자(14), 및 CPU 제어기(15)를 포함한다.
CPU(10)는 정보 처리 장치(1)의 메인 CPU이다. 전원 동작 이전에 존재하는 초기 상태에서, CPU(10)에 의해 실행될 프로그램이 제1 저장 장치(11)에 저장된다. 초기 상태에서의 제2 및 제3 저장 장치의 내용은 정의되지 않는다. 제1 내지 제3 저장 장치(11 -13)는 데이터 버스(16a - 16c)를 경유해서 상호결선된다. 일단 전원이 동작되는 경우, 제1 저장 장치(11)에 저장된 프로그램은 제2 및 제3 저장 장치(12 및 13)로 전송된다. 보다 상세하게는, 초기 상태에서, 제1 저장 장치(11)는 메인 프로그램(112) 외에도, 초기 세팅 동작을 관장하는 초기 적재 프로그램(Bootstrap Program: 이하 "BSP"로 칭함)(111)을 저장하고 있다. BSP(111)는 제2 저장 장치(12)로 전송되고, 메인 프로그램(112)은 제3 저장 장치(13)로 전송된다. BSP(111)의 전송 완료까지, CPU 제어기(15)는 CPU(10)에 의한 명령어 인출을 중지한다.
제1 저장 장치(11)는 배드 블록(들) 즉, 메모리 기능을 양호하게 수행하지 못하는 블록을 포함할 수 있는 비휘발성 저장 장치로 구성되고, 판독시에 에러 검출/수정 공정을 필요로 한다. 이하, 제1 저장 장치(11)는 NAND형 플래시 메모리이다. 도 2는 NAND형 플래시 메모리에서의 블록과 페이지 사이의 관계를 도시하는 도면이다. 도 2에 도시된 것처럼, NAND형 플래시 메모리의 저장 영역은 다수개의 블록으로 분할되고, 각각의 블록은 다시 복수개의 페이지로 분할된다. NAND형 플래시 메모리의 일 유형에서, 하나의 블록은 32개의 페이지로 구성되고, 각각의 페이지는 예를 들면 512 바이트의 데이터와 16바이트의 예비 영역(spare area)를 합하여 전체 528 바이트로 구성된다. 그러나 NAND형 플래시 메모리의 유형에 따라, 블록 크기 및 페이지 크기는 32 페이지 528 바이트와 다른 값을 취할 수 있다. 제1 저장 장치(11)가 배드 블록을 포함하는 것으로 간주되므로, 제1 저장 장치(11)에 대한 임의의 판독 또는 기록은 배드 블록(들)을 회피하도록 수행되어야 한다.
도 1에 도시된 것처럼, 배드 블록(110)을 제외한 블록에서, 제1 저장 장치(11)는 BSP(111), 메인 프로그램(112), 배드 블록 정보 테이블(113) 및 제1 내지 제3 에러 체크 코드(114 내지 116)를 저장한다. BSP(111)는 적어도 시스템 부트를 수행하기 위해 필요한 시스템 구성(system configuration) 및 메인 프로그램(112)을 제1 저장 장치(11)로부터 제3 저장 장치(14)로 전송하기 위한 메인 프로그램 전송 루틴을 포함한다(이하에 기술되는 도 8a 및 8b 참조). 메인 프로그램(112)는 시스템 부트의 완료 후에 CPU(10)에 의해 실행될 프로그램이다. 일반적으로, 임의의 정보 처리 장치에서 메인 프로그램(112)의 크기는 BSP(111)의 크기보다 크다. 배드 블록 정보 테이블(113)은 배드 블록의 위치를 표시하는 테이블이다(이하에 기술되는 도 4 참조). 제1 내지 제3 에러 체크 코드(114 내지 116)는 BSP(111), 메인 프로그램(112) 및 배드 블록 정보 테이블(113)에 각각 할당되는 에러 체크 코드이다. 제1 내지 제3 에러 체크 코드(114 내지 116)는 동일한 방법에 의해 연산되는데, 반면에 제2 에러 체크 코드(115)는 이들 방법과는 상이한 방법에 의해 연산된다.
도 3은 BSP(111)와 제1 에러 체크 코드(114)의 포맷을 도시하는 도면이다. 도 3에서, D[i]는 정보 비트를 표시하며, P[i]는 에러 체크 코드 비트를 표시한다(여기서 i는 음이 아닌 정수이며, 아래에서 "i"는 동일한 의미임). 도 3에 도시된 것처럼, BSP(111)는 각각의 어드레스의 하위 4 비트에 저장되고, 제1 에러 체크 코드(114)는 각각의 어드레스의 상위 4 비트에 저장된다. 보다 상세하게는, BSP(111)는 시작부터 4비트의 그룹들로 분할되며, 각각의 이들 그룹은 각각의 어드레스의 하위 4비트에 어드레스 오름차순(ascending order of addresses)으로 저장된다. 이렇게 분할된 4 비트의 각각의 그룹에 대해, 4 비트 제1 에러 체크 코드(114)가 (후술하는 연산 방법에 의해) 연산되고, 각각의 어드레스의 상위 4비트에 어드레스 오름차순으로 저장된다. 그러므로, BSP(111) 및 제1 에러 체크 코드(114)는 4비트 단위로 총 8비트 처리된다.
도 4는 배드 블록 정보 테이블(113) 및 제3 에러 체크 코드(116)의 포맷을 도시하는 도면이다. 도 4에서, 각각의 어드레스의 하위 4비트("0" 또는 "1" 값을 가짐)는 정보 비트를 표시하며, P[i]는 에러 체크 코드 비트를 표시한다. 배드 블록 정보 테이블(113)은 각각의 어드레스의 하위 4 비트내에 저장되며, 제3 에러 체크 코드(116)는 각각의 어드레스의 상위 4 비트내에 저장된다. 보다 상세하게는, 배드 블록 정보 테이블(113)은 제1 저장 장치(11)내의 각각의 블록이 양호(정상) 또는 불량인지를 표시하는 정보를 저장하는데, 이에는 한 블록당 1 비트가 소요된다. 배드 블록 정보 테이블(113)은 그 시작부터 4 비트의 그룹들로 분할되며, 각각의 이들 그룹은 각각의 어드레스의 하위 4 비트내에 어드레스 오름차순으로 저장된다. 이렇게 분할된 4 비트의 각각의 그룹에 대해, 4 비트 제3 에러 체크 코드(116)는 BSP(111)의 연산에 이용되는 것과 동일한 방법을 이용함에 의해 연산되며, 각각의 어드레스의 상위 4 비트내에 어드레스 오름차순으로 저장된다.
예를 들면, 256Mbits의 용량과 16Kbyte의 블록 크기를 갖는 NAND형 플래시 메모리가 제1 저장 장치(11)로서 이용되는 경우, 블록의 총 수는 2048이다. 이러한 경우, 제1 저장 장치(11)의 정상 블록 중 하나에서, 2Kbit의 2배 즉, 512byte의 영역이 보호된다(이는 제3 에러 체크 코드(116)를 저장하기 위한 영역을 포함함). 512byte의 보호 저장 영역에, 배드 블록 정보 테이블(113) 및 제3 에러 체크 코드(116)가 저장된다. 각각의 정상 블록에 대해 "0"값 및 각각의 배드 블록에 대해 "1" 값이 배드 블록 정보 테이블(113)내에 저장된다고 할때, 도 4에 도시된 배드 블록 정보 테이블(113)은 제1 저장 장치(11)내의 제5 및 제12 블록이 배드 블록임을 표시한다.
그 유형에 따라 임의의 NAND형 플래시 메모리에 대해 특정 인코딩 방법의 사용이 권장된다. 예를 들면 512 바이트 데이터 페이지 및 16 바이트 예비 영역을 갖는 상술한 NAND형 플래시 메모리의 경우, 적어도 512 바이트의 데이터에 대해 1 비트 에러 수정 및 2 비트 에러 검출이 수행되도록 하는 인코딩을 수행하는 것이 바람직하다. 따라서, 메인 프로그램(112)은 그 시작부터 512 바이트의 그룹들로 분할되고, 이렇게 분할된 512 바이트의 그룹 각각에 대해, NAND형 플래시 메모리에 대해 권장되는 인코딩 방법에 의해 연산된 제2 에러 체크 코드(115)(약 24비트)가 할당된다.
제1 저장 장치(11)내의 블록이 양호(정상) 또는 불량인가에 대한 정보는 제1 저장 장치(11)에 기록을 수행하기 이전에, 예정된 방법에 의해 제1 저장 장치(11)에 액세스함에 의해 수득될 수 있다. 제1 저장 장치(11)에 기록을 수행하는 경우, 기록은 배드 블록에 대해 수행되지 않고 정상 블록에 대해서만 수행된다는 것을 보장할 필요가 있다. 이하의 설명에서, BSP(111)는, 제1 저장 장치(11)내에 포함된 정상 블록들 중 블럭 번호가 가장 작은 하나 그 이상의 연속 블록내에, 제1 페이지로부터 연속해서 저장된다고 설정한다. 또한 메인 프로그램(112)은 제1 저장 장치(11)내에 포함된 정상 블록들 중에서 BSP(111)가 저장되는 블록 다음의 하나 이상의 연속 블록내에 제1 페이지로부터 연속해서 저장되는 것으로 설정한다.
제2 저장 장치(12)는 임의의 특별한 초기 세팅 없이 CPU(10) 및 전송자(14)에 의해 억세스될 수 있는 휘발성 메모리이다. BSP(111)가 상술한 것처럼 제2 저장 장치(12)로 전송되므로, BSP(111)의 크기보다 큰 용량을 갖는 메모리가 제2 저장 장치(12)로서 이용된다. CPU(10)가 제2 저장 장치(12) 상에서 BSP(111)의 수행을 완료한 경우에는 제2 저장 장치(12)가 불필요해지므로, 정보 처리 장치(1)는 제2 저장 장치(12)의 역할을 하는 전용 메모리를 구비하기보다는, 시스템 LSI에 내장된 정적 RAM 등을 제2 저장 장치(12)로서 이용할 수 있다. 아래의 설명에서 제2 및 제3 저장 장치(12 및 13)가 편의상 별개의 저장 장치로 인식되지만, 제2 및 제3 저장 장치(12 및 13)는 단일 저장 장치내에 보호되는 분리된 저장 영역으로 대치될 수 있다. 이러한 경우, 시스템 부트가 완료된 이후에, 제2 저장 장치(12)로서 보호되는 저장 영역은 예를 들면 작업 영역(work area)으로서 이용될 수 있다.
메인 프로그램(112)이 상술한 것처럼 제3 저장 장치(13)로 전송되므로, 제2 저장 장치(12)의 것보다 큰 용량을 갖는 메모리가 제3 저장 장치(13)로서 이용된다. 그러므로, 제3 저장 장치(13)는 바람직하게는 랜덤 억세스를 허용하며 그 비트당 가격이 낮은 예를 들면 SDRAM과 같은 휘발성 저장 장치이다.
도 1에 도시된 것처럼, 전송자(14)는 전송 제어부(141), 에러 처리부(142) 및 통지부(143)를 포함한다. 전송 제어부(141)는 제1 저장 장치(11)내에 저장된 BSP(111)를 제2 저장 장치(12)로 자동으로 전송하는 기능 및 CPU(10)의 제어하에 제1 저장 장치(11)내에 저장된 메인 프로그램(112)을 판독하는 기능을 갖는다. BSP(111)가 제1 저장 장치(11)로부터 제2 저장 장치(12)로 전송되는 경우, 에러 처리부(142)는 제1 에러 체크 코드(114)에 근거하여 전송될 BSP(111)에 대한 에러 검출/수정 공정을 수행한다. BSP(111)의 전송이 양호하게 완료된 경우, 통지부(143)는 전송의 양호한 완료를 표시하는 전송 완료 표시 신호(144)를 CPU 제어기(15)로 출력한다.
통지부(143)로부터 출력된 전송 완료 통지 신호(144)에 근거하여, CPU 제어기(15)는 CPU 동작 제어 신호(151)를 출력한다. 도 5 및 도 6은 CPU 제어기(15)의 예시적 구조를 도시하는 도면이다. 도 5의 구조에서, CPU 제어기(15)는 전송 완료 통지 신호(144)가 동작될 때까지, CPU(10)에 대한 클럭 신호를 차단(mask)하여, CPU(10)를 중지시킨다. 전송 완료 통지 신호(144)가 동작되는 경우, CPU 제어기(15)는 더 이상 클럭 신호를 차단하지 않고, CPU(10)는 작동을 시작한다. 도 6에 도시된 구조에서, CPU 제어기(15)는 전송 완료 통지 신호(144)가 동작될 때까지 CPU(10)에 대한 리셋 신호를 통과시켜서, CPU(10)의 작동을 중지시킨다. 전송 완료 통지 신호(144)가 동작되는 경우, CPU 제어기(15)는 리셋 신호를 차단하여 CPU(10)는 작동을 시작한다. CPU 제어기(15)의 그러한 동작을 바탕으로, 전송 완료 통지 신호(144)가 동작할 때까지 CPU(10)에 의한 명령어 인출은 중지된다.
아래에는, 전송자(14)의 상세한 사항이 기재된다. 전원이 동작되는 경우, 전송자(14)는 BSP(111)가 저장되는 제1 저장 장치(11)내의 위치를 획득하고, 이 저장된 위치로부터 BSP(111)를 페이지 단위로 순차적으로 판독하고, BSP(111)를 제2 저장 장치(12)에 전송한다. 보다 상세하게는, 전원이 동작되는 경우, 전송 제어부(141)는 제1 저장 장치(11)의 저장된 내용을 처음부터 순차적으로 판독한다. 에러 처리부(142)는 도 3에 도시된 것과 같이 8 비트의 각각의 처리 단위에 대해 에러 검출/수정 공정을 수행한다. 전송 제어부(141)는 에러 검출/수정 공정 이후 결과인 각각의 4 비트 BSP(111)를 예정된 전송 단위로 묶는데, 이는 다음으로 제2 저장 장치(12)로 전송된다. 여기서, 제2 저장 장치(12)내의 데이터에 대한 전송 수신지(destination)는 전원 동작 이후 CPU(10)가 최초로 명령을 인출하는 어드레스로부터 시작하여 순차적으로 업데이트된다. 본 실시예에서, 전송자(14)는 16비트의 전송 단위로 전송을 수행하며, CPU(10)가 최초로 명령을 인출하는 어드레스는 제2 저장 장치(12)의 제1 어드레스라고 설정한다.
이제, 에러 처리부(142)에서 수행될 에러 검출/수정 공정이 설명된다. BSP(111)에 할당될 제1 에러 체크 코드(114)는 제1 저장 장치(11)의 권장 사양을 만족하는 임의의 코드일 것이다. 예를 들면 512 바이트 데이터 페이지와 16 바이트의 예비 영역을 포함하는 상술한 NAND형 플래시 메모리의 경우, 512 바이트의 데이터에 대해 1 비트 에러 수정 및 2 비트 에러 검출이 수행되도록 하는 인코딩을 수행하는 것이 바람직하다. 이러한 경우, 512 바이트 미만의 정보 비트에 대해 1 비트 에러 수정 및 2 비트 에러 검출을 수행하도록 하는 코드를 제1 에러 체크 코드(114)로서 선택함에 의해 최소한의 요구 사항이 만족될 수 있다.
본 실시예에서, 1 비트 에러 수정 및 2 비트 에러 검출에 의해 제공된 것보다 더 높은 에러 검출/수정 공정 능력을 제공하는 코드가 제1 에러 체크 코드(114)에 대해 이용되어, 1 비트 에러 수정 및 2 비트 에러 검출에서 예상되는 것보다 더 많은 결함이 제1 저장 장치(11)내에 포함되는 경우라도 시스템 부트는 양호하게 수행될 수 있다. 보다 상세하게는, 제1 에러 체크 코드(114)는 아래의 수학식 1에 의해 표현되는 BSP(111)에 근거한 생성자 매트릭스 G를 이용함에 의해 연산된다. 아래의 설명에서, D[0] 내지 D[3]는 BSP(111)의 4 비트 부분을 표시하고; P[0] 내지 P[3]는 D[0] 내지 D[3]에 할당된 제1 에러 체크 코드를 표시하며, 배타적 논리합이 매트릭스 연산의 각각의 합산에 이용된다.
[P[0]P[1]P[2]P[3]] = [D[0]D[1]D[2]D[3]]G
여기서 G=
수학식 1에 의해 얻어진 코드 [D[0]D[1]D[2]D[3]P[0]P[1]P[2]P[3]]의 신드롬[X[0]X[1]X[2]X[3]]이 수학식 2에 설명된 것처럼 체크 메트릭스 H를 이용함에 의해 연산된다.
[X[0]X[1]X[2]X[3]]=[D[0]D[1]D[2]D[3]P[0]P[1]P[2]P[3]]HT
여기서 H=; HT는 H의 전치 매트릭스.
다음으로, 에러 처리부(142)는 이렇게 얻어진 X[3] 내지 X[0]의 값에 따라 아래의 공정을 수행한다(여기서 X={αβδ}는 X[3]=;α X[2]=β; X[1]=; X[0]=δ를 의미함).
a) X={0000}인 경우, 에러가 없고; 에러 수정이 수행되지 않음.
b) X={0101}인 경우, D[0]은 에러이며, D[0]은 인버트됨.
c) X={0110}인 경우, D[1]은 에러이며, D[1]은 인버트됨.
d) X={1001}인 경우, D[2]은 에러이며, D[2]은 인버트됨.
e) X={1010}인 경우, D[3]은 에러이며, D[3]은 인버트됨.
f) X={0001}인 경우, P[0]은 에러이며, 에러 수정이 수행되지 않음.
g) X={0010}인 경우, P[1]은 에러이며, 에러 수정이 수행되지 않음.
i) X={0100}인 경우, P[2]은 에러이며, 에러 수정이 수행되지 않음.
j) X={1000}인 경우, P[3]은 에러이며, 에러 수정이 수행되지 않음.
b) 내지 e)의 경우는 정보 비트내에 발생하는 1 비트 에러가 수정된 경우이다. f) 내지 j)의 경우에는 1 비트 에러가 에러 체크 코드내에만 존재하므로 정보 비트가 수정되지 않은 경우이다. X가 상술한 것과는 다른 임의의 값을 취하는 경우, 에러 처리부(142)는 수정 불가능한 에러가 발생한 것으로 판단한다. 제1 에러 체크 코드(114)에 대한 상술한 연산 방법은 단지 예를 든 것이며, 임의의 다른 연산 방법이 이용될 수 있다.
도 7은 전원 동작 이후의 전송 제어부(141)의 동작을 도시하는 흐름도이다. 도 7에 도시된 공정에 따르면, 전송 제어부(141)는 BSP(111)가 저장되는 제1 저장 장치(11)의 위치를 수득하고, 이 저장된 위치로부터 BSP(111)를 페이지 단위로 순차적으로 판독하고, BSP(111)를 제2 저장 장치(12)로 전송한다. 여기서 BSP(111)의 크기는 1 블록 또는 그 미만으로 설정한다. 변수 B는 판독되는 블록 번호(block number)를 표시하고, 변수 P는 판독되는 페이지 번호를 표시한다.
전원이 동작되는 경우, 전송 제어부(141)는 먼저 B 및 P를 0으로 초기화한다. 결과적으로, 제1 저장 장치(11)내의 판독 위치는 제1 블록(즉, "블록 0")내의 제1 페이지(즉, "페이지 0")로 설정된다. 다음으로, 전송 제어부(141)는 제1 저장 장치(11)내의 B번째 블록내의 P 번째 페이지를 판독하고, 이 페이지를 제2 저장 장치(12)내의 예정된 어드레스로 전송한다(단계 S102). 이때, 에러 처리부(142)는 전송된 페이지를 예정된 단위의 프로세싱(이 예에서는 각각 8 비트로 설정)으로 분할하고, 각각의 프로세싱 단위에 대한 에러 검출/수정 공정을 수행한다. 임의의 수정 가능한 에러가 각각의 프로세싱 단위내에 포함되는 경우, 에러 처리부(142)는 에러를 수정한다. 각각의 프로세싱 단위내에 수정 불가능한 에러(즉, 수정 능력을 넘어서는 에러)가 각각의 프로세싱 단위내에 포함된 경우, 에러 처리부(142)는 이 사실을 내부적으로 저장한다.
다음으로, 전송 제어부(141)는 P가 BSP(111)내의 페이지의 수(이하 "M"으로 칭함)보다 작은지 여부를 판단한다(단계 S103). 판단 결과가 "예"인 경우, 전송 제어부(141)는 P에 1을 더하고(단계 S106), 단계 S102로 진행된다. 그러므로, 단계 S102에서의 전송이 연속으로 M번 실행된다. 단계 S103의 결과가 "아니오"인 경우, 전송 제어부(141)는 수정 불가능한 에러가 단계 S102에서 M 페이지의 전송 동안 검출되었는지 여부를 판단한다(단계 S104). 판단의 결과가 "아니오"인 경우, 전송 제어부(141)는 BSP(111)의 전송이 성공인 것으로 판단하고, 공정을 종료한다. 이러한 경우, 통지부(143)는 전송 완료 통지 신호(144)를 CPU 제어기(15)로 출력한다.
단계 S104의 판단의 결과가 "예"인 경우, 전송 제어부(141)는 B가 검색될 블록의 수(이하 "N"으로 칭함)보다 작은지 여부를 판단한다(단계 S105). 판단의 결과가 "아니오"인 경우, 전송 제어부(141)는 BSP(111)의 전송이 실패한 것으로 판단하고, 공정을 종료한다. 단계 S105의 판단의 결과가 "예"인 경우, 전송 제어부(141)는 B에 1을 더하고, P를 0으로 설정하고(단계 S107), 단계 S102로 진행된다. 그러므로, 전송 제어부(141)는 최대 N 블록에 대해 BSP(111)를 검색한다. M 및 N의 값은 전송자(14)내에서 고정값일 수 있고, 또는 스위치 등에 의해 가변될 수도 있음에 유의한다.
통지부(143)로부터 전송 완료 통지 신호(144)를 수신하는 경우, CPU 제어기(15)는 BSP(111)의 전송이 양호하게 완료된 것으로 인지하고, CPU 동작 제어 신호(151)를 시프트하여 CPU(10)의 작동을 가능하게 한다. 결과적으로, CPU(10)는 제2 저장 장치(12)로부터 명령어 인출을 시작한다. 반면에, BSP(111)의 전송이 양호하게 완료되지 않은 경우, 전송 완료 통지 신호(144)는 출력되지 않고, CPU 동작 제어 신호(151)의 시프트가 발생하지 않고, CPU(10)는 제2 저장 장치(12)로부터 명령어 인출을 시작하지 않는다. CPU(10)에 의한 명령어 인출을 CPU 제어기(15)에 의해 제어하기 위한 방법은 예를 들면 CPU(10)로 공급되는 클럭 신호를 제어하는 방법(도 5)과 CPU(10)에 공급되는 리셋 신호를 제어하는 방법(도 6)을 포함한다.
아래에는, BSP(111)의 상세한 설명이 기술된다. BSP(111)는 시스템 구성을 수행하기 위한 데이터, 메인 프로그램 전송 루틴 및 배드 블록 정보 테이블(113)(또는 블록 정보 테이블(113)에 대한 포인터)을 포함한다. 메인 프로그램(112)이 제1 저장 장치(11)의 정상 블록내에 저장되므로, 배드 블록 정보 테이블(113)은 제1 저장 장치(11)내의 메인 프로그램(112)의 저장 위치를 표시하는 저장 위치 정보로서 인식된다.
도 8a 및 8b는 BSP(111)의 예시적 구조를 도시하는 도면이다. 도 8a에 도시된 BSP(111)는 구성부(117), 메인 프로그램 전송부(118), 및 배드 블록 테이블 포인터(119)를 포함한다. 구성부(117)는 버스 제어기에서 세팅될 데이터와 같은 기본적 시스템 구성을 수행하기 위해 필요한 데이터를 포함한다. 구성부(117)에 포함된 데이터에 근거하여, 예를 들면 제3 저장 장치(13)에 억세스하기 위해 필요한 메모리 제어기의 세팅이 수행된다. 메인 프로그램 전송부(118)는 제2 에러 체크 코드(115)에 근거하여 에러 검출/수정 공정을 수행하는 에러 처리 프로그램을 포함하는 메인 프로그램 전송 루틴을 포함한다. 배드 블록 정보 테이블 포인터(119)는 배드 블록 정보 테이블(113)의 제1 어드레스를 포함한다.
별예로는, 도 8b에 도시된 것처럼, BSP(111)는 배드 블록 정보 테이블 포인터(119) 대신에 배드 블록 정보 테이블(113)을 포함할 수 있다. 도 8b의 구조가 채택된 경우에는, 도 8a의 구조가 채택된 경우에 비해 BSP(111)의 크기는 커진다. 그러나, BSP(111)의 전송의 완료 이후에 배드 블록 정보 테이블(113)에 억세스하는 경우, CPU(10)는 제1 저장 장치(11)가 아닌 제2 저장 장치(12)에만 억세스할 필요가 있다. 그러므로, 도 8b의 구조가 채택되는 경우에는, 메인 프로그램(112)을 제3 저장 장치(13)로 전송하는 공정이 신속하게 수행될 수 있다.
도 9는 CPU(10)에 의한 초기 적재 공정을 도시하는 흐름도이다. BSP(111)의 전송이 완료되고 전송 완료 통지 신호(144)가 출력된 이후에, CPU(10)는 제2 저장 장치(12) 상에서 BSP(111)를 실행하여 도 9에 도시된 공정을 수행한다. 도 9에서, 변수 B는 판독되는 블록 번호를 표시하고, 변수 P는 판독되는 페이지 번호를 표시한다.
BSP(111)의 전송이 완료된 경우, CPU(10)는 먼저 BSP(111)의 시스템 구성부(117)내에 저장된 데이터를 이용함에 의해 시스템 구성을 수행한다(단계 S201). 단계 S201에서, 예를 들면, 제3 저장 장치(13)에 억세스하기 위하여 다양한 파라미터들이 메모리 인터페이스 회로 등에서 세팅된다.
다음으로, CPU(10)는 BSP(111)로부터 배드 블록 정보 테이블 포인터(119)를 판독하고, 이를 이용함에 의해, 배드 블록 정보 테이블(113)을 제1 저장 장치(11)로부터 제3 저장 장치(13)로 복사한다(단계 S202). 이때, 전송자(14)내의 에러 처리부(142)는 제1 저장 장치(11)로부터 판독된 배드 블록 정보 테이블(113)에 대한 제1 에러 체크 코드(114)에 근거한 에러 검출/수정 공정을 수행한다. 도 8b에 도시된 BSP(111)가 채택되는 경우, 배드 블록 정보 테이블(113)이 제2 저장 장치(12)내에 이미 저장되어 있으므로, 단계 S202의 공정은 수행되지 않음에 유의한다. 다음으로, CPU(10)는 BSP(111)을 포함하는 블록의 수를 B로 설정한다(단계 S203).
다음으로, 제3 저장 장치(13) 상의 배드 블록 정보 테이블을 참조하여, CPU(10)는 다음 정상 블록의 수를 결정하고 B를 이 수로 설정하고(단계 S204), P를 0으로 설정한다(단계 S205). 다음으로, CPU(10)는 복사 기능을 호출하여 제1 저장 장치(11)내의 B 번째 블록내의 P 번째 페이지를 제3 저장 장치(13)내의 예정된 어드레스로 복사한다(단계 S206). 다음으로, 에러 검출/수정 공정을 수행하기 위한 준비 단계로서, CPU(10)는 단계 S206에서 복사된 페이지에 대한 신드롬을 연산한다(단계 S207). 다음으로, 단계 S207에서 연산된 신드롬을 참조로, CPU(10)는 소프트웨어 수단에 의해 에러 검출/수정 공정을 수행한다(단계 S208). 단계 S208의 공정을 통해, 판독된 페이지에 포함된 임의의 수정 가능한 에러는 수정된다.
다음으로, CPU(10)는 단계 S208의 에러 검출/수정 공정 동안 수정 불가능한 에러(수정 능력을 넘어서는 에러)가 발견되었는지 여부를 판단한다(단계 S209). 판단 결과가 "아니오"인 경우, CPU(10)는 P가 1 블록의 페이지의 수보다 작은지 여부를 판단한다(단계 210). 판단 결과가 "예"인 경우, CPU(10)는 P에 1을 더하고(단계 S212), 단계 S206으로 진행된다. 단계 S210의 판단의 결과가 "아니오"인 경우, CPU(10)는 B가 BSP(111)내의 블록의 수보다 작은지 여부를 판단한다(단계 S211). 판단의 결과가 "예"인 경우, CPU(10)는 B에 1을 더하고, P를 0으로 설정하며(단계 S213), 단계 S204로 진행된다.
단계 S211에서의 판단의 결과가 "아니오"인 경우, CPU(10)는 메인 프로그램(112)의 전송이 성공임을 판단한다. 이러한 경우, CPU(10)의 제어는 제3 저장 장치(13) 상의 메인 프로그램(112)로 분기된다. 반면에, 단계 S209의 판단의 결과가 "예"인 경우, CPU(10)는 메인 프로그램(112)의 전송이 실패한 것으로 판단한다. 이러한 경우, CPU(10)는 어떠한 공정도 수행하지 않고, 무한 루프로 들어간다.
그러므로, CPU(10)는 제2 저장 장치(12) 상의 BSP(111)를 실행하여 제1 저장 장치(11)의 정상 블록에 저장된 메인 프로그램(112)을 제3 저장 장치(13)로 전송한다. 다음으로, 메인 프로그램(112)의 전송이 성공이 되는 경우, CPU(10)는 제3 저장 장치(13) 상의 메인 프로그램(112)을 실행하도록 처리하고; 메인 프로그램(112)의 전송이 실패한 경우, CPU(10)는 동작을 중지한다.
상술한 것처럼, 정보 처리 장치(1)에 따르면, 시스템 부트는, 초기 프로그램을 저장하기 위한 고신뢰성 메모리(예를 들면 ROM)를 채용하지 않고 저신뢰성 메모리(예를 들면 NAND형 플래시 메모리)내에 저장되어 있고, 체크 코드가 할당된 프로그램을 이용하여 안정적으로 수행될 수 있다. 제1 저장 장치내에 저장된 메인 프로그램이 제2 저장 장치내에 저장된 초기 적재 프로그램에 따라 제2 저장 장치로 전송되고 제2 체크 코드에 근거하여 에러 검출/수정 공정이 수행되므로, 메인 프로그램에 대한 복잡한 소프트웨어 기반의 에러 검출/수정 공정을 수행하는 것이 가능하다.
상술한 정보 처리 장치(1)에서, CPU(10)에 의한 명령어 인출은 CPU 제어기(15)에 의해 제어된다. 별예로, 도 10에 도시된 정보 처리 장치(2)에 예시된 것처럼, CPU(10)에 의한 명령어 인출은 데이터 버스(16a)에 대한 중재자(arbiter: 20)를 채용함에 의해 제어될 수 있다. 도 10에서, 중재자(20)는 제2 저장 장치(12)를 억세스하는데 필요한 데이터 버스(16a)에 대한 억세스 권리를 중재한다. 보다 상세하게는, 전원 동작 이후에, 중재자(20)는 전송 완료 통지 신호(144)가 출력될 때까지, 데이터 버스(16a)에 대한 높은 우선 순위의 억세스 권리를 전송자(14)에게 준다. BSP(111)의 전송이 완료되어 전송 완료 통지 신호(144)가 출력되는 경우, 중재자(20)는 데이터 버스(16a)에 대한 높은 우선 순위의 억세스 권리를 CPU(10)에게 준다.
결과적으로, CPU(10)은 전원 동작 후에 제2 저장 장치(12)로부터 즉시 명령어를 인출하려고 하지만, BSP(111)의 전송 완료시까지 중재자(20)가 동작하여 CPU(10)가 데이터 버스(16a)에 대한 억세스권을 가지지 않도록, 즉 제2 저장 장치(12)에 억세스할 수 없도록 한다. 그러므로, CPU(10)에 의한 명령어 인출이 시작되기 전에, BSP(111)의 전송의 완료를 대기해야만 한다. 그러므로, 정보 처리 장치(2)는 정보 처리 장치(1)에 의해 제공되는 것과 동일한 효과를 제공한다.
정보 처리 장치(1)는 순차적으로 제1 저장 장치(11)내의 제1 블록으로부터 BSP(111)를 검색하고 M 페이지의 전송동안 수정불가능한 에러가 검출되었는지 여부에 따라 배드 블록을 검출하는 배드 블록 검출 방법을 채택한다. 그러나, 이러한 방법은 우연히 에러 검출/수정 공정을 통과한 특정 값이 제조시 초기값 데이터로서 배드 블록내에 저장되게 되는 경우에는 배드 블록을 정상 블록으로 착각할 수 있다. 이러한 문제를 해결하기 위해서는, 제1 저장 장치(11)에 기록을 수행할 때, 수정 불가능한 에러를 포함하는 데이터는 배드 블록에 반복적으로 기록되도록 한다. 결과적으로, 수정 불가능한 에러는 M 페이지 전송 동안 반드시 검출될 것이며, 배드 블록을 정상 블록으로 착각하는 문제는 방지될 수 있다.
(제2 실시예)
도 11은 본 발명의 제2 실시예에 따른 정보 처리 장치의 구조를 도시하는 도면이다. 도 11에 도시된 정보 처리 장치(3)는 제1 실시예의 정보 처리 장치(1)(도 1)와 동일하되, 전송자(14)가 전송자(30)로 대체되고 코래이션 코드(121)가 BSP(111)에 추가된 것만 상이하다. 정보 처리 장치(3)는 코래이션 코드(121)를 이용함에 의해 배드 블록을 정상 블록으로 착각하는 문제를 해결한다.
전송자(30)는 제1 실시예의 전송자(14)와 동일하되, 전송 제어부(141)가 전송 제어부(311)로 대체되고, 코래이션 코드 보유부(301) 및 코래이션 코드 비교부(302)를 포함하는 전송 데이터 판단부(303)가 추가되는 것만 상이하다. 코래이션 코드 보유부(301)는 시스템에서 유일하게 결정되는 코래이션 코드를 저장한다. 코래이션 코드로서 이용되는 값에 대해 별도의 제한은 없지만, 다른 임의의 값들에 대해 구별되도록 특유한 값(예를 들면, "0" 비트 및 "1" 비트의 혼합으로 구성된 값)을 이용하는 것이 바람직하다. 본 실시예에서, 2 바이트 코래이션 코드 "5a3c"(16진수)가 예로써 이용된다.
BSP(111)가 제1 저장 장치(11)에 기록되는 경우, 코래이션 코드 보유부(301)내에 보유되는 코래이션 코드와 동일한 코래이션 코드(121)가 BSP(111)에 할당된다. 도 3과 유사하게 도 12는 코래이션 코드가 할당된 BSP(111)와 제1 에러 체크 코드(114)의 포맷을 도시하는 도면이다. BSP(111)는 제1 저장 장치(11)의 하나 이상의 블록의 복수개의 페이지에 걸쳐 저장된다. BSP(111)의 일부가 저장되는 각각의 페이지의 데이터(512 바이트)의 하위 4 바이트에서, 코래이션 코드(121)는 에러 체크 코드와 함께 저장된다. 보다 상세하게는, 2 바이트 코래이션 코드(121)는 4 비트의 4개 그룹으로 분할되며, 각각의 이들 그룹은 각각의 페이지의 최종 4 바이트의 하위 4비트에 저장된다. 코래이션 코드(121)의 각각의 4 비트에 대해, 수학식 1을 이용하여 4 비트 에러 체크 코드가 연산되고, 각각의 페이지의 최종 4 바이트의 상위 4 비트에 코래이션 코드에 대한 에러 체크 코드(122)로서 저장된다. 예를 들면, 코래이션 코드가 값 "5a3c"(16진수)를 갖는 경우, M[15]=0; M[14]=1; M[13]=0; M[12]=1; P[2047]=1; P[2046]=1; P[2045]=0; P[2044]=0 이다.
도 13은 도 7과 유사하게 전원 동작 이후의 전송 제어부(311)의 동작을 도시하는 흐름도이다. 제1 실시예에서의 전송 제어부(141)의 경우와 같이, 도 13에 도시된 공정에 따라, 전송 제어부(311)는 제1 저장 장치(11)내의 BSP(111)의 저장된 위치를 수득하고, 순차적으로 페이지 단위로 이 저장된 위치로부터 BSP(111)를 판독하고, BSP(111)를 제2 저장 장치(12)로 전송한다. 다시, BSP(111)의 크기는 1 블록 또는 그 미만으로 설정한다. 변수 B 및 P의 의미는 도 7에 대해 정의된 것과 동일하다.
전원이 동작되는 경우, 전송 제어부(311)는 B 및 P를 0으로 초기화한다(단계 S301). 다음으로, 전송 제어부(311)는 P가 BSP(111)의 크기 M보다 작은지 여부를 판단한다(단계 S302). 판단 결과가 "아니오"인 경우, 전송 제어부(311)는 BSP(111)의 전송이 성공임을 판단하고, 공정을 종료한다. 이러한 경우, CPU 제어기(15)는 전송 완료 통지 신호(144)를 출력한다.
단계 S302의 판단 결과가 "예"인 경우, 전송 제어부(311)는 제1 저장 장치(11)내의 B번째 블록의 P번째 페이지를 판독하고, 이 페이지를 제2 저장 장치(12)내의 예정된 어드레스로 전송한다(단계 S303). 이때, 에러 처리부(142)는 도 7의 단계 S102와 동일한 에러 검출/수정 공정을 수행한다. 코래이션 코드 비교부(302)는 전송된 페이지의 데이터(512 바이트)의 하위 4 바이트내에 저장된 코래이션 코드(121)와 코래이션 코드 보유부(301)내에 보유된 코래이션 코드(즉, 코래이션 코드가 비교할 기준값)와 비교한다.
다음으로, 코래이션 코드 비교부(302)가 코래이션 코드(121)가 코래이션 코드에 대한 기준값과 일치함을 발견한지 여부를 전송 제어부(311)는 판단한다(단계 S304). 판단 결과가 "예"인 경우, 전송 제어부(311)는 단계 S303에서의 한 페이지의 전송 동안 수정 불가능한 에러가 검출되었는지 여부를 판단한다(단계 S305). 판단 결과가 "아니오"인 경우, 전송 제어부(311)는 P에 1을 더하고(단계 S307), 단계 S302로 진행한다.
단계 S304에서의 판단의 결과가 "아니오"인 경우, 전송 제어부(311)는 B가 검색된 블록의 수보다 작은지 여부를 판단한다(단계 S306). 판단 결과가 "예"인 경우, 전송 제어부(311)는 B에 1을 더하고, P를 0으로 설정하고(단계 S308), 단계 S302로 진행한다.
단계 S305에서의 판단의 결과가 "예"인 경우, 또는 단계 S306에서의 판단의 결과가 "아니오"인 경우, 전송 제어부(311)는 BSP(111)의 전송이 실패한 것으로 판단하고, 공정을 종료한다. 이러한 경우, CPU 제어기(15)는 전송 완료 통지 신호(144)를 출력하지 않는다.
초기 적재 프로그램의 전송이 성공 또는 실패인지 여부에 대해서, 정보 처리 장치(3)는 제1 실시예의 정보 처리 장치(1)과 유사하게 동작한다. 그러므로, 정보 처리 장치(3)는 제1 실시예의 정보 처리 장치(1)의 의해 제공된 것과 동일한 효과를 제공한다. 또한, 코래이션 코드의 이용은 배드 블록을 정상 블록으로 착각하는 문제를 해결하여, 제1 저장 장치내에 저장된 배드 블록을 포함할 가능성이 있는 초기 적재 프로그램의 신속한 검출을 가능하게 한다.
정보 처리 장치(3)에 있어서, 도 5 또는 도 6에 도시된 CPU 제어기(15) 또는 도 10에 도시된 중재자(20)가 CPU(10)에 의해 인출되는 제어 명령을 채택하기 위해 택일적으로 이용될 수 있다. 이는 후술하는 제3 내지 제5 실시예에서도 동일하게 적용된다.
정보 처리 장치는 도 14에 도시된 정보 처리 장치(4)에서 예시된 것처럼 코래이션 코드가 외부로부터 재기록되도록 하는 전송자를 포함할 수 있다. 도 14에서, 전송자(40)는 데이터가 데이터 버스(16d)를 경유하여 코래이션 코드 보유부(301)에 기록될 수 있도록 구성된다. 제1 저장 장치(11)는 2개 유형의 BSP(111a 및 111b)와 이들 2개 유형의 BSP에 대해 동일한 방법을 이용함에 의해 연산될 수 있는 제1 에러 체크 코드(114a 및 114b)를 저장한다. BSP(111a) 및 제1 에러 체크 코드(114a)는 도 11에 도시된 정보 처리 장치(3)내의 BSP(111) 및 제1 에러 체크 코드(114)에 대응한다. BSP(111b)는 BSP(111a)와는 상이한 BSP 예를 들면, 상이한 리비젼의 CPU에 대한 BSP 또는 상이한 시스템 구성을 갖는 정보 처리 장치에 대한 BSP 이다. BSP(111a 및 111b)는 제1 저장 장치(11)에 저장되며, 코래이션 코드(121a 및 121b)는 각각 이에 할당된다. 코래이션 코드(121a)의 것과는 상이한 값이 코래이션 코드(121b)에 대해 이용된다.
코래이션 코드 보유부(301)에 보유된 코래이션 코드(즉, 코래이션 코드가 대비될 기준값)는 CPU(10)의 리비젼 또는 시스템 구성에 따라 재기록될 수 있다. 전원이 동작되는 경우, 전송자(40)는 코래이션 코드 보유부(301)내에 보유된 코래이션 코드에 따라 BSP(111a) 또는 BSP(111b) 중 하나를 선택하며, 선택된 BSP를 제2 저장 장치(12)로 전송한다. CPU(10)는 제2 저장 장치(12) 상의 BSP(111a) 또는 BSP(111b)에 따라 동작한다. 그러므로, 상이한 CPU 리비젼 또는 시스템 구성 등이 있는 경우라도, 시스템 부트는 CPU 리비젼, 시스템 구성 등에 따라 단일 제1 저장 장치(11)내에서부터 선택된 최적의 BSP를 이용함에 의해 적절히 수행될 수 있다. 상술한 정보 처리 장치(4)가 동일한 방법을 이용함에 의해 BSP(111a 및 111b)에 대해 제1 에러 체크 코드(114a 및 114b)를 연산하는 것으로 기술되어 있지만, 상이한 방법에 의해 연산될 수 있는데, 이 경우 에러 체크 코드 각각에 대한 에러 검출/수정은 에러 처리부(142)에 의해 수행된다.
(제3 실시예)
도 15는 본 발명의 제3 실시예에 따른 정보 처리 장치의 구조를 도시하는 도면이다. 도 15에 도시된 정보 처리 장치(5)는 제1 실시예의 정보 처리 장치(1)(도 1)와 동일하되, 전송자(14)는 전송자(50)로 대체된다. 정보 처리 장치(5)는 메인 프로그램(112)에 대한 에러 검출/수정 공정의 일부가 전송자(50)에서 수행되는 것을 특징으로 한다.
전송자(50)는 제1 실시예의 전송자(14)와 동일하되, 에러 처리부(142)는 제1 및 제2 에러 처리부(501 및 502)와 에러 처리 선택부(503)로 대체된다. 제1 에러 처리부(501)는 제1 및 제3 에러 체크 코드(114 및 116)에 근거하여 에러 검출/수정 공정을 수행한다. 제1 에러 공정부(501)에서의 에러 검출/수정 공정은 예를 들면 수학식 2를 이용하는 예정된 단위(본 실시예에서는 8비트)의 공정에 의해 수행된다.
제2 에러 처리부(502)는 제2 에러 체크 코드(115)에 근거하여 에러 검출/수정 공정의 일부를 수행한다. 제2 에러 체크 코드(115)는 데이터의 512 바이트에 근거하여 연산되는 16바이트 에러 체크 코드라고 설정하면, 제2 에러 체크 코드(115)에 근거한 에러 검출/수정 공정은 제1 및 3 에러 체크 코드(114 및 116)에 대한 연산의 합보다 더 많은 연산을 필요로 할 것이다. 그러므로, 제2 에러 처리부(502)가 제2 에러 체크 코드(115)에 근거하여 모든 에러 검출/수정 공정을 수행하려는 경우, 전송자(50)는 증가된 양의 하드웨어를 필요로 할 것이고, 따라서 정보 처리 장치(5)의 비용을 증가시키게 된다. 따라서, 제2 에러 체크 코드(115)에 근거한 에러 검출/수정 공정내에서, 제2 에러 처리부(502)는 신드롬 연산만을 처리한다. 연산된 신드롬을 이용하는 에러 검출/수정 공정은 CPU(10)에 의한 소프트웨어 처리를 통해 수행된다.
CPU(10)의 제어하에, 에러 처리 선택부(503)는 제1 및 제2 에러 처리부(501 및 502) 중 하나를 선택적으로 동작하도록 한다. 에러 처리 선택부(503)는 CPU(10)가 특정 값을 기록할 수 있는 레지스터를 포함한다. 이 레지스터에서, 예를 들면 값 "0"는 BSP(111)의 전송 완료시까지 저장된다. BSP(111)의 전송이 완료된 경우, CPU(10)는 예를 들면 에러 처리 선택부(503)내의 상술한 레지스터의 값을 "1"로 업데이트한다. 레지스터의 값이 "0"인 경우, 에러 처리 선택부(503)는 제1 저장 장치(11)로부터 판독된 데이터를 제1 에러 처리부(501)로 공급한다. 레지스터의 값이 "1"인 경우, 에러 처리 선택부(503)는 제1 저장 장치(11)로부터 판독된 데이터를 제2 에러 처리부(502)로 공급한다.
그러므로, 전송자(50)에서, 전원이 동작된 이후에, 제1 에러 체크 코드(114)에 근거한 에러 검출/수정 처리는 에러 처리 선택부(503)에서의 레지스터의 값이 "1"로 시프트될 때까지, 전송될 BSP(111)에 대해 수행된다. CPU(10)이 예정된 명령을 실시할 때 에러 처리 선택부(503)내의 레지스터의 값은 "1"로 시프트한다. 그러므로, 전송될 메인 프로그램(112)에 대해 수행되는 제2 에러 체크 코드(115)에 근거한 에러 검출/수정 공정내에서, 신드롬 연산이 전송자(50)에서 발생한다.
그러므로, 정보 처리 장치(5)에 따르면, 에러 검출/수정 공정의 일부가 전송자에 의해 처리되어, 메인 프로그램에 대한 에러 검출/수정 공정의 신속한 실행과 이로 인한 시스템 부트의 신속한 수행을 가능하게 한다.
상술한 정보 처리 장치(5)에서, 에러 처리 선택부(503)의 값은 CPU(10)로부터의 명령에 따라 재기록된다. 별도로는, 도 16에 도시된 정보 처리 장치(6)에서 예시된 것처럼, 전송자(60)내의 에러 처리 선택부(601)는 통지부(143)로부터 수신된 전송 완료 통지 신호(144)와 동기하여 "0"에서 "1"로 상술한 레지스터의 값을 절환한다.
(제4 실시예)
도 17은 본 발명의 제4 실시예에 따른 정보 처리 장치의 구조를 도시하는 도면이다. 도 17에 도시된 정보 처리 장치(7)는 제3 실시예의 정보 처리 장치와 동일하되, 전송자(50)이 전송자(70)로 대체된다. 정보 처리 장치(7)는 전송자(70)가 메인 프로그램(112)을 전송하는 기능을 갖는 것을 특징으로 한다.
전송자(70)는 제3 실시예(도 15)의 전송자(50)와 동일하되, 전송자(70)는 제어 정보 저장부(701), 배드 블록 정보 테이블 포인터 저장부(702), 및 배드 블록 정보 테이블 저장부(703)를 더 포함한다. 제어 정보 저장부(701)는 전송 소스 어드레스, 전송 크기, 전송 수신지 어드레스 등을 저장한다. 배드 블록 정보 테이블 포인터 저장부(702)는 BSP(111)내에 포함된 배드 블록 정보 테이블 포인터(119)(배드 블록 정보 테이블(113)의 제1 어드레스)를 저장한다.
BSP(111)에 대한 것과 동일한 방법에 의해 연산되는 제3 에러 체크 코드(116)는 배드 블록 정보 테이블(113)에 할당된다. CPU(10)의 제어하에, 전송자(70)는 제1 저장 장치(11)로부터 배드 블록 정보 테이블(113) 및 제3 에러 체크 코드(116)를 판독하여 이들을 제1 에러 처리부(501)를 이용하여 에러 검출/수정 공정을 거치도록 하고, 에러 검출/수정 공정을 거친 배드 블록 정보 테이블을 제2 저장 장치(12)에 기록한다.
본 실시예에서, 제2 에러 처리부(502)는 제2 에러 체크 코드에 근거하여 전체 에러 검출/수정 공정을 수행한다. 여기서, 메인 프로그램(112)에 대한 에러 검출/수정 공정을 수행하는 동안 수정 불가능한 에러가 검출되는 경우, 제2 에러 처리부(502)는 에러 처리를 중단하고, CPU(10)로 수정 불가능한 에러가 검출됨을 통지한다. 이 통지를 수신할 때, CPU(10)는 비정상 처리 공정을 수행한다. 예를 들면, CPU(10)는 시스템을 중지하고, 디스플레이 수단(도시 없음) 상에 메시지를 디스플레이함에 의해 사용자에게 수정 불가능한 에러가 발생했음을 통지한다.
도 18은 본 실시예에 따라 CPU(10)에 의한 초기 적재 공정을 도시하는 흐름도이다. 도 18에 도시된 흐름도가 도 9에 도시된 흐름도와 유사하므로, 상이한 부분에 대해서만 후술한다.
도 9에 도시된 흐름도에서, CPU(10)는 BSP(111)로부터 배드 블록 정보 테이블 포인터(119)를 판독하고, 배드 블록 정보 테이블 포인터(119)를 이용하여 제1 저장 장치(11)로부터 제3 저장 장치(13)로 배드 블록 정보 테이블(113)를 복사한다(단계 S202). 반면에, 도 18에 도시된 흐름도에서, CPU(10)는 BSP(111)로부터 배드 블록 정보 테이블 포인터(119)를 판독하고, 배드 블록 정보 테이블 포인터(119)를 전송자(70)의 배드 블록 정보 테이블 포인터 저장부(702)에 기록한다(단계 S402). 동시에, 배드 블록 정보 테이블 포인터 저장부(702)내에 저장된 배드 블록 정보 테이블 포인터를 참조함에 의해, 전송자(70)는 제1 저장 장치(11)로부터 배드 블록 정보 테이블(113) 및 제3 에러 체크 코드(116)를 판독하여, 이들을 제1 에러 체크 코드(114)에 근거하여 에러 검출/수정 공정을 거치도록 하고, 공정의 결과를 배드 블록 정보 테이블 저장부(703)에 기록한다.
더욱이, 도 9에 도시된 흐름도에서, CPU(10)는 페이지를 제3 저장 장치(13)에 복사하기 위하여 복사 기능을 호출하고(단계 S206), 복사된 페이지에 대한 신드롬을 연산한다(S207). 반면에, 도 18에 도시된 흐름도에서, CPU(10)는 전송에 필요한 파라미터들(예를 들면, 전송 소스로서의 값 B 및 P)을 전송자(70)의 제어 정보 저장부(701)에 기록하고, 전송자(70)에 의해 전송의 완료를 대기한다(단계 S406). 동시에, 전송 제어부(141)는 제어 정보 저장부(701)내에 저장된 파라미터에 의해 지정된 제1 저장 장치내의 B 번째 블록내의 P번째 페이지를 제2 저장 장치(12)의 예정된 어드레스로 전송한다. 1 페이지의 전송이 완료된 경우, CPU(10)는 제2 에러 처리부(502)에서 연산된 신드롬을 판독한다(단계 S408). 단계 S409의 에러 검출/수정 공정은 판독된 신드롬에 근거하여 수행된다.
그러므로, 정보 처리 장치(7)에 따라, 초기 적재 프로그램의 크기는 감소될 수 있고, CPU의 로드(load)가 감소될 수 있어서, 시스템 부트의 신속한 실행이 가능하다.
(제5 실시예)
도 19는 본 발명의 제5 실시예에 따른 정보 처리 장치의 구조를 도시하는 도면이다. 도 19에 도시된 정보 처리 장치(8)는 제3 실시예의 정보 처리 장치(3)(도 11)과 동일하되, 제2 저장 장치(12)가 없고, 전송자(30)는 전송자(80)로 대체된다. 정보 처리 장치(8)는 BSP(111)를 저장하기 위한 전용 저장 장치가 없고, BSP(111)는 전송자(80)로부터 공급되는 것을 특징으로 한다.
전송자(80)는 제3 실시예의 전송자(30)(도 11)와 동일하되, 전송 제어부(311)가 전송 제어부(803)로 대체되고 버퍼 제어부(801) 및 명령 공급 버퍼(802)가 추가된다. 명령 공급 버퍼(802)는 예정 수의 명령을 저장하기 위한 버퍼이다. 전원이 동작되는 경우, 전송 제어부(803)는 제1 저장 장치(11)의 BSP(111)의 예정 수를 처음부터 순차적으로 판독하고, 에러 처리부(142)는 판독된 예정수의 BSP(111)에 대한 에러 검출/수정 공정을 수행한다. 에러 검출/수정 공정을 거친 BSP(111)는 데이터 버스(16c, 16b 및 16e)를 경유하여 명령 공급 버퍼(802)에 저장된다. 전원이 동작되는 경우, CPU(10)는 명령 공급 버퍼(802)로부터 명령어 인출을 시도한다.
CPU(10)가 명령어 인출을 시도할 때 명령 공급 버퍼(802)내에 다음 명령이 이미 저장된 경우, 버퍼 제어부(801)는 CPU(10)가 그 명령을 판독하도록 한다. 이러한 경우, CPU(10)는 명령어 인출을 승계하여, 인출된 명령을 실행한다. 반면에, CPU(10)가 명령어 인출을 시도할 때 명령 공급 버퍼(802)내에 다음 명령이 저장되어 있지 않은 경우, 버퍼 제어부(801)는 CPU(10)에 의해 명령어 인출을 중지하고, 전송 제어부(803)를 제어하여 제1 저장 장치(11)로부터 다음 명령을 판독하도록 한다. 판독된 명령은 에러 검출/수정 공정을 거치고, 다음으로 명령 공급 버퍼(802)내에 저장된다. 그러한 제어를 통해, 전송자(80)는 다음 명령이 명령 공급 버퍼(802)내에 아직 저장되어 있지 않은 경우, CPU(10)가 다음 명령이 준비될 때까지 명령어 인출을 수행할 수 없도록 보장한다.
그러므로, 정보 처리 장치(8)에 따르면, BSP를 저장하기 위한 메모리 영역을 확보하지 않고도 제1 실시예의 정보 처리 장치에 의해 제공되는 것과 동일한 효과가 제공될 수 있다.
(제6 실시예)
도 20은 본 발명의 제6 실시예에 따른 ROM 이미지 생성 장치의 구조를 도시하는 도면이다. 도 20에 도시된 ROM 이미지 생성 장치(9)는 BSP(111), 메인 프로그램(112) 등을 포함하는 ROM 이미지를 전술한 실시예들 중 임의의 하나에 따른 정보 처리 장치내에 포함된 제1 저장 장치(11)로서 이용되는 메모리(이하 "타겟 메모리"라 칭함)에 기록하는 장치이다.
ROM 이미지 생성 장치(9)는 이미지 재포맷부(91), 기록 이미지 생성부(92), 메모리 제어부(93), 코래이션 코드 관리부(94), 코드 정보 관리부(95), 배드 블록 정보 보유부(96), 및 배드 블록 정보 테이블 생성부(97)를 포함한다. 이미지 재포맷부(91)는 코래이션 코드 할당부(911) 및 재포맷부(912)를 포함한다. 기록 이미지 생성부(92)는 이미지 병합부(921), 배드 블록 정보 테이블 포인터 할당부(922), 및 에러 체크 코드 할당부(923)를 포함한다. 메모리 제어부(93)는 배드 블록 검색부(931) 및 메모리 기록부(932)를 포함한다.
입력 데이터(900)를 입력하기 이전에, 코래이션 코드 관리부(94)는 (입력 데이터(900)에 대한 할당으로서 기록되어질)코래이션 코드(941)를 저장하고, 코드 정보 관리부(95)는 입력 데이터(900)의 각각의 유형에 대한 에러 체크 코드를 연산하는데 이용될 방법을 표시하는 에러 체크 코드 할당 정보(951)를 저장한다. 배드 블록 검색부(931)는 예정된 방법으로 타겟 메모리를 억세스하고, 타겟 메모리내에 포함된 배드 블록(들)의 위치(들)를 표시하는 배드 블록 정보(933)를 출력한다. 배드 블록 검색 정보(931)로부터 출력되는 배드 블록 정보(933)는 배드 블록 정보 보유부(96)에 저장된다.
입력 데이터(900)로서, 타겟 메모리에 기록될 BSP, 메인 프로그램 등(2진수 형태임)이 ROM 이미지 생성 장치(9)에 개별 파일로서 입력된다. 배드 블록 정보 보유부(96)내에 보유된 배드 블록 정보(961)에 근거하여, 배드 블록 정보 테이블 생성부(97)는 2진수 형태로 배드 블록 정보 테이블(971)을 생성한다. 입력 데이터(900) 및 배드 블록 정보 테이블(971)는 개별 파일 형태로 이미지 재포맷부(91)로 입력된다.
이미지 재포맷부(91)는 입력 데이터(900) 및 배드 블록 정보 테이블(971)을 타겟 메모리에 기록되기 적합한 형태로 재포맷한다. 보다 상세하게는, 코래이션 코드 할당부(911)는 필요한 경우 코래이션 코드 관리부(94)내에 저장된 코래이션 코드(941)를 입력 데이터(900)에 할당한다. 코드 정보 관리부(95)내에 저장된 에러 체크 코드 할당 정보(951)에 따라, 재포맷부(912)는 입력 데이터(900) 및 배드 블록 정보 테이블(971) 각각을 이에 할당되는 에러 체크 코드를 적합하게 수용할 수 있는 형태로 재포맷하고, 그 결과를 개별 파일로서 출력한다. 이미지 재포맷부(91)에 의해 재포맷된 데이터가 재포맷부 출력(913)이 된다.
도 21a 및 도 21b는 재포맷부 출력(913)의 예를 도시하는 도면이다. 도 21a는 BSP(111)가 입력되는 재포맷부 출력(913)을 도시한다. 도 21b는 메인 프로그램(112)가 입력되는 경우의 재포맷부 출력(913)을 도시한다. BSP(111)가 입력되는 동안, 코드 정보 관리부(95)는 에러 체크 코드 할당 정보(951)를 계속 출력하는데, 이는 4 비트 에러 체크 코드가 4 비트 정보 비트에 할당되는 형태(예를 들면 도 3에 도시된 포맷)로의 재포맷이 반드시 수행되어야 함을 의미한다. 이러한 에러 체크 코드 할당 정보(951)에 따라, 재포맷부(912)는 BSP(111)(2진수 형태로 입력됨)를 도 21a에 도시된 포맷으로 재포맷한다. 반면에, 메인 프로그램(112)이 입력되는 동안, 코드 정보 관리부(95)는 에러 체크 코드 할당 정보(951)를 계속 출력하는데, 이는 16 바이트 예비 영역이 모든 512 바이트의 데이터에 할당되는 형태로의 재포맷이 반드시 수행되어야 함을 의미한다. 이러한 에러 체크 코드 할당 정보(951)에 따르면, 재포맷부(912)는 메인 프로그램(112)(2진수 형태로 입력됨)을 도 21b에 도시된 포맷으로 재포맷한다.
기록 이미지 생성부(92)는 이미지 재포맷부(91)로부터의 재포맷부 출력(913)을 병합하여 ROM 이미지(924)를 생성하여 타겟 메모리에 기록되도록 하면서, 타겟 메모리내에 포함된 배드 블록(들)의 위치(들)에 대해 주목한다. 보다 상세하게는, 이미지 병합부(921)는 개별 파일 형태로 출력된 재포맷부 출력(913)을 단일 파일로 병합한다. 동시에, 배드 블록 정보 보유부(96)로부터 출력된 배드 블록 정보(961)에 근거하여 이미지 병합부(921)는 정상 블록에 대응하는 위치에 대해서만 유효한 데이터를 출력하여, 배드 블록을 무효화한다.
이미지 병합부(921)가 재포맷부 출력(913)을 단일 파일로 병합한 경우, 어떤 정상 블록내에 배드 블록 정보 테이블(971)이 저장될 것인지가 명확해진다. 그러므로, 이미지 병합부(921)로부터의 출력에 대해, 배드 블록 정보 테이블 포인터 할당부(922)는 (배드 블록 정보 테이블 포인터(119)에 응답하여) 이러한 정상 블록의 수를 할당한다.
배드 블록 정보 테이블 포인터 할당부(922)가 상술한 정상 블록의 수를 할당한 경우, 에러 체크 코드를 제외하면, ROM 이미지내의 모든 데이터의 타겟 메모리로의 기록이 완료된다. 그러므로, 배드 블록 정보 테이블 포인터 할당부(922)로부터의 출력에 대해, 에러 체크 코드 할당부(923)는 코드 정보 관리부(95)로부터 출력된 에러 체크 코드 할당 정보(951)에 따라 에러 체크 코드를 할당한다. 예를 들면, 에러 체크 코드 할당부(923)는 제1 에러 체크 코드(114)를 BSP(111)에 할당하고, 제2 에러 체크 코드(115)를 메인 프로그램(112)에 할당한다.
메모리 기록부(932)는 이미지 생성부(92)로부터 출력된 ROM 이미지(924)를 타겟 메모리에 기록한다. 동시에, 배드 블록 정보 보유부(96)내에 보유된 배드 블록 정보(961)에 근거하여, 메모리 기록부(932)는 타겟 메모리내에 포함된 정상 블록에 대해서만 ROM 이미지(924)를 기록한다.
상술한 것처럼, 본 실시예의 ROM 이미지 생성 장치에 따르면, BSP, 메인 프로그램 등을 포함하는 ROM 이미지는 본 발명의 제1 내지 제5 실시예 중 임의의 하나에 따른 정보 처리 장치내에 포함된 제1 저장 장치로서 이용되는 메모리에 기록될 수 있다.
본 발명에 따른 정보 처리 장치는 초기 프로그램을 채용하지 않고도 시스템 부트를 안정적으로 수행할 수 있는 것을 특징으로 한다. 그러므로, 정보 처리 장치는 노트북형 개인 컴퓨터, 이동식 정보 장치, 셀룰러 폰, 디지털 카메라, 비디오 영상 장치, 게임 장치 등과 같은 다양한 정보 처리 장치에 이용될 수 있다.
본 발명은 상세한 설명에서 개시되었지만, 이는 단지 예로서 든 것이며, 이에 국한되지 않는다. 다른 개량물이나 변형물이 본 발명의 기술적 사상 범위에서 벗어나지 않고 안출 가능하다.
도 1은 본 발명의 제1 실시예에 따른 정보 처리 장치의 구조를 도시하는 도면.
도 2는 NAND형 플래시 메모리의 블록과 페이지 사이의 관련을 도시하는 도면.
도 3은 도 1에 도시된 정보 처리 장치의 초기 적재 프로그램과 제1 에러 체크 코드의 포맷을 도시하는 도면.
도 4는 도 1에 도시된 정보 처리 장치의 배드 블록 정보 테이블과 제3 에러 체크 코드의 포맷을 도시하는 도면.
도 5는 도 1에 도시된 정보 처리 장치의 CPU제어기의 예시적 구조를 도시하는 도면.
도 6은 도 1에 도시된 정보 처리 장치의 CPU제어기의 예시적 구조를 도시하는 도면.
도 7은 도 1에 도시된 정보 처리 장치의 전송자의 동작을 도시하는 흐름도.
도 8a 및 도 8b는 도 1에 도시된 정보 처리 장치의 초기 적재 프로그램의 예시적 구조를 도시하는 도면.
도 9는 도 1에 도시된 정보 처리 장치의 CPU에 의해 초기 적재 공정을 도시하는 흐름도.
도 10은 본 발명의 제1 실시예에 따른 정보 처리 장치의 변형 구조를 도시하는 도면.
도 11은 본 발명의 제2 실시예에 따른 정보 처리 장치의 구조를 도시하는 도면.
도 12는 도 11에 도시된 정보 처리 장치의 초기 적재 프로그램 및 제1 에러 체크 코드의 포맷을 도시하는 도면.
도 13은 도 11에 도시된 정보 처리 장치의 전송자의 동작을 도시하는 흐름도.
도 14는 본 발명의 제2 실시예에 따른 정보 처리 장치의 변형 구조를 도시하는 도면.
도 15는 본 발명의 제3 실시예에 따른 정보 처리 장치의 구조를 도시하는 도면.
도 16은 본 발명의 제3 실시예에 따른 정보 처리 장치의 변형 구조를 도시하는 도면.
도 17은 본 발명의 제4 실시예에 따른 정보 처리 장치의 구조를 도시하는 도면.
도 18은 도 17에 도시된 정보 처리 장치의 CPU에 의한 초기 적재 공정을 도시하는 흐름도.
도 19는 본 발명의 제5 실시예에 따른 정보 처리 장치의 구조를 도시하는 도면.
도 20은 본 발명의 제6 실시예에 따른 ROM 이미지 생성 장치의 구조를 도시하는 도면.
도 21a 및 21b는 도 20에 도시된 ROM 이미지 생성 장치의 재포맷부로부터의 출력을 도시하는 도면.

Claims (26)

  1. 비휘발성 저장 장치내에 저장된 프로그램을 이용함에 의해 시스템 부트를 수행하는 정보 처리 장치에 있어서,
    CPU;
    상기 CPU에 의해 실행될 프로그램들로서 제1 체크 코드가 할당된 초기 적재 프로그램(bootstrap program) 및 제2 체크 코드가 할당된 메인 프로그램(main program)을 저장하기 위한 비휘발성 제1 저장 장치 - 상기 제2 체크 코드는 상기 제1 체크 코드를 연산하기 위해 이용되는 것과는 상이한 방법에 의해 연산됨 -;
    상기 제1 저장 장치내에 저장된 프로그램을 판독하기 위한 전송자(transferer) - 시스템 부트 동안 상기 전송자는 상기 제1 저장 장치로부터 초기 적재 프로그램을 판독하고, 상기 초기 적재 프로그램이 상기 제1 체크 코드에 근거하여 에러 검출/수정 공정을 거치도록 하며, 공정을 거친 상기 초기 적재 프로그램을 제2 저장 장치로 전송함 - ;
    상기 제1 저장 장치로부터 판독된 프로그램을 저장하기 위한 휘발성 제2 저장 장치; 및
    초기 적재 프로그램의 전송이 완료될 때까지 상기 CPU의 동작을 중지시키기 위한 CPU 제어기
    를 포함하는 정보 처리 장치.
  2. 제1항에 있어서, 상기 CPU 제어기에 의한 동작 중지가 없는 경우, 상기 제2 저장 장치내에 저장된 초기 적재 프로그램에 따라, 상기 CPU는 상기 제1 저장 장치내에 저장된 메인 프로그램을 상기 제2 저장 장치로 전송하며, 제2 체크 코드에 근거하여 메인 프로그램이 에러 검출/수정 공정을 거치도록 하는 정보 처리 장치.
  3. 제1항에 있어서, 상기 전송자는
    초기 적재 프로그램의 전송을 제어하기 위한 전송 제어부;
    제1 체크 코드에 근거하여 전송되는 초기 적재 프로그램에 대해 에러 검출/수정 공정을 수행하기 위한 에러 처리부; 및
    초기 적재 프로그램의 전송이 완료될 때 상기 에러 처리부가 어떠한 수정불가 에러도 검출하지 않은 경우, 전송의 완료를 상기 CPU 제어기에 통지하기 위한 통지부
    를 포함하는 정보 처리 장치.
  4. 제1항에 있어서, 상기 CPU 제어기는 초기 적재 프로그램의 전송이 완료될 때까지 CPU에 대한 클럭 신호의 공급을 중지하는 정보 처리 장치.
  5. 제1항에 있어서, 상기 CPU 제어기는 초기 적재 프로그램의 전송이 완료될 때까지 CPU에 대한 리셋 신호를 지속적으로 공급하는 정보 처리 장치.
  6. 제1항에 있어서, 상기 CPU 제어기는 초기 적재 프로그램의 전송이 완료될 때까지 상기 CPU가 상기 제2 저장 장치에 억세스하는 것을 중지하는 정보 처리 장치.
  7. 제6항에 있어서, 상기 CPU 제어기는 초기 적재 프로그램의 전송이 완료될 때까지는 우선권을 상기 전송자에 주고, 초기 적재 프로그램의 전송이 완료된 이후에는 우선권을 상기 CPU에 주는 방식으로 상기 제2 저장 장치에 결선된 버스에 대한 억세스 권리를 중재하는 정보 처리 장치.
  8. 제1항에 있어서, 상기 CPU 제어기는 초기 적재 프로그램의 전송이 실패하는 경우 상기 CPU가 동작하는 것을 계속 중지하는 정보 처리 장치.
  9. 제1항에 있어서,
    상기 제1 저장 장치는 각 블록이 정상 블록 또는 배드 블록으로 인식되는 복수개의 블록들을 포함하며,
    초기 적재 프로그램, 메인 프로그램, 및 제1 저장 장치내의 메인 프로그램의 저장된 위치를 표시하는 저장 위치 정보는 제1 저장 장치의 정상 블록내에 저장되는 정보 처리 장치.
  10. 제9항에 있어서,
    상기 초기 적재 프로그램은 상기 제2 체크 코드에 근거하여 에러 검출/수정 공정을 수행하기 위한 저장 위치 정보 및 에러 처리 프로그램을 포함하며,
    상기 CPU 제어기에 의해 중지되지 않는 경우, 상기 CPU는 제1 체크 코드에 근거한 에러 검출/수정 공정 이후에 저장 위치 정보에 따라 상기 제1 저장 장치내에 저장된 메인 프로그램을 상기 전송자를 경유해 상기 제2 저장 장치로 전송하고, 제1 체크 코드에 근거한 에러 검출/수정 공정 이후에 에러 처리 프로그램에 따라 상기 제2 저장 장치내에 저장된 메인 프로그램에 대한 에러 검출/수정 공정을 수행하는 정보 처리 장치.
  11. 제9항에 있어서,
    상기 제1 저장 장치는 제1 체크 코드가 할당된 저장 위치 정보를 저장하고;
    상기 전송자는 제1 체크 코드에 근거하여 제1 저장 장치로부터 판독된 저장 위치 정보에 대한 에러 검출/수정 공정을 수행하며;
    상기 초기 적재 프로그램은 저장 위치 정보가 상기 제1 저장 장치내에 저장되는 어드레스(address) 및 제2 체크 코드에 근거하여 에러 검출/수정 공정을 수행하기 위한 에러 처리 프로그램(error processing program)을 포함하며;
    상기 CPU 제어기에 의해 중지되지 않을 경우, 상기 CPU는 제1 체크 코드에 근거한 에러 검출/수정 공정 이후에 상기 어드레스를 이용함에 의해 상기 제1 저장 장치내에 저장된 저장 위치 정보를 상기 전송자를 경유하여 상기 제2 저장 장치로 전송하며, 제1 체크 코드에 근거한 에러 검출/수정 공정 이후에 저장 위치 정보에 따라 상기 제1 저장 장치내에 저장된 메인 프로그램을 상기 전송자를 경유하여 상기 제2 저장 장치로 전송하며, 제1 체크 코드에 근거한 에러 검출/수정 공정 이후에 상기 에러 처리 프로그램에 따라 상기 제2 저장 장치내에 저장된 메인 프로그램에 대한 에러 검출/수정 공정을 수행하는 정보 처리 장치.
  12. 제9항에 있어서,
    상기 초기 적재 프로그램은 상기 제1 저장 장치의 정상 블록내에 예정 크기의 데이터 단위로 저장되고,
    상기 전송자는 상기 제1 저장 장치로부터 상기 초기 적재 프로그램의 예정 크기의 데이터 단위 각각을 판독하며, 제1 체크 코드에 근거하여 상기 데이터 단위를 에러 검출/수정 공정 처리하며, 처리된 데이터 단위를 제2 저장 장치로 전송하는 정보 처리 장치.
  13. 제12항에 있어서, 상기 제1 저장 장치로부터 판독된 예정 크기의 데이터 단위에 대한 제1 체크 코드에 근거한 에러 검출/수정 공정의 수행 결과로서 수정 불가능한 에러가 검출되는 경우, 상기 전송자는 상기 데이터 단위를 포함하고 있는 블록에 이웃하는 정상 블록으로부터 처리될 다음 데이터 단위를 판독하는 정보 처리 장치.
  14. 제12항에 있어서,
    상기 초기 적재 프로그램은 데이터 단위 각각에 할당된 코래이션 코드(collation code)와 함께 예정 크기의 데이터 단위로 상기 제1 저장 장치의 정상 블록내에 저장되며,
    상기 전송자는 코래이션 코드에 대한 기준 데이터(reference data)를 보유하고, 상기 기준 데이터와 동일한 코래이션 코드가 상기 제1 저장 장치로부터 판독된 예정 크기의 데이터 단위에 할당되는 경우, 판독된 데이터 단위를 상기 제2 저장 장치로 전송하는 정보 처리 장치.
  15. 제14항에 있어서, 상기 전송자는 주어진 데이터에 근거하여 상기 기준 데이터가 변경되도록 정렬되는 정보 처리 장치.
  16. 제1항에 있어서, 상기 전송자는
    상기 초기 적재 프로그램의 전송을 제어하기 위한 전송 제어부;
    전송되는 상기 초기 적재 프로그램에 대해 제1 체크 코드에 근거하여 에러 검출/수정 공정을 수행하기 위한 제1 에러 처리부;
    상기 제1 저장 장치로부터 판독된 메인 프로그램에 대해 제2 체크 코드에 근거하여 에러 검출/수정 공정의 적어도 일부를 수행하기 위한 제2 에러 처리부; 및
    상기 초기 적재 프로그램의 전송이 완료될 때 상기 제1 에러 처리부가 수정 불가능한 에러를 검출하지 않은 경우, 전송 완료를 상기 CPU 제어기에 통지하기 위한 통지부
    를 포함하는 정보 처리 장치.
  17. 제16항에 있어서,
    상기 제2 에러 처리부는 상기 제1 저장 장치로부터 판독된 메인 프로그램에 대해 제2 체크 코드에 근거하여 신드롬(syndrome)을 연산하고,
    상기 제2 저장 장치내에 저장된 상기 초기 적재 프로그램에 따라, 상기 CPU는 상기 제2 에러 처리부에 의해 연산된 상기 신드롬을 이용함에 의해 상기 제1 저장 장치로부터 판독된 메인 프로그램에 대해 제2 체크 코드에 근거하여 에러 검출/수정 공정의 나머지를 수행하는 정보 처리 장치.
  18. 제16항에 있어서, 상기 통지부가 전송의 완료를 통지한 경우, 상기 전송자는 제1 저장 장치로부터 판독된 프로그램을 처리하기 위한 처리부를 상기 제1 에러 처리부로부터 상기 제2 에러 처리부로 전환하는 정보 처리 장치.
  19. 제16항에 있어서, 상기 전송자는 상기 제1 저장 장치로부터 판독된 프로그램을 처리하기 위한 처리부를 상기 CPU의 제어하에 상기 제1 에러 처리부로부터 상기 제2 에러 처리부로 전환하는 정보 처리 장치.
  20. 제16항에 있어서,
    상기 제2 에러 처리부가 수정 불가 에러를 검출한 경우, 상기 전송자는 상기 CPU에게 전송의 실패를 통지하고,
    전송 실패의 통지를 수신하는 경우, 상기 CPU는 이상 처리 공정(abnormality handling process)을 수행하는 정보 처리 장치.
  21. 제1항에 있어서, 상기 초기 적재 프로그램의 전송 외에도, 상기 CPU의 제어하에, 상기 전송자는 상기 제1 저장 장치로부터 예정 크기의 데이터 단위로 메인 프로그램을 판독하며, 판독된 각각의 데이터 단위를 상기 제2 저장 장치로 전송하는 정보 처리 장치.
  22. 비휘발성 저장 장치내에 저장된 프로그램을 이용함에 의해 시스템 부트를 수행하기 위한 정보 처리 장치에 있어서,
    CPU;
    상기 CPU에 의해 실행될 프로그램들로서 제1 체크 코드가 할당된 초기 적재 프로그램 및 제2 체크 코드가 할당된 메인 프로그램을 저장하기 위한 비휘발성 제1 저장 장치 - 상기 제2 체크 코드는 상기 제1 체크 코드를 연산하기 위해 이용되는 것과는 상이한 방법에 의해 연산됨 - ;
    상기 제1 저장 장치내에 저장된 프로그램을 판독하기 위한 전송자; 및
    상기 제1 저장 장치로부터 판독된 프로그램을 저장하기 위한 휘발성 제2 저장 장치를 포함하되,
    상기 전송자는 상기 제1 저장 장치로부터 초기 적재 프로그램을 판독하고, 상기 제1 체크 코드에 근거하여 상기 초기 적재 프로그램이 에러 검출/수정 공정을 거치도록 하며, 처리된 초기 적재 프로그램을 내부적으로 저장하며, 상기 CPU로부터의 판독 요청에 응답하여 저장된 상기 초기 적재 프로그램을 출력하며,
    시스템 부트 동안, 상기 CPU는 상기 전송자내에 저장된 초기 적재 프로그램에 따라 동작하는 정보 처리 장치.
  23. 제22항에 있어서,
    상기 초기 적재 프로그램은 제2 체크 코드에 근거한 에러 검출/수정 공정을 수행하기 위한 에러 처리 프로그램을 포함하며,
    시스템 부트 동안, 상기 전송자내에 저장된 초기 적재 프로그램에 따라, 상기 CPU는 상기 제1 저장 장치로부터 판독된 메인 프로그램에 대한 제2 체크 코드에 근거한 에러 검출/수정 공정을 수행하는 정보 처리 장치.
  24. 배드 블록을 포함하는 저장 장치에 기록될 ROM 이미지를 복수개의 데이터에 근거하여 생성하기 위한 ROM 이미지 생성 장치에 있어서,
    ROM 이미지가 기록될 상기 저장 장치내에 포함되는 배드 블록의 위치 정보를 보유하기 위한 배드 블록 정보 보유부(bad block information retaining section);
    입력 데이터의 유형과 연관된 체크 코드의 유형을 관리하기 위한 코드 정보 관리부;
    입력 데이터를 입력 데이터의 유형과 연관된 할당된 체크 코드를 갖기에 적합한 포맷으로 변환하기 위한 이미지 재포맷부(image reformatting section); 및
    상기 배드 블록 정보 보유부내에 저장된 위치 정보를 참조로 배드 블록을 회피하면서 상기 이미지 재포맷부에 의해 재포맷된 복수개의 데이터를 단일 데이터로 병합하고, 입력 데이터의 유형과 연관된 체크 코드를 상기 병합된 데이터에 할당하기 위한 기록 이미지 생성부
    를 포함하는 ROM 이미지 생성 장치.
  25. 제24항에 있어서, 코래이션 코드를 보유하기 위한 코래이션 코드 보유부를 더 포함하되, 상기 이미지 재포맷부는 코래이션 코드 보유부내에 보유된 코래이션 코드를 입력 데이터에 할당하는 ROM 이미지 생성 장치.
  26. 제24항에 있어서, 위치 정보를 습득하기 위한 상기 저장 장치내의 배드 블록의 위치에 대한 검색 공정 및 상기 기록 이미지 생성부에 의해 생성된 데이터를 상기 저장 장치에 기록하는 공정을 수행하기 위한 메모리 제어부를 더 포함하는 ROM 이미지 생성 장치.
KR1020040112238A 2003-12-25 2004-12-24 정보 처리 장치 및 이를 위한 rom 이미지 생성 장치 KR20050065431A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003431178A JP4404625B2 (ja) 2003-12-25 2003-12-25 情報処理装置および該装置用のromイメージ生成装置
JPJP-P-2003-00431178 2003-12-25

Publications (1)

Publication Number Publication Date
KR20050065431A true KR20050065431A (ko) 2005-06-29

Family

ID=34697647

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040112238A KR20050065431A (ko) 2003-12-25 2004-12-24 정보 처리 장치 및 이를 위한 rom 이미지 생성 장치

Country Status (4)

Country Link
US (2) US7308567B2 (ko)
JP (1) JP4404625B2 (ko)
KR (1) KR20050065431A (ko)
CN (2) CN100541431C (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100936533B1 (ko) * 2006-11-07 2010-01-13 슬림디스크 주식회사 배드패턴을 이용한 디지털 컨텐츠 암호화 방법 및 이를 이용한 디지털 컨텐츠 기록/재생 방법과 디지털 컨텐츠 저장매체
KR101017977B1 (ko) * 2009-08-11 2011-03-02 주식회사 케피코 복수개의 제어기의 리프로그래밍 방법
US7908466B2 (en) 2005-11-15 2011-03-15 Samsung Electronics Co., Ltd. Method and apparatus for booting a microprocessor system using boot code stored on a serial flash memory array having a random-access interface
KR101438978B1 (ko) * 2012-12-31 2014-09-11 현대자동차주식회사 리프로그래밍 방법 및 시스템
CN111008045A (zh) * 2019-11-14 2020-04-14 中国航空工业集团公司洛阳电光设备研究所 一种片外flash大容量程序自动加载方法

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006277395A (ja) * 2005-03-29 2006-10-12 Matsushita Electric Ind Co Ltd 情報処理装置及び情報処理方法
US8060747B1 (en) 2005-09-12 2011-11-15 Microsoft Corporation Digital signatures for embedded code
US8966284B2 (en) * 2005-09-14 2015-02-24 Sandisk Technologies Inc. Hardware driver integrity check of memory card controller firmware
US8205087B2 (en) * 2006-02-27 2012-06-19 Microsoft Corporation Tool for digitally signing multiple documents
US8190902B2 (en) * 2006-02-27 2012-05-29 Microsoft Corporation Techniques for digital signature formation and verification
JP4836608B2 (ja) * 2006-02-27 2011-12-14 株式会社東芝 半導体記憶装置
US8065563B2 (en) * 2006-03-23 2011-11-22 Mediatek Inc. System for booting from a non-XIP memory utilizing a boot engine that does not have ECC capabilities during booting
US7555678B2 (en) * 2006-03-23 2009-06-30 Mediatek Inc. System for booting from a non-XIP memory utilizing a boot engine that does not have ECC capabilities during booting
US7562180B2 (en) * 2006-03-28 2009-07-14 Nokia Corporation Method and device for reduced read latency of non-volatile memory
US8375455B2 (en) 2006-08-10 2013-02-12 Wayne Odom System, method, and device for storing and delivering data
US20080045289A1 (en) * 2006-08-10 2008-02-21 Wayne Odom System and device for conducting a game of chance
US8365137B2 (en) * 2006-08-29 2013-01-29 Wave Semiconductor, Inc. Systems and methods using an invocation model of process expression
JP2008065434A (ja) * 2006-09-05 2008-03-21 Matsushita Electric Ind Co Ltd プログラム起動制御装置
JP2008134736A (ja) * 2006-11-27 2008-06-12 Fujifilm Corp 電子機器
KR100882841B1 (ko) * 2007-06-19 2009-02-10 삼성전자주식회사 읽기 디스터번스로 인한 비트 에러를 검출할 수 있는메모리 시스템 및 그것의 읽기 방법
US20090006835A1 (en) * 2007-06-29 2009-01-01 Samsung Electronics Co., Ltd Electronic device and control method thereof
KR20090030078A (ko) * 2007-09-19 2009-03-24 삼성전자주식회사 부트 로딩 동작을 안전하게 수행하기 위한 반도체 메모리장치 및 그것의 부트 로딩 방법
KR101365683B1 (ko) 2007-12-27 2014-02-20 삼성전자주식회사 가변 저항 메모리 장치, 그것의 플렉서블 프로그램 방법,그리고 그것을 포함하는 메모리 시스템
KR101476773B1 (ko) 2008-04-08 2014-12-29 삼성전자주식회사 가변 저항 메모리 장치를 포함하는 반도체 메모리 장치 및메모리 시스템
US8194492B2 (en) 2008-04-08 2012-06-05 Samsung Electronics Co., Ltd. Variable resistance memory device and system
EP2300909B1 (en) * 2008-05-23 2015-04-15 Agere Systems, Inc. Secure random number generator
JP4762269B2 (ja) * 2008-06-06 2011-08-31 パナソニック株式会社 再生装置、集積回路及び再生方法
US20100332942A1 (en) * 2008-09-10 2010-12-30 Arm Limited Memory controller for NAND memory using forward error correction
US8220185B2 (en) * 2009-01-29 2012-07-17 Nike, Inc. Article of footwear with suspended stud assembly
TWI401691B (zh) * 2009-03-20 2013-07-11 Phison Electronics Corp 具快閃記憶體測試功能的控制器及其儲存系統與測試方法
TWI408689B (zh) * 2009-04-14 2013-09-11 Jmicron Technology Corp 存取儲存裝置的方法及相關控制電路
CN101604248B (zh) * 2009-07-20 2012-09-26 北京海尔集成电路设计有限公司 一种修正只读存储器中程序的嵌入式系统及其实现方法
CN102890645B (zh) * 2011-07-20 2015-11-25 群联电子股份有限公司 存储器储存装置、存储器控制器与数据写入方法
CN102298545B (zh) * 2011-08-23 2014-03-19 晨星软件研发(深圳)有限公司 一种系统启动引导处理方法及装置
US8448236B1 (en) 2012-12-07 2013-05-21 Wayne Odom System, method, and device for storing and delivering data
US9043934B2 (en) 2012-04-06 2015-05-26 Wayne Odom System, method, and device for delivering communications and storing and delivering data
US8844054B2 (en) 2012-04-06 2014-09-23 Wayne Odom System, method, and device for communicating and storing and delivering data
US8677510B2 (en) 2012-04-06 2014-03-18 Wayne Odom System, method, and device for communicating and storing and delivering data
US8572720B1 (en) 2013-05-20 2013-10-29 Wayne Odom System, method, and device for communicating and storing and delivering data
US9378339B2 (en) 2012-04-06 2016-06-28 Wayne Odom System, method, and device for delivering communications and storing and delivering data
KR102252379B1 (ko) * 2013-06-24 2021-05-14 삼성전자주식회사 메모리 시스템 및 이의 독출 방법
US20150256916A1 (en) * 2014-03-04 2015-09-10 Knowles Electronics, Llc Programmable Acoustic Device And Method For Programming The Same
US9928079B2 (en) 2014-09-23 2018-03-27 Dialog Semiconductor (Uk) Limited Conditional processor auto boot with no boot loader when coupled with a nonvolatile memory
KR20200066882A (ko) * 2018-12-03 2020-06-11 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
TWI688965B (zh) * 2019-08-14 2020-03-21 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元及記憶體儲存裝置
KR20210034711A (ko) * 2019-09-20 2021-03-31 삼성전자주식회사 메모리 셀의 신뢰성에 따라 패리티 비트들을 선택적으로 생성하는 저장 장치 및 그것의 동작 방법
CN110797076B (zh) * 2019-10-16 2021-09-14 中国科学院微电子研究所 一种NAND Flash时序测试方法
CN112164356B (zh) * 2020-09-21 2022-04-26 昆山龙腾光电股份有限公司 检错方法及点亮治具
US11522563B1 (en) 2021-10-13 2022-12-06 Western Digital Technologies, Inc. Processor instructions for iterative decoding operations
CN114764347A (zh) * 2022-04-14 2022-07-19 重庆长安汽车股份有限公司 一种多核控制器的程序校验系统、校验方法及存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5522076A (en) * 1993-05-13 1996-05-28 Kabushiki Kaisha Toshiba Computer system having BIOS (basic input/output system)-ROM (Read Only Memory) writing function
CN1124376A (zh) * 1994-12-06 1996-06-12 国际商业机器公司 改进的数据存储设备及操作方法
US5822581A (en) * 1995-09-29 1998-10-13 Intel Corporation Method for CMOS configuration information storage and retrieval in flash
US5794007A (en) * 1995-11-03 1998-08-11 Intel Corporation System and method for programming programmable electronic components using board-level automated test equipment
JPH09204367A (ja) * 1996-01-25 1997-08-05 Mitsubishi Electric Corp フラッシュディスクカードにおけるフラッシュメモリデータのリフレッシュ方法
JPH10116187A (ja) * 1996-10-11 1998-05-06 Mitsubishi Electric Corp マイクロコンピュータ
KR20010087868A (ko) 2000-03-09 2001-09-26 김광수 리눅스 운영 체제 부팅 방법
US7073064B1 (en) * 2000-03-31 2006-07-04 Hewlett-Packard Development Company, L.P. Method and apparatus to provide enhanced computer protection
JP4601119B2 (ja) * 2000-05-02 2010-12-22 株式会社アドバンテスト メモリ試験方法・メモリ試験装置
JP2002055822A (ja) 2000-08-08 2002-02-20 Nec Corp 端末装置のプログラム制御方式およびその方法、並びにその制御プログラムを記録する記録媒体
DE10050604A1 (de) * 2000-10-12 2002-04-25 Siemens Ag Verfahren zum Starten einer Datenverarbeitungsanlage sowie zugehörige Komponenten
KR100516551B1 (ko) * 2000-11-25 2005-09-22 엘지전자 주식회사 원격 소프트웨어 업그레이드 시스템 및 방법
GB0123415D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
WO2003044732A1 (fr) * 2001-11-23 2003-05-30 Netac Technology Co., Ltd. Procede de fabrication de dispositif a memoire a semiconducteurs et dispositif portant des interfaces multiples
JP4434539B2 (ja) * 2001-12-26 2010-03-17 富士通マイクロエレクトロニクス株式会社 プロセッサおよびそのブート方法
US7234052B2 (en) * 2002-03-08 2007-06-19 Samsung Electronics Co., Ltd System boot using NAND flash memory and method thereof
KR100448905B1 (ko) * 2002-07-29 2004-09-16 삼성전자주식회사 낸드플래쉬메모리를 시스템구동 및 저장용으로 사용하는장치

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7908466B2 (en) 2005-11-15 2011-03-15 Samsung Electronics Co., Ltd. Method and apparatus for booting a microprocessor system using boot code stored on a serial flash memory array having a random-access interface
KR100936533B1 (ko) * 2006-11-07 2010-01-13 슬림디스크 주식회사 배드패턴을 이용한 디지털 컨텐츠 암호화 방법 및 이를 이용한 디지털 컨텐츠 기록/재생 방법과 디지털 컨텐츠 저장매체
KR101017977B1 (ko) * 2009-08-11 2011-03-02 주식회사 케피코 복수개의 제어기의 리프로그래밍 방법
KR101438978B1 (ko) * 2012-12-31 2014-09-11 현대자동차주식회사 리프로그래밍 방법 및 시스템
US10033546B2 (en) 2012-12-31 2018-07-24 Hyundai Motor Company Method and system for reprogramming
CN111008045A (zh) * 2019-11-14 2020-04-14 中国航空工业集团公司洛阳电光设备研究所 一种片外flash大容量程序自动加载方法

Also Published As

Publication number Publication date
US20080082860A1 (en) 2008-04-03
US7308567B2 (en) 2007-12-11
CN100541431C (zh) 2009-09-16
JP4404625B2 (ja) 2010-01-27
CN101183313A (zh) 2008-05-21
JP2005190201A (ja) 2005-07-14
US7925928B2 (en) 2011-04-12
CN100336020C (zh) 2007-09-05
US20050144430A1 (en) 2005-06-30
CN1655121A (zh) 2005-08-17

Similar Documents

Publication Publication Date Title
KR20050065431A (ko) 정보 처리 장치 및 이를 위한 rom 이미지 생성 장치
US7239547B2 (en) Memory device
US7379334B2 (en) Memory card, semiconductor device, and method of controlling memory card
US6125424A (en) Method of writing, erasing, and controlling memory and memory device having erasing and moving components
US7797693B1 (en) NAND mobile devices capable of updating firmware or software in a manner analogous to NOR mobile devices
US7616507B2 (en) Microprocessor boot-up controller, nonvolatile memory controller, and information processing system
US7543137B2 (en) Information processing device and information processing method
US20120005451A1 (en) Data storage device and bad block managing method thereof
US20080120488A1 (en) Apparatus and method of managing nonvolatile memory
KR100755718B1 (ko) 멀티 레벨 셀 플래시 메모리에서 런-타임 배드 블록 관리를위한 장치 및 방법
US7287117B2 (en) Flash memory and mapping control apparatus and method for flash memory
US7245539B2 (en) Memory card, semiconductor device, and method of controlling semiconductor memory
US6546517B1 (en) Semiconductor memory
JP2005196634A (ja) 外部記憶装置
JP5422652B2 (ja) フラッシュメモリ記憶装置における動的メモリ割当てに起因する自己エビクションの回避
KR101041837B1 (ko) 파일저장 제어장치 및 방법
CN106445398A (zh) 一种基于新型存储器的嵌入式文件系统及其实现方法
JP7143735B2 (ja) メモリコントローラ、及びメモリシステム
US20060155918A1 (en) Method of controlling a semiconductor memory device applied to a memory card
JP2011242833A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US20150278037A1 (en) Transfer device, determination method, and data processing device
EP1622034A2 (en) Apparatus and method for controlling address conversion buffer
US20090132623A1 (en) Information processing device having data field and operation methods of the same
CN111596859B (zh) 数据储存装置与数据处理方法
JP5195690B2 (ja) 情報処理装置、該装置用のromイメージ生成装置、および転送装置

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
NORF Unpaid initial registration fee