KR20060053929A - 정보 처리 장치, 정보 처리 방법 및 프로그램 - Google Patents

정보 처리 장치, 정보 처리 방법 및 프로그램 Download PDF

Info

Publication number
KR20060053929A
KR20060053929A KR1020050065693A KR20050065693A KR20060053929A KR 20060053929 A KR20060053929 A KR 20060053929A KR 1020050065693 A KR1020050065693 A KR 1020050065693A KR 20050065693 A KR20050065693 A KR 20050065693A KR 20060053929 A KR20060053929 A KR 20060053929A
Authority
KR
South Korea
Prior art keywords
processor
information processing
processing
subprocessor
rate
Prior art date
Application number
KR1020050065693A
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 KR20060053929A publication Critical patent/KR20060053929A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)
  • Power Sources (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 프로세서의 동작율과 사용율과의 관계로부터 분산 처리의 할당을 제어한다. 단계 S31에서 새로운 분산 처리를 명령받은 경우, 단계 S32에서 할당 조건을 충족시키고 있는지의 여부를 나타내는 플래그가 초기화되고, 단계 S33, 단계 S34에서 프로세서 사용율과 프로세서 동작율이 취득되고, 단계 S35에서 할당이 결정된 프로세서를 나타내는 플래그가 초기화된다. 단계 S36에서 프로세서 할당 결정 처리가 실행되고, 단계 S37에서 할당이 성공하였다고 판단된 경우, 단계 S38에서 프로세서 동작율의 설정을 변경할 필요가 있는지의 여부가 판단되고, 필요가 있으면, 단계 S39에서 새로운 프로세서 동작율이 산출되고, 단계 S40에서 프로세서 사용율과 프로세서 동작율이 갱신된다. 단계 S41에서 프로그램과 데이터가 로드되어, 논리 쓰레드의 처리가 실행된다. 본 발명은 정보 처리 장치에 적용할 수 있다.
네트워크, 메인 메모리, 메인 프로세서, 로컬 스토리지, 광 디스크

Description

정보 처리 장치, 정보 처리 방법 및 프로그램{INFORMATION PROCESSING APPARATUS, INFORMATION PROCESSING METHOD, AND PROGRAM}
도 1은 본 발명을 적용한 통신 시스템의 일 실시 형태를 도시하는 도면.
도 2는 메인 메모리를 설명하는 도면.
도 3은 서브 프로세서의 로컬 스토리지를 설명하는 도면.
도 4는 키 관리 테이블을 설명하는 도면.
도 5는 소프트웨어 셀의 구성의 예를 도시하는 도면.
도 6은 DMA 커맨드가 스테이터스 회신 커맨드인 경우에서의 소프트웨어 셀의 데이터 영역의 구조를 도시하는 도면.
도 7은 도 1의 정보 처리 컨트롤러의 메인 메모리가 기억하는 소프트웨어의 구성을 도시하는 도면.
도 8은 정보 처리 컨트롤러가 실행 가능한 기능에 대하여 설명하기 위한 기능 블록도.
도 9는 REQUEST_information(어플리케이션 요구 조건)에 대하여 설명하기 위한 도면.
도 10은 소비 전력 PT와, 동작 클럭수와의 관계를 도시하는 도면.
도 11은 분산 처리 할당 결정 처리 1에 대하여 설명하기 위한 플로우차트.
도 12는 분산 처리 할당 결정 처리 1에 대하여 설명하기 위한 플로우차트.
도 13은 새로운 처리가 할당되기 전의 각 프로세서의 상태에 대하여 설명하기 위한 도면.
도 14는 처리 할당된 후의 각 프로세서의 상태에 대하여 설명하기 위한 도면.
도 15는 분산 처리 할당 결정 처리 2에 대하여 설명하기 위한 플로우차트.
도 16은 프로세서 할당 결정 처리에 대하여 설명하기 위한 플로우차트.
도 17은 프로세서 할당 결정 처리에 대하여 설명하기 위한 플로우차트.
도 18은 처리 할당된 후의 각 프로세서의 상태에 대하여 설명하기 위한 도면.
도 19는 새로운 처리가 할당되기 전의 각 프로세서의 상태에 대하여 설명하기 위한 도면.
도 20은 처리 할당된 후의 각 프로세서의 상태에 대하여 설명하기 위한 도면.
<도면의 주요 부분에 대한 부호의 설명>
1 : 정보 처리 장치
2 : 네트워크
3 : 정보 처리 장치
11 : 정보 처리 컨트롤러
12 : 메인 메모리
15 : 조작 입력부
16 : 통신부
19 : 전원부
42 : 메인 프로세서
43 : 서브 프로세서
51 : 로컬 스토리지
101 : 어플리케이션 실행 제어부
102 : 논리 쓰레드 실행 제어부
103 : 동작율 설정부
104 : 동작 정보 취득부
105 : 동작 정보 메모리
특허 문헌 1 : 일본 특개 2002-342165호 공보
특허 문헌 2 : 일본 특개 2002-351850호 공보
특허 문헌 3 : 일본 특개 2002-358289호 공보
특허 문헌 4 : 일본 특개 2002-366533호 공보
특허 문헌 5 : 일본 특개 2002-366534호 공보
본 발명은, 정보 처리 장치 및 정보 처리 방법, 및 프로그램에 관한 것으로, 특히 복수의 프로세서에 의한 분산 처리가 실행되는 경우에 이용하기에 적합한, 정보 처리 장치 및 정보 처리 방법, 및 프로그램에 관한 것이다.
최근, 복수의 프로세서 또는 컴퓨터를 이용하여, 처리를 분산하여 실행시키는, 분산 처리가 주목받고 있다. 분산 처리를 행하는 방법으로는, 통신망을 통하여 접속되어 있는 복수의 컴퓨터에 처리를 실행시키는 방법, 1개의 컴퓨터에 설치된, 복수의 프로세서에 처리를 실행시키는 방법, 및 전술한 2개의 방법을 조합하여 처리를 실행시키는 방법이 있다.
분산 처리의 실행을 요구(지시)하는 장치, 또는 프로세서는, 분산 처리를 실행하기 위해 필요한 데이터 및 프로그램을, 분산 처리를 실행시키는 다른 장치, 또는 다른 프로세서에 송신한다. 분산 처리를 실행하기 위해 필요한 데이터 및 프로그램을 수신한 장치, 또는 프로세서는, 요구된 처리를 실행하고, 요구된 처리를 실시한 데이터를, 분산 처리의 요구원인 장치, 또는 프로세서에 송신한다.
분산 처리의 요구원인 장치, 또는 프로세서는, 분산 처리를 실행시키는 다른 장치, 또는 다른 프로세서로부터 송신되어 온 데이터를 수신하고, 수신한 데이터에 기초하여, 소정의 처리를 행하거나, 수신한 데이터를 기록한다.
종래, 전술한 바와 같이, 균일한 모듈러 구조, 공통의 컴퓨팅 모듈, 및 균일한 소프트웨어 셀을 이용하여 분산 처리를 실행시킴으로써, 고속 처리용 컴퓨터 아키텍처를 실현하는 기술이 있다(예를 들면, 특허 문헌 1 내지 특허 문헌 5).
또한, 최근 정보 처리 장치의 클럭 속도의 향상과 집적도의 향상에 의해, 매 우 고속인 프로세서를 동일한 칩 상에 복수 집적하는 것이 가능하게 되었기 때문에, 복수의 프로세서에 의한 분산 처리는, 대형의 장치를 이용하지 않고, 실현 가능하게 되어 있다.
전술한 특허 문헌에서, 기본으로 되는 처리용 모듈은 프로세서 엘리먼트(PE)이다. PE는 처리 유닛(PU), 다이렉트 메모리 액세스 컨트롤러(DMAC) 및 복수의 부가 처리 유닛(APU), 즉 메인 프로세서에 대한 복수의 서브 프로세서를 구비하도록 이루어져 있다.
최근, 정보 처리 장치의 클럭 속도의 향상과 집적도의 향상에 의해, 처리에 필요한 소비 전력도, 종래와 비교하여 매우 높아지고 있지만, 종래의 분산 처리 시스템에서는, 요구되는 처리를 실행시키고, 또한 프로세서(또는 프로세서군)의 소비 전력을 억제하기 위해서, 분산되는 처리의 할당처로 되는 프로세서의 선택 방법이 고려되지 않았다.
본 발명은 이러한 상황을 감안하여 이루어진 것으로, 요구되는 처리를 실행시킬 수 있고, 또한 프로세서(또는 프로세서군)의 소비 전력을 억제할 수 있도록, 분산되는 처리의 할당처를 적절하게 선택하고, 논리 쓰레드로서 동작하고 있는 기능을 정상적인 상태로 유지하여, 신뢰성이 높은 정보 처리를 실행시키도록 할 수 있는 것이다.
본 발명의 정보 처리 장치는, 제1 정보 처리 수단과, 복수의 제2 정보 처리 수단을 구비하고, 제1 정보 처리 수단은, 어플리케이션 프로그램의 실행을 제어하는 어플리케이션 프로그램 실행 제어 수단과, 제2 정보 처리 수단의 동작에 관한 동작 정보를 취득하는 동작 정보 취득 수단과, 어플리케이션 프로그램 실행 제어 수단의 처리에 의해 실행이 제어되는 어플리케이션 프로그램에 의해서, 제1 정보 처리 수단 및 복수의 제2 정보 처리 수단에 할당되는 복수의 처리를 통합하여 하나의 기능을 제공하는 처리 단위로 하고, 동작 정보 취득에 의해 취득된 동작 정보에 기초하여, 수단 처리 단위에 대응하는 기능을 제공하기 위한 분산 처리를 제어하는 분산 처리 제어 수단을 구비하고, 분산 처리 제어 수단은, 제1 정보 처리 수단 및 제2 정보 처리 수단에서, 전체 처리 능력에 대한 사용 중인 처리 능력의 비율이 1 이상이 되지 않도록, 처리 단위에 대응하는 분산 처리를 제어하는 것을 특징으로 한다.
제1 정보 처리 수단에는, 분산 처리 제어 수단에 의한 제어에 기초하여, 제1 정보 처리 수단 및 제2 정보 처리 수단이 동작 가능한 최대 동작 클럭수에 대한, 현재 동작 가능한 클럭수의 비를 설정하는 클럭수비 설정 수단을 더 구비시키도록 할 수 있다.
클럭수비 설정 수단에는, 제1 정보 처리 수단 및 제2 정보 처리 수단이 동작 가능한 최대 동작 클럭수에 대한, 현재 동작 가능한 클럭수의 비가 공통으로 되도록 클럭수의 비를 설정시키도록 할 수 있다.
클럭수비 설정 수단에는, 제1 정보 처리 수단 및 제2 정보 처리 수단이 동작 가능한 최대 동작 클럭수에 대한, 현재 동작 가능한 클럭수를, 제1 정보 처리 수단 및 복수의 제2 정보 처리 수단의 각각에 독립적으로 설정시키도록 할 수 있다.
분산 처리 제어 수단에는, 동작 가능한 최대 동작 클럭수의 설정에 대하여, 전체 처리 능력에 대한 사용 중인 처리 능력의 비율이 낮은 제2 정보 처리 수단에 대하여, 우선적으로, 처리 단위에 대응하는 분산 처리가 할당되도록 제어시키도록 할 수 있다.
본 발명의 정보 처리 방법은, 제1 정보 처리 수단과, 복수의 제2 정보 처리 수단을 구비하는 정보 처리 장치의 정보 처리 방법으로서, 제1 정보 처리 수단에 의한 어플리케이션 프로그램의 실행에 의해서, 복수의 제2 정보 처리 수단에 할당되는 복수의 처리를 통합하여 하나의 기능을 제공하는 처리 단위로 하고, 처리 단위에 대응하는 기능을 제공하기 위한 분산 처리의 개시를 요구하는 분산 처리 개시 요구 단계와, 제1 정보 처리 수단 및 제2 정보 처리 수단의 동작에 관한 동작 정보에 기초하여, 제1 정보 처리 수단 및 제2 정보 처리 수단에서, 전체 처리 능력에 대한 사용 중인 처리 능력의 비율이 1 이상으로 되지 않도록, 처리 단위에 대응하는 분산 처리의 할당을 제어하는 할당 제어 단계를 포함하는 것을 특징으로 한다.
본 발명의 프로그램은, 컴퓨터에, 제1 정보 처리 수단과, 복수의 제2 정보 처리 수단을 이용한 분산 처리를 실행시키기 위한 프로그램으로서, 제1 정보 처리 수단에 의한 어플리케이션 프로그램의 실행에 의해서, 복수의 제2 정보 처리 수단에 할당되는 복수의 처리를 통합하여 하나의 기능을 제공하는 처리 단위로 하고, 처리 단위에 대응하는 기능을 제공하기 위한 분산 처리의 개시를 요구하는 분산 처리 개시 요구 단계와, 제1 정보 처리 수단 및 제2 정보 처리 수단의 동작에 관한 동작 정보에 기초하여, 제1 정보 처리 수단 및 제2 정보 처리 수단에서, 전체 처리 능력에 대한 사용 중인 처리 능력의 비율이 1 이상으로 되지 않도록, 처리 단위에 대응하는 분산 처리의 할당을 제어하는 할당 제어 단계를 포함하는 것을 특징으로 하는 처리를 컴퓨터에 실행시킨다.
본 발명의 정보 처리 장치 및 정보 처리 방법, 및 프로그램에서는, 제1 정보 처리 수단에 의한 어플리케이션 프로그램의 실행에 의해서, 분산 처리가 실행되고, 제1 정보 처리 수단 및 제2 정보 처리 수단의 동작에 관한 동작 정보에 기초하여, 제1 정보 처리 수단 및 제2 정보 처리 수단에서, 전체 처리 능력에 대한 사용 중인 처리 능력의 비율이 1 이상으로 되지 않도록, 처리 단위에 대응하는 분산 처리의 할당이 제어된다.
<실시 형태>
이하에 본 발명의 실시 형태를 설명하지만, 본 명세서에 기재된 발명과, 발명의 실시 형태와의 대응 관계를 예시하면, 다음과 같이 된다. 이 기재는, 본 명세서에 기재되어 있는 발명을 서포트하는 실시 형태가, 본 명세서에 기재되어 있는 것을 확인하기 위한 것이다. 따라서, 발명의 실시 형태 중에는 기재되어 있지만, 발명에 대응하는 것으로서, 여기에는 기재되어 있지 않은 실시 형태가 있었다고 해도, 그것은 그 실시 형태가, 그 발명에 대응하는 것이 아닌 것을 의미하는 것은 아니다. 반대로, 실시 형태가 발명에 대응하는 것으로서 여기에 기재되어 있었다고 하여도, 그것은 그 실시 형태가, 그 발명 이외의 발명에는 대응하지 않는 것인 것을 의미하는 것도 아니다.
또한, 이 기재는, 본 명세서에 기재되어 있는 발명의 모두를 의미하는 것도 아니다. 즉, 이 기재는, 본 명세서에 기재되어 있는 발명으로서, 이 출원에서는 청구되어 있지 않은 발명의 존재, 즉 장래, 분할 출원되거나, 보정에 의해 출현, 추가되는 발명의 존재를 부정하는 것이 아니다.
청구항 1에 기재된 정보 처리 장치는, 제1 정보 처리 수단(예를 들면, 도 1의 메인 프로세서(42))과, 복수의 제2 정보 처리 수단(예를 들면, 도 1의 서브 프로세서(43))을 구비하고, 제1 정보 처리 수단은, 어플리케이션 프로그램의 실행을 제어하는 어플리케이션 프로그램 실행 제어 수단(예를 들면, 도 8의 어플리케이션 실행 제어부(101))과, 제2 정보 처리 수단의 동작에 관한 동작 정보를 취득하는 동작 정보 취득 수단(예를 들면, 도 8의 동작 정보 취득부(104))과, 어플리케이션 프로그램 실행 제어 수단의 처리에 의해 실행이 제어되는 어플리케이션 프로그램에 의해서, 제1 정보 처리 수단 및 복수의 제2 정보 처리 수단에 할당되는 복수의 처리를 통합하여 하나의 기능을 제공하는 처리 단위로 하고, 동작 정보 취득에 의해 취득된 동작 정보에 기초하여, 수단 처리 단위에 대응하는 기능을 제공하기 위한 분산 처리를 제어하는 분산 처리 제어 수단(예를 들면, 도 8의 논리 쓰레드 실행 제어부(102))을 구비하고, 분산 처리 제어 수단은, 제1 정보 처리 수단 및 제2 정보 처리 수단에서, 전체 처리 능력에 대한 사용 중인 처리 능력의 비율이 1 이상으로 되지 않도록, 처리 단위에 대응하는 분산 처리를 제어하는 것을 특징으로 한다.
제1 정보 처리 수단은, 분산 처리 제어 수단에 의한 제어에 기초하여, 제1 정보 처리 수단 및 제2 정보 처리 수단이 동작 가능한 최대 동작 클럭수에 대한, 현재 동작 가능한 클럭수의 비(예를 들면, 프로세서 동작율 SCPU_RATE[k])를 설정하는 클럭수비 설정 수단(예를 들면, 도 8의 동작율 설정부(103))를 더 구비할 수 있다.
청구항 6에 기재된 정보 처리 방법은, 제1 정보 처리 수단(예를 들면, 메인 프로세서(42))과, 복수의 제2 정보 처리 수단(예를 들면, 서브 프로세서(43))을 구비하는 정보 처리 장치의 정보 처리 방법으로서, 제1 정보 처리 수단에 의한 어플리케이션 프로그램의 실행에 의해서, 복수의 제2 정보 처리 수단에 할당되는 복수의 처리를 통합하여 하나의 기능을 제공하는 처리 단위로 하고, 처리 단위에 대응하는 기능을 제공하기 위한 분산 처리의 개시를 요구하는 분산 처리 개시 요구 단계(예를 들면, 도 11의 단계 S1 또는 도 15의 단계 S31의 처리)와, 제1 정보 처리 수단 및 제2 정보 처리 수단의 동작에 관한 동작 정보에 기초하여, 제1 정보 처리 수단 및 제2 정보 처리 수단에서, 전체 처리 능력에 대한 사용 중인 처리 능력의 비율이 1 이상으로 되지 않도록, 처리 단위에 대응하는 분산 처리의 할당을 제어하는 할당 제어 단계(예를 들면, 도 11의 단계 S2 내지 단계 S13의 처리 또는 도 16 및 도 17을 이용하여 설명되는 처리)를 포함하는 것을 특징으로 한다.
또한, 청구항 7에 기재된 프로그램에서도, 각 단계가 대응하는 실시 형태(단지 일례)는, 청구항 6에 기재된 정보 처리 방법과 마찬가지이다.
이하, 도면을 참조하여, 본 발명의 실시 형태에 대하여 설명한다.
도 1은, 분산 처리를 실행하는 것이 가능한, 통신 시스템의 일 실시 형태를 도시하는 도면이다. 이 통신 시스템에서는, 예를 들면 홈 네트워크, LAN(Local Area Network), WAN(Wide Area Network), 또는 인터넷 등의 광역 네트워크 등에 대응하는 네트워크(2)를 통하여, 정보 처리 장치(1-1) 내지 정보 처리 장치(1-n)가 서로 접속되어 있다.
정보 처리 장치(1-1)는, 복수의 정보 처리 장치에 의한 분산 처리의 실행을 지시받으면, 요구된 처리를 실행하기 위해 필요한 데이터 및 프로그램을 포함하는 소프트웨어 셀을 생성하고, 생성한 소프트웨어 셀을, 네트워크(2)를 통하여, 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n) 중 어느 하나의 장치에 송신한다.
정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)는, 각각 정보 처리 장치(1-1)로부터 송신되어 온 소프트웨어 셀을 수신하고, 수신한 소프트웨어 셀에 기초하여, 요구된 처리를 실행한다. 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)는, 각각 요구된 처리를 실행하고나서, 요구된 처리의 결과 얻어진 데이터를, 네트워크(2)를 통하여 정보 처리 장치(1-1)에 송신한다. 이하, 정보 처리 장치(1-1) 내지 정보 처리 장치(1-n)을 개개로 구별할 필요가 없을 때, 단순히 정보 처리 장치(1)라고 칭한다.
정보 처리 장치(1-1)는, 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n) 중의 어느 하나로부터 송신되어 온 데이터를 수신하고, 수신한 데이터에 기초하여, 소정의 처리를 실행하거나, 수신한 데이터를 기록한다.
정보 처리 장치(1-1)는, 적어도 1개의 정보 처리 컨트롤러(11), 메인 메모리(12), 기록부(13-1), 기록부(13-2), 버스(14), 조작 입력부(15), 통신부(16), 표시부(17), 및 드라이브(18)를 포함하도록 구성된다.
정보 처리 컨트롤러(11)는, 메인 메모리(12)에 기록되어 있는 각종 프로그램을 실행하여, 정보 처리 장치(1-1) 전체를 제어한다. 정보 처리 컨트롤러(11)는, 소프트웨어 셀을 생성하고, 생성한 소프트웨어 셀을, 버스(14)를 통하여, 통신부(16)에 공급한다. 정보 처리 컨트롤러(11)는, 통신부(16)로부터 공급된 데이터를 기록부(13-1) 또는 기록부(13-2)에 공급한다. 정보 처리 컨트롤러(11)는, 조작 입력부(15)로부터 입력되는 유저의 명령에 기초하여, 지정된 데이터를, 메인 메모리(12), 기록부(13-1) 또는 기록부(13-2)로부터 취득하고, 취득한 데이터를, 버스(14)를 통하여 통신부(16)에 공급한다.
또한, 정보 처리 컨트롤러(11)에는, 정보 처리 장치(1-1)를, 네트워크(2) 전체를 통해서 일의적으로 특정할 수 있는 정보 처리 장치 ID가 할당되어 있다.
정보 처리 컨트롤러(11)는, 버스(41), 메인 프로세서(42), 서브 프로세서(43-1) 내지 서브 프로세서(43-m), DMAC(Direct Memory Access Controller)(44), 키 관리 테이블 기록부(45), 및 DC(Disk Controller)(46)를 구비하고 있다.
메인 프로세서(42), 서브 프로세서(43-1) 내지 서브 프로세서(43-m), DMAC(44), 키 관리 테이블 기록부(45), 및 DC(46)는, 버스(41)를 통하여, 서로 접속되어 있다. 또한, 메인 프로세서(42)에는 메인 프로세서(42)를 특정하기 위한 메인 프로세서 ID가 식별자로서 할당된다. 마찬가지로, 서브 프로세서(43-1) 내지 서브 프로세서(43-m) 각각에는, 서브 프로세서(43-1) 내지 서브 프로세서(43-m)의 각각을 특정하기 위한 서브 프로세서 ID의 각각이 식별자로서 할당된다.
메인 프로세서(42)는, 네트워크(2)를 통하여 접속되어 있는, 정보 처리 장치 (1-2) 내지 정보 처리 장치(1-n)에 분산 처리를 실행시키는 경우, 소프트웨어 셀을 생성하고, 생성한 소프트웨어 셀을 버스(41) 및 버스(14)를 통하여, 통신부(16)에 공급한다. 또한, 메인 프로세서(42)는, 관리를 위한 프로그램 이외의 프로그램을 실행하도록 구성할 수도 있다. 이 경우, 메인 프로세서(42)는, 서브 프로세서로서 기능한다.
메인 프로세서(42)는, 서브 프로세서(43-1) 내지 서브 프로세서(43-m)에 대하여, 각각의 서브 프로세서에 독립한 프로그램을 실행시켜서, 논리적으로 1개의 기능(논리 쓰레드)으로서 결과를 구하도록 할 수 있다. 즉, 메인 프로세서(42)는, 서브 프로세서(43-1) 내지 서브 프로세서(43-m)에 의한 프로그램의 실행의 스케줄 관리 및 정보 처리 컨트롤러(11)(정보 처리 장치(1-1))의 전체의 관리를 행한다.
메인 프로세서(42)는, 로컬 스토리지(51-1)를 구비하고, 메인 메모리(12)로부터 로드한 데이터 및 프로그램을, 로컬 스토리지(51-1)에 일시적으로 기억시킨다. 메인 프로세서(42)는, 로컬 스토리지(51-1)로부터 데이터 및 프로그램을 판독하고, 판독한 데이터 및 프로그램에 기초하여, 각종 처리를 실행한다.
서브 프로세서(43-1) 내지 서브 프로세서(43-m)는, 메인 프로세서(42)의 제어에 기초하여, 병렬적이고 또한 독립적으로, 프로그램을 실행하여, 데이터를 처리한다. 또한, 필요에 따라, 메인 프로세서(42)가 실행하는 프로그램이, 서브 프로세서(43-1) 내지 서브 프로세서(43-m)의 각각이 실행하는 프로그램의 각각과 제휴하여 동작하도록 구성하는 것도 가능하다.
서브 프로세서(43-1) 내지 서브 프로세서(43-m)의 각각은, 로컬 스토리지 (51-2) 내지 로컬 스토리지(51-(m+1))의 각각을 구비한다. 서브 프로세서(43-1) 내지 서브 프로세서(43-m)의 각각은, 로컬 스토리지(51-2) 내지 로컬 스토리지(51-(m+1))의 각각에, 필요에 따라, 데이터 및 프로그램을 일시적으로 기억시킨다. 서브 프로세서(43-1) 내지 서브 프로세서(43-m)의 각각은, 로컬 스토리지(51-2) 내지 로컬 스토리지(51-(m+1))의 각각으로부터 데이터 및 프로그램을 판독하고, 판독한 데이터 및 프로그램에 기초하여, 각종 처리를 실행한다.
이하, 서브 프로세서(43-1) 내지 서브 프로세서(43-m)의 각각을 개개로 구별할 필요가 없을 때, 단순히 서브 프로세서(43)라고 칭한다. 마찬가지로, 이하 로컬 스토리지(51-1) 내지 로컬 스토리지(51-(m+1))의 각각을 개개로 구별할 필요가 없을 때, 단순히 로컬 스토리지(51)라고 칭한다.
DMAC(44)는, 키 관리 테이블 기록부(45)에 기록되어 있는, 메인 프로세서 키, 서브 프로세서 키, 및 액세스 키에 기초하여, 메인 프로세서(42) 및 서브 프로세서(43)로부터의 메인 메모리(12)에 기억되어 있는 프로그램 및 데이터에의 액세스를 관리한다.
키 관리 테이블 기록부(45)는, 메인 프로세서 키, 서브 프로세서 키, 및 액세스 키를 기록하고 있다. 또한, 메인 프로세서 키, 서브 프로세서 키, 및 액세스 키의 상세 내용은 후술한다.
DC(46)는, 메인 프로세서(42) 및 서브 프로세서(43)로부터의 기록부(13-1) 및 기록부(13-2)에의 액세스를 관리한다.
또한, 여기서는, 정보 처리 장치(1-1)에, 정보 처리 컨트롤러(11)가 1개만 구비되어 있는 것으로서 설명했지만, 정보 처리 컨트롤러(11)는, 정보 처리 장치(1-1)에 복수개 구비되어 있도록 하여도 된다.
메인 메모리(12)는, 예를 들면 RAM으로 구성된다. 메인 메모리(12)는, 메인 프로세서(42) 및 서브 프로세서(43)가 실행하는 각종의 프로그램 및 데이터를 일시적으로 기억하고 있다.
기록부(13-1) 및 기록부(13-2)는, 각각 예를 들면, 하드디스크 등에 의해 구성된다. 기록부(13-1) 및 기록부(13-2)는, 메인 프로세서(42) 및 서브 프로세서(43)가 실행하는 각종의 프로그램 및 데이터를 기록하고 있다. 또한, 기록부(13-1) 및 기록부(13-2)는, 정보 처리 컨트롤러(11)로부터 공급된 데이터를 기록한다. 이하, 기록부(13-1) 및 기록부(13-2)를 개개로 구별할 필요가 없을 때, 단순히 기록부(13)라고 칭한다.
또한, 정보 처리 컨트롤러(11)에는, 버스(14)를 통하여, 조작 입력부(15), 통신부(16), 표시부(17), 및 드라이브(18)가 접속되어 있다. 조작 입력부(15)는, 예를 들면 키, 버튼, 터치 패드, 마우스 등으로 이루어지며, 유저에 의한 조작 입력을 받아, 조작 입력에 대응하는 정보를, 버스(14)를 통하여, 정보 처리 컨트롤러(11)에 공급한다.
통신부(16)는, 정보 처리 컨트롤러(11)로부터 공급된 소프트웨어 셀을, 네트워크(2)를 통하여 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)에 송신한다. 또한, 통신부(16)는, 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)로부터 송신되어 온 데이터를, 버스(14)를 통하여, 정보 처리 컨트롤러(11)에 공급한다.
표시부(17)는, 예를 들면 CRT(cathode ray tube)나 LCD(Liquid Crystal Display) 등으로 구성되어 있고, 버스(14)를 통하여 공급된 정보 처리 컨트롤러(11)의 처리에 의해 생성된 정보(예를 들면, 어플리케이션 프로그램의 실행에 의해 생성된 데이터나, 어플리케이션 프로그램의 실행에 필요한 유저에의 통지 등의 정보를 포함함)를 표시시킨다.
드라이브(18)는, 자기 디스크(61), 광 디스크(62), 광 자기 디스크(63), 혹은 반도체 메모리(64) 등이 장착되었을 때, 이들을 구동하여, 거기에 기록되어 있는 프로그램이나 데이터 등을 취득한다. 취득된 프로그램이나 데이터는, 필요에 따라, 버스(14)를 통하여, 정보 처리 컨트롤러(11)에 전송되어, 정보 처리 컨트롤러(11)에 의해서, 기록부(13)에 기록된다.
또한, 정보 처리 장치(1)에는, 정보 처리 장치(1)의 전체에 전원공급을 행하기 위해, 전원부(19)가 설치되어 있다.
또한, 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)는, 정보 처리 장치(1-1)와 마찬가지로 구성되므로, 그 설명은 생략한다. 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)은 전술한 구성에 한하지 않고, 필요에 따라, 기능을 추가하거나 삭제하거나 하는 것은 가능하고, 그 기능에 대응한 구성을 갖는 것이 가능하다.
다음으로, 도 2 내지 도 4를 참조하여, 서브 프로세서(43)가 메인 메모리(12)에 액세스하는 경우의 처리에 대하여 설명한다.
도 2에 도시된 바와 같이, 메인 메모리(12)에는, 복수의 어드레스를 지정할 수 있는 메모리 로케이션이 배치된다. 각 메모리 로케이션에 대해서는, 데이터의 상태를 나타내는 정보를 저장하기 위한 추가 세그먼트가 할당된다. 추가 세그먼트는, F/E 비트, 서브 프로세서 ID 및 LS 어드레스(로컬 스토리지 어드레스)를 포함한다. 또한, 각 메모리 로케이션에는, 후술하는 액세스 키가 할당된다.
"0"인 F/E 비트는, 서브 프로세서(43)에 의해서 판독되고 있는 처리 중인 데이터, 또는 빈 상태이기 때문에 최신 데이터가 아닌 무효 데이터이고, 그 메모리 로케이션으로부터 판독 불가능한 것을 나타낸다. 또한, "0"인 F/E 비트는, 그 메모리 로케이션에 데이터 기입 가능한 것을 나타내며, 데이터가 기입되면, F/E 비트는 "1"로 설정된다.
"1"인 F/E 비트는, 그 메모리 로케이션의 데이터가 서브 프로세서(43)에 의해서 판독되지 않은, 미 처리의 최신 데이터인 것을 나타낸다. F/E 비트가 "1" 인 메모리 로케이션의 데이터는 판독 가능하고, 서브 프로세서(43)에 의해서 판독되고 나서, F/E 비트는 "0"으로 설정된다. 또한, "1" 인 F/E 비트는, 메모리 로케이션이 데이터 기입 불가능한 것을 나타낸다.
또한, F/E 비트가 "0"(판독 불가능/기입 가능)인 상태에서, 메모리 로케이션에 대하여 판독 예약을 설정하는 것이 가능하다. F/E 비트가 "0"인 메모리 로케이션에 대하여 판독 예약을 행하는 경우에는, 서브 프로세서(43)는, 판독 예약을 행하는 메모리 로케이션의 추가 세그먼트에, 판독 예약 정보로서 서브 프로세서(43)의 서브 프로세서 ID 및 LS 어드레스를 기입한다. 그리고, 데이터를 기입하는 서브 프로세서(43)에 의해서, 판독 예약된 메모리 로케이션에 데이터가 기입되어, F/E 비트가 "1"(판독 가능/기입 불가능)로 설정되었을 때, 미리 판독 예약 정보로 서 추가 세그먼트에 기입되어 있는 서브 프로세서 ID 및 LS 어드레스에 의해서 특정되는 로컬 스토리지(51)에 읽어 낸다.
복수의 서브 프로세서(43)에 의해서 데이터를 다단계로 처리할 필요가 있는 경우, 이와 같이 각 메모리 로케이션의 데이터의 판독 및 기입을 제어함으로써, 전단층의 처리를 행하는 서브 프로세서(43)가, 처리 완료한 데이터를 메인 메모리(12)에서의 소정의 어드레스에 기입한 후에 바로, 후단층의 처리를 행하는 다른 서브 프로세서(43)가 전처리 후의 데이터를 판독하는 것이 가능하게 된다.
또한, 도 3에서 도시된 바와 같이, 서브 프로세서(43)의 로컬 스토리지(51)는, 복수의 어드레스를 지정할 수 있는 메모리 로케이션에 의해서 구성된다. 각 메모리 로케이션에 대해서는, 마찬가지로 추가 세그먼트가 할당된다. 추가 세그먼트는, 비지 비트를 포함한다.
서브 프로세서(43)가 메인 메모리(12)에 기억되어 있는 데이터를 서브 프로세서(43)의 로컬 스토리지(51)의 메모리 로케이션에 읽어 낼 때에는, 대응하는 비지 비트를 "1"로 설정하여 예약한다. 비지 비트가 "1"인 메모리 로케이션에는, 다른 데이터를 저장할 수 없다. 로컬 스토리지(51)의 메모리 로케이션에 데이터가 판독되면, 비지 비트는 "0"으로 설정되어, 다른 데이터를 저장할 수 있도록 된다.
또한, 도 2에 도시한 바와 같이, 정보 처리 컨트롤러(11)에 접속되어 있는 메인 메모리(12)에는, 복수의 샌드 박스가 포함된다. 샌드 박스는, 메인 메모리(12) 내의 영역을 획정하는 것이고, 각 샌드 박스는, 각 서브 프로세서(43)에 할당되고, 할당된 서브 프로세서(43)를 배타적으로 사용할 수 있다. 즉, 서브 프로세 서(43)는, 할당된 샌드 박스를 사용할 수 있지만, 이 영역을 넘어 데이터에 액세스할 수는 없다.
메인 메모리(12)는, 복수의 메모리 로케이션으로 구성되지만, 샌드 박스는, 이들의 메모리 로케이션의 집합이다.
또한, 메인 메모리(12)의 배타적인 제어를 실현하기 위해, 도 4에 도시한 키 관리 테이블이 이용된다. 키 관리 테이블은, 키 관리 테이블 기록부(45)에 기록되어, DMAC(44)와 관련지어진다. 키 관리 테이블 내의 각 엔트리에는, 서브 프로세서 ID, 서브 프로세서 키 및 키 마스크가 포함된다.
서브 프로세서(43)가 메인 메모리(12)에 액세스하는 경우, 서브 프로세서(43)는 DMAC(44)에, 판독 또는 기입의 커맨드를 출력한다. 이 커맨드에는, 서브 프로세서(43)를 특정하는 서브 프로세서 ID 및 액세스 요구처인 메인 메모리(12)의 어드레스가 포함된다.
DMAC(44)는, 서브 프로세서(43)로부터 공급된 커맨드를 실행하는 경우, 키 관리 테이블을 참조하여, 액세스 요구원의 서브 프로세서(43)의 서브 프로세서 키를 조사한다. 그리고, DMAC(44)는, 조사한 액세스 요구원의 서브 프로세서 키와, 액세스 요구처인 메인 메모리(12)의 메모리 로케이션에 할당된 액세스 키를 비교하여, 2개의 키가 일치한 경우에만, 서브 프로세서(43)로부터 공급된 커맨드를 실행한다.
도 4에 도시된 키 관리 테이블에 기록되어 있는 키 마스크는, 그 임의의 비트가 "1"이 됨으로써, 그 키 마스크와 관련지어진 서브 프로세서 키의 대응하는 비 트를 "0" 또는 "1"로 할 수 있다.
예를 들면, 서브 프로세서 키가 "1010"이라고 한다. 통상적으로, 이 서브 프로세서 키에 의해서 "1010"의 액세스 키를 갖는 샌드 박스에의 액세스만이 가능하게 된다. 그러나, 이 서브 프로세서 키와 관련지어진 키 마스크가 "0001"로 설정되어 있는 경우에는, 키 마스크의 비트가 "1"로 설정된 자릿수에 대하여, 서브 프로세서 키와 액세스 키와의 일치 판정이 마스크되고(키 마스크의 비트가 "1"로 설정된 자릿수에 대하여, 판정되지 않고 ), 이 서브 프로세서 키 "1010"에 의해서 액세스 키가 "1010" 또는 "1011" 중 어느 하나인 액세스 키를 갖는 샌드 박스에의 액세스가 가능하게 된다.
이상과 같이 하여, 메인 메모리(12)의 샌드 박스의 배타성이 실현된다. 즉, 복수의 서브 프로세서(43)에 의해서 데이터를 다단계로 처리할 필요가 있는 경우, 이상과 같이 구성함으로써, 전단층의 처리를 행하는 서브 프로세서(43)와, 후단층의 처리를 행하는 서브 프로세서(43)만이, 메인 메모리(12)의 소정의 어드레스에 액세스할 수 있게 되어, 데이터를 보호할 수 있다.
예를 들면, 키 마스크의 값은, 이하와 같이 변경되는 것이 생각된다. 우선, 정보 처리 장치(1-1)의 기동 직후에서는, 키 마스크의 값은 모두 "0"이다. 메인 프로세서(42)에 로드된 프로그램이 실행되어, 서브 프로세서(43)에 로드된 프로그램과 제휴 동작하는 것으로 한다. 서브 프로세서(43-1)에 의해 출력된 처리 결과 데이터를, 메인 메모리(12)에 기억시키고, 메인 메모리(12)에 기억시킨 처리 결과 데이터를, 서브 프로세서(43-2)에 입력하고자 할 때는, 서브 프로세서(43-1)에 의 해 출력된 처리 결과 데이터를 기억하고 있는 메인 메모리(12)의 영역은, 서브 프로세서(43-1) 및 서브 프로세서(43-2)로부터 액세스 가능할 필요가 있다. 그와 같은 경우에, 메인 프로세서(42)는, 키 마스크의 값을 적절하게 변경하여, 복수의 서브 프로세서(43)로부터 액세스할 수 있는 메인 메모리의 영역을 설치함으로써, 서브 프로세서(43)에 의한 다단계적인 처리를 가능하게 한다.
보다 구체적으로는, 예를 들면 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)로부터 송신되어 온 데이터에 기초하여, 서브 프로세서(43-1)가 소정의 처리를 실행하여, 처리가 실시된 데이터를 메인 메모리(12)의 제1 영역에 기억시킨다. 그리고, 서브 프로세서(43-2)는, 메인 메모리(12)의 제1 영역으로부터, 기억되어 있는 데이터를 판독하고, 판독한 데이터에 기초하여, 소정의 처리를 실행하여, 처리가 실시된 데이터를 메인 메모리(12)의 제1 영역과는, 다른 제2 영역에 기억시킨다.
여기서, 서브 프로세서(43-1)의 서브 프로세서 키가 "0100"이고, 메인 메모리(12)의 제1 영역의 액세스 키가 "0100"이고, 서브 프로세서(43-2)의 서브 프로세서 키가 "0101"이고, 메인 메모리(12)의 제2 영역의 액세스 키가 "0101"인 경우, 서브 프로세서(43-2)는, 메인 메모리(12)의 제1 영역에 액세스할 수 없다. 따라서, 서브 프로세서(43-2)의 키 마스크를 "0001"로 함으로써, 서브 프로세서(43-2)는, 메인 메모리(12)의 제1 영역에 액세스할 수 있도록 된다.
다음으로, 도 5 및 도 6을 참조하여, 정보 처리 장치(1-1)가 소프트웨어 셀을 생성하고, 생성한 소프트웨어 셀에 기초하여, 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)에 분산 처리를 실행시키는 경우의 처리에 대하여 설명한다.
정보 처리 장치(1-1)의 메인 프로세서(42)는, 처리를 실행하기 위해 필요한 커맨드, 프로그램, 및 데이터를 포함하는 소프트웨어 셀을 생성하여, 네트워크(2)를 통하여 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)에 송신한다.
도 5는, 소프트웨어 셀의 구성의 예를 도시하는 도면이다.
소프트웨어 셀은, 송신원 ID, 송신처 ID, 응답처 ID, 셀 인터페이스, DMA 커맨드, 프로그램, 및 데이터를 포함하도록 구성된다.
송신원 ID에는, 소프트웨어 셀의 송신원인 정보 처리 장치(1-1)의 네트워크 어드레스 및 정보 처리 장치(1-1)의 정보 처리 컨트롤러(11)의 정보 처리 장치 ID, 또한 정보 처리 장치(1-1)의 정보 처리 컨트롤러(11)가 구비하는 메인 프로세서(42) 및 서브 프로세서(43)의 식별자(메인 프로세서 ID 및 서브 프로세서 ID)가 포함된다.
송신처 ID에는, 소프트웨어 셀의 송신처인 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)의 네트워크 어드레스, 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)의 정보 처리 컨트롤러의 정보 처리 장치 ID, 및 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)의 정보 처리 컨트롤러가 구비하는 메인 프로세서 및 서브 프로세서의 식별자가 포함된다.
또한, 응답처 ID에는, 소프트웨어 셀의 실행 결과의 응답처인 정보 처리 장치(1-1)의 네트워크 어드레스, 정보 처리 장치(1-1)의 정보 처리 컨트롤러(11)의 정보 처리 장치 ID, 및 정보 처리 컨트롤러(11)가 구비하는 메인 프로세서(42) 및 서브 프로세서(43)의 식별자가 포함된다.
셀 인터페이스는, 소프트웨어 셀의 이용에 필요한 정보이고, 글로벌 ID, 필요한 서브 프로세서의 정보, 샌드 박스 사이즈, 및 전회의 소프트웨어 셀 ID로 구성된다.
글로벌 ID는, 네트워크(2) 전체를 통해서 소프트웨어 셀을 일의적으로 식별할 수 있는 것으로, 송신원 ID, 및 소프트웨어 셀의 생성 또는 송신의 일시(날짜 및 시각)에 기초하여, 생성된다.
필요한 서브 프로세서의 정보에는, 소프트웨어 셀의 실행에 필요한 서브 프로세서의 수 등이 설정된다. 샌드 박스 사이즈에는, 소프트웨어 셀의 실행에 필요한 메인 메모리 및 서브 프로세서의 로컬 스토리지의 메모리량이 설정된다.
전회의 소프트웨어 셀 ID는, 스트리밍 데이터 등의 시퀀셜한 실행을 요구하는 1개의 그룹을 구성하는 소프트웨어 셀 내의, 전회의 소프트웨어 셀의 식별자이다.
소프트웨어 셀의 실행 섹션은, DMA 커맨드, 프로그램 및 데이터로 구성된다. DMA 커맨드에는, 프로그램의 기동에 필요한 일련의 DMA 커맨드가 포함되고, 프로그램에는, 서브 프로세서에 의해서 실행되는 서브 프로세서 프로그램이 포함된다. 여기서의 데이터는, 이 서브 프로세서 프로그램을 포함하는 프로그램에 의해서 처리되는 데이터이다.
또한, DMA 커맨드에는, 로드 커맨드, 킥 커맨드, 기능 프로그램 실행 커맨드, 스테이터스 요구 커맨드, 및 스테이터스 회신 커맨드가 포함된다.
로드 커맨드는, 메인 메모리(12)에 기억되어 있는 정보를 서브 프로세서의 로컬 스토리지에 로드시키는 커맨드이고, 로드 커맨드 이외에, 메인 메모리 어드레스, 서브 프로세서 ID 및 LS 어드레스를 포함한다. 메인 메모리 어드레스는, 정보의 로드원인 메인 메모리의 소정의 영역의 어드레스를 나타낸다. 서브 프로세서 ID 및 LS 어드레스는, 정보의 로드처인 서브 프로세서의 식별자 및 로컬 스토리지의 어드레스를 나타낸다.
킥 커맨드는, 프로그램의 실행을 개시하는 커맨드이고, 킥 커맨드 이외에, 서브 프로세서 ID 및 프로그램 카운터를 포함한다. 서브 프로세서 ID는, 킥 대상의 서브 프로세서를 식별하고, 프로그램 카운터는, 프로그램 실행용 프로그램 카운터를 위한 어드레스를 부여한다.
기능 프로그램 실행 커맨드는, 어떤 장치(예를 들면, 정보 처리 장치(1-1))가 다른 장치(예를 들면, 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n) 중 어느 하나)에 대하여, 기능 프로그램의 실행을 요구하는 커맨드이다. 기능 프로그램 실행 커맨드를 수신한 장치(예를 들면, 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n) 중 어느 하나)의 정보 처리 컨트롤러는, 기능 프로그램 ID에 의해서, 기동하여야 할 기능 프로그램을 식별한다.
스테이터스 요구 커맨드는, 송신처 ID에서 나타내는 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)의 현재의 동작 상태(상황)에 관한 장치 정보를, 응답처 ID에서 나타내는 정보 처리 장치(1-1)에 송신 요구하는 커맨드이다.
스테이터스 회신 커맨드는, 스테이터스 요구 커맨드를 수신한 정보 처리 장 치(1-2) 내지 정보 처리 장치(1-n)가, 장치 정보를 스테이터스 요구 커맨드에 포함되는 응답처 ID로 나타내는 정보 처리 장치(1-1)에 응답하는 커맨드이다. 스테이터스 회신 커맨드는, 실행 섹션의 데이터 영역에 장치 정보를 저장한다.
도 6은, DMA 커맨드가 스테이터스 회신 커맨드인 경우에서의 소프트웨어 셀의 데이터 영역의 구조를 도시하는 도면이다.
정보 처리 장치 ID는, 정보 처리 컨트롤러를 구비하는 정보 처리 장치(1)를 식별하기 위한 식별자이고, 스테이터스 회신 커맨드를 송신하는 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)의 ID를 나타낸다. 정보 처리 장치 ID는, 예를 들면 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)의 각각의 전원이 온되었을 때, 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)의 정보 처리 컨트롤러(11)에 포함되는 메인 프로세서(42)에 의해서, 전원이 온되었을 때의 일시, 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)의 네트워크 어드레스, 및 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)의 정보 처리 컨트롤러(11)에 포함되는 서브 프로세서(43)의 수 등에 기초하여 생성된다.
정보 처리 장치 종별 ID에는, 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)의 특징을 나타내는 값이 포함된다. 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)의 특징이란, 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)가 어떠한 장치인지를 나타내는 정보이고, 예를 들면 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)가, 하드디스크 레코더, PDA(Personal Digital Assistants), 포터블 CD(Compact Disc) 플레이어 등인 것을 나타내는 정보이다. 또한, 정보 처리 장치 종별 ID는, 영상 음성 기록, 영상 음성 재생 등, 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)가 갖는 기능을 나타내는 것이어도 된다. 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)의 특징이나 기능을 나타내는 값은 미리 결정되어 있는 것으로 하고, 스테이터스 회신 커맨드를 수신한 정보 처리 장치(1-1)는, 정보 처리 장치 종별 ID를 판독함으로써, 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)의 특징이나 기능을 파악하는 것이 가능하다.
MS(master-slave) 스테이터스는, 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)가 마스터 장치 또는 슬레이브 장치 중 어느 하나로 동작하고 있는지를 나타내는 것으로, 이것이 0으로 설정되어 있는 경우에는 마스터 장치로서 동작하고 있는 것을 나타내고, 1로 설정되어 있는 경우에는 슬레이브 장치로서 동작하고 있는 것을 나타낸다.
메인 프로세서 동작 주파수는, 정보 처리 컨트롤러(11)의 메인 프로세서(42)의 동작 주파수를 나타낸다. 메인 프로세서 사용율은, 메인 프로세서(42)에서 현재 동작하고 있는 모든 프로그램에 대한, 메인 프로세서(42)에서의 사용율을 나타낸다. 메인 프로세서 사용율은, 메인 프로세서(42)의 전체 처리 능력에 대한 사용 중인 처리 능력의 비율을 나타낸 값으로, 예를 들면 프로세서 처리 능력 평가를 위한 단위인 MIPS를 단위로 하여 산출되거나, 또는 단위 시간 당 프로세서 사용 시간에 기초하여 산출된다.
서브 프로세서수는, 정보 처리 컨트롤러(11)가 구비하는 서브 프로세서(43)의 수를 나타낸다. 서브 프로세서 ID는, 정보 처리 컨트롤러(11)의 서브 프로세서 (43)를 식별하기 위한 식별자이다.
서브 프로세서 스테이터스는, 서브 프로세서(43)의 상태를 나타내는 것으로, "unused", "reserved", 및 "busy" 등의 상태가 있다. "unused"는, 서브 프로세서(43)가 현재 사용되고 있지 않고, 사용의 예약도 되어 있지 않은 것을 나타낸다. "reserved"는, 현재는 사용되고 있지 않지만, 예약되어 있는 상태를 나타낸다. "busy"는, 현재 사용 중에 있는 것을 나타낸다.
서브 프로세서 사용율은, 서브 프로세서(43)에서 현재 실행하고 있거나, 또는 서브 프로세서(43)에 실행이 예약되어 있는 프로그램에 대한, 서브 프로세서(43)에서의 사용율을 나타낸다. 즉, 서브 프로세서 사용율은, 서브 프로세서 스테이터스가 "busy"인 경우에는, 현재의 사용율을 나타내고, 서브 프로세서 스테이터스가 "reserved"인 경우에는, 후에 사용될 예정인 추정 사용율을 나타낸다.
서브 프로세서 ID, 서브 프로세서 스테이터스 및 서브 프로세서 사용율은, 1개의 서브 프로세서(43)에 대하여 일조 설정되며, 1개의 정보 처리 컨트롤러(11)의 서브 프로세서(43)에 대응하는 조 수가 설정된다.
메인 메모리 총 용량 및 메인 메모리 사용량은, 각각 정보 처리 컨트롤러(11)에 접속되어 있는 메인 메모리(12)의 총 용량 및 현재 사용 중인 용량을 나타낸다.
기록부수는, 정보 처리 컨트롤러(11)에 접속되어 있는 기록부(13)의 수를 나타낸다. 기록부 ID는, 정보 처리 컨트롤러(11)에 접속되어 있는 기록부(13)를 일의적으로 식별하는 정보이다. 기록부 종별 ID는, 기록부(13)의 종류(예를 들면, 하드디스크, CD± RW, DVD± RW, 메모리 디스크, SRAM, ROM 등)를 나타내는 정보이다.
기록부 총용량 및 기록부 사용량은, 각각 기록부 ID에 의해서 식별되는 기록부(13)의 총 용량 및 현재 사용 중인 용량을 나타낸다.
기록부 ID, 기록부 종별 ID, 기록부 총 용량 및 기록부 사용량은, 1개의 기록부(13)에 대하여 일조 설정되는 것이고, 정보 처리 컨트롤러(11)에 접속되어 있는 기록부(13)의 수의 조 수만큼 설정된다. 즉, 1개의 정보 처리 컨트롤러(11)에 복수의 기록부(13)가 접속되어 있는 경우, 각각의 기록부(13)에는 다른 기록부 ID가 할당되고, 기록부 종별 ID, 기록부 총 용량 및 기록부 사용량도 개별로 관리된다.
이와 같이 하여, 정보 처리 장치(1-1)는, 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)에 분산 처리를 실행시키는 경우, 소프트웨어 셀을 생성하고, 생성한 소프트웨어 셀을, 네트워크(2)를 통하여 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)에 송신한다.
또한, 이하, 정보 처리 장치(1-1)로부터 정보 처리 장치(1-2) 내지 정보 처리 장치(1-n)에 송신되는 각종 데이터는, 소프트웨어 셀에 저장되어 송신되는 것으로서, 반복하기 때문에, 그 설명은 생략한다.
정보 처리 장치(1-2) 내지 정보 처리 장치(1-n) 중 어느 하나의 정보 처리 컨트롤러(11)에 포함되는 메인 프로세서(42)는, 이상과 같은 구성의 소프트웨어 셀을 생성하고, 네트워크(2)를 통하여 다른 정보 처리 장치(1)의 정보 처리 컨트롤러 (11)에, 생성된 소프트웨어 셀을 송신한다. 송신원의 정보 처리 장치(1), 송신처의 정보 처리 장치(1), 응답처의 정보 처리 장치(1), 및 각각에 설치되어 있는 정보 처리 컨트롤러(11)는, 각각 전술한 송신원 ID, 송신처 ID 및 응답처 ID에 의해서 식별된다.
소프트웨어 셀을 수신한 정보 처리 장치(1)의 정보 처리 컨트롤러(11)에 포함되는 메인 프로세서(42)는, 그 소프트웨어 셀을 메인 메모리(12)에 저장한다. 또한, 송신처의 메인 프로세서(42)는, 소프트웨어 셀을 판독하여, 그것에 포함되는 DMA 커맨드를 처리한다.
구체적으로, 송신처의 메인 프로세서(42)는, 우선 로드 커맨드를 실행한다. 이것에 의해서, 메인 메모리(12)의, 로드 커맨드로 지시된 어드레스로부터, 로드 커맨드에 포함되는 서브 프로세서 ID 및 LS 어드레스에서 특정되는 서브 프로세서(43)의 로컬 스토리지(51)의 소정 영역에, 정보가 로드된다. 여기서 로드되는 정보는, 수신한 소프트웨어 셀에 포함되는 서브 프로세서 프로그램이나 프로그램의 실행에 필요한 데이터, 또는 그 밖의 지시된 데이터이다.
다음으로, 메인 프로세서(42)는, 킥 커맨드를, 이것에 포함되는 서브 프로세서 ID에서 지시된 서브 프로세서(43)에, 마찬가지로 킥 커맨드에 포함되는 프로그램 카운터와 동시에 출력한다.
지시된 서브 프로세서는, 그 킥 커맨드 및 프로그램 카운터에 따라서, 서브 프로세서 프로그램을 실행한다. 그리고, 실행 결과를 메인 메모리(12)에 저장한 후, 실행을 완료한 것을 메인 프로세서(42)에 통지한다.
또한, 송신처의 정보 처리 장치(1)의 정보 처리 컨트롤러(11)에서, 소프트웨어 셀을 실행하는 프로세서는, 서브 프로세서(43)에 한정되지 않아도 되고, 메인 프로세서(42)를, 소프트웨어 셀에 포함되는 기능 프로그램 등을 실행하는 프로세서로서 지정하는 것도 가능하다.
이 경우에는, 송신원의 정보 처리 장치(1)는, 송신처의 정보 처리 장치(1)로, 서브 프로세서 프로그램 대신에, 메인 메모리용 프로그램 및 그 메인 메모리용 프로그램에 의해서 처리되는 데이터를 포함하여, 또한 DMA 커맨드가 로드 커맨드인 소프트웨어 셀을 송신하여, 메인 메모리(12)에 메인 메모리용 프로그램 및 그것에 의하여 처리되는 데이터를 기억시킨다. 다음으로, 송신원의 정보 처리 장치(1)는, 송신처의 정보 처리 장치(1)로, 송신처의 정보 처리 장치(1)의 정보 처리 컨트롤러(11)에 대한 메인 프로세서 ID, 메인 메모리 어드레스, 메인 메모리용 프로그램을 식별하기 위한 기능 프로그램 ID 등의 식별자, 및 프로그램 카운터를 포함하여, 또한 DMA 커맨드가 킥 커맨드 또는 기능 프로그램 실행 커맨드인 소프트웨어 셀을 송신하여, 메인 프로세서(42)에 메인 메모리용 프로그램을 실행시키도록 할 수 있다.
이상과 같이, 본 발명을 적용한 네트워크 시스템에서는, 소프트웨어 셀의 송신원의 정보 처리 장치(1)는, 서브 프로세서 프로그램 또는 메인 메모리용 프로그램을 소프트웨어 셀에 의해서 송신처의 정보 처리 장치(1)에 송신함과 함께, 서브 프로세서 프로그램을, 송신처의 정보 처리 장치(1)의 정보 처리 컨트롤러(11)에 설치되어 있는 서브 프로세서(43)에 로드시킴으로써, 서브 프로세서 프로그램 또는 메인 메모리용 프로그램을, 송신처의 정보 처리 장치(1)에 실행시킬 수 있다.
소프트웨어 셀의 송신처의 정보 처리 장치(1)의 정보 처리 컨트롤러(11)에서는, 수신한 소프트웨어 셀에 포함되는 프로그램이 서브 프로세서 프로그램인 경우, 이 서브 프로세서 프로그램을 지정된 서브 프로세서(43)에 로드시킨다. 그리고, 지정된 서브 프로세서(43)에, 소프트웨어 셀에 포함되는 서브 프로세서 프로그램 또는 메인 메모리용 프로그램을 실행시킨다.
따라서, 유저는, 소프트웨어 셀의 송신처의 정보 처리 장치(1)를 조작하지 않고, 자동적으로, 서브 프로세서 프로그램 또는 메인 메모리용 프로그램이, 소프트웨어 셀의 송신원의 정보 처리 장치(1)로부터, 송신처의 정보 처리 장치(1)에 할당되고, 소프트웨어 셀의 송신처의 정보 처리 장치(1)의 정보 처리 컨트롤러(11)에 의해, 실행시킬 수 있다. 또한, 각각의 서브 프로세서(43) 사이에서는, DMA 방식에 의해 데이터 전송이 행하여져, 전술한 샌드 박스를 사용함으로써, 1개의 정보 처리 컨트롤러(11)에서, 데이터를 다단계로 처리할 필요가 있는 경우에도, 고속이고 또한 높은 시큐러티로 처리를 실행할 수 있다.
도 7에, 정보 처리 컨트롤러(11)의 메인 메모리(12)가 기억하는 소프트웨어의 구성을 나타내는 소프트웨어 스택을 나타낸다. 이들의 소프트웨어(프로그램)는, 정보 처리 장치(1)에 전원이 투입되기 전에는, 정보 처리 컨트롤러(11)에 접속되는 기록부(13)에 기록되어 있는 것이다.
드라이버 소프트웨어(81-1 내지 81-p)는, 하드웨어를 동작시키기 위한 전용 소프트웨어이다. 드라이버 소프트웨어(81-1 내지 81-p)에는, 예를 들면 조작 입력부(15)에 접속되어 있는 마우스를 동작시키기 위한 마우스 드라이버, 표시부(17)에 화상을 표시시키기 위한 비디오 카드를 동작시키기 위한 디스플레이 드라이버, 통신부(16)를 통하여 접속되어 있는 도시하지 않은 프린터를 동작시키기 위한 프린터 드라이버 등이 있다.
커널(OS)(82)은, 정보 처리 컨트롤러(11)의 기본적인 동작을 제어하고 있는 것으로, 각종 자원을 관리하여, 예를 들면 어플리케이션 프로그램(87)이 발생한 명령을, 드라이버 소프트웨어(81-1 내지 81-p)에 전한다. 또한, 커널(82)은, 어플리케이션 프로그램(87)의 실행 콘텍스트(임의의 어플리케이션 프로그램(87)이 이용하고 있는 레지스터 세트나 메인 메모리 이미지, 파일 핸들 등)나 GUI의 부품 등의 소프트웨어 자원의 관리도 행하도록 이루어져 있다.
디바이스 드라이버(83)는, 정보 처리 컨트롤러(11) 또는 정보 처리 장치(1)에의 데이터의 입출력(송수신) 기능을 실행하기 위한 드라이버로서, 예를 들면 방송 수신, 모니터 출력, 비트 스트림 입출력, 네트워크 입출력 등, 정보 처리 컨트롤러(11)마다, 정보 처리 장치(1)가 갖는 기능에 따른 것이 구비되도록 이루어져 있다.
라이브러리(84)는, DLL(Dynamic Link Library)로도 칭해진, 몇개의 함수를 서고처럼 통합하여, 소프트웨어의 실행에 필요한 기능을 독립한 파일로서 공통화한 것으로, 통상은 파일 그 자체를 DLL이라 칭한다. 서브 루틴은 프로그램 내부의 것이지만, 라이브러리(84)는 프로그램과는 별도로 실행 시에 로드되는 것으로서 구별된다. 라이브러리(84)로서 제공되고 있는 기능은 새롭게 개발하지 않아도 되기 때문에, 어플리케이션 프로그램(87)의 개발 효율이 높아지고, 또한 동일한 프로그램 부품을 복수의 어플리케이션 프로그램(87)으로 공유할 수 있으므로, 디스크나 메모리의 용량을 절약할 수 있다.
파워 매니저(85)는, 디바이스 드라이버(83)에 의해 관리되고 있는 메인 프로세서(42) 및 서브 프로세서(43)의 각각의 동작 상황과, 실행을 요구받은 어플리케이션 프로그램(87)의 실행에 필요한 조건을 판단하여, 각각의 프로세서의 소비 전력을 관리하여, 분산 처리의 할당을 결정하거나, 분산 처리의 할당이 가능하지 않았을 때에는, 요구받은 처리의 실행의 캔슬을, 시스템 서비스/프레임 워크(86)에 통지한다. 즉, 파워 매니저(85)는, 정보 처리 컨트롤러(11)의 메인 프로세서(42) 및 서브 프로세서(43)가 실행하는 분산 처리를 제어하는 것으로, 메인 프로세서(42) 및 서브 프로세서(43)의 각각의 동작 상황을 관리하여, 어플리케이션 프로그램(87)에 의해 요구되는 논리 쓰레드를 실행하기 위한 분산 처리의 할당을 결정하여, 프로그램 및 데이터를, 대응하는 메인 프로세서(42) 및 서브 프로세서(43)의 각각 대응하는 것에 로드시켜 실행시킨다.
구체적으로는, 파워 매니저(85)는, 어플리케이션 프로그램(87)에 의해 요구되는 처리가 실행 가능하고, 또한 정보 처리 컨트롤러(11)의 소비 전력을 내릴 수 있도록, 메인 프로세서(42) 및 서브 프로세서(43)의 동작 클럭수를 최적의 값으로 제어한다. 여기서, 각각의 프로세서의 최대 동작 클럭수에 대하여, 현재 설정되어 있는 클럭수의 비를, 프로세서 동작율로 정의한다. 프로세서 동작율은, 각각의 메인 프로세서(42) 및 서브 프로세서(43)에서, 독립적으로 제어하는 것도, 동일한 것으로 하여 제어하는 것도 가능하다. 즉, 메인 프로세서(42) 및 서브 프로세서(43) 는, 잠재적으로는, 최대 동작 클럭수로 동작하는 것이 가능하지만, 실질적으로는 파워 매니저(85)에 의해 설정된 프로세서 동작율에 기초하는 상한 동작 클럭수로 동작하도록 이루어져 있다.
즉, 프로세서 동작율 SCPU_RATE[k](k는, 파워 매니저(85)에 의해 제어되는 프로세서를 구별 가능하도록 할당된 번호)는, 상한 동작 클럭수/최대 동작 클럭수 SCPU_CK[k]로 나타내고, 프로세서 동작율이, 각각의 메인 프로세서(42) 및 서브 프로세서(43)에서, 동일한 것으로 하여 제어되고 있는 경우, 프로세서 동작율 SCPU_RATE[k]=SYSTEM_RATE이다.
또한, 프로세서 사용율 SCPU_STAT[k]은, 각 프로세서에서, 규정 시간 내에 어플리케이션 프로그램의 실행에 사용하는 사이클수(단지 1 사이클의 주기는, CPU 최대 동작 클럭수의 역수로 함)/규정 시간/최대 동작 클럭수 SCPU_CK[k]로 나타낸다.
예를 들면, 메인 프로세서(42) 및 서브 프로세서(43)가, 잠재적으로는 최대 동작 클럭수 1.2㎒에서 동작 가능한 것으로 한다. 이 때, 프로세서 동작율로서, 예를 들면 1.0, 0.5, 0.25를 설정할 수 있으면, 상한 동작 클럭수는, 1.2㎒, 600㎐, 300㎐로 된다. 구체적으로는, 프로세서 동작율이 0.5로 설정된 경우, 상한 동작 클럭수는, 1.2㎒×0.5=600㎐로 된다. 그리고, 규정 시간 1sec 내에, 어플리케이션 프로그램의 실행에 300 사이클이 사용되는 경우, 프로세서 사용율 SCPU_STAT[k]는, 300 사이클/1 sec/1.2㎒=0.25로 된다.
즉, 프로세서 사용율과, 프로세서 동작율과는, 항상 다음의 수학식 1의 관계 가 성립한다.
Figure 112005039256059-PAT00001
또한, 파워 매니저(85)는, 처리가 할당되어 있지 않은 서브 프로세서(43)에 대하여 서스펜드(Suspend) 모드를 설정하여, 대응하는 서브 프로세서에는 처리가 할당되지 않도록 함으로써, 정보 처리 컨트롤러(11)의 소비 전력을 내릴 수 있는 것으로 한다.
시스템 서비스/프레임 워크(86)는, 어플리케이션 프로그램(87)에 의해 실행되는 처리를, 정보 처리 장치(1)의 복수의 서브 프로세서(43)에 각각 할당하여 분산 처리를 실행시키거나, 또는 복수의 정보 처리 장치(1)에 의해서 분산 처리를 실행시키는 시스템 서비스를 제공하는 소프트웨어 모듈군이다.
어플리케이션 프로그램(87)은, 정보 처리 컨트롤러(11)를 이용하여, 예를 들면 방송파의 수신의 제어, 콘텐츠의 기록 또는 재생, 3차원 그래픽스의 연산 처리, 전자 메일의 수수, 웹페이지의 열람 등, 각각의 목적을 실현하기 위한 소프트웨어 프로그램이다. 예를 들면, 3차원 그래픽스를 처리하기 위한 어플리케이션 프로그램(87)이 실행되는 경우, 1 화면분의 처리를 화소마다 분할하여, 동일한 프로그램, 동일한 모델 데이터에 기초하여, 복수의 프로세서로 병렬로 연산시키도록 할 수 있다. 즉, 정보 처리 컨트롤러(11)를 이용하여, 3차원 그래픽스를 처리하기 위한 어플리케이션 프로그램(87)이 실행되는 경우, 시스템 서비스/프레임 워크(86)에 의해, 화소마다 분할된 처리가, 복수의 서브 프로세서(43)에 각각 할당되어, 병렬적 으로 연산되도록 할 수 있다.
도 8은, 정보 처리 컨트롤러(11)가, 각각의 프로세서의 소비 전력을 관리하여, 분산 처리의 할당을 제어하는 기능에 대하여 설명하기 위한 기능 블록도이다.
도 8에서, 어플리케이션 실행 제어부(101), 논리 쓰레드 실행 제어부(102), 동작율 설정부(103), 동작 정보 취득부(104), 및 동작 정보 메모리(105)는, 기본적으로, 정보 처리 장치(1)의 메인 프로세서(42)에 의해 실현되는 기능이다.
또한, 도 8에서, 이들의 기능을 실현하는 하드웨어가, 전술하는 바와 다른 경우, 예를 들면 메인 프로세서(42)에 의해 실현되는 기능 중의 일부가, 다른 하드웨어에 의해 실현되는 경우 등도, 본 발명은 적용 가능한 것은 물론이다.
또한, 이들의 구성은, 전부가 1개의 칩 내에 있어도 되고, 개별적인 칩으로서 구성되어 있어도 된다.
어플리케이션 실행 제어부(101)는, 소정의 어플리케이션 프로그램을 실행하기 위한 연산 처리를 실행한다. 또한, 어플리케이션 실행 제어부(101)는, 서브 프로세서(43) 중 어느 하나에 분산 처리를 실행시키는 경우, 논리 쓰레드 실행 제어부(102)에, 논리 쓰레드의 설정 정보로서, 도 9에 도시된 REQUEST_information(어플리케이션 요구 조건)을 공급하여, 논리 쓰레드의 생성을 요구한다. 논리 쓰레드란, 복수의 서브 프로세서(43)의 각각에 필요에 따라 할당된 복수의 프로그램(이들의 프로그램은, 동일한 어플리케이션 프로그램에 대응하는 것이더라도, 다른 어플리케이션 프로그램에 대응하는 것이더라도 됨)을 통합하여 하나의 기능을 제공하는 처리 단위로 정의한 것이다. 즉, 복수의 서브 프로세서(43)의 각각에 필요에 따라 할당된 복수의 프로그램은, 메인 메모리(12)의 소정의 기억 영역에 기억되어 있는 프로그램이고, 어플리케이션 실행 제어부(101)에 의해 실행이 제어되고 있는 어플리케이션 프로그램의 요구에 의해, 메인 메모리(12)로부터 대응하는 서브 프로세서(43)의 로컬 스토리지(51)에 로드되어 실행되는 것이다.
도 9에 도시된, 어플리케이션 실행 제어부(101)로부터 논리 쓰레드 실행 제어부(102)에 공급되는 REQUEST_information(어플리케이션 요구 조건)에는, 어플리케이션을 식별하기 위한 16 바이트의 ID(어플리케이션 ID), 규정 시간 내에 처리를 끝내게 할 필요성의 유무를 나타내는 1 바이트의 REQ_REAL 정보, 서브 프로세서의 할당을 결정하는 경우에 우선하기를 바라는 서브 프로세서의 서브 프로세서 ID를 나타내는 1 바이트의 PRIORITY_ID, 요구하는 처리에 필요한 서브 프로세서의 수를 나타내는 REQ_NUM 정보가 선두에 있으며, 그 후, 처리가 할당되는 프로세서에 요구되는, 요구하는 처리에 의해서 점유되는 메모리 용량을 나타내는 REQ_MEM 정보, 처리가 할당되는 프로세서에 요구되는, 요구하는 처리에 의해서 점유되는 규정 시간 내 처리 사이클수를 나타내는 REQ_PC 정보가, 메인 프로세서(42)에 할당되는 처리와, REQ_NUM 정보에 나타내는, 처리에 필요한 서브 프로세서의 수와 동일한 수 저장된다. 구체적으로는, REQ_MEM0 및 REQ_PC0으로서, 메인 프로세서(42)에 요구되는 메모리 용량과 사이클수가 저장되고, 계속해서, REQ_MEM1 및 REQ_PC1, REQ_MEM2 및 REQ_PC2…으로서, 각각의 서브 프로세서에 요구되는 메모리 용량과 사이클수가 저장되어 있다. 서브 프로세서에 대응하는 REQ_MEM 및 REQ_PC의 각각의 정보가 저장되는 순서는, 필요한 사이클수가 큰 순서대로 배열되며, 사이클수가 동일한 경우 에는 필요한 메모리량이 큰 순서대로 배열되는 것으로 하면 적합하다.
여기서는, REQ_REAL=1일 때 리얼타임 처리가 필요한 것을 나타내고, 처리 사이클수는, 어플리케이션의 실행에 필요한 처리량에 대응하는 값이다. 또한, 어플리케이션 프로그램의 실행 요구 및 REQUEST_information의 공급은, 네트워크(2)를 통하여, 자기 자신과는 다른 정보 처리 장치(1)의 정보 처리 컨트롤러(11)로부터 공급되는 경우도 있다.
도 8의 설명으로 되돌아간다.
논리 쓰레드 실행 제어부(102)는, 내부에, 레지스터 및 메모리를 갖고, 어플리케이션 실행 제어부(101)에 의해 실행되는 어플리케이션 프로그램에 대응하는 논리 쓰레드의 생성 및 삭제를 행한다. 구체적으로는, 논리 쓰레드 실행 제어부(102)는, 어플리케이션 실행 제어부(101)로부터 공급되는, 도 9에 도시된 REQUEST_information과, 동작 정보 메모리(105)에 기억되는 서브 프로세서(43)의 각각의 동작 상태에 기초하여, 서브 프로세서(43)에 대하여, 분산 처리를 적절하게 할당하는 것에 의해, 소비 전력량의 증가를 억제하면서, 생성한 논리 쓰레드의 상태 감시와 동작 제어를 행한다. 논리 쓰레드 실행 제어부(102)는, 정보 처리 컨트롤러(101)의 전체의 관리 정보가 기재된 테이블과, 실행되는 논리 쓰레드마다, 논리 쓰레드의 실행에 필요한 정보가 기재된 테이블을 작성하여, 필요에 따라, 테이블의 정보를 참조하여, 갱신함으로써, 논리 쓰레드의 실행을 제어한다.
논리 쓰레드 실행 제어부(102)에 있어서 관리되는 정보로서는, 전술한 REQUEST_information 이외에, 정보 처리 컨트롤러(11)가 갖는 서브 프로세서(43)의 수를 나타내는 NUM_SCPU, 예를 들면 1sec 등, 분산 처리의 할당의 판별을 행하는 경우의 기준 시간으로서 이용되는 규정 시간을 나타내는 TIME_DEF, 메모리 사용율에 대한 여유분(마진)을 나타내는 MEM_MARGIN, k번째의 프로세서에서 쓰레드(어플리케이션)을 절환한 경우의 오버헤드량을 나타내는 THREAD_OVERHEAD[k], k번째의 프로세서의 프로세서 동작율의 설정값(0 내지 1의 값)을 나타내는 SCPU_RATE[k], k번째의 프로세서의 프로세서 사용율에 대한 프로세서 동작율의 여유분(마진)을 나타내는 RATE_MARGIN, 및 리얼타임 처리가 요구되어 있지 않은 어플리케이션에서, 할당 처리가 성공하지 않은 경우에, 할당 처리 루프를 중단하는 횟수를 나타내는 N_GIVEUP가 있다.
여기서, k번째의 프로세서는, 0번째가 메인 프로세서(42)를, 1번째 이후의 서브 프로세서(43) 중 어느 하나를 나타내는 것으로 한다. 또한, MEM_MARGIN에는, 예를 들면 10Kbytes 등의 값이 이용되고, RATE_MARGIN에는, 예를 들면 0.1 등의 값이 이용되고, 각각 분산 처리의 할당의 판별을 행하는 경우에 이용된다. 또한, 쓰레드를 절환한 경우의 오버헤드량이란, 구체적으로는, 현재 프로세서에서 실행되고 있는 처리의 콘텍스트를, 로컬 스토리지(51)로부터 퇴피시키고, 또한 원래의 상태로 복귀하기 전에 필요한 사이클수이다.
또한, 모든 프로세서에서 프로세서 동작율을 공통인 것으로 하여 제어되고 있는 경우, 프로세서 동작율의 설정값은, SYSTEM_RATE로 나타낸다. 또한, 다음의 수학식 2가 성립한다.
Figure 112005039256059-PAT00002
동작율 설정부(103)는, 논리 쓰레드 실행 제어부(102)의 제어에 기초하여, 메인 프로세서(42) 및 서브 프로세서(43)의 프로세서 동작율 SCPU_RATE[k] 또는 SYSTEM_RATE를 설정함과 함께, 설정된 프로세서 동작율 SCPU_RATE[k] 또는 SYSTEM_RATE의 값을, 동작 정보 메모리(105)에 공급하여 등록한다.
동작 정보 취득부(104)는, 서브 프로세서(43)의 동작 정보를 취득하여, 동작 정보 메모리(105)에 공급한다.
동작 정보 메모리(105)는, 로컬 스토리지(51-1)의 기억 영역 중 적어도 일부에 대응하여, 동작 정보 취득부(104)의 처리에 의해 취득된 서브 프로세서(43)의 동작 정보, 및 메인 프로세서(42)의 동작 정보와, 동작율 설정부(103)에 의해 설정된, 메인 프로세서(42) 및 서브 프로세서(43)의 프로세서 동작율 SCPU_RATE[k] 또는 SYSTEM_RATE를 기억한다.
동작 정보 메모리(105)에 기록되는 정보에는, 예를 들면 메인 프로세서(42) 및 서브 프로세서(43)가 이용할 수 있는 메모리의 용량을 나타내는 MEM_CPU[k](kbytes), 정보 처리 컨트롤러(11)에 설치되어 있는 k번째의 메인 프로세서(42) 또는 서브 프로세서(43)의 최대 동작 클럭수를 나타내는 SCPU_CK[k], k번째의 메인 프로세서(42) 또는 서브 프로세서(43)의 프로세서 사용율을 나타내는 SCPU_STAT[k], k번째의 메인 프로세서(42) 또는 서브 프로세서(43)에서 현재 동작하고 있는 어플리케이션의 수를 나타내는 SCPU_APPNUM[k], k번째의 메인 프로세서 (42) 또는 서브 프로세서(43)에 프로그램을 할당하는 것이 가능한지의 여부를 나타내는 플래그인 SCPU_SUSPEND[k] 등이 있다. 여기서, SCPU_SUSPEND[k]=0일 때, k번째의 메인 프로세서(42) 또는 서브 프로세서(43)에 프로그램을 할당하는 것이 가능한 것이 나타나고, SCPU_SUSPEND[k]=1일 때, 예를 들면 k번째의 메인 프로세서(42) 또는 서브 프로세서(43)에 프로그램을 할당하는 것이 금지되어 있는 것이 나타난다.
여기서, 현재의 k번째의 메인 프로세서(42) 또는 서브 프로세서(43)의 동작 클럭수는, SCPU_CK[k]×SCPU_RATE[k]로 나타낸다. 또한, 프로세서 동작율과 프로세서 사용율과의 관계는, 다음의 수학식 3을 만족한다. 즉, 모든 프로세서에서 프로세서 동작율을 공통인 것으로서 제어되고 있는 경우, 프로세서 동작율과 프로세서 사용율과의 관계는, 다음의 수학식 4를 만족한다.
Figure 112005039256059-PAT00003
Figure 112005039256059-PAT00004
또한, k번째의 메인 프로세서(42) 또는 서브 프로세서(43)의 프로세서 사용율을 나타내는 SCPU_STAT[k]는, 새로운 어플리케이션 프로그램에 의한 분산 처리가 행해질 때마다 증가한다. 예를 들면, 1개째의 어플리케이션의 경우, SCPU_STAT[k]의 증가분은, 다음의 수학식 5로 나타내고, 2개째 이후의 어플리케이션의 경우, SCPU_STAT[k]의 증가분은, 다음의 수학식 6으로 나타낸다.
Figure 112005039256059-PAT00005
Figure 112005039256059-PAT00006
다음으로, 정보 처리 컨트롤러(11)에 포함되는 메인 프로세서(42) 및 서브 프로세서(43)의 소비 전력에 대하여 설명한다.
정보 처리 컨트롤러(11)에 포함되는 메인 프로세서(42) 및 서브 프로세서(43)의 개개의 소비 전력은, 현재의 프로세서 동작율에 비례하여 증가하는 소비 전력량과, 현재의 프로세서 사용율에 비례하여 증가하는 소비 전력량에 의해 결정된다. 현재의 프로세서 동작율에 비례하여 증가하는 소비 전력량 PT-A는, 메인 프로세서(42) 또는 서브 프로세서(43)가 분산 처리에 의해 사용되고 있지 않더라도 소비되는 전력량으로, 다음의 수학식 7로 나타낸다. 여기서, PA는 동작 클럭수 비례 계수이고, 하드웨어의 구성에 의해서 미리 정해져 있는 값이다. 그리고, 현재의 프로세서 사용율에 비례하여 증가하는 소비 전력량 PT-B는, 다음의 수학식 8로 나타낸다. 여기서, K는 사용 클럭수 비례 계수로 하드웨어의 구성에 의해서 미리 정해져 있는 값이다.
Figure 112005039256059-PAT00007
Figure 112005039256059-PAT00008
따라서, 정보 처리 컨트롤러(11)에 포함되는 메인 프로세서(42) 및 서브 프로세서(43)의 합계의 소비 전력 ΣPT는, 다음의 수학식 9로 나타낸다. 또한, 프로세서 동작율 SCPU_RATE[k]가, 프로세서마다 독립적으로 설정되어 있는 것은 아니고, 모두 공통의 값(SYSTEM_RATE)으로서 취급되는 경우에는, 정보 처리 컨트롤러(11)에 포함되는 메인 프로세서(42) 및 서브 프로세서(43)의 합계의 소비 전력 ΣPT는, 다음의 수학식 10으로 나타낸다.
Figure 112005039256059-PAT00009
Figure 112005039256059-PAT00010
도 10은, 정보 처리 컨트롤러(11)에 포함되는 메인 프로세서(42) 및 서브 프로세서(43)의 개개의 소비 전력 PT와, 동작 클럭수와의 관계를 도시하는 도면이다.
도 10에 도시된 바와 같이, 프로세서의 사용율이 클수록, 소비 전력 PT는 커지지만, 프로세서의 사용율이 0이어도, 프로세서에 클럭이 공급되고 있는 한, 프로세서 및 버스의 제어를 위해 소비되는 전력량 등, 어플리케이션의 처리에 의존하지 않는 고정의 소비 전력이 발생한다. 메인 프로세서(42) 및 서브 프로세서(43)에 공급되고 있는 클럭은, SYSTEM_RATE×SCPU_CK로 나타낸다. 즉, 동일한 프로세서 사용율(SCPU_STAT)이어도, 프로세서 동작율(SYSTEM_RATE 또는 SCPU_RATE[k])이 큰 쪽이, 고정분만큼 소비 전력은 증가한다.
다음으로, 도 11 및 도 12의 플로우차트를 참조하여, 본 발명을 적용한 정보 처리 장치(1)에서 실행되는, 분산 처리 할당 결정 처리 1에 대하여 설명한다.
단계 S1에서, 논리 쓰레드 실행 제어부(102)는, 어플리케이션 실행 제어부(101)로부터, REQUEST_information의 공급을 받아, 새로운 분산 처리의 할당을 명령받았는지의 여부를 판단한다. 단계 S1에서, 새로운 분산 처리의 할당을 명령받지 않았다고 판단된 경우, 새로운 분산 처리의 할당을 명령받았다고 판단될 때까지, 단계 S1의 처리가 반복된다.
단계 S1에서, 새로운 분산 처리의 할당을 명령받았다고 판단된 경우, 단계 S2에서, 논리 쓰레드 실행 제어부(102)는, 공급된 REQUEST_information에 포함되는 정보로부터, 할당을 명령받은 분산 처리의 실행에 필요한 서브 프로세서의 수 j를 취득한다.
단계 S3에서, 논리 쓰레드 실행 제어부(102)는, 각 프로세서에의 처리의 할당 계산 과정에서의 잠정값을 저장하는 내부의 레지스터의 값에 대응하는 것으로서, 프로세서 사용율 TEMP_STAT[k] 및 프로세서 동작율 TEMP_RATE[k]를 정의한다.
단계 S4에서, 논리 쓰레드 실행 제어부(102)는, 동작 정보 메모리(105)에 기억되어 있는, 분산 처리의 할당 전, 즉 현재의 각 프로세서의 프로세서 사용율 SCPU_STAT[k] 및 프로세서 동작율 SCPU_RATE[k]의 값을 취득하여, 프로세서 사용율 TEMP_STAT[k] 및 프로세서 동작율 TEMP_RATE[k]에 대입한다.
여기서는, 서브 프로세서(43)가 복수 설치되어 있는 정보 처리 컨트롤러(11)에서, 이미 몇개의 어플리케이션 프로그램을 실행하고 있는 상태에서, 네트워크(2)를 통하여 접속되어 있는 다른 정보 처리 장치(1)로부터, 새롭게 다른 어플리케이션 프로그램의 실행이 요구된 경우에 대해 설명한다. 또한, 논리 쓰레드 실행 제어부(102) 또는 동작 정보 메모리(105)가 현재 관리하고 있는 설정값은, REQ_REAL=1(리얼타임 처리를 요구), NUM_SCPU=3, TIME_DEF=1(1초), RATE_MARGIN=0.1, MEM_MARGIN=10인 것으로 한다.
도 13을 이용하여, 이미 몇개의 어플리케이션 프로그램을 실행하고 있는 상태의 메인 프로세서(42) 및 서브 프로세서(43-1) 내지 서브 프로세서(43-3)의 프로세서 동작율 SYSTEM_RATE(여기서는, 모든 프로세서에서 프로세서 동작율을 공통인 것으로 하여 설명함)와, 프로세서 사용율 SCPU_STAT[k]의 관계를 설명한다. 여기서, 설명을 간략화하기 위해, THREAD_OVERHEAD는 0인 것으로 하여 설명한다.
여기서, 메인 프로세서(42) 및 서브 프로세서(43-1) 내지 서브 프로세서(43-3)의 프로세서 동작율 SYSTEM_RATE는 0.5이다. 그리고, k=0으로 나타내는 메인 프로세서(42)의 프로세서 사용율 SCPU_STAT[0]은 0.3이기 때문에, 프로세서 사용율 SCPU_STAT[0]/프로세서 동작율 SYSTEM_RATE는, 0.3/0.5이고, 메인 프로세서(42)가 이용할 수 있는 메모리의 용량 MEM_CPU[0]은, 5000(kbytes)이고, 현재 사용 중인 메모리 용량은 1000(kbytes)이고, 최대 동작 클럭수를 나타내는 SCPU_CK[0]은, 1000이다. k=1로 나타내는 서브 프로세서(43-1)의 프로세서 사용율 SCPU_STAT[1]은 0.4이기 때문에, 프로세서 사용율 SCPU_STAT[1]/프로세서 동작율 SYSTEM_RATE는, 0.4/0.5이고, 서브 프로세서(43-1)가 이용할 수 있는 메모리의 용량 MEM_CPU[1]은, 100(kbytes)이고, 현재 사용 중인 메모리 용량은 20(kbytes)이고, 최대 동작 클럭수를 나타내는 SCPU_CK[1]은, 1000이다. 또한, k=2로 나타내는 서브 프로세서(43-2)의 프로세서 사용율 SCPU_STAT[2]는 0.2이기 때문에, 프로세서 사용율 SCPU_STAT[2]/프로세서 동작율 SYSTEM_RATE는, 0.2/0.5이고, 서브 프로세서(43-2)가 이용할 수 있는 메모리의 용량 MEM_CPU[2]는, 100(kbytes)이고, 현재 사용 중인 메모리 용량은 10(kbytes)이고, 최대 동작 클럭수를 나타내는 SCPU_CK[2]는, 1000이다. 또한, k=3으로 나타내는 서브 프로세서(43-3)의 프로세서 사용율 SCPU_STAT[3]은 0.1이기 때문에, 프로세서 사용율 SCPU_STAT[3]/프로세서 동작율 SYSTEM_RATE는, 0.1/0.5이고, 서브 프로세서(43-3)가 이용할 수 있는 메모리의 용량 MEM_CPU[3]은, 100(kbytes)이고, 현재 사용 중인 메모리 용량은 5(kbytes)이고, 최대 동작 클럭수를 나타내는 SCPU_CK[3]은, 1000이다.
그리고, REQUEST_information에 기재되어 있는, 새롭게 실행이 요구되고 있는 어플리케이션 프로그램의 동작 조건은, 필요한 서브 프로세서수 REQ_NUM이 2이고, 메인 프로세서(42)에 요구되는 처리 사이클수 REQ_PC[0]은 100, 요구되는 메모리 용량 REQ_MEM[0]이 100(kbytes), 하나째의 서브 프로세서(43)에 요구되는 처리 사이클수 REQ_PC[1]은 400, 요구되는 메모리 용량 REQ_MEM[1]이 50(kbytes), 2개째의 서브 프로세서(43)에 요구되는 처리 사이클수 REQ_PC[2]는 200, 요구되는 메모 리 용량 REQ_MEM[2]가 30(kbytes)인 것으로 한다.
이상의 조건에 기초하여, 이하의 처리에서, 조건을 충족시키는 분산 처리의 할당이 행해진다.
단계 S5에서, 논리 쓰레드 실행 제어부(102)는, 요구하는 처리에 필요한 서브 프로세서의 수를 나타내는 REQ_NUM에 대하여, 몇번째의 프로세서의 할당 결정 처리를 행하고 있는지를 나타내는 레지스터의 값 t를, t=0으로 한다. 여기서, t=0의 프로세서는, 메인 프로세서(42)를 나타내고, t≥1의 프로세서는, 서브 프로세서(43) 중 어느 하나를 나타낸다.
단계 S6에서, 논리 쓰레드 실행 제어부(102)는, 정보 처리 컨트롤러(11)에 설치되어 있는 프로세서 중, 몇번째의 프로세서에 처리의 할당이 가능한지의 여부를 판정하고 있는지를 나타내는 레지스터의 값 s를, s=0으로 한다.
단계 S7에서, 논리 쓰레드 실행 제어부(102)는, REQ_NUM(t)의 처리는, s번째의 프로세서로 실행 가능할지의 여부를 판단한다.
구체적으로는, 논리 쓰레드 실행 제어부(102)는, REQ_NUM(t)의 처리에 의한 프로세서 사용율 SCPU_STAT[s]의 증가분을 가산한 뒤에, 프로세서 사용율 SCPU_STAT[s]+RATE_MARGIN가 1을 초과하지 않는 것, 및 REQ_NUM(t)의 처리에 의해 요구되는 메모리 용량에 대하여, (REQ_MEM[s]+MEM_MARGIN)<(MEM[s]_CPU-현재의 메모리의 사용량)이 성립하는 것을 조건으로 하여, REQ_NUM(t)의 처리는, s번째의 프로세서로 실행 가능할지의 여부를 판단한다.
단계 S7에서, REQ_NUM(t)의 처리는, s번째의 프로세서로 실행 가능하지 않다 고 판단된 경우, 단계 S8에서, 논리 쓰레드 실행 제어부(102)는, 레지스터의 값 s를, s=s+1로 한다.
단계 S9에서, 논리 쓰레드 실행 제어부(102)는, s>(정보 처리 컨트롤러(11)에 설치되어 있는 서브 프로세서(43)의 수)인지의 여부를 판단한다. 단계 S9에서, s>(정보 처리 컨트롤러(11)에 설치되어 있는 서브 프로세서(43)의 수)가 아니라고 판단된 경우, 처리는 단계 S7로 되돌아가, 그 이후의 처리가 반복된다. 단계 S9에서, s>(정보 처리 컨트롤러(11)에 설치되어 있는 서브 프로세서(43)의 수)라고 판단된 경우, 처리는, 후술하는 단계 S19로 진행한다.
단계 S7에서, REQ_NUM(t)의 처리는, s번째의 프로세서로 실행 가능하다고 판단된 경우, 단계 S10에서, 논리 쓰레드 실행 제어부(102)는, 필수 조건을 만족하는 프로세서의 식별 번호를 나타내는 내부의 레지스터에 대응하는 SET_CPUID[t]에, 할당된 s번째의 프로세서의 프로세서 ID(메인 프로세서 ID 또는 서브 프로세서 ID)를 기재한다.
단계 S11에서, 논리 쓰레드 실행 제어부(102)는, 할당된 s번째의 프로세서의 처리분의 프로세서 사용율이 가산되도록, 할당 계산 과정에서의 잠정값을 저장하는 내부의 레지스터의 값에 대응하는 프로세서 사용율 TEMP_STAT[s]을 갱신한다.
단계 S12에서, 논리 쓰레드 실행 제어부(102)는, 레지스터 t의 값을, t=t+1로 한다.
단계 S13에서, 논리 쓰레드 실행 제어부(102)는, 레지스터 t의 값을 참조하여, t>j(j는 분산 처리에 필요한 서브 프로세서의 수)인지의 여부를 판단한다. 단 계 S13에서, t>j가 아니라고 판단된 경우, 요구된 처리의 할당이 종료하지 않기 때문에, 처리는 단계 S6으로 되돌아가, 그 이후의 처리가 반복된다.
단계 S13에서, t>j라고 판단된 경우, 요구된 처리의 할당이 종료했기 때문에, 단계 S14에서, 논리 쓰레드 실행 제어부(102)는, 할당이 성공한 것을 나타내는 플래그를 설정하는데, 즉 SET_NG=0으로 한다.
단계 S15에서, 논리 쓰레드 실행 제어부(102)는, 모든 프로세서의 프로세서 동작율 TEMP_RATE[k], 및 최신의 프로세서 사용율 TEMP_STAT[k]를 비교함으로써, 새로운 분산 처리의 할당에 의해서, 프로세서 동작율의 설정을 변경할 필요가 있는지의 여부를 판단한다.
단계 S15에서, 프로세서 동작율의 설정을 변경할 필요가 있다고 판단된 경우, 즉 어느 하나의 프로세서에서, 프로세서 동작율 TEMP_RATE[k]< 프로세서 사용율 TEMP_STAT[k]인 경우, 단계 S16에서, 논리 쓰레드 실행 제어부(102)는, 새로운 프로세서 동작율을 산출하고, 산출 결과를, 동작율 설정부(103)에 공급한다. 동작율 설정부(103)는, 메인 프로세서(42) 또는 서브 프로세서(43) 중 대응하는 것에, 프로세서 동작율의 설정 변경을 행한다.
단계 S17에서, 논리 쓰레드 실행 제어부(102)는, 동작 정보 메모리(105)에 기억되어 있는, 각 프로세서의 프로세서 사용율 SCPU_STAT[k], 및 프로세서 동작율 SCPU_RATE[k]의 값을, 각각 할당 계산에 의해 얻어진 프로세서 사용율 TEMP_STAT[k], 및 TEMP_RATE[k]로 갱신한다.
도 14를 이용하여, 새로운 분산 처리의 할당 결과와, 프로세서 동작율의 설 정에 대하여 설명한다.
도 13을 이용하여 설명한 상태에서, 전술한 바와 같이, 필요한 서브 프로세서수 REQ_NUM이 2이고, 메인 프로세서(42)에 요구되는 처리 사이클수 REQ_PC[0]은 100, 요구되는 메모리 용량 REQ_MEM[0]이 100(kbytes), 하나째의 서브 프로세서(43)에 요구되는 처리 사이클수 REQ_PC[1]은 400, 요구되는 메모리 용량 REQ_MEM[1]이 50(kbytes), 2개째의 서브 프로세서(43)에 요구되는 처리 사이클수 REQ_PC[2]는 200, 요구되는 메모리 용량 REQ_MEM[2]가 30(kbytes)인 분산 처리의 할당이 요구된 경우, 도 14에 도시된 바와 같이, k=0으로 나타내는 메인 프로세서(42)의 프로세서 사용율 SCPU_STAT[0]은 0.4로 되고, k=1로 나타내는 서브 프로세서(43-1)의 프로세서 사용율 SCPU_STAT[1]은 0.8로 되고, k=2로 나타내는 서브 프로세서(43-2)의 프로세서 사용율 SCPU_STAT[2]는 0.4로 되고, k=3으로 나타내는 서브 프로세서(43-3)의 프로세서 사용율 SCPU_STAT[3]은 0.1 그대로이다.
RATE_MARGIN=0.1이기 때문에, 새로운 분산 처리의 할당 후에, 프로세서 동작율이 개개로 제어되도록 이루어져 있는 경우, 서브 프로세서(43-1)의 프로세서 동작율 SCPU_RATE[1]만이, 0.9로 변경되고, 새로운 분산 처리의 할당의 후에도, 프로세서 동작율이 공통으로 되도록 제어되고 있는 경우, 모든 프로세서의 프로세서 동작율 RATE_MARGIN=0.1이기 때문에, SYSTEM_RATE는 0.9로 변경된다. 또한, 각각의 프로세서에서, 새로운 분산 처리가 할당된 것에 의해, 메인 프로세서(42)가 이용할 수 있는 메모리의 용량(MEM_CPU[0]-현재의 메모리의 사용량)은, 3900(kbytes)로 되고, 서브 프로세서(43-1)가 이용할 수 있는 메모리의 용량(MEM_CPU[1]-현재의 메모 리의 사용량)은, 30(kbytes)으로 되고, 서브 프로세서(43-2)가 이용할 수 있는 메모리의 용량(MEM_CPU[2]-현재의 메모리의 사용량)은, 60(kbytes)으로 되고, 서브 프로세서(43-3)가 이용할 수 있는 메모리의 용량(MEM_CPU[3]-현재의 메모리의 사용량)은, 95(kbytes) 그대로로 된다.
단계 S15에서, 프로세서 동작율의 설정을 변경할 필요가 없다고 판단된 경우, 또는 단계 S17의 처리의 종료 후, 단계 S18에서, 논리 쓰레드 실행 제어부(102)는, 설정된 할당에 기초하여, 프로그램 및 데이터를 대응하는 프로세서에 로드하여, 논리 쓰레드의 처리를 제어한다. 메인 프로세서(42) 및 서브 프로세서(43)는, 할당된 쓰레드의 처리를 실행하여, 처리가 종료된다.
단계 S9에서, s>(정보 처리 컨트롤러(11)에 설치되어 있는 서브 프로세서(43)의 수)라고 판단된 경우, 단계 S19에서, 논리 쓰레드 실행 제어부(102)는, SET_NG=1으로 하여, 분산 처리의 할당이 불가능한 것을, 유저 및 분산 처리의 요구원의 정보 처리 장치(1)에 통지하고, 처리가 종료된다.
이러한 처리에 의해, 본 발명을 적용한 정보 처리 장치(1)에서는, 프로세서(또는 프로세서군)의 소비 전력을 억제할 수 있도록, 분산되는 처리의 할당처를 적절하게 선택할 수 있다.
전술한 처리에 의해 분산 처리가 할당된 상태가, 전술한 도 14에서의 상태이고, 프로세서 동작율이 공통으로 되도록 제어되고 있는 경우의 소비 전력은, 다음의 수학식 11에 의해 구해진다.
Figure 112005039256059-PAT00011
그런데, 특히, 프로세서 동작율이 공통으로 되도록 제어되고 있는 경우, 도 14에 도시된 서브 프로세서(43-3)에서는, 프로세서 사용율이 낮은 것임에도 불구하고, 프로세서 동작율이 높아지게 되고, 소비 전력적으로는 쓸데없는 할당으로 되게 된다.
따라서, 소비 전력을 더욱 억제할 수 있도록, 새로운 분산 처리가 할당되기 전의 프로세서 동작율 SCPU_RATE[k] 또는 SYSTEM_RATE와, 프로세서 사용율 SCPU_STAT[k]와의 관계에 기초하여, 분산 처리의 할당처를 결정하도록 하여도 된다.
다음으로, 도 15의 플로우차트를 참조하여, 새로운 분산 처리가 할당되기 전의 프로세서 동작율과 프로세서 사용율과의 관계에 기초하여 분산 처리의 할당처를 결정하는, 분산 처리 할당 결정 처리 2에 대하여 설명한다.
단계 S31에서, 논리 쓰레드 실행 제어부(102)는, 어플리케이션 실행 제어부(101)로부터, REQUEST_information의 공급을 받아, 새로운 분산 처리의 할당을 명령받았는지의 여부를 판단한다. 단계 S31에서, 새로운 분산 처리의 할당을 명령받지 않았다고 판단된 경우, 새로운 분산 처리의 할당을 명령받았다고 판단될 때까지, 단계 S31의 처리가 반복된다.
여기서는, 서브 프로세서(43)가 복수 설치되어 있는 정보 처리 컨트롤러(11)에서, 이미 몇개의 어플리케이션 프로그램을 실행하고 있는 상태의 메인 프로세서(42) 및 서브 프로세서(43-1) 내지 서브 프로세서(43-3)의 상태는, 도 13을 이용하여 설명한 경우와 마찬가지인 것으로 한다.
즉, 프로세서 동작율 SYSTEM_RATE가 0.5이고, k=0으로 나타내는 메인 프로세서(42)의 프로세서 사용율 SCPU_STAT[0]은 0.3이기 때문에, 프로세서 사용율 SCPU_STAT[0]/프로세서 동작율 SYSTEM_RATE[0]은, 0.3/0.5이고, 메인 프로세서(42)가 이용할 수 있는 메모리의 용량 MEM_CPU[0]은, 5000(kbytes)이고, 최대 동작 클럭수를 나타내는 SCPU_CK[0]은, 1000이다. k=1로 나타내는 서브 프로세서(43-1)의 프로세서 사용율 SCPU_STAT[1]은 0.4이기 때문에, 프로세서 사용율 SCPU_STAT[1]/프로세서 동작율 SYSTEM_RATE[1]은, 0.4/0.5이고, 서브 프로세서(43-1)가 이용할 수 있는 메모리의 용량 MEM_CPU[1]은, 100(kbytes)이고, 최대 동작 클럭수를 나타내는 SCPU_CK[1]은, 1000이다. 또한, k=2로 나타내는 서브 프로세서(43-2)의 프로세서 사용율 SCPU_STAT[2]는 0.2이기 때문에, 프로세서 사용율 SCPU_STAT[2]/프로세서 동작율 SYSTEM_RATE[2]는, 0.2/0.5이고, 서브 프로세서(43-2)가 이용할 수 있는 메모리의 용량 MEM_CPU[2]는, 100(kbytes)이고, 최대 동작 클럭수를 나타내는 SCPU_CK[2]는, 1000이다. 또한, k=3으로 나타내는 서브 프로세서(43-3)의 프로세서 사용율 SCPU_STAT[3]은 0.1이기 때문에, 프로세서 사용율 SCPU_STAT[3]/프로세서 동작율 SYSTEM_RATE[3]은, 0.1/0.5이고, 서브 프로세서(43-3)가 이용할 수 있는 메모리의 용량 MEM_CPU[3]은, 100(kbytes)이고, 최대 동작 클럭수를 나타내는 SCPU_CK[3]은, 1000인 것으로서 설명한다. 또한, 설명을 간략화하기 위해, THREAD_OVERHEAD는 0인 것으로서 설명한다.
이러한 상태에서, 네트워크(2)를 통하여 접속되어 있는 다른 정보 처리 장치(1)로부터, 새롭게 다른 어플리케이션 프로그램의 실행이 요구된 경우에 대해 설명한다. 또한, 논리 쓰레드 실행 제어부(102) 또는 동작 정보 메모리(105)가 현재 관리하고 있는 설정값은, REQ_REAL=1(리얼타임 처리를 요구), NUM_SCPU=3, TIME_DEF=1(1초), RATE_MARGIN=0.1, MEM_MARGIN=10인 것으로 한다.
그리고, REQUEST_information에 기재되어 있는, 새롭게 실행이 요구되고 있는 어플리케이션 프로그램의 동작 조건은, 필요한 서브 프로세서수 REQ_NUM이 2이고, 메인 프로세서(42)에 요구되는 처리 사이클수 REQ_PC[0]은 100, 요구되는 메모리 용량 REQ_MEM[0]이 100(kbytes), 하나째의 서브 프로세서(43)에 요구되는 처리 사이클수 REQ_PC[1]은 400, 요구되는 메모리 용량 REQ_MEM[1]이 50(kbytes), 2개째의 서브 프로세서(43)에 요구되는 처리 사이클수 REQ_PC[2]는 200, 요구되는 메모리 용량 REQ_MEM[2]가 30(kbytes)인 것으로 한다.
단계 S31에서, 새로운 분산 처리의 할당을 명령받았다고 판단된 경우, 단계 S32에서, 논리 쓰레드 실행 제어부(102)는, 할당 조건을 충족시키고 있는지의 여부를 나타내는 플래그 SET_NG를 초기화, 즉 SET_NG=0으로 한다.
단계 S33에서, 논리 쓰레드 실행 제어부(102)는, 현재의 각 프로세서의 프로세서 사용율 SCPU_STAT[k]를 취득하여, TEMP_STAT[k]에 대입한다.
단계 S34에서, 논리 쓰레드 실행 제어부(102)는, 현재의 각 프로세서의 프로 세서 동작율 SCPU_RATE[k]를 취득하여, TEMP_RATE[k]에 대입한다.
단계 S35에서, 논리 쓰레드 실행 제어부(102)는, 처리의 할당이 결정된 프로세서를 나타내는 플래그 SET_CPUID[t]를 초기화, 즉 SET_CPUID[t]=0으로 한다.
단계 S36에서, 도 16 및 도 17의 플로우차트를 이용하여 후술하는 프로세서 할당 결정 처리가 실행된다.
단계 S37에서, 논리 쓰레드 실행 제어부(102)는, 도 16 및 도 17의 플로우차트를 이용하여 후술하는 프로세서 할당 결정 처리의 처리 결과인 SET_NG의 값에 기초하여, 새로운 분산 처리의 할당이 성공하였는지의 여부를 판단한다.
단계 S37에서, 새로운 분산 처리의 할당이 성공하였다고 판단된 경우, 단계 S38에서, 논리 쓰레드 실행 제어부(102)는, 모든 프로세서의 프로세서 동작율 TEMP_RATE[k], 및 최신의 프로세서 사용율 TEMP_STAT[k]를 비교함으로써, 새로운 분산 처리의 할당에 의해서, 프로세서 동작율의 설정을 변경할 필요가 있는지의 여부를 판단한다.
단계 S38에서, 프로세서 동작율의 설정을 변경할 필요가 있다고 판단된 경우, 즉 어느 하나의 프로세서에서, 프로세서 동작율 TEMP_RATE[k]< 프로세서 사용율 TEMP_STAT[k]이던 경우, 단계 S39에서, 논리 쓰레드 실행 제어부(102)는, 새로운 프로세서 동작율을 산출하고, 산출 결과를, 동작율 설정부(103)에 공급한다. 동작율 설정부(103)는, 메인 프로세서(42) 또는 서브 프로세서(43) 중 대응하는 것에, 프로세서 동작율의 설정을 행한다.
단계 S40에서, 논리 쓰레드 실행 제어부(102)는, 동작 정보 메모리(105)에 기록되어 있는, 각 프로세서의 프로세서 사용율 SCPU_STAT[k], 및 프로세서 동작율 SCPU_RATE[k]의 값을, 각각 할당 계산에 의해 얻어진 프로세서 사용율 TEMP_STAT[k], 및 TEMP_RATE[k]의 값으로 갱신한다. 새로운 분산 처리의 할당 결과와, 동작율의 설정에 대해서는, 도 18 내지 도 20을 이용하여 후술한다.
단계 S38에서, 프로세서 동작율의 설정을 변경할 필요가 없다고 판단된 경우, 또는 단계 S39의 처리의 종료 후, 단계 S41에서, 논리 쓰레드 실행 제어부(102)는, 설정된 할당에 기초하여, 프로그램 및 데이터를 대응하는 프로세서에 로드하여, 논리 쓰레드의 처리를 제어한다. 메인 프로세서(42) 및 서브 프로세서(43)는, 할당된 쓰레드의 처리를 실행하고, 처리가 종료된다.
단계 S37에서, 분산 처리의 할당이 성공하지 않은 것으로 판단된 경우, 단계 S42에서, 논리 쓰레드 실행 제어부(102)는, 분산 처리의 할당이 불가능한 것을, 유저 및 분산 처리의 요구원의 정보 처리 장치(1)에 통지하고, 처리가 종료된다.
이러한 처리에 의해, 본 발명을 적용한 정보 처리 장치(1)에서는, 도 11 및 도 12를 이용하여 설명한 분산 처리 할당 결정 처리 1이 실행된 경우와 비교하여, 또한 프로세서(또는 프로세서군)의 소비 전력을 억제할 수 있도록, 분산되는 처리의 할당처를 적절하게 선택할 수 있다.
다음으로, 도 16 및 도 17의 플로우차트를 참조하여, 도 15의 단계 S36에서 실행되는 프로세서 할당 결정 처리에 대하여 설명한다.
단계 S61에서, 논리 쓰레드 실행 제어부(102)는, 공급된 REQUEST_information에 포함되는 정보로부터, 할당을 명령받은 분산 처리의 실행에 필요한 서브 프로세서의 수 j를 취득한다.
단계 S62에서, 논리 쓰레드 실행 제어부(102)는, 분산 처리의 할당의 가부를 판단하기 위해 각각의 프로세서를 구별하기 위한 내부의 레지스터의 값에 대응하는 것으로서, SCPU_NB를 정의한다.
단계 S63에서, 논리 쓰레드 실행 제어부(102)는, SCPU_NB[0]을 메인 프로세서(42)인 것으로 한다.
단계 S64에서, 논리 쓰레드 실행 제어부(102)는, 공급된 REQUEST_information에 포함되는 정보로부터, 실행 요구를 받은 처리에는, PRIORITY_ID가 지정되어 있는지의 여부를 판단한다. 단계 S64에서, PRIORITY_ID가 지정되어 있지 않다고 판단된 경우, 처리는, 후술하는 단계 S67로 진행한다.
단계 S64에서, PRIORITY_ID가 지정되어 있다고 판단된 경우, 단계 S65에서, 논리 쓰레드 실행 제어부(102)는, SCPU_NB[1]을 PRIORITY_ID에서 지정되는 서브 프로세서(43)인 것으로 한다.
단계 S66에서, 논리 쓰레드 실행 제어부(102)는, 공급된 REQUEST_information에 포함되는 정보를 참조하여, 2≤i≤(정보 처리 컨트롤러(11)에 포함되는 서브 프로세서(43)의 수)로 되는 SCPU_NB[i]에서, 서스펜드 지정되어 있는 서브 프로세서(43)를 생략한 뒤에, 현재의 프로세서 동작율 SCPU_RATE[k] 또는 SYSTEM_RATE에 대한 프로세서 사용율 SCPU_STAT[k]의 여유도가 높은 순으로 소트한 서브 프로세서(43)의 서브 프로세서 ID를 대응시키고, 처리는 후술하는 단계 S68로 진행한다.
단계 S64에서, PRIORITY_ID가 지정되어 있지 않다고 판단된 경우, 단계 S67에서, 논리 쓰레드 실행 제어부(102)는, 공급된 REQUEST_information에 포함되는 정보를 참조하여, 1≤i≤(정보 처리 컨트롤러(11)에 포함되는 서브 프로세서(43)의 수)로 되는 SCPU_NB[i]에서, 서스펜드 지정되어 있는 서브 프로세서를 생략한 뒤에, 현재의 프로세서 동작율 SCPU_RATE[k] 또는 SYSTEM_RATE에 대한 프로세서 사용율 SCPU_STAT[k]의 여유도가 높은 순으로 소트한 서브 프로세서(43)의 서브 프로세서 ID를 대응시킨다.
즉, 단계 S63 내지 단계 S67의 처리에 의해서, SCPU_NB[0]에 메인 프로세서(42)가 대응됨과 함께, SCPU_NB[1], SCPU_NB[2], SCPU_NB[3]…SCPU_NB[k]에, PRIORITY_ID가 지정되어 있는 경우, 지정되어 있는 서브 프로세서(43)가 우선되어, 서스펜드 지정되어 있는 서브 프로세서(43)가 생략된 상태에서, 현재의 프로세서 동작율 SCPU_RATE[k] 또는 SYSTEM_RATE에 대한 프로세서 사용율 SCPU_STAT[k]의 여유도가 높은 순서로 소트된 서브 프로세서(43)가 순차적으로 대응된다.
즉, 도 13을 이용하여 설명한 경우에, PRIORITY_ID 및 서스펜드의 지정이 없을 때, SCPU_NB[0]에 메인 프로세서(42)가 대응됨과 함께, SCPU_NB[1]에 서브 프로세서(43-3)가 대응되고, SCPU_NB[2]에 서브 프로세서(43-2)가 대응되고, SCPU_NB[3]에 서브 프로세서(43-1)가 대응된다.
단계 S66 또는 단계 S67의 처리의 종료 후, 단계 S68에서, 논리 쓰레드 실행 제어부(102)는, 요구하는 처리에 필요한 서브 프로세서의 수를 나타내는 REQ_NUM에 대하여, 몇번째의 프로세서의 할당 결정 처리를 행하고 있는지를 나타내는 레지스 터의 값 t를, t=0으로 한다. 여기서, t=0의 프로세서는, 메인 프로세서(42)를 나타내고, t≥1의 프로세서는, 서브 프로세서(43) 중 어느 하나를 나타낸다.
단계 S69에서, 논리 쓰레드 실행 제어부(102)는, SCPU_NB[i]에서의 변수 i를, i=0으로 한다.
단계 S70에서, 논리 쓰레드 실행 제어부(102)는, REQUEST_information에 포함되는 정보를 참조하여, 서브 프로세서(43) 중 어느 하나로 분산하여 할당되는 것이 요구되고 있는 REQ_NUM(t)의 처리는, SCPU_NB[i]으로 나타내는 프로세서(43)에서 실행 가능할지의 여부를 판단한다.
구체적으로는, 논리 쓰레드 실행 제어부(102)는, REQ_NUM(t)의 처리에 의한, SCPU_NB[i]로 나타내는 프로세서에서의 프로세서 사용율 SCPU_STAT[k]의 증가분을 가산한 뒤에, 프로세서 사용율 SCPU_STAT[k]+RATE_MARGIN가 1을 초과하지 않는 것, 및 REQ_NUM(t)의 처리에 의해 요구되는 SCPU_NB[i]로 나타내는 프로세서에서의 메모리 용량에 대하여, (REQ_MEM[k]+MEM_MARGIN)<(MEM_CPU[k]-현재의 메모리 사용량)이 성립하는 것을 조건으로 하여, REQ_NUM(t)의 처리는, SCPU_NB[i]로 나타내는 프로세서로 실행 가능할지의 여부를 판단한다.
단계 S70에서, REQ_NUM(t)의 처리는, SCPU_NB[i]으로 나타내는 프로세서로 실행 가능하지 않다고 판단된 경우, 단계 S71에서, 논리 쓰레드 실행 제어부(102)는, SCPU_NB[i]에서의 변수 i를, i=i+1로 한다.
단계 S72에서, 논리 쓰레드 실행 제어부(102)는, i>(서스펜드 등을 제외한, 실질적으로 처리가 할당 가능한 서브 프로세서(43)의 수)인지의 여부를 판단한다. 단계 S72에서, i>(서스펜드 등을 제외한, 실질적으로 처리가 할당 가능한 서브 프로세서(43)의 수)가 아니라고 판단된 경우, 처리는, 단계 S70으로 되돌아가, 그 이후의 처리가 반복된다. 단계 S72에서, i>(서스펜드 등을 제외한, 실질적으로 처리가 할당 가능한 서브 프로세서(43)의 수)라고 판단된 경우, 처리는 후술하는 단계 S78로 진행한다.
단계 S70에서, REQ_NUM(t)의 처리는, SCPU_NB[i]으로 나타내는 프로세서로 실행 가능하다고 판단된 경우, 단계 S73에서, 논리 쓰레드 실행 제어부(102)는, 처리의 할당이 결정된 프로세서를 나타내는 레지스터의 값 SET_CPUID[t]를, SCPU_NB[i]로 나타내는 프로세서의 프로세서 ID로 한다.
단계 S74에서, 논리 쓰레드 실행 제어부(102)는, SCPU_NB[i]으로 나타내는 프로세서의 TEMP_STAT[k]에, 새롭게 할당된 처리에 대응하는 프로세서 사용율을 가산하여 갱신한다.
단계 S75에서, 논리 쓰레드 실행 제어부(102)는, 몇번째의 프로세서의 할당 결정 처리를 행하고 있는지를 나타내는 레지스터의 값 t를, t=t+1로 한다.
즉, 도 13을 이용하여 설명한 경우와 마찬가지의 상태의 메인 프로세서(42) 및 서브 프로세서(43-1) 내지 서브 프로세서(43-3)에 대하여, 필요한 서브 프로세서수 REQ_NUM이 2이고, 메인 프로세서(42)에 요구되는 처리 사이클수 REQ_PC[0]은 100, 요구되는 메모리 용량 REQ_MEM[0]이 100(kbytes)인 새로운 분산 처리가 요구되었을 때, i=0에서, 논리 쓰레드 실행 제어부(102)는, 다음의 수학식 12에 나타낸 바와 같이, 메인 프로세서(42)에 새롭게 분산 처리가 할당되었을 때, 프로세서 사 용율 SCPU_STAT[0]+RATE_MARGIN은 1을 초과하지 않고, 또한 다음의 수학식 13에 나타낸 바와 같이, (REQ_MEM[0]+MEM_MARGIN)<(MEM_CPU[0]-현재의 메모리 사용량)이 성립하기 때문에, REQ_NUM(0)의 처리는, SCPU_NB[0]으로 나타내는 메인 프로세서(42)에서 실행 가능하다고 판단한다.
Figure 112005039256059-PAT00012
Figure 112005039256059-PAT00013
따라서, 논리 쓰레드 실행 제어부(102)는, SET_CPUID[0]에 메인 프로세서(42)의 프로세서 ID를 기재하고, TEMP_STAT[0]=0.4로 하고, 현재의 메모리 사용량을 1000+100=1100으로 함과 함께, 몇번째의 프로세서의 할당 결정 처리를 행하고 있는지를 나타내는 레지스터의 값 t를, t=1로 한다.
단계 S76에서, 논리 쓰레드 실행 제어부(102)는, t>j(j는 새로운 처리의 할당에 필요한 서브 프로세서의 수)인지의 여부를 판단한다. 단계 S76에서, t>j가 아니라고 판단된 경우, 처리는 단계 S69로 되돌아가, 그 이후의 처리가 반복된다.
예를 들면, t=1일 때, t>j가 아니라고 판단되므로, 전술한 경우와 마찬가지로, 요구된 새로운 분산 처리에서, 필요한 서브 프로세서수 REQ_NUM이 2이고, 하나 째의 서브 프로세서(43)에 요구되는 처리 사이클수 REQ_PC[1]은 400, 요구되는 메모리 용량 REQ_MEM[1]이 50(kbytes)일 때, i=1에서, 논리 쓰레드 실행 제어부(102)는, 다음의 수학식 14에 나타낸 바와 같이 SCPU_NB[1]로 나타내는 서브 프로세서(43-3)로, 프로세서 사용율 SCPU_STAT[3]+RATE_MARGIN은 1을 초과하지 않고, 또한 다음의 수학식 15에 나타낸 바와 같이, (REQ_MEM[1]+MEM_MARGIN)<(MEM_CPU[3]-현재의 메모리 사용량)이 성립되기 때문에, REQ_NUM(1)의 처리는, SCPU_NB[1]로 나타내는 서브 프로세서(43-3)로 실행 가능하다고 판단한다.
Figure 112005039256059-PAT00014
Figure 112005039256059-PAT00015
따라서, 논리 쓰레드 실행 제어부(102)는, SET_CPUID[1]에 서브 프로세서(43-3)의 프로세서 ID를 기재하고, TEMP_STAT[1]=0.5로 하고, 현재의 메모리 사용량을 55(kbytes)로 함과 함께, 몇번째의 프로세서의 할당 결정 처리를 행하고 있는지를 나타내는 레지스터의 값 t를, t=2로 한다.
또한, 마찬가지로, 요구된 새로운 분산 처리에서, 2개째의 서브 프로세서(43)에 요구되는 처리 사이클수 REQ_PC[2]는 200, 요구되는 메모리 용량 REQ_MEM[2]가 30(kbytes)일 때, i=2에서, 논리 쓰레드 실행 제어부(102)는, 다음의 수학식 16에 나타낸 바와 같이 SCPU_NB[2]로 나타내는 서브 프로세서(43-2)에서, 프로세서 사용율 SCPU_STAT[2]+RATE_MARGIN은 1을 초과하지 않고, 또한 다음의 수학식 17에 나타낸 바와 같이, (REQ_MEM[2]+MEM_MARGIN)<(MEM_CPU[2]-현재의 메모리 사용량)이 성립하기 때문에, REQ_NUM(2)의 처리는, SCPU_NB[2]로 나타내는 서브 프로세서(43-2)에서 실행 가능하다고 판단한다.
Figure 112005039256059-PAT00016
Figure 112005039256059-PAT00017
따라서, 논리 쓰레드 실행 제어부(102)는, SET_CPUID[2]에 서브 프로세서(43-2)의 프로세서 ID를 기재하고, TEMP_STAT[2]=0.4로 하고, 현재의 메모리 사용량을 40(kbytes)으로 함과 함께, 몇번째의 프로세서가 할당 결정 처리를 행하고 있는지를 나타내는 레지스터의 값 t를, t=3으로 한다.
단계 S76에서, t>j라고 판단된 경우, 단계 S77에서, 논리 쓰레드 실행 제어부(102)는, 할당이 성공한 것을 나타내는 플래그를 설정하고, SET_NG=0으로 하고, 처리는, 도 15의 단계 S36으로 되돌아가, 단계 S37로 진행한다.
단계 S72에서, i>(서스펜드 등을 제외한, 실질적으로 처리가 할당 가능한 서 브 프로세서(43)의 수)라고 판단된 경우, 단계 S78에서, 논리 쓰레드 실행 제어부(102)는, 할당이 실패한 것을 나타내도록 플래그를 OFF하고, SET_NG=1로 하고, 처리는 도 15의 단계 S36으로 되돌아가, 단계 S37로 진행한다.
이러한 처리에 의해, 본 발명을 적용한 정보 처리 장치(1)에서는, 도 11 및 도 12를 이용하여 설명한 분산 처리 할당 결정 처리 1이 실행된 경우와 비교하여, 또한 프로세서(또는 프로세서군)의 소비 전력을 억제할 수 있도록, 분산되는 처리의 할당처를 적절하게 선택할 수 있다.
도 13을 이용하여 설명한 경우와 마찬가지 상태의 메인 프로세서(42) 및 서브 프로세서(43-1) 내지 서브 프로세서(43-3)에서, 프로세서 동작율 SYSTEM_RATE가 공통인 것으로서 제어되고 있는 경우의 할당 결과를, 도 18에 도시한다.
k=0으로 나타내는 메인 프로세서(42)의 프로세서 사용율 SCPU_STAT[0]은 0.4로 되고, k=1로 나타내는 서브 프로세서(43-1)의 프로세서 사용율 SCPU_STAT[1]은 0.4 그대로이고, k=2로 나타내는 서브 프로세서(43-2)의 프로세서 사용율 SCPU_STAT[2]는 0.4로 되고, k=3으로 나타내는 서브 프로세서(43-3)의 프로세서 사용율 SCPU_STAT[3]은 0.5로 된다. 여기서, RATE_MARGIN가 0.1이기 때문에, 프로세서 동작율 SYSTEM_RATE는, 0.6으로 제어된다.
전술한 처리에 의해 분산 처리가 할당된 상태가, 전술한 도 18에서의 상태이며, 프로세서 동작율이 공통으로 되도록 제어되고 있는 경우의 소비 전력은, 다음의 식(18)에 의해 구해진다.
Figure 112005039256059-PAT00018
즉, 도 14를 이용하여 설명한 할당 처리 후와 비교하여, 1200×PA분의 소비 전력을 감소시킬 수 있다.
도 18은 프로세서 동작율 SYSTEM_RATE가 공통인 것으로서 제어되고 있는 경우의 할당 결과를 나타내고 있지만, 도 15 내지 도 17의 플로우차트를 이용하여 설명한 처리는, 프로세서 동작율 SCPU_RATE[k]가 개별로 설정되어 있을 때에, 특히, 효율적으로 소비 전력량을 억제할 수 있다.
예를 들면, 이미 몇개의 어플리케이션 프로그램을 실행하고 있는 상태의 메인 프로세서(42) 및 서브 프로세서(43-1) 내지 서브 프로세서(43-3)의 프로세서 동작율 SCPU_RATE[k]와, 프로세서 사용율 SCPU_STAT[k]의 관계가, 도 19에 도시된 바와 같이, k=0으로 나타내는 메인 프로세서(42)의 프로세서 사용율 SCPU_STAT[0]은 0.3이고, 프로세서 사용율 SCPU_STAT[0]/프로세서 동작율 SCPU_RATE[0]은, 0.3/0.5이고, k=1로 나타내는 서브 프로세서(43-1)의 프로세서 사용율 SCPU_STAT[1]은 0.4이고, 프로세서 사용율 SCPU_STAT[1]/프로세서 동작율 SCPU_RATE[1]은, 0.4/0.9이고, k=2로 나타내는 서브 프로세서(43-2)의 프로세서 사용율 SCPU_STAT[2]는 0.2이고, 프로세서 사용율 SCPU_STAT[2]/프로세서 동작율 SCPU_RATE[2]는, 0.2/0.3이고, 또한 k=3으로 나타내는 서브 프로세서(43-3)의 프로세서 사용율 SCPU_STAT[3]은 0.1이고, 프로세서 사용율 SCPU_STAT[3]/프로세서 동작율 SCPU_RATE[3]은, 0.1/0.5인 상태에서, 전술한 경우와 마찬가지로, REQUEST_information에 기재되어 있는, 새롭게 실행이 요구되고 있는 어플리케이션 프로그램의 동작 조건이, 필요한 서브 프로세서수 REQ_NUM이 2이고, 메인 프로세서(42)에 요구되는 처리 사이클수 REQ_PC[0]은 100, 하나째의 서브 프로세서(43)에 요구되는 처리 사이클수 REQ_PC[1]은 400, 2개째의 서브 프로세서(43)에 요구되는 처리 사이클수 REQ_PC[2]는 200인 분산 처리가 요구된 경우의 할당에 대하여 생각한다.
SCPU_NB[0]으로 나타내는 메인 프로세서(42)에 요구되는 처리의 할당은, 수학식 12를 이용하여 설명한 경우와 마찬가지이지만, SCPU_NB[1]에 할당되는 것은, 현재의 프로세서 동작율 SCPU_RATE[k] 또는 SYSTEM_RATE에 대한 프로세서 사용율 SCPU_STAT[k]의 여유도가 가장 높은 서브 프로세서(43-1)로 되고, SCPU_NB[2]에 할당되는 것은, 현재의 프로세서 동작율 SCPU_RATE[k] 또는 SYSTEM_RATE에 대한 프로세서 사용율 SCPU_STAT[k]의 여유도가 다음으로 높은 서브 프로세서(43-3)로 된다. 즉, SCPU_NB[1]인 서브 프로세서(43-1)에 REQ_NUM(1)의 처리가 할당되고, SCPU_NB[2]인 서브 프로세서(43-3)에 REQ_NUM(2)의 처리가 할당된다.
따라서, 할당 결과는, 도 20에 도시된 바와 같이, k=0으로 나타내는 메인 프로세서(42)의 프로세서 사용율 SCPU_STAT[0]은 0.4로 되고, k=1로 나타내는 서브 프로세서(43-1)의 프로세서 사용율 SCPU_STAT[1]은 0.8로 되고, k=2로 나타내는 서브 프로세서(43-2)의 프로세서 사용율 SCPU_STAT[2]는 0.2 그대로이며, k=3으로 나타내는 서브 프로세서(43-3)의 프로세서 사용율 SCPU_STAT[3]은 0.3으로 된다. 여 기서, RATE_MARGIN이 0.1이기 때문에, 프로세서 동작율 SCPU_RATE[i]는, 도 19를 이용하여 설명한 처리의 할당 전의 상태 그대로, 변경할 필요가 없기 때문에, 새로운 처리의 할당에 의한 소비 전력량의 증가를, 대폭 억제할 수 있다.
또한, REQ_REAL이 0(리얼타임 처리가 불요)으로 설정되어 있는 어플리케이션케이션에 대응하는 논리 쓰레드는, 어플리케이션 실행의 태스크의 우선도를, 리얼타임 처리가 필요한 태스크보다 내려서 스케쥴링함으로써, 남은 시간에 처리를 하게 할 수 있도록 하여도 된다. 예를 들면, REQ_REAL이 0(리얼타임 처리가 불요)으로 설정되어 있는 어플리케이션에 대응하는 논리 쓰레드를, 최초는 리얼타임 처리가 필요한 논리 쓰레드와 마찬가지의 조건으로 할당 처리를 행하고, 할당이 실패한 경우에는, 처리에 필요한 처리 사이클수를 1/M(규정 시간을 M배)로 하여, 재차 할당 처리를 실행하도록 하여도 된다.
이러한 처리에 의해, 소비 전력량을 억제하면서, 요구된 기능을 제공할 수 있는 정보 처리 장치를 실현할 수 있다. 특히, CE(Consumer electronics) 기기에서는, 소비 전력량의 삭감이, 상품으로서의 경쟁력으로서의 큰 포인트로 되기 때문에, 본 발명을 적용하는 장점은 매우 크다.
전술한 일련의 처리는, 소프트웨어에 의해 실행할 수도 있다. 그 소프트웨어는, 그 소프트웨어를 구성하는 프로그램이, 전용 하드웨어에 조립되어 있는 컴퓨터, 또는 각종 프로그램을 인스톨함으로써, 각종 기능을 실행하는 것이 가능한, 예를 들면 범용의 퍼스널 컴퓨터 등에, 기록 매체로부터 인스톨된다.
이 기록 매체는, 도 1에 도시한 바와 같이 컴퓨터와는 별도로, 유저에게 프 로그램을 제공하기 위해 배포되는, 프로그램이 기록되어 있는 자기 디스크(61)(플렉시블 디스크를 포함함), 광 디스크(62)(CD-ROM(Compact Disk-Read Only Memory), DVD(Digital Versatile Disk)를 포함함), 광 자기 디스크(63)(MD(Mini-Disk)(상표)를 포함함), 혹은 반도체 메모리(64) 등으로 이루어지는 패키지 미디어 등에 의해 구성된다.
또한, 본 명세서에서, 기록 매체에 기록되는 프로그램을 기술하는 단계는, 기재된 순서를 따라 시계열적으로 행해지는 처리는 물론, 반드시 시계열적으로 처리되지 않아도, 병렬적 혹은 개별로 실행되는 처리를 포함하는 것이다.
또, 본 명세서에서, 시스템이란, 복수의 장치에 의해 구성되는 장치 전체를 나타내는 것이다.
본 발명에 따르면, 분산 처리를 실행시킬 수 있다. 특히, 제1 정보 처리 수단 및 제2 정보 처리 수단에서, 전체 처리 능력에 대한 사용 중인 처리 능력의 비율이 1 이상으로 되지 않도록, 처리 단위에 대응하는 분산 처리의 할당이 제어되므로, 논리 쓰레드로서 동작하고 있는 기능을 정상적인 상태로 유지하여, 신뢰성이 높은 정보 처리를 실행시키도록 할 수 있다.

