KR20050000488A - 정보처리시스템 및 메모리 관리방법 - Google Patents

정보처리시스템 및 메모리 관리방법 Download PDF

Info

Publication number
KR20050000488A
KR20050000488A KR1020040013136A KR20040013136A KR20050000488A KR 20050000488 A KR20050000488 A KR 20050000488A KR 1020040013136 A KR1020040013136 A KR 1020040013136A KR 20040013136 A KR20040013136 A KR 20040013136A KR 20050000488 A KR20050000488 A KR 20050000488A
Authority
KR
South Korea
Prior art keywords
thread
vpu
memory
local
processor
Prior art date
Application number
KR1020040013136A
Other languages
English (en)
Other versions
KR100608220B1 (ko
Inventor
다츠노리 가나이
세이지 마에다
겐이치로 요시이
Original Assignee
가부시끼가이샤 도시바
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가부시끼가이샤 도시바 filed Critical 가부시끼가이샤 도시바
Publication of KR20050000488A publication Critical patent/KR20050000488A/ko
Application granted granted Critical
Publication of KR100608220B1 publication Critical patent/KR100608220B1/ko

Links

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
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

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)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명에서는, 복수의 프로세서를 이용하여 복수의 스레드를 효율좋게 병렬로 실행하는 것이 가능한 시스템을 실현한다.
정보처리시스템에 있어서는, 복수의 프로세서(LS0, LS1, LS2)에 로컬메모리(LS0, LS1, LS2)가 각각 설치되어 있기 때문에, 각 스레드는 공유메모리를 억세스하지 않아도 프로세서내의 로컬메모리를 억세스하는 것만으로 프로그램을 실행할 수 있다. 또, 상호작용을 행하는 상대 스레드가 실행되는 프로세서에 따라 실효 어드레스(EA)공간에 매핑되는 상대 스레드에 대응하는 프로세서의 로컬메모리가 자동적으로 변경되기 때문에, 각 스레드는 상대 스레드가 디스패치되는 프로세서를 의식하지 않고, 상대 스레드와의 상호작용을 효율좋게 행할 수 있다. 따라서, 복수의 스레드를 효율좋게 병렬로 실행하는 것이 가능해진다.

Description

