상기 과제를 해결하기 위해, 본 발명은 이하의 구성을 채용하였다.
즉, 본 발명의 칩은 적어도 일부가 다른 칩과 공통의 펌웨어에 기초하여 정보 처리를 행하는 칩으로서, 펌웨어를 수신하는 수신 수단과, 설정 정보를 참조하 는 참조 수단과, 상기 설정 정보에 따라 상기 펌웨어를 다른 칩에 전송하는 전송 수단을 구비하였다.
또한, 본 발명의 장치는, 적어도 일부가 다른 칩과 공통의 펌웨어에 기초하여 정보 처리를 행하는 복수의 칩을 구비하고,
상기 각 칩이,
펌웨어를 수신하는 수신 수단과,
설정 정보를 참조하는 참조 수단과,
상기 설정 정보에 따라 상기 펌웨어를 다른 칩에 전송하는 전송 수단을
구비하였다.
상기 칩은 상기 펌웨어가 상기 설정 정보를 갖는 경우, 이 설정 정보를 소정처리에 의해 전송지의 칩용 설정 정보로 변경하는 변경 수단을 구비하여도 좋다.
상기 설정 정보가 종속하는 칩의 유무를 나타내는 경우, 상기 전송 수단은 종속하는 칩이 있는 경우에는 펌웨어를 전송하고, 종속하는 칩이 없는 경우에는 펌웨어의 전송을 행하지 않아도 좋다.
상기 설정 정보가 종속하는 칩의 수를 나타내는 경우, 상기 변경 수단은 상기 칩의 수를 감산하여도 좋다.
상기 수신 수단에 의한 펌웨어의 수신과 병행하여 상기 전송 수단에 의한 펌웨어의 전송을 행하여도 좋다.
상기 참조 수단은, 상기 설정 정보를 나타내는 핀의 상태를 참조하여도 좋다.
또한, 본 발명의 칩의 기동 방법은, 적어도 일부가 다른 칩과 공통의 펌웨어에 기초하여 정보 처리를 행하는 칩으로써, 펌웨어를 수신하고, 설정 정보를 참조하여 상기 설정 정보에 따라 상기 펌웨어를 다른 칩에 전송한다.
또한, 본 발명의 복수 칩의 기동 방법은, 적어도 일부가 다른 칩과 공통의 펌웨어에 기초하여 정보 처리를 행하는 복수의 칩이 행하는 방법으로서, 각 칩이 펌웨어를 수신하고, 설정 정보를 참조하여 상기 설정 정보에 따라 상기 펌웨어를 다른 칩에 전송한다.
상기 칩의 기동 방법은 펌웨어가 상기 설정 정보를 갖는 경우, 이 설정 정보를 소정 처리에 의해 전송지의 칩용 설정 정보로 변경하여도 좋다.
상기 칩의 기동 방법은, 상기 설정 정보가 종속하는 칩의 유무를 나타내는 경우, 상기 펌웨어를 전송할 때, 종속하는 칩이 있는 경우에는 펌웨어를 전송하고, 종속하는 칩가 없는 경우에는 펌웨어의 전송을 하지 않아도 좋다.
상기 칩의 기동 방법은, 상기 설정 정보가 종속하는 칩의 수를 나타내는 경우, 상기 설정 정보를 변경할 때, 상기 칩의 수를 감산하여도 좋다.
상기 칩의 기동 방법은, 상기 펌웨어의 수신과 병행하여 상기 펌웨어의 전송을 행하여도 좋다.
상기 칩의 기동 방법은, 상기 설정 정보를 참조할 때, 상기 설정 정보를 나타내는 핀의 상태를 참조하여도 좋다.
또한, 본 발명은 상기 칩의 기동 방법을 각 칩에 실행시키는 프로그램(펌웨어나 부트 로더)이라도 좋다. 또한, 본 발명은, 이 프로그램을 컴퓨터가 판독 가능 한 기록 매체에 기록한 것이라도 좋다. 컴퓨터에 이 기록 매체의 프로그램을 독입하여 실행시킴으로써, 그 기능을 제공시킬 수 있다.
여기서, 컴퓨터가 판독 가능한 기록 매체란, 데이터나 프로그램 등의 정보를 전기적, 자기적, 광학적, 기계적, 또는 화학적 작용에 의해 축적하고, 컴퓨터로부터 판독할 수 있는 기록 매체를 말한다. 이러한 기록 매체 내 컴퓨터로부터 착탈 가능한 것으로서는, 예컨대 플렉시블 디스크, 광자기 디스크, CD-ROM, CD-R/W, DVD, DAT, 8 mm 테이프, 메모리 카드 등이 있다.
또한, 컴퓨터에 고정된 기록 매체로서 하드디스크나 ROM(리드 온리 메모리)등이 있다.
<본 발명의 원리>
일반적인 퍼스널 컴퓨터의 아키텍쳐에서는, 단일 채널에서도 복수 채널에서도, 생성된 스트림은 PCI 버스(혹은 USB 등)에 출력하여, 메인 메모리나 칩 세트를 통해 기록 매체에 기록된다.
복수 칩으로 복수 채널을 압축하는 시스템의 경우, 각각의 칩이 갖고 있는 PCI 인터페이스로부터 스트림을 흐르게 하는 구성으로 하면, 보드가 복수로 분리되어 버리기 때문에 비용이 상승하고, 또한 슬롯도 복수 점유되어 버리기 때문에 매우 바람직하지 못하다. 그 해결 방법의 하나로서는, 예컨대 도 1과 같은 시스템을 생각할 수 있다.
도 1의 시스템(30)은 복수 채널의 스트림을 출력하는 확장 보드(1)를 컴퓨터(호스트)(2)의 PCI 슬롯 중 하나에 장착하고 있다. 이 확장 보드(1)는, 복수 채널 분(도 1에서는 2개)의 튜너(T1, T2)와 칩(C1, C2)을 구비하고, 각 튜너(T1, T2)로부터의 영상 신호 및 음성 신호를 각 칩(C1, C2)에서 각각 압축하여 소정 형식의 스트림을 생성한다. 그리고, 칩(C1)은 이 스트림을 PCI 인터페이스로부터 직접 호스트측의 PCI 버스(24)에 출력한다. 한편, 칩(C2)은 자기의 PCI 인터페이스를 사용하지 않고, 칩(C1)에 스트림을 보내어, 칩(C1)의 PCI 인터페이스로부터 호스트측의 PCI 버스(24)에 출력한다.
이 시스템(30)에 있어서, 칩(C1)과 칩(C2)은 스트림을 PCI 인터페이스로부터 출력하거나 다른 칩에 전송하거나 한 동작 모드가 다르기 때문에, 어떠한 수단으로 모드의 지정이 필요해진다. 이 때문에, 기본적인 부분은 동일하여 상기 동작 모드를 다르게 한 펌웨어를 칩(C1)과 칩(C2)에 각각 다운 로드한다.
그러나, 각 칩에 각각 상기 펌웨어를 기억한 ROM을 접속하고, 이 ROM으로부터 각각 펌웨어를 다운 로드하는 구성으로 하면, 2개의 ROM이 필요해지게 된다.
또한, 호스트(2)로부터 PCI 버스(24)를 통해 2개의 칩용 펌웨어를 다운 로드하는 구성에서는 다운 로드에 시간이 걸려, 기동까지의 시간이 길어지게 된다. 도 12는 2개의 칩용 펌웨어를 호스트(2)로부터 PCI 버스(24)를 통해 다운 로드하는 경우의 설명도이다. 여기서 하나의 칩용 펌웨어의 다운 로드에 걸리는 시간을 편의상 1초로 한 경우, 호스트(2)로부터 칩(C1)에 2개의 칩용 펌웨어를 다운 로드하는 데 2초가 걸리고(S1, S2), 칩(C1)의 CPU가 칩(C2)용 펌웨어를 칩(C2)에 다운 로드하는 데 1초 걸리기 때문에(S3), 합계, 다운 로드에 3초가 걸리게 된다.
그래서, 본 발명에서는 도 13에 도시하는 바와 같이 칩(C1)용 펌웨어를 호스 트(2)로부터 칩(C1)에 다운 로드하고(S4), 칩(C1)이, 이 펌웨어를 칩(C2)용 동작 모드로 변경하여 칩(C2)에 다운 로드한다(S5). 이것에 의해, 다운 로드에 걸리는 시간은, S4와 S5의 2초로 종료되며, 기동 시간의 단축화가 도모된다. 또한, 상기한 다운 로드 시간은 예시이며, 현실에는 펌웨어의 사이즈나 로컬 버스(PCI 버스)의 통신 속도, 채널 수(칩의 수) 등에 의해 그 단축 효과는 다르지만, 동일한 조건이면, 도 11에 도시한 방식보다도 도 13에 도시한 본 발명 쪽이 다운 로드 시간은 줄어든다.
<실시형태 1>
이하, 도면을 참조하여 본 발명을 실시하기 위한 최량의 형태에 대해서 구체적으로 설명한다. 이하의 실시형태의 구성은 예시이며, 본 발명은 실시형태의 구성에 한정되지 않는다.
본 실시형태의 시스템 구성은, 전술한 도 1과 동일하며, 호스트(2)의 PCI 슬롯에 확장 보드(튜너 카드)(1)를 장착하고 있다.
호스트(2)의 마더 보드(21)에는, CPU(20)나 메인 메모리(RAM), LSI(22, 23), PCI 버스(24) 등이 구비되어 있다. LSI(22, 23)는 CPU(20)나 RAM, 확장 보드 등의 사이에서의 데이터 교환을 관리하는 소위 칩 세트이다. 이 LSI(22)는 CPU(20)와 로컬 버스를 접속하는 기능이나 영상 신호를 모니터 단자에 출력하는 그래픽 기능을 갖고 있다. 또한, LSI(23)는 로컬 버스의 제어 등을 행하는 소위 PCI 컨트롤러, USB 컨트롤러, IDE 컨트롤러, LAN 컨트롤러 등의 기능을 갖고 있다.
도 2는 확장 보드(1)에 구비한 칩 등의 블록도이다. 이 칩(C1)은 튜너(T1)로 부터의 영상 신호 및 오디오 신호를 디지털 신호로 변환하는 디지털 변환부(11, 12)나 이 디지털 신호를 소정의 압축 형식(본 예에서는 MPEG)에 인코드하는 인코더(13, 14), 이 소정 형식으로 한 영상 신호 및 음성 신호를 다중화하여 스트림을 생성하는 MUX부(15), 이 MUX부로부터의 스트림 및 다른 칩으로부터의 스트림을 조정하고, PCI 인터페이스(17)를 통해 호스트(2)에 출력하는 스트림 처리부(16)를 구비하고 있다.
또한, 칩(C1)은 CPU(10)나 직렬 인터페이스(18), 메모리 인터페이스(19)를 구비하고 있다. 이 메모리 인터페이스(19)에는 SDRAM(기억 수단)(31)이 접속되고, CPU(10)로부터 SDRAM(31)에의 액세스 및 호스트(2)로부터 SDRAM(31)에의 액세스를 가능하게 하고 있다. 또한, 직렬 인터페이스(18)는 각 보드(1)의 CPU(10)의 제어에 의해, 펌웨어 등의 정보를 다른 칩(1)에 전송한다. 이 직렬이 데이터를 수신하면, 1 바이트 수신할 때마다 내장 CPU(10)에 시리얼 인터럽트가 들어간다.
또한, 상기 디지털 신호를 처리하는 각부는, 하드웨어로 구성하여도 좋지만, CPU(10)가 소프트웨어에 의해 실현되는 구성으로 하여도 좋다. 본 예에서는 CPU(10)가 펌웨어에 기초하여 처리를 행함으로써, 상기 인코더(13, 14), MUX부(15), 스트림 처리부(16)(점선으로 나타낸 범위)의 기능을 실현하고 있다.
또한, CPU(10)는 내장의 부트 로더나 펌웨어에 기초하여 처리를 실행함으로써, 수신 수단이나 참조 수단, 전송 수단, 변경 수단의 기능을 실현하고 있다.
이 수신 수단으로서는, 호스트(2)로부터 PCI 인터페이스(17)를 통해 혹은 설정 정보에 기초하여 마스터 칩으로부터 직렬 인터페이스(18)를 통해 전송된 다른 칩과 공통의 펌웨어를 수신(다운 로드)하고, SDRAM(31)에 기억시킨다.
참조 수단으로서는, 펌웨어의 헤더 영역에 포함된 설정 정보를 참조한다.
전송 수단으로서는, 상기 설정 정보에 따라 상기 펌웨어를 다른 칩에 전송한다. 변경 수단으로서는, 이 설정 정보를 소정 처리에 의해, 전송지의 칩용 설정 정보로 변경한다.
또한, 본 실시형태에서는 이들 수단의 기능을 CPU가 소프트웨어에 기초하여 실현하였지만, 각 수단을 하드웨어로 구성하여 각 기능을 달성하여도 좋다.
칩(C2)은 상기 칩(C1)과 동일한 구성이지만, 동작 모드를 다르게 함으로써, 스트림을 PCI 인터페이스(17)로부터 출력하지 않고, 칩(C1)에 출력(전송)하고 있다. 또한, 도 2에서는 칩(C2)의 MUX(15)로부터 칩(C1)의 스트림 처리부(16)에 스트림을 전송하도록 각부의 기능을 나타내었지만, 본 예의 칩(C1, C2)에서는 이들 MUX(15), 스트림 처리부(16)의 기능을 CPU(10)가 소프트웨어에 따라 실현하고 있기 때문에, 실제로는 칩(C2)의 CPU(10)가 직렬 인터페이스(18)를 통해 칩(C1)의 CPU(10)에 스트림을 전송하고 있다.
또한, 칩(C1)과 칩(C2)은 호스트(2)로부터 수신한 펌웨어를 다른 칩에 송신할지, 다른 칩으로부터 수신할지를 동작 모드에 따라 판단하고 있다. 본 예에서는 이 펌웨어를 송신하는 측의 칩(C1)을 마스터칩, 수취하는 측의 칩(C2)을 슬레이브칩이라고도 칭한다.
도 3은 펌웨어의 포맷을 도시하는 도면이다. 이 펌웨어는 헤더 영역과 데이터영역(펌웨어 본체)으로 이루어지며, 이 헤더 영역에는 설정 정보나 펌웨어 사이 즈 등을 포함하고 있다. 이 설정 정보는 동작 모드를 설정하기 위한 정보이며, 펌웨어의 어드레스 00h가 00h이면 마스터칩, 이 어드레스 00h가 01h이면 슬레이브칩을 나타내고, 펌웨어의 어드레스 01h가 00h이면 슬레이브칩이 없고, 펌웨어의 어드레스 01h가 01h이면 슬레이브칩이 있음을 나타낸다.
다음에, 이들 시스템(30)으로써 실행하는 기동 방법에 대해서, 도 4 내지 도 5를 이용하여 설명한다. 도 4는 시스템 전체에 있어서의 기동 처리의 흐름도, 도 5는 각 칩에 있어서의 기동 처리의 흐름도이다.
호스트(2)는 전원의 투입(기동), 재기동, 스탠바이 상태로부터의 복귀 등에 의해, 리셋 상태가 해제되면, 확장 보드(1)[칩(C1), 칩(C2)]의 기동을 시작하게 한다(단계 11, 이하 S11과 같이 약기함).
또한, 호스트(2)는 PCI 버스(24)를 통해 확장 보드(1)에 액세스하고, 칩(C1)의 SDRAM(31)에 BAR(1) 영역을 할당하여 이 BAR(1) 영역의 예컨대 80000 h 번지에 펌웨어를 기록한다(S12).
그리고 호스트(2)는 PCI의 소정의 레지스터에 플래그를 세우는, 예컨대 PCI 인터페이스(17) 내의 메모리에 1을 기록함으로써, PCI 인터럽트를 행하고, 펌웨어의 전개를 시작하게 한다(S13).
한편, 칩(C1)은 도 5에 도시하는 바와 같이, 호스트(2)의 리셋 해제(전원 투입 등)에 따라 부트 로더에 의한 기동 처리를 시작한다(S21). 본 예에서는 CPU(10)가 내장의 ROM으로부터 부트 로더(기동용 소프트웨어)를 독출하고, 이 소프트웨어에 따라 기동 처리를 시작한다.
우선 칩(C1)의 CPU(10)는 직렬 인터럽트가 들어갔는지 여부를 체크하고(S22), 직렬 인터럽트가 없으면 PCI 인터럽트가 들어갔는지 여부를 체크한다(S23). 즉 CPU(10)는 PCI 인터페이스(17)의 메모리에 PCI 인터럽트를 위한 플래그가 세워져 있는지 여부를 참조한다. 여기서, CPU(10)는 PCI 인터럽트가 없으면 단계 22로 되돌아가고, PCI 인터럽트가 들어가면 이것을 계기로 SDRAM(31)으로부터 펌웨어를 독출하여 CPU(10) 내의 로컬 메모리에 전개한다(S24).
이 전개 후, CPU(10)는 이 로컬 메모리 상의 펌웨어를 실행하고, 부트 로더로부터 펌웨어 제어를 이행한다(S25).
이 펌웨어에 기초하여 CPU(10)는 설정 정보를 참조하여 동작 모드를 인식한다(S26, S27). 예컨대, SDRAM(31)의 어드레스 00h를 독출하고, 이 값이 01h이면 슬레이브칩인 것을 인식하여 기동 처리를 중단하고, 이 값이 00h이면 마스터칩이라고 인식하여 슬레이브칩의 유무를 체크한다. 여기서 어드레스 01h의 값이, 00h이면 슬레이브칩이 없고, 01h이면 슬레이브칩이 있음을 나타내고 있다.
본 예의 칩(C1)은 마스터칩이며, 슬레이브 칩[칩(C2)]이 접속되어 있기 때문에, 호스트(2)로부터의 설정 정보는 어드레스 00h의 값이 00h, 어드레스 01h의 값이 01h로 되어 있다. 따라서 CPU(10)는 단계 27에서 슬레이브칩이 있다고 판단하고, 이 슬레이브칩용으로 SDRAM 상의 설정 정보를 변경한다(S28). 즉 CPU(10)는 어드레스 00h의 값을 01h에 재기록한다.
그리고, 칩(C1)의 CPU(10)는 재기록 후의 펌웨어를 SDRAM(31)으로부터 직렬 인터페이스(18)를 통해 칩(C2)에 송신한다(S29).
또한, 칩(C1)은 단계 26에서 마스터칩인 것을 인식한 경우, 생성된 스트림이나 다른 칩(C2)으로부터 수신한 스트림을 PCI 인터페이스(17)로부터 호스트(2)에 출력하도록 동작 모드를 설정한다.
한편, 칩(C2)은 호스트(2)의 리셋 해제(전원의 투입 등)에 따라서, 전술한 칩(C1)과 같이 부트 로더에 의한 기동 처리를 시작하고(S21), 직렬 인터럽트 및 PCI 인터럽트를 순차 체크한다(S22, S23). 또한, 이 기동 처리시, 칩(C2)은 설정 정보 이외 칩(C1)과 동일한 프로그램(부트 로더 및 펌웨어)을 사용하고 있지만, 동작 모드의 차이에 의해, 발현하는 단계가 다르다. 예컨대, 본 예의 칩(C2)은 슬레이브칩이며, PCI 인터페이스(17)를 사용하지 않기 때문에, PCI 인터럽트가 들어가지 않고, 직렬 인터럽트가 들어갈 때까지 대기 상태가 된다.
여기서, 칩(C1)이 전술한 바와 같이 펌웨어를 칩(C2)에 전송하면, 칩(2)의 CPU(10)에 직렬 인터럽트가 들어간다. 이 직렬 인터럽트를 계기로 CPU(10)는, 헤더를 수신하여 해석하고, 펌웨어의 사이즈를 인식한다(S30). 그리고 CPU(10)는 이 사이즈 만큼의 펌웨어를 수신하여 SDRAM(31)에 기억시킨다(S31).
이 펌웨어의 수신을 완료하면 CPU(10)는 SDRAM(31)으로부터 펌웨어를 독출하여 CPU(10) 내의 로컬 메모리에 전개한다(S24).
이 전개 후, CPU(10)는 상기 로컬 메모리 상의 펌웨어를 실행하고, 부트 로더로부터 펌웨어 제어를 이행한다(S25).
이 펌웨어에 기초하여 CPU(10)는 SDRAM(31) 상의 설정 정보를 참조하여 동작모드를 인식한다(S26). 본 예의 칩(C2)은 슬레이브칩이며, 설정 정보는 어드레스 0 0h의 값이 01h로 되어 있다. 따라서 CPU(10)는 단계 26에서 슬레이브칩으로 판단하여 기동 처리를 완료한다.
이상과 같이, 본 실시형태에 의하면, 2 채널의 스트림을 생성하는 2개의 칩을 구비한 확장 보드에 있어서, 2개의 칩에 대하여 호스트(2)로부터 2개 만큼의 펌웨어를 다운 로드하지 않고, 하나의 펌웨어를 전송시킴으로써, 다운 로드 시간을 짧게 하여 확장 보드의 기동 시간을 단축하고 있다.
또한, 기동 처리를 동작 모드에 따라 전환하기 때문에, 마스터칩이거나 슬레이브칩이라도 동일 구성의 칩을 이용할 수 있기 때문에, 범용성을 유지하면서 상기기동 시간의 단축화를 달성할 수 있다.
(실시 형태 2)
도 6은 실시형태 2에 따른 확장 보드의 블록도, 도 7은 실시 형태 2에 따른 기동 처리의 흐름도이다. 본 실시형태는 전술한 실시 형태 1에 비하여 칩을 2개가 아니고, 3개 이상의 칩을 구비한 점이 다르다. 또한, 본 실시형태에 있어서, 전술한 실시 형태 1과 동일한 요소에는 같은 부호를 붙임으로써, 재차 설명을 일부 생략한다.
본 실시형태의 확장 보드(1a)는 도 6에 도시하는 바와 같이 동일 구성의 칩(C1, C2, C3)을 염주처럼 엮어 구비하고 있다. 이 칩(C2)은 칩(C1)에 대해서는 슬레이브칩이지만, 칩(3)에 대해서는 마스터칩이 된다. 각 칩(C1, C2, C3)은 실시형태 1(도 2)의 칩과 대략 동일하지만, 본 실시형태의 칩은 업스트림의 칩(마스터칩)과 접속하는 직렬 인터페이스(18a)와 다운스트림의 칩(슬레이브칩)과 접속하는 직 렬 인터페이스(18b)의 복수 계통의 인터페이스를 구비하고 있다.
호스트(2)는 리셋 상태가 해제되면, 확장 보드(1a)(칩 C1, C2, C3)의 기동을 시작하게 하고(S11), PCI 버스(24)를 통해 칩(C1)의 SDRAM(31)에 펌웨어를 기록한다(S12).
그리고, 호스트(2)는 PCI의 소정의 레지스터에 플래그를 세워 PCI 인터럽트를 행하고, 펌웨어의 전개를 시작하게 한다(S13).
한편, 칩(C1)은 도 7에 도시하는 바와 같이 호스트(2)의 리셋 해제(전원 투입 등)에 따라 부트 로더에 의한 기동 처리를 시작한다(S21).
우선 칩(C1)의 CPU(10)는 직렬 인터럽트가 들어갔는지 여부를 체크하고(S22), 직렬 인터럽트가 없으면 PCI 인터럽트가 들어갔는지 여부를 체크한다(S23). 즉 CPU(10)는 PCI 인터페이스(17)의 메모리에 PCI 인터럽트를 위한 플래그가 세워져 있는지 여부를 참조한다. 여기서, CPU(10)는 PCI 인터럽트가 없으면 단계 22로 되돌아가며, PCI 인터럽트가 들어가면 이것을 계기로 SDRAM(31)으로부터 펌웨어를 독출하여 CPU(10) 내의 로컬 메모리에 전개한다(S24).
이 전개 후, CPU(10)는 이 로컬 메모리 상의 펌웨어를 실행하여 부트 로더로부터 펌웨어 제어를 이행한다(S25).
이 펌웨어에 기초하여 CPU(10)는 설정 정보를 참조하여 동작 모드를 인식한다(S26, S27). 예컨대, SDRAM(31)의 어드레스 00h를 독출하고, 이 값이 01h이면 마스터칩이 아닌(펌웨어를 전송하지 않아도 됨)것을 인식하여 기동 처리를 중단하고, 이 값이 00h이면 마스터칩이라고 인식하여 슬레이브칩의 유무를 체크한다. 여기서 SDRAM(31)의 어드레스 01h의 값은 슬레이브칩의 수를 나타내고 있다.
본 예의 칩(C1)은 마스터칩이며, 슬레이브 칩[칩(C2)]이 접속되어 있기 때문에, 호스트(2)로부터의 설정 정보는 어드레스 00h의 값이 00h, 어드레스 01h의 값이 02h로 되어 있다. 따라서 CPU(10)는 단계 27에서 슬레이브칩이 2개 있다고 판단하고, 이 슬레이브칩용으로 SDRAM 상의 설정 정보를 변경한다. 구체적으로는, 어드레스 01h의 값을 감산하고(S32), 이것에 의해 어드레스 01h의 값이 00h가 되었는지 여부를 판정한다(S33). 칩(C1)의 경우, 단계 33에 있어서, 어드레스 01h의 값은 02 h에서 1을 빼도 01h가 되기 때문에, 어드레스 00h를 변경하지 않고, 단계 34로 이행하여, SDRAM 상의 펌웨어를 직렬 인터페이스(18)로부터 슬레이브칩(C2)에 다운 로드하여 기동 처리를 완료한다.
또한, 칩(C1)은 단계 23에서 PCI 인터럽트가 들어간 것을 인식한 경우, 생성된 스트림이나 다른 칩(C2)으로부터 수신한 스트림을 PCI 인터페이스(17)로부터 호스트(2)에 출력하도록 동작 모드를 설정한다.
또한, 칩(C2)은 호스트(2)의 리셋 해제(전원의 투입 등)에 따라, 전술한 칩(C1)과 같이 부트 로더에 의한 기동 처리를 시작하고(S21), 직렬 인터럽트 및 PCI 인터럽트를 순차 체크한다(S22, S23).
여기서, 칩(C1)이 전술한 바와 같이 펌웨어를 칩(C2)으로 전송하면, 칩(2)의 CPU(10)에 직렬 인터럽트가 들어간다. 이 직렬 인터럽트를 계기로 칩(C2)의 CPU(10)는 헤더를 수신하여 해석하고, 펌웨어의 사이즈를 인식한다(S30). 그리고 CPU(10)는 이 사이즈 만큼의 펌웨어를 수신하여 SDRAM(31)에 기억시킨다(S31).
이 펌웨어의 수신을 종료하면, CPU(10)는 SDRAM(31)으로부터 펌웨어를 독출하여 CPU(10) 내의 로컬 메모리에 전개한다(S24).
상기 전개 후, CPU(10)는 이 로컬 메모리 상의 펌웨어를 실행하고, 부트 로더로부터 펌웨어 제어를 이행한다(S25).
이 펌웨어에 기초하여 CPU(10)는, SDRAM(31) 상의 설정 정보를 참조하여 동작 모드를 인식한다(S26). 본 예의 칩(C2)은 칩(C3)에 대해서는 마스터칩이며, 슬레이브칩[칩(C2)]이 접속되어 있기 때문에, 칩(C1)으로부터의 설정 정보는, 어드레스 00h의 값이 00h, 어드레스 01h의 값이 01h로 되어 있다. 따라서 CPU(10)는 단계(27)에서 슬레이브칩이 하나 있다고 판단하고, 이 슬레이브칩용으로 SDRAM 상의 설정정보를 변경한다. 구체적으로는, 어드레스 01h의 값을 감산하여 덮어쓰기한다(S32). 또한, 이것에 의해 어드레스 01h의 값이 00h가 되었는지 여부를 판정한다(S33).
칩(2)의 경우, 단계 33에 있어서, 어드레스 01h의 값은 01h에서 1을 빼면 00h가 되기 때문에, 단계 35에 이행하여 어드레스 00h를 01h로 변경한다. 그리고, CPU(10)는 SDRAM 상의 펌웨어를 직렬 인터페이스(18)로부터 슬레이브칩(C2)에 다운로드하여(S34) 기동 처리를 완료한다.
또한, 칩(C3)은 호스트(2)의 리셋 해제(전원의 투입 등)에 따라서, 전술한 칩(C2)과 같이 부트 로더에 의한 기동 처리를 시작하고(S21), 직렬 인터럽트 및 PCI 인터럽트를 순차 체크한다(S22, S23).
여기서, 칩(C2)이 전술한 바와 같이 펌웨어를 칩(C3)에 전송하면, 칩(3)의 CPU(10)에 직렬 인터럽트가 들어간다. 이 직렬 인터럽트를 계기로 칩(C3)의 CPU(10)는 헤더를 수신하여 해석하고, 펌웨어의 사이즈를 인식한다(S30). 그리고 CPU(10)는 이 사이즈 만큼의 펌웨어를 수신하여 SDRAM(31)에 기억시킨다(S31).
상기 펌웨어의 수신을 완료하면 CPU(10)는 SDRAM(31)으로부터 펌웨어를 독출하여 CPU(10) 내의 로컬 메모리에 전개한다(S24).
상기 전개 후, CPU(10)는 이 로컬 메모리 상의 펌웨어를 실행하여 부트 로더로부터 펌웨어에 제어를 이행한다(S25).
이 펌웨어에 기초하여 CPU(10)는, SDRAM(31) 상의 설정 정보를 참조하여 동작 모드를 인식한다(S26). 본 예의 칩(C3)은 슬레이브칩이기 때문에, 칩(C2)으로부터의 설정 정보는 어드레스 00h의 값이 00h로 되어 있다. 따라서 CPU(10)는 단계 27에서 슬레이브칩이 없다고 판단하여 기동 처리를 완료한다.
이상과 같이 본 실시형태에 의하면, 어드레스 01h의 값을 순차 감산하여 펌웨어를 슬레이브칩에 전송해 나감으로써, 3개 이상의 칩을 탑재한 확장 보드라도 기동 시간의 단축화가 도모된다.
또한, 각 칩은 칩(C1∼C3) 혹은 이것 이상의 어느 것인지를 SDRAM(31)의 어드레스 00h에 의해 판단할 수 있다.
<실시형태 3>
도 8은 실시형태 3에 따른 기동 처리의 흐름도이다. 본 실시형태는, 전술한 실시형태 2에 비하여, 펌웨어를 완전히 다운 로드하기 전에 슬레이브칩에의 전송을 시작하는 점이 다르며, 그 밖의 구성은 동일하다. 또한, 본 실시형태에 있어서, 전 술한 실시형태 2와 동일한 요소에는 같은 부호를 붙이거나 하여, 재차 설명을 일부 생략한다.
본 실시형태의 확장 보드(1a)는, 도 6에 도시한 바와 같이 칩(C1∼C3)을 구비하고 있다. 본 실시형태에 있어서의 각 칩(C1∼C3)의 CPU는, 다른 칩(슬레이칩칩)에 펌웨어의 주요부(데이터 부분)를 전송하기 전 혹은 펌웨어의 전송이 완료되기 전에, 상기 설정 정보를 포함하는 헤더 영역을 다른 칩에 통지하는 설정 정보 통지 수단으로서도 기능하고 있다.
호스트(2)는 리셋 상태가 해제되면, 확장 보드(1a)(칩 C1, C2, C3)의 기동을 시작시키고(S11), PCI 버스(24)를 통해 칩(C1)의 SDRAM(31)에 펌웨어를 기록한다 (S12).
그리고, 호스트(2)는 펌웨어를 256 바이트 기록할 때마다 PCI의 소정의 레지스터에 플래그를 세워 PCI 인터럽트를 행한다. 또한, 최후는 256 바이트를 만족하지 않아도 PCl 인터럽트를 행한다(S13).
한편, 칩(C1)은 도 8에 도시하는 바와 같이, 호스트(2)의 리셋 해제(전원의 투입 등)에 따라 부트 로더에 의한 기동 처리를 시작한다(S21).
우선, 칩(C1)의 CPU(10)는 PCI 인터럽트가 들어갔는지 여부를 체크한다(S23). 즉 CPU(10)는 PCI 인터페이스(17)의 메모리에 PCI 인터럽트를 위한 플래그가 세워져 있는지 여부를 참조한다. 여기서, CPU(10)는 PCI 인터럽트가 없으면 PCI 인터럽트가 들어갈 때까지 대기하고, PCI 인터럽트가 들어가면 SDRAM(31)에 액세스하여 펌웨어의 헤더를 해석한다(S41). 이것에 의해 CPU(10)는, 펌웨어의 사이즈를 취득하고, 이 사이즈를 SIZE 변수에 대입한다.
그리고 CPU(10)는 설정 정보를 참조하여 동작 모드를 인식한다(S26, S27). 본 예의 칩(C1)은 마스터칩이며, 슬레이브칩[칩(C2)]이 접속되어 있기 때문에, 호스트(2)로부터의 설정 정보는 어드레스 00h의 값이 00h, 어드레스 01h의 값이 02h로 되어 있다. 따라서 CPU(10)는 단계 27에서 슬레이브칩이 2개 있다고 판단하여, 상기 슬레이브칩용으로 SDRAM 상의 설정 정보를 변경한다. 구체적으로는, 어드레스 0 1h의 값을 감산하고(S32), 이것에 의해 어드레스 01h의 값이 00h가 되었는지 여부를 판정한다(S33). 칩(C1)의 경우, 단계 33에 있어서, 어드레스 01h의 값은, 02h에서 1을 빼도 01h가 되기 때문에, 어드레스 00h를 변경하지 않고, 단계 34로 이행하여 SDRAM 상의 펌웨어의 헤더 영역을 직렬 인터페이스(18)로부터 슬레이브칩(C2)으로 다운 로드한다(S42).
여기서 CPU(10)는 다음 PCI 인터럽트가 들어갈 때까지 대기하고(S43), PCI 인터럽트를 계기로 새롭게 수신한 만큼의 펌웨어를 슬레이브칩(C3)에 전송한다. 즉 단계 44에서 SIZE 변수가 256 바이트를 넘어 있으면 256 바이트의 펌웨어를 칩(C3)에 전송하고, 칩(C2)의 소정의 레지스터에 플래그를 세워 PCI 인터럽트하고(S45) SIZE 변수의 값을 256 바이트 감하여 단계 43으로 되돌린다(S46). 또한, 단계 43에서 SIZE 변수가 256 바이트를 넘지 않으면, SIZE 변수 만큼의 펌웨어를 전송하여(S47) SIZE 변수의 값을 0으로 하고, 칩(C2)의 소정의 레지스터에 플래그를 세워 PCI 인터럽트하여 펌웨어의 전송을 완료한다(S48).
이 펌웨어의 전송이 완료된 경우에 CPU(10)는, SDRAM(31)으로부터 펌웨어를 독출하여 CPU(10) 내의 로컬 메모리에 전개한다(S24).
상기 전개 후, CPU(10)는 이 로컬 메모리 상의 펌웨어를 실행하고, 부트 로더로부터 펌웨어 제어를 이행하여 기동 처리를 완료한다(S25).
또한, 칩(C2)은 호스트(2)의 리셋 해제(전원의 투입 등)에 따라 부트 로더에 의한 기동 처리를 시작한다(S21).
우선 칩(C2)의 CPU(10)는 PCI 인터럽트가 들어갔는지 여부를 체크한다(S23). 즉 CPU(10)는 PCI 인터페이스(17)의 메모리에 PCI 인터럽트를 위한 플래그가 세워져 있는지 여부를 참조한다. 여기서, CPU(10)는 PCI 인터럽트가 없으면 PCI 인터럽트가 들어갈 때까지 대기하고, PCI 인터럽트가 들어가면 SDRAM(31)에 액세스하여 펌웨어의 헤더를 해석한다(S41). 이것에 의해 CPU(10)는 펌웨어의 사이즈를 취득하고, 이 사이즈를 SIZE 변수에 대입한다.
그리고 CPU(10)는 설정 정보를 참조하여 동작 모드를 인식한다(S26, S27). 본 예의 칩(C2)은 칩(C3)에 대하여 마스터칩이며, 슬레이브칩[칩(C3)]이 접속되어 있기 때문에, 칩(C1)으로부터의 설정 정보는 어드레스 00h의 값이 00h, 어드레스 0 1h의 값이 01h로 되어 있다. 따라서 CPU(10)는 단계 27에서 슬레이브칩이 1개 있다고 판단하고, 이 슬레이브칩용으로 SDRAM 상의 설정 정보를 변경한다. 구체적으로는, 어드레스 01h의 값을 감산하고(S32), 이것에 의해 어드레스 01h의 값이 00h가 되기 때문에, 어드레스 00h의 값을 01h로 변경하여(S35), SDRAM 상의 펌웨어의 헤더 영역을 직렬 인터페이스(18)로부터 슬레이브칩(C3)에 다운 로드한다(S42).
여기서 CPU(10)는 다음 PCI 인터럽트가 들어갈 때까지 대기하고(S43), PCI 인터럽트를 계기로 새롭게 수신한 만큼의 펌웨어를 슬레이브칩(C3)에 전송한다. 즉 단계 44에서 SIZE 변수가 256 바이트를 넘지 않으면 256 바이트의 펌웨어를 칩(C3)에 전송하고, 칩(C3)의 소정의 레지스터에 플래그를 세워 PCI 인터럽트하여(S45), SIZE 변수의 값을 256 바이트 감하여 단계 43으로 되돌아간다(S46). 또한, 단계 43에서 SIZE 변수가 256 바이트를 넘지 않으면 SIZE 변수 만큼의 펌웨어를 전송하여 (S47) SIZE 변수의 값을 0으로 하고, 칩(C3)의 소정의 레지스터에 플래그를 세워 PCI 인터럽트하여 펌웨어의 전송을 완료한다(S48).
이 펌웨어의 전송이 완료된 경우에 CPU(10)는 SDRAM(31)으로부터 펌웨어를 독출하여 CPU(10) 내의 로컬 메모리에 전개한다(S24).
상기 전개 후, CPU(10)는 이 로컬 메모리 상의 펌웨어를 실행하여, 부트 로더로부터 펌웨어 제어를 이행하여 기동 처리를 완료한다(S25).
또한, 칩(C3)은 호스트(2)의 리셋 해제(전원의 투입 등)에 따라 부트 로더에 의한 기동 처리를 시작한다(S21).
우선 칩(C3)의 CPU(10)는 PCI 인터럽트가 들어갔는지 여부를 체크한다(S23). 즉 CPU(10)는 PCI 인터페이스(17)의 메모리에 PCI 인터럽트를 위한 플래그가 세워져 있는지 여부를 참조한다. 여기서, CPU(10)는 PCI 인터럽트가 없으면 PCI 인터럽트가 들어갈 때까지 대기하고, PCI 인터럽트가 들어가면 SDRAM(31)에 액세스하여 펌웨어의 헤더를 해석한다(S41). 이것에 의해 CPU(10)는 펌웨어의 사이즈를 취득하여, 이 사이즈를 SIZE 변수에 대입한다.
그리고 CPU(10)는, 설정 정보를 참조하여 동작 모드를 인식한다(S26, S27). 본 예의 칩(C3)은 슬레이브칩이기 때문에, 칩(C2)으로부터의 설정 정보는 어드레스 00h의 값이 01h, 어드레스 01h의 값이 00h로 되어 있다.
따라서 CPU(10)는 단계 27에서 슬레이브칩이 없다고 판단하여 펌웨어를 전송하지 않고, 다운 로드만을 행한다(S49∼S52). 즉 CPU(10)는 이 PCI 인터럽트가 들어갔을 때, SIZE 변수가 256 바이트를 넘었는지 여부를 판단하여(S50) 넘으면 SIZE 변수를 256 바이트 감하여 단계 49로 되돌린다(S51). 또한, 단계 50에서 SIZE 변수를 넘지 않으면 SIZE 변수를 0으로 하고, 다운 로드를 완료한다(S52).
이 펌웨어의 다운 로드가 완료된 경우에 CPU(10)는 SDRAM(31)으로부터 펌웨어를 독출하여 CPU(10) 내의 로컬 메모리에 전개한다(S24).
상기 전개 후, CPU(10)는 이 로컬 메모리 상의 펌웨어를 실행하고, 부트 로더로부터 펌웨어 제어를 이행하여 기동 처리를 완료한다(S25).
이상과 같이 본 실시형태에 의하면, 펌웨어를 완전히 다운 로드하기 전에 슬레이브칩에의 전송을 시작할 수 있어 슬레이브칩의 기동을 빠르게 할 수 있다.
<실시형태 4>
도 9는 실시형태 4에 따른 확장 보드의 블록도, 도 10은 실시형태 4에 따른 기동 처리의 흐름도이다. 본 실시형태는 전술한 실시형태 2에 비하여, 동작 모드를 헤더 영역이 아니고 각 칩에 설치한 핀에 의해 설정하는 점이 다르며, 그 밖의 구성은 동일하다. 또한, 본 실시형태에 있어서, 전술한 실시형태 2와 동일한 요소에는 같은 부호를 붙이거나 하여, 재차 설명을 일부 생략한다.
본 실시형태의 확장 보드(1b)는 도 9에 도시한 바와 같이 동일 구성의 칩 (C1, C2, C3)을 염주처럼 엮어 구비하고 있다. 이 칩(C2)은 칩(C1)에 대해서는 슬레이브칩이지만, 칩(3)에 대해서는 마스터칩이 된다. 각 칩(C1, C2, C3)에는 각각 마스터칩인지 여부를 나타내는 핀(32)을 접속하고 있다. 이 핀(32)은 0이나 1의 상태로 세트할 수 있고, 0의 상태이면 마스터칩인 것을 나타내고, 1의 상태이면 슬레이브칩인 것을 나타낸다.
호스트(2)는 리셋 상태가 해제되면, 확장 보드(1b)(칩 C1, C2, C3)의 기동을 시작하게 하여(S11), PCI 버스(24)를 통해 칩(C1)의 SDRAM(31)에 펌웨어를 기록한다(S12).
그리고, 호스트(2)는 PCI의 소정의 레지스터에 플래그를 세워 PCI 인터럽트를 행하고, 펌웨어의 전개를 시작하게 한다(S13).
한편, 칩(C1)은 도 10에 도시하는 바와 같이, 호스트(2)의 리셋 해제(전원의 투입 등)에 따라 부트 로더에 의한 기동 처리를 시작한다(S21).
우선 칩(C1)의 CPU(10)는 직렬 인터럽트가 들어갔는지 여부를 체크하고(S22), 직렬 인터럽트가 없으면 PCI 인터럽트가 들어갔는지 여부를 체크한다(S23). 즉 CPU(10)는 PCI 인터페이스(17)의 메모리에 PCI 인터럽트를 위한 플래그가 세워져 있는지 여부를 참조한다. 여기서, CPU(10)는 PCI 인터럽트가 없으면 단계 22로 되돌아가며, PCI 인터럽트가 들어가면, 이것을 계기로 SDRAM(31)로부터 펌웨어를 독출하여 CPU(10) 내의 로컬 메모리에 전개한다(S24).
상기 전개 후, CPU(10)는 이 로컬 메모리 상의 펌웨어를 실행하여, 부트 로더로부터 펌웨어 제어를 이행한다(S25).
이 펌웨어에 기초하여 CPU(10)는, 핀 설정 정보를 참조하여 동작 모드를 인식한다(S51). 즉 핀(32)의 상태를 참조하여, 핀(32)이 1에 세트되어 있으면 마스터칩이 아닌(펌웨어를 전송하지 않아도 됨)것을 인식하여 기동 처리를 중단하고, 핀(32)이 0에 세트되어 있으면 마스터칩이라고 인식하여 펌웨어의 전송을 행한다 (S52). 본 예의 칩(C1)은 마스터칩이며, 슬레이브칩[칩(C2)]이 접속되어 있기 때문에 핀(32)은 0에 세트되어 있으며, 슬레이브칩이 있다고 판단하고, SDRAM 상의 펌웨어를 직렬 인터페이스(18)로부터 슬레이브칩(C2)에 전송하여 기동 처리를 완료한다.
또한, 칩(C1)은 단계 23에서 PCI 인터럽트가 들어간 것을 인식한 경우, 생성한 스트림이나 다른 칩(C2, C3)으로부터 수신한 스트림을 PCI 인터페이스(17)로부터 호스트(2)에 출력하도록 동작 모드를 설정한다.
또한, 칩(C2)은 호스트(2)의 리셋 해제(전원의 투입 등)에 따라서, 전술한 칩(C1)과 같이 부트 로더에 의한 기동 처리를 시작하고(S21), 직렬 인터럽트 및 PCI 인터럽트를 순차 체크한다(S22, S23).
여기서, 칩(C1)이 전술한 바와 같이 펌웨어를 칩(C2)에 전송하면, 칩(2)의 CPU(10)에 직렬 인터럽트가 들어간다. 이 직렬 인터럽트를 계기로 칩(C2)의 CPU(10)는 헤더를 수신하여 해석하고, 펌웨어의 사이즈를 인식한다(S30). 그리고 CPU(10)는 이 사이즈 만큼의 펌웨어를 수신하여 SDRAM(31)에 기억시킨다(S31).
상기 펌웨어의 수신을 완료하면 CPU(10)는, SDRAM(31)으로부터 펌웨어를 독출하여 CPU(10) 내의 로컬 메모리에 전개한다(S24).
상기 전개 후, CPU(10)는 이 로컬 메모리 상의 펌웨어를 실행하여, 부트 로더로부터 펌웨어 제어를 이행한다(S25).
이 펌웨어에 기초하여 CPU(10)는 핀 설정 정보를 참조하여 동작 모드를 인식한다(S51). 본 예의 칩(C2)은 칩(C3)에 대하여 마스터칩이기 때문에, 핀(32)은 0에 세트되어 있으며, 슬레이브칩이 있다고 판단하고, SDRAM 상의 펌웨어를 직렬 인터페이스(18)로부터 슬레이브칩(C3)으로 전송하여 기동 처리를 완료한다(S52).
또한, 칩(C3)은 호스트(2)의 리셋 해제(전원의 투입 등)에 따라 전술한 칩(C2)과 같이 부트 로더에 의한 기동 처리를 시작하고(S21), 직렬 인터럽트 및 PCI 인터럽트를 순차 체크한다(S22, S23).
여기서, 칩(C2)이 전술한 바와 같이 펌웨어를 칩(C3)에 전송하면, 칩(3)의 CPU(10)에 직렬 인터럽트가 들어간다. 이 직렬 인터럽트를 계기로 칩(C3)의 CPU(10)는 헤더를 수신하여 해석하고, 펌웨어의 사이즈를 인식한다(S30). 그리고 CPU(10)는 이 사이즈 만큼의 펌웨어를 수신하여 SDRAM(31)에 기억시킨다(S31).
상기 펌웨어의 수신을 완료하면 CPU(10)는 SDRAM(31)으로부터 펌웨어를 독출하여 CPU(10) 내의 로컬 메모리에 전개한다(S24).
상기 전개 후, CPU(10)는 이 로컬 메모리 상의 펌웨어를 실행하고, 부트 로더로부터 펌웨어 제어를 이행한다(S25).
이 펌웨어에 기초하여 CPU(10)는 핀 설정 정보를 참조하여 동작 모드를 인식한다(S51). 본 예의 칩(C3)은 슬레이브칩이기 때문에, 핀(32)은 1에 세트되어 있으며, 펌웨어의 전송을 하지 않고 기동 처리를 완료한다.
이상과 같이 본 실시형태에 의하면, 헤더 영역의 재기록을 하지 않고, 기동 시간의 단축화가 도모된다.
<실시형태 5>
도 11은 실시형태 5에 따른 기동 처리의 흐름도이다. 본 실시형태는 전술한 실시형태 4에 비하여, 각 칩에 설치한 핀의 설정에 기초하여 슬레이브칩이 마스터 칩에 설정 정보를 전달하는 점이 다르며, 그 밖의 구성은 동일하다. 본 실시형태에 있어서, 전술한 실시형태 4와 동일한 요소에는 같은 부호를 붙이거나 하여, 재차 설명을 일부 생략한다. 본 실시형태의 하드웨어 구성은 실시형태 4의 도 9에서 도시한 구성과 동일하다. 또한, 본 실시형태에 있어서의 각 칩(C1∼C3)의 CPU는 다른 칩(마스터칩)에 설정 정보(슬레이브칩이 접속되어 있는 취지의 정보)를 통지하는 수단으로서도 기능하고 있다.
본 실시형태에 있어서, 확장 보드(1b)의 각 칩(C1, C2, C3)에 설치한 핀(32)은 0이나 1의 상태로 세트할 수 있고, 1의 상태이면 슬레이브칩인 것을 나타내고, 0의 상태이면 슬레이브칩이 아닌 것을 나타낸다.
호스트(2)는 리셋 상태가 해제되면, 확장 보드(1b)(칩 C1, C2, C3)의 기동을 시작하게 하여(S11), PCI 버스(24)를 통해 칩(C1)의 SDRAM(31)에 펌웨어를 기록한다(S12).
그리고, 호스트(2)는 PCI의 소정의 레지스터에 플래그를 세워 PCI 인터럽트를 행하고, 펌웨어의 전개를 시작하게 한다(S13).
한편, 각 칩(C1, C2, C3)은 도 11에 도시하는 바와 같이, 호스트(2)의 리셋 해제에 따라 부트 로더에 의한 기동 처리를 시작한다(S21).
각 칩(C1, C2, C3)은 우선, 핀(32)의 상태를 참조한다(S61). 본 실시형태에 있어서 칩(C3)의 핀(32)은 1에 세트되어 있기 때문에, 상기 칩(C3)의 CPU(10)는 슬레이브칩이라고 인식하여 동작 모드를 설정하는 동시에, 설정 정보를 마스터칩(C2)에 송신한다(S62). 그리고, 칩(C3)은 설정 정보를 수신하지 않기 때문에, 단계63을 패스하고, 직렬 인터럽트가 있을 때까지 대기한다(S22, S23).
또한, 칩(C2)의 CPU(10)는 핀(32)의 상태를 참조하여(S61), 상기 상태가 1이기 때문에 동작 모드를 슬레이브칩으로서 설정하는 동시에, 설정 정보를 마스터칩(C1)에 송신한다(S62). 그리고, 칩(C2)의 CPU(10)는 설정 정보의 수신이 있었는지 여부를 판정하고(S63), 칩(C3)으로부터 수신하고 있기 때문에, 동작 모드를 마스터칩으로서도 설정한다(S64). 그 후, 칩(C2)의 CPU10은 직렬 인터럽트가 있을 때까지 대기한다(S22, S23).
한편, 칩(C1)의 CPU(10)는 핀(32)의 상태를 참조하여(S61), 상기 상태가 0이기 때문에, 단계 62를 패스한다. 그리고 칩(C1)의 CPU(10)는 설정 정보의 수신이 있었는지 여부를 판정하고(S63), 칩(C2)으로부터 수신하고 있기 때문에, 동작 모드를 마스터칩으로서 설정한다(S64).
다음에 칩(C1)의 CPU(10)는 직렬 인터럽트가 들어갔는지 여부를 체크하고(S22), 직렬 인터럽트가 없으면 PCI 인터럽트가 들어갔는지 여부를 체크한다(S23). 즉 CPU(10)는 PCI 인터페이스(17)의 메모리에 PCI 인터럽트를 위한 플래그가 세워져 있는지 여부를 참조한다. 여기서, CPU(10)는 PCI 인터럽트가 없으면 단계 22로 되돌아가고, PCI 인터럽트가 들어가면 이것을 계기로 SDRAM(31)로부터 펌웨어를 독출하여 CPU(10) 내의 로컬 메모리에 전개한다(S24).
상기 전개 후, CPU(10)는 이 로컬 메모리 상의 펌웨어를 실행하여 부트 로더로부터 펌웨어 제어를 이행한다(S25).
이 펌웨어의 제어에 의해 CPU(10)는 동작 모드를 참조하여(S65) 마스터칩이아니면 기동 처리를 완료하고, 마스터칩이면 펌웨어의 전송을 행한다(S66). 본 예의 칩(C1)은 마스터 칩이며, 슬레이브칩[칩(C2)]이 접속되어 있기 때문에, 펌웨어를 직렬 인터페이스(18)로부터 슬레이브칩(C2)에 전송하여 기동 처리를 완료한다.
또한, 칩(C1)은 단계 61에서 슬레이브칩이 아닌 것을 인식한 경우, 자신의 MUX(15)로 생성한 스트림이나 다른 칩(C2, C3)으로부터 수신한 스트림을 PCI 인터페이스(17)로부터 호스트(2)에 출력하도록 동작 모드를 설정한다.
또한, 칩(C2)은 칩(C1)에 의해 펌웨어가 전송되어 직렬 인터럽트가 들어가면, 이 직렬 인터럽트를 계기로 CPU(10)가 헤더를 수신하여 해석하고, 펌웨어의 사이즈를 인식한다(S30). 그리고 CPU(10)는 이 사이즈 만큼의 펌웨어를 수신하여 SDRAM(31)에 기억시킨다(S31).
상기 펌웨어의 수신을 완료하면 CPU(10)는, SDRAM(31)으로부터 펌웨어를 독출하여 CPU(10) 내의 로컬 메모리에 전개한다(S24).
이 전개 후, CPU(10)는 이 로컬 메모리 상의 펌웨어를 실행하여, 부트 로더로부터 펌웨어 제어를 이행한다(S25).
이 펌웨어의 제어에 의해 CPU(10)는 동작 모드를 참조한다(S65). 본 예의 칩 (C2)은 칩(C3)에 대하여 마스터칩이기 때문에, SDRAM 상의 펌웨어를 직렬 인터페이스(18)로부터 슬레이브 칩(C3)에 전송하여 기동 처리를 완료한다(S66).
또한, 칩(C3)은 칩(C2)에 의해 펌웨어가 전송되어, 직렬 인터럽트가 들어가면, 이 직렬 인터럽트를 계기로 CPU(10)가 헤더를 수신하여 해석하고, 펌웨어의 사이즈를 인식한다(S30). 그리고 CPU(10)는 이 사이즈 만큼의 펌웨어를 수신하여 SDRAM(31)에 기억시킨다(S31).
이 펌웨어의 수신을 완료하면 CPU(10)는, SDRAM(31)으로부터 펌웨어를 독출하여 CPU(10) 내의 로컬 메모리에 전개한다(S24).
상기 전개 후, CPU(10)는 이 로컬 메모리 상의 펌웨어를 실행하여 부트 로더로부터 펌웨어 제어를 이행한다(S25).
이 펌웨어의 제어에 의해 CPU(10)는 동작 모드를 참조한다(S65). 본 예의 칩(C3)은 마스터칩이 아니기 때문에, 펌웨어의 전송을 하지 않고 기동 처리를 완료한다.
이상과 같이 본 실시형태에 의하면, 헤더 영역의 재기록을 하지 않고, 기동 시간의 단축화가 도모된다.
<기타>
본 발명은, 전술한 도시예에만 한정되는 것이 아니라, 본 발명의 요지를 일탈하지 않는 범위 내에서 여러 가지 변경을 가하여 물론 얻는 것이다.
예컨대, 이하에 부기한 구성이라도 전술한 실시형태와 동일한 효과를 얻을 수 있다. 또한, 이들의 구성 요소는 가능한 한 조합할 수 있다.
(부기 1)
적어도 일부가 다른 칩과 공통의 펌웨어에 기초하여 정보 처리를 행하는 칩으로서,
펌웨어를 수신하는 수신 수단과,
설정 정보를 참조하는 참조 수단과,
상기 설정 정보에 따라 상기 펌웨어를 다른 칩에 전송하는 전송 수단을
구비한 칩.
(부기 2)
상기 펌웨어가 상기 설정 정보를 갖고,
이 설정 정보를 소정 처리에 의해 전송지의 칩용 설정 정보로 변경하는 변경수단을 구비한 부기 1에 기재한 칩.
(부기 3)
상기 설정 정보가 종속하는 칩의 유무를 나타내고,
상기 전송 수단은, 종속하는 칩이 있는 경우에는 펌웨어를 전송하고, 종속하는 칩이 없는 경우에는 펌웨어의 전송을 행하지 않는 부기 1에 기재한 칩.
(부기 4)
상기 설정 정보가 종속하는 칩의 수를 나타내고,
상기 변경 수단이 상기 칩의 수를 감산하는 부기 2에 기재한 칩.
(부기 5)
상기 수신 수단에 의한 펌웨어의 수신과 병행하여 상기 전송 수단에 의한 펌 웨어의 전송을 행하는 부기 1에 기재한 칩.
(부기 6)
상기 참조 수단이 상기 설정 정보를 나타내는 핀의 상태를 참조하는 부기 1에 기재한 칩.
(부기 7)
적어도 일부가 다른 칩과 공통의 펌웨어에 기초하여 정보 처리를 행하는 칩으로서,
상기 공통의 펌웨어인 다른 칩으로부터 설정 정보에 기초하여 전송된 펌웨어를 수신하는 수신 수단
을 구비한 칩.
(부기 8)
상기 다른 칩에 펌웨어를 전송하는 전송 수단과, 상기 다를 칩에 펌웨어를 전송하기 전에, 상기 설정 정보를 다른 칩에 통지하는 설정 정보 통지 수단을 구비한 청구항 7에 기재한 칩.
(부기 9)
상기 설정 정보를 상기 다른 칩에 통지하는 수단을 구비한 부기 7에 기재한 칩.
(부기 10)
적어도 일부가 다른 칩과 공통의 펌웨어에 기초하여 정보 처리를 행하는 칩이 행하는 방법으로서,
펌웨어를 수신하는 단계와,
설정 정보를 참조하는 단계와,
상기 설정 정보에 따라 상기 펌웨어를 다른 칩에 전송하는 단계를
행하는 칩의 기동 방법.
(부기 11)
상기 펌웨어가 상기 설정 정보를 갖고,
이 설정 정보를 소정 처리에 의해, 전송지의 칩용 설정 정보로 변경하는 단계를 구비한 부기 10에 기재한 칩의 기동 방법.
(부기 12)
상기 설정 정보가 종속하는 칩의 유무를 나타내고,
상기 펌웨어를 전송하는 단계로써, 종속하는 칩이 있는 경우에는 펌웨어를 전송하고, 종속하는 칩이 없는 경우에는 펌웨어의 전송을 행하지 않는 부기 10에 기재한 칩의 기동 방법.
(부기 13)
상기 설정 정보가 종속하는 칩의 수를 나타내고,
상기 설정 정보를 변경하는 단계로써, 상기 칩의 수를 감산하는 부기 11에 기재한 칩의 기동 방법.
(부기 14)
상기 펌웨어의 수신과 병행하여 상기 펌웨어의 전송을 행하는 부기 10에 기재한 칩의 기동 방법.
(부기 15)
상기 설정 정보를 참조하는 단계에서, 상기 설정 정보를 나타내는 핀의 상태를 참조하는 부기 10에 기재한 칩의 기동 방법.
(부기 16)
적어도 일부가 다른 칩과 공통의 펌웨어에 기초하여 정보 처리를 행하는 칩에 실행되는 프로그램으로서,
펌웨어를 수신하는 단계와, 설정 정보를 참조하는 단계와,
상기 설정 정보에 따라 상기 펌웨어를 다른 칩에 전송하는 단계를
행하는 칩의 매체 클레임.
(부기 17)
상기 펌웨어가 상기 설정 정보를 갖고,
이 설정 정보를 소정 처리에 의해, 전송지의 칩용 설정 정보로 변경하는 단계를 구비한 부기 16에 기재한 매체 클레임.
(부기 18)
상기 설정 정보가 종속하는 칩의 유무를 나타내고,
상기 펌웨어를 전송하는 단계에서, 종속하는 칩이 있는 경우에는 펌웨어를 전송하고, 종속하는 칩이 없는 경우에는 펌웨어의 전송을 행하지 않는 부기 16에 기재한 칩의 매체 클레임.
(부기 19)
상기 설정 정보가 종속하는 칩의 수를 나타내고,
상기 설정 정보를 변경하는 단계에서, 상기 칩의 수를 감산하는 부기 17에 기재한 칩의 매체 클레임.
(부기 20)
상기 펌웨어의 수신과 병행하여 상기 펌웨어의 전송을 행하는 부기 16에 기재한 칩의 매체 클레임.
(부기 21)
상기 설정 정보를 참조하는 단계로써, 상기 설정 정보를 나타내는 핀의 상태를 참조하는 부기 16에 기재한 칩의 매체 클레임.
(부기 22)
적어도 일부가 다른 칩과 공통의 펌웨어에 기초하여 정보 처리를 행하는 복수의 칩을 구비하고,
상기 각 칩이,
펌웨어를 수신하는 수신 수단과,
설정 정보를 참조하는 참조 수단과,
상기 설정 정보에 따라 상기 펌웨어를 다른 칩에 전송하는 전송 수단을
구비한 장치.
(부기 23)
상기 펌웨어가 상기 설정 정보를 갖고,
이 설정 정보를 소정 처리에 의해 전송지의 칩용 설정 정보로 변경하는 변경수단을 구비한 부기 22에 기재한 장치.
(부기 24)
상기 설정 정보가 종속하는 칩의 유무를 나타내고,
상기 전송 수단은 종속하는 칩이 있는 경우에는 펌웨어를 전송하고, 종속는 칩이 없는 경우에는 펌웨어의 전송을 행하지 않는 부기 22에 기재한 장치.
(부기 25)
상기 설정 정보가 종속하는 칩의 수를 나타내고,
상기 변경 수단이 상기 칩의 수를 감산하는 부기 23에 기재한 장치.
(부기 26)
상기 수신 수단에 의한 펌웨어의 수신과 병행하여 상기 전송 수단에 의한 펌웨어의 전송을 하는 부기 22에 기재한 장치.
(부기 27)
적어도 일부가 다른 칩과 공통의 펌웨어에 기초하여 정보 처리를 행하는 복수의 칩을 행하는 방법으로서,
펌웨어를 수신하는 단계와,
설정 정보를 참조하는 단계와,
상기 설정 정보에 따라 상기 펌웨어를 다른 칩에 전송하는 단계를
행하는 복수 칩의 기동 방법.
(부기 28)
적어도 일부가 다른 칩과 공통의 펌웨어에 기초하여 정보 처리를 행하는 칩이 실행하는 기동 방법으로서,
기동시에 상기 다른 칩으로부터 설정 정보에 기초하여 전송된 펌웨어를 수신하는 칩의 기동 방법.
(부기 29)
상기 설정 정보를 다른 칩에 통지하고 나서, 상기 다른 칩에 펌웨어를 전송하는 부기 28에 기재한 칩의 기동 방법.
(부기 30)
상기 다른 칩에 설정 정보를 통지하는 부기 28에 기재한 칩의 기동 방법.