상기 목적들을 달성하기 위하여, 본 발명의 일 측면에 따르면 코드 데이터 에러 정정을 수행하는 디지털 처리 장치, 메인 프로세서 및/또는 어플리케이션 프로세서가 제공된다.
본 발명의 바람직한 일 실시예에 따르면, 메인 프로세서 및 하나 이상의 어플리케이션 프로세서를 포함하는 디지털 처리 장치에 있어서, 상기 메인 프로세서 와 MP-NM 버스를 통해 결합되고, 제1 코드 데이터가 기록된 코드 데이터 영역 및 상기 제1 코드 데이터와 일치하는 제2 코드 데이터가 백업(back up)된 백업 영역을 포함하는 비휘발성 메모리; 및 상기 메인 프로세서 및 상기 어플리케이션 프로세서에 의해 공유되며, 상기 제1 코드 데이터 또는 에러 정정(error correction)된 제3 코드 데이터가 기록되는 공유 메모리를 포함하되, 상기 메인 프로세서는 상기 제1 코드 데이터가 에러를 포함하면 미리 설정된 에러 정정 방법 또는 상기 제2 코드 데이터에 의해 에러 정정된 상기 제3 코드 데이터를 상기 공유 메모리에 기록하고, 상기 메인 프로세서 또는 상기 어플리케이션 프로세서는 상기 제3 코드 데이터에 상응하는 동작을 수행하는 것을 특징으로 하는 디지털 처리 장치가 제공된다.
상기 메인 프로세서는 상기 제1 코드 데이터가 1비트 에러를 포함하면 상기 에러 정정 방법에 의해 상기 제3 코드 데이터를 생성하고, 상기 제1 코드 데이터가 2비트 이상의 에러를 포함하면 상기 제2 코드 데이터를 이용하여 상기 제3 코드 데이터를 생성할 수 있다.
상기 메인 프로세서는 상기 제2 코드 데이터가 1비트 에러를 포함하면 상기 에러 정정 방법에 의해 상기 제3 코드 데이터를 생성하고, 상기 제2 코드 데이터가 2비트 이상의 에러를 포함하면 에러 메시지가 출력되도록 제어할 수 있다.
상기 메인 프로세서는 상기 제3 코드 데이터를 상기 비휘발성 메모리에 기록할 수 있다.
상기 공유 메모리는 2이상의 포트를 포함하고, 각각의 포트가 상기 메인 프로세서 및 상기 어플리케이션 프로세서에 1씩 할당될 수 있다.
상기 공유 메모리의 저장 영역은 상기 메인 프로세서의 전용 영역, 상기 어플리케이션 프로세서의 전용 영역, 상기 메인 프로세서와 상기 어플리케이션 프로세서가 접속할 수 있는 공통 영역이 포함되도록 분할될 수 있다.
상기 비휘발성 메모리 및 상기 공유 메모리는 MCP(Multi-Chip Package) 기술에 의해 원 칩화될 수 있다.
상기 코드 데이터는 부트 코드(boot code) 데이터, 프로그램 실행 코드 데이터, 멀티미디어 기능 수행을 위한 코드 데이터 중 적어도 어느 하나일 수 있다. 상기 어플리케이션 프로세서는 상기 공유 메모리에 기록된 부트 코드 데이터를 이용하여 부팅될 수 있다.
본 발명의 바람직한 다른 실시예에 따르면, 하나 이상의 어플리케이션 프로세서에 결합되고, 상기 어플리케이션 프로세서의 동작을 제어하는 메인 프로세서에 있어서, MP-NM 버스를 통해 비휘발성 메모리에 접속하고, MP-VM 버스를 통해 공유 메모리에 접속하는 인터페이스부; 및 상기 비휘발성 메모리의 코드 데이터 영역에 기록된 제1 코드 데이터가 에러를 포함하면 미리 설정된 에러 정정 방법 또는 상기 비휘발성 메모리의 백업 영역에 기록된 제2 코드 데이터를 이용하여 생성한 제3 코드 데이터를 상기 인터페이스부를 통해 상기 공유 메모리에 기록하는 컨트롤러를 포함하는 메인 프로세서가 제공된다.
상기 컨트롤러는 상기 제1 코드 데이터가 1비트 에러를 포함하면 상기 에러 정정 방법에 의해 상기 제3 코드 데이터를 생성하고, 상기 제1 코드 데이터가 2비트 이상의 에러를 포함하면 상기 제2 코드 데이터를 이용하여 상기 제3 코드 데이 터를 생성할 수 있다.
상기 컨트롤러는 상기 제2 코드 데이터가 1비트 에러를 포함하면 상기 에러 정정 방법에 의해 상기 제3 코드 데이터를 생성하고, 상기 제2 코드 데이터가 2비트 이상의 에러를 포함하면 에러 메시지가 출력되도록 제어할 수 있다.
상기 코드 데이터는 부트 코드(boot code) 데이터, 프로그램 실행 코드 데이터, 멀티미디어 기능 수행을 위한 코드 데이터 중 적어도 어느 하나일 수 있다. 상기 컨트롤러는 상기 어플리케이션 프로세서의 부팅을 위한 부트 코드 데이터를 생성하여 상기 공유 메모리에 기록하고, 상기 어플리케이션 프로세서는 상기 공유 메모리에 기록된 부트 코드 데이터를 이용하여 부팅될 수 있다.
본 발명의 바람직한 또 다른 실시예에 따르면, 메인 프로세서와 결합되고, 상기 메인 프로세서에 의해 제어되는 어플리케이션 프로세서에 있어서, AP-VM 버스를 통해 공유 메모리에 접속하는 인터페이스부; 및 상기 공유 메모리의 제1 영역에 기록된 제1 코드 데이터가 에러를 포함하면 미리 설정된 에러 정정 방법 또는 상기 공유 메모리의 제2 영역에 기록된 제2 코드 데이터를 이용하여 생성한 제3 코드 데이터를 상기 공유 메모리에 기록하고, 상기 제3 코드 데이터에 따른 동작을 수행하는 컨트롤러를 포함하되, 상기 제1 코드 데이터 및 상기 제2 코드 데이터는 상기 메인 프로세서에 의해 기록되는 것을 특징으로 하는 어플리케이션 프로세서가 제공된다.
여기서, MP-NM 버스를 통해 비휘발성 메모리에 접속되고, MP-VM 버스를 통해 상기 공유 메모리에 접속된 상기 메인 프로세서는 상기 비휘발성 메모리의 코드 데 이터 영역에 기록된 제1 코드 데이터를 상기 제1 영역에 기록하고, 상기 비휘발성 메모리의 백업 영역에 기록된 제2 코드 데이터를 상기 제2 영역에 기록할 수 있다.
상기 컨트롤러는 상기 제1 코드 데이터가 1비트 에러를 포함하면 상기 에러 정정 방법에 의해 상기 제3 코드 데이터를 생성하고, 상기 제1 코드 데이터가 2비트 이상의 에러를 포함하면 상기 제2 코드 데이터를 이용하여 상기 제3 코드 데이터를 생성할 수 있다.
상기 컨트롤러는 상기 제2 코드 데이터가 1비트 에러를 포함하면 상기 에러 정정 방법에 의해 상기 제3 코드 데이터를 생성하고, 상기 제2 코드 데이터가 2비트 이상의 에러를 포함하면 에러 메시지가 출력되도록 제어할 수 있다.
상기 메인 프로세서는 상기 제3 코드 데이터를 상기 비휘발성 메모리에 기록할 수 있다.
상기 공유 메모리의 저장 영역은 상기 메인 프로세서의 전용 영역, 상기 어플리케이션 프로세서의 전용 영역, 상기 메인 프로세서와 상기 어플리케이션 프로세서가 접속할 수 있는 공통 영역이 포함되고, 상기 제1 영역 및 상기 제2 영역은 상기 공통 영역에 포함될 수 있다.
상기 코드 데이터는 부트 코드(boot code) 데이터, 프로그램 실행 코드 데이터, 멀티미디어 기능 수행을 위한 코드 데이터 중 적어도 어느 하나일 수 있다.
상기 코드 데이터가 부트 코드(boot code) 데이터인 경우, 상기 어플리케이션 프로세서는 상기 제3 코드 데이터를 이용하여 부팅될 수 있다.
상기 비휘발성 메모리 및 상기 공유 메모리는 MCP(Multi-Chip Package) 기술 에 의해 원 칩화될 수 있다.
상기 비휘발성 메모리는 NAND 플래시 메모리 또는 NOR 플래시 메모리일 수 있다. 또한, 상기 공유 메모리는 SDRAM 메모리일 수 있다.
상기 어플리케이션 프로세서는 상기 메인 프로세서와 제어 신호 송수신을 위하여 각각 MP-AP 버스를 통해 결합될 수 있다.
상기 목적들을 달성하기 위하여, 본 발명의 다른 측면에 따르면 코드 데이터 에러 정정 방법 및/또는 그 방법을 실행할 수 있는 프로그램이 기록된 기록매체가 제공된다.
본 발명의 바람직한 일 실시예에 따르면, 메인 프로세서 및 하나 이상의 어플리케이션 프로세서를 포함하는 디지털 처리 장치의 상기 메인 프로세서에 의한 코드 데이터 에러 정정 방법에 있어서, (a) 비휘발성 메모리의 코드 데이터 영역에 기록된 제1 코드 데이터를 독출하여 에러 포함 여부를 판단하는 단계; (b) 1비트 에러가 존재하면 미리 설정된 에러 정정 방법에 의해 에러 정정된 코드 데이터를 생성하여 공유 메모리에 저장하는 단계; 및 (c) 2비트 이상의 에러가 존재하면 상기 비휘발성 메모리의 백업 영역에 기록된 제2 코드 데이터를 이용하여 에러 정정된 코드 데이터를 생성하고, 상기 공유 메모리에 저장하는 단계를 포함하되, 상기 비휘발성 메모리는 상기 메인 프로세서와 MP-NM 버스를 통해 결합되고, 상기 공유 메모리는 상기 메인 프로세서 및 상기 어플리케이션 프로세서에 의해 공유되는 것을 특징으로 하는 코드 데이터 에러 정정 방법이 제공된다.
상기 단계 (c)는, 상기 비휘발성 메모리의 백업 영역에 기록된 제2 코드 데이터를 독출하는 단계; 상기 제2 코드 데이터에 1비트 에러가 존재하면 상기 에러 정정 방법에 의해 에러 정정된 코드 데이터를 생성하여 공유 메모리에 저장하는 단계; 및 상기 제2 코드 데이터에 2비트 이상의 에러가 존재하면 에러 메시지를 출력하는 단계를 포함할 수 있다.
이하, 본 발명의 바람직한 실시예를 첨부한 도면들을 참조하여 상세히 설명하기로 한다. 본 명세서에서 이용되는 서수(ordinal number, 예를 들어, 제1, 제2, A, B 등)는 동일 또는 유사한 개체가 표시된 순서대로 단지 구별을 위해 순차적으로 구분하기 위한 식별 기호에 불과하다. 따라서, 서수가 부가된 구성 요소의 명칭은 그 전체로서 특정되는 것은 아니며, 또한 이로 인해 본 발명의 권리범위가 제한되지 않음은 자명하다.
또한, 본 발명에 따른 공유 메모리를 이용한 디스플레이 제어 방법은 메인 프로세서가 디스플레이될 데이터를 어플리케이션 프로세서를 경유하여 표시부로 전달할 필요가 있는 모든 형태의 디지털 처리 장치 또는 시스템(예를 들어, 이동 통신 단말기, PDA, PMP(Portable Multimedia Player), MP3 플레이어, 디지털 카메라, 디지털 텔레비전, 음향 기기 등과 같이 휴대형 단말기 및/또는 가정 내에 구비되는 가정용 디지털 기기 등)에 동일하게 적용할 수 있음은 자명하다. 다만, 이하에서는 설명 및 이해의 편의를 위해 휴대형 단말기를 중심으로 설명하기로 한다. 또한, 하기의 설명을 통해 본 발명이 적용될 수 있는 휴대형 단말기가 특정 유형의 단말기 에 제한되지 않고 복수의 프로세서 또는 구성 요소들에 의해 공유되는 메모리를 포함하여 구성된 단말기인 경우라면 동일하게 적용될 수 있음을 쉽게 이해할 수 있을 것이다.
도 3은 본 발명의 바람직한 일 실시예에 따른 각 프로세서의 연결 구조를 간략히 나타낸 도면이고, 도 4는 일반적인 비휘발성 메모리의 영역 구조를 나타낸 도면이며, 도 5는 본 발명의 바람직한 일 실시예에 따른 비휘발성 메모리와 공유 메모리간의 연동 방법을 개념적으로 예시한 도면이다.
관련 도면을 참조하여 설명함에 있어, 어플리케이션 프로세서(215)는 이미지 센서(240)를 제어하고 이미지 센서(240)로부터 입력되는 신호(예를 들어, 이미지 데이터 및/또는 음성 데이터에 상응하는 전기 신호 등)의 처리를 위한 멀티미디어 프로세서인 경우를 가정하여 설명한다. 어플리케이션 프로세서(215)와 이미지 센서(240)간에는 ISP(Image Signal Processor)가 더 구비될 수 있다. 또한, 어플리케이션 프로세서(215)와 결합된 공유 메모리(320)는 메인 프로세서(210)와 공유될 뿐 아니라 어플리케이션 프로세서(215) 내에 포함된 각 구성 요소들에 의해 공유될 수 있을 것이다.
도 3에 도시된 바와 같이, 메인 프로세서(210)는 호스트 인터페이스(Host I/F)인 MP-AP 버스를 통해 어플리케이션 프로세서(215)와 결합되고, MP-NM(Nonvolatile Memory) 버스를 통해 비휘발성 메모리(315)에 결합되며, MP-VM 버스를 통해 공유 메모리(320)에 결합된다. 비휘발성 메모리(315)는 예를 들어 NAND 플래시 메모리 또는 NOR 플래시 메모리일 수 있다. 공유 메모리(320)는 휘발성 메모리일 수 있으며, 예를 들어 SDRAM 메모리일 수 있다. 비휘발성 메모리(315)와 공유 메모리(320)는 MCP(Multi-Chip Package) 기술에 의해 하나의 칩(310)으로 구현될 수도 있다. 메인 프로세서(210)는 제1 인터페이스부(325)를 제어하여 공유 메모리(320) 및/또는 비휘발성 메모리(315)에 데이터를 기록하거나 해당 메모리(315 또는 320)로부터 데이터를 독출할 수 있다.
메인 프로세서(210)는 휴대형 단말기에 포함된 각 구성 요소를 제어할 수 있다. 예를 들어, 휴대형 단말기에 복수의 어플리케이션 프로세서들이 구비된 경우 메인 프로세서(210)는 호스트 인터페이스를 통해 각 어플리케이션 프로세서들의 기능을 제어할 수 있다. 또한, 메인 프로세서(210)는 비휘발성 메모리(315)에 저장된 AP 부트 코드(즉, 어플리케이션 프로세서(215)의 부팅을 위해 필요한 부트 코드)를 독출하여 공유 메모리(320)에 저장함으로써 어플리케이션 프로세서(215)가 공유 메모리(320)에 접속하여 해당 AP 부트 코드를 이용할 수 있도록 한다.
어플리케이션 프로세서(215)는 호스트 인터페이스인 MP-AP 버스를 통해 메인 프로세서(210)와 결합되고, AP-VM 버스를 통해 공유 메모리(320)와 결합되고, 각각의 버스를 통해 표시부(145) 및 이미지 센서(240)와 결합된다.
어플리케이션 프로세서(215)는 인터페이스부(250), 컨트롤러부(255), 멀티미디어 처리부(260), 이미지 스케일러(265), 제2 인터페이스부(330)를 포함한다. 이외에, 어플리케이션 프로세서(215)는 데이터 인코딩/디코딩을 위한 코덱부 등을 더 포함할 수 있다.
인터페이스부(250)는 MP-AP 버스를 통해 결합된 어플리케이션 프로세서(215)와 메인 프로세서(210)간에 정보 송수신을 수행한다. 어플리케이션 프로세서(215)는 인터페이스부(250)를 통해 메인 프로세서(210)로부터 제어 신호(예를 들어, 부트 명령, 데이터 처리 명령)가 수신되면 상응하는 처리 동작을 수행한다. 메인 프로세서(210)는 미리 설정된 형식의 제어 신호를 어플리케이션 프로세서(215)로 전달하거나, 어플리케이션 프로세서(215) 내의 미리 설정된 레지스터에 임의의 값을 기록하는 방법으로 제어 신호를 어플리케이션 프로세서(215)에 전달할 수 있다. 예를 들어, 메인 프로세서(210)는 공유 메모리(320, 또는 공통 영역(530 - 도 5 참조))에 접속하고자 하는 경우, 이를 어플리케이션 프로세서(215)로 통지하여야 한다. 어플리케이션 프로세서(215) 내부에 접속 레지스터를 구비하는 경우, 메인 프로세서(210)는 MP-AP 버스를 통해 어플리케이션 프로세서(215)에 접속한 후 접속 레지스터를 미리 지정된 값으로 갱신함으로써 메인 프로세서(210)가 공통 영역에 접속할 것임을 통지할 수 있다. 예를 들어, 접속 레지스터 값이 제1값(예를 들어, 1)인 상태가 임의의 프로세서가 공통 영역에 접속 중임을 나타낸다고 가정할 때, 메인 프로세서(210)는 호스트 인터페이스를 통해 어플리케이션 프로세서(215)에 접속하여 제2값(예를 들어, 0)인 접속 레지스터 값을 제1값으로 갱신할 것이다.
컨트롤러부(255)는 메인 프로세서(210)로부터 입력되는 부트 명령에 따라 공유 메모리(320)에 기록된 AP 부트 코드를 이용하여 어플리케이션 프로세서(215)의 부팅을 수행하고, 내장된 또는 공유 메모리(320)에 기록된 프로그램에 의해 어플리케이션 프로세서(215)의 동작을 제어한다. 즉, 컨트롤러부(255)는 어플리케이션 프 로세서(215)의 부팅(booting), 어플리케이션 프로세서(215)의 동작 제어, 공유 메모리(320)로부터 프로그램의 수행 또는 어플리케이션 프로세서(215)의 동작을 위해 필요한 데이터 독출, 처리된 프로그래밍 결과를 표시부(145)를 통해 디스플레이하거나 공유 메모리(320)에 저장 등을 수행할 수 있다.. 또한, 컨트롤러부(255)는 메인 프로세서(210)가 공유 메모리(320)에 기록한 AP 부트 코드의 에러 여부를 확인할 수 있다.
컨트롤러부(255)는 제2 인터페이스부(330) 및 AP-VM 버스를 통해 공유 메모리(320)의 특정 분할 영역(예를 들어, 공통 영역(530) 또는 전용 영역(520 또는 525) - 도 5 참조)에 억세스할 수 있다. 일반적으로 컨트롤러부(255)는 메인 프로세서(210)로부터 수신된 제어 신호(예를 들어, 레지스터 값의 갱신 상태 등)에 상응하여 어플리케이션 프로세서(215)의 동작을 제어한다. 접속 레지스터(즉, 공유 메모리(320)의 저장 영역 중 공통 영역(530)으로의 접속 여부를 나타내기 위한 레지스터) 및 표시 레지스터(즉, 공통 영역에 저장된 데이터를 표시부(145)로 전달하도록 지시하기 위한 레지스터)는 컨트롤러부(255)에 의해 관리될 수 있다. 컨트롤러부(255)는 예를 들어 MCU(Microcontroller Unit)일 수 있다.
멀티미디어 처리부(260)는 제2 인터페이스부(330)를 통해 공유 메모리(320, 또는 특정 분할 영역)에 저장된 데이터를 독출하거나 컨트롤러부(255)에 의해 독출된 데이터를 미리 지정된 포맷(예를 들어 JPEG, MPEG4)으로 인코딩하거나 필요한 효과를 주는 등의 역할을 수행한다. 멀티미디어 처리부(260)는 처리한 데이터를 공유 메모리(320, 또는 특정 저장 영역(예를 들어, 공통 영역(530) 또는 전용 영 역(520 또는 525)))에 저장할 수 있다. 또한 멀티미디어 처리부(260)는 메인 프로세서(210)가 공유 메모리(320)의 저장 영역 중 공통 영역(530)에 저장한 압축 파일을 독출하여 디코딩한 후 표시부(145)에 디스플레이할 수도 있다.
이미지 스케일러(265)는 이미지 센서(240)로부터 입력되는 데이터를 컨트롤러부(255)의 제어에 의해 가공하여 미리 지정된 데이터로 변환한다. 이미지 스케일러(265)는 예를 들어 이미지의 크기 조정, 색상 변경, 필터링(filtering)에 의한 부드러운 이미지 생성 등을 수행한다. 이미지 스케일러(265)에 의해 처리된 데이터는 제2 인터페이스부(330)에 의해 AP-VM 버스를 통해 공유 메모리(320, 또는 특정 분할 영역)에 저장된다.
본 발명의 이미지 스케일러(265)는 이미지 센서(240)로부터 입력된 데이터를 처리하여 공유 메모리(320)에 저장되도록 하기 위한 구성 요소의 일 실시예에 불과하다. 따라서, 본 발명은 공유 메모리(320)로 멀티미디어 데이터(예를 들어, 이미지 데이터 및/또는 음성 데이터 등)를 실시간 저장할 필요가 있는 모든 멀티미디어 데이터 입력부에 범용적으로 적용될 수 있음은 자명하다.
또한 마찬가지로 도 3에 도시된 멀티미디어 처리부(260) 등은 공유 메모리(320)에 저장된 멀티미디어 데이터를 처리하는 구성 요소의 일 실시예에 불과하며, 본 발명은 공유 메모리(320)에 저장된 멀티미디어 데이터를 처리하여 공유 메모리(320)에 다시 저장하거나, 표시부(145)를 통해 디스플레이하거나, 또는 메인 프로세서(210)로 전송하는 모든 멀티미디어 데이터 처리부에 범용적으로 적용될 수 있음은 자명하다.
제2 인터페이스부(330)는 어플리케이션 프로세서(215)의 임의의 구성 요소가 공유 메모리(320)에 접속하고자 할 때 AP-VM 버스를 통해 억세스할 수 있도록 처리한다. 제2 인터페이스부(330)는 복수의 구성 요소(예를 들어, 멀티미디어 처리부(260) 및 이미지 스케일러(265))가 동시에 접속을 시도한 경우 미리 설정된 우선 순위에 따라 공유 메모리(320)에 억세스되도록 제어할 수도 있다. 또한, 제2 인터페이스부(330)는 임의의 구성 요소에 의해 처리된 데이터가 공유 메모리(320)의 특정 분할 영역에 저장되도록 처리할 수도 있다.
상술한 바와 같이, 어플리케이션 프로세서(215)가 멀티미디어 프로세서인 경우, 이미지 센서(240)로부터 입력되어 처리된 멀티미디어 데이터를 처리하여 공유 메모리(320)에 저장(즉, 기록)하고, 공유 메모리(320)에 저장된 멀티미디어 데이터를 처리하여 표시부(145)를 통해 디스플레이할 수 있다.
공유 메모리(320)는 2개의 억세스 포트(Access Port)를 구비하여, 각각 메인 프로세서(210)와 어플리케이션 프로세서(215)에 결합된다. 공유 메모리(320)가 구비하는 포트의 수는 접속되는 프로세서의 수에 따라 증감될 수 있을 것이다. 공유 메모리(320)는 복수의 포트를 구비하여 각 프로세서가 다른 시점에 접속하여 데이터 기록 및/또는 독출이 가능한 메모리이다. 임의의 프로세서가 현재 공유 메모리(320)에 접속 중인지 여부는 타 프로세서로 통지되어야 하며, 이는 상태 정보의 송수신 또는 레지스터 값의 갱신 등을 통해 통지될 수 있다.
다만, 이미지 센서(240)로부터 입력되어 처리된 멀티미디어 데이터가 실시간 저장되도록 하기 위해 어플리케이션 프로세서(215)가 AP-VM 버스를 통해 공유 메모 리(320)에 접속하고 있다면 메인 프로세서(210)는 공유 메모리(320)에 데이터 기록 및/또는 독출을 위해 접속할 수 없을 수도 있다. 이러한 경우를 방지하기 위해, 도 5에 예시된 바와 같이 공유 메모리(320)는 복수의 저장 영역으로 분할될 수 있다. 공유 메모리(320)를 복수의 저장 영역으로 분할하여 운용하는 방법은 이후 상세히 설명하기로 한다.
공유 메모리(320)와 비휘발성 메모리(315)는 MCP 기술에 의해 하나의 칩(310)으로 구현될 수 있다.
MP-NM 버스를 통해 메인 프로세서(210)와 결합되는 비휘발성 메모리(315)는 NAND 플래시 메모리 또는 NOR 플래시 메모리일 수 있다. 비휘발성 메모리(315) 내에는 메인 프로세서(210) 및 어플리케이션 프로세서(215)를 부팅시키기 위한 부트 코드, 폰트 등이 저장될 수 있다.
도 3에 도시된 바와 같이, 비휘발성 메모리(315)가 NAND 플래시 메모리인 경우 데이터 기록은 페이지(page) 단위로 수행되며, 각 페이지는 2048바이트의 메인 영역과 64바이트의 스페어(spare) 영역으로 구성된다.
일반적으로, NAND 플래시 메모리는 메모리 특성상 사용 도중에 메인 영역(2048 바이트)에서 에러가 발생할 확률이 있다.
만일, 발생된 에러가 1비트(bit) 에러라면 오류 정정 정보인 ECC(Error Correcting Code) 발생 및 수정 방법에 의해 발생된 오류를 수정하여 해당 데이터를 이용할 수 있다. ECC 발생 및 수정 방법은 당업자에게 자명한 사항이므로 설명을 생략한다. 즉, NAND 플래시 메모리에 데이터를 저장할 때 1비트 에러를 수정할 수 있도록 에러 정정 알고리즘을 적용한 회로를 통과시켜 에러에 대한 부호가 스페어 영역에 저장되도록 한다.
그러나, 2비트 이상의 에러가 발생한 경우에는 에러가 발생한 블록을 수정할 수 없는 블록(즉, 사용할 수 없는 블록)으로 지정하고, 이를 스페어 영역에 표시하여 다음부터는 해당 영역이 사용되지 않도록 한다. 즉, 2 비트 이상의 에러가 발생되면 해당 블록을 사용불가 블록으로 스페어 영역에 표시하고 다음부터는 해당 블록이 사용되지 않도록 한다. 따라서, 메인 프로세서(210)는 NAND 플래시 메모리를 사용할 때 해당 정보를 독출함으로써 해당 블록이 제외되어 사용될 수 있도록 한다.
도 5에는 MCP 기술에 의해 단일 칩으로 구현될 수 있는 비휘발성 메모리(315)와 공유 메모리(320)간의 연동 방법이 개념적으로 예시되어 있다.
도 5에 예시된 바와 같이, 비휘발성 메모리(315) 내에는 메인 프로세서(210)의 부팅을 위한 MP 부트 코드, 어플리케이션 프로세서(215)의 부팅을 위한 AP 부트 코드, 메인 프로세서(210) 또는 어플리케이션 프로세서(215)의 동작시 필요한 프로그램 실행 코드, 어플리케이션 프로세서(215)의 멀티미디어 데이터(예를 들어, 이미지 데이터, 음원 데이터 등) 처리시 필요한 코드, MP 부트 코드 또는 AP 부트 코드에 대한 에러 발생시 복구를 위한 백업(Backup) 데이터 등이 저장된다. 각각의 데이터를 저장하기 위한 영역은 미리 할당될 수 있다.
또한, 공유 메모리(320)는 하나의 내부 제어부(Internal controller, 410)를 구비하며, 2개의 억세스 포트를 통해 각 프로세서(210, 215)가 저장 영역에 접속할 수 있도록 구성된다.
상술한 바와 같이, 저장 영역은 복수의 분할 영역으로 구분될 수 있다. 일 예로, 저장 영역은 메인 프로세서(210)만이 전용적으로 접속하여 데이터 기록(write) 및 독출(read)이 가능한 영역 A(520), 어플리케이션 프로세서(215)만이 전용적으로 접속하여 데이터 기록(write) 및 독출(read)이 가능한 영역 B(525), 메인 프로세서(210)와 어플리케이션 프로세서(215)가 모두 접속하여 데이터 기록 또는 독출할 수 있는 공통 영역(530)으로 구분될 수 있다. 공통 영역(530)은 메인 프로세서(210) 및 어플리케이션 프로세서(215)에 의해 억세스될 수 있는 영역이지만, 동시에 억세스될 수는 없으며 어느 하나의 프로세서가 공통 영역(530)에 접속한 경우 해당 정보가 타 프로세서에 의해 인식될 수 있어야 한다.
또한, 공유 메모리(320)의 저장 영역은 타 영역의 확장을 위해 이용될 수 있는 가변 영역(도시되지 않음)을 더 포함할 수도 있다. 가변 영역은 타 영역(예를 들어, 공통 영역)에 전체적으로 포함되어 해당 영역의 크기를 확장하거나, 복수의 영역(예를 들어, 영역 A와 영역 B)에 일부분씩 포함되도록 하여 해당 영역들의 크기를 확장할 수도 있다. 가변 영역은 각 영역에 고정적으로 포함되도록 제한되지는 않으며, 필요에 따라 가변적으로 특정 영역에 포함되도록 설정될 수 있다. 예를 들어, 가변 영역이 어떤 영역에 포함되도록 할 것인지 여부를 메인 프로세서(210)가 제어하는 경우, 메인 프로세서(210)는 부팅(booting) 과정에서 가변 영역이 특정 영역에 포함되도록 설정한 후, 임의의 데이터를 공유 메모리의 특정 영역(예를 들어, 영역 A 또는 공통 영역)에 기록하는 도중 해당 영역의 저장 공간이 부족한 경 우, 타 영역에 포함된 가변 영역이 해당 영역으로 이전되도록 제어할 수 있다. 가변 영역의 재설정 정보는 호스트 인터페이스를 통해 타 프로세서로 전달되어 인식되도록 함이 바람직할 것이다. 마찬가지로, 가변 영역의 재설정은 어플리케이션 프로세서(215)에 의해 수행되어 메인 프로세서(210)로 해당 정보가 전송되거나 메인 프로세서(210)로 재설정을 요청하여 가변 영역이 재설정되도록 할 수도 있을 것이다.
상술한 바와 같이, 공유 메모리(320)의 저장 영역이 각 용도에 따라 복수의 분할 영역으로 분할되면, 메인 프로세서(210)는 비휘발성 메모리(315)에 기록된 데이터를 상응하는 분할 영역에 복사(copy)하여 이용될 수 있도록 할 수 있다.
예를 들어, 메인 프로세서(210)가 부팅을 수행하는 경우, 메인 프로세서(210)의 컨트롤러(도시되지 않음)는 MP-NM 버스를 통해 비휘발성 메모리(315)에 접속하여 MP 부트 코드를 독출한 후, 독출한 MP 부트 코드를 공유 메모리(320)의 영역 A(520) 또는 공통 영역(530)에 기록한다. 해당 영역들로 메인 프로세서(210)가 접속할 수 있기 때문이다. 메인 프로세서(210)의 컨트롤러는 공유 메모리(320)에 기록된 MP 부트 코드를 이용하여 부팅을 수행할 수 있다. 비휘발성 메모리(315) 또는 공유 메모리(320)로부터 MP 부트 코드를 독출하기 위한 부트 로더(boot loader)는 하드웨어 구조로 컨트롤러에 포함될 수 있다.
마찬가지로, 메인 프로세서(210)가 어플리케이션 프로세서(215)로 부팅을 지시하기 위해, 메인 프로세서(210)의 컨트롤러는 MP-NM 버스를 통해 비휘발성 메모리(315)에 접속하여 AP 부트 코드를 독출한 후, 독출된 AP 부트 코드를 공통 영 역(530)에 기록한다. 어플리케이션 프로세서(215)는 AP-VM 버스를 통해 공유 메모리(320)에 접속하여 AP 부트 코드를 독출하여 부팅을 수행한다. 메인 프로세서(210)는 공통 영역(530)에 AP 부트 코드를 기록하기 이전 또는 이후에 어플리케이션 프로세서(215)로 부트 명령을 전송할 수 있다. 만일, AP 부트 코드의 기록 이전에 부트 명령이 수신된 경우, 어플리케이션 프로세서(215)는 메인 프로세서(210)가 공통 영역(530)에 대한 억세스를 종료한 후 공통 영역(530)으로의 억세스를 시도할 것이다. 공유 메모리(320)로부터 AP 부트 코드를 독출하기 위한 부트 로더(boot loader)는 하드웨어 구조로 컨트롤러부(255)에 포함될 수 있다.
또한, 메인 프로세서(210)는 비휘발성 메모리(315)에 기록된 데이터들 중 어플리케이션 프로세서(215)의 동작을 위해 필요한 데이터(예를 들어, 멀티미디어 실행 코드 등)를 공통 영역(530)에 기록함으로써 어플리케이션 프로세서(215)로 전달할 수 있다. 어플리케이션 프로세서(215)는 해당 데이터를 공통 영역(530)에 기록된 상태로 이용하거나 영역 B(525)로 이전하여 이용할 수도 있다.
도 6은 본 발명의 바람직한 일 실시예에 따른 부트 에러 검출 방법을 나타낸 순서도이다.
본 발명에 따른 부트 에러 검출은 메인 프로세서(210)의 컨트롤러 및/또는 어플리케이션 프로세서(215)의 컨트롤러부(255)에서 수행될 수 있다. 이하에서는 메인 프로세서(210)의 컨트롤러가 부트 에러 검출을 수행하는 과정을 중심으로 설명한다. 단, 설명의 편의를 위해 부트 데이터 독출 및 부트 에러 검출이 메인 프로 세서(210)에서 수행되는 것으로 통칭하여 설명한다.
도 6을 참조하면, 메인 프로세서(210)는 비휘발성 메모리(315)의 특정 영역에 기록된 부트 코드를 독출하고(단계 610), 독출된 부트 코드에 에러(error)가 포함되어 있는지 여부를 판단한다(단계 615).
에러가 포함되지 않은 경우, 메인 프로세서(210)는 독출한 부트 코드를 공유 메모리(320)에 기록하고(단계 630), 공유 메모리(320)에 기록한 부트 코드를 이용하여 부팅을 수행한다(단계 635). 만일 메인 프로세서(210)가 독출한 부트 코드가 AP 부트 코드인 경우, 어플리케이션 프로세서(215)는 메인 프로세서(210)로부터의 부트 명령에 따라 AP 부트 코드를 이용한 부팅을 수행할 것이다.
그러나, 에러가 포함된 경우 메인 프로세서(210)는 1비트 에러인지 여부를 판단한다(단계 620). 1비트 에러인 경우에는 1비트 에러 정정을 수행(단계 625)한 후, 단계 630으로 진행한다. 단계 625에 의해 오류 정정된 부트 코드는 새로운 백업 영역에 저장될 수 있다.
단계 620의 판단 결과로, 2비트 이상의 에러인 것으로 판단되면 메인 프로세서(210)는 비휘발성 메모리(315)의 백업 영역에서 부트 코드를 다시 독출하고(단계 640), 독출된 부트 코드에 에러가 포함되었는지 여부를 판단한다(단계 643).
에러가 포함되지 않은 경우에는 단계 630으로 진행한다.
그러나, 에러가 포함된 경우 메인 프로세서(210)는 1비트 에러인지 여부를 판단한다(단계 645). 1비트 에러인 경우에는 1비트 오류 정정을 수행(단계 650)한 후, 오류 정정된 부트 코드를 새로운 백업 영역에 저장한다(단계 655). 이후의 부 팅 과정에서는 새로운 백업 영역에 저장된 오류 정정된 부트 코드를 이용함으로써 보다 안정적인 부팅이 가능할 수 있다. 물론, 새로운 백업 영역에 오류 정정된 부트 코드를 저장하지 않고, 부트 코드가 저장된 영역(즉, MP 부트 코드 저장 영역 또는 AP 부트 코드 저장 영역)을 갱신할 수도 있다.
단계 645의 판단 결과로, 2비트 이상의 에러인 것으로 판단되면 메인 프로세서(210)는 에러 메시지를 표시부(145) 또는 스피커를 통해 출력한다.
상술한 바와 같이, 비휘발성 메모리(315)에 부트 코드 저장 영역뿐 아니라 부트 코드 백업 저장 영역을 더 구비하여 구동되는 본 발명에 따른 부트 에러 검출 방법은 부트 코드 저장 영역에 저장된 부트 코드에 에러가 존재하면 1비트 에러 정정 또는 부트 코드 백업 저장 영역에 저장된 부트 코드(백업)를 이용한 부팅이 수행되도록 한다. 부트 코드 백업 저장 영역에 저장된 부트 코드(백업)에 대해서도 1비트 에러 정정이 수행될 수도 있다. 또한, 1비트 에러 정정되거나 부트 코드 백업 저장 영역에서 독출한 에러없는 부트 코드(백업)를 새로운 백업 영역에 저장하거나 부트 코드 저장 영역을 갱신하도록 함으로써 추후 안정적인 부팅을 보장할 수 있다.
이제까지, 메인 프로세서(210)에 의해 수행되는 부트 에러 검출 방법을 중심으로 설명하였으며, 메인 프로세서(210)는 MP 부트 코드뿐 아니라 AP 부트 코드에 대해서도 부트 에러 검출 방법을 수행할 수 있다. 물론, AP 부트 코드에 대한 부트 에러 검출은 어플리케이션 프로세서(215)에 의해 수행될 수도 있다. 이를 위해 메인 프로세서(210)는 AP 부트 코드 저장 영역에 기록된 AP 부트 코드와 AP 부트 코 드 백업 저장 영역에 기록된 AP 부트 코드(백업)를 공유 메모리(320)에 기록하여야 할 것이다.
이제까지 부트 코드에 대한 에러 검출 및 정정 방법을 중심으로 설명하였으나, 각 프로세서에서 구동을 위해 필요한 데이터(예를 들어, 프로그램 실행 코드 등)에 대해서도 동일하게 적용될 수 있음은 별도의 설명이 없더라도 자명하다 할 것이다.