정보처리시스템 및 메모리 관리방법{INFORMATION PROCESSING SYSTEM AND MEMORY MANAGEMENT METHOD}
본 발명은 복수의 프로세서를 포함하는 정보처리시스템 및 동 시스템에서 이용되는 메모리 관리방법에 관한 것이다.
종래부터 서버컴퓨터와 같은 계산기 시스템에 있어서는, 그 연산처리능력의 향상을 도모하기 위해 멀티프로세서, 병렬프로세서와 같은 시스템 아키텍처가 이용되고 있다. 멀티프로세서 및 병렬프로세서 어느 쪽도 복수의 프로세서 유닛을 이용함으로써 연산처리의 병렬화를 실현하고 있다.
복수의 프로세서 유닛을 갖춘 시스템으로서는, 예컨대 1대의 고속 CPU, 복수대의 저속 CPU 및 공유메모리를 갖춘 시스템이 알려져 있다(예컨대, 특허문헌1 참조). 이 시스템에 있어서는, 고속 CPU 및 복수대의 저속 CPU에 대한 처리프로그램의 프로세스군의 할당은 프로세스군의 병렬동작도의 대소 및 처리시간의 대소에 따라 행해진다.
그런데, 최근에는 계산기 시스템뿐만 아니라, 예컨대 AV(오디오ㆍ비디오) 데이터와 같은 대용량의 데이터를 실시간으로 처리하는 짜넣은 기기에 있어서도 그연산처리능력의 향상을 위해 멀티프로세서, 병렬프로세서와 같은 시스템 아키텍처의 도입이 요구되고 있다.
[특허문헌1]
제10-143380호 공보
그러나, 복수의 프로세서를 포함하는 시스템 아키텍처를 전제로 한 실시간 처리시스템의 보고는 거의 이루어지고 있지 않는 것이 현상(現狀)이다.
실시간 처리시스템에 있어서는, 어떤 허용시간의 제한내에 각각의 처리를 완료하는 것이 요구된다. 그러나, 멀티프로세서, 병렬프로세서와 같은 시스템 아키텍처를 실시간 처리시스템에 적용한 경우에 있어서는, 공유메모리에 대한 억세스의 경합, 메모리버스의 밴드폭의 제약 등에 의해 복수의 프로세서 각각의 성능을 충분히 활용할 수 없게 된다는 문제가 발생한다. 또, 서로 다른 프로세서에 의해 실행되는 스레드간에서 데이터를 주고받기 위한 통신도 공유메모리상의 버퍼를 매개로 행해지기 때문에, 빈번하게 상호작용을 행하는 스레드간에 있어서는 그 통신에 관한 레이턴시가 큰 문제가 된다.
본 발명은 상술한 사정을 고려하여 이루어진 것으로, 복수의 프로세서를 이용하여 복수의 스레드를 효율좋게 병렬로 실행하는 것이 가능한 정보처리시스템 및 메모리 관리방법을 제공하는 것을 목적으로 한다.
도 1은 본 발명의 1실시형태에 따른 실시간 처리시스템을 구성하는 계산기 시스템의 예를 나타낸 블록도이고,
도 2는 동 실시형태의 실시간 처리시스템에 설치된 MPU 및 VPU 각각의 구성을 나타낸 블록도,
도 3은 동 실시형태의 실시간 처리시스템에서 이용되는 가상 어드레스 변환기구의 예를 나타낸 도면,
도 4는 동 실시형태의 실시간 처리시스템에서의 실어드레스공간에 매핑되는 데이터의 예를 나타낸 도면,
도 5는 동 실시형태의 실시간 처리시스템에서의 실효 어드레스공간, 가상 어드레스공간, 실어드레스공간을 설명하기 위한 도면,
도 6은 디지털 텔레비전 방송의 수신기의 구성을 나타낸 블록도,
도 7은 동 실시형태의 실시간 처리시스템에 의해 실행되는 프로그램 모듈의 구성의 예를 나타낸 도면,
도 8은 도 7의 프로그램 모듈내에 포함되는 구성기술의 예를 나타낸 도면,
도 9는 도 7의 프로그램 모듈에 대응하는 프로그램간의 데이터의 흐름을 나타낸 도면,
도 10은 도 7의 프로그램 모듈이 2개의 VPU에 의해 병렬로 실행되는 상태를 나타낸 도면,
도 11은 도 7의 프로그램 모듈이 2개의 VPU에 의해 파이프라인형식으로 실행되는 상태를 나타낸 도면,
도 12는 동 실시형태의 실시간 처리시스템에서의 오퍼레이팅 시스템의 실장형태의 예를 나타낸 도면,
도 13은 동 실시형태의 실시간 처리시스템에서의 오퍼레이팅 시스템의 실장형태의 다른 예를 나타낸 도면,
도 14는 동 실시형태의 실시간 처리시스템에서의 가상 계산기 OS와 게스트 OS의 관계를 나타낸 도면,
도 15는 동 실시형태의 실시간 처리시스템에 있어서 복수의 게스트 OS에 시분할로 자원이 할당되는 상태를 나타낸 도면,
도 16은 동 실시형태의 실시간 처리시스템에서의 어떤 특정의 게스트 OS에 의해 특정의 자원이 전유되는 상태를 나타낸 도면,
도 17은 동 실시형태의 실시간 처리시스템에 있어서 스케줄러로서 이용되는 VPU 실행환경을 나타낸 도면,
도 18은 동 실시형태의 실시간 처리시스템에서 이용되는 가상 계산기 OS에 VPU 실행환경을 실장한 예를 나타낸 도면,
도 19는 동 실시형태의 실시간 처리시스템에서 이용되는 하나의 게스트 OS로서 VPU 실행환경을 실장하는 예를 나타낸 도면,
도 20은 동 실시형태의 실시간 처리시스템에서 이용되는 복수의 게스트 OS 각각에 VPU 실행환경을 실장하는 예를 나타낸 도면,
도 21은 동 실시형태의 실시간 처리시스템에서 이용되는 하나의 게스트 OS에 VPU 실행환경을 실장하는 예를 나타낸 도면,
도 22는 동 실시형태의 실시간 처리시스템에서 이용되는 MPU측 VPU 실행환경과 VPU측 VPU 실행환경을 설명하기 위한 도면,
도 23은 동 실시형태의 실시간 처리시스템에서 이용되는 VPU측 VPU 실행환경에 의해 실행되는 처리수순을 나타낸 플로우차트,
도 24는 동 실시형태의 실시간 처리시스템에서 이용되는 MPU측 VPU 실행환경에 의해 실행되는 처리수순을 나타낸 플로우차트,
도 25는 동 실시형태의 실시간 처리시스템에 있어서 밀결합 스레드 그룹에 속하는 스레드군이 각각 다른 프로세서에 의해 동시에 실행되는 상태를 나타낸 도면,
도 26은 동 실시형태의 실시간 처리시스템에서의 밀결합 스레드간의 상호작용을 설명하기 위한 도면,
도 27은 동 실시형태의 실시간 처리시스템에 있어서 각 밀결합 스레드의 실효 어드레스공간에 상대 스레드가 실행되는 VPU의 로컬기억장치가 매핑되는 상태를 나타낸 도면,
도 28은 동 실시형태의 실시간 처리시스템에서의 소결합 스레드 그룹에 속하는 스레드군에 대한 프로세서의 할당을 설명하기 위한 도면,
도 29는 동 실시형태의 실시간 처리시스템에서의 소결합 스레드간의 상호작용을 설명하기 위한 도면,
도 30은 동 실시형태의 실시간 처리시스템에서의 프로세스와 스레드의 관계를 설명하기 위한 도면,
도 31은 동 실시형태의 실시간 처리시스템에서의 스케줄링 처리의 수순을 나타낸 플로우차트,
도 32는 동 실시형태의 실시간 처리시스템에서의 로컬기억장치의 매핑에 관한 제1문제를 설명하기 위한 도면,
도 33은 동 실시형태의 실시간 처리시스템에서의 물리 VPU와 논리 VPU의 관계를 나타낸 도면,
도 34는 동 실시형태의 실시간 처리시스템에서의 로컬기억장치의 매핑에 관한 제2문제를 설명하기 위한 도면,
도 35는 동 실시형태의 실시간 처리시스템에서의 실효 어드레스공간 공유모델을 나타낸 도면,
도 36은 동 실시형태의 실시간 처리시스템에서의 가상 어드레스공간 공유모델을 나타낸 도면,
도 37은 동 실시형태의 실시간 처리시스템에서의 비공유모델을 나타낸 도면,
도 38은 동 실시형태의 실시간 처리시스템에서의 로컬기억장치의 매핑변경을 설명하기 위한 제1도,
도 39는 동 실시형태의 실시간 처리시스템에서의 로컬기억장치의 매핑변경을 설명하기 위한 제2도,
도 40은 동 실시형태의 실시간 처리시스템에서의 로컬기억장치의 매핑변경을 설명하기 위한 제3도,
도 41은 동 실시형태의 실시간 처리시스템에서의 로컬기억장치의 매핑변경을 설명하기 위한 제4도,
도 42는 동 실시형태의 실시간 처리시스템에서의 로컬기억장치의 매핑변경을 설명하기 위한 제5도,
도 43은 동 실시형태의 실시간 처리시스템에 있어서 로컬기억장치의 매핑변경을 행하기 위해 실행되는 어드레스 관리처리의 수순을 나타낸 플로우차트,
도 44는 동 실시형태의 실시간 처리시스템에 있어서 실행되는 로컬기억장치와 메모리 사이의 매핑변경을 설명하기 위한 도면,
도 45는 동 실시형태의 실시간 처리시스템에 있어서 실행되는 로컬기억장치와 메모리 사이의 매핑변경처리의 수순을 나타낸 플로우차트이다.
<도면부호의 설명>
11 -- MPU(Master Processing Unit),
12 -- VPU(Versatile Processing Unit),
14 -- 메인메모리, 21 -- 처리유닛,
22 -- 메모리 관리유닛, 31 -- 처리유닛,
32 -- 로컬기억장치, 33 -- 메모리 콘트롤러,
50 -- 세그먼트 테이블, 60 -- 페이지 테이블,
100 -- 프로그램 모듈, 111~116 -- 프로그램,
117 -- 구성기술, 331 -- 어드레스 변환 유닛,
401 -- VPU 실행환경.
상술한 과제를 해결하기 위해, 본 발명의 정보처리시스템은 제1로컬메모리를갖춘 제1프로세서와, 제2로컬메모리를 갖춘 제2프로세서, 제3로컬메모리를 갖춘 제3프로세서, 상기 제1프로세서에 의해 실행되는 제1스레드의 실효 어드레스 공간의 일부에 상기 제1스레드와의 상호작용을 행하는 제2스레드가 실행되는 상기 제2 및 제3프로세서중 한쪽에 대응하는 상기 제2 및 제3로컬메모리중 한쪽을 매핑하는 수단 및, 상기 제2스레드가 실행되는 프로세서가 상기 제2 및 제3프로세서중 한쪽으로부터 다른쪽 프로세서로 변경된 경우, 상기 제1스레드의 실효 어드레스 공간의 일부에 매핑되는 로컬메모리를 상기 제2 및 제3로컬메모리중 한쪽으로부터 다른쪽 로컬메모리로 변경하는 수단을 구비한 것을 특징으로 한다.
이 정보처리시스템에 있어서는, 각 프로세서에 로컬메모리가 설치되어 있기 때문에, 각 스레드는 공유메모리를 억세스하지 않아도 프로세서내의 로컬메모리를 억세스하는 것만으로 프로그램을 실행할 수 있다. 또, 상호작용을 행하는 상대 스레드가 실행되는 프로세서에 따라 실효 어드레스공간에 매핑되는 상대 스레드에 대응하는 프로세서의 로컬메모리가 자동적으로 변경되기 때문에, 각 스레드는 상대 스레드가 디스패치되는 프로세서를 의식하지 않고, 상대 스레드와의 상호작용을 효율좋게 행할 수 있다. 따라서, 복수의 스레드를 효율좋게 병렬로 실행하는 것이 가능해진다.
(발명의 실시형태)
이하, 도면을 참조하여 본 발명의 실시형태를 설명한다.
도 1은 본 발명의 1실시형태에 따른 실시간 처리시스템을 실현하기 위한 계산기 시스템의 구성례를 나타낸다. 이 계산기 시스템은 요구되는 각종 처리를 그시간적인 제약조건의 범위내에서 실행하는 정보처리시스템으로, 범용계산기로서 이용할 수 있다는 것 외에 실시간성이 요구되는 처리를 실행하기 위한 각종 전자기기용의 매립 시스템으로서 이용할 수 있다. 도 1에 나타낸 바와 같이, 이 계산기 시스템에 있어서는 마스터 프로세서 유닛(11; Master Processing Unit), 복수의 버서타일 프로세서 유닛(VPU(12); Versatile Processing Unit), 메인메모리(14), 입출력 제어장치(15)가 접속장치(13)에 의해 서로 접속되어 있다. 접속장치(13)는, 예컨대 크로스바 스위치와 같은 상호결합망, 혹은 버스에 의해 구성되어 있다. 링모양의 버스구조를 이용할 수도 있다. MPU(11)는 계산기 시스템의 동작을 제어하는 메인 프로세서이다. 오퍼레이팅 시스템(OS: Operating System)은 주로 MPU(11)에 의해 실행된다. OS 일부의 기능은 VPU(12)나 입출력 제어장치(15)에서 분담하여 실행할 수도 있다. 각 VPU(12)는 MPU(11)의 관리하에서 각종 처리를 실행하는 프로세서이다. MPU(11)는 복수의 VPU(12)에 처리를 분배하여 병렬로 실행시키기 위한 제어를 행한다. 이에 따라 고속으로 효율좋은 처리의 실행을 행할 수 있다. 메인메모리(14)는 MPU(11), 복수의 VPU(12) 및 입출력 제어장치(15)에 의해 공유되는 기억장치(공유메모리)이다. OS 및 어플리케이션 프로그램은 메인메모리(14)에 격납된다. 입출력 제어장치(15)에는 1개 혹은 복수의 입출력 디바이스(입출력장치; 16)가 접속된다. 입출력 제어장치(15)는 브리지(bridge)라고도 불리워진다.
접속장치(15)는 데이터 전송레이트를 보증하는 QoS 기능을 갖는다. 이 기능은 접속장치(15)를 매개로 한 데이터 전송을 예약된 밴드폭(전송속도)으로 실행함으로써 실현된다. QoS 기능은, 예컨대 어떤 VPU(12)로부터 메모리(14)에 5Mbps로라이트 데이터를 송신하는 경우, 혹은 어떤 VPU(12)와 다른 VPU(12) 사이에서 100Mbps로 데이터 전송하는 경우에 이용된다. VPU(12)는 접속장치(13)에 대해 밴드폭(전송속도)을 지정(예약)한다. 접속장치(13)는 지정된 밴드폭을 요구한 VPU(12)에 대해 우선적으로 할당한다. 어떤 VPU(12)의 데이터전송에 대해 밴드폭이 예약되었다면 그 VPU(12)에 의한 데이터전송중에 다른 VPU(12), MPU(11) 혹은 입출력 제어장치(15)가 대량의 데이터전송을 행해도 예약된 밴드폭은 확보된다. 이 기능은 특히 실시간 처리를 행하는 계산기에 있어서 중요한 기능이다.
도 1의 구성에서는 MPU(11)가 1개, VPU(12)가 4개, 메모리(14)가 1개, 입출력 제어장치가 1개이지만, VPU(12)의 갯수는 제한되지 않는다. 또, MPU(11)를 갖추지 않은 구성도 가능하다. 이 경우, MPU(11)가 행할 처리는 어떤 1개의 VPU(12)가 담당한다. 즉, 가상적인 MPU(11)의 역할을 VPU가 겸한다.
도 2에는 MPU(11)와 각 VPU(12)의 구성을 나타낸다. MPU(11)는 처리유닛 (21) 및 메모리 관리유닛(22)을 갖추고 있다. 처리유닛(21)은 메모리 관리유닛 (22)을 통해 메모리(14)를 억세스한다. 메모리 관리유닛(22)은 가상기억관리와 메모리 관리유닛(22)내의 캐쉬메모리의 관리를 행하는 유닛이다. 각 VPU(12)는 처리유닛(31), 로컬기억장치(로컬메모리; 32) 및 메모리 콘트롤러(33)를 구비하고 있다. 각 VPU(12)의 처리유닛(31)은 그 VPU 내부의 로컬기억장치(32)를 직접억세스할 수 있다. 메모리 콘트롤러(33)는 로컬기억장치(32)와 메모리(14)간의 데이터전송을 행하는 DMA 콘트롤러의 역할을 갖는다. 이 메모리 콘트롤러(33)는 접속장치(14)의 QoS 기능을 이용할 수 있도록 구성되어 있고, 밴드폭을 예약하는기능 및 예약한 밴드폭으로 데이터 입출력을 행하는 기능을 갖추고 있다. 또, 메모리 콘트롤러(33)는 MPU(11)의 메모리 관리유닛(22)과 마찬가지의 가상기억 관리기능을 갖는다. VPU(12)의 처리유닛(31)은 로컬기억장치(32)를 주기억으로서 사용한다. 처리유닛(31)은 메모리(14)에 대해 직접적으로 억세스하는 것은 아니고, 메모리 콘트롤러(33)에 지시하여 메모리(14)의 내용을 로컬기억장치(32)로 전송하여 읽거나 로컬기억장치(32)의 내용을 메모리(14)에 기록하거나 한다.
MPU(11)의 메모리 관리유닛(22) 및 VPU(12)의 메모리 콘트롤러(33) 각각에 의해 실행되는 가상기억관리는, 예컨대 도 3과 같이 실시할 수 있다. MPU(11)의 처리유닛(21) 혹은 VPU(12)의 메모리 콘트롤러(33)에서 본 어드레스는 도 3의 윗부분에 나타낸 바와 같은 64비트의 어드레스이다. 이 64비트의 어드레스는 상위 36비트가 세그먼트 번호, 중앙의 16비트가 페이지번호, 하위 12비트가 페이지 오프셋이다. 이 어드레스로부터 실제로 접속장치(13)를 통해 억세스하는 실어드레스(RA; Real Address) 공간으로의 변환은 세그먼트 테이블(50) 및 페이지 테이블(60)을 이용하여 실행된다. 세그먼트 테이블(50) 및 페이지 테이블(60)은 메모리 관리유닛(22) 및 메모리 콘트롤러(33)에 각각 설치되어 있다.
MPU(11) 및 각 VPU(12)에서 본 실어드레스(RA) 공간에는 도 4에 나타낸 바와 같이, 예컨대 이하와 같은 데이터가 매핑되어 있다.
1. 메모리(주기억장치)
2. MPU(11)의 각종 제어레지스터
3. 각 VPU(12)의 각종 제어레지스터
4. 각 VPU(12)의 로컬기억장치
5. 각종 입출력 디바이스(입출력장치)의 제어레지스터(입출력 제어장치의 제어레지스터도 포함)
MPU(11) 및 각 VPU(12)는 실어드레스 공간의 해당하는 어드레스에 억세스함으로써, 1~5의 각 데이터를 읽고 쓸 수 있다. 특히, 실어드레스 공간에 억세스함으로써, 어떤 MPU(11)부터라도, 혹은 어떤 VPU(12)부터라도, 더욱이 입출력 제어장치(15)부터라도 임의의 VPU(12)의 로컬기억장치(32)에 억세스할 수 있는 것은 중요하다. 또, 세그먼트 테이블 혹은 페이지 테이블을 이용하여 VPU(12)의 로컬기억장치(32)의 내용이 자유롭게 읽고 쓰지 않도록 보호할 수도 있다.
MPU(11) 혹은 VPU(12)에서 본 어드레스 공간은 도 3의 가상기억 메커니즘을 이용하여, 예컨대 도 5에 나타낸 바와 같이 매핑된다. MPU(11) 혹은 VPU(12)상에서 실행하고 있는 프로그램으로부터 직접 볼 수 있는 것은 실효 어드레스(EA; Effective Address) 공간이다. EA는 세그먼트 테이블(50)에 의해 가상어드레스(VA; Virtual Address) 공간에 매핑된다. 더욱이, VA는 페이지 테이블(60)에 의해 실어드레스 공간에 매핑된다. 이 RA가 도 4에서 설명한 바와 같은 구조를 갖추고 있다.
MPU(11)는 제어레지스터 등의 하드웨어 기구에 의해, 예컨대 각 VPU(12)의 레지스터의 읽고 쓰기, 각 VPU(12)의 프로그램의 실행개시/정지 등의 각 VPU(12)의 관리를 행할 수 있다. 또, MPU(11)와 VPU(12)간, 혹은 어떤 VPU(12)와 다른 VPU(12)간의 통신이나 동기는 메일박스나 이벤트 플래그 등의 하드웨어 기구에 의해 행할 수 있다.
이 실시형태의 계산기 시스템은 종래 하드웨어에서 실현되고 있는 바와 같은 실시간성의 요구가 엄격한 기기의 동작을 소프트웨어를 이용하여 실현하는 것을 가능하게 한다. 예컨대, 어떤 VPU(12)가 어떤 하드웨어를 구성하는 어떤 몇개의 하드웨어 컴포넌트에 대응하는 연산처리를 실행하고, 그것과 병행하여 다른 VPU(12)가 다른 몇개의 하드웨어 컴포넌트에 대응하는 연산처리를 실행한다.
도 6은 디지털 텔레비전 방송의 수신기의 간략화한 하드웨어 구성을 나타내고 있다. 도 6에 있어서는, 수신한 방송신호는 DEMUX(디멀티플렉서)회로 (101)에 의해 음성데이터와 영상데이터와 자막데이터 각각에 대응하는 압축부호화된 데이터 스트림으로 분해된다. 압축부호화된 음성데이터 스트림은 A-DEC(음성디코더)회로(102)에 의해 디코드된다. 압축부호화된 영상데이터 스트림은 V-DEC(영상디코더)회로(103)에 의해 디코드된다. 디코드된 영상데이터 스트림은 PROG(프로그레시브 변환)회로(105)로 전송되고, 그 때 프로그레시브 영상신호로 변환하기 위한 프로그레시브 변환처리가 실시된다. 프로그레시브 변환된 영상데이터 스트림은 BLEND(화상합성)회로(106)로 전송된다. 자막데이터 스트림은 TEXT(자막처리)회로(104)에 의해 자막의 영상으로 변환된 후, BLEND회로 (106)로 전송된다. BLEND회로(106)는 PROG회로(105)로부터 전송되어 오는 영상과 TEXT회로(104)로부터 전송되어 오는 자막영상을 합성하여 영상 스트림으로서 출력한다. 이 일련의 처리가 영상의 프레임 레이트(예컨대, 1초동안 30콤마, 32콤마, 또는 60콤마)에 따라 반복실행된다.
도 6과 같은 하드웨어의 동작을 소프트웨어로 실행하기 위해, 본 실시형태에서는, 예컨대 도 7에 나타낸 바와 같이 도 6의 하드웨어의 동작을 소프트웨어로서 실현한 프로그램 모듈(100)을 준비한다. 이 프로그램 모듈(100)은 복수이 처리요소의 조합으로 구성되는 실시간 처리를 계산기 시스템에 실행시키기 위한 어플리케이션 프로그램으로, 멀티스레드 프로그래밍을 이용하여 기술되어 있다. 이 프로그램 모듈(100)은 도 6의 하드웨어 컴포넌트군에 대응하는 복수의 처리요소 각각에 대응한 수순을 기술한 복수의 프로그램(111~116)을 포함하고 있다. 즉, 프로그램 모듈(100)에는 DEMUX 프로그램(111), A-DEC 프로그램 (112), V-DEC 프로그램(113), TEXT 프로그램(114), PROG 프로그램(115) 및 BLEND 프로그램(116)이 포함되어 있다. DEMUX 프로그램(111), A-DEC 프로그램 (112), V-DEC 프로그램(113), TEXT 프로그램(114), PROG 프로그램(115) 및 BLEND 프로그램(116)은 각각 도 6의 DEMUX회로(101), A-DEC회로(102), V-DEC회로(103), TEXT회로(104), PROG회로(105) 및 BLEND회로(106)에 대응하는 처리를 실행하기 위한 프로그램으로, 각각 스레드로서 실행된다. 즉, 프로그램 모듈(100)의 실행시에는 DEMUX 프로그램(111), A-DEC 프로그램(112), V-DEC 프로그램(113), TEXT 프로그램(114), PROG 프로그램(115) 및 BLEND 프로그램(116) 각각에 대응하는 스레드가 생성되고, 생성된 스레드 각각이 1이상의 VPU(12)에 디스패치(dispatch)되어 실행된다. VPU(12)의 로컬기억장치(32)에는 그 VPU (12)에 디스패치된 스레드에 대응하는 프로그램이 로드되고, 스레드는 로컬기억장치(32)상의 프로그램을 실행한다. 디지털 텔레비전 방송의 수신기를 구성하는 하드웨어 모듈군 각각에 대응하는 프로그램(111~116)과, 구성기술(117)로불리는 데이터를 패키지화한 것이 디지털 텔레비전 방송의 수신기를 실현하는 프로그램 모듈(100)로 된다.
구성기술(117)은 프로그램 모듈(100)내의 각 프로그램(스레드)을 어떻게 조합하여 실행해야 할지를 나타내는 정보이고, 프로그램(111~116)간의 입출력 관계 및 각 프로그램의 처리에 필요한 코스트(시간) 등을 나타낸다. 도 8에는 구성기술(117)의 예를 나타내고 있다.
도 8의 구성기술(117)의 예에서는 스레드로서 동작하는 각 모듈(프로그램 모듈(100)내의 각 프로그램)에 대해 그 입력에 관련되는 모듈, 그 출력이 관련되는 모듈, 그 모듈의 실행에 요하는 코스트, 출력이 관련되는 모듈 각각으로의 출력에 필요한 버퍼사이즈가 기술되어 있다. 예컨대, 번호 ③의 V-DEC 프로그램은 번호 ①의 DEMUX 프로그램의 출력을 입력으로 하고, 그 출력은 번호 ⑤의 PROG 프로그램을 향하고 있고, 그 출력에 필요한 버퍼는 1MB로, 번호 ③의 V-DEC 프로그램 자체의 실행코스트는 50인 것을 나타내고 있다. 또한, 실행에 필요한 코스트는 실행에 필요한 시간(실행기간)이나 단계수 등을 단위로서 기술할 수 있다. 또, 어떤 가상적인 사양의 VPU로 실행한 경우의 시간을 단위로 하는 것도 가능하다. 계산기에 의해 VPU의 사양이나 처리성능이 다른 경우도 있기 때문에, 이와 같이 가상적인 단위를 설계하여 코스트를 표현하는 것은 바람직한 형태이다. 도 8에 나타낸 구성기술(117)에 따라 실행하는 경우의 프로그램간의 데이터의 흐름은 도 9와 같다.
더욱이, 구성기술(117)에는 프로그램(111~116) 각각에 대응하는 스레드간의 결합속성을 나타내는 결합속성 정보가 스레드 파라미터로서 기술되어 있다. 또한,스레드 파라미터는 프로그램(111~116)내에 코드로서 직접기술하는 것도 가능하다.
다음으로, 도 10, 도 11을 참조하여 프로그램(111~116)이 본 실시형태의 계산기 시스템에 의해 어떻게 실행되는지를 설명한다. 여기에서는, VPU0과 VPU1의 2개의 VPU(12)가 계산기 시스템에 설치되어 있는 구성을 상정한다. 매초 30 프레임으로 영상을 표시하는 경우의 각 VPU(12)에 대한 프로그램의 할당을 시간에 따라 기입한 것이 도 10이다. 여기에서는, 주기 1동안에 1프레임만큼의 음성과 영상을 출력하고 있다. 먼저, VPU0에서 DEMUX 프로그램이 처리를 행하고, 그 결과의 음성과 영상 및 자막의 데이터를 버퍼에 기입한다. 그 후, VPU1에서 A-DEC 프로그램과 TEXT 프로그램을 순차 실행하여 각각의 처리결과를 버퍼에 기입한다. VPU0에서는, 다음으로 V-DEC 프로그램이 영상데이터의 처리를 행하여 결과를 버퍼에 기입한다. VPU0에서는 이어서 PROG 프로그램이 처리를 행하여 결과를 버퍼에 기입한다. 이 시점에서, VPU1에서의 TEXT의 처리는 끝나고 있기 때문에, 최후의 BLEND 프로그램의 실행을 VPU0에서 행하여 최종적인 영상데이터를 작성한다. 이 처리의 흐름을 매주기 반복하도록 실행한다.
여기에서 설명한 바와 같이, 소망하는 동작을 지체없이 행하도록 각 VPU(12)상에서 언제, 어떤 프로그램을 실행할지를 결정하는 작업을 스케줄링이라고 부른다. 스케줄링을 행하는 모듈을 스케줄러라고 부른다. 본 실시형태에서는 프로그램 모듈(100)내에 포함되는 상술한 구성기술(117)에 기초하여 스케줄링이 행해진다.
도 11은 매초 60프레임으로 표시하는 경우의 실행상태를 나타내고 있다. 도10과 다른 점은 도 10에서는 매초 30프레임이었기 때문에, 1주기(1/30초)에서 1프레임만큼의 처리를 완료할 수 있었던 것에 대해 도 11에서는 매초 60프레임 처리할 필요가 있다는 점이다. 즉, 1주기(1/60초)에서는 1프레임만큼의 처리를 완료할 수 없기 때문에, 도 11에서는 복수(여기에서는 2) 주기에 걸친 소프트웨어 파이프라인 처리를 행하고 있다. 에컨대, 주기 1 이전에 입력된 신호에 대해 VPU0에서 DEMUX 처리와 V-DEC 처리를 행한다. 그 후, 주기 2에 있어서 VPU1에서 A-DEC, TEXT, PROG, BLEND의 각 처리를 행하여 최종적인 영상데이터를 출력한다. 주기 2에서는 VPU0은 다음의 프레임의 DEMUX와 V-DEC의 처리를 행하고 있다. 이와 같이, VPU0에 의한 DEMUX와 V-DEC의 처리와, VPU1에 의한 A-DEC, TEXT, PROG, BLEND의 처리를 2주기에 걸쳐 파이프라인적으로 실행한다.
또한, 도 7에 나타낸 프로그램 모듈(100)은 본 실시형태의 계산기 시스템을 짜넣은 기기내의 플래시 ROM이나 하드디스크에 미리 기록해 두어도 좋지만, 네트워크를 매개로 유통시키도록 해도 좋다. 이 경우, 본 실시형태의 계산기 시스템에 의해 실행되는 처리의 내용은 네트워크를 매개로 다운로드한 프로그램 모듈의 종류에 따라 결정된다. 따라서, 예컨대 본 실시형태의 계산기 시스템을 짜넣은 기기에 여러 전용 하드웨어 각각에 대응하는 실시간 처리를 실행시킬 수 있다. 예컨대, 새로운 콘텐츠의 재생에 필요한 새로운 플레이어 소프트웨어나 디코더 소프트웨어나 암호 소프트웨어 등을 본 실시형태의 계산기 시스템에서 실행가능한 프로그램 모듈로서 콘텐츠와 함께 배포함으로써, 본 실시형태의 계산기 시스템을 탑재한 기기라면 어떠한 기기라도 그 능력이 허용하는 범위내에서 그 콘텐츠를 재생할 수 있다.
(오퍼레이팅 시스템)
본 계산기 시스템에서는, 시스템내에 OS(오퍼레이팅 시스템)를 1개만 실장하는 경우에는, 도 12에 나타낸 바와 같이 그 OS(201)가 모든 실자원(예컨대, MPU(11), VPU(12), 메모리(14), 입출력 제어장치(15), 입출력장치(16) 등)을 관리한다.
한편, 가상계산기 방식을 이용하여 복수의 OS를 동시에 동작시키는 것도 가능하다. 이 경우에는 도 13에 나타낸 바와 같이, 먼저 가상계산기 OS(301)를 실장하고, 그것이 모든 실자원(예컨대, MPU(11), VPU(12), 메모리(14), 입출력 제어장치(15), 입출력장치(16) 등)을 관리한다. 가상계산기 OS(301)는 호스트 OS라고 불리워지는 경우도 있다. 더욱이, 가상계산기 OS(301)상에 1개 이상의 OS(게스트 OS라고도 칭한다)를 실장한다. 각 게스트 OS(302, 303)는 도 14에 나타낸 바와 같이, 가상계산기 OS(301)에 의해 제공되는 가상적인 계산기 자원으로 구성되는 계산기상에서 동작하고, 게스트 OS(302, 303)가 관리하는 어플리케이션 프로그램에 각종 서비스를 제공한다. 도 14의 예에서는 게스트 OS(302)는 1개의 MPU(11)와, 2개의 VPU(12) 및, 메모리(14)로 구성되는 계산기상에서 동작하고 있다고 생각하고 있고, 게스트 OS(303)는 1개의 MPU(11)와, 4개의 VPU(12) 및, 메모리(14)로 구성되는 계산기상에서 동작하고 있다고 생각하고 있다. 게스트 OS(302)에서 본 VPU(12)나, 게스트 OS(303)에서 본 VPU(12)가 실제로는 실자원의 어느 VPU(12)에 대응하고 있는지는 가상계산기 OS(301)가 관리하고 있다. 게스트 OS(302, 303)는 그 대응을의식할 필요는 없다.
가상계산기 OS(301)는 계산기 시스템 전체의 자원을 시분할로 각 게스트 OS(302, 303)에 할당하도록 게스트 OS(302, 303)의 스케줄링을 행한다. 예컨대, 게스트 OS(302)가 실시간 처리를 행하는 것으로 하자. 예컨대, 1초동안에 30회, 올바른 페이스로 처리를 행하고자 하는 경우에는 각 게스트 OS(302)는 그 파라미터를 가상계산기 OS(301)에 설정한다. 가상계산기 OS(301)는 1/30초에 1회, 확실하게 그 게스트 OS(301)에 필요한 만큼의 처리시간이 할당되도록 스케줄링을 행한다. 실시간성을 요구하지 않는 처리를 행하는 게스트 OS에는 실시간성을 요구하는 게스트 OS보다도 낮은 우선도로 처리시간의 할당을 행하도록 스케줄링이 행해진다. 도 15는 시간축을 횡으로 취하여 게스트 OS(302)와 게스트 OS(303)가 절환되면서 동작하고 있는 상태를 나타내고 있다. 게스트 OS(302)가 동작하고 있는 동안은 MPU(11)와 모든 VPU(12)가 게스트 OS(302)의 자원으로서 사용되고, 게스트 OS(303)가 동작하고 있는 동안은 MPU(11)와 모든 VPU(12)가 게스트 OS(303)의 자원으로서 사용된다.
도 16은 다른 동작모드를 나타내고 있다. 타겟 어플리케이션에 의해서는 VPU(12)를 계속 점유하여 이용하고자 하는 경우가 있다. 예컨대, 항상 데이터나 이벤트를 계속 감시하는 것이 필요한 어플리케이션이 이에 상당한다. 이러한 경우에는, 특정의 VPU(12)를 특정의 게스트 OS에 의해 점유하도록 가상계산기 OS(301)의 스케줄러가 스케줄 관리한다. 도 16에서는 VPU4를 게스트 OS(30 2)의 전용자원에 지정한 경우의 예이다. 가상계산기 OS(301)가 게스트 OS(302; OS1)와 게스트OS(303; OS2)를 절환해도 VPU4는 항상 게스트 OS(301; OS1)의 관리하에서 계속 동작한다.
복수의 VPU(12)를 이용하여 프로그램을 동작시키기 위해, 본 실시형태에서는 복수의 VPU(12) 각각에 할당하는 스레드를 스케줄링하기 위한 스케줄러를 포함하는, VPU 실행환경으로 불리는 소프트웨어 모듈을 이용한다. 본 계산기 시스템에 OS가 1개밖에 탑재되어 있지 않은 경우는 도 17에 나타낸 바와 같이 그 OS(201)에 VPU 실행환경(401)을 실장한다. 이 때, VPU 실행환경(401)은 OS(201)의 커넬내에 실장할 수도 있고, 사용자 프로그램 레벨에서 실장할 수도 있으며, 양자로 분할하여 협조하여 동작하도록 실장할 수도 있다. 한편, 가상계산기 OS상에서 1개 혹은 복수의 OS를 동작시키는 경우, VPU 실행환경(401)을 실장하는 방식으로는 다음과 같은 방식이 있다.
1. 가상계산기 OS(301)내에 VPU 실행환경(401)을 실장하는 방식(도 18)
2. VPU 실행환경(401)을 가상계산기 OS(301)가 관리하는 1개의 OS로서 실장하는 방식(도 19). 도 19에서는 가상계산기 OS(301)상에서 동작하는 게스트 OS(304) 자체가 VPU 실행환경(401)이다.
3. 가상계산기 OS(301)가 관리하는 각 게스트 OS에 각각 전용의 VPU 실행환경(401)을 실장하는 방식(도 20). 도 20에 있어서는, 게스트 OS(302, 303)에 각각 VPU 실행환경(401, 402)이 실장되어 있다. VPU 실행환경(401, 402)은 가상계산기 OS(301)가 제공하는 게스트 OS간의 통신기능을 이용하여 필요에 따라 서로 제휴하여 동작한다.
4. 가상계산기 OS(301)가 관리하는 게스트 OS중 하나에 VPU 실행환경(40 1)을 실장하고, VPU 실행환경을 갖추지 않은 게스트 OS는 가상계산기 OS(301)가 제공하는 게스트 OS간의 통신기능을 이용하여 VPU 실행환경(401)을 갖춘 게스트 OS의 VPU 실행환경(401)을 이용하는 방식(도 21).
이들 방식의 장점은 이하와 같다.
방식 1의 장점
ㆍ가상계산기 OS가 갖춘 게스트 OS(가상계산기 OS가 관리하는 대상의 OS)의 스케줄링과, VPU(12)의 스케줄링을 일체화할 수 있기 때문에, 효율좋고 세밀한 스케줄링이 가능하여 자원을 유효하게 이용할 수 있다.
ㆍ복수의 게스트 OS간에서 VPU 실행환경을 공유할 수 있기 때문에, 새로운 게스트 OS를 도입하는 경우에 새로 VPU 실행환경을 만들지 않아도 좋다.
방식 2의 장점
ㆍ가상계산기 OS상에 있는 게스트 OS간에서 VPU(12)의 스케줄러를 공유할 수 있기 때문에, 효율좋고 세밀한 스케줄링이 가능하여 자원을 유효하게 이용할 수 있다.
ㆍ복수의 게스트 OS간에서 VPU 실행환경을 공유할 수 있기 때문에, 새로운 게스트를 도입하는 경우에 새로 VPU 실행환경을 만들지 않아도 좋다.
ㆍVPU 실행환경을 가상계산기 OS나 특정 게스트 OS에 의존하지 않고 만들수 있기 때문에, 표준화가 쉽고, 교환하여 사용할 수도 있다. 특정의 짜넣은 기기에 적응한 VPU 실행환경을 만들고, 그 기기의 특성을 살린 스케줄링 등을 행함으로써효율좋은 실행이 가능하다.
방식 3의 장점
ㆍ각 게스트 OS에 대해 VPU 실행환경을 최적으로 실장할 수 있기 때문에, 효율좋고 세밀한 스케줄링이 가능하여 자원을 유효하게 이용할 수 있다.
방식 4의 장점
ㆍ모든 게스트 OS가 VPU 실행환경을 실장할 필요가 없기 때문에, 새로운 게스트 OS를 추가하기 쉽다.
이와 같이, 어떠한 방식에서도 VPU 실행환경을 실장할 수 있다. 또, 이 이외에도 적당히 실시가능하다.
(서비스 프로바이더)
본 실시형태의 계산기 시스템에 있어서는, VPU 실행환경(401)은 각 VPU(12)에 관련하는 각종 자원(각 VPU의 처리시간, 메모리, 접속장치의 밴드폭 등)의 관리와 스케줄링 기능외에 여러 가지 서비스(네트워크를 이용한 통신기능, 파일의 입출력기능, 코덱 등의 라이브러리 기능의 호출, 사용자와의 인터페이스 처리, 입출력 디바이스를 이용한 입출력처리, 날짜나 시간의 독출 등)를 제공한다. 이들 서비스는, VPU(12)상에서 동작하는 어플리케이션 프로그램으로부터 호출되고, 간단한 서비스의 경우에는 그 VPU(12)상의 서비스 프로그램에서 처리된다. 그러나, 통신이나 파일의 처리 등 VPU(12)만으로는 처리할 수 없는 서비스에 관해서는, MPU(11)상의 서비스 프로그램에 의해 처리한다. 이러한 서비스를 제공하는 프로그램을 서비스 프로바이더(SP)라고 칭한다.
도 22에 VPU 실행환경의 하나의 실시예를 나타낸다. VPU 실행환경의 주요부분은 MPU(11)상에 존재한다. 이것이 MPU측 VPU 실행환경(501)이다. 각 VPU(12)상에는 그 VPU(12)내에서 처리가능한 서비스를 실행하는 최소한의 기능만을 갖춘 VPU측 VPU 실행환경(502)이 존재한다. MPU측 VPU 실행환경(501)의 기능은 크게 VPU 콘트롤(511)과 서비스 브로커(512) 2개로 나뉘어진다. VPU 콘트롤(511)은 주로 각 VPU(12)에 관련하는 각종 자원(VPU의 처리시간, 메모리, 가상공간, 접속장치의 밴드폭 등)의 관리기구나 동기기구나, 시큐리티의 관리기구나, 스케줄링 기능을 제공한다. 스케줄링 결과에 기초하여 VPU(12)상의 프로그램의 디스패치를 행하는 것은 이 VPU 콘트롤(511)이다. 서비스 브로커(512)는 VPU(12)상의 어플리케이션이 호출한 서비스 요구를 받아 적당한 서비스 프로그램(서비스 프로바이더)을 호출하여 그 서비스를 제공한다.
VPU측 VPU 실행환경(502)은 주로 VPU(12)상의 어플리케이션 프로그램이 호출한 서비스 요구를 받아 VPU(12)내에서 처리할 수 있는 것은 처리하고, 그렇지 않은 것은 MPU측 VPU 실행환경(501)의 서비스 브로커(512)에 처리를 의뢰하는 동작을 한다.
도 23에 VPU측 VPU 실행환경(502)이 서비스 요구를 처리하는 수순을 나타낸다. VPU측 VPU 실행환경(502)은 어플리케이션 프로그램으로부터의 서비스 호출을 수취하면(단계 S101), VPU 실행환경(502)내에서 처리할 수 있는 서비스인지 아닌지를 판별하며(단계 S102), 그렇다면 대응하는 서비스를 실행하여 결과를 호출하여 원래상태로 되돌린다(단계 S103, S107). 한편, VPU 실행환경(502)내에서 처리할수 있는 서비스가 아니라면, 해당하는 서비스를 실행가능한 서비스 프로그램이 VPU(12)상에서 실행가능한 프로그램으로서 등록되어 있는지의 여부를 판단한다(단계 S104). 등록되어 있다면, 당해 서비스 프로그램을 실행하여 결과를 호출하여 원래상태로 되돌린다(단계 S105, S107). 등록되어 있지 않다면, 서비스 브로커(512)에 처리를 의뢰하고, 그리고 서비스 브로커(512)로부터 되돌려지는 서비스의 결과를 호출하여 원래상태로 되돌린다(단계 S106, S107).
도 24에 MPU측 VPU 실행환경(501)의 서비스 브로커(512)가 VPU측 VPU 실행환경(502)으로부터 요구된 서비스를 처리하는 수순을 나타낸다. 서비스 브로커(512)는 VPU측 VPU 실행환경(502)으로부터의 서비스 호출을 수취하면(단계 S111), VPU 실행환경(501)내에서 처리할 수 있는 서비스인지 아닌지를 판별하고 (단계 S112), 그렇다면 대응하는 서비스를 실행하여 결과를 호출하여 원래의 VPU측 VPU 실행환경(502)으로 되돌린다(단계 S113, S114). 한편, VPU 실행환경 (501)내에서 처리할 수 있는 서비스가 아니라면, 해당하는 서비스를 실행가능한 서비스 프로그램이 MPU(11)상에서 실행가능한 프로그램으로서 등록되어 있는지의 여부를 판단한다(단계 S114). 등록되어 있다면, 당해 서비스 프로그램을 실행하여 결과를 호출하여 원래의 VPU측 VPU 실행환경(502)으로 되돌린다(단계 S116, S114). 등록되어 있지 않다면, 에러를 호출하여 원래의 VPU측 VPU 실행환경(502)으로 되돌린다(단계 S117).
또한, VPU(12)에서 실행하는 프로그램이 발행하는 서비스 요구에는 서비스의 실행결과의 응답을 되돌리는 경우도 있으면, 요구를 제시할 뿐 응답이 없는 경우도있다. 또, 응답처는 통상은 요구를 제시한 스레드이지만, 응답처로서 다른 스레드, 스레드 그룹, 혹은 프로세스를 지정할 수도 있다. 그 때문에, 서비스 요구의 메세지에는 응답처의 지정도 포함시키는 것이 바람직하다. 서비스 브로커(512)는 널리 사용되고 있는 오브젝트 요청 브로커를 이용하여 실현할 수 있다.
(실시간 처리)
본 실시형태의 계산기 시스템은 실시간 처리시스템으로서 기능한다. 이 경우, 그 실시간 처리시스템의 대상으로 하는 처리는 크게,
1. 하드 실시간 처리
2. 소프트 실시간 처리
3. 베스트 에포트 처리(논실시간 처리)의 3종류로 분류할 수 있다. 1과 2는 소위 실시간 처리라고 일컬어지는 경우이다. 본 실시형태의 실시간 처리시스템은 많은 기존의 OS와 마찬가지로 스레드와 프로세스의 개념을 갖고 있다. 여기에서는 먼저, 본 실시형태의 실시간 처리시스템에서의 스레드와 프로세스에 관해 설명한다.
스레드에는 다음 3개의 클래스가 있다.
1. 하드 실시간 클래스
이 스레드 클래스는, 그 시간요건(timing requirements)이 매우 중요하여 그 요건이 충족되지 않았을 때에 중대한 상황으로 되는 바와 같은 중요한 어플리케이션에 이용한다.
2. 소프트 실시간 클래스
이 스레드 클래스는, 예컨대 그 시간요건이 충족되지 않은 경우에 있어서도 그 품질이 저하하는 것뿐인 어플리케이션에 이용한다.
3. 베스트 에포트 클래스
이 스레드 클래스는 그 요건내에 일절의 시간요건을 포함하지 않는 어플리케이션에 이용한다.
스레드는 본 실시간 처리시스템내에 있어서 처리를 실행하는 실체이다. 스레드에는 그 스레드가 실행하는 프로그램이 관련지워져 있다. 각 스레드는 스레드 콘텍스트라고 부르는 각각의 스레드에 고유의 정보를 유지하고 있다. 스레드 콘텍스트에는, 예컨대 프로세서의 레지스터의 값이나 스택 등의 정보가 포함되어 있다.
본 실시간 처리시스템에 있어서는, MPU 스레드와 VPU 스레드 2종류의 스레드가 존재한다. 이들 2개의 스레드는 그 스레드가 실행되는 프로세서(MPU (11)나 VPU(12))에 의해 분류되어 있고, 스레드로서의 모델은 완전히 같다. VPU 스레드의 스레드 콘텍스트에는 VPU(12)의 로컬기억장치(32)의 내용이나, 메모리 콘트롤러(33)를 갖춘 DMA 콘트롤러의 상태 등도 포함한다.
복수의 스레드를 그룹으로서 합친 것을 스레드 그룹이라고 칭한다. 스레드 그룹은 그룹에 포함되는 스레드 전체에 대해 같은 속성을 제공하는 등의 처리를 효율좋고 간단하게 할 수 있는 장점이 있다. 하드 실시간 클래스 또는 소프트 실시간 클래스의 스레드 그룹은 밀결합 스레드 그룹(tightly coupled thread group)과 소결합 스레드 그룹(loosely coupled thread group)의 2종류로 크게 나뉘어진다. 밀결합 스레드 그룹과 소결합 스레드 그룹은 스레드 그룹에 부가된 속성정보(결합속성정보)에 의해 식별된다. 어플리케이션 프로그램내의 코드 또는 상술한 구성기술에 의해 스레드 그룹의 결합속성을 명시적으로 지정할 수 있다.
밀결합 스레드 그룹은 서로 협조하여 동작하는 복수의 스레드의 집합으로 구성되는 스레드 그룹이다. 즉, 밀결합 스레드 그룹은 그 그룹에 속하는 스레드군이 서로 밀접하게 제휴하여 동작하는 것을 나타낸다. 밀접한 제휴는, 예컨대 빈번하게 스레드 사이에서 통신 혹은 동기처리 등의 상호작용(interaction)을 행하거나, 혹은 레이턴시(latency; 지연)가 작은 상호작용을 필요로 하는 경우 등이다. 한편, 소결합 스레드 그룹은 밀결합 스레드 그룹에 비해 그 그룹에 속하는 스레드군 사이의 밀접한 제휴가 불필요한 스레드 그룹이고, 스레드군은 메모리(14)상의 버퍼를 매개로 데이터 주고받기를 위한 통신을 행한다.
(밀결합 스레드 그룹)
도 25에 나타낸 바와 같이, 밀결합 스레드 그룹에 속하는 스레드군에는 각각 다른 VPU가 할당되고, 각 스레드가 동시에 실행된다. 밀결합 스레드 그룹에 속하는 스레드를 밀결합 스레드라고 칭한다. 이 경우, 밀결합 스레드 그룹에 속하는 밀결합 스레드 각각의 실행기간이 그들 밀결합 스레드의 갯수와 동수인 VPU 각각에 대해 예약되고, 그들 밀결합 스레드가 동시에 실행된다. 도 25에 있어서는, 어떤 밀결합 스레드 그룹에 스레드 A, B 2개가 밀결합 스레드로서 포함되어 있고, 그들 스레드 A, B가 각각 VPU0, VPU1에 의해 동시에 실행되어 있는 상태를 나타내고 있다. 스레드 A, B를 각각 다른 VPU에 의해 동시에 실행하는 것을 보증함으로써, 각 스레드는 상대 스레드가 실행되고 있는 VPU의 로컬기억장치나 제어 레지스터를 통해 상대 스레드와의 통신을 직접적으로 행할 수 있다. 도 26은 스레드 A, B가 각각 실행되는 VPU0, VPU1의 로컬기억장치를 매개로 스레드 A, B간의 통신이 실행되는 상태를 나타내고 있다. 이 경우, 스레드 A가 실행되는 VPU0에 있어서는 그 스레드 A의 EA 공간의 일부에 통신상대 스레드 B가 실행되는 VPU1의 로컬기억장치(32)에 대응하는 RA 공간이 매핑된다. 이 매핑을 위한 어드레스 변환은 VPU0의 메모리 콘트롤러(33)내에 설치된 어드레스 변환 유닛(331)이 세그먼트 테이블 및 페이지 테이블을 이용하여 실행한다. 스레드 B가 실행되는 VPU1에 있어서는, 그 스레드 B의 EA공간의 일부에 통신상대 스레드 A가 실행되는 VPU0의 로컬기억장치(32)에 대응하는 RA공간이 매핑된다. 이 매핑을 위한 어드레스 변환은 VPU1의 메모리 콘트롤러(33)내에 설치된 어드레스 변환 유닛(331)이 세그먼트 테이블 및 페이지 테이블을 이용하여 실행한다. 도 27은 VPU0상에서 실행되는 스레드 A가 자신의 EA공간에 스레드 B가 실행되는 VPU1의 로컬기억장치(LS1; 32)를 매핑하고, VPU1상에서 실행되는 스레드 B가 자신의 EA공간에 스레드 A가 실행되는 VPU0의 로컬기억장치(LS0; 32)를 매핑한 상태를 나타낸다. 예컨대, 스레드 A는 스레드 B에 넘겨줘야 하는 데이터가 로컬기억장치(LS0)상에 준비가능했던 시점에서 그것을 나타내는 프래그를 로컬기억장치(LS0) 또는 스레드 B가 실행되는 VPU1의 로컬기억장치(LS1)에 세트한다. 스레드 B는 그 플래그의 세트에 응답하여 로컬기억장치(LS0)상의 데이터를 리드한다.
이와 같이, 결합속성정보에 따라 밀결합관계에 있는 스레드를 특정할 수 있도록 하는 동시에, 밀결합관계에 있는 스레드 A, B가 각각 다른 VPU에 의해 동시에실행되는 것을 보증함으로써, 스레드 A, B간의 통신, 동기에 관한 상호작용을 보다 경량이면서 지연없이 행하는 것이 가능해진다.
(소결합 스레드 그룹)
소결합 스레드 그룹에 속하는 스레드군 각각의 실행시간은 그들 스레드군 사이의 입출력관계에 따라 결정되고, 가령 실행순서의 제약이 없는 스레드끼리여도 그것들이 동시에 실행되는 것은 보증되지 않는다. 소결합 스레드 그룹에 속하는 스레드를 소결합 스레드라고 칭한다. 도 28에 있어서는, 어떤 소결합 스레드 그룹에 스레드 C, D 2개가 소결합 스레드로서 포함되어 있고, 그들 스레드 C, D가 각각 VPU0, VPU1에 의해 실행되고 있는 상태를 나타내고 있다. 도 28에 나타낸 바와 같이, 각 스레드의 실행시간은 제각기로 된다. 스레드 C, D간의 통신은 도 29에 나타낸 바와 같이, 메인메모리(14)상에 준비한 버퍼를 매개로 행해진다. 스레드 C는 로컬기억장치(LS0)에 준비한 데이터를 DMA전송에 의해 메인메모리(14)상에 준비한 버퍼에 기입되고, 스레드 D는 그 개시시에 DMA전송에 의해 메인메모리(14)상의 버퍼로부터 로컬기억장치(LS1)로 데이터를 읽어들인다.
(프로세스와 스레드)
프로세스는 도 30에 나타낸 바와 같이, 하나의 어드레스공간과 하나 이상의 스레드로 구성된다. 하나의 프로세스에 포함되는 스레드수와 종류는 어떠한 조합으로도 무방하다. 예컨대, VPU 스레드만으로 구성되는 프로세스도 구축가능하고, VPU 스레드와 MPU 스레드가 혼재(混在)하는 프로세스도 구축가능하다. 스레드가 스레드 고유의 정보로서 스레드 콘텍스트를 유지하고 있는 것과 마찬가지로 프로세스도 프로세스 고유의 정보로서 프로세스 콘텍스트를 유지한다. 이 프로세스 콘텍스트에는 프로세스에 고유인 어드레스공간과, 프로세스가 포함되어 있는 전체 스레드의 스레드 콘텍스트가 포함된다. 프로세스의 어드레스공간은 프로세스에 속하는 전체 스레드 사이에서 공유할 수 있다. 하나의 프로세스는, 복수의 스레드 그룹을 포함할 수 있다. 그러나, 하나의 스레드 그룹이 복수의 프로세스에 속할 수는 없다. 이 때문에, 어떤 프로세스에 속하는 스레드 그룹은 그 프로세스에 고유인 것으로 된다. 본 실시형태의 실시간 처리시스템에 있어서, 스레드를 새로 생성하는 방식에는 스레드 제1모델(Thread first model)과 어드레스공간 제1모델(Address space first model)의 2종류가 있다. 어드레스공간 제1모델은 기존의 OS에서 채용되고 있는 것과 마찬가지의 방식으로, MPU 스레드에도 VPU 스레드에도 적용할 수 있다. 한편, 스레드 제1모델은 VPU 스레드밖에 적용할 수 없는 방식으로, 본 발명의 실시간 처리시스템에 있어서 특유의 방식이다. 스레드 제1모델에서는, 기존의 스레드(새로 스레드를 만들고 싶다고 생각하고 있는 측의 스레드. 새로 만드는 스레드의 바탕이 되는 스레드)는 먼저 신규 스레드가 실행하는 프로그램을 지정하고, 신규 스레드에 프로그램의 실행을 개시시킨다. 이 때, 프로그램은 VPU(12)의 로컬기억장치에 격납되고, 소정의 실행개시번지로부터 처리가 개시된다. 이 시점에서는 이 신규 스레드에는 어드레스공간이 관련지워져 있지 않기 때문에, 자신의 로컬기억장치는 억세스할 수 있지만, 메모리(14)는 억세스할 수 없다. 그 후, 신규 스레드는 필요에 따라 자신에서 VPU 실행환경의 서비스를 호출하여 어드레스공간을 생성하여 관련지우거나, MPU(11)측의 처리에 의해 어드레스공간을 관련지우거나 하여 메모리(14)에 억세스할 수 있게 된다. 어드레스공간 제1모델에서는, 기존의 스레드는 새로 어드레스공간을 생성하거나 혹은 기존의 어드레스공간을 지정하여 그 어드레스공간에 신규 스레드가 실행하는 프로그램을 배치한다. 그리고, 신규 스레드에 그 프로그램의 실행을 개시시킨다. 스레드 제1모델의 장점은, 로컬기억장치만으로 동작하기 때문에, 스레드의 생성이나 디스패치나 종료처리 등의 오버헤드를 작게 할 수 있다는 점이다.
(스레드군의 스케줄링)
다음으로, 도 31의 플로우차트를 참조하여 VPU 실행환경(401)에 의해 실행되는 스케줄링 처리에 대해 설명한다. VPU 실행환경(401)내의 스케줄러는 스케줄 대상의 스레드군에 스레드 그룹 단위로 부가되어 있는 결합속성정보에 기초하여 스레드간의 결합속성을 체크하고(단계 S121), 각 스레드 그룹마다 그 스레드 그룹이 밀결합 스레드 그룹 및 소결합 스레드 그룹중 어느 것인지를 판별한다(단계 S122). 결합속성의 체크는, 프로그램 코드내의 스레드에 관한 기술 혹은 상술한 구성기술(117)내의 스레드 파라미터를 참조함으로써 행해진다. 이렇게 하여, 밀결합 스레드 그룹 및 소결합 스레드 그룹을 각각 특정함으로써, 스케줄 대상의 스레드군은 밀결합 스레드 그룹과 소결합 스레드 그룹으로 분리된다.
밀결합 스레드 그룹에 속하는 스레드군에 대한 스케줄링은 다음과 같이 행해진다. 즉, VPU 실행환경(401)내의 스케줄러는 스케줄 대상의 스레드군에서 선택된 밀결합 스레드 그룹에 속하는 스레드군이 각각 다른 VPU에 의해 동시에 실행되도록 그 밀결합 스레드 그룹에 속하는 스레드군과 동수인 VPU 각각의 실행기간을 예약하고, 스레드군을 그들 예약한 VPU 각각에 동시에 디스패치한다(단계 S123). 그리고, 스케줄러는 각 스레드가 실행되는 VPU내의 어드레스 변환 유닛(331)을 이용하고, 각 스레드의 EA공간의 일부에 협조하여 상호작용을 행하는 상대로 되는 다른 스레드가 실행되는 VPU의 로컬기억장치에 대응하는 RA공간을 매핑한다(단계 S124). 한편, 스케줄 대상의 스레드군에서 선택된 소결합 스레드 그룹에 속하는 소결합 스레드군에 대해서는 스케줄러는 그들 스레드군 사이의 입출력관계에 기초하여 그들 스레드군을 1이상의 VPU에 순차적으로 디스패치한다(단계 S125).
(로컬기억장치의 매핑)
본 실시형태의 실시간 처리시스템에 있어서, MPU 스레드와 VPU 스레드 사이, 혹은 VPU 스레드와 다른 VPU 스레드 사이에서 어떤 통신이나 동기를 행하면서 협조하여 동작을 행하는 경우에는, 협조상대 VPU 스레드의 로컬기억장치에 억세스할 필요가 있다. 예컨대, 보다 경량이고 고속인 동기기구는 로컬기억장치상에 동기변수를 할당하여 실장한다. 그 때문에, 어떤 VPU(12)의 로컬기억장치를 다른 VPU(12) 혹은 MPU(11)의 스레드가 직접억세스할 필요가 있다. 도 4에 나타낸 예와 같이, 각 VPU(12)의 로컬기억장치가 실(實) 어드레스공간에 할당되어 있는 경우, 세그먼트 테이블이나 페이지 테이블을 적절히 설정하면, 상대 VPU(12)의 로컬기억장치를 직접억세스할 수 있다. 그러나, 이 경우에 크게 2가지의 문제가 발생한다.
제1문제는, VPU 스레드의 디스패치처 VPU(12)의 변경에 관한 문제이다. 도 32와 같이, VPU 스레드 A와 B가 존재하고, 각각 VPU0과 VPU1에서 동작하고 있는 것으로 한다. 그리고, 이 스레드 A와 B는 서로의 스레드와 협조하고자 하기 때문에,서로의 스레드의 LS(로컬기억장치)를 자신의 EA공간에 매핑하고 있는 것으로 한다. 또, VPU0, VPU1, VPU2의 LS0, LS1, LS2는 각각 도 32와 같이 RA공간에 존재하는 것으로 한다. 이 때, VPU 스레드 A가 자신의 EA공간에 매핑하고 있는 것은 VPU 스레드 B가 동작하고 있는 VPU의 LS, 즉 VPU1의 LS인 LS1이다. 반대로, VPU 스레드 B가 자신의 EA공간에 매핑하고 있는 것은 VPU 스레드 A가 동작하고 있는 VPU의 LS, 즉 VPU0의 LS인 LS0이다. 그 후, VPU 실행환경내의 스케줄러에 의해 VPU 스레드 A를 실행하는 VPU가 디스패치되고, VPU 스레드 A는 VPU2에서 동작하게 된 것으로 한다. 이 때, 이미 VPU 스레드 A는 VPU0에서는 동작하고 있지 않기 때문에, VPU 스레드 B가 자신의 EA공간에 매핑하고 있는 VPU0의 LS는 의미가 없어진다. 이 경우, 스레드 B가 스레드 A의 디스패치처 VPU가 변경하게 된 것을 몰라도 좋도록 시스템은 어떤 방법으로 LS0에 매핑되어 있는 EA공간의 어드레스를 LS2에 매핑하고, 스레드 B로부터 스레드 A의 로컬기억장치로서 VPU2의 LS인 LS2가 보이도록 할 필요가 있다.
제2문제는 물리 VPU와 논리 VPU의 대응관계의 문제이다. VPU를 VPU 스레드에 할당될 때까지는 실제로는 2개의 레벨이 있다. 하나는 논리 VPU의 VPU 스레드로의 할당이고, 다른 하나는 물리 VPU의 논리 VPU로의 할당이다. 물리 VPU는 가상계산기 OS(301)가 관리하고 있는 물리적인 VPU(12)이다. 그리고, 논리 VPU는 가상계산기 OS(301)가 게스트 OS 할당된 논리적인 VPU의 거이다. 이 관계는 도 14에도 나타내어져 있다. 예컨대, VPU 실행환경(401)이 논리적인 VPU를 관리하는 경우, 도 32의 예에서 VPU 스레드의 할당대상으로 되는 VPU는 논리 VPU이다.
도 33은 이 2개의 레벨의 할당의 개념을 나타내고 있다. 직전에 설명한 제1문제는 도 33의 상단에 위치하는 VPU 스레드의 논리 VPU로의 할당문제에 상당한다. 제2문제인 물리 VPU의 논리 VPU로의 할당문제는 하단에 위치하는 할당에 상당한다. 도 33에서는 4개의 물리 VPU에서 3개의 VPU를 선택하고, 3개의 논리 VPU에 할당하고 있는 것을 나타내고 있다. 만약, 이 물리 VPU와 논리 VPU의 대응관계가 변화한 경우, VPU 스레드의 논리 VPU로의 할당이 변경되어 있지 않아도 적절한 설정의 변경이 필요하게 된다. 예컨대, 변경후의 논리 VPU의 LS에 대한 억세스가 올바른 물리 VPU의 LS를 가리키도록 LS에 대응하는 페이지 테이블 엔트리를 교체하는 등이다.
어떤 시각에, 도 34와 같이 물리 VPU1, 2, 3이 논리 VPU0, 1, 2에 각각 할당되어 있는 것으로 한다. 그리고, 논리 VPU1은 VPU 스레드 A에, 그리고 논리 VPU2는 VPU 스레드 B에 할당되어 있는 것으로 한다. 그리고, VPU 스레드 A와 B는 각각 서로 상대가 동작하고 있는 물리 VPU의 LS를 자신의 EA공간에 매핑하고 있는 것으로 한다. VPU 스레드 A의 EA공간에는 VPU 스레드 B가 실행되고 있는 물리 VPU3의 LS3이, 그리고 VPU 스레드 B의 EA공간에는 VPU 스레드 A가 실행되고 있는 물리 VPU2의 LS2가 매핑되어 있다. 그 후, 어떤 시각에 가상계산기 OS(301)에 의해 논리 VPU0, 1이 물리 VPU0, 1에 재할당된 것으로 한다. 그러면, 지금까지 VPU 스레드 A가 동작하고 있는 논리 VPU1은 물리 VPU2로부터 물리 VPU1로 변화한다. 물리 VPU의 VPU 스레드로의 할당은 변화하고 있지 않지만, 물리 VPU와 논리 VPU의 대응관계가 변화한 것으로 된다. 이 때문에, VPU 스레드 B가 EA공간에 매핑하고 있는VPU 스레드 A가 동작하고 있는 VPU의 LS를, LS2로부터 LS1으로 변경하고, 올바르게 억세스할 수 있도록 할 필요가 있다.
이들 2개의 문제를 해결하기 위해, 본 실시형태의 실시간 처리시스템에서는, 스레드에서 본 EA공간의 고정 어드레스에, 먼저 상대 스레드를 실행하고 있는 VPU의 로컬기억장치가 매핑되어 보이도록 가상기억장치를 제어한다. 즉, VPU 스케줄러에 의한 논리 VPU의 디스패치시 및 가상계산기 OS 등에 의한 물리 VPU와 논리 VPU의 대응관계의 절환시에 적당히 페이지 테이블이나 세그먼트 테이블을 바꿔씀으로써, VPU상에서 동작하고 있는 스레드로부터는 항상 같은 번지에 상대 스레드를 실행하고 있는 VPU의 로컬기억장치가 보이도록 한다.
먼저, 2개의 스레드의 EA공간의 관계에 대해 설명하는 2개의 스레드의 EA공간은 다음 3개중 어느 하나의 패턴으로 공유 혹은 비공유로 되어 있다.
1. 공유 EA형: 2개의 스레드 1, 2가 세그먼트 테이블도 페이지 테이블도 공유하고 있다(도 35).
2. 공유 VA형: 2개의 스레드 1, 2가 페이지 테이블은 공유하지만, 세그먼트 테이블은 공유하지 않고, 각각이 가지고 있다(도 36).
3. 비공유형: 2개이 스레드 1, 2는 페이지 테이블도 세그먼트 테이블도 공유하지 않고, 각각이 가지고 있다(도 37).
이하, 1의 공유 EA형을 예로, VPU의 로컬기억장치를 어떻게 매핑하도록 제어하는지에 대해 설명한다.
먼저, 도 38에 나타낸 바와 같이 VA 공간상에 각 논리 VPU에 대응한 영역을형성하고, 거기에 그 논리 VPU가 대응지워져 있는 물리 VPU의 로컬기억장치가 매핑되도록 페이지 테이블을 설정한다. 이 예의 경우, 물리 VPU0, 1, 2가 각각 논리 VPU0, 1, 2에 대응지워져 있는 상태를 나타내고 있다. 다음으로, 스레드 A로부터는 스레드 B를 실행하고 있는 VPU의 로컬기억장치가 고정 어드레스인 세그먼트 a의 영역에 보이도록 세그먼트 테이블을 설정한다. 또, 스레드 B로부터는 스레드 A를 실행하고 있는 논리 VPU의 로컬기억장치가 고정 어드레스인 세그먼트 b에 보이도록 세그먼트 테이블을 설정한다. 이 예에서는, 스레드 A는 논리 VPU2에서, 스레드 B는 논리 VPU1에서 실행하고 있는 상황을 나타내고 있다. 여기에서, VPU 실행환경(401)의 스케줄러가, 스레드 B를 논리 VPU0에 디스패치한 것으로 한다. 이 때, VPU 실행환경(401)은 도 39에 나타낸 바와 같이, 스레드 A로부터는 고정 어드레스인 세그먼트 a를 통해 스레드 B를 현재 실행하고 있는 논리 VPU0의 로컬기억장치를 보이도록 VPU 실행환경(401)은 세그먼트 테이블을 자동적으로 바꿔쓴다.
더욱이, 여기에서, 예컨대 가상계산기 OS(301)가 게스트 OS의 디스패치를 했기 때문에, 물리 VPU와 논리 VPU의 대응이 변화한 것으로 한다. 이 때, 예컨대 도 40에 나타낸 바와 같이 VPU 실행환경(401)은 페이지 테이블을 바꿔써서 VA공간상에 고정되어 있는 논리 VPU의 로컬기억장치의 영역이 올바른 물리 VPU의 로컬기억장치의 영역을 가리키도록 한다. 도 40의 예에서는 물리 VPU1, 2, 3이 논리 VPU0, 1, 2에 대응하도록 변경되었기 때문에, 페이지 테이블을 바꿔써서 현재의 올바른 매핑으로 되도록 하고 있다.
이와 같이, VPU 실행환경(401)의 스케줄러의 디스패치에 의해 스레드를 실행하는 논리 VPU가 변경된 경우에는, EA공간으로부터 VA공간으로의 매핑을 행하고 있는 세그먼트 테이블을 바꿔써서 제1문제를 해결하고 있다. 또, 가상계산기 OS(301) 등에 의해 물리 VPU와 논리 VPU의 대응이 변경된 경우는 VA공간으 로부터 RA공간으로의 매핑을 행하고 있는 페이지 테이블을 바꿔써서 제2문제를 해결하고 있다.
이렇게 하여 상호작용을 행하는 상대 스레드가 실행되는 프로세서에 따라 실효 어드레스공간에 매핑되는 상대 스레드에 대응하는 프로세서의 로컬메모리가 자동적으로 변경함으로써, 각 스레드는 상대 스레드가 디스패치되는 프로세서를 의식하는 일없이 상대 스레드와의 상호작용을 효율좋게 행할 수 있다. 따라서, 복수의 스레드를 효율좋게 병렬로 실행하는 것이 가능해진다.
이상, 공유 EA형의 경우의 예를 설명했지만, 2의 공유 VA형, 3의 비공유형에 대해서도, 세그먼트 테이블 또는 페이지 테이블을 바꿔씀으로써 마찬가지로 하여 제1문제 및 제2문제를 해결할 수 있다.
상기의 제1 및 제2문제를 해결하는 다른 방법에 대해 설명한다. 여기에서도, 공유 EA형의 경우를 예로 설명한다. 도 41에 나타낸 바와 같이, 협조하여 동작하는 복수의 VPU 스레드가 있는 경우, 그들의 스레들를 실행하는 VPU의 로컬기억장치를 세그먼트상에 연속하여 매핑하도록 페이지 테이블과 세그먼트 테이블을 설정한다. 도 41의 예의 경우, 스레드 A는 물리 VPU2에서, 스레드 B는 물리 VPU0에서 실행되고 있고, 각각의 VPU의 로컬기억장치가 동일한 세그먼트에 연속하여 배치되도록 페이지 테이블과 세그먼트 테이블을 설정하고 있다. 여기에서, VPU 실행환경(401)의 스케줄러에 의해 스레드를 실행하는 논리 VPU가 디스패치되거나, 가상계산기 OS(301) 등에 의해 물리 VPU와 논리 VPU의 대응이 변경된 경우에는 각각의 변경이 스레드 A 및 스레드 B에 대해 은폐되도록 페이지 테이블을 바꿔써서 VA공간과 RA공간의 매핑을 변경한다. 예컨대, 도 42는 스레드 A를 실행하고 있는 VPU가 물리 VPU1에, 스레드 B를 실행하고 있는 VPU가 물리 VPU3으로 변경된 경우의 매핑을 나타내고 있다. 이 변경이 행해져도 스레드 A 및 스레드 B로부터는 고정한 어드레스를 갖춘 세그먼트내의 소정의 영역을 억세스함으로써, 항상 상대 스레드를 실행하고 있는 VPU의 로컬기억장치를 억세스할 수 있다.
다음으로, 도 43의 플로우차트를 참조하여 VPU 실행환경(401)에 의해 실행되는 어드레스 관리처리의 수순에 대해 설명한다. VPU 실행환경(401)은 각 스레드의 EA공간상의 고정 어드레스에 상대 스레드를 실행하고 있는 VPU의 로컬기억장치에 대응하는 RA공간을 매핑한다(단계 S201). 이 후, VPU 실행환경(401)은 상대 스레드의 디스패치처 VPU의 변경 혹은 논리 VPU와 물리 VPU의 대응관계의 변경에 기인하여 상대 스레드가 실행되는 VPU가 변경되었는지의 여부를 판별한다(단계 S202). 상대 스레드가 실행되는 VPU가 변경되었다면, VPU 실행환경(401)은 세그먼트 테이블 또는 페이지 테이블의 내용을 바꿔써서 각 스레드의 EA공간상의 고정 어드레스에 매핑되어 있는 로컬기억장치를 상대 스레드가 실행되는 VPU에 포함되어 변경한다(단계 S203).
이제까지의 예에서는, 밀결합 스레드 그룹과 같이 서로 VPU에 의해 실행중인 스레드 사이에서 상대 스레드를 실행하고 있는 VPU의 로컬기억장치를 억세스하는방식을 설명했다. 그러나, 소결합 스레드 그룹 등 협조하여 동작하는 스레드가 반드시 동시에 VPU에 할당되어 실행하고 있지 않는 경우도 존재한다. 그러한 경우에도, EA공간상에는 상대 스레드를 실행하고 있는 VPU(12)의 로컬기억장치를 매핑하는 영역은 존재하기 때문에, 그 영역을 이하와 같이 이용하여 대처한다.
제1방법: 상대 스레드가 실행중이 아닌 경우에는, 그 스레드에 대응하는 VPU의 로컬기억장치를 매핑하는 영역에 억세스하면, 스레드는 상대 스레드가 실행개시할 때까지 기다리도록 한다.
제2방법: 상대 스레드가 실행중이 아닌 경우에는, 그 스레드에 대응하는 VPU의 로컬기억장치를 매핑하는 영역에 억세스하면, 스레드는 예외 발생이나 에러코드에 의해 그 뜻을 인식한다.
제3방법: 스레드의 종료시에 그 스레드를 최후로 실행하고 있었을 때의 로컬기억장치의 내용을 메모리에 보존해 두고, 그 스레드에 대응지워진 로컬기억장치를 가리키는 페이지 테이블 혹은 세그먼트 테이블의 엔트리로부터는 그 메모리영역을 가리키도록 매핑을 제어한다. 이 방식에 의해 상대 스레드가 실행중이 아니어도 상대 스레드에 대응지워진 로컬기억장치가 마치 있는듯이 스레드의 실행을 계속할 수 있다. 도 44 및 도 45에 구체예를 나타낸다.
①: 지금 스레드 A, B가 각각 VPU0, 1에서 실행되고 있고, 스레드 B의 EA공간에는 상대 스레드 A가 실행되고 있는 VPU0의 로컬기억장치 LS0이 매핑되어 있는 것으로 한다.
②: 스레드 A의 종료시에는 스레드 A 또는 VPU 실행환경(401)은 스레드 A가실행되고 있는 VPU0의 로컬기억장치 LS0의 내용을 메모리(14)에 보존한다(단계 S211).
③: VPU 실행환경(401)은 스레드 B의 EA공간에 매핑되어 있는 상대처 스레드 A의 로컬기억장치의 어드레스 공간을, VPU0의 LS0으로부터 LS0의 내용이 보존된 메모리(14)상의 메모리영역으로 변경한다(단계 S212). 이에 따라, 스레드 B는 상대 스레드 A가 실행중이 아니게 된 후도 그 동작을 계속할 수 있다.
④: 스레드 A에 재차 VPU가 할당되었을 때, VPU 실행환경(401)은 메모리(14)상의 메모리영역을 스레드 A가 실행되는 VPU의 로컬기억장치로 되돌린다(단계 S213). 예컨대, 스레드 A에 재차 VPU0이 할당되었을 때는 메모리(14)상의 메모리영역의 내용은 VPU0의 로컬기억장치 LS0으로 되돌려진다.
⑤: VPU 실행환경(401)은 스레드 B의 EA공간에 매핑되어 있는 상대처 스레드 A의 로컬깅거장치의 어드레스 공간을 스레드 A가 실행되는 VPU의 로컬기억장치로 변경한다(단계 S214). 예컨대, 스레드 A에 재차 VPU0이 할당되었을 때는 스레드 B의 EA공간에 매핑되어 있는 상대처 스레드 A의 로컬기억장치의 어드레스공간은 VPU0의 로컬기억장치 LS0으로 되돌려진다.
또한, 스레드 A에 VPU2가 할당되었을 때는, 메모리(14)상의 메모리영역의 내용은 VPU2의 로컬기억장치 LS2로 복원된다. 그리고, 스레드 B의 EA공간에 매핑되어 있는 상대처 스레드 A의 로컬기억장치의 어드레스공간은 VPU2의 로컬기억장치 LS2로 변경된다.
또한, 도 1의 계산기 시스템에 설치된 MPU(11)와 복수의 VPU(12)는 그것들을1칩상에 혼재(混載)한 병렬 프로세서로서 실현할 수도 있다. 이 경우도, MPU(11)에 의해 실행되는 VPU 실행환경 혹은 특정의 1개의 VPU 등에 의해 실행되는 VPU 실행환경이 복수의 VPU(12)에 대한 스케줄링 및 어드레스관리를 행할 수 있다.
또, VPU 실행환경으로서 동작하는 프로그램 또는 그 VPU 실행환경을 포함하는 오퍼레이팅 시스템 등의 프로그램을 컴퓨터 독출가능한 기억매체에 기억시킴으로써 그 기억매체를 통해 당해 프로그램을 로컬프로세서를 각각 갖춘 복수의 프로세서를 포함하는 컴퓨터에 도입하여 실행하는 것만으로 본 실시형태와 마찬가지의 효과를 얻을 수 있다.
또, 본 발명은 상기 실시형태 그대로 한정되는 것은 아니고, 실시단계에서는 그 요지를 이탈하지 않는 범위에서 구성요소를 변형하여 구체화할 수 있다. 또, 상기 실시형태에 개시되어 있는 복수의 구성요소의 적당한 조합에 의해 여러 가지 발명을 형성할 수 있다. 예컨대, 실시형태에 나타낸 전체 구성요소에서 몇개의 구성요소를 삭제해도 좋다. 더욱이, 다른 실시형태에 따른 구성요소를 적당히 조합하여도 좋다.
이상 설명한 바와 같이 본 발명에 의하면, 복수의 프로세서를 이용하여 복수의 스레드를 효율좋게 병렬로 실행하는 것이 가능해진다.

Claims (12)

  1. 제1로컬메모리를 갖춘 제1프로세서와,
    제2로컬메모리를 갖춘 제2프로세서,
    제3로컬메모리를 갖춘 제3프로세서,
    상기 제1프로세서에 의해 실행되는 제1스레드의 실효 어드레스 공간의 일부에 상기 제1스레드와의 상호작용을 행하는 제2스레드가 실행되는 상기 제2 및 제3프로세서중 한쪽에 대응하는 상기 제2 및 제3로컬메모리중 한쪽을 매핑하는 수단 및,
    상기 제2스레드가 실행되는 프로세서가 상기 제2 및 제3프로세서중 한쪽으로부터 다른쪽 프로세서로 변경된 경우, 상기 제1스레드의 실효 어드레스 공간의 일부에 매핑되는 로컬메모리를 상기 제2 및 제3로컬메모리중 한쪽으로부터 다른쪽 로컬메모리로 변경하는 수단을 구비한 것을 특징으로 하는 정보처리시스템.
  2. 제1항에 있어서, 상기 제1프로세서와 상기 제2프로세서 및 상기 제3프로세서에 의해 공유되는 공유메모리와,
    상기 제2스레드의 실행이 정지되는 경우, 상기 제2스레드가 실행되고 있는 상기 제2 및 제3프로세서중 한쪽에 대응하는 상기 제2 및 제3로컬메모리중 한쪽의 내용을 상기 공유메모리상의 메모리영역에 보존하는 수단 및,
    상기 제1스레드의 실효 어드레스 공간의 일부에 매핑되는 로컬메모리를 상기제2 및 제3로컬메모리중 한쪽으로부터 상기 공유메모리상의 메모리영역으로 변경하는 수단을 더 구비한 것을 특징으로 하는 정보처리시스템.
  3. 제2항에 있어서, 상기 제2스레드가 상기 제2 및 제3프로세서중 한쪽에 의해 실행재개되는 경우, 상기 공유메모리상의 상기 메모리영역의 내용을 상기 제2 및 제3프로세서중 한쪽에 대응하는 상기 제2 및 제3로컬메모리중 한쪽으로 복원하는 수단과,
    상기 제1스레드의 실효 어드레스 공간의 일부에 매핑되는 로컬메모리를 상기 공유메모리상의 상기 메모리영역으로부터 상기 제2 및 제3로컬메모리중 한쪽으로 변경하는 수단을 더 구비한 것을 특징으로 하는 정보처리시스템.
  4. 제2항에 있어서, 상기 제2스레드가 상기 제2 및 제3프로세서중 한쪽에 의해 실행재개되는 경우, 상기 공유메모리상의 상기 메모리영역의 내용을 상기 제2 및 제3프로세서중 다른쪽에 대응하는 상기 제2 및 제3로컬메모리중 다른쪽으로 복원하는 수단과,
    상기 제1스레드의 실효 어드레스 공간의 일부에 매핑되는 로컬메모리를 상기 공유메모리상의 상기 메모리영역으로부터 상기 제2 및 제3로컬메모리중 다른쪽으로 변경하는 수단을 더 구비한 것을 특징으로 하는 정보처리시스템.
  5. 제1로컬메모리를 갖춘 제1프로세서와 제2로컬메모리를 갖춘 제2프로세서 및제3로컬메모리를 갖춘 제3프로세서를 포함하는 정보처리시스템에 있어서 스레드간의 통신에 이용되는 로컬메모리를 관리하는 메모리 관리방법에 있어서,
    상기 제1프로세서에 의해 실행되는 제1스레드의 실효 어드레스 공간의 일부에 상기 제1스레드와의 상호작용을 행하는 제2스레드가 실행되는 상기 제2 및 제3프로세서중 한쪽에 대응하는 상기 제2 및 제3로컬메모리중 한쪽을 매핑하는 단계와,
    상기 제2스레드가 실행되는 프로세서가 상기 제2 및 제3프로세서중 한쪽으로부터 다른쪽 프로세서로 변경된 경우, 상기 제1스레드의 실효 어드레스 공간의 일부에 매핑되는 로컬메모리를 상기 제2 및 제3로컬메모리중 한쪽으로부터 다른쪽 로컬메모리로 변경하는 단계를 구비한 것을 특징으로 하는 메모리 관리방법.
  6. 제5항에 있어서, 상기 제2스레드의 실행이 정지되는 경우, 상기 제2스레드가 실행되고 있는 상기 제2 및 제3프로세서중 한쪽에 대응하는 상기 제2 및 제3로컬메모리중 한쪽의 내용을 상기 제1프로세서와 상기 제2프로세서 및 상기 제3프로세서에 의해 공유되는 공유메모리상의 메모리영역에 보존하는 단계와,
    상기 제1스레드의 실효 어드레스 공간의 일부에 매핑되는 로컬메모리를 상기 제2 및 제3로컬메모리중 한쪽으로부터 상기 공유메모리상의 메모리영역으로 변경하는 단계를 더 구비한 것을 특징으로 하는 메모리 관리방법.
  7. 제6항에 있어서, 상기 제2스레드가 상기 제2 및 제3프로세서중 한쪽에 의해실행재개되는 경우, 상기 공유메모리상의 상기 메모리영역의 내용을 상기 제2 및 제3프로세서중 한쪽에 대응하는 상기 제2 및 제3로컬메모리중 한쪽으로 복원하는 단계와,
    상기 제1스레드의 실효 어드레스 공간의 일부에 매핑되는 로컬메모리를 상기 공유메모리상의 상기 메모리영역으로부터 상기 제2 및 제3로컬메모리중 한쪽으로 변경하는 단계를 더 구비한 것을 특징으로 하는 메모리 관리방법.
  8. 제6항에 있어서, 상기 제2스레드가 상기 제2 및 제3프로세서중 다른쪽에 의해 실행재개되는 경우, 상기 공유메모리상의 상기 메모리영역의 내용을 상기 제2 및 제3프로세서중 다른쪽에 대응하는 상기 제2 및 제3로컬메모리중 다른쪽으로 복원하는 단계와,
    상기 제1스레드의 실효 어드레스 공간의 일부에 매핑되는 로컬메모리를 상기 공유메모리상의 상기 메모리영역으로부터 상기 제2 및 제3로컬메모리중 다른쪽으로 변경하는 단계를 더 구비한 것을 특징으로 하는 메모리 관리방법.
  9. 제1로컬메모리를 갖춘 제1프로세서와 제2로컬메모리를 갖춘 제2프로세서 및 제3로컬메모리를 갖춘 제3프로세서를 포함하는 컴퓨터에 스레드간의 통신에 이용되는 로컬메모리를 관리시키는 프로그램에 있어서,
    상기 제1프로세서에 의해 실행되는 제1스레드의 실효 어드레스 공간의 일부에 상기 제1스레드와의 상호작용을 행하는 제2스레드가 실행되는 상기 제2 및 제3프로세서중 한쪽에 대응하는 상기 제2 및 제3로컬메모리중 한쪽을 매핑하는 처리를 상기 컴퓨터에 실행시키는 수순과,
    상기 제2스레드가 실행되는 프로세서가 상기 제2 및 제3프로세서중 한쪽으로부터 다른쪽 프로세서로 변경된 경우, 상기 제1스레드의 실효 어드레스 공간의 일부에 매핑되는 로컬메모리를 상기 제2 및 제3로컬메모리중 한쪽으로부터 다른쪽 로컬메모리로 변경하는 처리를 상기 컴퓨터에 실행시키는 수순을 구비한 것을 특징으로 하는 프로그램.
  10. 제9항에 있어서, 상기 제2스레드의 실행이 정지되는 경우, 상기 제2스레드가 실행되고 있는 상기 제2 및 제3프로세서중 한쪽에 대응하는 상기 제2 및 제3로컬메모리중 한쪽의 내용을 상기 제1프로세서와 상기 제2프로세서 및 상기 제3프로세서에 의해 공유되는 공유메모리상의 메모리영역에 보존하는 처리를 상기 컴퓨터에 실행시키는 수순과,
    상기 제1스레드의 실효 어드레스 공간의 일부에 매핑되는 로컬메모리를 상기 제2 및 제3로컬메모리중 한쪽으로부터 상기 공유메모리상의 메모리영역으로 변경하는 처리를 상기 컴퓨터에 실행시키는 수순을 더 구비한 것을 특징으로 하는 프로그램.
  11. 제10항에 있어서, 상기 제2스레드가 상기 제2 및 제3프로세서중 한쪽에 의해 실행재개되는 경우, 상기 공유메모리상의 상기 메모리영역의 내용을 상기 제2 및제3프로세서중 한쪽에 대응하는 상기 제2 및 제3로컬메모리중 한쪽으로 복원하는 처리를 상기 컴퓨터에 실행시키는 수순과,
    상기 제1스레드의 실효 어드레스 공간의 일부에 매핑되는 로컬메모리를 상기 공유메모리상의 상기 메모리영역으로부터 상기 제2 및 제3로컬메모리중 한쪽으로 변경하는 처리를 상기 컴퓨터에 실행시키는 수순을 더 구비한 것을 특징으로 하는 프로그램.
  12. 제10항에 있어서, 상기 제2스레드가 상기 제2 및 제3프로세서중 다른쪽에 의해 실행재개되는 경우, 상기 공유메모리상의 상기 메모리영역의 내용을 상기 제2 및 제3프로세서중 다른쪽에 대응하는 상기 제2 및 제3로컬메모리중 다른쪽으로 복원하는 처리를 상기 컴퓨터에 실행시키는 수순과,
    상기 제1스레드의 실효 어드레스 공간의 일부에 매핑되는 로컬메모리를 상기 공유메모리상의 상기 메모리영역으로부터 상기 제2 및 제3로컬메모리중 다른쪽으로 변경하는 처리를 상기 컴퓨터에 실행시키는 수순을 더 구비한 것을 특징으로 하는 프로그램.