Claims (7)

  1. 제1 프로세서와,
    복수의 제2 프로세서
    를 구비하고,
    상기 제1 프로세서는,
    어플리케이션 프로그램의 실행을 제어하는 어플리케이션 프로그램 실행 제어 수단과,
    상기 제2 프로세서의 동작에 관한 동작 정보를 취득하는 동작 정보 취득 수단과,
    상기 어플리케이션 프로그램 실행 제어 수단에 의해 상기 어플리케이션 프로그램이 실행 제어될 때에, 상기 어플리케이션 프로그램의 실행에 관한 복수의 처리를 통합하여 하나의 기능을 제공하는 처리 단위로 하고,
    상기 처리 단위에 대응하는 상기 기능을 제공하기 위해, 복수의 상기 제2 프로세서에 처리를 할당하여 실행시키는 분산 처리를 제어하는 분산 처리 제어 수단과,
    상기 제2 프로세서가 동작 가능한 최대 동작 클럭수에 대한, 현재의 동작 클럭수의 비인 클럭수비를 설정하는, 클럭수비 설정 수단
    을 구비하고,
    상기 동작 정보는, 상기 최대 동작 클럭수, 상기 현재 동작 클럭수, 규정 시 간 내에 상기 제2 프로세서에 할당된 처리에 요하는 사이클수를 포함하고,
    상기 분산 처리 제어 수단은, 상기 동작 정보에 기초하여,
    상기 처리 단위에 대응하는 상기 분산 처리를 제어하는
    것을 특징으로 하는 정보 처리 장치.
  2. 제1항에 있어서,
    상기 클럭수비 설정 수단은, 모든 상기 제2 프로세서에 대하여, 상기 클럭수 비가 공통의 값으로 되도록 클럭수의 비를 설정하는 것을 특징으로 하는 정보 처리 장치.
  3. 제1항에 있어서,
    상기 클럭수비 설정 수단은, 복수의 상기 제2 프로세서의 각각에 독립적으로 상기 클럭수비를 설정하는 것을 특징으로 하는 정보 처리 장치.
  4. 제1항에 있어서,
    상기 분산 처리 제어 수단은, 상기 현재 동작 클럭수, 상기 규정 시간 내에 상기 제2 프로세서에 할당된 처리에 요하는 사이클수에 기초하여, 프로세서의 사용율을 산출하고, 상기 클럭수비에 대하여, 상기 프로세서 사용율의 비율이 낮은 상기 제2 프로세서에 대하여, 우선적으로, 상기 처리 단위에 대응하는 상기 분산 처리가 할당되도록 제어하는 것을 특징으로 하는 정보 처리 장치.
  5. 제4항에 있어서,
    상기 클럭수비 설정 수단은, 상기 프로세서 사용율에 기초하여, 상기 클럭수비를 갱신하는 것을 특징으로 하는 정보 처리 장치.
  6. 제1 프로세서와,
    복수의 제2 프로세서
    를 구비한 정보 처리 장치의 정보 처리 방법으로서,
    상기 제1 프로세서에 의한 어플리케이션 프로그램의 실행 제어에 의해, 복수의 상기 제2 프로세서에 할당되는 복수의 처리를 통합하여 하나의 기능을 제공하는 처리 단위로 하고, 상기 처리 단위에 대응하는 상기 기능을 제공하기 위해, 복수의 상기 제2 프로세서에 처리를 할당하여 실행시키는 분산 처리의 개시를 요구하는 분산 처리 개시 요구 단계와,
    상기 제2 프로세서가 동작 가능한 최대 동작 클럭수, 상기 제2 프로세서의 현재의 동작 클럭수, 규정 시간 내에 상기 제2 프로세서에 할당된 처리에 요하는 사이클수를 포함하는, 상기 제2 프로세서의 동작에 관한 동작 정보를 취득하는 동작 정보 취득 단계와,
    상기 제2 프로세서의 동작에 관한 동작 정보에 기초하여, 상기 처리 단위에 대응하는 상기 분산 처리의 할당을 제어하는 할당 제어 단계와,
    상기 제2 프로세서가 동작 가능한 최대 동작 클럭수에 대한, 현재의 동작 클 럭수의 비인 클럭수비를 설정하는, 클럭수비 설정 단계
    를 포함하는 것을 특징으로 하는 정보 처리 방법.
  7. 제1 프로세서와,
    복수의 제2 프로세서
    를 이용한 분산 처리를 제어하는 컴퓨터가 실행 가능한 프로그램으로서,
    상기 제1 프로세서에 의한 어플리케이션 프로그램의 실행 제어에 의해, 복수의 상기 제2 프로세서에 할당되는 복수의 처리를 통합하여 하나의 기능을 제공하는 처리 단위로 하고, 상기 처리 단위에 대응하는 상기 기능을 제공하기 위해, 복수의 상기 제2 프로세서에 처리를 할당하여 실행시키는 분산 처리의 개시를 요구하는 분산 처리 개시 요구 단계와,
    상기 제2 프로세서가 동작 가능한 최대 동작 클럭수, 상기 제2 프로세서의 현재의 동작 클럭수, 규정 시간 내에 상기 제2 프로세서에 할당된 처리에 요하는 사이클수를 포함하는, 상기 제2 프로세서의 동작에 관한 동작 정보를 취득하는 동작 정보 취득 단계와,
    상기 제2 프로세서의 동작에 관한 동작 정보에 기초하여, 상기 처리 단위에 대응하는 상기 분산 처리의 할당을 제어하는 할당 제어 단계와,
    상기 제2 프로세서가 동작 가능한 최대 동작 클럭수에 대한, 현재의 동작 클럭수의 비인 클럭수비를 설정하는, 클럭수비 설정 단계
    를 포함하는 것을 특징으로 하는 처리를 컴퓨터에 실행시키기 위한 프로그 램.
KR1020050065693A 2004-07-20 2005-07-20 정보 처리 장치, 정보 처리 방법 및 프로그램 KR20060053929A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2004-00211420 2004-07-20
JP2004211420A JP2006031525A (ja) 2004-07-20 2004-07-20 情報処理装置および情報処理方法、並びに、プログラム

Publications (1)

Publication Number Publication Date
KR20060053929A true KR20060053929A (ko) 2006-05-22

Family

ID=35262068

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050065693A KR20060053929A (ko) 2004-07-20 2005-07-20 정보 처리 장치, 정보 처리 방법 및 프로그램

Country Status (6)

Country Link
US (1) US20060031695A1 (ko)
EP (1) EP1630672A3 (ko)
JP (1) JP2006031525A (ko)
KR (1) KR20060053929A (ko)
CN (1) CN100527119C (ko)
TW (1) TWI289766B (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7694107B2 (en) * 2005-08-18 2010-04-06 Hewlett-Packard Development Company, L.P. Dynamic performance ratio proportionate distribution of threads with evenly divided workload by homogeneous algorithm to heterogeneous computing units
JP5088365B2 (ja) 2007-03-23 2012-12-05 富士通株式会社 電子機器および負荷分散プログラム
US8789052B2 (en) * 2007-03-28 2014-07-22 BlackBery Limited System and method for controlling processor usage according to user input
US20080320088A1 (en) * 2007-06-19 2008-12-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Helping valuable message content pass apparent message filtering
WO2009049325A1 (en) * 2007-10-12 2009-04-16 Pie Digital, Inc. System and method for automatic configuration and management of home network devices
WO2009057208A1 (ja) * 2007-10-31 2009-05-07 Fujitsu Limited 資源割当プログラム、管理ノード、資源割当方法、および並列計算機システム
US20090193230A1 (en) * 2008-01-30 2009-07-30 Ralf Findeisen Computer system including a main processor and a bound security coprocessor
JP5264297B2 (ja) * 2008-06-03 2013-08-14 キヤノン株式会社 ジョブ処理方法及び画像処理システム並びに画像処理装置
JP5268434B2 (ja) * 2008-06-03 2013-08-21 キヤノン株式会社 ジョブ処理方法及び画像処理システム並びに画像処理装置
US8137074B2 (en) * 2008-08-21 2012-03-20 General Electric Company Wind turbine lightning protection system
JP5880962B2 (ja) * 2012-06-12 2016-03-09 ソニー株式会社 電子装置、計算方法、プログラム、および情報処理装置
JP6772007B2 (ja) * 2016-09-12 2020-10-21 キヤノン株式会社 情報処理装置及びその制御方法、コンピュータプログラム
US11281214B2 (en) 2018-12-19 2022-03-22 Zoox, Inc. Safe system operation using CPU usage information
WO2020132305A1 (en) * 2018-12-19 2020-06-25 Zoox, Inc. Safe system operation using latency determinations and cpu usage determinations
CN109739797B (zh) * 2018-12-28 2021-07-16 联想(北京)有限公司 一种电子设备
CN111324197B (zh) * 2020-02-07 2023-03-07 华侨大学 一种基于三速度周期任务的降低系统能耗的方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1159021A (zh) * 1996-03-06 1997-09-10 三菱电机株式会社 系统时钟确定装置
US6141762A (en) * 1998-08-03 2000-10-31 Nicol; Christopher J. Power reduction in a multiprocessor digital signal processor based on processor load
JP2002215599A (ja) * 2001-01-18 2002-08-02 Mitsubishi Electric Corp マルチプロセッサシステムおよびその制御方法
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US6809734B2 (en) 2001-03-22 2004-10-26 Sony Computer Entertainment Inc. Resource dedication system and method for a computer architecture for broadband networks
US7093104B2 (en) 2001-03-22 2006-08-15 Sony Computer Entertainment Inc. Processing modules for computer architecture for broadband networks
US6526491B2 (en) 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
US6826662B2 (en) 2001-03-22 2004-11-30 Sony Computer Entertainment Inc. System and method for data synchronization for a computer architecture for broadband networks

Also Published As

Publication number Publication date
TWI289766B (en) 2007-11-11
EP1630672A2 (en) 2006-03-01
TW200606654A (en) 2006-02-16
EP1630672A3 (en) 2006-05-03
CN1734438A (zh) 2006-02-15
CN100527119C (zh) 2009-08-12
JP2006031525A (ja) 2006-02-02
US20060031695A1 (en) 2006-02-09

Similar Documents

Publication Publication Date Title
KR20060053929A (ko) 정보 처리 장치, 정보 처리 방법 및 프로그램
CN101276293B (zh) 在逻辑分区之间平衡物理系统资源访问的方法和系统
US6438553B1 (en) Distributed job integrated management system and method
US8261281B2 (en) Optimizing allocation of resources on partitions of a data processing system
US5748468A (en) Prioritized co-processor resource manager and method
EP1433062B1 (en) Apparatus and method for managing resources for resource constrained devices
JP3882930B2 (ja) 共用リソースを使用するための仮想計算機の管理
US8141091B2 (en) Resource allocation in a NUMA architecture based on application specified resource and strength preferences for processor and memory resources
EP1089173B1 (en) Dynamic adjustment of the number of logical processors assigned to a logical partition
CN100487659C (zh) 用于优化分段资源分配的方法和设备
JP4084765B2 (ja) コンピューティングリソースを自動的に割り振る方法
US8086880B2 (en) Information processing apparatus, information processing method, and computer program
EP0426354B1 (en) Method for channel path load balancing and data processing system employing same
US7752624B2 (en) System and method for associating workload management definitions with computing containers
US9465663B2 (en) Allocating resources in a compute farm to increase resource utilization by using a priority-based allocation layer to allocate job slots to projects
US20030056091A1 (en) Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations
US7979864B2 (en) Apparatus for setting used license of executing job into unused license state and allocating the set unused license to a to be executed job based on priority
US20090165014A1 (en) Method and apparatus for migrating task in multicore platform
JP2007512632A (ja) アクティビティ情報を用いての仮想マシンの管理
JP2012252712A (ja) 再構成可能なプログラマブルロジックデバイスコンピュータシステム
US20050050546A1 (en) System and method for dynamic allocation of computers in reponse to requests
US20110161969A1 (en) Consolidating CPU - Cache - Memory Access Usage Metrics
US20030135615A1 (en) Method for rebalancing resources within a global resource namespace
JPH02118842A (ja) 多使用者コンピュータ用ダイナミック負荷平衡
CN117851026A (zh) 资源调度方法和装置、筛选单元、电子设备及存储介质

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid