KR20160083916A - 정보 처리 장치, 정보 처리 방법, 기록 매체, 계산 처리 장치, 계산 처리 방법 - Google Patents

정보 처리 장치, 정보 처리 방법, 기록 매체, 계산 처리 장치, 계산 처리 방법 Download PDF

Info

Publication number
KR20160083916A
KR20160083916A KR1020167014916A KR20167014916A KR20160083916A KR 20160083916 A KR20160083916 A KR 20160083916A KR 1020167014916 A KR1020167014916 A KR 1020167014916A KR 20167014916 A KR20167014916 A KR 20167014916A KR 20160083916 A KR20160083916 A KR 20160083916A
Authority
KR
South Korea
Prior art keywords
calculation
core
exception
control
calculation process
Prior art date
Application number
KR1020167014916A
Other languages
English (en)
Other versions
KR101783164B1 (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 KR20160083916A publication Critical patent/KR20160083916A/ko
Application granted granted Critical
Publication of KR101783164B1 publication Critical patent/KR101783164B1/ko

Links

Images

Classifications

    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/481Exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)

Abstract

본 발명은 OS 지터 및 캐시 오염뿐만 아니라, 범용성의 상실 및 급격한 개발비 상승이라고 하는 문제를 해결한다. 본 발명에서, 정보 처리 장치에는, 운영체계가 설치된 제어 코어와, 제어 코어에 의해 제어되고, 규정된 계산 프로세스를 행하는 적어도 하나의 계산 코어가 제공된다. 제어 코어에는, 정지된 계산 코어에게 상기 계산 코어가 행할 계산 프로세스의 개시를 지시하는 계산 코어 제어부가 제공된다. 계산 코어에는, 계산 코어 제어부로부터의 계산 프로세스의 개시 지시에 응답하여 계산 프로세스를 개시하도록 상기 계산 코어를 제어하는 계산 프로세스 제어부; 및 계산 프로세스의 실행 중에 발생한 미리 설정된 예외 프로세스를 검출하고, 상기 예외 프로세스가 발생한 계산 프로세스의 실행을 정지하는 예외 검출부가 제공된다.

Description

정보 처리 장치, 정보 처리 방법, 기록 매체, 계산 처리 장치, 계산 처리 방법{INFORMATION PROCESSING DEVICE, INFORMATION PROCESSING METHOD, RECORDING MEDIUM, CALCULATION PROCESSING DEVICE, CALCULATION PROCESSING METHOD}
본 발명은 정보 처리 장치, 정보 처리 방법, 기록 매체, 계산 처리 장치, 계산 처리 방법에 관한 것이고, 특히, 복수의 프로세서를 이용하여 병렬 계산을 행하는 정보 처리 장치, 정보 처리 방법, 프로그램, 계산 처리 장치, 및 계산 처리 방법에 관한 것이다.
프로세서-메모리-쌍을 각각 포함하는 복수의 노드가 인터커넥트를 통해 접속되는 NUMA(Non-Uniform Memory Access)형의 병렬 컴퓨터가 알려져 있다. NUMA형의 병렬 컴퓨터는, 프로세서의 노드에 속하는 로컬 메모리에 대한 액세스와 다른 노드에 속하는 리모트 메모리에 대한 액세스 간의 액세스 비용이 불균일한 시스템이다.
이러한 병렬 컴퓨터의 일례로서는, 하나 이상의 프로세서와, 상기 하나 이상의 프로세서에 의해 사용되는 주 메모리로 이루어지는 복수의 클러스터를 포함하고, 여기서 프로세스의 가상 공간의 일부에는 실제 메모리에 상주하는 통신 영역이 제공되는 것이 알려져 있다. 이러한 병렬 컴퓨터는, 프로세스간 데이터 통신에 대한 오버헤드를 삭감할 수 있다(특허문헌 1).
또 다른 알려진 예는, 제어용 노드와 연산용 노드를 포함하는 컴퓨터 시스템인데, 여기서 연산용 노드는 리모트 프로세스만을 실행하도록 구성될 수 있다(특허문헌 2).
일본 특허 출원 공개 번호 제06-019856호 일본 특허 출원 공개 번호 제2008-165318호
일반적으로, 이러한 병렬 컴퓨터 상에서는, 운영체계(operating system: OS) 등의 시스템 제어 프로그램으로부터의 간섭(예를 들면, 타이머 인터럽트)에 기인하는 인터럽트 처리가 발생한다. 그 결과, 노드들 간에 애플리케이션이 실행하는 속도가 불균일해질 수 있다. 따라서, 프로세서는 타프로세서와의 동기화를 대기할 필요가 있어, 병행 프로그램의 실행 속도를 저하시키는 소위 OS 지터(OS jitter)라고 하는 문제를 발생시킬 수 있다.
또한, 커널 프로세스(kernel process) 등의 OS 프로세스 동안 발생한 메모리 액세스로 인해, 캐시에는 애플리케이션 프로그램에서 이용되지 않는 데이터가 저장될 수 있다. 그 결과, 애플리케이션 프로그램에서 이용되는 데이터가 캐시로부터 축출될 수 있는데, 이는 소위 캐시 오염이라고 불리는 문제이다.
이러한 문제를 해결하는 방법으로서는, 예를 들어 SMP(symmetric multiple processor) 컴퓨터에 있어서의 로크의 제약을 포함할 수 있어, 시스템 콜을 실행하는 프로세서를 한정하거나, 마이크로커널-기반의 분산 OS를 이용할 수 있다. 그러나, 이들 방법, 즉 한 노드로부터 다른 노드로의 OS 기능의 권한 이양(오프로딩)하는 방법은, 접속되는 I/O(input/output) 디바이스마다 전용의 디바이스 드라이버의 개발을 필요로 한다. 그 결과, 다양한 디바이스를 지원하는 것이 곤란해진다.
또한, 이러한 문제를 완화하는 대안적 방법은, 가속형 컴퓨터를 채택하는 것일 수 있다. 그러나, 가속형 컴퓨터에서는 OS가 동작하지 않는다. 그로 인해, 가속형 컴퓨터에는, 널리 보급하고 있는 프로그래밍 언어(예를 들면, C 언어)가 따르는 API(application programming interface)(예를 들면, POSIX(Portable Operating System Interface for UNIX(등록 상표) API)이 제공되지 않고, 따라서 기본적인 시스템 제어를 행할 수 없다. 그로 인해, 가속형 컴퓨터에 있어서는, 전용 언어에서의 개발이 필요해지고 있어, 기존의 프로그래밍 자산의 활용을 곤란하게 하고 있다. 또한, 프로그래밍 자산의 최적화에도 곤란을 수반하는 경우가 있다.
OS 개발 비용을 저감하기 위한 기술은, 가상 머신을 이용한 가상화를 포함할 수 있다. 예를 들어, OS 또는 디바이스 드라이버를 개발할 필요성은 상품 아키텍처와는 다른 아키텍처의 컴퓨터에 상품 아키텍처를 에뮬레이팅하는 가상 머신을 도입함으로써 제거된다. 일반적으로, 가상 머신은 통상의 OS보다는 단순하다. 그로 인해, 가상 머신을 도입함으로써 개발 비용을 저감할 수 있을 것으로 생각된다. 그러나, 가상 머신에 기초한 가상화는 가상 머신에 의한 에뮬레이션으로 인해 오버헤드를 발생해 버린다. 또한, 가상 머신에 기초한 가상화는, 상술한 OS 지터나 캐시의 오염의 문제를 해결할 수는 없다.
이와 같이, 병렬 컴퓨터는 OS 지터나 캐시 오염의 문제를 제기한다. 이들 문제를 해결하고자 하는 노력은, 통상 범용성을 상실하거나 개발비를 증가시키는 등의 다른 문제를 야기한다.
따라서, 본 발명의 목적은, 상술한 과제인, 병렬 컴퓨터에는 OS 지터나 캐시 오염이 발생한다는 문제뿐만 아니라 범용성의 상실 및 개발비의 증가 등이라고 하는 문제를 해결하는 정보 처리 장치를 제공하는 데 있다.
이러한 목적을 달성하기 위해서, 본 발명의 한 양태에 따른 정보 처리 장치는, 운영체계가 설치된 제어 코어; 및 상기 제어 코어에 의해 제어되고 미리 결정된 계산 프로세스를 행하는 적어도 하나의 계산 코어를 포함한다. 상기 제어 코어는, 정지하고 있는 상기 계산 코어에게 상기 계산 코어가 행할 상기 계산 프로세스의 개시를 지시하는 계산 코어 제어 수단을 포함한다. 그리고, 상기 계산 코어는, 상기 계산 코어 제어 수단에 의해 제공되는, 상기 계산 프로세스의 개시 지시에 응답하여 상기 계산 코어가 상기 계산 프로세스를 개시하도록 상기 계산 코어를 제어하기 위한 계산 처리 제어 수단; 및 상기 계산 프로세스의 실행 중에 발생한 미리 설정된 예외 프로세스를 검출하고, 상기 예외 프로세스가 발생한 상기 계산 프로세스를 정지하기 위한 예외 검출 수단을 포함하고 있다.
본 발명의 다른 양태에 따른 컴퓨터 판독가능 기록 매체는, 운영체계가 설치된 제어 코어; 및 상기 제어 코어에 의해 제어되고 미리 결정된 계산 프로세스를 행하는 적어도 하나의 계산 코어를 포함한 정보 처리 장치를 포함하는 컴퓨터를 위한 프로그램을 저장한다. 상기 프로그램은, 컴퓨터로 하여금, 정지하고 있는 상기 계산 코어에게 상기 계산 코어가 행할 상기 계산 프로세스의 개시를 지시하는 계산 코어 제어 프로세스; 상기 계산 프로세스의 개시 지시에 응답하여 상기 계산 코어가 상기 계산 프로세스를 개시하도록 상기 계산 코어를 제어하는 계산 처리 제어 프로세스; 및 상기 계산 프로세스의 실행 중에 발생한 미리 설정된 예외 프로세스를 검출하고 상기 예외 프로세스가 발생한 계산 프로세스의 실행을 정지하는 예외 검출 프로세스를 수행하게 한다.
본 발명의 다른 양태에 따른 정보 처리 방법은, 제어 코어에 의해 제공되는 계산 프로세스의 개시 지시에 응답하여 미리 결정된 계산 프로세스를 계산 코어가 개시하고; 상기 계산 코어에 의해 행해진 상기 계산 프로세스의 실행 중에 미리 설정된 예외 프로세스가 발생하는 경우에는, 상기 계산 코어에 의해, 상기 예외 프로세스를 검출하고, 상기 계산 코어에 의해, 상기 예외 프로세스가 발생한 상기 계산 프로세스를 정지한다.
본 발명의 다른 양태에 따른 계산 장치는, 외부 장치의 제어 하에 미리 결정된 계산 프로세스를 행하는 계산 장치이며, 상기 계산 처리 장치는, 외부 장치에 의해 제공되는 계산 프로세스의 개시 지시에 응답하여, 상기 계산 처리 장치가 계산 프로세스를 개시하도록 상기 계산 처리 장치를 제어하는 계산 처리 제어 수단; 및 상기 계산 프로세스의 실행 중에 발생한 미리 설정된 예외 프로세스를 검출하고 상기 예외 프로세스가 발생한 상기 계산 프로세스의 실행을 정지하기 위한 예외 검출 수단을 포함한다.
본 발명의 다른 양태에 따른 컴퓨터 판독가능 저장 매체는, 계산 처리 장치로 하여금, 외부 장치에 의해 제공되는 계산 프로세스의 개시 지시에 응답하여 상기 계산 처리 장치가 상기 계산 프로세스를 개시하도록 상기 계산 처리 장치를 제어하는 계산 처리 제어 프로세스; 및 상기 계산 프로세스의 실행 중에 발생한 미리 설정된 예외 프로세스를 검출하고 상기 예외 프로세스가 발생한 상기 계산 프로세스의 실행을 정지하는 예외 검출 프로세스를 실행하게 하는 프로그램을 저장한다.
본 발명의 다른 양태에 따른 계산 처리 방법은, 외부 장치에 의해 제공되는 계산 프로세스의 개시 지시에 응답하여 소정의 상기 계산 프로세스를 개시하는 단계; 및 상기 계산 프로세스의 실행 중에 미리 설정된 예외 프로세스가 발생하는 경우에는, 상기 예외 프로세스를 검출하고 상기 예외 프로세스가 발생한 상기 계산 프로세스를 정지하는 단계를 포함한다.
상기 구성과 관련하여, 본 발명은 OS 지터 및 캐시 오염의 문제를 해결하는 저렴하고 범용의 정보 처리 장치를 제공할 수 있다.
도 1은 제1 실시예에서 고려된 병렬 컴퓨터의 구성을 도시하는 블록도이다.
도 2는 제1 실시예에 따른 병렬 컴퓨터의 구성을 도시하는 블록도이다.
도 3은 도 2에서 나타내는 계산 노드가 포함하는 계산 코어의 구성을 도시하는 블록도이다.
도 4는 도 2에서 나타내는 대리 프로세스의 구성을 도시하는 기능 블록도이다.
도 5는 제1 실시예에 따른 프로세스 대응표에 저장된 맵핑 데이터의 일례를 나타내는 표이다.
도 6은 제1 실시예에 따른 계산 프로세스 DB에 저장된 데이터의 일례를 나타내는 표이다.
도 7은 제1 실시예에 있어서, 계산 프로세스가 개시하고 나서 종료될 때까지, 필요한 동작이 어떻게 작용할지를 나타낸 흐름도이다.
도 8은 계산 프로세스의 개시 시에 행해진 동작을 나타내는 흐름도이다.
도 9는 계산 프로세스의 실행을 정지시킬 때 행해진 동작을 나타내는 흐름도이다.
도 10은 계산 프로세스 상에서 발생한 예외를 처리할 때 행해진 동작을 나타내는 흐름도이다.
도 11은 계산 프로세스가 OS 서비스를 필요로 할 때 행해진 동작을 나타내는 흐름도이다.
도 12는 계산 프로세스의 계산 코어에의 할당이 변경될 때 행해진 동작을 나타내는 흐름도이다.
도 13은 계산 프로세스를 종료시킬 때 행해진 동작을 나타내는 흐름도이다.
도 14는 제2 실시예에 따른 정보 처리 장치의 구성을 도시하는 블록도이다.
도 15는 제3 실시예에 따른 정보 처리 장치의 일반적 구성을 도시하는 블록도이다.
도 16은 제4 실시예에 따른 계산 처리 장치의 일반적 구성을 도시하는 블록도이다.
<실시예 1>
본 발명의 제1 실시예를, 도 1 내지 도 13을 참조해서 설명한다. 도 1은 본 실시예에서 고려되는 병렬 컴퓨터(1)의 구성을 도시하는 블록도이다. 도 2는 본 실시예에 따른 병렬 컴퓨터(1)의 구성을 도시하는 블록도이다. 도 3은 계산 노드(6)가 포함하는 계산 코어(611)의 구성을 도시하는 블록도이다. 도 4는 대리 프로세스(511)의 구성을 도시하는 기능 블록도이다. 도 5는 프로세스 대응표(522)에 저장된 맵핑 데이터의 일례를 나타내는 표이다. 도 6은 계산 프로세스 DB(521)에 저장된 데이터의 일례를 나타내는 표이다. 도 7은 제1 실시예에 있어서, 계산 프로세스가 개시하고 나서 종료될 때까지 필요한 동작이 어떻게 작용할지를 나타낸 흐름도이다. 도 8 내지 13은 계산 프로세스가 개시하고 나서 종료될 때까지 필요한 동작을 나타내는 흐름도이다.
(구성)
본 발명의 제1 실시예로서, NUMA형의 메모리를 갖는 병렬 컴퓨터(1)에 대해서 설명한다. NUMA라는 용어는, 메모리-프로세서 쌍으로 각각 구성되는 복수의 노드가 인터커넥트를 통해 서로 접속되는 구성을 나타낸다. 본 실시예에 따른 병렬 컴퓨터(1)는, 예를 들어 HPC(high performance computing) 분야에서 이용된다.
먼저, 본 실시예에 관한 병렬 컴퓨터(1)의 기본적인 구성에 대해서는 도 1을 참조해서 설명한다. 도 1에 도시한 바와 같이, 본 실시예의 병렬 컴퓨터(1)는, 노드(2)와 노드(3)를 포함하고 있다. 노드(2)는, CPU(central processing unit)(21), 메모리(22), 및 데이터 전송 회로(23)를 포함하고 있다. 노드(3)는, CPU(31), 메모리(32), 및 데이터 전송 회로(33)를 포함하고 있다. 노드(2 및 3)는, 노드간 통신 디바이스(4)(데이터 전송 회로의 일부를 포함)를 통해 서로 통신 가능하게 접속되어 있다.
본 실시예에 있어서의 병렬 컴퓨터(1)가 포함하는 노드(2 및 3)는 각각, CPU (21 또는 31), 메모리(22 또는 32), 및 데이터 전송 회로(23 또는 33)를 포함해서 구성되어 있다. 노드(2 및 3)는 각각 동일한 방식으로 구성된다. 그로 인해, 이하에 있어서는, 노드(2)의 구성 방법에 대해서 설명한다.
본 실시예에서 설명된 병렬 컴퓨터(1)가 2개의 노드를 포함하더라도, 병렬 컴퓨터(1)는, 2개 이상의 노드를 포함해서 구성될 수 있음을 유의해야 한다. 또한, 노드는, x86과 ARM(등록 상표)과 같이, 다른 아키텍처를 채택할 수 있다.
CPU(21)는, 하나 이상의 프로세서 코어를 포함해서 구성되어 있다. 본 실시예에 있어서는, CPU(21)는, 다수의 프로세서 코어, 즉 다수의 프로세서 코어(211, 212,..., 및 21m(여기서, m은 자연수)를 포함하고 있다(이하, 특별히 구별하지 않는 경우에는, 프로세서 코어(211)로 함). 각각의 프로세서 코어(211)는, 메모리(22)와 데이터 전송 회로(23)에/로부터의 통신 경로를 포함하고 있다. 즉, CPU(21)가 포함하는 복수의 프로세서 코어(211) 각각은, 메모리(22)와 통신 가능하게 구성되고, 데이터 전송 회로(23)와 통신 가능하게 구성되어 있다.
메모리(22)는, 데이터, 실행될 프로그램, 등을 저장한다. 메모리(22)는, CPU(21)가 포함하는 복수의 프로세서 코어(211)(동일 노드의 프로세서 코어)를 공유한다. 본 실시예에 있어서의 메모리(22)는, 예를 들어 RAM(random access memory) 등의 반도체 메모리의 형태로 구성된다.
데이터 전송 회로(23)는, 2개의 기능, 즉 DMA(direct memory access) 엔진 기능(231)과 CPU-다이렉티드 통신 기능(CPU-directed communication function)(232)을 포함해서 구성되어 있다. DMA 엔진 기능(231)은, CPU(21)를 통하지 않고 메모리(22)에 대하여 액세스하는 기능이다. CPU-다이렉티드 통신 기능(232)은, CPU(21) 상의 레지스터 및 다른 자원에 대하여 액세스하는 기능이다. 즉, 데이터 전송 회로(23)는, CPU(21)를 통하지 않고 메모리(22)에 대하여 액세스하는 기능과, CPU(21) 상의 레지스터 및 다른 자원에 대하여 액세스하는 기능을 포함하고 있다. CPU-다이렉티드 통신 기능(232)은, CPU(21) 상의 레지스터 및 다른 자원을, DMA 엔진 기능(231)이 액세스하게 되는 메모리 공간에 할당하게 된다.
이상, 본 실시예에 있어서의 병렬 컴퓨터(1)가 포함하는 노드(2)의 구성이 설명된다. 상술한 바와 같이, 노드(3)는 노드(2)와 마찬가지의 방식으로 구성된다. 즉, 노드(3)는, CPU(31), 메모리(32), 및 데이터 전송 회로(33)를 포함하고 있다. CPU(31)는 복수의 프로세서 코어, 즉 프로세서 코어(311, 312,..., 및 31m(이하, 특별히 구별하지 않는 경우에는, 프로세서 코어(311)로 함)을 포함하고 있다. 데이터 전송 회로(33)는, DMA 엔진 기능(331)과 CPU-다이렉티드 통신 기능(332)을 포함하고 있다. 각 구성의 상세에 대해서는, 노드(2)와 관련하여 이미 설명했기 때문에 여기서는 생략한다.
상술한 바와 같이, 노드(2 및 3)는, 노드간 통신 디바이스(4)를 통해서 서로 통신 가능하게 접속되어 있다. 노드간 통신 디바이스(4)는, 예를 들어 DMA 기능(예를 들어, PCI(Peripheral Components Interconnect) Express 또는 InfiniBand) 또는 RDMA(Remote DMA) 기능을 갖는 인터커넥트뿐만 아니라 전송로에 의해 실현될 수 있다.
본 실시예에 있어서는, 이러한 병렬 컴퓨터(1)가 포함하는 복수의 노드는, 1개의 노드를 "제어 노드"라고 칭하고, 임의의 다른 노드(제어 노드 이외의 임의의 노드)를 "계산 노드"라고 칭하여 구별한다. 즉, 본 실시예에 있어서의 병렬 컴퓨터(1)는, 1개의 제어 노드와 1개 이상의 계산 노드로 구성된다. 또한, 본 실시예에 있어서의 병렬 컴퓨터(1)에 있어서, 제어 노드는 OS 기능을 갖는 반면, 계산 노드(들)는 OS 기능을 갖지 않는다.
통상의 OS와 마찬가지로, 제어 노드는, 계산 노드 상의 복수의 프로세스를 전개하여, 동시에 계산 프로세스를 수행하게 하는 기능을 포함하고 있다. 이하에 있어서, 제어 노드에 의해 계산 노드 상에 전개된 프로세스를 계산 프로세스라고 칭한다. 후술하는 바와 같이, 계산 프로세스는, 계산 노드 상에서 동작하는 애플리케이션 프로그램의 개시에 따라 생성된 다음, 프로그램의 실행의 종료에 따라 파기된다.
이하, 도 1에서의 노드(2 및 3)를 각각 제어 노드(5) 및 계산 노드(6)로서 병렬 컴퓨터를 구성했을 경우에 대해서, 도 2를 사용해서 병렬 컴퓨터(1)의 상세한 설명을 제공한다. 이후의 설명에서는, 계산 노드(6) 상의 프로세서 코어(311)를 계산 코어라고 칭한다.
먼저, 계산 노드(6)의 구성에 대해서 설명한다. 계산 노드(6)는, 상술한 바와 같이, OS는 계산 노드(6) 상에서 동작하지 않는다(OS가 설치되어 있지 않다). 후술하는 바와 같이, 본 실시예에 있어서의 병렬 컴퓨터(1)는, OS가 동작하지 않는 계산 노드(6)가 일반의 컴퓨터가 실현하는 계산 모델을 채택할 수 있게 구성되어 있다. 즉, 계산 노드(6)는, 노드간 통신 디바이스(4)를 통해서 제어 노드(5)에/로부터의 데이터의 송수신을 행함으로써, 일반의 OS가 제공하는 서비스의 대체 기능을 실현한다.
본 실시예에 있어서의 계산 노드(6)(도 1의 노드(3)에 상당함)는 상술한 바와 같이, CPU(31), 메모리(32), 및 데이터 전송 회로(33)를 포함해서 구성되어 있다(도 1 참조). CPU(31)는, 복수의 프로세서 코어(311)를 포함해서 구성되어 있다. 계산 노드(6)는, 도 2에 도시된 바와 같이, 복수의 계산 코어(611, 612,..., 및 61m)(이하, 특별히 구별하지 않을 경우에 있어서는, 계산 코어(들)(611)라고 함)를 포함하고 있다.
이미 설명한 바와 같이, 도 2에서의 복수의 계산 코어(611)는, 도 1에서 나타내는 그들의 대응하는 프로세서 코어(311)와 동일하다(상술한 바와 같이, 계산 노드(6) 상의 프로세서 코어(311)을 계산 코어(611)라고 칭함). 즉, 계산 노드(6)가 포함하는 CPU(31)는, 복수의 계산 코어(611)를 포함해서 구성되어 있다. 복수의 계산 코어(611)는 각각, 메모리(32)와 그리고 데이터 전송 회로(33)와 통신 가능하게 구성되어 있다. 상술한 바와 같이, 프로세서 코어(311)는 하나만 있을 수 있다는 점에 유의해야 한다. 즉, 계산 코어(611)의 수는 1일 수 있다. 계산 코어(611)의 상세한 구성에 대해서는 후술한다.
메모리(32)는, 상술한 바와 같이, 동일한 계산 노드(6) 내의 계산 코어(611)에 의해 공유된다. 도 2에서 도시된 바와 같이, 계산 노드(6) 내의 메모리(32)는, 계산 프로세스에 관련된 복수개의 데이터를 저장할 수 있게 구성되어 있다. 이하에 있어서, 메모리(32)에 저장된 계산 프로세스에 관련된 복수개의 데이터를, 프로세스 이미지(321, 322,..., 및 32n(n은 자연수)(이하, 특별히 구별하지 않을 경우에 있어서는, 프로세스 이미지(들)(321)라고 함)이라고 칭한다.
프로세스 이미지(321)는, 각각, 제어 노드(5)로부터 계산 프로세스의 데이터를 판독 및 기입하기 위해 사용되는 통신 버퍼 영역(3211, 3221,..., 및 32n1)(이하, 특별히 구별하지 않을 경우에 있어서는, 통신 버퍼 영역(들)(3211)이라고 함)을 포함한다. 프로세스 이미지(321)를 조작하는 계산 코어(611)의 아키텍처 상태를 컨텍스트(611A, 612B,..., 및 61mC)(이하, 특별히 구별하지 않을 경우에 있어서는, 컨텍스트(611A)라고 함)라고 칭한다.
메모리(32)에 저장 가능한 프로세스 이미지(321)의 임의의 총 수는, 프로세스 이미지(321)의 총 용량이 물리적 메모리의 용량을 초과하지 않는 한 임의인 값을 취할 수 있다고 가정한다. 계산 코어(611)의 수는, 메모리(32)가 저장한 프로세스 이미지(321)의 수와 반드시 일치하지 않을 수 있다.
상술한 바와 같이, 계산 노드(6) 상에서는, OS가 동작하지 않는다. 그로 인해, 계산 노드(6) 상에서는, OS에 의해 제공된 시스템 관리 기능을 사용하여 하드웨어(계산 코어(611) 및 메모리(32))의 가상화를 행할 수는 없다. 따라서, 계산 코어(611)는 1개의 계산 프로세스의 컨텍스트(611A)를 포함한다. 계산 코어(611)는, 메모리(32)에 저장된 저장되고 저장된 컨텍스트(611A)에 맵핑되는 프로세스 이미지(321)를 사용하여, 계산 프로세스를 처리한다.
프로세스 이미지(321)의 총 수가 계산 코어(611)의 총 수보다도 많은 경우에는, 계산 코어(611)에 저장할 수 없었던 컨텍스트(611A)를 현재는 실행할 수 없다. 그 경우에, 계산 코어(611)에 포함된 컨텍스트(611A)를 다른 컨텍스트(611A)로 교체함으로써 가상적으로 계산 코어(611)의 명백한 총 수를 증가시킬 수 있다. 이러한 컨텍스트(611A)의 교체 방법(context switch)의 상세에 대해서는, 후술한다.
데이터 전송 회로(33)는, 상기 노드(2)에서와 동일한 방식으로 기능한다. 그로 인해, 상세한 설명에 대해서는 생략한다.
이상, 계산 노드(6)의 구성에 대해서 상세히 설명한다. 여기서, 계산 코어(611)의 구성에 대해서 도 3을 참조하여 상세하게 설명한다.
계산 코어(611)는, 도 3에서 도시된 바와 같이, 범용 레지스터 군(6111)과, 제어 레지스터 군(6112)(계산 처리 제어부)과, 예외 검출부(6113)(예외 검출부)와, 예외 통지부(6114)(예외 검출부)와, 레지스터 군 액세스부(6115)(데이터 전송 회로의 일부)를 포함해서 구성되어 있다. 또한, 계산 코어(611)는, 데이터 전송 회로(33)를 통해서 노드간 통신 디바이스(4)와 통신 가능하게 구성되어 있다. 또한, 계산 코어(611)는, 메모리(32)와 통신 가능하게 구성되어 있다.
범용 레지스터 군(6111)은, x86 또는 ARM 등의 일반적인 프로세서와 마찬가지의 구성을 포함하고 있다. 즉, 범용 레지스터 군(6111)은, 프로그램 카운터(PC), 연산 결과를 저장하는 범용 레지스터(GPR) 등으로 구성된다.
이것이 의미하는 것은 계산 코어(611)에서의 명령(계산 프로세스 또는 프로그램)의 실행이 범용 레지스터 군(6111)이 포함하는 각 레지스터에 저장된 데이터를 재기입하게 하게 하는 것이다. 또한, 계산 코어(611)에서 로드 명령이나 스토어 명령(판독 또는 기입과 같은)을 실행함으로써, 범용 레지스터 군(6111)이 포함하는 범용 레지스터와 메모리(32) 사이에서 데이터 전송이 행하여지게 한다.
제어 레지스터 군(6112)은, 계산 코어(611)에 의해 행해진 명령의 실행을 제어하기 위한 레지스터로 구성된다. 제어 노드(5)는, 데이터 전송 회로(23, 33)를 통해서 그리고 노드간 통신 디바이스(4)를 통해서, 제어 레지스터 군(6112)에 대하여 명령의 실행을 지시하는 "실행의 개시", 또는 명령의 실행 정지를 지시하는 "실행의 정지"를 송신한다.
예를 들어, 제어 노드(5)가 제어 레지스터 군(6112)에 대하여 "실행의 개시"를 송신했다고 가정한다. 그 다음, 계산 코어(611)는, 범용 레지스터 군(6111)의 내용에 따라서 계산 프로세스를 개시한다. 구체적으로는, 제어 레지스터 군(6112)이 "실행의 개시"의 지시를 수신하면, 계산 코어(611)는, 범용 레지스터 군(6111)이 저장하는 프로그램 카운터의 값에 따라, 메모리(32)가 저장하는 명령을 페치한다. 계산 코어(611)는, 페치한 명령을 디코딩해서 실행한다. 계산 코어(611)는, 명령의 실행에 따라, 범용 레지스터 군(6111) 및/또는 메모리(32)의 내용을 갱신한다. 계산 코어(611)에 의해 명령이 실행되는(계산 프로세스가 행하여지고 있음) 상태를, "명령 실행 상태"라고 칭한다.
또한, 예를 들어, 제어 노드(5)가 제어 레지스터 군(6112)에 대하여 "실행의 정지"를 송신했다고 가정한다. 그 다음, 계산 코어(611)는 임의의 새로운 명령 실행을 정지한다. 그 결과, 계산 코어(611)는, 임의의 명령의 실행을 정지한다. 계산 코어(611)가 "실행의 정지" 동안 진행 중인 명령을 갖지 않는 상태를, "명령 실행 정지 상태"라고 칭한다. 일단 상태가 명령 실행 정지 상태로 천이되면, 계산 코어(611)는, 제어 노드(5)에 의해 다시 "실행의 개시" 지시가 제공될 때까지, 임의의 새로운 명령 실행(계산 프로세스)을 행하지 않는다.
제어 레지스터 군(6112)은, 계산 코어(611)의 상태(명령 실행 상태 또는 명령 실행 정지 상태)가 제어 노드(5)로부터 참조될 수 있게 구성된다. 예를 들어, 제어 레지스터 군(6112)(계산 코어(611))은 참조되는 기능이 없는 경우, 계산 코어(611)는, 후술하는 예외 정보를 송출함으로써 계산 코어(611)의 상태를 제어 노드(5)에 통지하도록 구성될 수 있다.
예외 검출부(6113)는, 제어 레지스터 군(6112)에 의한 명령의 실행 중에 발생한 임의의 예외를 검출하는 부분이다. 구체적으로는, 명령의 실행 중에 임의의 예외를 검출한 경우, 예외 검출부(6113)는 제어 레지스터 군(6112)에 "실행의 정지"의 지시를 송신한다. 동시에(또는 그 전후로), 예외 검출부(6113)는, 예외 통지부(6114)에 대하여 예외의 통지를 위한 요청을 제공한다(예외의 발생을 통지함). 예외 검출부(6113)는, 예를 들어, 검출된 예외에 대한 정보를 예외 통지부(6114)에 송신함으로써, 예외 통지를 위한 요청을 예외 통지부(6114)에 제공한다.
예외 검출부(6113)가 검출한 예외는, 예를 들어, 제로 제산 예외(divide-by-zero computation exception) 등의 예외적 연산을 포함한다. 또한, 예를 들어, 메모리 액세스 경계 위반(out-of-bounds memory access) 등의 메모리 액세스 관련 예외(exceptions related to memory access), 또는 시스템 콜 호출을 위한 소프트웨어 트랩 등의 일반의 프로세서 상에 제공된 예외를 포함한다. 예외 검출부(6113)는, 명령의 실행 중에 이러한 예외가 발생한 경우에, 그러한 예외를 검출한다.
예외 통지부(6114)는, 제어 노드(5)에 계산 코어(611)의 실행 정지를 통지한다. 구체적으로는, 예외 통지부(6114)는, 예외 검출부(6113)로부터 수신한 검출된 예외에 대한 정보에 기초하여, 노드간 통신 디바이스(4)를 통해서 제어 노드(5)에 대하여 계산 코어(611) 상의 "실행의 정지"를 제공한다.
예외 통지부(6114)에 의한 예외의 발생을 통지하기 위한 방법을 구현하는 방법에 대해서는, 예외의 발생을 제어 노드(5)에 통지할 수 있는 한, 제한이 부과되지는 않는다. 예외 통지부(6114)를 구현하기 위한 방법은, 예를 들어, PCI Express의 MSI(Message Signaled Interrupts)/MSI-X(MSIExtended)와 같은, 노드간 통신 디바이스(4)의 인터럽트 기능을 사용하는 단계를 포함할 수 있다. 예를 들어, 한가지 가능한 방법은, 사전에 예약한 메모리 영역(제어 노드(5)가 포함하는 메모리(22))에의 DMA 기입을 행하는 것일 수 있다. 이러한 메모리(22)에의 DMA 기입이 예외의 발생을 제어 노드(5)에 통지하기 위한 방법으로서 채택되는 경우에는, 제어 노드(5)(후술하는 상부 계산 노드 관리 프로세스)는 계산 노드(6)로부터 제공된 그러한 통지의 유무를 감시하기 위해 폴링 또는 유사한 프로세스를 이용한다.
예외 통지부(6114)는, 제어 노드(5)측으로부터 설정함으로써, 제어 노드(5)에의 예외 발생의 통지를 방지할 수 있게 구성될 수 있음에 유의해야 한다. 이와 같이 예외 통지부(6114)가 예외 발생의 통지를 방지한 경우에 대비하여, 제어 노드(5)가 직접, 제어 레지스터 군(6112)의 실행 상태를 감시(예를 들어, 폴링의 실행)할 수 있게, 제어 노드(5)를 구성할 수 있다.
레지스터 군 액세스부(6115)는, 제어 노드(5)로부터 송신된 지시에 기초하여, 범용 레지스터 군(6111) 및 제어 레지스터 군(6112)의 각각에 대하여 판독 및 기입을 행한다. 범용 레지스터 군(6111) 및 제어 레지스터 군(6112) 양측은, 레지스터 군 액세스부(6115), 데이터 전송 회로(33), 및 노드간 통신 디바이스(4)를 통해서 제어 노드(5)에 대해 데이터의 송수신을 행한다.
레지스터 군 액세스부(6115)는, 명령 실행 상태에 있는 계산 코어(611)의 범용 레지스터 군(6111)에 대해 판독/기입을 방지하도록 구성될 수 있다. 즉, 레지스터 군 액세스부(6115)는, 계산 코어(611)가 명령 실행 정지 상태에 있을 때에만 범용 레지스터 군(6111)에 대해 기입/판독이 행해지도록 구성될 수 있다. 이 경우, 레지스터 군 액세스부(6115)가 범용 레지스터 군(6111)에 액세스할 때 명령 실행 상태의 계산 코어(611)의 동작은 정의되지 않는다(예를 들어, 액세스가 무시됨).
이상, 계산 코어(611)의 구성에 대해서 상세히 설명된다. 이어서, 제어 노드(5)의 구성에 대해서 상세하게 설명한다.
제어 노드(5)는, OS를 채택하는 통상의 스탠드 얼론(stand-alone)형의 컴퓨터 시스템과 유사하게 구성된다. 상술한 바와 같이, 제어 노드(5)는, 계산 노드(6)에 대하여 OS 기능의 서비스를 제공할 수 있게 구성되어 있다.
이후에는, 제어 노드(5) 상에 설치되는 OS를 제어 노드용 OS(50)라고 칭한다. 제어 노드용 OS(50)로서는, 예를 들어 Linux(등록 상표) 및 Windows(등록 상표) 등으로 대표되는 것을 포함하는, 일반적인 컴퓨터에 사용되는 임의의 상품 OS를 사용할 수 있다.
본 실시예에 있어서의 제어 노드(5)(도 1의 노드(2)에 상당함)는 상술한 바와 같이, CPU(21)(제어 코어, 대리 예외 처리부, 및 계산 코어 제어부), 메모리(22), 및 데이터 전송 회로(23)를 포함해서 구성되어 있다(도 1 참조). CPU(21)는, 복수의 프로세서 코어(211)를 포함해서 구성되어 있다.
상술한 바와 같이, 제어 노드(5) 상에서는, 제어 노드용 OS(50)가 동작한다. 그로 인해, 계산 노드(6)와는 다르게, OS에 의해 제공된 시스템 관리 기능을 사용해서 하드웨어(프로세서 코어(211), 메모리(22))의 가상화를 제어 노드(5) 상에서 행할 수 있다. 따라서, 이하에 있어서는, 도 2를 참조하여 프로세스 구성과 관련하여 제어 노드(5)를 설명한다.
제어 노드(5)는, 제어 노드용 OS(50) 상에서 복수의 대리 프로세스(511, 512, ..., 및 51n(이하, 특별히 구별하지 않는 경우에는 대리 프로세스(들)(511)로 하고; 대리 프로세스(511)는 대리 예외 처리부에 상당함) 및 계산 노드용 관리 프로세스(52)(계산 코어 제어부에 상당함)를 전개한다. 계산 노드용 관리 프로세스(52)는, 계산 프로세스 DB(database)(521) 및 프로세스 대응표(522)를 포함한다.
이들 프로세스는, 메모리(22)에 저장된 프로그램을 판독 및 실행함으로써 실현될 수 있고, 그 판독 및 실행은 제어 노드(5) 상의 CPU(21)에 의해 행해진다.
대리 프로세스(511)는, 계산 노드(6) 상에 전개된 각각의 대응하는 계산 프로세스에 대해 생성된다. 즉, 대리 프로세스(511)는, 계산 노드(6) 상의 메모리(32)에 저장된 복수의 프로세스 이미지(321)에 대하여 각각, 1대1로 대응하도록 생성된다. 따라서, 제어 노드(5) 상에 전개된 대리 프로세스(511)의 수는, 계산 노드(6) 상의 메모리(32)에 저장된 프로세스 이미지(321)의 수와 동일하다.
본 실시예에 있어서, 대리 프로세스(511)는, 계산 노드(6) 상의 대응하는 계산 프로세스로부터 송신된 OS에의 요청을, 노드간 통신 디바이스(4)를 통해 접수한다. 그 다음, 대리 프로세스(511)는, 계산 노드(6)에 존재해야 할 OS의 대리로서, 요청된 처리를 수행한다. 즉, 대리 프로세스(511)는, 계산 코어(611) 상에서 명령을 실행 중에 시스템 콜을 호출하는 필요가 있을 때에, OS를 갖지 않는 계산 노드(6) 대신에 시스템 콜의 호출을 위해서 사용된다. 예를 들어, 대리 프로세스(511)는, 후술하는 바와 같이, 계산 프로세스를 개시할 때에 사용된다.
도 4에서 도시된 바와 같이, 대리 프로세스(511)는 인수 기입 영역(5111)과 데이터 버퍼 영역(5112)을 포함한다. 또한, 데이터 버퍼 영역(5112)이 확보되는 한, 대리 프로세스(511)는 상기 영역을 필요에 따라서 구성될 수 있다.
인수 기입 영역(5111)은 시스템 콜 번호와 인수를 기입하기 위한 영역이다. 또한, 포인터가 시스템 콜 인수에 포함되는 경우, 포인터에 의해 참조되는 데이터가 인수 기입 영역(5111)에 기입된다. 이러한 시스템 콜을 호출할 때, 일반적인 ABI(Application Binary Interface)에서는, 프로세서 코어(311)(계산 코어(611)) 상의 범용 레지스터 또는 스택에 시스템 콜 번호와 인수를 기입한다. 그러나, 본 실시예의 계산 코어(611) 상에는, OS가 설치되어 있지 않다. 따라서, 본 실시예에 따른 시스템 상에서, 대리 프로세스(511) 내의 인수 기입 영역(5111)에는, 시스템 콜 번호와 인수를 기입한다.
데이터 버퍼 영역(5112)는, 예를 들어 시스템 콜의 내용에 기초한 버퍼의 전송에 필요하다고 간주될 경우에, 계산 코어(611)로부터 대리 프로세스(511)에 버퍼를 전송할 때에 사용된다. 버퍼의 전송은, 예를 들어 기입 시스템 콜에 필요해진다.
이와 같이, 대리 프로세스(511)는, 계산 코어(611) 상에 시스템 콜을 호출할 필요가 발생했을 때에 사용된다. 인수 기입 영역(5111)과 데이터 버퍼 영역(5112) 둘 다는, 계산 코어(611) 상에 시스템 콜을 호출할 때에 필요한 데이터 교환을 행하기 위해서, 소프트웨어 예외를 발생시키는 전후에 이용된다. 따라서, 인수 기입 영역(5111)과 데이터 버퍼 영역(5112)의 2개의 영역 중 어느 하나가 필요해지기 전에(또는, 필요할 때), 계산 코어(611)에 통지가 제공되도록 대리 프로세스(511)가 구성된다. 그로 인해, 계산 코어(611)는, 명령을 실행하는 중에 시스템 콜을 호출할 필요가 있을 때, 적절한 데이터를 2개의 영역 중 어느 한 영역에 기입할 수 있다. 필요한 데이터를 어느 한 영역에 기입한 후에, 계산 코어(611)는, 소프트웨어 예외를 발생시킨다. 이러한 구성은, 계산 코어(611)가 제어 노드(5)에 시스템 콜을 처리하게 한다.
계산 노드용 관리 프로세스(52)는, 계산 노드(6)에 대하여 생성되는 프로세스이다. 계산 노드용 관리 프로세스(52)는, 계산 코어(611)(프로세서 코어(311)) 및 메모리(32) 등, 계산 노드(6) 상의 하드웨어 자원을 관리한다. 또한, 계산 노드용 관리 프로세스(52)는, 일부의 자원에 대한 인터페이스로서 작동하여, 대리 프로세스(511)로부터 계산 코어(611)로의 액세스를 실시한다.
구체적으로는, 예를 들어, 계산 노드용 관리 프로세스(52)는, 계산 노드(6) 상에서 실행될 계산 프로세스의 총 수가 계산 코어(611)의 총 수를 상회하는 경우에, 계산 프로세스를 실행하는 계산 코어(611)의 할당을 행한다. 또한, 계산 노드용 관리 프로세스(52)는, 계산 노드(6) 상의 메모리 관리를 행한다. 이와 같이, 계산 노드용 관리 프로세스(52)는, 프로세스간의 조정이 필요한 조작을 행한다.
이러한 조작을 실현하기 위해서, 계산 노드용 관리 프로세스(52)는, 계산 코어(611) 및 메모리(32) 등, 계산 노드(6) 상의 하드웨어 자원이 계산 프로세스 및 대리 프로세스 등, 가상화된 자원과 관련되도록 관리한다.
구체적으로는, 본 실시예에 있어서의 계산 노드용 관리 프로세스(52)는, 서로 관련된 대리 프로세스(511)과 계산 코어(611)를 프로세스 대응표(522)에 저장함으로써 이들 자원을 관리한다. 도 5는 프로세스 대응표(522)에 저장된 관련된 개수의 데이터의 일례를 도시한다.
도 5에서 도시된 바와 같이, 본 실시예에 있어서의 프로세스 대응표(522)는, 서로 관련된 계산 프로세스 ID와 할당된 계산 코어 번호를 저장한다. 계산 프로세스 ID는, 대리 프로세스(511)(계산 프로세스)마다 할당되어, 각각 대리 프로세스(511) 또는 계산 프로세스를 식별한다. 할당된 계산 코어 번호는, 계산 프로세스 ID가 나타내는 계산 프로세스를 실행하고 있는 계산 코어(611)를 식별하기 위해서, 계산 코어(611)에 할당된다. 이와 같이, 계산 노드용 관리 프로세스(52)는, 대리 프로세스(511)(계산 프로세스)를, 계산 프로세스를 실행 중인 계산 코어(611)와 연관시킴으로써, 서로 각각 연관된 하드웨어 자원과 가상화된 자원을 관리할 수 있게 된다. 계산 프로세스가 임의의 계산 코어(611)에 할당되어 있지 않을 경우(계산 프로세스가 임의의 계산 코어(611)에 의해 실행 중이 아닌 경우)에는, 계산 프로세스 ID에 대응하는 할당된 계산 코어 번호 필드는, 계산 코어 번호가 없는 것을 도시한다(도 5에서는 "없음").
또한, 계산 노드용 관리 프로세스(52)는, 계산 노드(6) 상의 계산 프로세스에 대한 정보를, 계산 프로세스 DB(521)에 정보를 저장해서 관리한다.
도 6은 계산 프로세스 DB(521)에 저장되어 있는 데이터의 일례를 도시한다. 도 6에 도시된 예시적 데이터베이스는, 계산 프로세스가, 계산 코어(611) 상의 범용 레지스터 군(6111)에 저장하는 정보를 제어 노드(5)측에 보존함으로써 생성된다.
도 6에 도시한 바와 같이, 계산 프로세스 DB(521)는, 계산 프로세스 ID, 프로세스 상태, 대리 프로세스 ID, 및 범용 레지스터 군이 갖는 각 레지스터(레지스터 A, 레지스터 B, 레지스터 C, 등)를 포함하는 항목의 형태로 계산 프로세스에 대한 정보를 갖고 있다. 계산 프로세스 DB(521)는, 예를 들어 이미 할당된 메모리 영역에 대한 정보도 포함할 수 있다. 프로세스 상태의 열에는, "계산 프로세스가 동작 가능한", "계산 프로세스가 동작을 종료한", 등을 나타내는 계산 프로세스의 상태에 대한 정보가 포함되어 있다. 각 레지스터(레지스터 A, 레지스터 B, 레지스터 C, 등)의 열에는, 각 레지스터의 값이 포함되어 있다. 계산 프로세스 DB(521)에 저장된 데이터베이스에 있어서의 모든 행은, 1개의 계산 프로세스의 컨텍스트에 대응한다.
이상, 제어 노드(5) 상에 전개되는 프로세스의 구성에 대해서 설명된다. 계산 노드가 복수인 경우에는, 각각의 계산 노드에 대하여 복수의 계산 노드 관리 프로세스(52)가 생성된다.
본 실시예에 있어서의 병렬 컴퓨터(1)에 있어서, 각 프로세스가 액세스 가능한 자원을 열거해 둔다.
계산 프로세스는, 자신의 프로세스 이미지(321)와, 자신의 컨텍스트(611A)와, 자신의 대리 프로세스(511)가 데이터를 기입한 인수 기입 영역(5111)에 액세스 가능하다.
대리 프로세스(511)는, 대응하는 계산 프로세스가 액세스할 수 있는 자원과, 제어 노드(5) 상의 프로세스가 액세스할 수 있는 모든 자원에 대하여 액세스 가능하다. 즉, 대리 프로세스(511)는, 프로세스 이미지(321)와 컨텍스트(611A)에 액세스할 수 있다. 제어 노드(5) 상의 프로세스가 액세스 가능한 자원은, 예를 들어 제어 노드(5) 상에 존재하는 파일 시스템 내의 파일을 포함한다.
계산 노드용 관리 프로세스(52)는, 계산 노드(6) 상의 모든 자원과, 계산 프로세스 DB(521)와, 프로세스 대응표(522)에 액세스 가능하다. 또한, 계산 노드용 관리 프로세스(52)는, 임의의 대리 프로세스(511)에 계산 프로세스에 의한 예외 발생을 통지 가능하다.
계산 노드(6) 상의 모든 자원은, 계산 노드(6) 상의 전체 메모리(32)뿐만 아니라, 계산 노드(6) 상의 모든 계산 코어(611)의 범용 레지스터 군(6111)과 제어 레지스터 군(6112)을 포함한다. 계산 노드용 관리 프로세스(52)가 계산 노드(6) 상의 전체 메모리(32)에 액세스할 수 있기 때문에, 프로세스(52)는 모든 계산 프로세스에 대한 프로세스 이미지(321)에 대해 액세스 권한을 갖게 된다.
계산 노드용 관리 프로세스(52)는, 상술한 바와 같이, 계산 프로세스 DB(521)에 액세스할 수 있다. 그로 인해, 계산 노드용 관리 프로세스(52)는, 모든 계산 프로세스에 대한 컨텍스트(611A)에 대해 액세스 권한을 갖게 된다.
계산 노드용 관리 프로세스(52)는, 대리 프로세스(511)가 보유한 자원, 예를 들면 대리 프로세스(511)의 메모리 영역 또는 컨텍스트에 반드시 액세스할 권한이 필요한 것은 아니다.
이상, 본 실시예에 있어서의 병렬 컴퓨터(1)의 구성에 대해서 설명된다. 이와 같은 구성으로 인해, OS 지터 및 캐시 오염의 문제를 해결하는 저렴하고 범용의 병렬 컴퓨터를 구성할 수 있다.
본 실시예에 있어서의 병렬 컴퓨터(1)의 동작을, 도 7 내지 도 13을 참조해서 설명한다.
(동작)
도 7은, 상술한 구성의 병렬 컴퓨터(1) 상에 전개되는 계산 프로세스가 개시하고 나서 종료될 때까지, 필요한 동작이 어떻게 작용할지를 나타낸 흐름도이다. 도 7에서 도시된 바와 같이, 병렬 컴퓨터(1) 상에서 계산 프로세스를 전개(계산 프로세스를 개시해서 계산 프로세스를 종료함)하기 위해, 이하의 동작이 필요해진다.
1. 계산 프로세스의 개시(프로그램의 개시)
2. 계산 프로세스의 실행 정지(프로그램의 정지)
3. 계산 프로세스 상에서 발생한 예외 프로세스의 처리(예외 프로세스)
4. 계산 프로세스가 OS 서비스를 필요로 하는 경우의 프로세스의 실행(시스템 콜)
5. 계산 프로세스의 계산 코어에의 할당의 변경(컨텍스트 스위치)
6. 계산 프로세스의 종료(프로그램의 종료)
일단 계산 프로세스가 시작되면, 실행 중인 프로그램이 종료하거나, 상기 임의의 동작에 의해 정지될 때까지, 계산 코어(611)는 프로그램(명령 또는 계산 프로세스)을 계속해서 실행한다.
상술한 구성의 병렬 컴퓨터(1) 상의 상기 동작을 실현함으로써, 계산 노드(6) 상의 임의의 OS가 없이도, POSIX API 등의 OS의 존재를 전제로 한 서비스를 계산 노드(6)에 제공할 수 있다. 즉, 상기 동작을 실현함으로써, 일반적인 OS가 제공된 환경에 있어서의 프로세스 동작을 병렬 컴퓨터(1)가 망라할 수 있게 한다. 이하, 상기 각 동작의 상세에 대해서 설명한다.
먼저, "1. 계산 프로세스의 개시(프로그램의 개시)" 중에 행해진 병렬 컴퓨터(1)의 동작에 대해서, 도 8을 참조해서 설명한다. 도 8은, 계산 노드(6) 상에서 프로그램의 실행이 개시될 때 행해진 동작 일례를 나타내는 흐름도이다.
먼저, 제어 노드(5) 상에서 동작하는 제어 노드용 OS(50)가 대리 프로세스(511)를 생성한다(단계 S001).
이어서, 대리 프로세스(511)는, 그의 인수 기입 영역(5111)을 계산 노드용 관리 프로세스(52)에 걸친다. 그리고 나서, 대리 프로세스(511)는, 계산 노드용 관리 프로세스(52)에 대하여 프로그램을 실행하는 계산 프로세스의 생성을 요청한다(단계 S002).
계산 프로세스 생성의 요청을 수신할 시에, 계산 노드용 관리 프로세스(52)는, 계산 프로세스를 생성한다(단계 S003).
구체적으로는, 계산 노드용 관리 프로세스(52)는, 새로운 컨텍스트(611A)를 생성한다. 계산 노드용 관리 프로세스(52)는, 계산 노드(6) 상의 메모리(32)에, 계산 프로세스에 관련되는 프로세스 이미지(321)를 생성한다. 계산 노드용 관리 프로세스(52)는, 계산 프로세스 DB(521)에, 대리 프로세스(511)에 연관되고 상기와 같이 생성한 컨텍스트(611A)를 추가한다. 계산 노드용 관리 프로세스(52)는, 상기 계산 프로세스 DB(521)에 추가된 컨텍스트(611A)를, 대리 프로세스(511)로부터 패스된 인수 기입 영역(5111)와 연관시키고, 그 다음 인수 기입 영역(5111)의 내용을 상기 컨텍스트(611A)에 추가한다. 이러한 방식으로, 계산 노드용 관리 프로세스(52)는 계산 프로세스를 생성한다.
그 다음, 계산 노드용 관리 프로세스(52)는, 생성한 계산 프로세스에 액세스하기 위한 핸들을, 대리 프로세스(511)에 돌려준다. 핸들은, 예를 들어, 계산 노드용 관리 프로세스(52)가 부여하는 ID, 프로세스 ID, 또는 파일 디스크립터일 수 있다. 핸들의 일부로서, mmap에 의해 프로세스 이미지(321)에 맵핑된 영역, 또는 맵핑 영역에의 포인터가 포함될 수 있다.
그 후, 대리 프로세스(511)는, 계산 노드(6) 상에 실행될 프로그램과, 프로그램의 실행에 사용될 데이터를, 계산 노드(6)가 포함하는 메모리(32)의 프로세스 이미지(321)에 기입한다(단계 S004).
구체적으로는, 먼저, 대리 프로세스(511)는, 계산 코어(611)에 실행될 프로그램을 판독한다. 프로그램은, 예를 들어, 계산 프로세스에 의해 실행될 프로그램이 파일에 저장되어 있을 경우에는, 제어 노드용 OS(50)의 판독 시스템 콜을 호출함으로써 판독된다.
계속해서, 대리 프로세스(511)는, 계산 노드용 관리 프로세스(52)로부터 패스된 핸들을 사용하여, 계산 코어(611)에 의해 실행될 프로그램을, 메모리(32) 상의 프로세스 이미지(321)에 있어서 프로그램에 의해 지정된 장소에 배치한다. 예를 들어, 핸들이 프로세스 이미지(321)에 메모리 맵핑된 영역(region memory-mapped)을 포함하는 경우에, 대리 프로세스(511)는 프로그램에 의해 지정된 위치에 대하여 직접 메모리 스토어를 발행한다. 대안적으로, 예를 들어, 핸들이 계산 노드용 관리 프로세스(52)가 부여한 ID, 프로세스 ID, 파일 디스크립터 등일 경우에는, 대리 프로세스(511)는 프로세스 이미지(321) 상의 위치와 함께 기입될 내용을 계산 노드용 관리 프로세스(52)에 패스한다. 그 다음, 대리 프로세스(511)는 계산 노드용 관리 프로세스(52)에 대하여 프로세스 이미지(321)에의 기입을 요청한다.
또한, 대리 프로세스(511)는 계산 프로세스 DB(521)에 저장된 컨텍스트(611A) 내의 레지스터 값으로서 초기값을 설정한다.
그 후, 대리 프로세스(511)는 계산 프로그램의 실행 개시를 요청한다(단계 S005). 구체적으로는, 대리 프로세스(511)는 계산 노드용 프로세스(52)로부터 취득한 핸들을 사용하여, 계산 프로세스의 상태를 실행 가능 상태로 변경한다. 이렇게 계산 프로세스의 상태를 실행 가능 상태로 변경함으로써, 계산 노드(6) 상의 이용 가능한 계산 코어(611)(명령 실행 상태가 아닌 상태에 있는)가, 만약 있다면, 프로그램의 실행을 개시하게 한다. 이러한 동작의 상세는 후술한다(단계 S055 참조).
이상, "1. 계산 프로세스의 개시(프로그램의 개시)" 중에 행해진 병렬 컴퓨터(1)의 동작이 설명된다. 이어서, "2. 계산 프로세스의 실행 정지(프로그램의 정지)" 중에 행해진 병렬 컴퓨터(1)의 동작에 대해서, 도 9를 참조해서 설명한다. 도 9는, 대리 프로세스(511)에 대응하는 계산 코어(611)가 제어 노드(5)측으로부터 정지될 때 행해진 동작 일례를 나타내는 흐름도이다.
먼저, 계산 노드용 관리 프로세스(52)는, 프로세스 대응표(522)를 참조하고, 그 다음 정지될 프로세스 이미지(321)와 연관된 계산 프로세스를 식별하는 계산 프로세스 ID를 사용하여, 상기 계산 프로세스 ID와 연관된 할당된 계산 코어 번호를 취득한다.
계산 프로세스에 계산 코어(611)가 할당되어 있지 않을 경우(단계 S011에서, 아니오), 계산 노드용 관리 프로세스(52)는, 이하에서 설명된 단계(S012 및 S013)를 건너 뛰고, 계산 프로세스 DB(521)의 컨텍스트의 상태를 갱신한다(단계 S014). 즉, 계산 노드용 관리 프로세스(52)가, 계산 프로세스 ID와 연관된 할당된 계산 코어 번호를 발견할 수 없을 경우에는, 단계(S012 및 S013)를 행하지 않고, 계산 프로세스 DB(521)의 컨텍스트의 상태를 갱신한다.
한편, 계산 프로세스에 계산 코어(611)가 할당되어 있는 경우(단계 S011에서, 예), 계산 노드용 관리 프로세스(52)는, 계산 코어(611) 상의 레지스터 군 액세스부(6115)를 통해서 제어 레지스터 군(6112)에 대하여 계산 코어(611)의 정지를 지시한다(단계 S012). 즉, 계산 프로세스에 계산 코어(611)가 할당되어 있는 경우에는, 계산 노드용 관리 프로세스(52)는, 제어 레지스터 군(6112)에 대하여 "실행의 정지"를 지시한다.
그 후, 계산 노드용 관리 프로세스(52)는, 계산 코어(611)의 동작 상태를 발견하기 위해 레지스터 군 액세스부(6115)를 통해서 제어 레지스터 군(6112)을 확인한다(단계 S013). 계산 노드용 관리 프로세스(52)가 계산 코어(611)가 명령 실행 정지 상태에 있는 것을 확인할 수 없을 경우, 즉 계산 코어(611)가 아직 명령 실행 상태에 있는 경우(단계 S013에서 "계산 코어 동작 중"), 프로세스(52)는, 미리 정해진 시간이 경과한 후, 다시 계산 코어(611)의 동작 상태를 확인한다.
계산 노드용 관리 프로세스(52)가 계산 코어(611)가 명령 실행 정지 상태에 있는 것을 확인한 경우(단계 S013에서 "계산 코어 정지"), 프로세스(52)는, 정지된 계산 코어 번호(할당된 계산 코어 번호)를 포함하는, 프로세스 대응표(522)의 행을 갱신한다. 또한, 계산 노드용 관리 프로세스(52)는, 상기 할당된 계산 코어 번호와 연관된 계산 프로세스 ID를 포함하는 컨텍스트(611A)의 상태를 변경하기 위해, 계산 프로세스 DB(521)를 갱신한다(단계 S014).
이상, "2. 계산 프로세스의 실행 정지(프로그램의 정지)" 중에 행해진 병렬 컴퓨터(1)의 동작이 위에서 설명되었다. 이어서, "3. 계산 프로세스 상에서 발생한 예외 프로세스의 처리(예외 프로세스)" 중에 행해진 병렬 컴퓨터(1)의 동작에 대해서, 도 10을 참조해서 설명한다. 도 10은 계산 코어(611)에 의해 프로그램(명령 또는 계산 프로세스)의 실행 중에 발생한 예외를 처리하기 위한 동작 일례를 나타내는 흐름도이다.
여기서, 계산 코어(611)가 프로그램을 실행할 때 예외가 발생한 것으로 가정한다(단계 S021). 예외의 정의에 대해서는, 이미 병렬 컴퓨터(1)의 구성 방법에 대한 설명이 제공되었기 때문에, 생략한다.
예외 검출부(6113)는 발생한 예외를 검출한다. 그 다음, 예외 검출부(6113)는, 제어 레지스터 군(6112)에 대하여 "실행의 정지"의 지시를 행한다(단계 S022).
계속해서, 예외 검출부(6113)는, 예외 통지부(6114)에 대하여 예외의 발생을 통지한다. 예외 검출부(6113)로부터 예외의 통지를 수신할 시에, 예외 통지부(6114)는, 제어 노드(5) 내의 계산 노드용 관리 프로세스(52)에, 예외의 발생을 통지한다(단계 S023). 예외 통지부(6114)는 상술한 바와 같이 여러 가지 방법을 이용하여 예외가 발생한 것을 통지할 수 있다. 방법은, 예를 들어, 노드간 통신 디바이스(4)가 갖는 I/O예외 기능을 이용하고, DMA 기능을 이용하여 제어 노드(5)에 기입하고, 제어 노드(5)로부터 계산 노드(6) 상의 레지스터 감시함으로써, 통지를 포함할 수 있다. 임의의 방법에 의해 예외 통지부(6114)를 실현할 수 있다.
이상, "3. 계산 프로세스 상에서 발생한 예외 프로세스의 처리(예외 프로세스)" 중에 행해진 병렬 컴퓨터(1)의 동작은 위에서 설명되었다. 이어서, "4. 계산 프로세스가 OS 서비스를 필요로 하는 경우의 프로세스의 실행(시스템 콜)" 중에 행해진 병렬 컴퓨터(1)의 동작에 대해서, 도 11을 참조해서 설명한다. 도 11은 계산 노드(6) 상에서 호출된 시스템 콜을 처리하기 위해 행해진 동작 일례를 나타내는 흐름도이다.
프로세스 이미지(321)가 계산 코어(611) 상에서 동작하는 중에 시스템 콜을 호출할 경우, 일반적인 ABI(application binary interface)에서는, 프로세서 코어(311)(계산 코어(611)) 상의 범용 레지스터 또는 스택에 시스템 콜 번호와 인수를 기입한다. 그러나, 본 실시예의 계산 코어(611) 상에는, OS가 설치되어 있지 않다. 그로 인해, 프로세스 이미지(321)는 후술하는 동작을 행할 필요가 있다.
먼저, 본 실시예에 따른 계산 프로세스는, 대리 프로세스(511) 내의 인수 기입 영역(5111)에 시스템 콜 번호와 인수를 기입한다(단계 S031).
이제 시스템 콜 번호와 인수가 기입된 대리 프로세스(511)는, 호출될 시스템 콜의 인수에 포인터가 있는지의 여부의 판정을 행한다(단계 S032). 인수에 포인터가 없을 경우(단계 S032에서, 아니오), 단계(S033 및 S034)(이들 단계는 후술됨)를 건너 뛴 다음, 계산 코어(611)는, 후술하는 단계(S035)의 처리를 행한다. 인수에 포인터가 있을 경우(단계 S032에서, 예), 대리 프로세스(511)는 계속되어, 그 포인터가 참조하는 데이터가 사이즈에 있어서 인수 기입 영역(5111)보다도 작은 지의 여부의 판정을 행한다. 대리 프로세스(511)는, 참조된 데이터의 사이즈를 판정하기 위해서, 사이즈를 지정하는 인수의 값을 참조할 수 있다. 대안적으로, 대리 프로세스(511)는, 사이즈를 판정하기 위해 인수의 타입을 사용할 수 있다(단계 S033).
포인터가 참조하는 데이터가 사이즈에 있어서 인수 기입 영역(5111) 이상인 경우(단계 S033에서, 아니오)에는, 단계(S034)(후술하는)를 건너 뛰고, 그 다음 계산 코어(611)가 후술하는 단계(S035)의 처리를 행한다. 포인터가 참조하는 타입이 인수 기입 영역(5111)의 사이즈보다도 작은 경우(단계 S033에서, 예), 대리 프로세스(511)는, 그 포인터가 참조하는 데이터를 인수 기입 영역(5111)에 기입한다(단계 S034).
그 후, 계산 코어(611)가 시스템 콜의 예외를 발생시킨다(단계 S035). 일반적으로는, 시스템 콜의 예외는, 동일한 노드 내에서(계산 노드(6) 내에서) 처리된다. 그러나, 본 실시예에 있어서의 병렬 컴퓨터(1)의 경우에는, 예를 들어 인터럽트를 사용하여, 상술한 바와 같이, 계산 노드(6)로부터 제어 노드(5)에, 예외가 통지된다. 예외 발생 처리에 대해서는 이미 상세히 설명했기 때문에, 그 설명은 여기서 생략한다.
예외 발생 처리가 시작되면, 상술한 바와 같이, 예외의 발생이 제어 노드(5) 상의 계산 노드용 관리 프로세스(52)에 통지된다. 따라서, 예외의 발생 통지를 수신한 후, 계산 노드용 관리 프로세스(52)는, 프로세스 대응표(522)를 참조하여, 예외가 발생한 계산 코어(611)의 번호에 기초하여 계산 프로세스 ID를 얻는다. 따라서, 계산 노드용 관리 프로세스(52)는, 계산 프로세스 DB(521)를 참조함으로써, 예외가 발생한 계산 코어(611)의 번호와 연관하여 저장된 대리 프로세스(511)를 얻는다. 이후의 프로세스들은, 대리 프로세스(511)에 의해 처리된다.
먼저, 대리 프로세스(511)는, 자신의 인수 기입 영역(5111)에 기입된 인수를 해석하여, 시스템 콜을 실시하기 위해서 버퍼가 전송될 필요가 있는지를 확인한다(단계 S036).
대리 프로세스(511)가 버퍼가 전송될 필요가 있다고 발견한 경우(단계 S036에서, 예), 대리 프로세스(511)는, 대리 프로세스(511) 내에 데이터 버퍼 영역(5112)을 할당한다(단계 S037). 그 다음, 대리 프로세스(511)는, 대리 프로세스(511)에 대응하는 프로세스 이미지(321)의 버퍼 내용을, 대리 프로세스(511)의 데이터 버퍼 영역(5112)에 전송하게, 데이터 전송 회로(33)(DMA 엔진 기능(331))에 명령한다. 이런 방식으로, 계산 노드(6)로부터 제어 노드(5)에 버퍼의 내용이 전송된다(단계 S038). 이러한 계산 노드(6)로부터 제어 노드(5)에의 버퍼 내용의 전송은, 예를 들어 기입 시스템 콜에 필요하게 된다.
상기 DMA 전송의 완료 후 또는 대리 프로세스(511)가 버퍼의 전송에 불필요하다고 확인한 경우(단계 S036에서, 아니오), 대리 프로세스(511)는, 제어 노드용 OS(50)에 대하여 시스템 콜을 호출한다(함수를 실행함) (단계 S039).
시스템 콜을 호출한 후, 대리 프로세스(511)는, 대리 프로세스(511) 내의 버퍼 내용을, 상기 대리 프로세스(511)에 대응하는 프로세스 이미지(321) 내의 통신 버퍼 영역(3211)에 전송될 필요가 있는지의 여부의 판정을 행한다(단계 S040).
버퍼가 전송될 필요가 있는 경우(단계 S040에서, 예), 대리 프로세스(511)는, 데이터 전송 회로(33)(DMA 엔진(331))에 명령하여, 버퍼의 전송을 행한다(단계 S041). 이러한 제어 노드(5)로부터 계산 노드(6)에의 버퍼의 전송은, 예를 들어 판독 시스템 콜에 필요하게 된다.
상기 버퍼 전송이 완료된 후, 또는 대리 프로세스(511)가 버퍼의 전송이 불필요하다고 판정했을 경우(단계 S040에서, 아니오), 계산 노드용 관리 프로세스(52)는, 시스템 콜의 반환 값을 범용 레지스터 군(6111)에 기입한다(단계 S042). 계산 노드용 관리 프로세스(52)가, 계산 코어(611) 내의 레지스터 군 액세스(6115)를 통해 범용 레지스터 군(6111)에 시스템 콜의 반환 값을 기입한다는 점에 유의한다. 일반적인 ABI에서는, 동일 노드 내의 범용 레지스터에 시스템 콜의 반환 값이 기입된다. 그러나, 병렬 컴퓨터(1)에 있어서는, 제어 노드(5)로부터 계산 노드(6) 상의 범용 레지스터 군(6111)에 시스템 콜의 반환 값이 기입된다.
그 후, 계산 코어(611)는, 프로그램의 실행을 재개한다(단계 S043). 계산 코어(611)가 프로그램의 실행을 개시할 때의 동작은, 이미 설명했기 때문에 여기서는 생략한다.
이상, "4. 계산 프로세스가 OS 서비스를 필요로 하는 경우의 프로세스의 실행(시스템 콜)" 중에 행해진 병렬 컴퓨터(1)의 동작은 위에서 설명되었다. 이어서, "5. 계산 프로세스의 계산 코어에의 할당의 변경(컨텍스트 스위치)" 중에 행해진 병렬 컴퓨터(1)의 동작에 대해서, 도 12를 참조해서 하기에 설명한다. 도 12는, 계산 코어(611)의 수보다도 계산 프로세스의 수가 많은 경우에 행하여진 컨텍스트 스위치에 대한 동작 일례를 나타내는 흐름도이다.
먼저, 제어 노드(5) 내의 계산 노드용 관리 프로세스(52)는, 정지하게 될 계산 코어(611)를 선택한다(단계 S051). 예를 들어, 미리 정해진 일정 시간이 경과할 때마다, 이러한 계산 노드용 관리 프로세스(52)는 정지될 계산 코어(611)를 선택한다. 계산 노드용 관리 프로세스(52)는, 정지될 계산 코어(611)의 선택을 행하는 임의의 방법을 이용할 수 있다.
이어서, 계산 노드용 관리 프로세스(52)는, 상기 단계(S051)에서 선택된 계산 코어(611)를 정지시킨다(단계 S052). 계산 코어(611)를 정지시키기 위한 동작에 대해서는, 이미 설명했기 때문에 여기서는 생략된다.
그 다음, 계산 노드용 관리 프로세스(52)는, 정지된 계산 코어(611) 내의 레지스터 군 액세스부(6115)를 사용하여, 범용 레지스터 군(6111)에 액세스한다. 그 다음, 계산 노드용 관리 프로세스(52)는, 범용 레지스터 군(6111)으로부터 컨텍스트(611A)를 취득하고, 상기 취득된 컨텍스트(611A)를 계산 프로세스 DB(521)에 저장한다(단계 S053).
이러한 동작 중에, 계산 노드용 관리 프로세스(52)는, 프로세스 이미지(321)를 제어 노드(5)에 복제할 수 있다. 이렇게 프로세스 이미지(321)를 제어 노드(5)에 복제함으로써, 프로세스 단위의 체크포인트 데이터를 생성하는 것이 가능하다.
이어서, 계산 노드용 관리 프로세스(52)는, 다음으로 계산 코어(611) 상에서 동작하는 계산 프로세스의 ID를 기초로, 프로세스 대응표(522)의 갱신한다(단계 S054). 본 실시예에 있어서는, 다음으로 계산 코어(611) 상에서 동작하는 계산 프로세스의 ID는, 기존의 스케줄링 알고리즘을 따라 선택되는 것으로 가정한다. 계산 노드용 관리 프로세스(52)는, 단지 소정의 방식으로 계산 프로세스 ID를 선출할 수 있게 구성될 필요가 있다.
그 후, 계산 노드용 관리 프로세스(52)는, 다음으로 계산 코어(611) 상에서 동작하는 계산 프로세스의 ID를 기초로 계산 프로세스 DB(521)를 참조하고, 다음으로 계산 코어(611) 상에서 동작하는 계산 프로세스 ID의 레지스터 값(컨텍스트)을 얻는다. 계산 노드용 관리 프로세스(52)는, 취득한 레지스터 값을, 계산 코어(611)가 포함하는 범용 레지스터 군(6111)의 컨텍스트(611A)에, 레지스터 군 액세스부(6115)를 통해서 보존한다(단계 S055).
다음으로 계산 코어(611) 상에서 동작하는 계산 프로세스에 체크포인트 데이터가 포함되어 있을 경우에는, 이러한 타이밍에 계산 프로세스를 계산 노드에 전송함으로써, 체크포인트 데이터가 취득되었을 때의 프로세스 이미지(321)가 복원될 수 있다.
컨텍스트(611A)가 복원된 후, 계산 노드용 관리 프로세스(52)는, 컨텍스트가 스위칭된 계산 코어 상에서 실행을 개시한다(단계 S056).
이상, "5. 계산 프로세스의 계산 코어에의 할당의 변경(컨텍스트 스위치) 중에 행해진 병렬 컴퓨터(1)의 동작이 위에서 설명되었다. 이어서, "6. 계산 프로세스의 종료(프로그램의 종료)" 중에 행해진 병렬 컴퓨터(1)의 동작에 대해서, 도 13을 참조해서 설명한다. 도 13은, 계산 노드(6) 상에서 실행 중인 프로그램을 종료하기 위해 행해진 동작 일례를 나타내는 흐름도이다.
계산 코어(611) 상에서 실행 중인 프로그램이 종료했을 경우, 계산 코어(611)는, 먼저, 계산 프로세스를 종료시키기 위한 예외를 대리 프로세스(511)에 통지한다(단계 S061). 계산 프로세스를 종료시키기 위한 예외는, 예를 들어 종료 시스템 콜(exit system call) 또는 메모리 액세스 관련 예외(exception related to memory access)일 수 있다. 예외의 발생에 대해서는 상기에서 설명되었기 때문에, 여기서 그 설명은 생략된다.
예외의 통지를 수신한 후, 대리 프로세스(511)는, 계산 노드용 관리 프로세스(52)에 계산 프로세스의 종료를 통지한다(단계 S062).
계산 프로세스의 종료의 통지를 수신한 후, 계산 노드용 관리 프로세스(52)는, 프로세스 대응표(522)를 검색하여, 계산 프로세스에 사용된 자원을 해방한다(단계 S063). 이에 의해, 계산 프로세스는 종료한다.
구체적으로는, 계산 노드용 관리 프로세스(52)는, 계산 프로세스 DB(521)에 저장되어 있고 종료될 대리 프로세스(511)에 연관되어 있는 컨텍스트(611A)를 삭제한다. 또한, 계산 노드용 관리 프로세스(52)는, 메모리(32)로부터 종료될 대리 프로세스(511)에 대응하는 프로세스 이미지(321)를 해방한다. 종료될 대리 프로세스(511)에 대응하는 컨텍스트(611A)가 계산 노드(6) 상의 임의의 계산 코어(611)에서 동작 중인 경우에, 계산 노드용 관리 프로세스(52)는, 그러한 계산 코어(611)를 해방하도록 구성될 수 있다. 이 경우에, 계산 노드용 관리 프로세스(52)는, 계산 코어(611)를 해방할 때 상기 해방된 계산 코어(611)의 컨텍스트로부터 또 다른 컨텍스트로 스위칭되도록 구성될 수 있다.
계산 프로세스의 종료 후, 대리 프로세스(511)는 종료한다(단계 S064).
상기 단계(S062, S063, 및 S064)들이 이 순서대로 행하여지지 않을 수 있다는 점에 유의한다. 예를 들어, 대안적 구성에서, 대리 프로세스(511)는 단계(S061)에서 호출된 종료 시스템 콜의 수신에 의해 종료될 수 있다. 이 경우에, 예를 들어 제어 노드용 OS(50)의 기능에 의해 대리 프로세스(511)가 가지고 있던 핸들을 해방함으로써, 계산 노드용 관리 프로세스(52)에는 계산 프로세스의 종료 통지가 행하여진다. 계산 프로세스의 종료 통지를 수신한 후, 계산 노드용 관리 프로세스(52)는, 계산 프로세스의 자원을 해방하고 계산 프로세스를 종료한다.
병렬 컴퓨터(1)는 상기 설명된 동작 흐름을 따라 진행한다. 이러한 동작에 의해, 병렬 컴퓨터(1)는, OS가 동작하지 않는 계산 노드(6) 상에서 일반의 컴퓨터에서 실현되는 계산 모델을 채택할 수 있다.
본 명세서에서 설명된 본 실시예에서, 병렬 컴퓨터(1)는 1개의 제어 노드(5)와 복수의 계산 노드(6)로 이루어진다. 그러나, 병렬 컴퓨터(1)는, 1개의 제어 노드(5)와 복수의 계산 노드(6)로 각각 구성되는 복수의 노드 군을 포함할 수 있다. 즉, 제어 노드(5)의 수는 반드시 1로 한정되지는 않는다.
이와 같이, 본 실시예에 있어서의 병렬 컴퓨터(1)는, OS가 설치된 제어 노드(5)와, OS가 설치되어 있지 않은 계산 노드(6)를 포함하고 있다. 제어 노드(5) 상에는, 대리 프로세스(511)와 계산 노드용 관리 프로세스(52)가 전개되어 있다. 계산 노드(6)는, 범용 레지스터 군(6111)과 제어 레지스터 군(6112)을 포함하고 있다. 이와 같은 구성에 의해, 제어 노드(5)는, 계산 노드(6)의 동작을 관리할 수 있게 된다. 즉, 병렬 컴퓨터(1)는, OS가 동작하지 않는 계산 노드(6) 상에서 일반의 컴퓨터에서 실현되는 계산 모델을 채택할 수 있다. 그 결과, 병렬 컴퓨터(1)는, 계산 노드(6) 상에서 OS가 동작한 것에 의한 OS 지터 및 캐시 오염의 문제를 해결할 수 있다.
상기 구성으로 함으로써, 특권이 필요한 I/O 디바이스의 제어를, 제어 노드(5)가 대리로서 실시할 수 있게 한다. 그 결과, 제어 노드(5)가 상품 하드웨어에 기초한 구성을 채택하고 있는 한, 계산 노드(6)에 전용의 디바이스 드라이버를 더 이상 기입할 필요가 없다. 따라서, 범용성의 상실 및 개발비 상승의 문제가 해결될 수 있다.
본 실시예에 있어서의 계산 코어(611)는, 예외 검출부(6113)와 예외 통지부(6114)를 포함하고 있다. 이렇게 구성함으로써, 계산 코어(611)가 명령의 실행 중에 발생하는 예외 프로세스를 검출해서, OS를 포함하는 제어 코어(6)에 예외 프로세스의 발생을 통지할 수 있게 된다. 그 결과, 계산 노드(6)는, 예외 프로세스가 발생한 계산 프로세스의 실행을 정지할 수 있게 된다. 제어 노드(5)는, 시스템 콜 등의 OS 기능을 계산 노드에 제공할 수 있게 된다. 즉, OS가 동작하지 않는 계산 노드(6) 상에서 일반의 컴퓨터에서 실현되는 계산 모델을 채택하는 것이 가능하게 된다.
<실시예 2>
본 발명의 제2 실시예에 대해서, 도 14를 참조해서 설명한다. 도 14는 본 실시예에 있어서의 정보 처리 장치(7)의 구성을 도시하는 블록도이다.
상술한 제1 실시예와 유사하게, 본 실시예는, OS 기능을 포함하는 제어부(제어 노드)와, OS 기능을 포함하지 않는 계산부(계산 노드)를 포함하고 있다. 본 실시예는, OS 기능이 동작하는 영역과, OS 기능이 동작하지 않는 영역을 포함하고 있는 한, 제1 실시예에서 설명한 병렬 컴퓨터(1)에 의하지 않아도, 구현될 수 있다.
다음은 본 실시예에 있어서의 정보 처리 장치(7)에 대해서 설명하는데, 여기서 장치는 OS의 제어하에 놓이는 영역과, OS의 제어하에 놓이지 않는 영역의 2개의 영역을 포함한다. 본 실시예에 있어서의 정보 처리 장치(7)는, 예를 들어 상기 2개의 영역을 포함하는 반도체 집적 회로에 의해 구현될 수 있다.
도 14에서 도시된 바와 같이, 본 실시예에 있어서의 정보 처리 장치(7)는, OS의 제어하에 놓이는 OS-관리 제어부(8)와, OS의 제어하에 놓이지 않는 OS-비-관리 계산부(9)를 포함해서 구성되어 있다. 본 실시예에 있어서의 정보 처리 장치(7)에 있어서, OS가 동작하지 않는(OS의 제어하에 없는) OS-비-관리 계산부(9) 상에서 일반의 컴퓨터에서 실현되는 계산 모델을 채택할 수 있게, OS-관리 제어부(8)와 OS-비-관리 계산부(9)가 각각 구성된다. 이하의 설명에 있어서, OS-관리 제어부(8) 상에서 가동하는 OS는, 소위 제어부용 OS(80)이다. 제어부용 OS(80)로서는, Linux 또는 Windows 등의 상품 OS가 사용될 수 있다. OS-관리 제어부(8)와 OS-비-관리 계산부(9)는, 서로 통신 가능하게 접속되어 있다.
하기에, OS-관리 제어부(8)의 구성에 대해서 설명한다. OS-관리 제어부(8)는, 도시하지 않은 저장 장치(예를 들면, 메모리)와, 처리 장치(예를 들면, CPU)를 포함해서 구성되어 있다. 상술한 바와 같이, OS-관리 제어부(8)는, 제어부용 OS(80)의 제어하에 놓이는 영역이다. 그로 인해, OS-관리 제어부(8) 상에서는, 그 제어하에 있는 임의의 하드웨어(저장 장치 및 처리 장치)가 가상화될 수 있다. 따라서, 이하에서는, OS-관리 제어부(8) 상에서 전개된 프로세스에 대해서 설명한다. 이들 프로세스는, OS-관리 제어부(8)의 제어하에 있는 저장 장치에 저장된 프로그램을 판독해서 실행함으로써 실현할 수 있고, 상기 판독 및 실행은 OS-관리 제어부(8)의 제어하에 있는 처리 장치에 의해 수행된다.
도 14에서 도시된 바와 같이, OS-관리 제어부(8) 상에 있어서, 제어부용 OS(80)는, 대리 프로세스(81)와 OS-비-관리 계산부용 관리 프로세스(82)를 전개한다. OS-비-관리 계산부용 관리 프로세스(82)는, 계산 프로세스 DB(83)와 프로세스 대응표(84)를 갖고 있다. 대리 프로세스(81)는 제1 실시예에서와 동일한 방식으로 구성된다. OS-비-관리 계산부용 관리 프로세스(82)는, 제1 실시예에 있어서의 계산 노드용 관리 프로세스에 상당한다. 따라서, 각 구성의 상세한 설명은 여기에서는 생략한다.
이상, OS-관리 제어부(8)의 구성에 대해서 설명되었다. 이하, OS-비-관리 계산부(9)의 구성에 대해서 이제 설명한다.
도 14에서 도시된 바와 같이, OS-비-관리 계산부(9)는, 계산 코어(91)와 메모리(92)를 포함해서 구성되어 있다. OS-비-관리 계산부(9)는, 도시하지 않은 데이터 전송 회로를 포함하고 있다. 계산 코어(91)는 제1 실시예에서와 동일한 방식으로 구성된다. 메모리(92)와 데이터 전송 회로는 또한, 제1 실시예에서와 마찬가지로 구성된다. 따라서, 각 구성의 상세에 대해서는 여기서 생략한다.
본 실시예에 있어서의 정보 처리 장치(7)는, 상술한 바와 같이 구성되어 있다. 이와 같은 구성에 의해, 정보 처리 장치(7)는, 제1 실시예와 마찬가지의 방식으로 동작한다. 정보 처리 장치(7)의 동작은, 제1 실시예에서와 마찬가지이기 때문에, 그 설명은 생략한다.
본 실시예에 있어서의 정보 처리 장치(7)는, OS의 제어하에 있는 OS-관리 제어부(8)와, OS의 제어하에 없는 OS-비-관리 계산부(9)를 포함하고 있다. OS-관리 제어부(8) 상에는, 대리 프로세스(81)와 OS-비-관리 계산부용 관리 프로세스(82)가 전개되어 있다. 또한, OS-비-관리 계산부(9)는, 계산 코어(91)를 포함하고 있다. 그로 인해, OS-비-관리 계산부(9)는, OS 기능을 포함하고 있는 것과 마찬가지로 계산 프로세스를 수행할 수 있다. 즉, 정보 처리 장치(7)는, OS-비-관리 계산부(9) 상에서 OS가 동작한 것에 의한 OS 지터 및 캐시 오염의 문제를 해결할 수 있다.
또한, 상기 구성으로 함으로써, 특권이 필요한 I/O 디바이스의 제어를, OS-관리 제어부(8)가 OS-비-관리 계산부(9)의 대리로서 실시할 수 있게 된다. 그 결과, OS-관리 제어부(8)가 상품 하드웨어에 기초한 구성을 채택하고 있는 한, OS-비-관리 계산부(9)에 전용의 디바이스 드라이버를 기입할 더 이상 필요가 없다. 따라서, 범용성의 상실 및 개발비 상승의 문제를 해결할 수 있다.
<실시예 3>
본 발명의 제3 실시예에 대해서, 이제 도 15를 참조해서 설명한다. 도 15는 본 실시예에 있어서의 정보 처리 장치(70)의 일반적 구성을 도시하는 블록도이다.
도 15에서 도시된 바와 같이, 본 실시예에 있어서의 정보 처리 장치(70)는, 제어 코어(71)와 계산 코어(72)를 포함해서 구성되어 있다. 제어 코어(71)는, 계산 코어 제어부(711)를 포함하고 있다. 계산 코어(72)는, 계산 처리 제어부(721)와 예외 검출부(722)를 포함하고 있다.
제어 코어(71)는, 운영체계(OS)가 설치된 처리부이다. 한편, 계산 코어(72)는, 제어 코어(71)의 제어 하에서 미리 결정된 계산 프로세스를 행하는 처리부이다. 구체적으로는, 계산 코어(72) 상에는, 운영체계가 설치되어 있지 않다.
계산 코어 제어부(711)는, 정지하고 있는 계산 코어(72)에 대하여 상기 계산 코어가 처리할 계산 프로세스의 개시를 지시하는 부분이다. 후술하는 바와 같이, 계산 코어 제어부(711)가 계산 프로세스의 개시를 지시하면, 정지하고 있는 계산 코어(72)는, 계산 프로세스를 개시한다.
계산 처리 제어부(721)는, 계산 프로세스를 개시하도록 계산 코어 제어부(711)에 의해 제공된 지시에 응답하여 계산 코어(72)가 계산 프로세스의 개시 지시하도록, 계산 코어(72)를 제어하는 부분이다. 예외 검출부(722)는, 계산 프로세스의 실행 중에 발생한 미리 설정된 예외 프로세스를 검출하고, 예외 프로세스가 발생한 계산 프로세스의 실행을 정지하는 부분이다. 미리 설정된 예외 프로세스는, 예를 들어 연산 예외, 메모리 액세스 관련 예외(exceptions related to memory access), 및 일반의 프로세서 상에 제공된 예외를 포함할 수 있다.
일단 계산 코어(72)가 계산 프로세스의 실행을 정지하면, 제어 코어(71) 상의 계산 코어 제어부(711)에 의해 다시 계산 프로세스의 개시 지시를 받을 때까지, 새로운 계산 프로세스를 개시하지 않고 계속해서 정지된다.
이와 같이, 본 실시예에 있어서의 정보 처리 장치(70)는, OS가 설치된 제어 코어(71)와, 계산 코어(72)를 포함하고 있다. 제어 코어(71)는 계산 코어 제어부(711)를 포함하고, 반면에 계산 코어(72)는 계산 처리 제어부(721)를 포함하고 있다. 이와 같은 구성에 의해, 계산 코어(72)는, 제어 코어(71)의 제어 하에 미리 결정된 계산 프로세스를 수행할 수 있다. 즉, 정보 처리 장치(70)는, OS가 동작하지 않는 계산 코어(72) 상에서 미리 결정된 계산 프로세스를 행하는 것이 가능하게 된다. 그 결과, 정보 처리 장치(70)는, 계산 코어(72) 상에서 OS가 동작하는 것에 의해 야기될 수 있는 OS 지터 및 캐시 오염의 문제를 해결할 수 있다.
또한, 상기 구성으로 함으로써, 특권이 필요한 I/O 디바이스의 제어를, 제어 코어(71)가 대리로서 실시할 수 있게 된다. 그 결과, 제어 코어(71)가 상품 하드웨어 구성을 채택하고 있는 한, 계산 코어(72)에 전용의 디바이스 드라이버를 더 이상 기입할 필요가 없다. 따라서, 범용성의 상실 및 개발비 상승의 문제를 해결할 수 있다.
또한, 본 실시예에 있어서의 계산 코어(72)는, 예외 검출부(722)를 포함하고 있다. 이렇게 구성함으로써, 계산 코어(72)는, 계산 프로세스의 실행 중에 발생한 예외 프로세스를 검출하고, 예외 프로세스가 발생한 계산 프로세스의 실행을 정지할 수 있게 된다. 그 결과, 정보 처리 장치(70)는, OS가 동작하지 않는 정보 처리 장치(70) 상에서 미리 결정된 계산 프로세스를 보다 완전하게 행하는 것이 가능하게 된다.
상술한 정보 처리 장치는, 상기 정보 처리 장치 상에 소정의 프로그램을 설치함으로써 실현될 수 있다. 구체적으로, 본 발명의 다른 실시예인 프로그램은, 정보 처리 장치 상에서 이하의 프로세스 (a) 내지 (c)를 구현시키기 위해 사용된다. 이러한 정보 처리 장치는, 운영체계가 설치된 제어 코어를 포함할 뿐만 아니라, 제어 코어에 의해 제어되고 미리 결정된 계산 프로세스를 행하는 적어도 하나의 계산 코어를 포함하고 있다.
(a) 정지하고 있는 계산 코어에게 상기 계산 코어가 처리할 계산 프로세스의 개시를 지시하는 처리;
(b) 계산 프로세스의 개시 지시에 응답하여 계산 코어가 계산 프로세스를 개시하도록 계산 코어를 제어하는 처리; 및
(c) 계산 프로세스의 실행 중에 발생한 미리 설정된 예외 프로세스를 검출하고 상기 예외 프로세스가 발생한 계산 프로세스의 실행을 정지하는 처리.
상술한 정보 처리 장치가 동작함으로써 구현되는 정보 처리 방법은, 계산 프로세스를 개시하도록 제어 코어에 의해 제공된 지시에 응답하여 계산 코어가 미리 결정된 계산 프로세스를 개시하는 단계를 포함한다. 또한, 정보 처리 방법은, 계산 코어에 의한 계산 프로세스의 실행 중에 미리 설정된 예외 프로세스가 발생한 경우, 미리 정의된 예외를 검출하고, 상기 예외 프로세스가 발생한 계산 프로세스를 정지하는 단계를 포함하며, 여기서 상기 검출 및 정지 단계는 계산 코어에 의해 수행된다.
상술한 구성을 갖고 있고 본 발명의 또 다른 양태를 나타내는 프로그램 또는 정보 처리 방법은, 상기 정보 처리 장치에 의해 발휘된 동일한 효과를 갖기 때문에, 상술한 본 발명의 목적을 달성할 수 있다.
<실시예 4>
본 발명의 제4 실시예에 대해서, 이제 도 16을 참조해서 설명한다. 도 16은 본 실시예에 있어서의 계산 처리 장치(10)의 일반적 구성을 도시하는 블록도이다.
계산 처리 장치(10)는, 외부 장치의 제어 하에 미리 결정된 계산 프로세스를 행한다. 즉, 계산 처리 장치(10) 상에는, OS가 설치되어 있지 않다. 도 16에서 도시된 바와 같이, 본 실시예에 있어서의 계산 처리 장치(10)는, 계산 처리 제어부(101)와 예외 검출부(102)를 포함하고 있다.
계산 처리 제어부(101)는, 외부 장치에 의해 제공되는 계산 프로세스의 개시 지시에 응답하여 장치가 계산 프로세스의 개시를 행하도록 상기 계산 처리 장치를 제어하는 부분이다. 예외 검출부(102)는, 계산 프로세스의 실행 중에 발생한 미리 설정된 예외 프로세스를 검출하는 부분이다. 미리 설정된 예외 프로세스는, 예를 들어 연산 예외, 메모리 액세스 관련 예외(exceptions related to memory access), 및 일반의 프로세서 상에 제공된 예외를 포함한다.
계산 처리 장치(10)는, 예외 검출부(102)가 예외 프로세스를 검출한 경우에, 상기 예외 프로세스가 발생한 계산 프로세스의 실행을 정지하도록 구성된다. 일단 계산 처리 장치(10)가 계산 프로세스의 실행을 정지하면, 외부 장치로부터 다시 계산 프로세스의 개시 지시를 받을 때까지, 계산 프로세스는 개시하지 않고 계속해서 정지된다.
이와 같이, 본 실시예에 있어서의 계산 처리 장치(10)는, 외부 장치에 의해 제공되는 계산 프로세스의 개시 지시에 응답하여 계산 프로세스의 개시를 행한다. 계산 처리 장치(10)는, 계산 처리 제어부(101)를 포함하고 있다. 이와 같은 구성에 의해, 계산 처리 장치(10)는, OS가 설치되어 있지 않음에도 불구하고, 외부 장치의 제어 하에 미리 결정된 계산 프로세스를 행할 수 있게 한다. 그 결과, 계산 처리 장치(10)는, 계산 처리 장치(10) 상에서 OS가 동작한 것에 의한 OS 지터 및 캐시 오염의 문제를 해결할 수 있다.
또한, 본 실시예에 있어서의 계산 처리 장치(10)는, 예외 검출부(102)를 포함하고 있다. 이렇게 구성함으로써, 계산 처리 장치(10)는, 계산 프로세스의 실행 중에 발생한 예외 프로세스를 검출하고, 상기 예외 프로세스가 발생한 계산 프로세스의 실행을 정지할 수 있게 한다. 즉, 계산 처리 장치(10)는, OS가 동작하지 않는 계산 처리 장치(10) 상에서 미리 결정된 계산 프로세스를 보다 완전하게 행하는 것이 가능하게 된다.
상술한 계산 처리 장치는, 상기 계산 처리 장치 상에 소정의 프로그램을 설치함으로써 실현될 수 있다. 구체적으로, 본 발명의 또 다른 실시예인 프로그램은, 계산 처리 장치에, 장치가 외부 장치에 의해 제공되는 계산 프로세스의 개시 지시에 응답하여 계산 프로세스의 개시를 행하도록 계산 처리 장치를 제어하는 단계; 및 계산 프로세스의 실행 중에 발생한 미리 설정된 예외 프로세스를 검출하는 단계의 프로세스들을 구현한다. 그러한 프로그램은 예외 프로세스를 검출한 경우에는, 상기 예외 프로세스가 발생한 계산 프로세스의 실행을 정지하는 기능을 갖는다.
상술한 계산 처리 장치가 동작함으로써 구현된 계산 처리 방법은, 외부 장치에 의해 제공되는 계산 프로세스의 개시 지시에 응답하여 미리 결정된 계산 프로세스를 개시하는 단계; 계산 프로세스의 실행 중에 미리 설정된 예외 프로세스가 발생한 경우, 상기 예외 프로세스를 검출하는 단계; 및 상기 예외 프로세스가 발생한 계산 프로세스를 정지하는 단계를 포함한다.
상술한 구성을 갖고 있고 본 발명의 또 다른 양태를 나타내는 프로그램 또는 정보 처리 방법은, 상기 정보 처리 장치에 의해 발휘된 동일한 효과를 갖기 때문에, 상술한 본 발명의 목적을 달성할 수 있다.
<부기>
상기 실시예의 전부 또는 일부는, 이하의 부기와 같이 기재될 수 있다. 이하, 본 발명에 있어서의 정보 처리 장치 및 다른 양태들은 이제 개략적으로 설명된다. 그러나, 본 발명은 이하의 구성에 한정되지 않는다는 점에 유의해야 한다.
(부기 1)
정보 처리 장치로서,
운영체계가 설치된 제어 코어; 및
상기 제어 코어에 의해 제어되고 미리 결정된 계산 프로세스를 행하는 적어도 하나의 계산 코어를 포함하고,
상기 제어 코어는, 정지하고 있는 상기 계산 코어에게 계산 코어가 행할 상기 계산 프로세스의 개시를 지시하는 계산 코어 제어 수단을 포함하고,
상기 계산 코어는,
상기 계산 코어 제어 수단에 의해 제공된 상기 계산 프로세스의 개시 지시에 응답하여 상기 계산 코어가 상기 계산 프로세스를 개시하도록 상기 계산 코어를 제어하는 계산 처리 제어 수단; 및
상기 계산 프로세스의 실행 중에 발생한 미리 설정된 예외 프로세스를 검출하고 상기 예외 프로세스가 발생한 상기 계산 프로세스를 정지하는 예외 검출 수단을 포함하는, 정보 처리 장치.
상기 구성에 의하면, 상기 정보 처리 장치가, 운영체계가 설치된 제어 코어와, 제어 코어에 의해 제어되고 미리 결정된 계산 프로세스를 행하는 적어도 하나의 계산 코어를 포함하고 있다. 제어 코어는 계산 코어 제어 수단을 포함하고 있다. 계산 코어는 계산 처리 제어 수단을 포함하고 있다. 이와 같은 구성에 의해, OS가 동작하지 않는 계산 코어 상에서 미리 결정된 계산 프로세스가 실행될 수 있다. 따라서, 정보 처리 장치는, 계산 프로세스를 행하는 계산 코어 내에서 OS가 동작하는 것에 의해 야기될 수 있는 OS 지터 및 캐시 오염의 문제를 해결할 수 있다.
이러한 구성에 의하면, 계산 코어가, 예외 검출 수단을 포함하고 있다. 이러한 구성에 의해, 계산 코어는, 계산 프로세스의 실행 중에 발생한 예외 프로세스를 검출하고, 상기 예외 프로세스가 발생한 계산 프로세스의 실행을 정지할 수 있게 된다. 그 결과, 정보 처리 장치는, OS가 동작하지 않는 정보 처리 장치 상에서 미리 결정된 계산 프로세스를 보다 완전하게 행하는 것이 가능하게 된다.
(부기 2)
부기 1에 따른 정보 처리 장치로서,
상기 계산 코어 제어 수단은, 상기 예외 검출 수단에 의해 검출된 상기 예외 프로세스에 응답하여 상기 계산 코어에게 상기 계산 프로세스의 개시를 지시하고,
상기 계산 코어 제어 수단에 의해 상기 계산 프로세스의 개시 지시가 제공된 경우에, 상기 계산 처리 제어 수단은, 상기 계산 프로세스를 개시하도록 상기 계산 코어를 제어하는, 정보 처리 장치.
이러한 구성에 의하면, 정보 처리 장치의 제어 코어는, 예외 검출 수단에 의해 검출된 예외 프로세스에 응답하여 계산 코어에게 계산 프로세스의 개시를 지시하도록 구성된다. 이에 의해, 정보 처리 장치는, OS가 동작하지 않는 정보 처리 장치 상에서 미리 결정된 계산 프로세스를 보다 완전하게 행하는 것이 가능하게 된다.
(부기 3)
부기 2에 따른 정보 처리 장치로서,
상기 예외 검출 수단은, 상기 예외 검출 수단이 상기 예외 프로세스를 검출한 것을 상기 제어 코어에 통지하고,
상기 계산 코어 제어 수단은, 상기 예외 검출 수단으로부터 수신한 상기 통지가 나타내는 상기 예외 프로세스에 응답하여 상기 계산 코어에게 상기 계산 프로세스의 개시를 지시하는, 정보 처리 장치.
이러한 구성에 의하면, 계산 코어는, 예외를 검출한 경우에 제어 코어에 통지하도록 구성된다. 이에 의해, 정보 처리 장치는, OS가 동작하지 않는 정보 처리 장치 상에서 미리 결정된 계산 프로세스를 보다 완전하게 행하는 것이 가능하게 된다.
(부기 4)
부기 1 내지 3 중 어느 하나에 따른 정보 처리 장치로서,
상기 계산 코어는, 상기 예외 검출 수단에 의해 검출된 상기 예외 프로세스를 처리하는 데 필요한 데이터를 상기 제어 코어에 전송하는 데이터 전송 수단을 더 포함하고,
상기 제어 코어는, 상기 데이터 전송 수단에 의해 전송된 상기 데이터를 이용하여 상기 계산 코어를 대리해서 상기 예외 프로세스를 처리하는 대리 예외 처리 수단을 더 포함하는, 정보 처리 장치.
이 구성에 의하면, 계산 코어는 데이터 전송 수단을 포함하고, 제어 코어는 예외 처리 수단을 포함하고 있다. 이와 같은 구성에 의해, 계산 코어는 예외 프로세스를 처리할 수 있게 된다. 그 결과, 제어 코어는 계산 코어에 대리해서 시스템 콜의 처리를 행할 수 있게 된다.
(부기 5)
부기 4에 따른 정보 처리 장치로서,
상기 계산 코어에서 발생한 상기 예외 프로세스가 시스템 콜일 경우, 상기 데이터 전송 수단은, 상기 시스템 콜의 처리에 필요한 데이터를 상기 제어 코어 상의 상기 대리 예외 처리 수단에 포함되는 버퍼 영역에 전송하는, 정보 처리 장치.
(부기 6)
부기 1 내지 5 중 어느 하나에 따른 정보 처리 장치로서,
상기 계산 코어 제어 수단은, 상기 계산 코어에게 상기 계산 코어가 행하는 상기 계산 프로세스의 정지를 지시하는 것이 가능하고, 상기 계산 프로세스를 정지하는 중인 상기 계산 코어에게 상기 계산 코어가 행할 상기 계산 프로세스의 내용의 변경을 지시하는 것이 가능하도록 구성되고,
상기 계산 처리 제어 수단은, 상기 계산 코어 제어 수단에 의해 제공된 상기 계산 프로세스의 정지 지시에 응답하여 상기 계산 코어가 실행 중인 상기 계산 프로세스를 정지하도록 상기 계산 코어를 제어하고, 상기 계산 코어 제어 수단에 의해 제공된 상기 계산 프로세스의 내용 변경 지시에 응답하여 상기 계산 코어가 행할 상기 계산 프로세스의 내용을 변경하는, 정보 처리 장치.
이 구성에 의하면, 제어 코어는 계산 코어에게 계산 프로세스의 정지와 계산 프로세스의 변경을 지시하도록 구성된다. 계산은, 제어 코어로부터의 지시에 응답하여 계산 프로세스의 정지와 변경을 행할 수 있다. 그 결과, 정보 처리 장치는, 컨텍스트 스위칭을 행할 수 있다.
(부기 7)
부기 6에 따른 정보 처리 장치로서,
상기 계산 코어가 행할 상기 계산 프로세스의 수가 상기 계산 코어의 수보다도 많은 경우,
상기 계산 코어 제어 수단은, 미리 정해진 시간 간격마다 그리고 미리 결정된 기준에 기초하여, 상기 계산 프로세스를 실행하는 중인 상기 계산 코어를 선택하고; 상기 선택된 계산 코어에게 상기 계산 프로세스를 정지하도록 지시하고; 상기 계산 프로세스를 정지한 상기 계산 코어가 행할 상기 계산 프로세스의 내용을 변경하는, 정보 처리 장치.
(부기 8)
운영체계가 설치된 제어 코어; 및 상기 제어 코어에 의해 제어되고 미리 결정된 계산 프로세스를 행하는 적어도 하나의 계산 코어를 포함한 정보 처리 장치를 포함하는 컴퓨터로 하여금,
정지하고 있는 상기 계산 코어에게 상기 계산 코어가 행할 상기 계산 프로세스의 개시를 지시하는 계산 코어 제어 프로세스;
상기 계산 프로세스의 개시 지시에 응답하여 상기 계산 코어가 상기 계산 프로세스를 개시하도록 상기 계산 코어를 제어하는 계산 처리 제어 프로세스; 및
상기 계산 프로세스의 실행 중에 발생한 미리 설정된 예외 프로세스를 검출하고, 상기 예외 프로세스가 발생한 상기 계산 프로세스의 실행을 정지하는 예외 검출 프로세스를 실행하게 하는 프로그램을 기록하는 컴퓨터 판독가능 기록 매체.
(부기 8-1)
부기 8에 따른 기록 매체로서,
상기 계산 코어 제어 프로세스는, 상기 예외 검출 프로세스가 검출한 상기 예외 프로세스에 응답하여, 상기 계산 코어에게 상기 계산 프로세스의 개시를 지시하는 프로세스를 포함하는, 컴퓨터 판독가능 기록 매체.
(부기 9)
부기 8에 따른 기록 매체로서,
상기 예외 검출 프로세스는, 상기 예외 프로세스가 검출되었다는 것을 상기 제어 코어에 통지하는 프로세스를 포함하는, 컴퓨터 판독가능 기록 매체.
(부기 10)
부기 9에 따른 기록 매체로서, 상기 기록 매체는, 상기 컴퓨터로 하여금,
상기 검출된 예외 프로세스를 처리하는 데 필요한 데이터를 상기 제어 코어에 전송하는 데이터 전송 프로세스; 및
상기 전송된 데이터를 이용하여 상기 계산 코어를 대리해서 상기 예외 프로세스를 처리하는 대리 예외 처리 프로세스를 더 실행하게 하는 프로그램을 기록하는, 컴퓨터 판독가능 기록 매체.
(부기 10-1)
부기 10에 따른 기록 매체로서,
상기 데이터 전송 처리는, 상기 계산 코어 상에서 발생한 예외 프로세스가 상기 시스템 콜일 경우, 상기 시스템 콜의 처리에 필요한 데이터를 상기 제어 코어가 포함하는 버퍼 영역에 전송하는 처리를 포함하는, 컴퓨터 판독가능 기록 매체.
(부기 11)
부기 8 내지 10 중 어느 하나에 따른 기록 매체로서,
상기 계산 코어 제어 프로세스는,
상기 계산 코어에게 상기 계산 코어가 행하는 상기 계산 프로세스의 정지를 지시하고, 상기 계산 프로세스를 정지하는 중인 상기 계산 코어에 대해, 상기 계산 코어가 행할 상기 계산 프로세스의 내용을 변경하는 프로세스를 포함하고,
상기 계산 처리 제어 프로세스는,
상기 계산 코어 제어 프로세스에 의해 제공되는 상기 계산 프로세스의 정지 지시에 응답하여, 실행 중인 상기 계산 프로세스를 정지하는 프로세스; 및
상기 계산 코어 제어 프로세스에 의해 제공되는 상기 계산 프로세스의 내용 변경 지시에 응답하여, 상기 계산 코어가 행할 상기 계산 프로세스의 내용을 변경하는 프로세스를 포함하는, 컴퓨터 판독가능 기록 매체.
(부기 11-1)
부기 11에 따른 기록 매체로서,
상기 계산 코어가 행할 상기 계산 프로세스의 수가 상기 계산 코어의 수보다도 많은 경우,
상기 계산 코어 제어 프로세스는,
미리 정해진 시간 간격마다 그리고 미리 결정된 기준에 기초하여, 상기 계산 프로세스를 실행 중인 상기 계산 코어를 선택하고;
상기 선택된 계산 코어에게 상기 계산 프로세스를 정지하도록 지시하고; 그리고
상기 계산 코어가 행할 상기 계산 프로세스의 내용을 변경하기 위한 프로세스를 포함하는, 컴퓨터 판독가능 기록 매체.
(부기 12)
정보 처리 방법으로서,
계산 코어에 의해, 제어 코어에 의해 제공되는 계산 프로세스의 개시 지시에 응답하여 미리 결정되어 있는 상기 계산 프로세스를 개시하는 단계; 및
상기 계산 코어가 행한 상기 계산 프로세스의 실행 중에 미리 설정된 예외 프로세스가 발생하는 경우에는, 상기 계산 코어에 의해, 상기 예외 프로세스를 검출하고, 상기 계산 코어에 의해, 상기 예외 프로세스가 발생한 상기 계산 프로세스를 정지하는 단계를 포함하는, 정보 처리 방법.
(부기 13)
부기 12에 따른 정보 처리 방법으로서,
상기 예외 프로세스가 검출된 경우, 상기 계산 코어는, 상기 예외 프로세스가 검출된 것을 상기 제어 코어에 통지하는, 정보 처리 방법.
(부기 14)
부기 13에 따른 정보 처리 방법으로서,
상기 계산 코어는, 상기 예외 프로세스를 처리하는 데 필요한 데이터를 상기 제어 코어에 전송하고,
상기 제어 코어는, 상기 전송된 데이터를 이용하여 상기 계산 코어를 대리해서 상기 예외 프로세스를 처리하는, 정보 처리 방법.
(부기 15)
부기 12 내지 14 중 어느 하나에 따른 정보 처리 방법으로서,
상기 제어 코어는, 상기 계산 프로세스를 정지하는 중인 상기 계산 코어에게 상기 계산 코어가 행할 상기 계산 프로세스의 내용 변경 지시를 제공하고,
상기 계산 코어는, 상기 계산 프로세스의 내용 변경 지시에 응답하여 상기 계산 코어가 행할 상기 계산 프로세스의 내용을 변경하는, 정보 처리 방법.
(부기 15-1)
부기 15에 따른 정보 처리 방법으로서,
상기 계산 코어가 행할 계산 프로세스의 수가 상기 계산 코어의 수보다도 많은 경우,
미리 결정된 시간 간격마다 그리고 미리 결정된 기준에 기초하여, 상기 계산 프로세스를 실행 중인 상기 계산 코어를 선택하고;
상기 선택된 계산 코어에게 상기 계산 프로세스의 정지를 지시하고; 그리고
상기 계산 코어가 행할 상기 계산 프로세스의 내용을 변경하는, 정보 처리 방법.
(부기 16)
외부 장치의 제어 하에 미리 결정된 계산 프로세스를 행하는 계산 처리 장치로서, 상기 계산 처리 장치는,
상기 외부 장치에 의해 제공된 상기 계산 프로세스의 개시 지시에 응답하여, 상기 계산 처리 장치가 계산 프로세스를 개시하도록 상기 계산 처리 장치를 제어하는 계산 처리 제어 수단; 및
상기 계산 프로세스의 실행 중에 발생한 미리 설정된 예외 프로세스를 검출하고, 상기 예외 프로세스가 발생한 상기 계산 프로세스의 실행을 정지하는 예외 검출 수단을 포함하는, 계산 처리 장치.
(부기 17)
부기 16에 따른 계산 처리 장치로서,
상기 예외 검출 수단은, 상기 예외 검출 수단이 상기 예외 프로세스를 검출하였다는 것을 상기 외부 장치에 통지하는, 계산 처리 장치.
(부기 18)
부기 16 또는 17에 따른 계산 처리 장치로서,
상기 예외 검출 수단에 의해 검출된 상기 예외 프로세스를 처리하는 데 필요한 데이터를 상기 외부 장치에 전송하는 데이터 전송 수단을 더 포함하는, 계산 처리 장치.
(부기 19)
부기 16 내지 18 중 어느 하나에 따른 계산 처리 장치로서,
상기 계산 처리 제어 수단은,
상기 외부 장치에 의해 제공된 상기 계산 프로세스의 정지 지시에 응답하여, 상기 계산 처리 장치가 실행 중인 상기 계산 프로세스의 정지를 행하도록 상기 계산 처리 장치를 제어하고; 그리고
상기 외부 장치에 의해 제공되는 상기 계산 프로세스의 내용 변경 지시에 응답하여, 상기 계산 처리 장치가 행할 상기 계산 프로세스의 내용을 변경하는, 계산 처리 장치.
(부기 20)
컴퓨터 판독가능 저장 매체로서,
계산 처리 장치로 하여금,
외부 장치에 의해 제공되는 계산 프로세스의 개시 지시에 응답하여, 상기 계산 처리 장치가 상기 계산 프로세스를 개시하도록 상기 계산 처리 장치를 제어하는 계산 처리 제어 프로세스; 및
상기 계산 프로세스의 실행 중에 발생하는 미리 설정된 예외 프로세스를 검출하고, 상기 예외 프로세스가 발생한 상기 계산 프로세스의 실행을 정지하는 예외 검출 프로세스를 실행하게 하는 프로그램을 저장하는 컴퓨터 판독가능 저장 매체.
(부기 21)
부기 20에 따른 저장 매체로서,
상기 예외 검출 프로세스는, 상기 예외 프로세스가 검출되었다는 것을 상기 외부 장치에 통지하는 프로세스를 포함하는, 컴퓨터 판독가능 저장 매체.
(부기 22)
부기 20 또는 21에 따른 저장 매체로서,
상기 계산 처리 장치로 하여금, 상기 검출된 예외 프로세스를 처리하는 데 필요한 데이터를 상기 외부 장치에 전송하는 데이터 전송 프로세스를 더 실행시하게 하는 프로그램을 기록하는, 컴퓨터 판독가능 저장 매체.
(부기 23)
부기 20 내지 22 중 어느 하나에 따른 저장 매체로서,
상기 계산 처리 제어 프로세스는,
상기 외부 장치에 의해 제공된 상기 계산 프로세스의 정지 지시에 응답하여, 실행 중인 상기 계산 프로세스를 정지하는 프로세스; 및
상기 외부 장치에 의해 제공된 상기 계산 프로세스의 내용 변경 지시에 응답하여, 상기 계산 코어가 행할 상기 계산 프로세스의 내용을 변경하는 프로세스를 포함하는, 컴퓨터 판독가능 저장 매체.
(부기 24)
계산 처리 방법으로서,
외부 장치에 의해 제공되는 계산 프로세스의 개시 지시에 응답하여, 미리 결정되어 있는 상기 계산 프로세스를 개시하는 단계; 및
상기 계산 프로세스의 실행 중에 미리 설정된 예외 프로세스가 발생하는 경우에는, 상기 예외 프로세스를 검출하고, 상기 예외 프로세스가 발생한 상기 계산 프로세스를 정지하는 단계를 포함하는, 계산 처리 방법.
(부기 25)
부기 24에 따른 계산 처리 방법으로서,
상기 예외 프로세스가 검출된 경우, 상기 예외 프로세스가 검출된 것을 상기 외부 장치에 통지하는 단계를 포함하는, 계산 처리 방법.
(부기 26)
부기 25에 따른 계산 처리 방법으로서,
상기 예외 프로세스가 검출된 경우, 상기 예외 프로세스를 처리하는 데 필요한 데이터를 상기 제어 코어에 전송하는 단계를 포함하는, 계산 처리 방법.
상기 임의의 실시예 및 부기에 기재된 프로그램은, 저장 장치에 저장되거나, 컴퓨터 판독가능 기록 매체에 기록되어 있다. 예를 들어, 기록 매체는, 플렉시블 디스크, 광 디스크, 광자기 디스크, 또는 반도체 메모리 등의 휴대용 매체일 수 있다.
이상, 상술한 실시예를 모범적인 예로서 본 발명을 설명하였다. 그러나, 본 발명은 상술한 실시예에 한정되지 않는다. 즉, 본 발명은 본 발명의 범위 내에서, 본 분야의 숙련자가 이해할 수 있는 다양한 양태를 적용할 수 있다.
본 출원은, 2013년 11월 8일에 출원된 일본 특허 출원 제2013-232197호를 기초로 우선권을 주장하고, 그 개시의 전부가 여기에 포함된다.
1 병렬 컴퓨터
2, 3 노드
21, 31 CPU
211, 311 프로세서 코어
22, 32 메모리
321 프로세스 이미지
3211 통신 버퍼 영역
23, 33 데이터 전송 회로
231, 331 DMA 엔진 기능
232, 332 CPU-다이렉티드 통신 기능
4 노드간 통신 디바이스
5 제어 노드
511 대리 프로세스
5111 인수 기입 영역
5112 데이터 버퍼 영역
52 계산 노드용 관리 프로세스
521 계산 프로세스 DB
522 프로세스 대응표
6 계산 노드
611 계산 코어
611A 컨텍스트
6111 범용 레지스터 군
6112 제어 레지스터 군
6113 예외 검출부
6114 예외 통지부
6115 레지스터 군 액세스부
7, 70 정보 처리 장치
71 제어 코어
711 계산 코어 제어부
72 계산 코어
721 계산 처리 제어부
722 예외 검출부
8 OS-관리 제어부
80 제어용 OS
81 대리 프로세스
82 OS-비-관리 계산부용 관리 프로세스
9 OS-비-관리 계산부
91 계산 코어
92 메모리
10 계산 처리 장치
101 계산 처리 제어부
102 예외 검출부

Claims (26)

  1. 정보 처리 장치로서,
    운영체계가 설치된 제어 코어; 및
    상기 제어 코어에 의해 제어되고 미리 결정된 계산 프로세스를 행하는 적어도 하나의 계산 코어를 포함하고,
    상기 제어 코어는, 정지하고 있는 상기 계산 코어에게 계산 코어가 행할 상기 계산 프로세스의 개시를 지시하는 계산 코어 제어 수단을 포함하고,
    상기 계산 코어는,
    상기 계산 코어 제어 수단에 의해 제공되는 상기 계산 프로세스의 개시 지시에 응답하여 상기 계산 코어가 상기 계산 프로세스를 개시하도록 상기 계산 코어를 제어하는 계산 처리 제어 수단; 및
    상기 계산 프로세스의 실행 중에 발생한 미리 설정된 예외 프로세스를 검출하고 상기 예외 프로세스가 발생한 상기 계산 프로세스를 정지하는 예외 검출 수단을 포함하는, 정보 처리 장치.
  2. 제1항에 있어서,
    상기 계산 코어 제어 수단은, 상기 예외 검출 수단에 의해 검출된 상기 예외 프로세스에 응답하여 상기 계산 코어에게 상기 계산 프로세스의 개시를 지시하고,
    상기 계산 코어 제어 수단에 의해 상기 계산 프로세스의 개시 지시가 제공된 경우에, 상기 계산 처리 제어 수단은, 상기 계산 코어가 상기 계산 프로세스를 개시하도록 상기 계산 코어를 제어하는, 정보 처리 장치.
  3. 제2항에 있어서,
    상기 예외 검출 수단은, 상기 예외 검출 수단이 상기 예외 프로세스를 검출한 것을 상기 제어 코어에 통지하고,
    상기 계산 코어 제어 수단은, 상기 예외 검출 수단으로부터 수신한 상기 통지가 나타내는 상기 예외 프로세스에 응답하여 상기 계산 코어에게 상기 계산 프로세스의 개시를 지시하는, 정보 처리 장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 계산 코어는, 상기 예외 검출 수단에 의해 검출된 상기 예외 프로세스를 처리하는 데 필요한 데이터를 상기 제어 코어에 전송하는 데이터 전송 수단을 더 포함하고,
    상기 제어 코어는, 상기 데이터 전송 수단에 의해 전송된 상기 데이터를 이용하여 상기 계산 코어를 대리해서 상기 예외 프로세스를 처리하는 대리 예외 처리 수단(proxy exception handling means)을 더 포함하는, 정보 처리 장치.
  5. 제4항에 있어서,
    상기 계산 코어에서 발생한 상기 예외 프로세스가 시스템 콜일 경우, 상기 데이터 전송 수단은, 상기 시스템 콜의 처리에 필요한 데이터를 상기 제어 코어 상의 상기 대리 예외 처리 수단에 포함되는 버퍼 영역에 전송하는, 정보 처리 장치.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 계산 코어 제어 수단은, 상기 계산 코어에게 상기 계산 코어가 행하는 상기 계산 프로세스의 정지를 지시하는 것이 가능하고, 상기 계산 프로세스를 정지하는 중인 상기 계산 코어에게 상기 계산 코어가 행할 상기 계산 프로세스의 내용의 변경을 지시하는 것이 가능하도록 구성되고,
    상기 계산 처리 제어 수단은, 상기 계산 코어 제어 수단에 의해 제공되는 상기 계산 프로세스의 정지 지시에 응답하여 상기 계산 코어가 실행 중인 상기 계산 프로세스를 정지하도록 상기 계산 코어를 제어하고, 상기 계산 코어 제어 수단에 의해 제공되는 상기 계산 프로세스의 내용 변경 지시에 응답하여 상기 계산 코어가 행할 상기 계산 프로세스의 내용을 변경하는, 정보 처리 장치.
  7. 제6항에 있어서,
    상기 계산 코어가 행할 상기 계산 프로세스의 수가 상기 계산 코어의 수보다도 많은 경우,
    상기 계산 코어 제어 수단은, 미리 정해진 시간 간격마다 그리고 미리 결정된 기준에 기초하여, 상기 계산 프로세스를 실행하는 중인 상기 계산 코어를 선택하고; 상기 선택된 계산 코어에게 상기 계산 프로세스를 정지하도록 지시하고; 상기 계산 프로세스를 정지한 상기 계산 코어가 행할 상기 계산 프로세스의 내용을 변경하는, 정보 처리 장치.
  8. 운영체계가 설치된 제어 코어; 및 상기 제어 코어에 의해 제어되고 미리 결정된 계산 프로세스를 행하는 적어도 하나의 계산 코어를 포함한 정보 처리 장치를 포함하는 컴퓨터로 하여금,
    정지하고 있는 상기 계산 코어에게 상기 계산 코어가 행할 상기 계산 프로세스의 개시를 지시하는 계산 코어 제어 프로세스;
    상기 계산 프로세스의 개시 지시에 응답하여 상기 계산 코어가 상기 계산 프로세스를 개시하도록 상기 계산 코어를 제어하는 계산 처리 제어 프로세스; 및
    상기 계산 프로세스의 실행 중에 발생하는 미리 설정된 예외 프로세스를 검출하고, 상기 예외 프로세스가 발생한 상기 계산 프로세스의 실행을 정지하는 예외 검출 프로세스를 실행하게 하는 프로그램을 기록하는 컴퓨터 판독가능 기록 매체.
  9. 제8항에 있어서,
    상기 예외 검출 프로세스는, 상기 예외 프로세스가 검출되었다는 것을 상기 제어 코어에 통지하는 프로세스를 포함하는, 컴퓨터 판독가능 기록 매체.
  10. 제9항에 있어서, 상기 기록 매체는, 상기 컴퓨터로 하여금,
    상기 검출된 예외 프로세스를 처리하는 데 필요한 데이터를 상기 제어 코어에 전송하는 데이터 전송 프로세스; 및
    상기 전송된 데이터를 이용하여 상기 계산 코어를 대리해서 상기 예외 프로세스를 처리하는 대리 예외 처리 프로세스를 더 실행하게 하는 프로그램을 기록하는, 컴퓨터 판독가능 기록 매체.
  11. 제8항 내지 제10항 중 어느 한 항에 있어서,
    상기 계산 코어 제어 프로세스는,
    상기 계산 코어에게 상기 계산 코어가 행하는 상기 계산 프로세스의 정지를 지시하고, 상기 계산 프로세스를 정지하는 중인 상기 계산 코어에 대해, 상기 계산 코어가 행할 상기 계산 프로세스의 내용을 변경하는 프로세스를 포함하고,
    상기 계산 처리 제어 프로세스는,
    상기 계산 코어 제어 프로세스에 의해 제공되는 상기 계산 프로세스의 정지 지시에 응답하여, 실행 중인 상기 계산 프로세스를 정지하는 프로세스; 및
    상기 계산 코어 제어 프로세스에 의해 제공되는 상기 계산 프로세스의 내용 변경 지시에 응답하여, 상기 계산 코어가 행할 상기 계산 프로세스의 내용을 변경하는 프로세스를 포함하는, 컴퓨터 판독가능 기록 매체.
  12. 정보 처리 방법으로서,
    계산 코어에 의해, 제어 코어에 의해 제공되는 계산 프로세스의 개시 지시에 응답하여 미리 결정되어 있는 상기 계산 프로세스를 개시하는 단계; 및
    상기 계산 코어가 행한 상기 계산 프로세스의 실행 중에 미리 설정된 예외 프로세스가 발생하는 경우에는, 상기 계산 코어에 의해, 상기 예외 프로세스를 검출하고, 상기 계산 코어에 의해, 상기 예외 프로세스가 발생한 상기 계산 프로세스를 정지하는 단계를 포함하는, 정보 처리 방법.
  13. 제12항에 있어서,
    상기 예외 프로세스가 검출된 경우, 상기 계산 코어는, 상기 예외 프로세스가 검출되었다는 것을 상기 제어 코어에 통지하는, 정보 처리 방법.
  14. 제13항에 있어서,
    상기 계산 코어는, 상기 예외 프로세스를 처리하는 데 필요한 데이터를 상기 제어 코어에 전송하고,
    상기 제어 코어는, 상기 전송된 데이터를 이용하여 상기 계산 코어를 대리해서 상기 예외 프로세스를 처리하는, 정보 처리 방법.
  15. 제12항 내지 제14항 중 어느 한 항에 있어서,
    상기 제어 코어는, 상기 계산 프로세스를 정지하는 중인 상기 계산 코어에게 상기 계산 코어가 행할 상기 계산 프로세스의 내용 변경 지시를 제공하고,
    상기 계산 코어는, 상기 계산 프로세스의 내용 변경 지시에 응답하여 상기 계산 코어가 행할 상기 계산 프로세스의 내용을 변경하는, 정보 처리 방법.
  16. 외부 장치의 제어 하에 미리 결정된 계산 프로세스를 행하는 계산 처리 장치로서, 상기 계산 처리 장치는,
    상기 외부 장치에 의해 제공되는 상기 계산 프로세스의 개시 지시에 응답하여, 상기 계산 처리 장치가 계산 프로세스를 개시하도록 상기 계산 처리 장치를 제어하는 계산 처리 제어 수단; 및
    상기 계산 프로세스의 실행 중에 발생하는 미리 설정된 예외 프로세스를 검출하고, 상기 예외 프로세스가 발생한 상기 계산 프로세스의 실행을 정지하는 예외 검출 수단을 포함하는, 계산 처리 장치.
  17. 제16항에 있어서,
    상기 예외 검출 수단은, 상기 예외 검출 수단이 상기 예외 프로세스를 검출하였다는 것을 상기 외부 장치에 통지하는, 계산 처리 장치.
  18. 제16항 또는 제17항에 있어서,
    상기 예외 검출 수단에 의해 검출된 상기 예외 프로세스를 처리하는 데 필요한 데이터를 상기 외부 장치에 전송하는 데이터 전송 수단을 더 포함하는, 계산 처리 장치.
  19. 제16항 내지 제18항 중 어느 한 항에 있어서,
    상기 계산 처리 제어 수단은,
    상기 외부 장치에 의해 제공되는 상기 계산 프로세스의 정지 지시에 응답하여, 상기 계산 처리 장치가 실행 중인 상기 계산 프로세스의 정지를 행하도록 상기 계산 처리 장치를 제어하고;
    상기 외부 장치에 의해 제공되는 상기 계산 프로세스의 내용 변경 지시에 응답하여, 상기 계산 처리 장치가 행할 상기 계산 프로세스의 내용을 변경하는, 계산 처리 장치.
  20. 컴퓨터 판독가능 저장 매체로서,
    계산 처리 장치로 하여금,
    외부 장치에 의해 제공되는 계산 프로세스의 개시 지시에 응답하여, 상기 계산 처리 장치가 상기 계산 프로세스를 개시하도록 상기 계산 처리 장치를 제어하는 계산 처리 제어 프로세스; 및
    상기 계산 프로세스의 실행 중에 발생하는 미리 설정된 예외 프로세스를 검출하고, 상기 예외 프로세스가 발생한 상기 계산 프로세스의 실행을 정지하는 예외 검출 프로세스를 실행하게 하는 프로그램을 저장하는 컴퓨터 판독가능 저장 매체.
  21. 제20항에 있어서,
    상기 예외 검출 프로세스는, 상기 예외 프로세스가 검출되었다는 것을 상기 외부 장치에 통지하는 프로세스를 포함하는, 컴퓨터 판독가능 저장 매체.
  22. 제20항 또는 제21항에 있어서,
    상기 계산 처리 장치로 하여금, 상기 검출된 예외 프로세스를 처리하는 데 필요한 데이터를 상기 외부 장치에 전송하는 데이터 전송 프로세스를 더 실행하게 하는 프로그램을 기록하는, 컴퓨터 판독가능 저장 매체.
  23. 제20항 내지 제22항 중 어느 한 항에 있어서,
    상기 계산 처리 제어 프로세스는,
    상기 외부 장치에 의해 제공되는 상기 계산 프로세스의 정지 지시에 응답하여, 실행 중인 상기 계산 프로세스를 정지하는 프로세스; 및
    상기 외부 장치에 의해 제공되는 상기 계산 프로세스의 내용 변경 지시에 응답하여, 상기 계산 코어가 행할 상기 계산 프로세스의 내용을 변경하는 프로세스를 포함하는, 컴퓨터 판독가능 저장 매체.
  24. 계산 처리 방법으로서,
    외부 장치에 의해 제공되는 계산 프로세스의 개시 지시에 응답하여, 미리 결정되어 있는 상기 계산 프로세스를 개시하는 단계; 및
    상기 계산 프로세스의 실행 중에 미리 설정된 예외 프로세스가 발생하는 경우에는, 상기 예외 프로세스를 검출하고, 상기 예외 프로세스가 발생한 상기 계산 프로세스를 정지하는 단계를 포함하는, 계산 처리 방법.
  25. 제24항에 있어서,
    상기 예외 프로세스가 검출된 경우, 상기 예외 프로세스가 검출된 것을 상기 외부 장치에 통지하는 단계를 포함하는, 계산 처리 방법.
  26. 제25항에 있어서,
    상기 예외 프로세스가 검출된 경우, 상기 예외 프로세스를 처리하는 데 필요한 데이터를 상기 제어 코어에 전송하는 단계를 포함하는, 계산 처리 방법.
KR1020167014916A 2013-11-08 2014-11-05 정보 처리 장치, 정보 처리 방법, 기록 매체, 계산 처리 장치, 계산 처리 방법 KR101783164B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013232197A JP5867482B2 (ja) 2013-11-08 2013-11-08 情報処理装置、情報処理方法、プログラム、計算処理装置、計算処理方法
JPJP-P-2013-232197 2013-11-08
PCT/JP2014/005561 WO2015068382A1 (ja) 2013-11-08 2014-11-05 情報処理装置、情報処理方法、記録媒体、計算処理装置、計算処理方法

Publications (2)

Publication Number Publication Date
KR20160083916A true KR20160083916A (ko) 2016-07-12
KR101783164B1 KR101783164B1 (ko) 2017-09-28

Family

ID=53041177

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167014916A KR101783164B1 (ko) 2013-11-08 2014-11-05 정보 처리 장치, 정보 처리 방법, 기록 매체, 계산 처리 장치, 계산 처리 방법

Country Status (6)

Country Link
US (1) US10241829B2 (ko)
EP (1) EP3067796A4 (ko)
JP (1) JP5867482B2 (ko)
KR (1) KR101783164B1 (ko)
CN (1) CN105723340B (ko)
WO (1) WO2015068382A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101870492B1 (ko) 2015-06-22 2018-06-22 엘에스산전 주식회사 Plc 시스템
CN108368211B (zh) 2015-12-09 2021-07-23 Agc株式会社 固化性组合物及固化物
JP6798211B2 (ja) * 2016-09-21 2020-12-09 日本電気株式会社 並列計算機システムおよび管理方法
JP6249119B1 (ja) 2017-03-15 2017-12-20 日本電気株式会社 制御装置、制御方法、プログラム、情報処理装置
CN111291373B (zh) * 2020-02-03 2022-06-14 思客云(北京)软件技术有限公司 用于分析数据污染传播的方法、设备和计算机可读存储介质
JP7405008B2 (ja) * 2020-06-08 2023-12-26 富士通株式会社 情報処理装置、情報処理プログラム、及び、情報処理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0619856A (ja) 1991-09-20 1994-01-28 Hitachi Ltd 並列計算機
JP2008165318A (ja) 2006-12-27 2008-07-17 Hitachi Ltd 計算機システム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6304963B1 (en) * 1998-05-14 2001-10-16 Arm Limited Handling exceptions occuring during processing of vector instructions
TW200502847A (en) * 2003-07-08 2005-01-16 Benq Corp Control device and method for reducing number of interrupts in a processor
EP2203865A2 (en) 2007-09-24 2010-07-07 Apple Inc. Embedded authentication systems in an electronic device
JP5239752B2 (ja) * 2008-10-31 2013-07-17 富士通株式会社 同期メッセージ発行システム、同期メッセージ発行方法および同期メッセージ発行プログラム
US8271990B2 (en) 2009-02-27 2012-09-18 International Business Machines Corporation Removing operating system jitter-induced slowdown in virtualized environments
US8260996B2 (en) * 2009-04-24 2012-09-04 Empire Technology Development Llc Interrupt optimization for multiprocessors
US8537832B2 (en) * 2010-03-12 2013-09-17 Lsi Corporation Exception detection and thread rescheduling in a multi-core, multi-thread network processor
WO2012014285A1 (ja) 2010-07-27 2012-02-02 富士通株式会社 割込制御方法、マルチコアプロセッサシステム、および割込制御プログラム
PL2641292T3 (pl) 2010-11-17 2019-11-29 Luvata Appleton Llc Anoda kolektora alkalicznego
US20140351617A1 (en) * 2013-05-27 2014-11-27 Motorola Mobility Llc Method and Electronic Device for Bringing a Primary Processor Out of Sleep Mode

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0619856A (ja) 1991-09-20 1994-01-28 Hitachi Ltd 並列計算機
JP2008165318A (ja) 2006-12-27 2008-07-17 Hitachi Ltd 計算機システム

Also Published As

Publication number Publication date
CN105723340A (zh) 2016-06-29
US20160371113A1 (en) 2016-12-22
JP5867482B2 (ja) 2016-02-24
CN105723340B (zh) 2019-12-10
EP3067796A4 (en) 2017-07-19
WO2015068382A1 (ja) 2015-05-14
JP2015094974A (ja) 2015-05-18
EP3067796A1 (en) 2016-09-14
KR101783164B1 (ko) 2017-09-28
US10241829B2 (en) 2019-03-26

Similar Documents

Publication Publication Date Title
KR101783164B1 (ko) 정보 처리 장치, 정보 처리 방법, 기록 매체, 계산 처리 장치, 계산 처리 방법
Zhang et al. The demikernel datapath os architecture for microsecond-scale datacenter systems
US11836515B2 (en) Multi-hypervisor virtual machines
US10678550B2 (en) Capturing snapshots of offload applications on many-core coprocessors
Boucher et al. Putting the" micro" back in microservice
JP5180373B2 (ja) 仮想化環境における割り込みメッセージ終了のレイジー処理
US9946870B2 (en) Apparatus and method thereof for efficient execution of a guest in a virtualized enviroment
US8544010B2 (en) Providing notification to speculatively waking up target virtual machine for an I/O event using multiple virtual machines and processors
US8387075B1 (en) Common scheduling and synchronization primitives
Yu et al. Fine-grained GPU sharing primitives for deep learning applications
US20160085568A1 (en) Hybrid virtualization method for interrupt controller in nested virtualization environment
WO2014090008A1 (zh) 一种任务处理的方法和虚拟机
Dai et al. A lightweight VMM on many core for high performance computing
Mvondo et al. Closer: A new design principle for the privileged virtual machine os
JP6249119B1 (ja) 制御装置、制御方法、プログラム、情報処理装置
WO2016067496A1 (ja) 情報処理装置
Kang et al. Partial migration technique for GPGPU tasks to Prevent GPU Memory Starvation in RPC‐based GPU Virtualization
KR20170124744A (ko) 가상 머신의 입출력 처리 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
GRNT Written decision to grant