KR1020040013136A 2003-06-27 2004-02-26 정보처리시스템 및 메모리 관리방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체 KR100608220B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2003-00185416 2003-06-27
JP2003185416A JP3892829B2 (ja) 2003-06-27 2003-06-27 情報処理システムおよびメモリ管理方法

Publications (2)

Publication Number Publication Date
KR20050000488A true KR20050000488A (ko) 2005-01-05
KR100608220B1 KR100608220B1 (ko) 2006-08-08

Family

ID=33411151

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040013136A KR100608220B1 (ko) 2003-06-27 2004-02-26 정보처리시스템 및 메모리 관리방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체

Country Status (5)

Country Link
US (2) US7356666B2 (ko)
EP (1) EP1492015A3 (ko)
JP (1) JP3892829B2 (ko)
KR (1) KR100608220B1 (ko)
CN (1) CN100416540C (ko)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3889726B2 (ja) * 2003-06-27 2007-03-07 株式会社東芝 スケジューリング方法および情報処理システム
JP3892829B2 (ja) * 2003-06-27 2007-03-14 株式会社東芝 情報処理システムおよびメモリ管理方法
JP4025260B2 (ja) 2003-08-14 2007-12-19 株式会社東芝 スケジューリング方法および情報処理システム
JP4197673B2 (ja) * 2004-09-30 2008-12-17 株式会社東芝 マルチプロセッサ計算機及びタスク実行方法
JP4197672B2 (ja) * 2004-09-30 2008-12-17 株式会社東芝 マルチプロセッサ計算機及びプログラム
JP4606142B2 (ja) * 2004-12-01 2011-01-05 株式会社ソニー・コンピュータエンタテインメント スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム
EP1883045A4 (en) * 2005-05-20 2016-10-05 Sony Corp SIGNAL PROCESSOR
US7526634B1 (en) * 2005-12-19 2009-04-28 Nvidia Corporation Counter-based delay of dependent thread group execution
CN100454899C (zh) * 2006-01-25 2009-01-21 华为技术有限公司 一种网络处理装置及方法
US8578347B1 (en) * 2006-12-28 2013-11-05 The Mathworks, Inc. Determining stack usage of generated code from a model
US20080244538A1 (en) * 2007-03-26 2008-10-02 Nair Sreekumar R Multi-core processor virtualization based on dynamic binary translation
US8014136B2 (en) * 2007-04-26 2011-09-06 Jupiter IP, LLC Modular computer system
JP4903092B2 (ja) * 2007-07-05 2012-03-21 株式会社リコー 画像処理装置、画像処理制御方法、及び画像処理制御プログラム
US20090125706A1 (en) * 2007-11-08 2009-05-14 Hoover Russell D Software Pipelining on a Network on Chip
US8261025B2 (en) 2007-11-12 2012-09-04 International Business Machines Corporation Software pipelining on a network on chip
US7873701B2 (en) * 2007-11-27 2011-01-18 International Business Machines Corporation Network on chip with partitions
US8255913B2 (en) 2008-02-01 2012-08-28 International Business Machines Corporation Notification to task of completion of GSM operations by initiator node
US7873879B2 (en) * 2008-02-01 2011-01-18 International Business Machines Corporation Mechanism to perform debugging of global shared memory (GSM) operations
US8239879B2 (en) 2008-02-01 2012-08-07 International Business Machines Corporation Notification by task of completion of GSM operations at target node
US8484307B2 (en) 2008-02-01 2013-07-09 International Business Machines Corporation Host fabric interface (HFI) to perform global shared memory (GSM) operations
US8200910B2 (en) 2008-02-01 2012-06-12 International Business Machines Corporation Generating and issuing global shared memory operations via a send FIFO
US8275947B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Mechanism to prevent illegal access to task address space by unauthorized tasks
US8146094B2 (en) * 2008-02-01 2012-03-27 International Business Machines Corporation Guaranteeing delivery of multi-packet GSM messages
US8214604B2 (en) 2008-02-01 2012-07-03 International Business Machines Corporation Mechanisms to order global shared memory operations
US8423715B2 (en) 2008-05-01 2013-04-16 International Business Machines Corporation Memory management among levels of cache in a memory hierarchy
US8438578B2 (en) 2008-06-09 2013-05-07 International Business Machines Corporation Network on chip with an I/O accelerator
US9086913B2 (en) * 2008-12-31 2015-07-21 Intel Corporation Processor extensions for execution of secure embedded containers
EP2450135B1 (en) 2009-06-29 2019-05-01 Kyocera Corporation Cutting tool with insert and holder
JP2011095852A (ja) * 2009-10-27 2011-05-12 Toshiba Corp キャッシュメモリ制御回路
JP2012173870A (ja) * 2011-02-18 2012-09-10 Toshiba Corp 半導体装置及びメモリ保護方法
US8719464B2 (en) * 2011-11-30 2014-05-06 Advanced Micro Device, Inc. Efficient memory and resource management
WO2014188643A1 (ja) * 2013-05-24 2014-11-27 日本電気株式会社 スケジュールシステム、スケジュール方法、及び、記録媒体
JP2014078214A (ja) * 2012-09-20 2014-05-01 Nec Corp スケジュールシステム、スケジュール方法、スケジュールプログラム、及び、オペレーティングシステム
JP6582367B2 (ja) * 2014-07-18 2019-10-02 富士通株式会社 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
JP2016115253A (ja) * 2014-12-17 2016-06-23 富士通株式会社 情報処理装置、メモリ管理方法およびメモリ管理プログラム
JP6859755B2 (ja) * 2017-03-02 2021-04-14 富士通株式会社 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
US11438414B2 (en) 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections
US11100007B2 (en) 2019-05-28 2021-08-24 Micron Technology, Inc. Memory management unit (MMU) for accessing borrowed memory
US11256624B2 (en) 2019-05-28 2022-02-22 Micron Technology, Inc. Intelligent content migration with borrowed memory
US11334387B2 (en) * 2019-05-28 2022-05-17 Micron Technology, Inc. Throttle memory as a service based on connectivity bandwidth
US11061819B2 (en) 2019-05-28 2021-07-13 Micron Technology, Inc. Distributed computing based on memory as a service
US11231963B2 (en) * 2019-08-15 2022-01-25 Intel Corporation Methods and apparatus to enable out-of-order pipelined execution of static mapping of a workload

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4539637A (en) 1982-08-26 1985-09-03 At&T Bell Laboratories Method and apparatus for handling interprocessor calls in a multiprocessor system
JPH02242434A (ja) 1989-03-16 1990-09-26 Hitachi Ltd タスクのスケジューリング方法
JPH04245745A (ja) 1991-01-30 1992-09-02 Nec Corp サービス速度設定回路
JPH04246745A (ja) * 1991-02-01 1992-09-02 Canon Inc 情報処理装置及びその方法
US5269013A (en) * 1991-03-20 1993-12-07 Digital Equipment Corporation Adaptive memory management method for coupled memory multiprocessor systems
JPH07302246A (ja) * 1994-05-09 1995-11-14 Toshiba Corp スケジューリング方式
JPH08180025A (ja) * 1994-12-21 1996-07-12 Toshiba Corp スケジューリング装置
JPH10143380A (ja) * 1996-11-07 1998-05-29 Hitachi Ltd マルチプロセッサシステム
US6289424B1 (en) * 1997-09-19 2001-09-11 Silicon Graphics, Inc. Method, system and computer program product for managing memory in a non-uniform memory access system
US6212544B1 (en) * 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
JPH11316691A (ja) 1998-05-06 1999-11-16 Sega Enterp Ltd オペレーティングシステムの実行方法及び、これを用いた情報処理装置
US6314501B1 (en) 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
US6622155B1 (en) * 1998-11-24 2003-09-16 Sun Microsystems, Inc. Distributed monitor concurrency control
JP3557947B2 (ja) 1999-05-24 2004-08-25 日本電気株式会社 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体
US20030182376A1 (en) * 2000-05-19 2003-09-25 Smith Neale Bremner Distributed processing multi-processor computer
JP2002163239A (ja) * 2000-11-22 2002-06-07 Toshiba Corp マルチプロセッサシステムおよびその制御方法
US7454600B2 (en) * 2001-06-22 2008-11-18 Intel Corporation Method and apparatus for assigning thread priority in a processor or the like
JP3892829B2 (ja) * 2003-06-27 2007-03-14 株式会社東芝 情報処理システムおよびメモリ管理方法
US7380039B2 (en) * 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
JP4246745B2 (ja) 2006-03-06 2009-04-02 イー・アイ・デュポン・ドウ・ヌムール・アンド・カンパニー ブラシ用モノフィラメント及びブラシ用モノフィラメントの製造方法

