KR20220079692A - 데이터 처리 실행 장치, 데이터 처리 실행 방법 및 기록 매체에 저장된 데이터 처리 실행 프로그램 - Google Patents

데이터 처리 실행 장치, 데이터 처리 실행 방법 및 기록 매체에 저장된 데이터 처리 실행 프로그램 Download PDF

Info

Publication number
KR20220079692A
KR20220079692A KR1020227017986A KR20227017986A KR20220079692A KR 20220079692 A KR20220079692 A KR 20220079692A KR 1020227017986 A KR1020227017986 A KR 1020227017986A KR 20227017986 A KR20227017986 A KR 20227017986A KR 20220079692 A KR20220079692 A KR 20220079692A
Authority
KR
South Korea
Prior art keywords
engine
data processing
execution
processing
unit
Prior art date
Application number
KR1020227017986A
Other languages
English (en)
Other versions
KR102467126B1 (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 KR20220079692A publication Critical patent/KR20220079692A/ko
Application granted granted Critical
Publication of KR102467126B1 publication Critical patent/KR102467126B1/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/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
    • 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • 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
    • G06F9/4818Priority circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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/541Interprogram communication via adapters, e.g. between incompatible applications

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)
  • Electrophonic Musical Instruments (AREA)

Abstract

복수의 엔진은, 각각이 데이터 처리를 실행한다. 엔진 선택부(102)는, 복수의 엔진 중 어느 하나의 엔진이 실행 엔진으로서 데이터 처리를 실행하고 있을 때에, 실행 엔진이 실행하고 있는 데이터 처리인 실행 데이터 처리의 실행을 계승하는 계승 엔진을, 복수의 엔진 중에서 선택한다. 엔진 실행 관리부(103)는, 실행 엔진에 실행 데이터 처리의 실행을 정지시키고, 계승 엔진에 실행 데이터 처리의 실행을 계승하게 한다.

Description

데이터 처리 실행 장치, 데이터 처리 실행 방법 및 데이터 처리 실행 프로그램
본 발명은, 데이터 처리의 스케줄링에 기술에 관한 것이다.
데이터 처리의 스케줄링에 관한 기술로서, 특허문헌 1에 기재된 기술이 있다.
특허문헌 1에서는, 데이터 처리를 실행하는 복수의 엔진 중에서, 데이터 처리를 데드라인 내에 완료시킬 수 있는 엔진을 선택하는 기술이 개시되어 있다. 예를 들면, 특허문헌 1의 기술에서는, 연산 정밀도는 낮지만 처리 시간이 짧은 엔진 또는 연산 정밀도는 높지만 처리 시간이 긴 엔진이 선택된다.
[특허문헌 1] 국제 공개 WO2018-198823호
특허문헌 1의 기술에서는, 데이터 처리의 개시시에, 데이터 처리를 데드라인 내에 완료시킬 수 있는 엔진이 선택된다. 이 때문에, 특허문헌 1의 기술에서는, 임의의 데이터 처리(이하, 「데이터 처리 A」라고 함)의 실행 개시 후에, 돌발 이벤트에 의해, 데이터 처리 A보다 우선도가 높은 새로운 데이터 처리(이하, 「데이터 처리 B」라고 함)가 발생한 경우에는, 데이터 처리 A를 데드라인 내에 완료시킬 수가 없다고 하는 사태가 생긴다.
즉, 데이터 처리 A의 실행 개시 후에 우선도가 높은 데이터 처리 B가 발생하면, 데이터 처리 B를 우선하여 실행하기 위해서 데이터 처리 A의 실행이 중단된다. 그리고, 데이터 처리 B의 완료 후에 데이터 처리 A의 실행이 재개한다. 특허문헌 1에서는, 데이터 처리 A에 적용하는 엔진은 데이터 처리 A의 개시시에 고정되어 있고, 나중에 변경할 수가 없다. 이 때문에, 특허문헌 1의 기술에서는, 돌발 이벤트가 발생한 경우에, 데이터 처리 A를 데드라인 내에 완료시킬 수가 없다.
이와 같이, 특허문헌 1의 기술에서는, 데이터 처리를 실행하는 엔진이 고정되기 때문에, 데이터 처리의 스케줄링을 상황의 변화에 따라 유연하게 행할 수 없다고 하는 과제가 있다.
본 발명은, 이러한 과제를 해결하는 것을 주된 목적으로 한다. 보다 구체적으로는, 본 발명은, 데이터 처리의 스케줄링을 상황의 변화에 따라 유연하게 행할 수 있도록 하는 것을 주된 목적으로 한다.
본 발명에 따른 데이터 처리 실행 장치는,
각각이 데이터 처리를 실행하는 복수의 엔진과,
상기 복수의 엔진 중 어느 하나의 엔진이 실행 엔진으로서 데이터 처리를 실행하고 있을 때에, 상기 실행 엔진이 실행하고 있는 데이터 처리인 실행 데이터 처리의 실행을 계승하는 계승 엔진을, 상기 복수의 엔진 중에서 선택하는 엔진 선택부와,
상기 실행 엔진에 상기 실행 데이터 처리의 실행을 정지시키고, 상기 계승 엔진에 상기 실행 데이터 처리의 실행을 계승하게 하는 제어부를 갖는다.
본 발명에서는, 실행 엔진이 실행 데이터 처리를 실행하고 있어도, 실행 데이터 처리의 실행을 계승 엔진에 계승하게 할 수 있다. 이 때문에, 본 발명에 의하면, 데이터 처리의 스케줄링을 상황의 변화에 따라 유연하게 행할 수 있다.
도 1은 실시의 형태 1에 따른 데이터 처리 실행 장치의 하드웨어 구성예를 나타내는 도면.
도 2는 실시의 형태 1에 따른 데이터 처리 실행 장치의 기능 구성예를 나타내는 도면.
도 3은 실시의 형태 1에 따른 엔진과 연산 정밀도와 데이터 처리와 우선도의 관계를 나타내는 도면.
도 4는 실시의 형태 1에 따른 엔진 리스트의 예를 나타내는 도면.
도 5는 실시의 형태 1에 따른 실행 데이터 처리 리스트의 예를 나타내는 도면.
도 6은 실시의 형태 1에 따른 실행 대기 데이터 처리 리스트의 예를 나타내는 도면.
도 7은 실시의 형태 1에 따른 블록 함수 리스트와 엔진 실장 코드의 예를 나타내는 도면.
도 8은 실시의 형태 1에 따른 연산 결과 저장 메모리의 구성예를 나타내는 도면.
도 9는 실시의 형태 1에 따른 정상 상태에서의 데이터 처리의 실행 스케줄의 예를 나타내는 도면.
도 10은 실시의 형태 1에 따른 돌발 이벤트가 발생한 경우의 데이터 처리의 실행 스케줄의 예를 나타내는 도면.
도 11은 실시의 형태 1에 따른 돌발 이벤트가 발생한 경우의 데이터 처리의 실행 스케줄의 예를 나타내는 도면.
도 12는 실시의 형태 1에 따른 정상 상태에서의 데이터 처리의 실행 스케줄의 예를 나타내는 도면.
도 13은 실시의 형태 1에 따른 돌발 이벤트가 발생한 경우의 데이터 처리의 실행 스케줄의 예를 나타내는 도면.
도 14는 실시의 형태 1에 따른 데이터 처리 실행 장치의 동작의 개요를 나타내는 도면.
도 15는 실시의 형태 1에 따른 제 1 조합 추출 처리의 범위를 나타내는 도면.
도 16은 실시의 형태 1에 따른 제 2 조합 추출 처리(1회째)의 범위를 나타내는 도면.
도 17은 실시의 형태 1에 따른 제 2 조합 추출 처리(2회째)의 범위를 나타내는 도면.
도 18은 실시의 형태 1에 따른 엔진 선택부의 동작예를 나타내는 흐름도.
도 19는 실시의 형태 1에 따른 제 1 조합 추출 처리의 상세를 나타내는 흐름도.
도 20은 실시의 형태 1에 따른 제 2 조합 추출 처리의 상세를 나타내는 흐름도.
도 21은 실시의 형태 1에 따른 엔진 실행 관리부의 동작예를 나타내는 흐름도.
도 22는 실시의 형태 1에 따른 엔진 실행 관리부의 동작예를 나타내는 흐름도.
도 23은 실시의 형태 1에 따른 엔진 실행 관리부의 동작예를 나타내는 흐름도.
도 24는 실시의 형태 1에 따른 엔진 실행부의 동작예를 나타내는 흐름도.
도 25는 실시의 형태 1에 따른 시각=0에서의 실행 데이터 처리 리스트 및 실행 대기 데이터 처리 리스트의 예를 나타내는 도면.
도 26은 실시의 형태 1에 따른 시각=25에서의 실행 데이터 처리 리스트 및 실행 대기 데이터 처리 리스트의 예를 나타내는 도면.
도 27은 실시의 형태 1에 따른 시각=150에서의 실행 데이터 처리 리스트 및 실행 대기 데이터 처리 리스트의 예를 나타내는 도면.
도 28은 실시의 형태 1에 따른 시각=200에서의 실행 데이터 처리 리스트 및 실행 대기 데이터 처리 리스트의 예를 나타내는 도면.
도 29는 실시의 형태 1에 따른 시각=350에서의 실행 데이터 처리 리스트 및 실행 대기 데이터 처리 리스트의 예를 나타내는 도면.
도 30은 실시의 형태 1에 따른 시각=425에서의 실행 데이터 처리 리스트 및 실행 대기 데이터 처리 리스트의 예를 나타내는 도면.
도 31은 실시의 형태 1에 따른 시각=775에서의 실행 데이터 처리 리스트 및 실행 대기 데이터 처리 리스트의 예를 나타내는 도면.
도 32는 실시의 형태 2에 따른 데이터 처리 실행 장치의 기능 구성예를 나타내는 도면.
도 33은 실시의 형태 2에 따른 변환 처리의 타이밍예를 나타내는 도면.
도 34는 실시의 형태 2에 따른 변환 처리부의 동작의 개요를 나타내는 도면.
도 35는 실시의 형태 2에 따른 변환 처리 시간 리스트의 예를 나타내는 도면.
이하, 본 발명의 실시의 형태에 대해, 도면을 이용하여 설명한다. 이하의 실시의 형태의 설명 및 도면에 있어서, 동일한 부호를 교부한 것은, 동일한 부분 또는 상당하는 부분을 나타낸다.
(실시의 형태 1)
***구성의 설명***
도 1은, 본 실시의 형태에 따른 데이터 처리 실행 장치(100)의 하드웨어 구성예를 나타낸다.
본 실시의 형태에 따른 데이터 처리 실행 장치(100)는, 컴퓨터이다. 또, 데이터 처리 실행 장치(100)의 동작 순서는, 데이터 처리 실행 방법에 상당한다. 또, 데이터 처리 실행 장치(100)의 동작을 실현하는 프로그램은, 데이터 처리 실행 프로그램에 상당한다.
데이터 처리 실행 장치(100)는, 데이터 처리를 실행한다. 데이터 처리란, 디지털 신호에 산술 연산 및 논리 연산의 적어도 어느 하나를 행하여 디지털 신호의 해석, 가공, 분류, 변환 등을 행하는 디지털 신호 처리이다.
데이터 처리 실행 장치(100)는, 하드웨어로서, 처리 회로(900), CPU(Central Processing Unit)(901), RAM(902), ROM(903) 및 하드웨어 가속기(904)를 구비한다.
하드웨어 가속기(904)에는, FPGA(Field-Programmable Gate Array)(905), GPU(Graphics Processing Unit)(906), DSP(Digital Signal Processor)(907) 및 ASIC(Application Specific Integrated Circuit)(908)이 포함된다.
처리 회로(900)는, CPU, FPGA, GPU, DSP 및 ASIC의 어느 하나로 실현된다. 처리 회로(900)는, 후술하는 엔진을 실현하는 FPGA(905), GPU(906), DSP(907) 및 ASIC(908)와는 역할이 다르기 때문에, 이것들과 구별하기 위해서, 이것들과는 다른 명칭을 이용하고 있다. 처리 회로(900)는, CPU(901), FPGA(905), GPU(906), DSP(907) 및 ASIC(908) 중 어느 하나라도 좋고, 이것들과는 다른 CPU, FPGA, GPU, DSP 및 ASIC 중 어느 하나라도 좋다. 처리 회로(900)는, 프로세싱 회로에 해당한다.
이하에서는, 처리 회로(900)가 CPU(901)와는 다른 CPU인 예를 설명한다.
처리 회로(900)는, 후술하는 데이터 처리 등록부(101), 엔진 선택부(102), 엔진 실행 관리부(103), 엔진 실행부(104) 및 통신 처리부(105)를 실행한다.
데이터 처리 등록부(101), 엔진 선택부(102), 엔진 실행 관리부(103), 엔진 실행부(104) 및 통신 처리부(105)는, 프로그램에 의해 실현된다. 즉, 처리 회로(900)가, 데이터 처리 등록부(101), 엔진 선택부(102), 엔진 실행 관리부(103), 엔진 실행부(104) 및 통신 처리부(105)의 기능을 실현하는 프로그램을 실행하여, 후술하는 데이터 처리 등록부(101), 엔진 선택부(102), 엔진 실행 관리부(103), 엔진 실행부(104) 및 통신 처리부(105)의 기능이 달성된다.
데이터 처리 등록부(101), 엔진 선택부(102), 엔진 실행 관리부(103), 엔진 실행부(104) 및 통신 처리부(105)의 기능을 실현하는 프로그램은, ROM(903)에서 기억되어 있다. 데이터 처리 등록부(101), 엔진 선택부(102), 엔진 실행 관리부(103), 엔진 실행부(104) 및 통신 처리부(105)의 기능을 실현하는 프로그램은 RAM(902)에 로드되어, 처리 회로(900)에 의해 실행된다.
또, 데이터 처리 등록부(101), 엔진 선택부(102), 엔진 실행 관리부(103), 엔진 실행부(104) 및 통신 처리부(105)의 처리의 결과를 나타내는 정보, 데이터, 신호치 및 변수치의 적어도 어느 하나가, RAM(902), ROM(903), 처리 회로(900) 내의 레지스터 및 캐시 메모리 중 적어도 어느 하나에 기억된다.
또, 데이터 처리 등록부(101), 엔진 선택부(102), 엔진 실행 관리부(103), 엔진 실행부(104) 및 통신 처리부(105)의 기능을 실현하는 프로그램은, 자기 디스크, 플렉서블 디스크, 광디스크, 콤팩트 디스크, 블루레이(등록상표) 디스크, DVD등의 운반 가능 기록 매체에 저장되어 있어도 좋다. 그리고, 데이터 처리 등록부(101), 엔진 선택부(102), 엔진 실행 관리부(103), 엔진 실행부(104) 및 통신 처리부(105)의 기능을 실현하는 프로그램이 저장된 운반 가능 기록 매체를 유통시켜도 좋다.
또, 데이터 처리 등록부(101), 엔진 선택부(102), 엔진 실행 관리부(103), 엔진 실행부(104) 및 통신 처리부(105)의 「부」를, 「회로」 또는 「공정」 또는 「순서」 또는 「처리」로 바꿔읽어도 좋다.
CPU(901), FPGA(905), GPU(906), DSP(907), ASIC(908)는, 각각, 데이터 처리를 실행하는 엔진을 실현하는 하드웨어 리소스(이하, H/W 리소스라고도 표기함)이다.
엔진이란, 데이터 처리를 실행하기 위한 하드웨어 리소스와 소프트웨어가 통합된 개념이다.
예를 들면, CPU(901)가 데이터 처리를 위한 알고리즘이 기술된 프로그램을 실행함으로써 엔진이 실현된다.
엔진의 일례로서, CNN(컨볼루션 뉴럴 네트워크)을 들 수 있다.
도 1에서는, 엔진을 실현하는 하드웨어 리소스로서 CPU(901), FPGA(905), GPU(906), DSP(907), ASIC(908)가 나타난다. 그러나, 엔진을 실현하는 하드웨어 리소스로서, 이들 중 하나 이상이 존재하고 있으면 좋다. 즉, 엔진을 실현하는 하드웨어 리소스는 CPU(901)뿐이어도 좋고, CPU(901)와 FPGA(905), GPU(906)와 DSP(907)와 같은 조합이어도 좋다.
데이터 처리와 엔진의 관계에 대해서는 후술한다.
데이터 처리 실행 장치(100)는, 센서, 표시 장치, 액츄에이터 등의 기기와 네트워크로 접속되어 있어도 좋다. 또, 데이터 처리 실행 장치(100)는, 데이터 처리 실행 장치(100)와 동종의 데이터 처리 실행 장치와 네트워크로 접속되어 있어도 좋다.
도 2는, 본 실시의 형태에 따른 데이터 처리 실행 장치(100)의 기능 구성예를 나타낸다.
본 실시의 형태에 따른 데이터 처리 실행 장치(100)는, 데이터 처리 등록부(101), 엔진 선택부(102), 엔진 실행 관리부(103), 엔진 실행부(104), 통신 처리부(105), 엔진 실행 관리 데이터(120), 엔진 소프트웨어(130) 및 연산 결과 저장 메모리(140)로 구성된다.
엔진 실행부(104)는, CPU 실행부(1041), FPGA 실행부(1042)로 더 구성된다.
엔진 실행 관리 데이터(120)는, 실행 데이터 처리 리스트(121)와 실행 대기 데이터 처리 리스트(122)로 더 구성된다.
엔진 소프트웨어(130)는, 또한, 블록 함수 리스트(131) 및 엔진 실장 코드(132)로 구성된다.
도 2에 나타내는 기능 구성의 상세를 설명하기 전에, 엔진과 연산 정밀도(이하, 단지 정밀도라고도 함)와 데이터 처리와 우선도의 관계를 설명한다.
도 3은, 엔진과 연산 정밀도와 데이터 처리와 우선도의 관계를 나타낸다.
도 3의 예에서는, 5 종류의 데이터 처리가 존재하는 것을 전제로 하고 있다. 각 데이터 처리에는, 데이터 처리 ID(Identifier)가 마련되어 있다. 데이터 처리 ID는, 데이터 처리를 고유하게 식별 가능한 식별자이다. 또, 이하에서는, 데이터 처리 ID:1의 데이터 처리를 데이터 처리 1이라고도 한다. 다른 데이터 처리도 마찬가지로, 데이터 처리 2, 데이터 처리 3, 데이터 처리 4, 데이터 처리 5라고도 한다.
또, 5 종류의 데이터 처리에는, 우선도가 설정되어 있다. 우선도는 수치로 나타난다. 수치가 클수록 우선도가 높은 것으로 한다.
본 실시의 형태에서는, 도 3에 나타내는 바와 같이, 데이터 처리 1의 데이터 처리의 우선도가 가장 높고, 데이터 처리 5의 데이터 처리의 우선도가 가장 낮은 것으로 한다.
본 실시의 형태에서는, 데이터 처리 실행 장치(100)는, 고 우선도의 데이터 처리를 저 우선도의 데이터 처리보다 우선하여 실행한다. 저 우선도의 데이터 처리의 실행 중에 후발적으로 고 우선도의 데이터 처리가 발생한 경우에, 저 우선도의 데이터 처리와 고 우선도의 데이터 처리 데이터 사이에 하드웨어 리소스의 경합이 있으면, 데이터 처리 실행 장치(100)는, 저 우선도의 데이터 처리의 실행을 중단하여, 고 우선도의 데이터 처리를 당해 하드웨어 리소스 상에서 먼저 실행한다.
도 3의 1A, 1B, 2A···5C는, 각각 엔진을 나타낸다.
1A 및 1B는, 데이터 처리 1을 실행하는 엔진이다.
2A, 2B 및 2C는, 데이터 처리 2를 실행하는 엔진이다.
3A, 3B 및 3C는, 데이터 처리 3을 실행하는 엔진이다.
4A 및 4B는, 데이터 처리 4를 실행하는 엔진이다.
5A, 5B 및 5C는, 데이터 처리 5를 실행하는 엔진이다.
각 엔진의 알파벳 부분이 정밀도에 대응한다. 「A」가 가장 정밀도가 높은 엔진을 나타내고, 「C」가 가장 정밀도가 낮은 엔진을 나타낸다. 이와 같이, 본 실시의 형태에서는, 동일한 데이터 처리를 실행 가능한 2 이상의 엔진이 존재하고, 동일한 데이터 처리를 실행 가능한 2 이상의 엔진은, 각각, 정밀도의 차이가 있다.
동일한 데이터 처리를 실행하는 2 이상의 엔진이 동일한 하드웨어 리소스로 실현된다고는 할 수 없다. 예를 들면, 엔진 1A는 FPGA(905)로 실현되고, 엔진 1B는 CPU(901)로 실현될 수 있다.
또, 정밀도와 처리 시간은 트레이드 오프의 관계에 있다. 즉, 동일한 데이터 처리를 실행하는 경우에도, 정밀도가 높은 엔진에서는 처리 시간이 길고, 정밀도가 낮은 엔진에서는 처리 시간이 짧다. 이 때문에, 돌발 이벤트에 의해 고 우선도의 데이터 처리가 새롭게 발생한 경우에, 저 우선도의 데이터 처리의 엔진을 정밀도가 낮은 엔진으로 전환하여, 저 우선도의 데이터 처리의 처리 시간을 단축할 수 있다.
다음에, 이상을 전제로, 도 2에 나타내는 데이터 처리 실행 장치(100)의 기능 구성의 상세를 설명한다.
데이터 처리 등록부(101)는, 데이터 처리 명령을 접수한다. 데이터 처리 명령이란, 데이터 처리의 실행을 지시하는 명령이다. 데이터 처리 명령에는, 데이터 처리 ID, 우선도 및 데드라인이 포함된다.
데드라인은 데이터 처리의 완료 기한이다.
데이터 처리 등록부(101)는, 데이터 처리 명령을 엔진 선택부(102)에 전송 한다.
엔진 선택부(102)는, 복수의 엔진 중에서, 데이터 처리 명령으로 지시받은 데이터 처리를 실행시키는 엔진을 선택한다. 엔진 선택부(102)는, 엔진 리스트(110)를 참조하여, 엔진을 선택한다. 엔진 리스트(110)의 상세는 후술한다.
또, 엔진 선택부(102)에 의해 선택되고, 데이터 처리를 실행하고 있는 엔진을 실행 엔진이라고도 한다. 또, 실행 엔진이 실행하고 있는 데이터 처리를 실행 데이터 처리라고도 한다. 또한, 엔진 선택부(102)에 의해 엔진이 선택되고, 엔진이 할당되어 있지만 미실행의 데이터 처리를 할당 완료 데이터 처리라고도 한다.
엔진 선택부(102)는, 실행 엔진이 실행 데이터 처리를 실행하고 있을 때에, 새로운 데이터 처리가 발생한 경우에, 실행 데이터 처리를 계승하는 엔진을 계승 엔진으로서 선택하는 경우가 있다.
보다 구체적으로는, 엔진 선택부(102)는, 실행 엔진에 의한 실행 데이터 처리의 실행에서는 실행 데이터 처리, 새로운 데이터 처리 및 할당 완료 데이터 처리 중 적어도 어느 하나가 각각의 데드라인까지 완료되지 않는 경우에, 실행 데이터 처리, 새로운 데이터 처리 및 할당 완료 데이터 처리를 각각의 데드라인까지 완료시킬 수 있는 엔진을, 계승 엔진으로서 선택한다. 예를 들면, 엔진 선택부(102)는, 실행 엔진보다 연산 정밀도가 낮고, 실행 데이터 처리, 새로운 데이터 처리 및 할당 완료 데이터 처리를 각각의 데드라인까지 완료시킬 수 있는 엔진을, 계승 엔진으로서 선택한다. 또, 이러한 엔진이 2 이상 있는 경우는, 엔진 선택부(102)는, 가장 연산 정밀도가 높은 엔진을, 계승 엔진으로서 선택한다.
엔진 선택부(102)는, 할당 완료 데이터 처리에 할당되어 있는 엔진의 다른 엔진으로의 전환도 검토한다. 이 때문에, 엔진 선택부(102)는, 할당 완료 데이터 처리에 할당되어 있는 엔진의 다른 엔진으로의 전환과의 조합에 의해, 실행 데이터 처리, 새로운 데이터 처리 및 할당 완료 데이터 처리를 각각의 완료 기한까지 완료시킬 수 있는 엔진을, 계승 엔진으로서 선택한다.
또, 2 이상의 실행 데이터 처리가 있는 경우는, 엔진 선택부(102)는, 2 이상의 실행 데이터 처리, 새로운 데이터 처리 및 할당 완료 데이터 처리를 각각의 완료 기한까지 완료시킬 수 있는 엔진을, 계승 엔진으로서 선택한다.
엔진 선택부(102)는, 실행 데이터 처리마다 다른 엔진으로의 전환을 검토한다. 이 때문에, 엔진 선택부(102)는, 다른 실행 데이터 처리의 다른 엔진으로의 전환, 할당 완료 데이터 처리에 할당되어 있는 엔진의 다른 엔진으로의 전환의 조합에 의해, 실행 데이터 처리, 새로운 데이터 처리, 할당 완료 데이터 처리 및 다른 실행 데이터 처리를 각각의 완료 기한까지 완료시킬 수 있는 엔진을, 계승 엔진으로서 선택한다.
또, 엔진 선택부(102)는, 실행 데이터 처리, 새로운 데이터 처리 및 할당 완료 데이터 처리 중 우선도가 높은 데이터 처리일수록 연산 정밀도가 높은 엔진으로 실행되도록, 계승 엔진을 선택한다.
또, 엔진 선택부(102)로 행해지는 처리는, 엔진 선택 처리에 상당한다.
엔진 실행 관리부(103)는, 엔진 선택부(102)에 의해 선택된 엔진을 실행하는 하드웨어 리소스에 실행 요구를 출력한다.
또, 엔진 실행 관리부(103)는, 실행 데이터 처리의 중단이 필요한 경우는 중단 지령을 해당하는 하드웨어 리소스에 출력한다. 엔진 실행 관리부(103)는, 중단 지령을 출력하는 것으로, 실행 엔진에 실행 데이터 처리의 실행을 정지시킨다. 또, 실행 데이터 처리의 실행을 계승 엔진에 계승하게 하는 경우는, 엔진 실행 관리부(103)는, 해당하는 하드웨어 리소스에 실행 요구를 출력하여, 계승 엔진에 실행 데이터 처리의 실행을 계승하게 한다.
또한, 중단 상태에 있는 데이터 처리의 재개가 가능하게 되었을 때에, 엔진 실행 관리부(103)는 재개 요구를 해당하는 하드웨어 리소스에 출력한다.
또, 엔진 실행 관리부(103)는, 하드웨어 리소스로부터, 완료 통지 및 스텝 완료 통지를 수신한다.
엔진 실행 관리부(103)는 엔진 실행부(104)와 함께 제어부에 상당한다. 또, 엔진 실행 관리부(103)에서 행해지는 처리는 제어 처리에 상당한다.
엔진 실행부(104)에서는, 하드웨어 리소스마다 실행부가 마련되어 있다.
도 2에서는, 간명화를 위해, CPU 실행부(1041) 및 FPGA 실행부(1042)만을 나타내고 있다.
CPU 실행부(1041)는 CPU(901) 내에서 엔진을 실행하는 기능이다.
또, FPGA 실행부(1042)는, FPGA(905) 내에서 엔진을 실행하는 기능이다.
또, 엔진 실행부(104)는, 계승 엔진이 선택되기 전에는, 실행 데이터 처리를 실행 가능한 엔진에 공통으로 마련되어 있는 공통 프로그램 코드(후술하는 엔진 실장 코드(132))를 변환하여 실행 엔진 전용의 개별 프로그램 코드를 생성한다. 그리고, 엔진 실행부(104)는, 생성한 실행 엔진 전용의 개별 프로그램 코드를 이용하여 실행 엔진에 실행 데이터 처리를 실행시킨다.
한편, 계승 엔진이 선택된 경우는, 엔진 실행부(104)는, 공통 프로그램 코드를 변환하여 계승 엔진 전용의 개별 프로그램 코드를 생성한다. 그리고, 엔진 실행부(104)는, 생성한 계승 엔진 전용의 개별 프로그램 코드를 이용하여 계승 엔진에 실행 데이터 처리를 계승하게 한다.
엔진 실행부(104)는 엔진 실행 관리부(103)와 함께 제어부에 상당한다. 또, 엔진 실행부(104)에 의해 행해지는 처리는 제어 처리에 상당한다.
통신 처리부(105)는, 엔진에 의한 데이터 처리의 결과를 외부에 송신한다.
통신 처리부(105)는, 예를 들면, 액츄에이터 또는 데이터 처리 실행 장치(100)와 동등한 데이터 처리 실행 장치에 데이터 처리의 결과를 송신한다.
엔진 실행 관리 데이터(120)에는, 실행 데이터 처리 리스트(121)와 실행 대기 데이터 처리 리스트(122)가 포함된다.
실행 데이터 처리 리스트(121)는, 실행 중의 데이터 처리가 나타나는 리스트이다.
실행 대기 데이터 처리 리스트(122)는, 실행 대기 데이터 리스트가 나타나는 리스트이다.
실행 데이터 처리 리스트(121)와 실행 대기 데이터 처리 리스트(122)의 상세는 후술한다.
엔진 소프트웨어(130)에는, 블록 함수 리스트(131)와 엔진 실장 코드(132)가 포함된다.
엔진 실장 코드(132)는, 각 엔진을 실장하기 위한 코드(프로그램)이다. 엔진 실장 코드(132)는, 복수의 코드 블록(이하, 단지 블록이라고도 함)으로 구성된다.
블록 함수 리스트(131)에는, 엔진 실장 코드(132)의 블록마다, 각 블록의 처리를 실현하는 함수가 나타난다.
블록 함수 리스트(131) 및 엔진 실장 코드(132)의 상세는 후술한다.
연산 결과 저장 메모리(140)는, 엔진에 의한 연산 결과를 저장한다.
연산 결과 저장 메모리(140)의 상세는 후술한다.
도 4는, 엔진 리스트(110)의 예를 나타낸다.
엔진 리스트(110)에서는, 데이터 처리 ID마다, 선택 가능한 엔진의 엔진 ID가 나타난다. 또, 엔진 ID마다, 정밀도, 실행 하드웨어 리소스, 각 스텝의 처리 시간이 나타난다.
정밀도는, 0~100의 수치로 표현된다. 수치가 클수록 정밀도가 높다.
실행 하드웨어 리소스는, 엔진의 실행에 필요한 하드웨어 리소스이다.
처리 시간은, 각 스텝의 실행에 필요로 하는 시간이다. 또, 「-」은 해당하는 스텝이 존재하지 않는 것을 의미한다. 스텝이란, 데이터 처리를 구성하는 부분 데이터 처리이다. 또, 엔진에 따라 스텝의 실행수가 변화한다. 예를 들면, 데이터 처리 3은, 엔진 3A에서는, 2개의 스텝이 실행되지만, 엔진 3B에서는, 3개의 스텝이 실행된다.
도 5는, 실행 데이터 처리 리스트(121)의 예를 나타낸다.
실행 데이터 처리 리스트(121)에서는, 실행 데이터 처리가 관리된다. 즉, 실행 데이터 처리 리스트(121)에서는, 엔진에 의해 실행 중의 데이터 처리가 관리된다.
도 5에 있어서, 하드웨어 리소스 ID는, 하드웨어 리소스의 식별자이다.
하드웨어 리소스 종별은, 하드웨어 리소스의 종별이다. 또, 도 5에서는, 도 2에 대응시켜, FPGA(905)와 CPU(901)만을 나타내고 있다.
데이터 처리 ID는, 하드웨어 리소스에 의해 현재 실행 중인 데이터 처리의 식별자이다. 데이터 처리 ID의 값이 0이면, 당해 하드웨어 리소스에서는 데이터 처리가 실행되고 있지 않은 것을 의미한다.
우선도는, 현재 실행 중인 데이터 처리의 우선도이다. 데이터 처리가 실행되고 있지 않은 경우는, 우선도의 값은 0이다.
엔진 ID는, 데이터 처리를 실행하고 있는 엔진의 식별자이다. 데이터 처리가 실행되고 있지 않은 경우는, 엔진 ID의 값은 0이다.
스텝 번호는, 현재 실행 중인 스텝의 식별자이다. 데이터 처리가 실행되고 있지 않은 경우는, 스텝 번호의 값은 0이다.
스텝 개시 시각은, 현재 실행 중인 스텝의 실행을 개시한 시각이다. 본 실시의 형태에서는, 스텝 개시 시각은 카운트치(예를 들면, 1μ초마다 증가되는 카운트치)로 나타난다.
데드라인은, 현재 실행 중인 데이터 처리의 완료 기한의 시각이다. 데드라인도 카운트치로 나타난다.
전환 플래그는, 현재 실행 중인 데이터 처리에 대한 엔진의 전환 요구가 있는 경우에 TRUE가 된다. 전환 플래그가 TRUE가 되면, 현재 실행 중인 스텝의 완료 후에 엔진의 전환 처리가 행해진다.
스텝 완료 통지 플래그는, 스텝 완료 통지가 발행된 경우에 TRUE가 된다. 스텝 완료 통지는 스텝의 실행이 완료된 것을 엔진 실행 관리부(103)에 통지하는 메시지이다. 스텝 완료 통지 플래그가 TRUE가 되면, 엔진의 전환 처리가 행해진다.
중단 가부 플래그는, 하드웨어 리소스가 스텝의 실행 도중에의 중단을 허용하는지 여부를 나타낸다. 하드웨어 리소스가 스텝의 실행 도중에의 중단을 허용하는 경우는 중단 가부 플래그에 TRUE가 나타난다. FPGA(905)에서는 스텝의 실행 도중에의 중단은 허용되지 않지만, CPU(901)에서는 스텝의 실행 도중에의 중단은 허용된다. 스텝의 실행 도중에의 중단은, 리얼타임 OS(Operating System) 등의 태스크의 선점 기능을 이용하여 실현된다.
도 6은, 실행 대기 데이터 처리 리스트(122)의 예를 나타낸다.
실행 대기 데이터 처리 리스트(122)에서는, 실행 대기의 데이터 처리가 관리된다.
도 6에 있어서, 하드웨어 리소스 ID는, 하드웨어 리소스의 식별자이다.
상태는, 「스텝 완료 대기」와 「실행 가능 상태」의 어느 하나를 취한다. 「스텝 완료 대기」는, 다른 데이터 처리(도 6의 예에서는 데이터 처리 ID2)의 스텝의 실행 완료를 기다리고 있는 상태이다. 다른 데이터 처리의 완료 후에 다른 엔진으로 전환하는 경우의 상태는 「스텝 완료 대기」이다. 「실행 가능 상태」는, 우선도가 높은 다른 데이터 처리의 실행 완료를 기다리고 있는 상태이다.
데이터 처리 ID는, 실행 대기의 데이터 처리의 식별자이다.
우선도는, 실행 대기의 데이터 처리의 우선도이다.
엔진 ID는, 실행 대기의 데이터 처리를 실행할 예정의 엔진의 식별자이다.
스텝 번호는, 실행 대기의 데이터 처리의 스텝의 식별자이다. 즉, 스텝 번호는, 실행 대기 스텝의 식별자이다.
데드라인은, 실행 대기 스텝의 완료 기한의 시각이다. 데드라인도 카운트치로 나타난다.
스텝 잔여 처리 시간은, 실행 대기 스텝의 나머지의 처리 시간이다. 스텝의 실행 도중에 실행이 중단한 경우에, 실행 대기 스텝의 나머지의 처리 시간을 얻기 위해 이용된다. 스텝 잔여 처리 시간도 카운트치로 나타난다.
전환 플래그는, 실행 대기의 데이터 처리에 대한 엔진의 전환 요구가 있는 경우에 TRUE가 된다. 전환 플래그가 TRUE가 되면, 실행 대기 스텝의 완료 후에 엔진의 전환 처리가 행해진다.
스텝 완료 통지 플래그는, 스텝 완료 통지가 발행된 경우에 TRUE가 된다. 스텝 완료 통지 플래그가 TRUE가 되면, 엔진의 전환 처리가 행해진다.
도 7은, 블록 함수 리스트(131) 및 엔진 실장 코드(132)의 예를 나타낸다.
엔진 실장 코드(132)는, 엔진을 실장하기 위한 코드(프로그램)이다. 엔진 실장 코드(132)는 복수의 코드 블록으로 구성된다. 엔진 실장 코드(132)는, 동일한 데이터 처리를 실행하는 2 이상의 엔진(예를 들면, 엔진 1A 및 엔진 1B)에 공통으로 마련되어 있는 프로그램 코드(공통 프로그램 코드)이다. 엔진 실행 관리부(103)는, 엔진 실장 코드(132)를 엔진마다(예를 들면, 엔진 1A마다, 엔진 1B마다)의 개별의 프로그램 코드로 변환한다.
블록 함수 리스트(131)는, 엔진 실장 코드(132)의 각 블록의 처리를 실현하는 함수의 리스트이다.
블록 함수 리스트(131)에 있어서, 엔진 ID는, 엔진의 식별자이다.
블록 번호는, 엔진 실장 코드(132)에 포함되는 블록의 식별자이다.
함수의 어드레스는, 블록에 포함되는 함수의 어드레스이다.
도 8은, 연산 결과 저장 메모리(140)의 예를 나타낸다.
연산 결과 저장 메모리(140)에서는, 데이터 처리마다 연산 결과를 저장하기 위한 전용의 메모리 영역이 확보되어 있다.
데이터 처리를 실행하는 엔진이 도중에 전환되어도, 전환 후의 엔진이 해당하는 데이터 처리의 메모리 영역에 액세스하는 것으로, 전환 전의 엔진의 연산 결과를 이용할 수 있다.
***동작의 설명***
이하에서, 본 실시의 형태에 따른 데이터 처리 실행 장치(100)의 동작예를 설명한다.
먼저, 도 9~도 14를 참조하여, 고 우선도의 데이터 처리의 발생에 의해 저 우선도의 데이터 처리의 엔진을 정밀도가 낮은 엔진으로 전환하는 처리를 설명한다.
도 9는, 데이터 처리 2와 데이터 처리 3의 실행 스케줄을 나타낸다.
데이터 처리 2는 엔진 2A에 의해 실행되는 것으로 한다. 또, 데이터 처리 3은 엔진 3A에 의해 실행되는 것으로 한다.
데이터 처리 2 및 데이터 처리 3은, 각각의 데드라인까지 완료 가능하다.
또, 엔진 2A, 엔진 3A 및 후술의 엔진 1A 및 엔진 2B는, 모두 CPU(901)에 의해 실현되는 것으로 한다. 즉, 엔진 2A, 엔진 3A, 엔진 1A 및 엔진 2B는 병렬로는 처리되지 않는다.
도 10은, 데이터 처리 2의 실행 중에 돌발 이벤트에 의해, 새로운 데이터 처리인, 고 우선도의 데이터 처리 1이 발생한 것을 나타낸다. 데이터 처리 1이 발생한 시점에서 데이터 처리 2는 실행 중이기 때문에, 데이터 처리 2는 실행 데이터 처리에 상당한다. 또, 엔진 2A는, 실행 엔진에 상당한다. 데이터 처리 3은 엔진 3A가 할당되어 있지만 미실행이므로 할당 완료 데이터 처리에 상당한다.
데이터 처리 2는 실행 도중에 있지만, 데이터 처리 1을 우선하기 위해서 데이터 처리 2의 실행은 중단한다. 데이터 처리 1은 엔진 1A에 의해 실행되는 것으로 한다. 데이터 처리 1의 실행이 완료되면 데이터 처리 2의 실행이 재개한다. 여기서, 데이터 처리 1이 실행되었기 때문에, 데이터 처리 2의 나머지를 엔진 2A에 의해 실행하면, 데이터 처리 2의 데드라인 내에 데이터 처리 2가 완료되지 않는다. 또, 데이터 처리 3의 데드라인 내에 데이터 처리 3도 완료되지 않는다.
이 때문에, 본 실시의 형태에 따른 데이터 처리 실행 장치(100)는, 데이터 처리 2 및 데이터 처리 3의 적어도 어느 하나의 엔진을 저 정밀도의 엔진으로 전환하여 처리 시간을 단축한다.
도 11은, 데이터 처리 2의 엔진을 저 정밀도의 엔진 2B로 전환하고, 데이터 처리 3의 엔진을 저 정밀도의 엔진 3B로 전환한 예를 나타낸다. 엔진 2B는, 실행 데이터 처리인 데이터 처리 2의 실행을 엔진 2A로부터 계승하는 엔진이며, 계승 엔진에 상당한다.
저 정밀도의 엔진으로 전환했기 때문에 처리 시간의 단축이 도모되고, 데이터 처리 2 및 데이터 처리 3은 각각 데드라인 내에 완료되게 되었다.
도 12는, 엔진을 실현하는 하드웨어로서 CPU(901)와 FPGA(905)가 존재하는 예를 나타낸다.
이하에서는, 엔진 1A와 엔진 2A는 FPGA(905)에서 동작하는 것으로 한다. 또, 엔진 2B와 엔진 2C와 엔진 3B는 CPU(901)에서 동작하는 것으로 한다.
도 12에서는, 데이터 처리 2가 FPGA(905) 상에서 엔진 2A에 의해 실행되고, 데이터 처리 3이 CPU(901) 상에서 엔진 3B에 의해 실행되고 있다. 여기서, 돌발 이벤트에 의해 새롭게 데이터 처리 1이 발생한 것으로 한다. 도 12의 예에서는, 데이터 처리 2 및 데이터 처리 3이, 각각, 실행 데이터 처리에 상당한다. 데이터 처리 1이 새로운 데이터 처리에 상당한다. 또, 엔진 2A 및 엔진 3B는, 각각, 실행 엔진에 상당한다.
데이터 처리 1 및 데이터 처리 2의 데드라인은 모두 시각 500이다. 또, 데이터 처리 3의 데드라인은 시각 1025이다. 데이터 처리 1을 데드라인까지 완료하기 위해서는, FPGA(905)에서 동작하는 엔진 1A로 데이터 처리 1을 실행하는 것이 필요하다. 이 때문에, FPGA(905) 상에서 데이터 처리 1과 데이터 처리 2가 경합 한다. 데이터 처리 1이 우선도가 높기 때문에, FPGA(905) 상에서 데이터 처리 2의 실행을 계속할 수 없다. FPGA(905) 상에서 데이터 처리 1의 실행이 완료된 후에 FPGA(905)에서 데이터 처리 2의 실행을 재개하면 데이터 처리 2는 데드라인 내에 완료되지 않는다.
이 때문에, 데이터 처리 실행 장치(100)는, 데이터 처리 1을 실행해도 데이터 처리 2와 데이터 처리 3이 데드라인 내에 완료 가능한 엔진의 조합을 탐색한다.
예를 들면, 도 13에 나타내는 바와 같이, 데이터 처리 실행 장치(100)는, 데이터 처리 2를 엔진 2C에 실행시키고, 데이터 처리 3을 엔진 3B에 실행시키면 데이터 처리 2와 데이터 처리 3이 데드라인 내에 완료되는 것으로 한다. 본 예에서는, 엔진 2C가 계승 엔진에 상당한다.
이 경우에, 데이터 처리 실행 장치(100)는, FPGA(905)에서의 데이터 처리 2의 실행을 정지시키고, FPGA(905)에서 엔진 1A에 데이터 처리 1을 실행시킨다. CPU(901)에서는 엔진 3B가 데이터 처리 3을 실행하고 있지만, 데이터 처리 2가 데이터 처리 3보다 우선도가 높다. 이 때문에, 데이터 처리 실행 장치(100)는 CPU(901)에서의 데이터 처리 3의 실행을 정지시키고, 엔진 2C에 데이터 처리 2의 실행을 계승하게 한다. 그리고, 데이터 처리 실행 장치(100)는, 데이터 처리 2의 완료 후에 엔진 3B에 데이터 처리 3의 나머지를 실행시킨다.
이와 같이 스케줄링하는 것으로, 도 8에 나타내는 바와 같이, 데이터 처리 1, 데이터 처리 2 및 데이터 처리 3을 각각의 데드라인 내에 완료시킬 수 있다.
도 14는, 도 12 및 도 13에 나타내는 스케줄링 순서를 데이터 처리 실행 장치(100)의 구성 요소의 동작과 관련지어 나타내고 있다.
시각=0에 있어서 데이터 처리 명령이 발생하고, 데이터 처리 2의 실행이 지시되면, 엔진 선택부(102)는, 데이터 처리 2를 실행시키는 엔진을 선택한다. 여기에서는, 엔진 선택부(102)는, 엔진 2A를 선택한다. 또, 엔진 선택부(102)의 엔진 선택 알고리즘의 상세는 후술한다. 그리고, 엔진 선택부(102)는, 엔진 실행 관리부(103)에 엔진 2A에 의한 데이터 처리 2의 실행을 요구한다(실행 요구를 출력한다).
엔진 2A는 FPGA(905)에서 동작하기 때문에, 엔진 실행 관리부(103)는 FPGA 실행부(1042)에 엔진 2A에 의한 데이터 처리 2의 실행을 요구한다(실행 지령을 출력한다). FPGA 실행부(1042)는, FPGA(905)에서 엔진을 실행하는 기능이다.
시각=25에 있어서 데이터 처리 명령이 발생하고, 데이터 처리 3의 실행이 지시되면, 엔진 선택부(102)는, 데이터 처리 3을 실행시키는 엔진을 선택한다. 여기에서는, 엔진 선택부(102)는, 엔진 3B를 선택한다. 그리고, 엔진 선택부(102)는, 엔진 실행 관리부(103)에 엔진 3B에 의한 데이터 처리 3의 실행을 요구한다(실행 요구를 출력한다).
엔진 3B는 CPU(901)에서 동작하기 때문에, 엔진 실행 관리부(103)는 CPU 실행부(1041)에 엔진 3B에 의한 데이터 처리 3의 실행을 요구한다(실행 지령을 출력한다). CPU 실행부(1041)는, CPU(901)에서 엔진을 실행하는 기능이다.
시각=150에 있어서 데이터 처리 명령이 발생하고, 데이터 처리 1의 실행이 지시되면, 엔진 선택부(102)는, 데이터 처리 1을 실행시키는 엔진을 선택한다. 여기에서는, 엔진 선택부(102)는, 엔진 1A를 선택한다. 도 12 및 도 13을 이용하여 설명한 바와 같이, 데이터 처리 1을 FPGA(905)에서 실행하면, 데이터 처리 2가 데드라인 내에 완료되지 않는다.
이 때문에, 엔진 선택부(102)는, 데이터 처리 1을 실행해도 데이터 처리 2와 데이터 처리 3이 데드라인 내에 완료 가능한 엔진의 조합을 탐색한다.
데이터 처리 2에 대해서 선택 가능한 엔진은 엔진 2B와 엔진 2C이며, 데이터 처리 3에 대해서 선택 가능한 엔진은 엔진 3B와 엔진 3C이다.
먼저, 엔진 선택부(102)는, 엔진 2B와 엔진 3B를 이용한 경우에 데이터 처리 2와 데이터 처리 3의 양쪽 모두가 데드라인 내에 완료되는지 여부를 판정한다. 여기에서는, 데이터 처리 2는 데드라인 내에 완료되지만 데이터 처리 3은 완료되지 않는 것으로 한다.
다음에, 엔진 선택부(102)는, 엔진 2B와 엔진 3C를 이용한 경우에 데이터 처리 2와 데이터 처리 3의 양쪽 모두가 데드라인 내에 완료되는지 여부를 판정한다. 여기에서는, 데이터 처리 2는 데드라인 내에 완료되지만 데이터 처리 3은 완료되지 않는 것으로 한다.
다음에, 엔진 선택부(102)는, 엔진 2C와 엔진 3B를 이용한 경우에 데이터 처리 2와 데이터 처리 3의 양쪽 모두가 데드라인 내에 완료되는지 여부를 판정한다. 여기에서는, 데이터 처리 2와 데이터 처리 3의 양쪽 모두가 데드라인 내에 완료되는 것으로 한다.
이 때문에, 엔진 선택부(102)는, 데이터 처리 2의 엔진을 엔진 2C로 전환하는 것을 결정한다.
엔진 선택부(102)는, 엔진 실행 관리부(103)에 엔진 1A에 의한 데이터 처리 1의 실행을 요구한다(실행 요구를 출력한다). 또한, 엔진 선택부(102)는, 엔진 실행 관리부(103)에 데이터 처리 2의 엔진을 엔진 2A로부터 엔진 2C로 전환하도록 요구한다(전환 요구를 출력한다).
각 데이터 처리는 복수의 스텝으로 구성된다. 시각=150의 시점에서는, FPGA(905)에 있어서 데이터 처리 2의 스텝 2를 실행 중이다. FPGA(905)는 스텝이 완료되지 않으면 데이터 처리를 정지시킬 수가 없다. 이 때문에, 엔진 1A에 의한 데이터 처리 1의 실행은 데이터 처리 2의 스텝 2의 완료를 기다릴 필요가 있다.
FPGA 실행부(1042)는, 데이터 처리 2의 스텝 2의 실행이 완료됐을 때에, 엔진 실행 관리부(103)에 스텝 2의 완료를 통지한다(스텝 완료 통지를 출력한다).
스텝 2가 완료됐으므로, 엔진 실행 관리부(103)는, FPGA 실행부(1042)에 엔진 1A에 의한 데이터 처리 1의 실행을 요구한다(실행 지령을 출력한다).
또, 데이터 처리 2를 엔진 2C로 실행시키기 위해, 엔진 실행 관리부(103)는, CPU 실행부(1041)에 엔진 3B의 실행의 중단을 요구한다(중단 지령을 출력한다). 또, CPU(901)에서는 스텝의 완료를 기다리지 않고 엔진을 정지시킬 수 있다.
또한, 엔진 실행 관리부(103)는, 데이터 처리 2를 스텝 3에서부터 엔진 2C에 의해 실행하도록 CPU 실행부(1041)에 요구한다(실행 지령을 출력한다).
그 후, 엔진 2C에서의 데이터 처리 2가 완료되면, CPU 실행부(1041)는 데이터 처리 2의 완료를 엔진 실행 관리부(103)에 통지한다(완료 통지를 출력한다).
엔진 실행 관리부(103)는, 데이터 처리 2가 완료됐으므로, CPU 실행부(1041)에 데이터 처리 3을 엔진 3B에 의해 재개하도록 요구한다(재개 요구를 출력한다).
엔진 1A에서의 데이터 처리 1이 완료되면, FPGA 실행부(1042)는 데이터 처리 1의 완료를 엔진 실행 관리부(103)에 통지한다(완료 통지를 출력한다).
엔진 3B에서의 데이터 처리 3이 완료되면, CPU 실행부(1041)는 데이터 처리 3의 완료를 엔진 실행 관리부(103)에 통지한다(완료 통지를 출력한다).
또, 도 14의 (1)~(7)의 각 타이밍에 있어서의 실행 데이터 처리 리스트의 값과 실행 대기 데이터 처리 리스트의 값을, 도 25~도 31에 나타낸다.
또, 도 29의 「H/W 리소스 ID:2」의 「스텝 개시 시각」에는, 유사의 스텝 개시 시각이 설정되어 있다. 즉, 현재 시각부터 남은 시간을 산출할 수 있도록 의사 스텝 개시 시각이 설정되어 있다(현재 시각(350)-스텝 1 처리 시간(200)+스텝 잔여 처리 시간(25)=175).
다음에, 도 15~도 17을 참조하여, 엔진 선택부(102)에 의한 엔진 선택 처리의 개요를 설명한다.
엔진 선택부(102)는, 이하의 선택 기준에서, 적절한 엔진의 조합을 선택한다.
1) 새로운 데이터 처리와 기존의 데이터 처리(실행 데이터 처리 및 할당 완료 데이터 처리)가 모두, 각각의 데드라인 내에 완료된다.
2) 높은 우선도의 데이터 처리일수록 높은 연산 정밀도의 엔진을 할당한다.
도 15는, 데이터 처리 1, 데이터 처리 2, 데이터 처리 4 및 데이터 처리 5에 엔진이 할당되어 있는 상태에서, 데이터 처리 3이 발생한 것을 나타낸다.
도 15에 있어서, 이중 프레임으로 둘러싸여 있는 엔진이 데이터 처리에 할당되어 있는 엔진이다. 즉, 데이터 처리 1에는 엔진 1A가 할당되어 있다. 데이터 처리 2는 엔진 2B가 할당되어 있다. 데이터 처리 4는 엔진 4B가 할당되어 있다. 데이터 처리 5는 엔진 5A가 할당되어 있다.
도 15의 파선으로 둘러싸여 있는 부분은, 후술하는 제 1 조합 추출 처리의 범위이다. 또, 데이터 처리 4가 발생했을 때에 엔진 4A를 이용해도 데이터 처리 4가 데드라인 내에 완료되지 않는 것이 판명하고 있으므로, 엔진 4A는 제 1 조합 추출 처리의 범위에 포함되지 않는다.
데이터 처리 3이 발생하면, 엔진 선택부(102)는, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는 엔진의 조합 중, 각각의 정밀도가 가장 높아지는 엔진의 조합을 선택한다.
구체적으로는, 엔진 선택부(102)는, 엔진 3A, 엔진 4B 및 엔진 5A의 조합으로 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는지 여부를 판정한다. 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는 경우는, 엔진 선택부(102)는, 데이터 처리 3을 실행하는 엔진으로서 엔진 3A를 선택한다.
데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되지 않는 경우는, 엔진 선택부(102)는, 데이터 처리 5의 엔진을 엔진 5B로 전환하는 것으로, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는지 여부를 판정한다.
데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는 경우는, 엔진 선택부(102)는, 데이터 처리 3을 실행하는 엔진으로서 엔진 3A를 선택하고, 데이터 처리 5를 실행하는 엔진을 엔진 5B로 전환하는 것을 결정한다.
데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되지 않는 경우는, 엔진 선택부(102)는, 데이터 처리 5의 엔진을 엔진 5C로 전환하는 것으로, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는지 여부를 판정한다.
데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는 경우는, 엔진 선택부(102)는, 데이터 처리 3을 실행하는 엔진으로서 엔진 3A를 선택하고, 데이터 처리 5를 실행하는 엔진을 엔진 5C로 전환하는 것을 결정한다.
데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되지 않는 경우는, 엔진 선택부(102)는, 엔진 3B, 엔진 4B 및 엔진 5A의 조합으로 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는지 여부를 판정한다.
데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는 경우는, 엔진 선택부(102)는, 데이터 처리 3을 실행하는 엔진으로서 엔진 3B를 선택한다.
데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되지 않는 경우는, 엔진 선택부(102)는, 엔진 3A의 경우와 마찬가지의 처리를 행한다.
엔진 3B, 엔진 4B 및 엔진 5C의 조합에서도 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되지 않는 경우는, 엔진 선택부(102)는, 엔진 3C, 엔진 4B 및 엔진 5A의 조합으로 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는지 여부를 판정한다.
데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는 경우는, 엔진 선택부(102)는, 데이터 처리 3을 실행하는 엔진으로서 엔진 3C를 선택한다.
데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되지 않는 경우는, 엔진 선택부(102)는, 엔진 3A 및 엔진 3B의 경우와 마찬가지의 처리를 행한다.
엔진 3C, 엔진 4B 및 엔진 5C의 조합에서도 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되지 않는 경우는, 엔진 선택부(102)는, 제 2 조합 추출 처리를 행한다.
도 16은, 엔진 선택부(102)에 의한 제 2 조합 추출 처리(1회째)의 범위를 나타낸다.
엔진 3C, 엔진 4B 및 엔진 5C의 조합에서도 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되지 않는 경우는, 엔진 선택부(102)는, 데이터 처리 2의 엔진을 엔진 2C로 전환한 경우에 데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는지 여부를 판정한다.
즉, 엔진 선택부(102)는, 엔진 2C, 엔진 3A, 엔진 4A 및 엔진 5A의 조합으로 데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는지 여부를 판정한다.
데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는 경우는, 엔진 선택부(102)는, 데이터 처리 3을 실행하는 엔진으로서 엔진 3A를 선택하고, 데이터 처리 2를 실행하는 엔진을 엔진 2C로 전환하고, 데이터 처리 4를 실행하는 엔진을 엔진 4A로 전환하는 것을 결정한다.
데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되지 않는 경우는, 엔진 선택부(102)는, 엔진 2C, 엔진 3A, 엔진 4A, 엔진 5B의 조합으로 데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는지 여부를 판정한다.
데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는 경우는, 엔진 선택부(102)는, 데이터 처리 3을 실행하는 엔진으로서 엔진 3A를 선택하고, 데이터 처리 2를 실행하는 엔진을 엔진 2C로 전환하고, 데이터 처리 4를 실행하는 엔진을 엔진 4A로 전환하고, 데이터 처리 5를 실행하는 엔진을 엔진 5B로 전환하는 것을 결정한다.
데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되지 않는 경우는, 엔진 선택부(102)는, 엔진 2C, 엔진 3A, 엔진 4A, 엔진 5C의 조합으로 데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는지 여부를 판정한다.
데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는 경우는, 엔진 선택부(102)는, 데이터 처리 3을 실행하는 엔진으로서 엔진 3A를 선택하고, 데이터 처리 2를 실행하는 엔진을 엔진 2C로 전환하고, 데이터 처리 4를 실행하는 엔진을 엔진 4A로 전환하고, 데이터 처리 5를 실행하는 엔진을 엔진 5C로 전환하는 것을 결정한다.
데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되지 않는 경우는, 엔진 선택부(102)는, 엔진 2C, 엔진 3A, 엔진 4B, 엔진 5A의 조합으로 데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는지 여부를 판정한다.
이후, 엔진 선택부(102)는, 차례로, 이하의 조합을 검토한다.
엔진 2C, 엔진 3A, 엔진 4B, 엔진 5B
엔진 2C, 엔진 3A, 엔진 4B, 엔진 5C
엔진 2C, 엔진 3B, 엔진 4A, 엔진 5A
엔진 2C, 엔진 3B, 엔진 4A, 엔진 5B
엔진 2C, 엔진 3B, 엔진 4A, 엔진 5C
엔진 2C, 엔진 3B, 엔진 4B, 엔진 5A
엔진 2C, 엔진 3B, 엔진 4B, 엔진 5B
엔진 2C, 엔진 3B, 엔진 4B, 엔진 5C
엔진 2C, 엔진 3C, 엔진 4A, 엔진 5A
엔진 2C, 엔진 3C, 엔진 4A, 엔진 5B
엔진 2C, 엔진 3C, 엔진 4A, 엔진 5C
엔진 2C, 엔진 3C, 엔진 4B, 엔진 5A
엔진 2C, 엔진 3C, 엔진 4B, 엔진 5B
엔진 2C, 엔진 3C, 엔진 4B, 엔진 5C
엔진 2C, 엔진 3C, 엔진 4B, 엔진 5C의 조합으로 데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되지 않는 경우는, 엔진 선택부(102)는, 제 2 조합 추출 처리의 범위를 데이터 처리 1의 엔진에까지 확대한다.
도 17은, 엔진 선택부(102)에 의한 제 2 조합 추출 처리(2회째)의 범위를 나타낸다.
엔진 2C, 엔진 3C, 엔진 4B, 엔진 5C의 조합으로 데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되지 않는 경우는, 엔진 선택부(102)는, 데이터 처리 1의 엔진을 엔진 1B로 전환한 경우에 데이터 처리 1, 데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는지 여부를 판정한다.
즉, 엔진 선택부(102)는, 엔진 1B, 엔진 2A, 엔진 3A, 엔진 4A 및 엔진 5A의 조합으로 데이터 처리 1, 데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는지 여부를 판정한다.
데이터 처리 1, 데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는 경우는, 엔진 선택부(102)는, 데이터 처리 3을 실행하는 엔진으로서 엔진 3A를 선택하고, 데이터 처리 1을 실행하는 엔진을 엔진 1B로 전환하고, 데이터 처리 4를 실행하는 엔진을 엔진 4A로 전환하는 것을 결정한다.
데이터 처리 1, 데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되지 않는 경우는, 엔진 선택부(102)는, 엔진 1B, 엔진 2A, 엔진 3A, 엔진 4A 및 엔진 5B의 조합으로 데이터 처리 1, 데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는지 여부를 판정한다.
데이터 처리 1, 데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는 경우는, 엔진 선택부(102)는, 데이터 처리 3을 실행하는 엔진으로서 엔진 3A를 선택하고, 데이터 처리 1을 실행하는 엔진을 엔진 1B로 전환하고, 데이터 처리 4를 실행하는 엔진을 엔진 4A로 전환하고, 데이터 처리 5를 실행하는 엔진을 엔진 5B로 전환하는 것을 결정한다.
데이터 처리 1, 데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되지 않는 경우는, 엔진 선택부(102)는, 엔진 1B, 엔진 2A, 엔진 3A, 엔진 4A, 엔진 5C의 조합으로 데이터 처리 1, 데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는지 여부를 판정한다.
데이터 처리 1, 데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는 경우는, 엔진 선택부(102)는, 데이터 처리 3을 실행하는 엔진으로서 엔진 3A를 선택하고, 데이터 처리 1을 실행하는 엔진을 엔진 1B로 전환하고, 데이터 처리 4를 실행하는 엔진을 엔진 4A로 전환하고, 데이터 처리 5를 실행하는 엔진을 엔진 5C로 전환하는 것을 결정한다.
데이터 처리 1, 데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되지 않는 경우는, 엔진 선택부(102)는, 엔진 1B, 엔진 2A, 엔진 3B, 엔진 4A, 엔진 5A의 조합으로 데이터 처리 1, 데이터 처리 2, 데이터 처리 3, 데이터 처리 4 및 데이터 처리 5의 각각이 데드라인 내에 완료되는지 여부를 판정한다.
이후, 엔진 선택부(102)는, 차례로, 이하의 조합을 검토한다.
엔진 1B, 엔진 2A, 엔진 3A, 엔진 4B, 엔진 5A
엔진 1B, 엔진 2A, 엔진 3A, 엔진 4B, 엔진 5B
엔진 1B, 엔진 2A, 엔진 3A, 엔진 4B, 엔진 5C
엔진 1B, 엔진 2A, 엔진 3B, 엔진 4A, 엔진 5A
엔진 1B, 엔진 2A, 엔진 3B, 엔진 4A, 엔진 5B
엔진 1B, 엔진 2A, 엔진 3B, 엔진 4A, 엔진 5C
엔진 1B, 엔진 2A, 엔진 3B, 엔진 4B, 엔진 5A
엔진 1B, 엔진 2A, 엔진 3B, 엔진 4B, 엔진 5B
엔진 1B, 엔진 2A, 엔진 3B, 엔진 4B, 엔진 5C
엔진 1B, 엔진 2A, 엔진 3C, 엔진 4A, 엔진 5A
엔진 1B, 엔진 2A, 엔진 3C, 엔진 4A, 엔진 5B
엔진 1B, 엔진 2A, 엔진 3C, 엔진 4A, 엔진 5C
엔진 1B, 엔진 2A, 엔진 3C, 엔진 4B, 엔진 5A
엔진 1B, 엔진 2A, 엔진 3C, 엔진 4B, 엔진 5B
엔진 1B, 엔진 2A, 엔진 3C, 엔진 4B, 엔진 5C
엔진 1B, 엔진 2B, 엔진 3A, 엔진 4A, 엔진 5A
엔진 1B, 엔진 2B, 엔진 3A, 엔진 4A, 엔진 5B
엔진 1B, 엔진 2B, 엔진 3A, 엔진 4A, 엔진 5C
엔진 1B, 엔진 2B, 엔진 3A, 엔진 4B, 엔진 5A
엔진 1B, 엔진 2B, 엔진 3A, 엔진 4B, 엔진 5B
엔진 1B, 엔진 2B, 엔진 3A, 엔진 4B, 엔진 5C
엔진 1B, 엔진 2B, 엔진 3B, 엔진 4A, 엔진 5A
엔진 1B, 엔진 2B, 엔진 3B, 엔진 4A, 엔진 5B
엔진 1B, 엔진 2B, 엔진 3B, 엔진 4A, 엔진 5C
엔진 1B, 엔진 2B, 엔진 3B, 엔진 4B, 엔진 5A
엔진 1B, 엔진 2B, 엔진 3B, 엔진 4B, 엔진 5B
엔진 1B, 엔진 2B, 엔진 3B, 엔진 4B, 엔진 5C
엔진 1B, 엔진 2B, 엔진 3C, 엔진 4A, 엔진 5A
엔진 1B, 엔진 2B, 엔진 3C, 엔진 4A, 엔진 5B
엔진 1B, 엔진 2B, 엔진 3C, 엔진 4A, 엔진 5C
엔진 1B, 엔진 2B, 엔진 3C, 엔진 4B, 엔진 5A
엔진 1B, 엔진 2B, 엔진 3C, 엔진 4B, 엔진 5B
엔진 1B, 엔진 2B, 엔진 3C, 엔진 4B, 엔진 5C
엔진 1B, 엔진 2C, 엔진 3A, 엔진 4A, 엔진 5A
엔진 1B, 엔진 2C, 엔진 3A, 엔진 4A, 엔진 5B
엔진 1B, 엔진 2C, 엔진 3A, 엔진 4A, 엔진 5C
엔진 1B, 엔진 2C, 엔진 3A, 엔진 4B, 엔진 5A
엔진 1B, 엔진 2C, 엔진 3A, 엔진 4B, 엔진 5B
엔진 1B, 엔진 2C, 엔진 3A, 엔진 4B, 엔진 5C
엔진 1B, 엔진 2C, 엔진 3B, 엔진 4A, 엔진 5A
엔진 1B, 엔진 2C, 엔진 3B, 엔진 4A, 엔진 5B
엔진 1B, 엔진 2C, 엔진 3B, 엔진 4A, 엔진 5C
엔진 1B, 엔진 2C, 엔진 3B, 엔진 4B, 엔진 5A
엔진 1B, 엔진 2C, 엔진 3B, 엔진 4B, 엔진 5B
엔진 1B, 엔진 2C, 엔진 3B, 엔진 4B, 엔진 5C
엔진 1B, 엔진 2C, 엔진 3C, 엔진 4A, 엔진 5A
엔진 1B, 엔진 2C, 엔진 3C, 엔진 4A, 엔진 5B
엔진 1B, 엔진 2C, 엔진 3C, 엔진 4A, 엔진 5C
엔진 1B, 엔진 2C, 엔진 3C, 엔진 4B, 엔진 5A
엔진 1B, 엔진 2C, 엔진 3C, 엔진 4B, 엔진 5B
엔진 1B, 엔진 2C, 엔진 3C, 엔진 4B, 엔진 5C
이상의 순서를 거쳐도 적절한 엔진의 조합이 얻어지지 않는 경우는, 엔진 선택부(102)는 기정의 에러 처리를 행한다.
다음에, 도 18~도 20을 이용하여, 엔진 선택부(102)의 동작예를 설명한다.
도 18은, 엔진 선택부(102)의 전체의 동작 흐름을 나타낸다.
도 19는, 도 18에 나타내는 「제 1 조합 추출 처리」(스텝 S11)의 상세를 나타낸다.
도 20은, 도 18에 나타내는 「제 2 조합 추출 처리」(스텝 S14)의 상세를 나타낸다.
새로운 데이터 처리(예를 들면, 도 15에 나타내는 데이터 처리 3)가 발생했을 때에, 도 18의 동작 흐름이 개시한다.
스텝 S11에 있어서, 엔진 선택부(102)는, 제 1 조합 추출 처리를 행한다.
제 1 조합 처리의 상세는, 도 19를 참조하여 후술한다.
다음에, 스텝 S12에 있어서, 엔진 선택부(102)는 제 1 조합 추출 처리에 의해 조합을 추출할 수 있는지 여부를 판정한다.
조합을 추출할 수 있었을 경우(스텝 S12에서 예)는, 처리가 스텝 S17에 진행된다.
한편, 조합이 추출되어 있지 않은 경우(스텝 S12에서 아니오)는, 엔진 선택부(102)는, 새로운 데이터 처리의 우선도가 가장 높은지 여부를 판정한다(스텝 S13). 즉, 엔진 선택부(102)는, 새로운 데이터 처리의 우선도가 이미 엔진이 할당되어 있는 데이터 처리의 우선도보다 높은지 여부를 판정한다.
새로운 데이터 처리의 우선도가 가장 높은 경우(스텝 S13에서 예)는, 제 2 조합 추출 처리를 할 수 없기 때문에, 처리가 스텝 S16에 진행된다.
한편, 새로운 데이터 처리의 우선도가 가장 높은 우선도가 아닌 경우(스텝 S13에서 아니오)는, 처리가 스텝 S14에 진행된다.
스텝 S14에서는, 엔진 선택부(102)는 제 2 조합 추출 처리를 행한다.
제 2 조합 처리의 상세는, 도 20을 참조하여 후술한다.
다음에, 스텝 S15에 있어서, 엔진 선택부(102)는 제 2 조합 추출 처리에 의해 조합을 추출할 수 있는지 여부를 판정한다.
조합을 추출할 수 있었을 경우(스텝 S15에서 예)는, 처리가 스텝 S17에 진행된다.
한편, 조합을 추출할 수 없었던 경우(스텝 S15에서 아니오)는, 처리가 스텝 S16에 진행된다.
스텝 S16에서는, 엔진 선택부(102)는, 기정의 에러 처리를 행한다.
예를 들면, 엔진 선택부(102)는, 에러 처리로서, 에러를 통지하여, 데이터 처리 실행 장치(100)를 안전하게 정지시킨다.
스텝 S17에서는, 엔진 선택부(102)는, 실행 요구를 출력한다.
도 14에 나타내는 바와 같이, 엔진 선택부(102)는, 상황에 의해 실행 요구만을 출력하는 일도 있고, 실행 요구와 전환 요구를 출력하는 일도 있다.
다음에, 도 19를 참조하여, 제 1 조합 추출 처리의 상세를 설명한다.
스텝 S1101에 있어서, 엔진 선택부(102)는, 새로운 데이터 처리에 대응하는 엔진 중에서 가장 정밀도가 높은 엔진을 선택한다.
엔진 선택부(102)는, 엔진 리스트(110)를 참조하여, 새로운 데이터 처리에 대응하는 가장 정밀도가 높은 엔진을 선택한다.
또, 스텝 S1101에서 선택된 엔진을 선택 엔진이라고 한다.
다음에, 스텝 S1102에 있어서, 엔진 선택부(102)는, 선택 엔진을 이용하여 새로운 데이터 처리를 실행한 경우에, 새로운 데이터 처리가 새로운 데이터 처리의 데드라인 내에 완료되는지 여부를 판정한다.
새로운 데이터 처리가 새로운 데이터 처리의 데드라인 내에 완료되는 경우(스텝 S1102에서 예)는, 처리가 스텝 S1103에 진행된다.
한편, 새로운 데이터 처리가 새로운 데이터 처리의 데드라인 내에 완료되지 않는 경우(스텝 S1102에서 아니오)는, 처리가 스텝 S1107에 진행된다.
스텝 S1103에서는, 엔진 선택부(102)는, 선택 엔진을 조합 추출 결과로서, 미리 정해진 기억 영역에 기록한다.
스텝 S1104에서는, 엔진 선택부(102)는, 이미 엔진이 할당되어 있는 데이터 처리 중에서 새로운 데이터 처리보다 우선도가 낮은 데이터 처리가 있는지 여부를 판정한다.
새로운 데이터 처리보다 우선도가 낮은 데이터 처리가 있으면(스텝 S1104에서 예), 엔진 선택부(102)는, 스텝 S1106에 있어서, 다음으로 우선도가 낮은 데이터 처리의 엔진을 선택 엔진으로 지정한다.
그리고, 엔진 선택부(102)는, 다음으로 우선도가 낮은 데이터 처리에 대해 스텝 S1102 이후의 처리를 행한다.
한편, 새로운 데이터 처리보다 우선도가 낮은 데이터 처리가 없는 경우(스텝 S1104에서 아니오)는, 스텝 S1105에 있어서, 엔진 선택부(102)는, 적절한 엔진의 조합이 있다고 판정한다.
이 결과, 엔진 선택부(102)는, 도 18의 스텝 S17에 있어서, 스텝 S1103에서 기록한 추출 결과에 근거하여, 실행 요구(및 전환 요구)를 출력한다.
새로운 데이터 처리가 새로운 데이터 처리의 데드라인 내에 완료되지 않는 경우(스텝 S1102에서 아니오)는, 엔진 선택부(102)는, 스텝 S1107에 있어서, 새로운 데이터 처리에 선택 엔진의 다음으로 정밀도가 낮은 엔진이 존재하는지 여부를 판정한다.
다음으로 정밀도가 낮은 엔진이 존재하는 경우(스텝 S1107에서 예)는, 엔진 선택부(102)는, 스텝 S1108에 있어서, 다음으로 정밀도가 낮은 엔진을 새로운 선택 엔진으로 지정한다.
그 후, 엔진 선택부(102)는, 새로운 선택 엔진을 이용하여 스텝 S1102 이후의 처리를 행한다.
다음으로 정밀도가 낮은 엔진이 존재하지 않는 경우(스텝 S1107에서 아니오)는, 엔진 선택부(102)는, 스텝 S1109에 있어서, 현재의 선택 엔진이 새로운 데이터 처리의 엔진인지 여부를 판정한다.
현재의 선택 엔진이 새로운 데이터 처리의 엔진이면(스텝 S1109에서 예), 엔진 선택부(102)는, 스텝 S1110에 있어서, 적절한 엔진의 조합이 없다고 판정한다.
한편, 현재의 선택 엔진이 새로운 데이터 처리의 엔진이 아니면(스텝 S1109에서 아니오), 엔진 선택부(102)는, 스텝 S1111에 있어서, 다음으로 우선도가 높은 데이터 처리의 조합 추출 결과로서 기록한 엔진을 선택 엔진으로 지정하고, 스텝 S1107 이후의 처리를 행한다. 스텝 S1107 이후의 처리에서는, 엔진 선택부(102)는, 다음으로 우선도가 높은 데이터 처리의 선택 엔진의 정밀도를 낮춘 상태에서의, 다음으로 우선도가 높은 데이터 처리 이하의 데이터 처리가 데드라인 내에 완료 가능으로 하는 엔진의 조합의 추출을 시도한다. 이상, 엔진 선택부(102)는, 상기 설명한 스텝을 SS1109에서 예가 될 때까지 반복하는 것에 의해, 높은 우선도의 데이터 처리일수록 높은 연산 정밀도의 엔진을 할당하면서, 도 15에서 기재한 조합 추출 처리의 범위에 있어서 데드라인 내에 완료되는 엔진의 조합을 추출한다.
다음에, 도 20을 참조하여, 제 2 조합 추출 처리의 상세를 설명한다.
스텝 S1301에 있어서, 엔진 선택부(102)는, 새로운 데이터 처리의 다음으로 우선도가 높은 데이터 처리로 실행 중의 엔진을 선택 엔진으로 지정한다.
다음에, 스텝 S1302에 있어서, 엔진 선택부(102)는, 선택 엔진의 다음으로 정밀도가 낮은 엔진이 존재하는지 여부를 판정한다.
선택 엔진의 다음으로 정밀도가 낮은 엔진이 존재한다면, 처리가 스텝 S1306에 진행되고, 선택 엔진의 다음으로 정밀도가 낮은 엔진이 존재하지 않는 것이면, 처리가 스텝 S1303에 진행된다.
스텝 S1303에서는, 엔진 선택부(102)는, 새로운 데이터 처리의 우선도가 가장 높은지 여부를 판정한다.
새로운 데이터 처리의 우선도가 가장 높은 경우는, 처리가 스텝 S1304에 진행된다.
한편, 새로운 데이터 처리의 우선도가 가장 높은 우선도가 아닌 경우는, 처리가 스텝 S1305에 진행된다.
스텝 S1304에서는, 엔진 선택부(102)는, 적절한 엔진의 조합이 없다고 판정한다.
스텝 S1305에서는, 엔진 선택부(102)는, 다음으로 우선도가 높은 데이터 처리의 조합 추출 결과로서 기록한 엔진을 선택 엔진으로 지정하고, 스텝 S1302 이후의 처리를 행한다. 스텝 S1302 이후의 처리에서는, 엔진 선택부(102)는, 다음으로 우선도가 높은 데이터 처리의 선택 엔진의 정밀도를 낮춘 상태에서의, 다음으로 우선도가 높은 데이터 처리 이하의 데이터 처리가 데드라인 내에 완료 가능으로 하는 엔진의 조합의 추출을 시도한다.
또, 추출 결과의 기록이 없는 경우는, 엔진 선택부(102)는, 현재의 선택 엔진을 재차, 선택 엔진으로서 지정한다.
스텝 S1306에서는, 엔진 선택부(102)는, 다음으로 정밀도가 낮은 엔진을 새로운 선택 엔진으로 지정한다.
그 후, 엔진 선택부(102)는, 새로운 선택 엔진을 이용하여 스텝 S1307 이후의 처리를 행한다.
스텝 S1307에서는, 엔진 선택부(102)는, 현재의 선택 엔진으로, 새로운 데이터 처리가 그 데드라인 내에 완료 가능한지 여부를 판정한다.
새로운 데이터 처리가 그 데드라인 내에 완료되는 경우는, 처리가 스텝 S1308에 진행된다. 한편, 새로운 데이터 처리가 그 데드라인 내에 완료되지 않는 경우는, 처리가 스텝 S1302에 진행된다.
스텝 S1308에서는, 엔진 선택부(102)는, 선택 엔진을 조합 추출 결과로서, 미리 정해진 기억 영역에 기록한다.
다음에, 스텝 S1309에 있어서, 엔진 선택부(102)는, 새로운 데이터 처리보다 우선도가 낮은 데이터 처리가 있는지 여부를 판정한다.
새로운 데이터 처리보다 우선도가 낮은 데이터 처리가 있으면, 처리가 스텝 S1310에 진행된다. 한편, 새로운 데이터 처리보다 우선도가 낮은 데이터 처리가 없는 경우는, 처리가 스텝 S1311에 진행된다.
스텝 S1310에서는, 엔진 선택부(102)는, 다음으로 우선도가 낮은 데이터 처리의 가장 정밀도가 높은 엔진을 선택 엔진으로 지정한다. 그 후, 엔진 선택부(102)는, 다음으로 우선도가 낮은 데이터 처리와 새로운 선택 엔진에 대해 스텝 S1307 이후의 처리를 행한다.
스텝 S1311에서는, 엔진 선택부(102)는, 적절한 엔진의 조합이 있다고 판정한다.
다음에, 도 21~도 23을 참조하여, 본 실시의 형태에 따른 엔진 실행 관리부(103)의 동작예를 설명한다.
스텝 S21에 있어서, 엔진 실행 관리부(103)는, 실행 요구, 전환 요구, 스텝 완료 통지 및 실행 완료 통지 중 어느 하나의 수신을 기다린다.
엔진 실행 관리부(103)는, 실행 요구, 전환 요구, 스텝 완료 통지 및 실행 완료 통지 중 어느 하나를 수신한 경우에, 실행 요구, 전환 요구, 스텝 완료 통지 및 실행 완료 통지의 어느 것을 수신했는지를 판정한다.
실행 요구를 수신한 경우는, 처리가 스텝 S23에 진행된다. 스텝 완료 통지를 수신한 경우는, 처리가 도 22의 스텝 S33에 진행된다. 실행 완료 통지를 수신한 경우는, 처리가 도 22의 스텝 S37에 진행된다. 전환 요구를 수신한 경우는, 처리가 도 23의 스텝 S41에 진행된다.
스텝 S23에서는, 엔진 실행 관리부(103)는, 실행 요구에 의해 실행이 요구된 엔진을 실현하는 하드웨어 리소스가 현재 동작중인지 여부를 판정한다.
하드웨어 리소스가 현재 동작중이면, 처리가 스텝 S26에 진행된다. 한편, 하드웨어 리소스가 현재 동작중이 아니면, 처리가 스텝 S24에 진행된다.
스텝 S24에서는, 엔진 실행 관리부(103)는, 실행 요구를 실행 데이터 처리 리스트(121)에 등록한다.
다음에, 스텝 S25에 있어서, 엔진 실행 관리부(103)는, 엔진 실행부(104)에 실행 지령을 출력한다.
스텝 S26에서는, 실행 요구에 기재되어 있는 데이터 처리의 우선도가, 스텝 S23에서 동작중으로 판정된 하드웨어 리소스에 의해 실행 중의 데이터 처리의 우선도보다 높은지 여부를 판정한다.
실행 요구에 기재되어 있는 데이터 처리의 우선도가 높으면, 처리가 스텝 S27에 진행된다. 한편, 실행 요구에 기재되어 있는 데이터 처리의 우선도가 낮으면, 처리가 스텝 S32에 진행된다.
스텝 S27에서는, 엔진 실행 관리부(103)는, 실행 데이터 처리 리스트(121)의 해당하는 하드웨어 리소스의 중단 가부 플래그가 TRUE인지 여부를 판정한다.
중단 가부 플래그가 TRUE인 경우는, 처리가 스텝 S28에 진행된다.
한편, 중단 가부 플래그가 FALSE인 경우는, 처리가 스텝 S30에 진행된다.
스텝 S28에서는, 엔진 실행 관리부(103)는, 엔진 실행부(104)에 중단 지령을 출력한다.
다음에, 스텝 S29에 있어서, 엔진 실행 관리부(103)는, 중단한 데이터 처리, 즉, 스텝 S28의 중단 지령의 대상의 데이터 처리를 실행 대기 데이터 처리 리스트(122)에 등록한다.
스텝 S30에서는, 엔진 실행 관리부(103)는, 실행 데이터 처리 리스트(121)의 해당하는 하드웨어 리소스의 스텝 완료 통지 플래그를 TRUE로 한다.
다음에, 스텝 S31에서, 엔진 실행 관리부(103)는, 실행 요구에 기재된 데이터 처리를, 스텝 완료 대기로 실행 대기 데이터 처리 리스트(122)에 등록한다.
스텝 S32에서는, 엔진 실행 관리부(103)는, 실행 요구에 기재된 데이터 처리를, 실행 가능 상태로 실행 대기 데이터 처리 리스트(122)에 등록한다.
도 21의 스텝 S22의 판정의 결과, 스텝 완료 통지를 수신했다고 판명한 경우는, 엔진 실행 관리부(103)는, 도 22의 스텝 S33에 있어서, 스텝이 완료된 데이터 처리에 대해, 실행 데이터 처리 리스트(121)의 스텝 완료 통지 플래그를 FALSE로 한다.
다음에, 스텝 S34에 있어서, 엔진 실행 관리부(103)는, 스텝이 완료된 데이터 처리에 대해 실행 대기 데이터 처리 리스트(122)에서 스텝 완료 대기 상태의 데이터 처리를 실행 가능 상태로 한다.
다음에, 스텝의 S35에 있어서, 엔진 실행 관리부(103)는, 스텝이 완료된 데이터 처리에 대한 실행 데이터 처리 리스트(121)의 전환 플래그가 TRUE인지 여부를 판정한다.
전환 플래그가 TRUE인 경우는, 처리가 스텝 S37에 진행된다.
전환 플래그가 FALSE인 경우는, 처리가 스텝 S36에 진행된다.
스텝 S36에서는, 엔진 실행 관리부(103)는, 스텝이 완료된 데이터 처리를 실행 대기 데이터 처리 리스트(122)에 추가한다.
스텝 S37에서는, 엔진 실행 관리부(103)는, 실행 대기 데이터 처리 리스트(122)에 실행 가능 상태의 데이터 처리가 있는지 여부를 판정한다.
실행 가능 상태의 데이터 처리가 있는 경우는, 처리가 스텝 S38에 진행된다. 한편, 실행 가능 상태의 데이터 처리가 없는 경우는, 처리가 스텝 S39에 진행된다.
스텝 S38에서는, 엔진 실행 관리부(103)는, 실행 대기 데이터 처리 리스트(122) 중에서 가장 우선도가 높은 데이터 처리를 실행 데이터 처리 리스트(121)에 등록하고, 또, 당해 데이터 처리를 실행 대기 데이터 처리 리스트(122)로부터 삭제한다.
그 후, 처리는 도 21의 스텝 S25에 진행된다.
스텝 S39에서는, 엔진 실행 관리부(103)는, 실행 데이터 처리 리스트(121)를 미동작으로 설정한다. 미동작이란 당해 하드웨어 리소스에서는 데이터 처리가 실행되고 있지 않은 것을 의미한다. 구체적으로는, 엔진 실행 관리부(103)는, 단락 0042에서 정의한 대로 실행 데이터 처리 리스트(121)의 데이터 처리 ID 등을 0으로 하는 처리를 행한다.
그 후, 처리는 도 21의 스텝 S21에 진행된다.
도 21의 스텝 S22의 판정의 결과, 전환 요구를 수신했다고 판명한 경우는, 엔진 실행 관리부(103)는, 도 23의 스텝 S41에 있어서, 전환 요구의 대상의 데이터 처리는 실행 중인지 여부를 판정한다.
전환 요구의 대상의 데이터 처리가 실행 중이면, 처리가 스텝 S42에 진행된다.
한편, 전환 요구의 대상의 데이터 처리가 실행 중이 아니면, 처리가 스텝 S44에 진행된다.
스텝 S42에서는, 엔진 실행 관리부(103)는, 실행 데이터 처리 리스트(121)에 있어서, 대상의 데이터 처리의 전환 플래그 및 스텝 완료 통지 플래그를 TRUE로 한다.
다음에, 스텝 S43에서, 엔진 실행 관리부(103)는, 실행 대기 데이터 처리 리스트(122)에 있어서 전환 요구에 기재되어 있는 엔진을 해당하는 하드웨어 리스트의 행에 등록한다.
그 후, 처리는 도 21의 스텝 S21에 진행된다.
스텝 S44에서는, 엔진 실행 관리부(103)는, 전환 요구의 대상의 데이터 처리가 스텝 실행의 도중에 중단하고 있는 상태인지 여부를 판정한다.
전환 요구의 대상의 데이터 처리가 스텝 실행의 도중에 중단하고 있는 상태인 경우는, 처리가 스텝 S46에 진행된다.
한편, 전환 요구의 대상의 데이터 처리가 스텝 실행의 도중에 중단하고 있는 상태가 아닌 경우는, 처리가 스텝 S45에 진행된다.
스텝 S46에서는, 엔진 실행 관리부(103)는, 실행 데이터 처리 리스트(122)에 있어서, 스텝 실행의 도중에 중단하고 있는 데이터 처리의 전환 플래그 및 스텝 완료 통지 플래그를 TRUE로 한다.
스텝 S45에서는, 엔진 실행 관리부(103)는, 실행 대기 데이터 처리 리스트(122)에 있어서, 전환 요구의 대상의 데이터 처리의 엔진을 삭제하고, 전환 요구에 기재되어 있는 엔진을 등록한다.
그 후, 처리는 도 21의 스텝 S21에 진행된다.
다음에, 도 24를 참조하여, 엔진 실행부(104)의 동작예를 설명한다.
스텝 S51에 있어서, 엔진 실행부(104)는, 실행 대상의 스텝을 실행한다.
다음에, 스텝 S51에서 실행하고 있던 스텝이 완료되면, 엔진 실행부(104)는, 스텝 S52에 있어서, 당해 스텝이 데이터 처리 내의 최종 스텝인지 여부를 판정한다.
당해 스텝이 최종 스텝이면, 처리가 스텝 S53에 진행된다.
당해 스텝이 최종 스텝이 아니면, 처리가 스텝 S54에 진행된다.
스텝 S53에서는, 엔진 실행부(104)는, 엔진 실행 관리부(103)에 실행 완료 통지를 출력한다.
스텝 S54에서는, 엔진 실행부(104)는, 실행 데이터 처리 리스트(121)에 있어서 대상의 데이터 처리의 스텝 완료 통지 플래그가 TRUE인지 여부를 판정한다.
스텝 완료 통지 플래그가 TRUE인 경우는, 처리가 스텝 S55에 진행된다.
한편, 스텝 완료 통지 플래그가 FALSE인 경우는, 처리가 스텝 S56에 진행된다.
스텝 S55에서는, 엔진 실행부(104)는, 엔진 실행 관리부(103)에 스텝 완료 통지를 출력한다.
스텝 S56에서는, 엔진 실행부(104)는, 실행 대상의 스텝을 1개 진행하고, 실행 데이터 처리 리스트(121)의 스텝 번호를 갱신한다.
그 후, 처리는 스텝 S51에 진행된다.
***실시의 형태의 효과의 설명***
이상과 같이, 본 실시의 형태에 의하면, 돌발 이벤트에 의해 새로운 데이터 처리가 발생해도, 새로운 데이터 처리 및 기존의 데이터 처리의 각각을 데드라인 내에 완료할 수 있다. 이 때문에, 본 실시의 형태에 의하면, 데이터 처리의 스케줄링을 상황의 변화에 따라 유연하게 행할 수 있다.
(실시의 형태 2)
본 실시의 형태에서는, 주로 실시의 형태 1과의 차이를 설명한다.
또, 이하에서 설명하고 있지 않는 사항은, 실시의 형태 1과 마찬가지다.
도 32는, 본 실시의 형태에 따른 데이터 처리 실행 장치(100)의 기능 구성예를 나타낸다.
도 2와 비교하여, 도 32에서는, 변환 처리부(106), 변환 처리 시간 리스트(150) 및 엔진 인터페이스 리스트(160)가 추가되어 있다. 엔진 인터페이스 리스트(160)는, 엔진 I/F 리스트(160)라고도 표기한다.
다른 요소는, 도 2에 나타낸 것과 동일하다.
변환 처리부(106)는, 데이터 처리 등록부(101) 등과 마찬가지로 프로그램에 의해 실현된다. 변환 처리부(106)의 기능을 실현하는 프로그램은, 데이터 처리 등록부(101) 등과 마찬가지로 처리 장치(900)에 의해 실행된다.
변환 처리부(106)는, 엔진간에 인터페이스 사양이 다른 경우에, 인터페이스 사양의 차이를 흡수하는 변환 처리를 행한다. 보다 구체적으로는, 실행 엔진(예를 들면, 엔진 5A)과 계승 엔진(예를 들면, 엔진 5B) 사이에 인터페이스 사양이 다른 경우에, 변환 처리부(106)는, 인터페이스 사양의 차이를 흡수하는 변환 처리를 행한다.
도 33은, 변환 처리부(106)에 의한 변환 처리의 타이밍을 나타낸다.
또, 도 34는, 변환 처리부(106)에 의한 변환 처리의 예를 나타낸다.
도 33에서는, 엔진 5A, 엔진 5B 및 엔진 5C가 데이터 처리 5에 포함되는 스텝을 실행하는 예를 나타내고 있다. 엔진 5A가 데이터 처리 5를 실행하는 경우는, 스텝 1~4가 실행된다. 엔진 5B가 데이터 처리 5를 실행하는 경우도, 스텝 1~4가 실행된다. 엔진 5C가 데이터 처리 5를 실행하는 경우는, 스텝 1 및 스텝 2가 실행된다.
또, 도 34에 나타내는 바와 같이, 엔진 5A, 엔진 5B 및 엔진 5C에서는, 연산에 이용하는 변수치의 수, 변수의 타입이 다르다. 이러한 엔진마다의 변수치의 수 및 변수의 타입은, 엔진 인터페이스 리스트(160)에 정의되어 있다.
데이터 처리 5의 모든 스텝이 동일한 엔진으로 실행되는 경우는, 변환 처리부(106)에 의한 변환 처리는 필요없다. 그러나, 스텝 1이 엔진 5A에 의해 실행되고, 스텝 2가 엔진 5B에 의해 실행되는 것과 같은, 전후의 스텝이 다른 엔진으로 실행되는 경우는 변환 처리부(106)에 의한 변환 처리가 필요하다. 즉, 변환 처리부(106)가, 선행하는 스텝에서의 연산 결과를 후속의 스텝을 실행하는 엔진에서 이용하는 변수치의 수 및 변수의 타입로 변환할 필요가 있다.
예를 들면, 선행하는 스텝이 엔진 5A에 의해 실행되고, 후속하는 스텝이 엔진 5B에 의해 실행되는 경우를 상정한다.
이 경우는, 엔진 5A의 연산 결과로서, 도 34에 나타내는 바와 같이, 연산 결과 저장 메모리(140)에, 부동 소수점형의 val1의 4개의 값이 저장되고, 부동 소수점형의 val2의 4개의 값이 저장된다.
엔진 인터페이스 리스트(160)에 나타내는 바와 같이, 엔진 5B가 이용하는val1의 값은 4개이며, val2의 값은 3개이며, 변수의 타입은 32 비트 고정 소수점이다.
엔진 실행 관리부(103)는, 엔진 5B가 실행하는 스텝의 실장 함수(엔진 B 전용의 고유의 프로그램 코드)를 호출하기 전에, 변환 처리부(106)를 호출한다. 변환 처리부(106)는, 연산 결과 저장 메모리(140)에 저장되어 있는 엔진 5A의 연산 결과를 엔진 5B의 인터페이스 사양에 합치하도록 변환한다.
구체적으로는, 변환 처리부(106)는, 도 34에 나타내는 바와 같이, val1과 val2의 형태를 32 비트 고정 소수점으로 변환하고, 또, val2의 값을 1개 줄인다. 이 결과, 엔진 5B는, 연산 결과 저장 메모리(140)에 저장되어 있는 연산 결과를 이용할 수 있다.
또, 상기와 같이, 인터페이스 사양이 다른 엔진 간에서의 전환이 발생하는 경우에는 변환 처리부(106)에 의한 변환 처리가 발생하므로, 엔진 선택부(102)는, 변환 처리부(106)에 의한 변환 처리에 필요로 하는 시간을 포함하여, 실행 데이터 처리가 데드라인 내에 완료 가능한지를 판정할 필요가 있다.
즉, 본 실시의 형태에서는, 엔진 선택부(102)는, 변환 처리에 필요로 하는 시간을 포함하여 실행 데이터 처리, 새로운 데이터 처리 및 할당 완료 데이터 처리를 각각의 데드라인까지 완료시킬 수 있는 엔진을, 계승 엔진으로서 선택한다.
변환 처리부(106)의 변환 처리에 필요로 하는 시간은, 변환 처리 시간 리스트(150)에 기재된다.
도 35는, 변환 처리 시간 리스트(150)의 예를 나타낸다. 각 수치는, 변환 처리에 필요로 하는 시간을 나타낸다. 또, 각 수치는, 도 5의 스텝 개시 시각과 마찬가지로 카운트치로 나타내진다.
도 35의 예에서는, 엔진 5A로부터 엔진 5B에의 전환의 경우는, 변환 처리부(106)의 변환 처리에 필요로 하는 시간은 3이다.
변환 처리부(106)는, 변환 처리 시간 리스트(150)를 참조하는 것으로, 변환 처리부(106)의 변환 처리에 필요로 하는 시간을 얻는다.
이와 같이, 본 실시의 형태에서는, 변환 처리에 필요로 하는 시간도 포함하여 새로운 데이터 처리 및 기존의 데이터 처리의 각각이 데드라인 내에 완료되는지 여부를 판정한다. 이 때문에, 본 실시의 형태에 의하면, 전환 전의 엔진과 전환 후의 엔진의 인터페이스 사양에 차이가 있어도, 새로운 데이터 처리 및 기존의 데이터 처리의 각각을 데드라인 내에 완료할 수 있다
이상, 본 발명의 실시의 형태에 대해 설명했지만, 이들 2개의 실시의 형태를 조합하여 실시해도 상관없다.
또는, 이들 2개의 실시의 형태 중, 1개를 부분적으로 실시해도 상관없다.
또는, 이들 2개의 실시의 형태를 부분적으로 조합하여 실시해도 상관없다.
또, 본 발명은, 이러한 실시의 형태에 한정되는 것은 아니고, 필요에 따라서 여러 가지의 변경이 가능하다.
100 : 데이터 처리 실행 장치 101 : 데이터 처리 등록부
102 : 엔진 선택부 103 : 엔진 실행 관리부
104 : 엔진 실행부 105 : 통신 처리부
106 : 변환 처리부 110 : 엔진 리스트
120 : 엔진 실행 관리 데이터 121 : 실행 데이터 처리 리스트
122 : 실행 대기 데이터 처리 리스트 130 : 엔진 소프트웨어
131 : 블록 함수 리스트 132 : 엔진 실장 코드
140 : 연산 결과 저장 메모리 150 : 변환 처리 시간 리스트
160 : 엔진 인터페이스 리스트 900 : 처리 회로
901 : CPU 902 : RAM
903 : ROM 904 : 하드웨어 가속기
905 : FPGA 906 : GPU
907 : DSP 908 : ASIC
1041 : CPU 실행부 1042 : FPGA 실행부

Claims (15)

  1. 각각이 데이터 처리를 실행하는 복수의 엔진과,
    상기 복수의 엔진 중 어느 하나의 엔진이 실행 엔진으로서 데이터 처리를 실행하고 있을 때에, 상기 실행 엔진이 실행하고 있는 데이터 처리인 실행 데이터 처리의 실행을 계승하는 계승 엔진을, 상기 복수의 엔진 중에서 선택하는 엔진 선택부와,
    상기 실행 엔진에 상기 실행 데이터 처리의 실행을 정지시키고, 상기 계승 엔진에 상기 실행 데이터 처리의 실행을 계승하게 하는 제어부를 갖는
    데이터 처리 실행 장치.
  2. 제 1 항에 있어서,
    상기 엔진 선택부는,
    상기 실행 엔진이 상기 실행 데이터 처리를 실행하고 있을 때에 새로운 데이터 처리가 발생하고, 상기 실행 엔진에 의한 상기 실행 데이터 처리의 실행에서는 상기 실행 데이터 처리 및 상기 새로운 데이터 처리 중 적어도 어느 하나가 각각의 완료 기한까지 완료되지 않는 경우에,
    상기 실행 데이터 처리 및 상기 새로운 데이터 처리를 각각의 완료 기한까지 완료시킬 수 있는 엔진을, 상기 계승 엔진으로서 선택하는
    데이터 처리 실행 장치.
  3. 제 2 항에 있어서,
    상기 엔진 선택부는,
    상기 실행 엔진에 의한 상기 실행 데이터 처리의 실행에서는, 상기 실행 데이터 처리, 상기 새로운 데이터 처리 및 미실행이지만 이미 엔진이 할당되어 있는 데이터 처리인 할당 완료 데이터 처리 중 적어도 어느 하나가 각각의 완료 기한까지 완료되지 않는 경우에,
    상기 실행 데이터 처리, 상기 새로운 데이터 처리 및 할당 완료 데이터 처리를 각각의 완료 기한까지 완료시킬 수 있는 엔진을, 상기 계승 엔진으로서 선택하는
    데이터 처리 실행 장치.
  4. 제 3 항에 있어서,
    상기 엔진 선택부는,
    상기 할당 완료 데이터 처리에 할당되어 있는 엔진의 다른 엔진으로의 전환과의 조합에 의해, 상기 실행 데이터 처리, 상기 새로운 데이터 처리 및 상기 할당 완료 데이터 처리를 각각의 완료 기한까지 완료시킬 수 있는 엔진을, 상기 계승 엔진으로서 선택하는 데이터 처리 실행 장치.
  5. 제 3 항에 있어서,
    상기 실행 데이터 처리, 상기 새로운 데이터 처리 및 상기 할당 완료 데이터 처리의 각각에는 우선도가 마련되어 있고,
    상기 엔진 선택부는,
    상기 실행 데이터 처리, 상기 새로운 데이터 처리 및 상기 할당 완료 데이터 처리 중 우선도가 높은 데이터 처리일수록 연산 정밀도가 높은 엔진으로 실행되도록, 상기 계승 엔진을 선택하는
    데이터 처리 실행 장치.
  6. 제 2 항에 있어서,
    상기 엔진 선택부는,
    상기 실행 엔진에 의한 상기 실행 데이터 처리의 실행에서는, 상기 실행 데이터 처리, 상기 새로운 데이터 처리, 미실행이지만 이미 엔진이 할당되어 있는 데이터 처리인 할당 완료 데이터 처리, 다른 실행 중의 데이터 처리인 다른 실행 데이터 처리 중 적어도 어느 하나가 각각의 완료 기한까지 완료되지 않는 경우에,
    상기 실행 데이터 처리, 상기 새로운 데이터 처리, 상기 할당 완료 데이터 처리 및 상기 다른 실행 데이터 처리를 각각의 완료 기한까지 완료시킬 수 있는 엔진을, 상기 계승 엔진으로서 선택하는
    데이터 처리 실행 장치.
  7. 제 3 항에 있어서,
    상기 엔진 선택부는,
    상기 할당 완료 데이터 처리에 할당되어 있는 엔진의 다른 엔진으로의 전환과, 상기 다른 실행 데이터 처리를 실행하고 있는 엔진의 다른 엔진으로의 전환의 조합에 의해, 상기 실행 데이터 처리, 상기 새로운 데이터 처리, 상기 할당 완료 데이터 처리 및 상기 다른 실행 데이터 처리를 각각의 완료 기한까지 완료시킬 수 있는 엔진을, 상기 계승 엔진으로서 선택하는 데이터 처리 실행 장치.
  8. 제 7 항에 있어서,
    상기 실행 데이터 처리, 상기 새로운 데이터 처리, 상기 할당 완료 데이터 처리 및 상기 다른 실행 데이터 처리의 각각에는 우선도가 마련되어 있고,
    상기 엔진 선택부는,
    상기 실행 데이터 처리, 상기 새로운 데이터 처리, 상기 할당 완료 데이터 처리 및 상기 다른 실행 데이터 처리 중 우선도가 높은 데이터 처리일수록 연산 정밀도가 높은 엔진으로 실행되도록, 상기 계승 엔진을 선택하는
    데이터 처리 실행 장치.
  9. 제 2 항에 있어서,
    상기 엔진 선택부는,
    상기 실행 데이터 처리 및 상기 새로운 데이터 처리를 각각의 완료 기한까지 완료시킬 수 있는 엔진 중, 상기 실행 엔진보다 연산 정밀도가 낮은 엔진을, 상기 계승 엔진으로서 선택하는 데이터 처리 실행 장치.
  10. 제 9 항에 있어서,
    상기 엔진 선택부는,
    상기 실행 데이터 처리 및 상기 새로운 데이터 처리를 각각의 완료 기한까지 완료시킬 수 있는 엔진이 2 이상 존재하는 경우에,
    상기 실행 데이터 처리 및 상기 새로운 데이터 처리를 각각의 완료 기한까지 완료시킬 수 있는 2 이상의 엔진 중, 가장 연산 정밀도가 높은 엔진을, 상기 계승 엔진으로서 선택하는
    데이터 처리 실행 장치.
  11. 제 1 항에 있어서,
    상기 제어부는,
    상기 계승 엔진이 선택되기 전에는, 상기 실행 데이터 처리를 실행 가능한 엔진에 공통으로 마련되어 있는 공통 프로그램 코드를 변환하여 상기 실행 엔진 전용의 개별 프로그램 코드를 생성하고, 생성한 상기 실행 엔진 전용의 개별 프로그램 코드를 이용하여 상기 실행 엔진에 상기 실행 데이터 처리를 실행시키고,
    상기 계승 엔진이 선택된 경우는, 상기 공통 프로그램 코드를 변환하여 상기 계승 엔진 전용의 개별 프로그램 코드를 생성하고, 생성한 상기 계승 엔진 전용의 개별 프로그램 코드를 이용하여 상기 계승 엔진에 상기 실행 데이터 처리를 계승하게 하는
    데이터 처리 실행 장치.
  12. 제 1 항에 있어서,
    상기 데이터 처리 실행 장치는,
    상기 실행 엔진과 상기 계승 엔진과의 사이에 인터페이스 사양이 다른 경우에, 상기 인터페이스 사양의 차이를 흡수하는 변환 처리를 행하는 변환 처리부를 더 갖는 데이터 처리 실행 장치.
  13. 제 12 항에 있어서,
    상기 엔진 선택부는,
    상기 실행 엔진이 상기 실행 데이터 처리를 실행하고 있을 때에 새로운 데이터 처리가 발생하고, 상기 실행 엔진에 의한 상기 실행 데이터 처리의 실행에서는 상기 실행 데이터 처리 및 상기 새로운 데이터 처리 중 적어도 어느 하나가 각각의 완료 기한까지 완료되지 않는 경우에,
    상기 변환 처리에 필요로 하는 시간을 포함하여 상기 실행 데이터 처리 및 상기 새로운 데이터 처리를 각각의 완료 기한까지 완료시킬 수 있는 엔진을, 상기 계승 엔진으로서 선택하는
    데이터 처리 실행 장치.
  14. 각각이 데이터 처리를 실행하는 복수의 엔진을 갖는 컴퓨터가,
    상기 복수의 엔진 중 어느 하나의 엔진이 실행 엔진으로서 데이터 처리를 실행하고 있을 때에, 상기 실행 엔진이 실행하고 있는 데이터 처리인 실행 데이터 처리의 실행을 계승하는 계승 엔진을, 상기 복수의 엔진 중에서 선택하고,
    상기 실행 엔진에 상기 실행 데이터 처리의 실행을 정지시키고, 상기 계승 엔진에 상기 실행 데이터 처리의 실행을 계승하게 하는
    데이터 처리 실행 방법.
  15. 각각이 데이터 처리를 실행하는 복수의 엔진을 갖는 컴퓨터에,
    상기 복수의 엔진 중 어느 하나의 엔진이 실행 엔진으로서 데이터 처리를 실행하고 있을 때에, 상기 실행 엔진이 실행하고 있는 데이터 처리인 실행 데이터 처리의 실행을 계승하는 계승 엔진을, 상기 복수의 엔진 중에서 선택하는 엔진 선택 처리와,
    상기 실행 엔진에 상기 실행 데이터 처리의 실행을 정지시키고, 상기 계승 엔진에 상기 실행 데이터 처리의 실행을 계승하게 하는 제어 처리를 실행시키는
    데이터 처리 실행 프로그램.
KR1020227017986A 2019-12-12 2019-12-12 데이터 처리 실행 장치, 데이터 처리 실행 방법 및 기록 매체에 저장된 데이터 처리 실행 프로그램 KR102467126B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/048681 WO2021117186A1 (ja) 2019-12-12 2019-12-12 データ処理実行装置、データ処理実行方法及びデータ処理実行プログラム

Publications (2)

Publication Number Publication Date
KR20220079692A true KR20220079692A (ko) 2022-06-13
KR102467126B1 KR102467126B1 (ko) 2022-11-14

Family

ID=74164598

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227017986A KR102467126B1 (ko) 2019-12-12 2019-12-12 데이터 처리 실행 장치, 데이터 처리 실행 방법 및 기록 매체에 저장된 데이터 처리 실행 프로그램

Country Status (7)

Country Link
US (1) US20220229696A1 (ko)
JP (1) JP6815563B1 (ko)
KR (1) KR102467126B1 (ko)
CN (1) CN114761927A (ko)
DE (1) DE112019007851T5 (ko)
TW (1) TWI787605B (ko)
WO (1) WO2021117186A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115796925B (zh) * 2023-02-08 2023-04-25 北京装库创意科技有限公司 一种基于云平台的销售数据统计方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0855091A (ja) * 1994-08-08 1996-02-27 Hitachi Ltd 分散処理システムおよび分散処理システムにおける負荷分散方法
KR20090017400A (ko) * 2007-08-14 2009-02-18 오끼 덴끼 고오교 가부시끼가이샤 프로그램 변환장치 및 컴파일러 프로그램
JP2009151645A (ja) * 2007-12-21 2009-07-09 Mitsubishi Electric Corp 並列処理装置及びプログラム並列化装置
KR20100118826A (ko) * 2009-04-29 2010-11-08 삼성전자주식회사 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법
WO2018198823A1 (ja) 2017-04-28 2018-11-01 日立オートモティブシステムズ株式会社 車両電子制御装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08212084A (ja) * 1995-02-02 1996-08-20 Hitachi Ltd 情報処理装置
US8028292B2 (en) * 2004-02-20 2011-09-27 Sony Computer Entertainment Inc. Processor task migration over a network in a multi-processor system
JP4523921B2 (ja) * 2006-02-24 2010-08-11 三菱電機株式会社 計算機リソース動的制御装置
JP2010027062A (ja) * 2009-08-21 2010-02-04 Hitachi Ltd 分散制御システム
US8776066B2 (en) * 2009-11-30 2014-07-08 International Business Machines Corporation Managing task execution on accelerators
WO2012105174A1 (ja) * 2011-01-31 2012-08-09 パナソニック株式会社 プログラム生成装置、プログラム生成方法、プロセッサ装置及びマルチプロセッサシステム
US8683468B2 (en) * 2011-05-16 2014-03-25 Advanced Micro Devices, Inc. Automatic kernel migration for heterogeneous cores
US9218206B2 (en) * 2011-06-20 2015-12-22 Microsoft Technology Licensing, Llc Memory management model and interface for new applications
US8572614B2 (en) * 2011-06-30 2013-10-29 International Business Machines Corporation Processing workloads using a processor hierarchy system
US9875187B2 (en) * 2014-12-10 2018-01-23 Intel Corporation Interruption of a page miss handler
JP2018092311A (ja) * 2016-12-01 2018-06-14 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
KR102463184B1 (ko) * 2016-12-13 2022-11-03 현대자동차 주식회사 통합 원격 제어장치 및 이를 이용한 원격 제어방법이 구현된 컴퓨터로 판독 가능한 기록매체
WO2020040599A1 (en) * 2018-08-23 2020-02-27 Samsung Electronics Co., Ltd. Electronic device and operating method thereof of processing neural network model by using plurality of processors

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0855091A (ja) * 1994-08-08 1996-02-27 Hitachi Ltd 分散処理システムおよび分散処理システムにおける負荷分散方法
KR20090017400A (ko) * 2007-08-14 2009-02-18 오끼 덴끼 고오교 가부시끼가이샤 프로그램 변환장치 및 컴파일러 프로그램
JP2009151645A (ja) * 2007-12-21 2009-07-09 Mitsubishi Electric Corp 並列処理装置及びプログラム並列化装置
KR20100118826A (ko) * 2009-04-29 2010-11-08 삼성전자주식회사 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법
WO2018198823A1 (ja) 2017-04-28 2018-11-01 日立オートモティブシステムズ株式会社 車両電子制御装置

Also Published As

Publication number Publication date
JP6815563B1 (ja) 2021-01-20
DE112019007851T5 (de) 2022-10-27
KR102467126B1 (ko) 2022-11-14
JPWO2021117186A1 (ja) 2021-12-09
WO2021117186A1 (ja) 2021-06-17
TW202123005A (zh) 2021-06-16
CN114761927A (zh) 2022-07-15
TWI787605B (zh) 2022-12-21
US20220229696A1 (en) 2022-07-21

Similar Documents

Publication Publication Date Title
TWI416413B (zh) Work processing device
KR100649107B1 (ko) 실시간 동작 수행방법 및 시스템
US5526521A (en) Method and system for process scheduling from within a current context and switching contexts only when the next scheduled context is different
JP2013232207A (ja) コンピュータマイクロジョブを中断せずに実行するようスケジュールするための方法、システムおよび装置
KR20050016170A (ko) 실시간 동작 수행방법 및 시스템
US7590990B2 (en) Computer system
CN109960589B (zh) 嵌入式系统的系统软件层的实现方法、装置及可读介质
JPH0474229A (ja) 情報処理装置
KR102467126B1 (ko) 데이터 처리 실행 장치, 데이터 처리 실행 방법 및 기록 매체에 저장된 데이터 처리 실행 프로그램
CN107820605B (zh) 用于动态低延迟优化的系统和方法
US20180276047A1 (en) Systems and methods for dynamic low latency optimization
US5148542A (en) Multitask processing apparatus utilizing a central processing unit equipped with a micro-program memory which contains no software instructions
EP1546872B1 (en) A key event controlling apparatus
JP5299869B2 (ja) コンピュータマイクロジョブ
JP2019079336A (ja) 数値制御装置
JPH05108380A (ja) データ処理システム
US7191443B2 (en) Digital device, task management method and program therefor
CN111152215B (zh) 一种应用的控制方法及机器人
JP2002041310A (ja) クラス動的バインドシステムおよび方法
EP3751417B1 (en) Parallel processing apparatus, job management program, and job management method
JP3763452B2 (ja) 情報処理システム、オブジェクトの優先度管理方法、オペレーティングシステム、記録媒体
JP5406549B2 (ja) プログラム変換方法、及び装置
JPH10326192A (ja) Catv端末ソフトウェアプログラムダウンロードシステム
CN114443255A (zh) 一种线程调用方法和装置
JP3838880B2 (ja) プロセス管理方法及びプロセス管理システム

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant