KR100822468B1 - 공유 메모리를 구비한 장치 및 코드 데이터 전송 방법 - Google Patents

공유 메모리를 구비한 장치 및 코드 데이터 전송 방법 Download PDF

Info

Publication number
KR100822468B1
KR100822468B1 KR1020060087284A KR20060087284A KR100822468B1 KR 100822468 B1 KR100822468 B1 KR 100822468B1 KR 1020060087284 A KR1020060087284 A KR 1020060087284A KR 20060087284 A KR20060087284 A KR 20060087284A KR 100822468 B1 KR100822468 B1 KR 100822468B1
Authority
KR
South Korea
Prior art keywords
processor
area
boot
boot code
common area
Prior art date
Application number
KR1020060087284A
Other languages
English (en)
Other versions
KR20080023408A (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 KR1020060087284A priority Critical patent/KR100822468B1/ko
Priority to PCT/KR2007/004009 priority patent/WO2008032935A1/en
Priority to US12/375,447 priority patent/US8266417B2/en
Publication of KR20080023408A publication Critical patent/KR20080023408A/ko
Application granted granted Critical
Publication of KR100822468B1 publication Critical patent/KR100822468B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 공유 메모리를 구비한 장치 및 코드 데이터 전송 방법에 관한 것이다. 본 발명의 바람직한 일 실시예에 따르면, 디지털 처리 장치에 있어서, n(2이상의 임의의 자연수)개의 프로세서들; 및 상기 프로세서들과 독립된 버스를 통해 각각 결합되며, 하나 이상의 프로세서의 부팅에 이용되기 위한 부트 코드가 기록되기 위한 부트 영역이 할당된 공유 메모리를 포함하는 디지털 처리 장치가 제공될 수 있다.
공유 메모리, 코드 데이터, 부트 코드, 데이터 전송

Description

공유 메모리를 구비한 장치 및 코드 데이터 전송 방법{Device having shared memory and method for transferring code data}
도 1은 종래 기술에 따른 메인 프로세서와 부가 프로세서가 부가 프로세서에 결합된 부가 메모리를 공유하는 구조를 나타낸 블록 구성도.
도 2는 본 발명의 바람직한 일 실시예에 따른 메인 프로세서, 부가 프로세서, 공유 메모리 및 디스플레이 장치간의 결합 구조를 나타낸 도면.
도 3 및 도 4는 본 발명의 바람직한 일 실시예들에 따른 공유 메모리의 구성을 나타낸 도면.
도 5는 본 발명의 바람직한 일 실시예에 따른 공유 메모리의 논리적 저장 영역과 물리적 저장 영역을 예시한 도면.
도 6은 본 발명의 바람직한 일 실시예에 따른 메인 프로세서가 부가 프로세서로 부트 코드를 전송하는 방법을 나타낸 순서도.
<도면의 주요 부분에 대한 부호의 설명>
210 : 메인 프로세서
220 : 부가 프로세서
230 : 공유 메모리
240 : 비휘발성 메모리
본 발명은 공유 메모리를 구비한 장치에 관한 것으로, 특히 복수의 프로세서에 의해 공유되는 메모리를 구비한 디지털 처리 장치 및 코드 데이터 전송 방법 전송 방법에 관한 것이다.
일반적으로 디지털 처리 장치는 복수의 프로세서를 포함하여 구현된다. 예를 들어, 카메라 기능을 구비한 이동통신 단말기의 경우, 이동통신 단말기의 전반적인 동작을 제어하는 메인 프로세서와 미리 설정된 기능(예를 들어, 카메라 기능)을 수행하기 위한 어플리케이션 프로세서(부가 프로세서)가 포함된다. 부가 프로세서의 동작 개시/종료 등은 메인 프로세서에 의해 제어될 수 있다. 디지털 처리 장치에 구비되는 부가 프로세서의 수량 및 종류는 해당 디지털 처리 장치가 어떤 기능을 구비하는지에 따라 다양할 수 있음은 자명하다.
도 1은 종래 기술에 따른 메인 프로세서와 부가 프로세서가 부가 프로세서에 결합된 부가 메모리를 공유하는 구조를 나타낸 블록 구성도이다. 이하에서는 부가 프로세서(120)가 멀티미디어 프로세서(multimedia processor)(즉, 이미지 센서(160)를 제어하고 이미지 센서(160)로부터 입력되는 멀티미디어 데이터 처리를 위한 프로세서)인 것을 가정하여 설명하기로 한다.
도 1을 참조하면, 메인 프로세서(110)는 복수의 메모리 컨트롤러(예를 들어, 제1 메모리 컨트롤러(112), 제2 메모리 컨트롤러(114))를 구비한다. 메인 프로세서(110)는 제1 메모리 컨트롤러(112)의 동작에 의해 MP(main processor)-AP(application processor) 버스(BUS)를 통해 부가 프로세서(120)에 접속한다. 부가 프로세서(120)에 접속된 메인 프로세서(110)는 부가 프로세서(120)의 경로 제어에 의해 부가 메모리(140)에 데이터를 기록(write) 하거나 부가 메모리(140)에 저장된 데이터를 독출(read)한다.
또한, 메인 프로세서(110)는 제2 메모리 컨트롤러(114)의 동작에 의해 MP-MM(main memory) 버스(BUS)를 통해 메인 프로세서(110)에 직접 결합된 메인 메모리(130)에 접속하여 데이터를 기록하거나 저장된 데이터를 독출한다. 여기서, 메인 메모리(130)는 비휘발성 메모리인 것을 가정하여 설명하기로 한다.
부가 프로세서(120)는 인터페이스(121), 컨트롤러(123), 이미지 스케일러(125), 멀티미디어 처리부(127), 메모리 제어부(129)를 포함한다.
부가 프로세서(120)는 AP-AM(application memory) 버스(BUS)를 통해 하나의 포트를 구비한 부가 메모리(140)에 결합된다. 그리고, 부가 프로세서(120)는 처리한 멀티미디어 데이터를 디스플레이하기 위한 표시부(150)와 결합될 수 있다.
인터페이스(121)는 부가 프로세서(120)와 결합된 메인 프로세서(110)간의 데이터 송수신을 수행한다. 부가 프로세서(120)는 인터페이스(121)를 통해 메인 프로세서(110)로부터 제어 신호가 수신되면 상응하는 처리 동작을 수행한다. 예를 들 어, 메인 프로세서(110)로부터 프리뷰 명령(즉, 외부 영상의 캡쳐 이전에 미리 보기 화면을 표시부(150)에 디스플레이하도록 지시하는 명령)이 수신되면, 부가 프로세서(120)는 이미지 센서(160)로부터 입력되는 실시간 영상 신호에 상응하는 실시간 이미지가 표시부(150)를 통해 표시되도록 처리한다.
컨트롤러(123)는 메인 프로세서(110)로부터 수신된 제어 신호에 상응하여 부가 프로세서(120)의 구동을 위해 내장된 프로그램을 이용하여 부가 프로세서(120)의 동작을 제어한다. 컨트롤러(123)는 예를 들어, MCU(microcontroller unit)일 수 있다. 예를 들어, 컨트롤러(123)는 부가 프로세서(120)의 전체적인 동작을 제어하고, 프로그램의 수행시 필요한 데이터를 부가 메모리(140)로부터 독출하며, 처리된 프로그래밍 결과를 부가 메모리(140)에 저장할 수 있다. 프로그램의 수행시 필요한 데이터는 메인 프로세서(130)가 메인 메모리(130)로부터 독출하여 MP-AP 버스를 통해 부가 프로세서(120)로 제공한 데이터로서, 메인 프로세서(110)가 부가 프로세서(120)의 경로 제어에 의해 부가 메모리(140)에 기록하거나, 부가 프로세서(120)에 의해 부가 메모리(140)에 기록된 데이터일 수 있다. 컨트롤러(123)는 프로그램의 수행시 필요한 데이터 독출을 위해 시스템 버스(170), 메모리 제어부(129)를 통해 부가 메모리(140)에 접근할 수 있다.
이미지 스케일러(125)는 컨트롤러(123)의 제어에 의해 이미지 센서(160)로부터 입력되는 영상 신호(또는 이미지 시그널 프로세서(ISP, Image Signal Processor)에 의해 처리된 데이터를 가공하여 미리 설정된 데이터로 변환한다. 이미지 스케일러(125)는 예를 들어, 이미지의 크기 조정, 색상 변경, 필터 링(filtering)에 의한 부드러운 이미지 생성 등을 수행한다. 이미지 스케일러(125)에 의해 처리된 데이터는 메모리 제어부(129)에 의한 경로 설정에 의해 AP-AM 버스를 통해 부가 메모리(140)에 저장된다.
멀티미디어 처리부(127)는 부가 메모리(140)에 저장된 이미지 데이터를 독출하여 미리 정해진 포맷(예를 들어, MPEG-4, JPEG 등)으로 압축하거나 필요한 효과를 주는 기능을 수행한다. 또한, 멀티미디어 처리부(127)는 메인 프로세서(110)로부터 수신되어 부가 메모리(140)에 저장된 압축 파일을 독출하여 디코딩을 수행한 후 표시부(150)에 출력하는 기능을 수행한다.
메모리 제어부(129)는 부가 프로세서(120)의 내부 구성 요소들이 부가 메모리(140)로의 접근을 요청하는 경우 우선 순위를 결정하여 어느 하나의 구성 요소가 부가 메모리(140)에 접근하도록 제어하는 기능을 수행한다. 또한, 메모리 제어부(129)는 메인 프로세서(110)와 부가 프로세서(120)가 동시에 부가 메모리(140)로의 접근을 요청한 경우, 미리 지정된 우선 순위를 참조하여 어느 하나의 프로세서가 부가 메모리(140)에 접근할 수 있도록 제어할 수 있다.
이와 같이, 종래의 메모리 구조는 복수의 프로세서들 및/또는 구성 요소들이 하나의 버스를 통해 하나의 메모리에 접근하는 구조이다. 따라서, 메인 프로세서(110)에서 임의의 부가 프로세서(120)의 메모리를 이용하기 위해서는 많은 시간적 제한을 가진다.
예를 들어, 메인 프로세서(110)가 메인 메모리(130)에 저장된 부트 코드(boot program code, 부가 프로세서(120)가 부팅(booting)되기 위해 필요한 코드 데이터)를 부가 메모리(150)로 전송하는 경우, 메인 프로세서(130)는 MP-MM 버스를 통해 메인 메모리(130)에 저장된 부트 코드를 독출한 후 MP-AP 버스를 통해 부가 프로세서(120)로 전송하여야 한다. 그리고, 부가 프로세서(120)는 메인 프로세서(110)를 통해 전송받은 부트 코드를 AP-AM 버스를 통해 부가 프로세서(120)에 연결된 부가 메모리(140)에 기록한다.
따라서, 종래의 메모리 공유 구조에 의하면 프로세서간에 전달되는 데이터의 크기가 클수록 부가 프로세서(120)에 연결된 부가 메모리(150)를 이용함에 많은 제한이 있을 수 밖에 없다. 이는 부가 프로세서(120)에 포함된 각각의 내부 구성 요소들이 처리 동작을 수행할 때 부가 메모리(140)에 연결된 AP-AM 버스를 이용해야 하기 때문이다.
상술한 바와 같이, 종래의 메모리 공유 구조는 고성능, 고화질의 이미지 처리 등의 경우 많은 시간 지연이 발생되는 문제점이 있었다. 또한, 부가 프로세서의 처리 효율이 감소되는 문제점도 있었다.
따라서, 상술한 문제점을 해결하기 위한 본 발명의 목적은 비휘발성 메모리(즉, 메인 메모리)에 저장된 프로그램 코드를 최단 시간에 전송할 수 있는 공유 메모리를 구비한 장치 및 공유 메모리 제어 방법을 제공하는 것이다.
본 발명의 다른 목적은 공유 메모리의 물리적 저장 영역인 뱅크 번호를 메인 프로세서와 부가 프로세서에서 각각 동일한 순서로 보이도록 제어할 수 있는 공유 메모리를 구비한 장치 및 공유 메모리 제어 방법을 제공하는 것이다.
본 발명의 또 다른 목적은 부가 프로세서 전용 영역의 0번지 주소를 포함하는 임의의 영역이 프로그램 코드 영역으로 할당된 공유 메모리를 구비한 장치 및 공유 메모리 제어 방법을 제공을 제공하는 것이다.
이외의 본 발명의 목적들은 하기의 실시예에 대한 설명을 통해 쉽게 이해될 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 바람직한 일 측면에 따르면, 복수의 프로세서에 의해 공유되는 공유 메모리의 일부 영역이 하나 이상의 프로세서의 부팅에 이용되기 위한 부트 코드가 기록되기 위한 부트 영역으로 할당된 공유 메모리를 포함한 디지털 처리 장치가 제공된다.
본 발명의 바람직한 일 실시예에 따르면, 디지털 처리 장치에 있어서, n(2이상의 임의의 자연수)개의 프로세서들; 및 상기 프로세서들과 독립된 버스를 통해 각각 결합되며, 하나 이상의 프로세서의 부팅에 이용되기 위한 부트 코드가 기록되기 위한 부트 영역이 할당된 공유 메모리를 포함하는 디지털 처리 장치가 제공될 수 있다.
상기 부트 영역에는 상기 프로세서의 프로그램 구동시 필요한 프로그램 코드 데이터가 더 저장될 수 있다.
상기 부트 코드는 임의의 프로세서가 하나 이상의 타 프로세서의 부팅을 위 해 기록한 코드 데이터일 수 있다.
상기 n개의 프로세서들은, 메인 프로세서; 상기 메인 프로세서와 독립된 제어 버스를 통해 각각 결합되며, 상기 제어 버스를 통해 입력되는 제어 신호에 따른 동작을 수행하는 n-1개의 부가 프로세서들로 구성될 수 있다.
상기 공유 메모리는, 상기 프로세서들에 상응하여 각각의 접속 경로를 제공하는 n개의 억세스 포트; 미리 설정된 프로세서만 접속할 수 있도록 미리 할당된 m(2이상의 임의의 자연수)개의 전용 영역; 상기 프로세서들이 중복 없이 독립적으로 접속하여 사용할 수 있는 하나 이상의 공동 영역; 및 임의의 프로세서가 상기 공동 영역에 접속 중인지 여부에 대한 억세스 상태 정보를 생성하여 상응하는 프로세서로 출력하는 내부 컨트롤러를 더 포함할 수 있다.
상기 부트 영역은 상응하는 프로세서들만이 접속할 수 있도록 미리 할당된 전용 영역일 수 있다.
임의의 프로세서는 상기 부트 코드를 상기 공동 영역에 기록하고, 상기 부트 코드에 상응하는 타 프로세서가 상기 기록된 부트 코드를 상기 부트 영역에 기록할 수 있다.
상기 공동 영역 및 상기 전용 영역으로 구성된 복수의 뱅크 중 상기 공동 영역이 상기 프로세서에 의해 상대적으로 하위 넘버로 인식되도록 설정될 수 있다.
상기 내부 컨트롤러는 상기 전용 영역 및 상기 공동 영역으로 구성된 복수의 뱅크 중 상기 공동 영역이 상대적으로 하위 넘버로 인식되도록 설정할 수 있다.
상기 부트 영역은 0번지 뱅크에 할당될 수 있다.
상기 메인 프로세서와 독립된 버스를 통해 결합되고, 상기 부트 코드를 저장하고 있는 비휘발성 메모리를 더 포함하되, 상기 메인 프로세서는 상기 부트 코드를 독출하여 상기 공동 영역에 기록하며, 상기 부트 코드에 상응하는 부가 프로세서는 상기 메인 프로세서의 제어에 의해 상기 부트 코드를 독출하여 상기 부트 영역에 기록할 수 있다.
상기 부가 프로세서가 상기 부트 코드의 기록을 완료하면, 상기 메인 프로세서는 상기 부트 코드의 실행을 위한 제어 명령을 상기 부가 프로세서로 전송하며, 상기 부가 프로세서는 상기 제어 명령에 상응하여 다음 명령이 입력될때까지 상기 부트 영역의 0번지에서 대기하거나 상기 부트 코드를 이용하여 부팅을 수행할 수 있다.
상기 메인 프로세서는 상기 부트 코드를 상기 공동 영역에 기록하기전에 상기 공동 영역에 에러가 있는지를 검사할 수 있다.
상기 메인 프로세서는 상기 에러가 있는 영역에는 상기 부트 코드를 기록하지 않을 수 있다.
상기 메인 프로세서는 미리 정해진 임의의 패턴 데이터를 상기 공동 영역에 기록한 후 다시 독출하여 기록하기 이전 데이터와 비교하여 에러를 검사할 수 있다.
본 발명의 바람직한 다른 실시예에 따르면, 디지털 처리 장치에 있어서, n(2이상의 임의의 자연수)개의 프로세서들; 및 상기 프로세서들과 독립된 버스를 통해 각각 결합되며, 하나 이상의 프로세서의 부팅에 이용되기 위한 부트 코드가 기록되 기 위한 부트 영역과 하나 이상의 공동 영역이 할당되며, 임의의 공동 영역에 임의의 프로세서가 접속중인지 여부에 대한 억세스 상태 정보를 출력하는 공유 메모리를 포함하는 디지털 처리 장치가 제공될 수 있다.
상기 공유 메모리는, 상기 프로세서들에 상응하여 각각의 접속 경로를 제공하는 n(2이상의 임의의 자연수)개의 억세스 포트; 미리 설정된 프로세서만 접속할 수 있도록 미리 할당된 m(2이상의 임의의 자연수)개의 전용 영역; 임의의 프로세서가 상기 공동 영역에 접속 중인지 여부에 대한 접속 상태 정보를 생성하여 상응하는 프로세서로 출력하는 내부 컨트롤러를 더 포함할 수 있다.
임의의 프로세서로 입력되는 상기 억세스 상태 정보는 타 프로세서가 상기 공동 영역에 억세스 중이거나 억세스를 시도한 경우에는 제1 상태 신호로 출력되며, 상기 타 프로세서가 상기 공동 영역에 억세스하지 않은 경우에는 제2 상태 신호로 출력될 수 있다.
상기 제1 상태 신호의 입력 중에 상기 공유 메모리로 억세스 요청을 전송한 상기 프로세서는 상기 억세스 상태 정보가 상기 제2 상태 신호로 갱신되어 입력된 후 상기 억세스 요청을 상기 공유 메모리로 재전송할 수 있다.
상기 공동 영역으로의 억세스를 위해 각 프로세서는 주소 정보, 제어 신호 중 하나 이상을 포함하는 억세스 요청을 상기 공유 메모리로 입력할 수 있다.
상기 제어 신호는 상기 공동 영역을 지시하는 주소 신호 및 상기 공유 메모리의 칩 선택(chip select) 신호를 포함할 수 있다.
본 발명의 바람직한 또 다른 실시예에 따르면, 복수의 프로세서에 의해 공유 되는 공유 메모리에 있어서, 상기 프로세서들에 상응하여 각각의 접속 경로를 제공하는 n(2이상의 임의의 자연수)개의 억세스 포트; 미리 설정된 프로세서만 접속할 수 있도록 미리 할당된 m(2이상의 임의의 자연수)개의 전용 영역; 상기 프로세서들이 중복 없이 독립적으로 접속하여 사용할 수 있는 하나 이상의 공동 영역; 하나 이상의 프로세서의 부팅에 이용되기 위한 부트 코드가 기록되기 위한 부트 영역; 및 임의의 프로세서가 상기 공동 영역에 접속 중인지 여부에 대한 접속 상태 정보를 생성하여 상응하는 프로세서로 출력하는 내부 컨트롤러를 포함하는 공유 메모리가 제공될 수 있다.
상기 공동 영역 및 상기 전용 영역으로 구성된 복수의 뱅크 중 상기 공동 영역이 상기 프로세서에 의해 상대적으로 하위 넘버로 인식되도록 설정될 수 있다.
본 발명의 바람직한 다른 측면에 따르면, 메인 프로세서와 부가 프로세서에 의해 공유되는 공유 메모리를 구비한 디지털 처리 장치가 코드 데이터를 전송하기 위한 방법이 제공된다.
본 발명의 바람직한 일 실시예에 따르면, 메인 프로세서와 부가 프로세서에 의해 공유되는 공유 메모리를 구비한 디지털 처리 장치가 코드 데이터를 전송하기 위한 방법에 있어서, (a) 상기 메인 프로세서는 제1 버스를 통해 비휘발성 메모리로부터 상기 부트 코드를 독출하는 단계; (b) 상기 메인 프로세서가 상기 코드 데이터를 공동 영역에 기록하고, 부트 코드 독출 명령을 제2 버스를 통해 상기 부가 프로세서로 전송하는 단계; 및 (c) 상기 부가 프로세서가 제3 버스를 통해 상기 공 동 영역에 기록된 상기 부트 코드를 독출하여 부트 영역에 기록하는 단계를 포함하는 코드 데이터 전송 방법이 제공될 수 있다.
상기 메인 프로세서가 상기 공동 영역에 불량 영역이 존재하는지를 검사하는 단계; 및 불량 영역이 존재하면, 상기 불량 영역에 상응하는 주소 정보를 상기 비휘발성 메모리에 저장하는 단계가 상기 단계 (b) 이전에 수행될 수 있다.
상기 부트 코드 독출 명령은 독출할 상기 부트 코드에 상응하는 주소 신호를 포함할 수 있다.
상기 메인 프로세서가 상기 부가 프로세서로 상기 부트 코드를 이용한 부팅 수행을 지시하는 부팅 명령을 전송하는 단계를 더 포함할 수 있다.
상기 부트 코드 독출 명령이 상기 부팅 수행 지시 명령을 포함하는 경우, 상기 (c) 단계 완료 후 상기 부가 프로세서는 상기 부트 코드를 이용하여 부팅을 수행하는 단계를 더 포함할 수 있다.
상기 공동 영역 및 상기 전용 영역으로 구성된 복수의 뱅크 중 상기 공동 영역이 상기 프로세서에 의해 상대적으로 하위 넘버로 인식되도록 설정될 수 있다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 이하, 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다. 또한, 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
도 2는 본 발명의 바람직한 일 실시예에 따른 메인 프로세서, 부가 프로세서, 공유 메모리 및 디스플레이 장치간의 결합 구조를 나타낸 도면이며, 도 3은 본 발명의 바람직한 일 실시예들에 따른 공유 메모리의 구성을 나타낸 도면이고, 도 5는 본 발명의 바람직한 일 실시예에 따른 공유 메모리의 논리적 저장 영역과 물리적 저장 영역을 예시한 도면이다.
도 2에서 보여지는 바와 같이, 본 발명에 따른 디지털 처리 장치에서 메인 프로세서(210)와 부가 프로세서(220)는 하나의 공유 메모리(230)를 공유하는 구조로 결합될 수 있다.
메인 프로세서(210)는 MP-NM 버스를 통해 비휘발성 메모리(non-volatile memory, 240)와 결합되고, MP-SM 버스를 통해 공유 메모리(share memory, 230)와 결합된다. 공유 메모리(230)는 휘발성 메모리일 수 있다.
그리고, 메인 프로세서(210)는 MP-AP 버스를 통해 부가 프로세서(220)와 결합되며, MP-AP 버스를 통해 부가 프로세서(220)를 제어하기 위한 제어 명령(예를 들어, 공유 메모리(230)에 기록한 데이터의 처리 지시 등의 처리 명령 등)을 출력 할 수도 있다. 여기서, 비휘발성 메모리(240)에는 부가 프로세서(220)의 미리 지정된 프로그램 동작시 이용되기 위한 프로그램 코드(program code)들이 저장될 수 있다. 프로그램 코드에는 부트 코드(boot code)가 포함될 수 있다.
부가 프로세서(220)는 AP-SM 버스를 통해 공유 메모리(230)와 결합되어 공유 메모리(230)의 일정 저장 영역에 임의의 데이터를 기록하거나 임의의 저장 영역에 기록된 데이터를 독출(read)한다. 예를 들어, 부가 프로세서(220)는 메인 프로세서(210)의 제어에 의해 동영상(예를 들어, MPEG-4), 그래픽, 카메라 기능, 오디오 파일 재생(예를 들어, MP3 등) 등의 처리를 위한 전용 프로세서일 수 있다.
예를 들어, 부가 프로세서(220)는 MP-AP 버스를 통해 메인 프로세서(210)로부터 처리 명령(예를 들어, 임의의 주소에 기록된 데이터에 대한 처리 명령 및 처리 유형 지시)이 수신되면, 부가 프로세서(220)는 해당 저장 영역에 기록된 데이터(즉, 메인 프로세서(210)에 의해 기록된 데이터)를 독출(read)할 수 있다. 여기서, 메인 프로세서(210)는 공동 영역(325 - 도 3 참조)에 해당 데이터를 저장할 것이므로 부가 프로세서(220)의 공동 영역(325) 접근을 위해 메인 프로세서(210)가 먼저 해당 영역에 대한 접근을 완료(종료)해야만 한다.
따라서, 부가 프로세서(220)는 공동 영역(325)으로의 접속을 위해 억세스 요청 정보를 공유 메모리(310)로 전송할 수 있다. 공유 메모리(310)는 임의의 프로세서로부터 억세스 요청 정보가 수신되면 상응하는 억세스 상태 정보를 출력한다. 공유 메모리(310)와 각 프로세서는 억세스 상태 정보를 입출력하기 위한 핀들을 구비할 수 있다. 억세스 상태 정보의 입출력을 위한 핀들의 수는 공동 영역(325)의 수 량에 부합하도록 설정될 수 있다. 따라서, 공동 영역(325)에 접속중인 메인 프로세서(210)는 공유 메모리(230)로부터 입력되는 억세스 상태 정보를 이용하여 부가 프로세서(220)의 공동 영역(325)로의 억세스 요청을 인식한 후 공동 영역(325)에 대한 접속을 종료할 수 있다.
또한, 부가 프로세서(220) 후단에는 메인 프로세서(210)에 의해 직접 제어되거나 메인 프로세서(210)의 처리 명령에 따라 부가 프로세서(220)에 의해 제어되는 디스플레이 장치(250)가 결합될 수 있다. 도 2에서는 부가 프로세서(220)에 디스플레이 장치(250)만 결합된것으로 도시되어 있으나, 구현 방법에 따라 결합되는 출력 장치는 다양할 수 있음은 당연하다.
공유 메모리(230)는 결합된 복수의 프로세서(예를 들어, 메인 프로세서(210) 및 부가 프로세서(220))에 의해 공유되는 구조이며, 공유 메모리(230)를 공유하는 프로세서들의 수량에 상응하는 억세스 포트(access port)를 구비한다.
예를 들어, 메인 프로세서(210)와 부가 프로세서(220)가 공유 메모리(230)를 공유한다고 가정하면, 공유 메모리(230)는 도 3에 예시된 바와 같이 2개의 억세스 포트(즉, 제1 억세스 포트(310), 제2 억세스 포트(335))를 구비할 수 있다.
각각의 억세스 포트는 상응하는 프로세서와 어드레스(address) 신호를 송수신하기 위한 n개의 핀, 데이터(data) 신호를 송수신하기 위한 m개의 핀, 제어(control) 신호를 송수신하기 위한 k개의 핀, 각각의 프로세서들에 의해 공동으로 접근할 수 있는 공유 메모리(230)의 공동 영역(common area)에 대한 억세스 상태 정보를 출력하기 위한 p개의 핀을 더 구비할 수 있다. 여기서, n, m, k, p는 각 각 임의의 자연수 일 수 있다. 각 프로세서는 공동 영역 접속을 위한 억세스 요청 정보를 어드레스 신호 또는 칩 셀렉트 신호 등의 형태로 공유 메모리(230)로 전송할 수 있다.
도 3 및 도 4에서 예시된 바와 같이, 공유 메모리(230)는 하나의 내부 컨트롤러(internal controller, 315) 및 복수의 분할 영역으로 구분된 저장 영역을 포함할 수 있다. 내부 컨트롤러(315)는 제1 억세스 포트(310) 및 제2 억세스 포트(335)를 통해 각각의 프로세서(210, 220)에 결합되며, 각 프로세서(210, 220)에 대해 동일하거나 독립적인 클럭(clock)이 사용될 수 있다.
공유 메모리(230)는 복수의 저장 영역으로 분할될 수 있다. 분할된 저장 영역은 메인 프로세서(210)와 부가 프로세서(220)에 각각 개별적으로 할당되는 전용 영역들(즉, 제1 영역(320), 제2 영역(330)), 메인 프로세서(210)와 부가 프로세서(220)가 중첩되지 않도록 선택적으로 접속하여 사용할 수 있는 하나 이상의 공동 영역(325)과 부가 프로세서(220)의 동작을 위해 필요한 프로그램 코드가 기록되는 프로그램 코드 영역(340)을 포함할 수 있다.
만일 프로그램 코드 영역(340)에 기록되는 데이터가 부가 프로세서(220)의 부팅을 위한 부트 데이터로 제한되는 경우 프로그램 코드 영역(340)는 부트 영역으로 칭해질 수도 있을 것이다.
여기서, 전용 영역들(제1 영역(320), 제2 영역(330)은 해당 분할 영역에 상응하도록 미리 설정된 프로세서들만 상응하는 억세스 포트를 통해 독점적으로 접속할 수 있는 영역이다. 예를 들어, 제1 영역(320)은 제1 억세스 포트(310)를 통해 메인 프로세서(210)만 접속할 수 있도록 제한되고, 제2 영역(330)은 제2 억세스 포트(335)를 통해 부가 프로세서(220)만 접속할 수 있도록 제한될 수 있다.
그리고, 공동 영역(325)은 중복되지 않은 시점에 개별적으로 접속할 수 있는 영역이다. 예를 들어, 메인 프로세서(210)가 접속중이지 않으면 부가 프로세서(220)가 접속할 수 있으며, 메인 프로세서(210)가 접속중이라면 부가 프로세서(220)는 메인 프로세서(210)에 의한 접속이 완료된 후에야 해당 공동 영역에 접근할 수 있다. 이는 공유 메모리(230)의 내부 컨트롤러(315)가 공동 영역(330)에 대한 억세스 상태 정보를 각 프로세서로 출력하고 있으므로 어떤 프로세서가 공동 영역(330)에 접속중인지 인식할 수 있기 때문이다. 예를 들어, 특정 공동 영역에 임의의 프로세서가 접속중인 경우 내부 컨트롤러가 하이(High) 신호 형태의 억세스 상태 정보를 출력할 수 있으며, 이에 대해서는 이후 도 4를 참조하여 상세히 설명하기로 한다.
프로그램 코드 영역(340)은 부가 프로세서(220)에 상응하도록 설정된 전용 영역(예를 들어, 제2 영역(330))의 일부에 할당될 수 있다. 물론, 메인 프로세서(210)의 전용 영역(예를 들어, 제1 영역(320))의 일부에도 메인 프로세서(210)를 위한 프로그램 코드 영역이 별도로 할당될 수도 있다. 다만, 메인 프로세서(210)는 직접 결합된 비휘발성 메모리(240)로부터 프로그램 코드를 독출하여 이용할 수 있어 상응하는 프로그램 코드 영역의 할당이 불필요할 수 있다. 물론, 메인 프로세서(210)가 필요 시점마다 프로그램 코드를 독출함에 있어 동작 속도가 비휘발성 메모리(240)보다 공유 메모리(230)를 이용함이 효과적인 경우 프로그램 코드 영역이 별도로 할당될 수도 있을 것이다.
예를 들어, 공유 메모리(230)가 SDRAM인 경우, 공유 메모리(230)의 내부 구조는 뱅크(bank) 단위로 저장 영역을 설정할 수 있다. 물론, 미리 지정된 분할 기준(예를 들어, 주소 범위 지정 등)에 의해 각각의 분할 영역을 할당할 수도 있음은 당연하나 뱅크 단위로 설정하는 것이 가장 바람직하다. 만일 공유 메모리(230)가 256Mbit SDRAM이라면, 8MB(byte) ㅧ 8비트 ㅧ 4 뱅크로 설명될 수 있다. 해당 뱅크들은 각각을 제1 영역(320), 공동 영역(325), 제2 영역(330), 프로그램 코드 영역(340)으로 할당할 수 있다.
도 5를 참조하면, 메인 프로세서(210)에서 인식되는 공유 메모리(230)의 뱅크 번호는 실제 공유 메모리(230)의 뱅크 번호와 동일하게 인식되도록 할 수 있다.
그러나 부가 프로세서(220)에 의해 인식되는 공유 메모리(230)의 뱅크 번호는 공동 영역(325)의 뱅크 번호보다 크기 때문에, 부가 프로세서(220)의 경우, 프로그램 코드 영역(340)이 공동 영역(325)으로 할당되게 된다. 그러나, 프로그램 코드 영역(340)은 프로그램 코드(예를 들어, 부트 코드)가 기록되는 저장 영역으로 부트 코드의 특성상 항상 공유 메모리(230)에 존재해야하므로 문제가 된다. 따라서, 부가 프로세서(220)에서 공유 메모리(230)를 보는 경우에는 뱅크 번호가 역순으로 보이도록 제어되어야 한다. 이는 일반적으로 0번지의 뱅크가 리셋 주소(reset address)로 이용되기 때문이다. 즉, 실제 공유 메모리(230)의 뱅크 번호에 의하면 공동 영역(325)의 뱅크 번호가 앞서기 때문에 0번지의 뱅크를 공동 영역(325)으로 이용하여야 하나 공동 영역(325)은 임시 데이터가 저장되는 공간으로 리셋 주소로 서 이용함에는 문제가 있다. 또한, 부트 코드의 특성상 프로그램 코드 영역(340)은 0번지의 뱅크를 포함하여야만 한다. 따라서, 공유 메모리(230)는 부가 프로세서(220)에 대해 뱅크 번호가 역순으로 인식되어 처리되도록 제어해야만 한다.
예를 들어, 부가 프로세서(220)는 공유 메모리(230)의 내부 컨트롤러(315)로부터 입력되는 뱅크 신호를 역순으로 해석함으로써 뱅크 번호를 역순으로 인식되도록 할 수 있다. 이로 인해, 메인 프로세서(210)가 복수의 분할 영역을 순방향으로 억세스 한다고 가정하면, 부가 프로세서(220)는 상응하는 분할 영역들을 역방향으로 억세스한다고 볼 수도 있다. 이로 인해, 부가 프로세서(220)에서 프로그램 코드 영역(340)이 0번지 뱅크를 사용하는 것으로 제어할 수 있다.
도 4는 본 발명의 바람직한 다른 실시예에 따른 공유 메모리의 구성을 나타낸 도면이다. 이하, 도 4를 참조하여 공유 메모리(230)에서 억세스 상태 정보를 제공하는 방법에 대해 설명하기로 한다. 이하에서는 이해와 설명의 편의를 위해, 메인 프로세서(210)가 프로그램 코드들 중 하나인 부트 코드를 부가 프로세서(220)로 전송하기 위해 제1 공동 영역(415)에 기록하고자 하는 것을 가정하여 설명하기로 한다. 또한, 도 4에 도시된 바와 같이, 공유 메모리(230)가 각 프로세서로 출력하는 억세스 상태 정보(즉, 제1 status, 제2 status)는 각각 제1 공동 영역(415) 및 제2 공동 영역(420)에 대한 억세스 상태를 나타낸다. 여기서, 제1 status는 제1 공동 영역(415)에 대한 억세스 상태 정보인 것으로 가정하고, 제2 status는 제2 공동 영역(420)에 대한 억세스 상태 정보인 것으로 가정하여 설명한다. 또한, 메인 프로 세서(210)가 제1 공동 영역(415)을 접속 중인 경우, 부가 프로세서(220)로 출력되는 제1 status는 하이 상태(접속 중이거나, 접속 요청된 상태임을 나타내는 것으로 가정함)의 신호가 출력될 것이고, 그 상태에서 부가 프로세서(220)가 제1 공동 영역(415)에 억세스 요청한 경우 메인 프로세서(210)로 출력되는 제1 status는 하이 상태(접속 중이거나, 접속 요청된 상태임을 나타내는 것으로 가정함)의 신호로 전환될 것이다. 즉, 메인 프로세서(210)로 출력되는 억세스 상태 정보는 각 공동 영역에 대한 부가 프로세서(220)의 접속 중 또는 접속 요청 여부를 나타내고, 부가 프로세서(220)로 출력되는 억세스 상태 정보는 각 공동 영역에 대한 메인 프로세서(210)의 접속 중 또는 접속 요청 여부를 나타내도록 설정될 수 있다.
메인 프로세서(210)는 공유 메모리(230)의 제1 공동 영역(415)에 접속하여 부트 코드를 기록하기 위해 제1 억세스 포트(310)를 통해 공유 메모리(230)로 제1 공동 영역(415)에 대한 접속 요청을 전송한다. 메인 프로세서(210)는 제1 공동 영역(415)으로의 접속 이전에 공유 메모리(230)로부터 출력되는 억세스 상태 정보를 참조하여 제1 공동 영역(415)에 부가 프로세서(220)가 접속 중인지 또는 접속 요청한 상태인지 또는 비접속 상태인지를 미리 인식할 수 있다.
여기서, 접속 요청은 내부 컨트롤러(315) 또는 저장 영역의 일정 영역에 미리 설정된 레지스터에 미리 설정된 값을 기록하거나, 주소 신호를 내부 컨트롤러(315)로 전송하거나 주소 신호와 제어 신호를 함께 전송하는 것일 수 있다. 주소 신호는 데이터의 기록을 위한 제1 공동 영역(415) 내의 임의의 주소 정보(제1 Addr)일 수 있다. 또한, 제어 신호는 제1 공동 영역(415)으로의 데이터 기록을 지 시하기 위한 제1 WE(write enable), 제1 공동 영역(415)에 대한 칩 선택 신호(제1 CS : chip select), 클럭(제1 CLK) 등 중 하나 이상일 수 있다.
내부 컨트롤러(315)는 접속 요청을 통해 메인 프로세서(210)가 제1 공동 영역(415)에 접속을 시도함을 인식할 수 있다.
만일 접속 요청이 미리 설정된 레지스터에 기록되는 미리 설정된 값이라면, 내부 컨트롤러(315)는 해당 레지스터에 해당 값이 기록되었는지 여부로서 접속 시도 여부를 판단할 수 있다. 레지스터는 각 프로세서에 상응하여 미리 설정될 수 있다. 예를 들어, 레지스터가 각 프로세서에 대해 미리 설정된 값이라면, 상응하는 프로세서는 접속을 시도하기 위해 해당 레지스터에 제1 정보(예를 들어, '1')를 기록하고, 접속을 종료한 후 해당 레지스터에 제2 정보(예를 들어, "0")를 기록할 수 있다.
만일 접속 요청이 주소 신호인 경우, 내부 컨트롤러(315)는 입력된 주소 신호를 이용하여 메인 프로세서(210)가 제1 공동 영역(415)에 접속을 시도함을 인식할 수 있다. 이는 당해 접속 요청이 주소 신호와 제어 신호로 구성된 경우에도 동일하게 적용될 수 있다. 다만, 접속 요청이 제어 신호를 더 포함하는 경우, 내부 컨트롤러(315)는 메인 프로세서(210)가 어떤 동작을 수행하기 위해 제1 공동 영역(415)에 접속을 시도하는지도 판단할 수 있다.
공유 메모리(230)는 입력된 접속 요청을 이용하여 메인 프로세서(210)가 제1 공동 영역(415)에 접속을 시도하는 것으로 인식하면, 이에 상응하도록 부가 프로세서(220)로 출력되는 억세스 상태 정보를 변경할 수 있다.
메인 프로세서(210)는 공유 메모리(230)로부터 입력되는 제1 공동 영역(415)에 대한 억세스 상태 정보를 참조하여 부가 프로세서(220)가 아직 제1 공동 영역(415)에 접속하지 않은 상태라면 제1 공동 영역(415)에 접속할 수 있다. 또는, 제1 공동 영역(415)에 아직 부가 프로세서(220)가 접속하지 않은 상태라면, 내부 컨트롤러(315)는 메인 프로세서(210)에 제1 공동 영역(415)에 접속되도록 제어할 수도 있다. 이 경우, 공유 메모리(230)는 메인 프로세서(210)가 제1 공동 영역(415)에 접속을 요청한 시점 또는 접속을 개시한 시점부터 하이 상태의 억세스 상태 정보를 하이 상태의 신호로 전환하여 부가 프로세서(220)로 출력할 수 있을 것이며, 이를 통해 부가 프로세서(220)는 메인 프로세서(210)가 제1 공동 영역(415)에 억세스 요청 또는 접속 중임을 인지할 수 있다.
이는 공동 영역이 하나인 경우와 둘 이상의 분리된 경우 각각의 공동 영역에 대해서도 마찬가지로 적용될 수 있으며, 부가 프로세서(220)가 임의의 공동 영역에 접속을 시도하는 경우에도 동일하게 적용될 수 있다. 따라서, 이에 대한 별도의 설명은 생략하기로 한다.
도 6은 본 발명의 바람직한 일 실시예에 따른 메인 프로세서가 부가 프로세서로 부트 코드를 전송하는 방법을 나타낸 순서도이다. 이하에서는 메인 프로세서(210)가 부가 프로세서(220)의 부팅을 위해 제공되어야 하는 부트 코드를 제공하는 것을 가정하여 설명하기로 한다. 또한, 이하에서는 부가 프로세서(220)에서 인식되는 0번지 뱅크가 프로그램 코드 영역(340)으로 할당되어 있는 것을 가정하여 설명한다. 이를 위해, 부가 프로세서(220)는 공유 메모리(230)을 메인 프로세서(210)의 접속 방향과 역방향으로 접속되도록 제어할 수 있다. 또는 내부 컨트롤러(315)는 부가 프로세서(220)가 공유 메모리(230)의 각 영역에 대한 메인 프로세서(210)의 접속 방향과 역방향으로 접속되도록 제어할 수 있다.
단계 610에서 메인 프로세서(210)는 비휘발성 메모리(240)로부터 부트 코드를 독출한다. 그리고, 메인 프로세서(210)는 독출한 부트 코드에 에러가 있는지 여부를 판단한다(단계 615). 독출한 부트 코드의 에러 여부는 예를 들어 패리티(parity) 체크에 의해 판단될 수 있다.
만일 에러가 있다고 판단되면, 메인 프로세서(210)는 단계 610으로 진행하여 부트 코드를 비휘발성 메모리(240)로부터 재독출한다.
그러나 만일 에러가 없다고 판단되면, 단계 620에서 메인 프로세서(210)는 독출한 부트 코드를 공동 영역(325)에 기록하기 위해, 공동 영역(325)에 불량 영역(bad area)이 있는지 여부를 검사한다(단계 620). 또한, 메인 프로세서(210)는 전용 영역으로 할당된 제1 영역(320)에 대한 불량 영역(bad area) 검사를 더 수행할 수 있다.
예를 들어, 메인 프로세서(210)는 미리 정해진 제어 신호, 주소 신호 및 데이터 신호 등 중 하나 이상을 이용하여 임의의 영역(즉, 제1 영역(320) 또는 공동 영역(325))에 기록 또는/및 독출을 통해 불량 영역이 존재하는지 여부를 검사할 수 있다.
즉, 메인 프로세서(210)는 제1 영역(320) 또는 공동 영역(325)에 상응하는 주소 신호에 미리 정해진 임의의 데이터(예를 들어, 특정 패턴(pattern)에 해당하는 데이터)를 기록한 후 해당 주소에서 이전 기록한 데이터를 독출하여 비교함으로써 불량 영역인지 아닌지를 판단할 수 있다(diagonostic 또는 Write verify 검사 등).
만일 불량 영역이 존재하면, 단계 625에서 메인 프로세서(210)는 불량 영역으로 결정된 영역의 주소 정보를 비휘발성 메모리(240)에 저장한다.
그러나, 만일 불량 영역이 존재하지 않거나 불량 영역으로 결정된 영역의 주소 정보의 기록이 완료되면, 단계 630에서 메인 프로세서(210)는 독출한 부트 코드를 MP-SM 버스와 제1 억세스 포트(310)를 이용하여 공동 영역(325)에 기록한다. 물론, 부트 코드의 기록시 불량 영역에 대한 주소 정보가 기록되어 있다면 해당 위치에는 부트 코드가 기록되지 않을 것이다. 여기서, 메인 프로세서(210)는 공유 메모리(230)로부터 공동 영역(325)에 대한 억세스 상태 정보를 입력받아 공동 영역(325)이 사용 가능한 경우에 부트 코드를 기록할 수 있다. 예를 들어, 메인 프로세서(210)는 공유 메모리(230)의 내부 컨트롤러(315)에 공동 영역(325)의 억세스 상태에 상응하여 갱신되도록 설정된 레지스터(미도시)를 제1 정보(예를 들어, '1')로 갱신할 수 있다. 이를 통해 부가 프로세서(220)가 공동 영역(325)에 접근을 자제하도록 하기 위해, 공유 메모리(230)는 하이 상태의 억세스 상태 정보를 부가 프로세서(220)로 출력하여 다른 프로세서에 의해 사용중임을 알릴 수 있다. 그러나, 만일 공동 영역(325)이 복수의 서브 영역으로 분할된 경우라면 부가 프로세서(220)가 접속하지 않은 다른 서브 영역으로 접속하여 부트 코드를 기록할 수도 있을 것 이다.
단계 635에서 메인 프로세서(210)는 공동 영역(325)에 부트 코드 기록이 완료되었는지 여부를 판단한다.
예를 들어, 메인 프로세서(210)는 부트 코드의 전체 크기를 알고 있으므로 부트 코드가 기록될 마지막 주소도 알 수 있다. 따라서, 메인 프로세서(210)는 마지막 주소까지 기록이 완료되었다면 부트 코드를 모두 기록한 것으로 판단할 수 있다. 또한, 메인 프로세서(210)는 부트 코드를 기록하는 도중 임의의 셀에 기록된 데이터가 기록을 위해 독출한 데이터와 일치하는지를 실시간 검사할 수도 있다.
만일 부트 코드의 기록이 완료되지 않았다면, 메인 프로세서는 단계 635에서 대기(즉, 부트 코드를 기록중인 상태로 유지)한다.
그러나 만일 부트 코드의 기록이 완료되었다고 결정되면, 단계 640에서 메인 프로세서(210)는 MP-AP 버스를 통해 부가 프로세서(220)로 부트 코드의 독출을 지시하는 제어 명령(이하, "부트 코드 독출 명령"이라 칭함)을 출력한다. 메인 프로세서(210)는 상응하는 제어 명령의 출력 이전에 해당 공동 영역(325)에 대한 접속을 종료할 것이고, 공유 메모리(230)는 갱신된 억세스 상태 정보를 부가 프로세서(220)로 출력할 것이다.
여기서, 부트 코드 독출 명령은 공동 영역(325)에 저장된 부트 코드의 주소 정보를 포함할 수 있다.
단계 645에서 부가 프로세서(220)는 부트 코드 독출 명령에 의해 공동 영역(325)으로부터 부트 코드를 독출하여 전용 영역(제2 영역(330))에 기록한다. 상 술한 바와 같이, 부가 프로세서(220)는 공유 메모리(230)의 물리적 저장 영역을 역방향으로 억세스하므로 독출된 부트 코드를 제2 영역(330)에 상응하는 뱅크의 0번지 주소(즉, 프로그램 코드 영역(340))에 기록할 수 있다.
또한, 부가 프로세서(220)는 제2 영역(330)의 안정성에 대해 확인하기 위해 제2 영역(330)에 부트 코드를 기록한 후 다시 독출하여 이전 기록한 부트 코드와 동일한지를 검사할 수 있다.
단계 650에서 부가 프로세서(220)는 부트 코드의 기록이 완료되었는지 여부를 판단한다.
예를 들어, 부가 프로세서(220)는 메인 프로세서(210)로부터 부트 코드의 전체 크기에 관한 정보를 입력받아 알고 있으므로, 기록한 부트 코드의 크기와 전체 크기 정보를 비교하여 모두 기록하였는지를 여부를 결정할 수 있다.
만일 부트 코드 기록이 완료되지 않았다면, 부가 프로세서는 단계 650에서 대기한다.
그러나 만일 부트 코드 기록이 완료되었다면, 단계 655에서 부가 프로세서(220)는 부트 코드를 이용하여 부팅을 수행한다. 예를 들어, 메인 프로세서(210)로부터 입력된 부트 코드 독출 명령은 부트 코드를 기록을 완료한 후 해당 부트 코드를 이용하여 부팅을 수행하도록 지시하는 제어 명령(이하, "부팅 수행 지시 명령"이라 칭하기로 함)을 포함할 수 있다. 따라서, 부가 프로세서(220)는 부트 코드의 기록을 완료한 후 부트 코드를 이용하여 부팅을 수행할 수 있다.
물론 구현 방법에 따라, 부가 프로세서(220)가 부트 코드의 기록을 완료한 후, 부트 코드 기록 완료를 알리는 미리 설정된 제어 명령을 메인 프로세서(210)로 전달하면, 메인 프로세서(210)가 부가 프로세서(220)로 부트 코드를 이용하여 부팅을 수행하기 위한 제어 신호(부팅 수행 지시 명령)를 전달하도록 구현할 수도 있다.
상술한 바와 같이, 본 발명에 따른 공유 메모리를 구비한 장치 및 공유 메모리 제어 방법을 제공을 제공함으로써, 비휘발성 메모리(즉, 메인 메모리)에 저장된 부트 코드를 최단 시간에 전송할 수 있는 효과가 있다.
또한, 본 발명은 공유 메모리의 물리적 저장 영역인 뱅크 번호를 메인 프로세서와 부가 프로세서에서 각각 동일한 순서로 보이도록 제어할 수 있는 효과도 있다.
또한, 본 발명은 부가 프로세서 전용 영역의 0번지 뱅크를 부트 영역으로 할당할 수 있는 효과도 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (29)

  1. 디지털 처리 장치에 있어서,
    n(2이상의 임의의 자연수)개의 프로세서들; 및
    상기 프로세서들과 독립된 버스를 통해 각각 결합되며, 하나 이상의 프로세서의 부팅에 이용되기 위한 부트 코드가 기록되기 위한 부트 영역이 할당된 공유 메모리를 포함하는 디지털 처리 장치.
  2. 제 1항에 있어서,
    상기 부트 영역에는 상기 프로세서의 프로그램 구동시 필요한 프로그램 코드 데이터가 더 저장되는 것을 특징으로 하는 디지털 처리 장치.
  3. 제 1항에 있어서,
    상기 부트 코드는 임의의 프로세서가 하나 이상의 타 프로세서의 부팅을 위해 기록한 코드 데이터인 것을 특징으로 하는 디지털 처리 장치.
  4. 제 1항에 있어서,
    상기 n개의 프로세서들은,
    메인 프로세서;
    상기 메인 프로세서와 독립된 제어 버스를 통해 각각 결합되며, 상기 제어 버스를 통해 입력되는 제어 신호에 따른 동작을 수행하는 n-1개의 부가 프로세서들로 구성되는 것을 특징으로 하는 디지털 처리 장치.
  5. 제 1항에 있어서,
    상기 공유 메모리는,
    상기 프로세서들에 상응하여 각각의 접속 경로를 제공하는 n개의 억세스 포트;
    미리 설정된 프로세서만 접속할 수 있도록 미리 할당된 m(2이상의 임의의 자연수)개의 전용 영역;
    상기 프로세서들이 중복 없이 독립적으로 접속하여 사용할 수 있는 하나 이상의 공동 영역; 및
    임의의 프로세서가 상기 공동 영역에 접속 중인지 여부에 대한 억세스 상태 정보를 생성하여 상응하는 프로세서로 출력하는 내부 컨트롤러를 더 포함하는 것을 특징으로 하는 디지털 처리 장치.
  6. 제 1항에 있어서,
    상기 부트 영역은 상응하는 프로세서들만이 접속할 수 있도록 미리 할당된 전용 영역인 것을 특징으로 하는 디지털 처리 장치.
  7. 제 1항에 있어서,
    임의의 프로세서는 상기 부트 코드를 상기 공동 영역에 기록하고, 상기 부트 코드에 상응하는 타 프로세서가 상기 기록된 부트 코드를 상기 부트 영역에 기록하는 것을 특징으로 하는 디지털 처리 장치.
  8. 청구항 8은(는) 설정등록료 납부시 포기되었습니다.
    제 5항에 있어서,
    상기 공동 영역 및 상기 전용 영역으로 구성된 복수의 뱅크 중 상기 공동 영역이 상기 프로세서에 의해 상대적으로 하위 넘버로 인식되도록 설정되는 것을 특징으로 하는 디지털 처리 장치.
  9. 청구항 9은(는) 설정등록료 납부시 포기되었습니다.
    제 5항에 있어서,
    상기 내부 컨트롤러는 상기 전용 영역 및 상기 공동 영역으로 구성된 복수의 뱅크 중 상기 공동 영역이 상대적으로 하위 넘버로 인식되도록 설정하는 것을 특징 으로 하는 디지털 처리 장치.
  10. 청구항 10은(는) 설정등록료 납부시 포기되었습니다.
    제 5항에 있어서,
    상기 부트 영역은 0번지 뱅크에 할당되는 것을 특징으로 하는 디지털 처리 장치.
  11. 제 4항에 있어서,
    상기 메인 프로세서와 독립된 버스를 통해 결합되고, 상기 부트 코드를 저장하고 있는 비휘발성 메모리를 더 포함하되,
    상기 메인 프로세서는 상기 부트 코드를 독출하여 상기 공동 영역에 기록하며, 상기 부트 코드에 상응하는 부가 프로세서는 상기 메인 프로세서의 제어에 의해 상기 부트 코드를 독출하여 상기 부트 영역에 기록하는 것을 특징으로 하는 디지털 처리 장치.
  12. 제 11항에 있어서,
    상기 부가 프로세서가 상기 부트 코드의 기록을 완료하면, 상기 메인 프로세서는 상기 부트 코드의 실행을 위한 제어 명령을 상기 부가 프로세서로 전송하며, 상기 부가 프로세서는 상기 제어 명령에 상응하여 다음 명령이 입력될때까지 상기 부트 영역의 0번지에서 대기하거나 상기 부트 코드를 이용하여 부팅을 수행하는 것을 특징으로 하는 디지털 처리 장치.
  13. 제 11항에 있어서,
    상기 메인 프로세서는 상기 부트 코드를 상기 공동 영역에 기록하기전에 상기 공동 영역에 에러가 있는지를 검사하는 것을 특징으로 하는 디지털 처리 장치.
  14. 청구항 14은(는) 설정등록료 납부시 포기되었습니다.
    제 13항에 있어서,
    상기 메인 프로세서는 상기 에러가 있는 영역에는 상기 부트 코드를 기록하지 않는 것을 특징으로 하는 디지털 처리 장치.
  15. 청구항 15은(는) 설정등록료 납부시 포기되었습니다.
    제 13항에 있어서,
    상기 메인 프로세서는 미리 정해진 임의의 패턴 데이터를 상기 공동 영역에 기록한 후 다시 독출하여 기록하기 이전 데이터와 비교하여 에러를 검사하는 것을 특징으로 하는 디지털 처리 장치.
  16. 디지털 처리 장치에 있어서,
    n(2이상의 임의의 자연수)개의 프로세서들; 및
    상기 프로세서들과 독립된 버스를 통해 각각 결합되며, 하나 이상의 프로세서의 부팅에 이용되기 위한 부트 코드가 기록되기 위한 부트 영역과 하나 이상의 공동 영역이 할당되며, 임의의 공동 영역에 임의의 프로세서가 접속중인지 여부에 대한 억세스 상태 정보를 출력하는 공유 메모리를 포함하는 디지털 처리 장치.
  17. 제 16항에 있어서,
    상기 공유 메모리는,
    상기 프로세서들에 상응하여 각각의 접속 경로를 제공하는 n(2이상의 임의의 자연수)개의 억세스 포트;
    미리 설정된 프로세서만 접속할 수 있도록 미리 할당된 m(2이상의 임의의 자연수)개의 전용 영역;
    임의의 프로세서가 상기 공동 영역에 접속 중인지 여부에 대한 접속 상태 정보를 생성하여 상응하는 프로세서로 출력하는 내부 컨트롤러를 더 포함하는 것을 특징으로 하는 디지털 처리 장치.
  18. 청구항 18은(는) 설정등록료 납부시 포기되었습니다.
    임의의 프로세서로 입력되는 상기 억세스 상태 정보는 타 프로세서가 상기 공동 영역에 억세스 중이거나 억세스를 시도한 경우에는 제1 상태 신호로 출력되며, 상기 타 프로세서가 상기 공동 영역에 억세스하지 않은 경우에는 제2 상태 신호로 출력되는 것을 특징으로 하는 디지털 처리 장치.
  19. 제 17항에 있어서,
    상기 제1 상태 신호의 입력 중에 상기 공유 메모리로 억세스 요청을 전송한 상기 프로세서는 상기 억세스 상태 정보가 상기 제2 상태 신호로 갱신되어 입력된 후 상기 억세스 요청을 상기 공유 메모리로 재전송하는 것을 특징으로 하는 디지털 처리 장치.
  20. 청구항 20은(는) 설정등록료 납부시 포기되었습니다.
    제 16항에 있어서,
    상기 공동 영역으로의 억세스를 위해 각 프로세서는 주소 정보, 제어 신호 중 하나 이상을 포함하는 억세스 요청을 상기 공유 메모리로 입력하는 것을 특징으로 하는 디지털 처리 장치.
  21. 청구항 21은(는) 설정등록료 납부시 포기되었습니다.
    상기 제어 신호는 상기 공동 영역을 지시하는 주소 신호 및 상기 공유 메모리의 칩 선택(chip select) 신호를 포함하는 것을 특징으로 하는 디지털 처리 장치.
  22. 복수의 프로세서에 의해 공유되는 공유 메모리에 있어서,
    상기 프로세서들에 상응하여 각각의 접속 경로를 제공하는 n(2이상의 임의의 자연수)개의 억세스 포트;
    미리 설정된 프로세서만 접속할 수 있도록 미리 할당된 m(2이상의 임의의 자연수)개의 전용 영역;
    상기 프로세서들이 중복 없이 독립적으로 접속하여 사용할 수 있는 하나 이상의 공동 영역;
    하나 이상의 프로세서의 부팅에 이용되기 위한 부트 코드가 기록되기 위한 부트 영역; 및
    임의의 프로세서가 상기 공동 영역에 접속 중인지 여부에 대한 접속 상태 정보를 생성하여 상응하는 프로세서로 출력하는 내부 컨트롤러를 포함하는 공유 메모리.
  23. 제 22항에 있어서,
    상기 공동 영역 및 상기 전용 영역으로 구성된 복수의 뱅크 중 상기 공동 영역이 상기 프로세서에 의해 상대적으로 하위 넘버로 인식되도록 설정되는 것을 특징으로 하는 공유 메모리.
  24. 메인 프로세서와 부가 프로세서에 의해 공유되는 공유 메모리를 구비한 디지털 처리 장치가 코드 데이터를 전송하기 위한 방법에 있어서,
    (a) 상기 메인 프로세서는 제1 버스를 통해 비휘발성 메모리로부터 상기 부트 코드를 독출하는 단계;
    (b) 상기 메인 프로세서가 상기 코드 데이터를 공동 영역에 기록하고, 부트 코드 독출 명령을 제2 버스를 통해 상기 부가 프로세서로 전송하는 단계; 및
    (c) 상기 부가 프로세서가 제3 버스를 통해 상기 공동 영역에 기록된 상기 부트 코드를 독출하여 부트 영역에 기록하는 단계를 포함하는 코드 데이터 전송 방법.
  25. 제 24항에 있어서,
    상기 메인 프로세서가 상기 공동 영역에 불량 영역이 존재하는지를 검사하는 단계; 및
    불량 영역이 존재하면, 상기 불량 영역에 상응하는 주소 정보를 상기 비휘발성 메모리에 저장하는 단계가 상기 단계 (b) 이전에 수행되는 것을 특징으로 하는 코드 데이터 전송을 위한 방법.
  26. 청구항 26은(는) 설정등록료 납부시 포기되었습니다.
    제 24항에 있어서,
    상기 부트 코드 독출 명령은 독출할 상기 부트 코드에 상응하는 주소 신호를 포함하는 것을 특징으로 하는 코드 데이터 전송을 위한 방법.
  27. 청구항 27은(는) 설정등록료 납부시 포기되었습니다.
    제 24항에 있어서,
    상기 메인 프로세서가 상기 부가 프로세서로 상기 부트 코드를 이용한 부팅 수행을 지시하는 부팅 명령을 전송하는 단계를 더 포함하는 코드 데이터 전송을 위한 방법.
  28. 청구항 28은(는) 설정등록료 납부시 포기되었습니다.
    제 24항에 있어서,
    상기 부트 코드 독출 명령이 상기 부팅 수행 지시 명령을 포함하는 경우, 상기 (c) 단계 완료 후 상기 부가 프로세서는 상기 부트 코드를 이용하여 부팅을 수행하는 단계를 더 포함하는 코드 데이터 전송을 위한 방법.
  29. 청구항 29은(는) 설정등록료 납부시 포기되었습니다.
    제 24항에 있어서,
    상기 공동 영역 및 상기 전용 영역으로 구성된 복수의 뱅크 중 상기 공동 영역이 상기 프로세서에 의해 상대적으로 하위 넘버로 인식되도록 설정되는 것을 특징으로 하는 코드 데이터 전송을 위한 방법.
KR1020060087284A 2006-09-11 2006-09-11 공유 메모리를 구비한 장치 및 코드 데이터 전송 방법 KR100822468B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020060087284A KR100822468B1 (ko) 2006-09-11 2006-09-11 공유 메모리를 구비한 장치 및 코드 데이터 전송 방법
PCT/KR2007/004009 WO2008032935A1 (en) 2006-09-11 2007-08-22 Device having shared memory and method for transferring code data
US12/375,447 US8266417B2 (en) 2006-09-11 2007-08-22 Device having shared memory and method for transferring code data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060087284A KR100822468B1 (ko) 2006-09-11 2006-09-11 공유 메모리를 구비한 장치 및 코드 데이터 전송 방법

Publications (2)

Publication Number Publication Date
KR20080023408A KR20080023408A (ko) 2008-03-14
KR100822468B1 true KR100822468B1 (ko) 2008-04-16

Family

ID=39183956

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060087284A KR100822468B1 (ko) 2006-09-11 2006-09-11 공유 메모리를 구비한 장치 및 코드 데이터 전송 방법

Country Status (3)

Country Link
US (1) US8266417B2 (ko)
KR (1) KR100822468B1 (ko)
WO (1) WO2008032935A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101476691B1 (ko) * 2008-04-23 2014-12-29 삼성전자주식회사 디바이스 구동장치 및 구동방법

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101620349B1 (ko) 2009-12-30 2016-05-23 삼성전자주식회사 부팅가능한 휘발성 메모리 장치와 그를 구비한 메모리 모듈 및 프로세싱 시스템, 및 그를 이용한 프로세싱 시스템 부팅 방법
GB2498123A (en) * 2010-11-01 2013-07-03 Hewlett Packard Development Co Multi-processor computer systems and methods
TWI680375B (zh) * 2018-08-23 2019-12-21 慧榮科技股份有限公司 具有分散式信箱架構的多處理器系統及其處理器錯誤檢查方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030204665A1 (en) 2002-04-26 2003-10-30 Jain Raj Kumar High performance architecture with shared memory
KR20040064149A (ko) * 2003-01-09 2004-07-16 삼성전자주식회사 시리얼 플래시 메모리에서의 현지 실행을 위한 제어 장치및 그 방법, 이를 이용한 플래시 메모리 칩
KR20060113248A (ko) * 2005-04-30 2006-11-02 삼성전자주식회사 낸드 플래시 메모리 제어 장치 및 방법
KR20070013620A (ko) * 2005-07-26 2007-01-31 엠텍비젼 주식회사 복수 경로를 통한 다중 분할된 메모리 공유 방법 및 장치

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020016891A1 (en) * 1998-06-10 2002-02-07 Karen L. Noel Method and apparatus for reconfiguring memory in a multiprcessor system with shared memory
US6912716B1 (en) * 1999-11-05 2005-06-28 Agere Systems Inc. Maximized data space in shared memory between processors
US7380085B2 (en) * 2001-11-14 2008-05-27 Intel Corporation Memory adapted to provide dedicated and or shared memory to multiple processors and method therefor
KR100515059B1 (ko) 2003-07-22 2005-09-14 삼성전자주식회사 멀티프로세서 시스템 및 멀티프로세서 시스템의 캐쉬일관성 유지 방법
JP2005259320A (ja) * 2004-03-15 2005-09-22 Nec Electronics Corp パーシャル・デュアル・ポート・メモリ及び該メモリを用いた電子機器
US7305544B2 (en) * 2004-12-10 2007-12-04 Intel Corporation Interleaved boot block to support multiple processor architectures and method of use
KR100592108B1 (ko) 2005-04-19 2006-06-21 엠텍비젼 주식회사 복수의 프로세서간의 신속한 데이터 전달 방법 및 공유메모리를 가지는 디지털 처리 장치
KR101275752B1 (ko) * 2005-12-06 2013-06-17 삼성전자주식회사 메모리 시스템 및 그것의 부팅 방법
US7831778B2 (en) * 2006-03-30 2010-11-09 Silicon Image, Inc. Shared nonvolatile memory architecture
US7600109B2 (en) * 2006-06-01 2009-10-06 Dell Products L.P. Method and system for initializing application processors in a multi-processor system prior to the initialization of main memory
EP2034416A4 (en) * 2006-06-27 2009-09-09 Nec Corp MULTIPROCESSOR SYSTEM AND PORTABLE DEVICE THEREWITH
KR101430687B1 (ko) * 2007-09-28 2014-08-18 삼성전자주식회사 다이렉트 억세스 부팅동작을 갖는 멀티 프로세서 시스템 및그에 따른 다이렉트 억세스 부팅방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030204665A1 (en) 2002-04-26 2003-10-30 Jain Raj Kumar High performance architecture with shared memory
KR20040064149A (ko) * 2003-01-09 2004-07-16 삼성전자주식회사 시리얼 플래시 메모리에서의 현지 실행을 위한 제어 장치및 그 방법, 이를 이용한 플래시 메모리 칩
KR20060113248A (ko) * 2005-04-30 2006-11-02 삼성전자주식회사 낸드 플래시 메모리 제어 장치 및 방법
KR20070013620A (ko) * 2005-07-26 2007-01-31 엠텍비젼 주식회사 복수 경로를 통한 다중 분할된 메모리 공유 방법 및 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101476691B1 (ko) * 2008-04-23 2014-12-29 삼성전자주식회사 디바이스 구동장치 및 구동방법

Also Published As

Publication number Publication date
WO2008032935A1 (en) 2008-03-20
US8266417B2 (en) 2012-09-11
US20100005284A1 (en) 2010-01-07
KR20080023408A (ko) 2008-03-14

Similar Documents

Publication Publication Date Title
US8843694B2 (en) System and method of page buffer operation for memory devices
JP2008523528A (ja) セクタバッファを持つメモリシステム
US20080028165A1 (en) Memory device, its access method, and memory system
US20100185811A1 (en) Data processing system and method
US20110258372A1 (en) Memory device, host device, and memory system
KR100592105B1 (ko) 공유 메모리의 분할 영역의 다중 억세스 제어 방법 및 공유메모리를 가지는 휴대형 단말기
US7831755B2 (en) Method and system for interfacing a plurality of memory devices using an MMC/SD protocol
KR100822468B1 (ko) 공유 메모리를 구비한 장치 및 코드 데이터 전송 방법
KR100625811B1 (ko) 코드 데이터 에러 정정 방법 및 장치
JP2021508878A (ja) フラッシュメモリコントローラ、sdカードデバイス、フラッシュメモリコントローラで使用される方法、およびsdカードデバイスに結合されたホストデバイス
US20070028037A1 (en) Memory system with automatic dual-buffering
KR100663380B1 (ko) 촬상 장치 및 영상 신호 생성 방법
JP2003140980A (ja) 記録装置
US20190278704A1 (en) Memory system, operating method thereof and electronic apparatus
US20220206719A1 (en) Control method for flash memory, flash memory die and flash memory
US8145852B2 (en) Device having shared memory and method for providing access status information by shared memory
JP2007164355A (ja) 不揮発性記憶装置、そのデータ読出方法及びそのデータ書込み方法
KR100736902B1 (ko) 복수의 프로세서에 의한 메모리 공유 방법 및 장치
KR100746364B1 (ko) 메모리 공유 방법 및 장치
KR101068829B1 (ko) 촬상 장치 및 이미지 회전 처리 방법
KR100743253B1 (ko) 코드 데이터 에러 정정 방법 및 장치
KR100592109B1 (ko) 공유 메모리의 분할 영역의 다중 억세스 제어 방법 및 공유메모리를 가지는 휴대형 단말기
KR100658588B1 (ko) 메모리 공유 시스템 및 그 방법
US20090113154A1 (en) Non-Volatile Memory Apparatus and Method of Accessing the Same
KR100888427B1 (ko) 공유 메모리를 구비한 디지털 처리 장치 및 데이터 출력방법

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment
FPAY Annual fee payment
FPAY Annual fee payment

Payment date: 20170329

Year of fee payment: 10