Also Published As

Publication number Publication date
EP1492015A2 (en) 2004-12-29
JP3892829B2 (ja) 2007-03-14
KR100608220B1 (ko) 2006-08-08
CN1577310A (zh) 2005-02-09
US20070220230A1 (en) 2007-09-20
US7356666B2 (en) 2008-04-08
CN100416540C (zh) 2008-09-03
US7739457B2 (en) 2010-06-15
EP1492015A3 (en) 2007-08-15
JP2005018620A (ja) 2005-01-20
US20040268083A1 (en) 2004-12-30

Similar Documents

Publication Publication Date Title
KR100608220B1 (ko) 정보처리시스템 및 메모리 관리방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체
KR100623217B1 (ko) 스케줄링 방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체 및 실시간 처리시스템
KR100591727B1 (ko) 스케줄링 방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체 및 정보처리시스템
JP3920818B2 (ja) スケジューリング方法および情報処理システム
JP4057989B2 (ja) スケジューリング方法および情報処理システム
US7464379B2 (en) Method and system for performing real-time operation
Kato et al. Gdev:{First-Class}{GPU} Resource Management in the Operating System
TWI417790B (zh) 異質架構中之邏輯分割以及虛擬化
JP2009515246A (ja) 集中特化したマルチタスク及びマルチフロー処理をリアルタイム実行する手法及びシステム
Zaykov et al. State-of-the-art reconfigurable multithreading architectures

Legal Events

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

Payment date: 20130701

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140630

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150619

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160628

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee