KR102329368B1 - 정보 처리 장치, 정보 처리 방법 및 기록 매체에 저장된 정보 처리 프로그램 - Google Patents

정보 처리 장치, 정보 처리 방법 및 기록 매체에 저장된 정보 처리 프로그램 Download PDF

Info

Publication number
KR102329368B1
KR102329368B1 KR1020217025783A KR20217025783A KR102329368B1 KR 102329368 B1 KR102329368 B1 KR 102329368B1 KR 1020217025783 A KR1020217025783 A KR 1020217025783A KR 20217025783 A KR20217025783 A KR 20217025783A KR 102329368 B1 KR102329368 B1 KR 102329368B1
Authority
KR
South Korea
Prior art keywords
program
parallelization
information
execution
schedule
Prior art date
Application number
KR1020217025783A
Other languages
English (en)
Other versions
KR20210106005A (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 KR20210106005A publication Critical patent/KR20210106005A/ko
Application granted granted Critical
Publication of KR102329368B1 publication Critical patent/KR102329368B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics
    • 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/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/314Parallel programming languages

Abstract

태스크 그래프 전정부(109)는, 프로그램을 실행할 때에 가능한 처리의 병렬화수를 병렬화 가능수로서 판정한다. 스케줄 생성부(112)는, 프로그램을 실행할 때의 프로그램의 실행 스케줄을 병렬화 실행 스케줄로서 생성한다. 표시 처리부(114)는, 병렬화 실행 스케줄로 프로그램을 실행할 때의 프로그램의 실행에 필요한 시간인 병렬화 실행 시간을 산출한다. 또, 표시 처리부(114)는, 병렬화 가능수와 병렬화 실행 스케줄과 병렬화 실행 시간이 나타나는 병렬화 정보를 생성하고, 생성한 병렬화 정보를 출력한다.

Description

정보 처리 장치, 정보 처리 방법 및 기록 매체에 저장된 정보 처리 프로그램
본 발명은 프로그램의 병렬 처리에 관한 것이다.
연산 성능 또는 용량의 확장성(scalability)을 실현하기 위해, 프로그램을 복수의 프로세서 유닛에 할당하여, 프로그램을 병렬로 처리하는 것이 유효하다. 이러한 병렬화 기술의 하나로서, 특허 문헌 1에 기재된 기술이 있다. 특허 문헌 1에 기재된 기술에서는, 프로그램으로부터 병렬성을 갖는 태스크가 추출된다. 그리고, 각 태스크의 처리 시간의 견적이 행해진다. 이 결과, 프로세서 유닛의 특성에 맞춘 태스크의 할당이 가능해진다.
[특허 문헌 1] 일본 특허 제 4082706호 공보
특허 문헌 1에 의하면, 프로그램을 자동적으로 병렬화할 수 있다. 그러나, 병렬화에 의한 연산 성능의 개선은 대상의 프로그램에 있어서의 태스크의 독립성 및 제어 구조에 의존하기 때문에, 프로그래머가 병렬성을 고려하면서 코딩을 행할 필요가 있다는 과제가 있다.
예를 들면, 프로그래머가 병렬성을 고려하지 않고 태스크의 독립성이 낮은 프로그램을 작성한 경우는, 병렬화를 행해도, 각 프로세서 유닛이 독립하여 동작할 수 있는 개소가 한정된다. 이 때문에, 프로세서 유닛간에 동기를 취하기 위한 통신이 빈번하게 발생하고, 연산 성능이 개선되지 않는다.
특히, PLC(Programmable Logic Controller)와 같은 시스템에서는, 복수의 프로세서 유닛이 각각 메모리를 가지기 때문에, 동기를 위한 통신에 의한 오버헤드가 커진다. 이 때문에, PLC와 같은 시스템에서는, 병렬화에 의한 연산 성능의 개선 정도가, 프로그램에 있어서의 태스크의 독립성 및 제어 구조에 크게 의존한다.
본 발명은 효율적인 프로그램의 병렬화를 실현하기 위한 구성을 얻는 것을 주된 목적으로 한다.
본 발명에 따른 정보 처리 장치는,
프로그램을 실행할 때에 가능한 처리의 병렬화수를 병렬화 가능수로서 판정하는 판정부와,
상기 프로그램을 실행할 때의 상기 프로그램의 실행 스케줄을 병렬화 실행 스케줄로서 생성하는 스케줄 생성부와,
상기 병렬화 실행 스케줄로 상기 프로그램을 실행할 때의 상기 프로그램의 실행에 필요한 시간인 병렬화 실행 시간을 산출하는 산출부와,
상기 병렬화 가능수와 상기 병렬화 실행 스케줄과 상기 병렬화 실행 시간이 나타나는 병렬화 정보를 생성하고, 생성한 상기 병렬화 정보를 출력하는 정보 생성부를 가진다.
본 발명에서는, 병렬화 가능수와 병렬화 실행 스케줄과 병렬화 실행 시간이 나타나는 병렬화 정보가 출력된다. 이 때문에, 프로그래머는, 병렬화 정보를 참조하는 것으로, 현재 작성중인 프로그램에서 가능한 병렬화수, 병렬화에 의한 연산 성능의 개선 상황 및 프로그램 중의 연산 성능의 개선에 영향을 주는 개소를 파악할 수 있어, 효율적인 병렬화를 실현할 수 있다.
도 1은 실시의 형태 1에 따른 시스템의 구성예를 나타내는 도면이다.
도 2는 실시의 형태 1에 따른 정보 처리 장치의 하드웨어 구성예를 나타내는 도면이다.
도 3은 실시의 형태 1에 따른 정보 처리 장치의 기능 구성예를 나타내는 도면.
도 4는 실시의 형태 1에 따른 정보 처리 장치의 동작예를 나타내는 흐름도.
도 5는 실시의 형태 1에 따른 프로그램의 예를 나타내는 도면이다.
도 6은 실시의 형태 1에 따른 병렬화 정보의 예를 나타내는 도면이다.
도 7은 실시의 형태 2에 따른 정보 처리 장치의 동작예를 나타내는 흐름도.
도 8은 실시의 형태 3에 따른 정보 처리 장치의 동작예를 나타내는 흐름도.
도 9는 실시의 형태 3에 따른 병렬화 정보의 예를 나타내는 도면이다.
도 10은 실시의 형태 1에 따른 공통 디바이스의 추출 순서를 나타내는 흐름도.
도 11은 실시의 형태 1에 따른 블록마다의 명령과 디바이스명의 출현예를 나타내는 도면이다.
도 12는 실시의 형태 1에 따른 의존 관계의 추출 순서를 나타내는 도면이다.
이하, 본 발명의 실시의 형태에 대해, 도면을 이용하여 설명한다. 이하의 실시의 형태의 설명 및 도면에 있어서, 동일한 부호를 부여한 것은 동일한 부분 또는 상당하는 부분을 나타낸다.
(실시의 형태 1)
***구성의 설명***
도 1은, 본 실시의 형태에 따른 시스템의 구성예를 나타낸다.
본 실시의 형태에 따른 시스템은, 정보 처리 장치(100), 제어 기기(200), 설비(1)(301), 설비(2)(302), 설비(3)(303), 설비(4)(304), 설비(5)(305), 네트워크(401) 및 네트워크(402)로 구성된다.
정보 처리 장치(100)는, 설비(1)(301)부터 설비(5)(305)를 제어하기 위한 프로그램을 생성한다. 정보 처리 장치(100)는, 생성한 프로그램을 네트워크(402)를 거쳐 제어 기기(200)에 송신한다.
또, 정보 처리 장치(100)에 의해 행해지는 동작은 정보 처리 방법 및 정보 처리 프로그램에 상당한다.
제어 기기(200)는, 정보 처리 장치(100)에서 생성된 프로그램을 실행하고, 네트워크(401)를 거쳐 설비(1)(301)부터 설비(5)(305)에 제어 커멘드를 송신하고, 설비(1)(301)부터 설비(5)(305)를 제어한다.
제어 기기(200)는, 예를 들면 PLC이다. 또, 제어 기기(200)는 일반적인 PC(Personal Computer)라도 좋다.
설비(1)(301) 내지 설비(5)(305)는 공장 라인(300)에 배치되는 제조 설비이다.
도 1에서는, 5개의 설비가 나타나고 있지만, 공장 라인(300)에 배치되는 설비의 수는 5개에 한정되지 않는다.
네트워크(401) 및 네트워크(402)는, 예를 들면 CC-Link 등의 필드 네트워크이다. 또, 네트워크(401) 및 네트워크(402)는, 이더넷(등록상표) 등의 일반적인 네트워크라도 좋고, 전용 네트워크라도 좋다. 또, 네트워크(401)와 네트워크(402)는 각각 다른 종류의 네트워크라도 좋다.
도 2는 정보 처리 장치(100)의 하드웨어 구성예를 나타낸다.
정보 처리 장치(100)는 컴퓨터이며, 정보 처리 장치(100)의 소프트웨어 구성을 프로그램으로 실현할 수 있다. 정보 처리 장치(100)의 하드웨어 구성으로서는, 버스에, 프로세서(11), 메모리(12), 스토리지(13), 통신 장치(14), 입력 장치(15) 및 표시 장치(16)가 접속되어 있다.
프로세서(11)는, 예를 들면 CPU(Central Processing Unit)이다.
메모리(12)는, 예를 들면 RAM(Random Access Memory)이다.
스토리지(13)는, 예를 들면 하드 디스크 장치, SSD, 메모리 카드 판독 장치이다.
통신 장치(14)는, 예를 들면 이더넷(등록상표) 통신 보드, CC-Link 등의 필드 네트워크용의 통신 보드이다.
입력 장치(15)는, 예를 들면 마우스, 키보드이다.
표시 장치(16)는, 예를 들면 디스플레이이다.
또, 입력 장치(15)와 표시 장치(16)를 맞댄 터치 패널을 이용해도 좋다.
스토리지(13)에는, 후술하는 입력 처리부(101), 행 프로그램 취득부(104), 블록 생성부(106), 태스크 그래프 생성부(108), 태스크 그래프 전정부(debranching section)(109), 스케줄 생성부(112) 및 표시 처리부(114)의 기능을 실현하는 프로그램이 기억되어 있다.
이들 프로그램은 스토리지(13)로부터 메모리(12)에 로드된다. 그리고, 프로세서(11)가 이들 프로그램을 실행하고, 후술하는 입력 처리부(101), 행 프로그램 취득부(104), 블록 생성부(106), 태스크 그래프 생성부(108), 태스크 그래프 전정부(109), 스케줄 생성부(112) 및 표시 처리부(114)의 동작을 행한다.
도 2에서는, 프로세서(11)가 입력 처리부(101), 행 프로그램 취득부(104), 블록 생성부(106), 태스크 그래프 생성부(108), 태스크 그래프 전정부(109), 스케줄 생성부(112) 및 표시 처리부(114)의 기능을 실현하는 프로그램을 실행하고 있는 상태를 모식적으로 나타내고 있다.
도 3은, 정보 처리 장치(100)의 기능 구성예를 나타낸다. 또, 도 3의 실선인 화살표는 호출 관계를 나타내고, 점선인 화살표는 데이터베이스와의 데이터의 흐름을 나타내고 있다.
입력 처리부(101)는, 표시 장치(16) 상의 특정 영역을 감시하고, 입력 장치(15)를 거쳐 액션(마우스의 클릭 등)을 검지했을 때에, 스토리지(13) 내의 프로그램을 프로그램 데이터베이스(102)에 저장한다.
본 실시의 형태에서는, 입력 처리부(101)는, 도 5에 예시하는 프로그램을 스토리지(13)로부터 프로그램 데이터베이스(102)에 저장한다.
도 5의 프로그램에서는, 제 1 인수 및 제 2 인수가 단계수 정보이다. 또, 도 5의 프로그램에서는, 제 3 인수가 명령이며, 제 4 인수 이후가 디바이스이다. 단계수란 프로그램의 규모를 측정하기 위한 지표가 되는 수치이다. 명령이란 제어 기기(200)의 프로세서가 행하는 동작을 정의하는 문자열이다. 또, 디바이스란 명령의 대상으로 되는 변수이다.
행 프로그램 취득부(104)는, 프로그램 데이터베이스(102)로부터 프로그램을 1행씩 취득한다. 1행의 프로그램을 이하에서는, 행 프로그램이라고 한다. 또, 행 프로그램 취득부(104)는, 취득한 행 프로그램으로부터 명령과 디바이스를 취득한다. 또, 행 프로그램 취득부(104)는, 명령 데이터베이스(103)로부터, 취득한 명령의 종류와 실행 시간과 선두 플래그와 종단 플래그를 취득한다.
명령 데이터베이스(103)에는, 행 프로그램마다, 명령의 종류, 실행 시간, 선두 플래그 및 종단 플래그가 정의되어 있다.
명령의 종류에는, 행 프로그램의 명령이 참조 명령 및 기록 명령 중 어느 것인지가 나타난다.
실행 시간에는, 행 프로그램의 실행에 필요한 시간이 나타난다.
선두 플래그에는, 행 프로그램이 후술하는 블록의 선두에 위치하는지 여부가 나타난다. 즉, 선두 플래그가 「1」인 행 프로그램은 블록의 선두에 위치하게 된다.
종단 플래그에는, 행 프로그램이 블록의 종단에 위치하는지 여부가 나타난다. 즉, 종단 플래그가 「1」인 행 프로그램은 블록의 종단에 위치하게 된다.
그리고, 행 프로그램 취득부(104)는, 행 프로그램, 디바이스, 명령의 종류, 실행 시간, 선두 플래그 및 종단 플래그를 가중치 부여 프로그램 데이터베이스(105)에 저장한다.
블록 생성부(106)는, 가중치 부여 프로그램 데이터베이스(105)로부터, 행 프로그램, 디바이스, 명령의 종류, 실행 시간, 선두 플래그 및 종단 플래그를 취득한다.
그리고, 블록 생성부(106)는, 선두 플래그 및 종단 플래그에 근거하여, 복수의 행 프로그램을 그룹화하여 하나의 블록을 구성한다.
즉, 블록 생성부(106)는, 선두 플래그가 「1」인 행 프로그램으로부터 종단 플래그가 「1」인 행 프로그램까지를 그룹화하여 하나의 블록을 생성한다.
블록 생성부(106)에 의한 블록의 생성의 결과, 프로그램은 복수의 블록에 분할되게 된다.
또, 블록 생성부(106)는, 블록간의 의존 관계를 판정한다. 블록간의 의존 관계의 상세한 것에 대하여는 후술한다.
또, 블록 생성부(106)는, 블록마다, 블록에 포함되는 행 프로그램, 블록에 포함되는 행 프로그램의 디바이스, 명령의 종류, 실행 시간이 나타나는 블록 정보와 블록간의 의존 관계를 나타내는 의존 관계 정보를 생성한다.
그리고, 블록 생성부(106)는, 블록 정보와 의존 관계 정보를 의존 관계 데이터베이스(107)에 저장한다.
태스크 그래프 생성부(108)는, 의존 관계 데이터베이스(107)로부터 블록 정보와 의존 관계 정보를 취득하고, 블록 정보와 의존 관계 정보를 참조하여, 태스크 그래프를 생성한다.
태스크 그래프 전정부(109)는, 태스크 그래프 생성부(108)에 의해 생성된 태스크 그래프의 전정을 행한다. 즉, 태스크 그래프 전정부(109)는, 블록간의 의존 관계를 정리하고, 태스크 그래프간의 여분의 경로를 삭제한 태스크 그래프를 생성한다.
또, 태스크 그래프 전정부(109)는, 전정 후의 태스크 그래프를 해석하고, 프로그램을 실행할 때에 가능한 처리의 병렬화수를 병렬화 가능수로서 판정한다. 보다 구체적으로는, 태스크 그래프 전정부(109)는, 전정 후의 태스크 그래프에 있어서의 블록간의 접속수 중 최대의 접속수에 따라 병렬화 가능수를 판정한다.
태스크 그래프 전정부(109)는, 전정 후의 태스크 그래프와, 병렬화 가능수가 나타나는 병렬화 가능수 정보를 태스크 그래프 데이터베이스(110)에 저장한다.
또, 태스크 그래프 전정부(109)는, 판정부에 상당한다. 또, 태스크 그래프 전정부(109)에 의해 행해지는 처리는, 판정 처리에 상당한다.
스케줄 생성부(112)는, 태스크 그래프 데이터베이스(110)로부터 전정 후의 태스크 그래프를 취득한다. 그리고, 스케줄 생성부(112)는, 전정 후의 태스크 그래프로부터, 프로그램을 실행할 때의 프로그램의 실행 스케줄을 생성한다. 스케줄 생성부(112)가 생성하는 스케줄을 병렬화 실행 스케줄이라고 한다. 병렬화 실행 스케줄을 단순히 스케줄이라고 하는 경우도 있다.
본 실시의 형태에서는, 스케줄 생성부(112)는, 병렬화 실행 스케줄이 나타나는 간트 차트를 생성한다.
스케줄 생성부(112)는, 생성한 간트 차트를 스케줄 데이터베이스(113)에 저장한다.
또, 스케줄 생성부(112)에 의해 행해지는 처리는, 스케줄 생성 처리에 상당한다.
표시 처리부(114)는, 스케줄 데이터베이스(113)로부터 간트 차트를 취득한다.
그리고, 표시 처리부(114)는, 병렬화 실행 스케줄로 프로그램을 실행할 때의 프로그램의 실행에 필요한 시간인 병렬화 실행 시간을 산출한다.
또, 표시 처리부(114)는, 병렬화 정보를 생성한다. 예를 들면, 표시 처리부(114)는, 도 6에 나타내는 병렬화 정보를 생성한다. 도 6의 병렬화 정보는, 기본 정보, 태스크 그래프, 병렬화 실행 스케줄(간트 차트)로 구성된다. 도 6의 병렬화 정보의 자세한 것은 후술한다.
표시 처리부(114)는, 생성한 병렬화 정보를 표시 장치(16)에 출력한다.
또, 표시 처리부(114)는, 산출부 및 정보 생성부에 상당한다. 또, 표시 처리부(114)에 의해 행해지는 처리는, 산출 처리 및 정보 생성 처리에 상당한다.
***동작의 설명***
다음에, 도 4의 흐름도를 참조하여, 본 실시의 형태에 따른 정보 처리 장치(100)의 동작예를 설명한다.
입력 처리부(101)가, 표시 장치(16) 상의 확인 버튼이 표시되는 영역을 감시하고, 입력 장치(15)를 거쳐 확인 버튼이 눌렸는지 여부(마우스의 클릭 등이 있던지 여부)를 판정한다(단계 S101). 입력 처리부(101)는, 매초, 매분, 매시, 매일 등의 정주기로 확인 버튼이 눌렸는지 여부를 판정한다.
확인 버튼이 눌린 경우(단계 S101에서 '예')는, 입력 처리부(101)는, 스토리지(13) 내의 프로그램을 프로그램 데이터베이스(102)에 저장한다(단계 S102).
다음에, 행 프로그램 취득부(104)가, 프로그램 데이터베이스(102)로부터 행 프로그램을 취득한다(단계 S103).
즉, 행 프로그램 취득부(104)는, 프로그램 데이터베이스(102)에서 1행씩 프로그램을 취득한다.
또, 행 프로그램 취득부(104)는, 행 프로그램마다, 디바이스, 명령의 종류, 실행 시간 등을 취득한다(단계 S104).
즉, 행 프로그램 취득부(104)는, 단계 S103에서 취득한 행 프로그램으로부터 디바이스를 취득한다. 또, 행 프로그램 취득부(104)는, 명령 데이터베이스(103)로부터, 단계 S103에서 취득한 행 프로그램에 대응하는, 명령의 종류와 실행 시간과 선두 플래그와 종단 플래그를 취득한다.
상술한 바와 같이, 명령 데이터베이스(103)에는, 행 프로그램마다, 명령의 종류, 실행 시간, 선두 플래그 및 종단 플래그가 정의되어 있다. 이 때문에, 행 프로그램 취득부(104)는, 단계 S103에서 취득한 행 프로그램에 대응하는, 명령의 종류와 실행 시간과 선두 플래그와 종단 플래그를 명령 데이터베이스(103)로부터 취득할 수 있다.
그리고, 행 프로그램 취득부(104)는, 행 프로그램, 디바이스, 명령의 종류, 실행 시간, 선두 플래그 및 종단 플래그를 가중치 부여 프로그램 데이터베이스(105)에 저장한다.
행 프로그램 취득부(104)는, 프로그램의 모든 행에 대해 단계 S103 및 단계 S104를 반복한다.
다음에, 블록 생성부(106)가, 가중치 부여 프로그램 데이터베이스(105)로부터, 행 프로그램, 디바이스, 명령의 종류, 실행 시간, 선두 플래그 및 종단 플래그를 취득한다.
그리고, 블록 생성부(106)는, 블록을 생성한다(단계 S105).
보다 구체적으로는, 블록 생성부(106)는, 선두 플래그가 「1」인 행 프로그램으로부터 종단 플래그가 「1」인 행 프로그램까지를 그룹화하여 하나의 블록을 생성한다.
블록 생성부(106)는, 프로그램의 전체가 복수의 블록으로 분할될 때까지, 단계 S105를 반복한다.
다음에, 블록 생성부(106)가, 블록간의 의존 관계를 판정한다(단계 S106).
본 실시의 형태에서는, 의존 관계의 추출은, 명령어의 내용과 명령어에 대응하는 디바이스명의 라벨링에 의해 행해진다. 준수해야 하는 실행 순서를 지키는 것을 이 순서로 담보하기 위해서는, 복수의 블록에서 사용되는 디바이스(이후는 공통 디바이스라고 표기)의 실행 순서를 지키는 것이 필요하다. 명령마다 디바이스에 미치는 영향은 다르고, 본 실시의 형태에서는, 블록 생성부(106)는, 이하와 같이 디바이스로의 영향을 판정한다.
· 접점 명령, 비교 연산 명령 등 :입력
· 출력 명령, 비트 처리 명령 등 :출력
여기서, 입력이란 명령에서 사용된 디바이스의 정보를 판독하는 처리이며, 출력이란 명령에서 사용된 디바이스의 정보를 재기입하는 처리이다.
본 실시의 형태에서는, 블록 생성부(106)가, 프로그램에 기재되어 있는 디바이스를 입력에 이용되는 디바이스와 출력에 이용되는 디바이스로 나누어 라벨링을 하는 것에 의해, 의존 관계의 추출을 행한다.
도 10에 공통 디바이스의 의존 관계를 추출하는 흐름도의 일례를 나타낸다.
단계 S151에서, 블록 생성부(106)는, 블록의 선두로부터 행 프로그램을 판독한다.
단계 S152에서, 블록 생성부(106)는, 단계 S151에서 판독한 행 프로그램의 디바이스가 입력에 이용되는 디바이스인지 여부를 판정한다. 즉, 블록 생성부(106)는, 단계 S151에서 판독한 행 프로그램에, 「접점 명령+디바이스명」의 기술 또는 「비교 연산 명령+디바이스명」의 기술이 포함되어 있는지 여부를 판정한다.
단계 S151에서 판독한 행 프로그램에, 「접점 명령+디바이스명」의 기술 또는 「비교 연산 명령+디바이스명」의 기술이 포함되어 있는 경우(단계 S152에서 '예')는, 블록 생성부(106)는, 단계 S151에서 판독한 행 프로그램의 디바이스가 입력에 이용되는 디바이스인 것을 규정의 기억 영역에 기록한다.
한편, 단계 S151에서 판독한 행 프로그램에, 「접점 명령+디바이스명」의 기술 및 「비교 연산 명령+디바이스명」의 기술의 어느 것도 포함되지 않은 경우(단계 S152에서 '아니오')는, 단계 S154에서, 블록 생성부(106)는, 단계 S151에서 판독한 행 프로그램의 디바이스가 출력에 이용되는 디바이스인지 여부를 판정한다. 즉, 블록 생성부(106)는, 단계 S151에서 판독한 행 프로그램에, 「출력 명령+디바이스명」의 기술 또는 「비트 처리 명령+디바이스명」의 기술이 포함되어 있는지 여부를 판정한다.
단계 S151에서 판독한 행 프로그램에, 「출력 명령+디바이스명」의 기술 또는 「비트 처리 명령+디바이스명」의 기술이 포함되어 있는 경우(단계 S154에서 '예')는, 블록 생성부(106)는, 단계 S151에서 판독한 행 프로그램의 디바이스가 출력에 이용되는 디바이스인 것을 규정의 기억 영역에 기록한다.
한편, 단계 S151에서 판독한 행 프로그램에, 「출력 명령+디바이스명」의 기술 및 「비트 처리 명령+디바이스명」의 기술의 어느 것도 포함되지 않은 경우(단계 S154에서 '아니오')는, 단계 S156에서, 블록 생성부(106)는, 아직 판독되지 않은 행 프로그램이 있는지 여부를 판정한다.
아직 판독되지 않은 행 프로그램이 있는 경우(단계 S156에서 '예')는, 처리가 단계 S151에 돌아온다. 한편, 모든 행 프로그램을 판독하고 있는 경우(단계 S156에서 '아니오')는, 블록 생성부(106)는 처리를 종료한다.
도 11에, 블록마다의 명령과 디바이스명의 출현예를 나타낸다.
도 11의 블록명:N1의 1행째에 주목하면, 명령에 LD, 디바이스명에 M0가 사용되고 있다. LD는 접점 명령이기 때문에, 디바이스 M0는 블록 N1에서 입력으로서 사용된 것이 기록된다. 마찬가지의 처리를 모든 행에 대해서 행하는 것으로, 도 11의 하단에 나타내는 추출 결과를 얻을 수 있다.
도 12에 블록간의 의존 관계의 추출 방법 및 의존 관계의 일례를 나타낸다.
공통 디바이스에 있어서, 이하와 같은 경우에, 블록 생성부(106)는 블록간에 의존 관계가 있다고 판정한다.
· 전:입력, 후:출력
· 전:출력, 후:입력
· 전:출력, 후:출력
또, 「전」은 공통 디바이스가 이용되고 있는 블록간에 있어 실행 차례가 앞인 블록을 의미한다. 또, 「후」는 공통 디바이스가 이용되고 있는 블록간에 있어 실행 차례가 후인 블록을 의미한다.
임의의 특정의 공통 디바이스에 있어서, 비교하는 2개의 블록이 모두 입력인 경우, 참조하는 공통 디바이스의 값은 동일한 값이기 때문에, 실행 순서를 변경해도 실행 결과에 영향을 미치지 않는다(도 12의 M1에 있어서의 N1과 N3). 그에 대해, 상기의 3 패턴은 참조하는 공통 디바이스의 값이 변화하기 때문에, 실행 순서를 변경하면 의도하지 않는 실행 결과로 된다. 예를 들면, 도 12의 공통 디바이스 M0에 주목하면, 블록 N1에서 입력, 블록 N3에서 출력으로서 사용되고 있다. 이 때문에, 블록 N1과 블록 N3에 의존 관계가 있다. 마찬가지의 처리를 모든 공통 디바이스에 대해서 행하는 것에 의해, 도 12의 블록간의 의존 관계를 얻을 수 있다.
블록간의 의존 관계를 기초로, 의존 관계가 있는 블록끼리를 이으면, 데이터 플로우 그래프(DFG)가 얻어진다.
다음에, 블록 생성부(106)는, 블록 정보와 의존 관계 정보를 의존 관계 데이터베이스(107)에 저장한다.
상술한 바와 같이, 블록 정보에서는, 블록마다, 블록에 포함되는 행 프로그램, 블록에 포함되는 행 프로그램의 디바이스, 명령의 종류, 실행 시간이 나타난다. 의존 관계 정보에는, 블록간의 의존 관계가 나타난다.
다음에, 태스크 그래프 생성부(108)가, 블록간의 처리 흐름을 나타내는 태스크 그래프를 생성한다(단계 S107).
태스크 그래프 생성부(108)는, 의존 관계 데이터베이스(107)로부터 블록 정보와 병렬화 가능수 정보와 의존 관계 정보를 취득하고, 블록 정보와 병렬화 가능수 정보와 의존 관계 정보를 참조하여, 태스크 그래프를 생성한다.
다음에, 태스크 그래프 전정부(109)가, 단계 S107에서 생성된 태스크 그래프의 전정을 행한다(단계 S108).
즉, 태스크 그래프 전정부(109)는, 태스크 그래프에 있어서의 블록간의 의존 관계를 정리하는 것에 의해, 태스크 그래프에서의 여분의 경로를 삭제한다.
다음에, 태스크 그래프 전정부(109)는, 병렬화 가능수를 판정한다(단계 S109).
태스크 그래프 전정부(109)는, 전정 후의 태스크 그래프에 있어서의 블록간의 접속수 중 최대의 접속수를 병렬화 가능수로 지정한다. 접속수는, 1개의 선행하는 블록에 접속하는 후속의 블록의 수이다.
예를 들면, 전정 후의 태스크 그래프에 있어서, 선행하는 블록 A와 후속하는 블록 B가 접속되고, 선행하는 블록 A와 후속하는 블록 C가 접속되고, 선행하는 블록 A와 후속하는 블록 D가 접속되어 있는 경우는, 접속수는 3이다. 그리고, 접속수 3이 전정 후의 태스크 그래프 내에서 최대의 접속수이면, 태스크 그래프 전정부(109)는, 병렬화 가능수를 3으로 판정한다.
이와 같이 하여, 태스크 그래프 전정부(109)는, 프로그램에 포함되는 복수의 블록에서의 병렬화 가능수를 판정한다.
태스크 그래프 전정부(109)는, 전정 후의 태스크 그래프와 병렬화 가능수가 나타나는 병렬화 가능수 정보를 태스크 그래프 데이터베이스(110)에 저장한다.
다음에, 스케줄 생성부(112)가 병렬화 실행 스케줄을 생성한다(단계 S110).
보다 구체적으로는, 스케줄 생성부(112)는, 전정 후의 태스크 그래프를 참조하고, 스케줄링 알고리즘을 이용하여, 프로그래머에 의해 지정된 CPU 코어수로 프로그램을 실행시키는 경우의 병렬화 실행 스케줄(간트 차트)을 생성한다. 스케줄 생성부(112)는, 예를 들면, 위기 경로를 추출하고, 위기 경로가 적색으로 표시되도록 병렬화 실행 스케줄(간트 차트)을 생성한다.
스케줄 생성부(112)는, 생성한 병렬화 실행 스케줄(간트 차트)을 스케줄 데이터베이스(113)에 저장한다.
다음에, 표시 처리부(114)가 병렬화 실행 시간을 산출한다(단계 S111).
보다 구체적으로는, 표시 처리부(114)는, 스케줄 데이터베이스(113)로부터 스케줄(간트 차트)을 취득하고, 또, 의존 관계 데이터베이스(107)로부터 블록 정보를 취득한다. 그리고, 표시 처리부(114)는, 블록 정보를 참조하여, 블록마다 행 프로그램의 실행 시간을 적산하여, 블록마다의 실행 시간을 산출한다. 그리고, 표시 처리부(114)는, 스케줄(간트 차트)에 따라 블록마다의 실행 시간을 적산하여, 프로그래머에 의해 지정된 CPU 코어수로 프로그램을 실행한 경우의 실행 시간(병렬화 실행 시간)을 얻는다.
다음에, 표시 처리부(114)가 병렬화 정보를 생성한다(단계 S112).
예를 들면, 표시 처리부(114)는 도 6에 나타내는 병렬화 정보를 생성한다.
마지막으로, 표시 처리부(114)는 병렬화 정보를 표시 장치(16)에 출력한다(단계 S113). 이 결과, 프로그래머는, 병렬화 정보를 참조할 수 있다.
여기서, 도 6에 나타내는 병렬화 정보를 설명한다.
도 6의 병렬화 정보는, 기본 정보, 태스크 그래프, 병렬화 실행 스케줄(간트 차트)로 구성된다.
기본 정보에는, 프로그램의 총 단계수, 병렬화 실행 시간, 병렬화 가능수 및 제약 조건이 나타난다.
프로그램의 총 단계수는, 도 5에 나타내는 단계수 정보에 나타나는 단계수의 합계치이다. 표시 처리부(114)는, 의존 관계 데이터베이스(107)로부터 블록 정보를 취득하고, 블록 정보에 포함되는 행 프로그램의 단계수 정보를 참조하는 것으로, 총 단계수를 얻을 수 있다.
또, 병렬화 실행 시간은 단계 S111에서 얻어진 값이다.
병렬화 가능수는 단계 S107에서 얻어진 값이다. 표시 처리부(114)는, 태스크 그래프 데이터베이스(110)로부터 병렬화 가능수 정보를 취득하고, 병렬화 가능수 정보를 참조하는 것으로 병렬화 가능수를 얻을 수 있다.
또, 도 10의 순서에 의해 추출된 공통 디바이스의 개수를 병렬화 정보에 포함시켜도 좋다.
또, 표시 처리부(114)는 CPU 코어마다 ROM 사용수를 산출하고, 산출한 CPU 코어마다의 ROM 사용수를 병렬화 정보에 포함시켜도 좋다. 표시 처리부(114)는, 예를 들면, 블록 정보에 포함되는 행 프로그램의 단계수 정보를 참조하는 것으로, 블록마다의 단계수를 얻는다. 그리고, 표시 처리부(114)는, 병렬화 실행 스케줄(간트 차트)에 나타나는 CPU 코어마다, 대응하는 블록의 단계수를 적산함으로써, CPU 코어마다의 ROM 사용수를 얻는다.
제약 조건에는, 프로그램에 대한 요구치가 정의된다. 도 6의 예에서는, 병렬화 실행 시간에 대한 요구치로서 「스캔 타임은 1.6[μs] 이하」가 정의되어 있다. 또, 단계수(메모리 사용량)에 대한 요구치로서 「ROM 사용량은 1000[단계] 이하」가 정의되어 있다. 또, 공통 디바이스에 대한 요구치로서 「공통 디바이스는 10[개] 이하」가 정의되어 있다.
표시 처리부(114)는, 제약 조건 데이터베이스(111)로부터 제약 조건을 취득한다.
태스크 그래프는, 단계 S109에서 생성된 전정 후의 태스크 그래프이다.
표시 처리부(114)는, 태스크 그래프 데이터베이스(110)로부터 전정 후의 태스크 그래프를 취득한다.
도 6에서, 「A」로부터 「F」의 각각은, 블록을 나타낸다. 또, 블록의 표시 위에 나타나는 「0. 2」, 「0. 4」등은, 블록 단위의 실행 시간이다.
또, 도 6에 나타내는 바와 같이, 태스크 그래프에 중첩하여 공통 디바이스가 도시되어도 좋다. 도 6의 예에서는, 블록 A와 블록 B에서는, 디바이스 「M0」와 디바이스 「M1」이 공통으로 이용되고 있는 것이 나타난다.
병렬화 실행 스케줄(간트 차트)은, 단계 S110에서 생성된 것이다. 표시 처리부(114)는, 스케줄 데이터베이스(113)로부터 병렬화 실행 스케줄(간트 차트)을 취득한다.
***실시의 형태의 효과의 설명***
이와 같이, 본 실시의 형태에서는, 병렬화 실행 시간, 병렬화 가능수, 병렬화 실행 스케줄 등으로 구성되는 병렬화 정보가 표시된다. 이 때문에, 프로그래머는, 병렬화 정보를 참조하는 것으로, 현재 작성 중인 프로그램에 있어서의 병렬화 실행 시간 및 병렬화 가능수를 파악할 수 있고, 현재 검토중의 병렬화가 충분한지 여부를 검토할 수 있다. 또, 프로그래머는, 병렬화 실행 스케줄에 의해, 병렬화에 의한 연산 성능의 개선 상황 및 프로그램 중의 연산 성능의 개선에 영향을 주는 개소를 파악할 수 있다. 이와 같이, 본 실시의 형태에 의하면, 프로그래머에 병렬화의 개선을 위한 지침을 제공할 수 있고, 효율적인 병렬화를 실현할 수 있다.
또, 상기에서는, 프로그램의 전체에 대해서 도 4의 흐름을 적용하는 예를 설명했다. 이를 대신하여 프로그램의 차분에 대해서만 도 4의 흐름을 적용하도록 해도 좋다. 예를 들면, 프로그래머가 프로그램을 수정하는 것과 같은 경우에, 행 프로그램 취득부(104)가 수정 전의 프로그램과 수정 후의 프로그램의 차분을 추출한다. 그리고, 추출된 차분에 대해서만 도 4의 단계 S103 이후의 처리를 하도록 해도 좋다.
(실시의 형태 2)
본 실시의 형태에서는, 주로 실시의 형태 1과의 차이를 설명한다.
또, 이하에서 설명하고 있지 않는 사항은, 실시의 형태 1과 마찬가지다.
***구성의 설명***
본 실시의 형태에 따른 시스템 구성은 도 1에 나타내는 바와 같다.
본 실시의 형태에 따른 정보 처리 장치(100)의 하드웨어 구성예는 도 2에 나타내는 바와 같다.
본 실시의 형태에 따른 정보 처리 장치(100)의 기능 구성예는 도 3에 나타내는 바와 같다.
***동작의 설명***
도 7은, 본 실시의 형태에 따른 정보 처리 장치(100)의 동작예를 나타낸다.
도 7을 참조하여, 본 실시의 형태에 따른 정보 처리 장치(100)의 동작예를 설명한다.
본 실시의 형태에서는, 입력 처리부(101)는, 입력 장치(15)에 의해 프로그래머가 프로그램을 세이브한지 여부를 판정한다(단계 S201).
프로그램이 세이브되었을 경우(단계 S201에서 '예'), 도 4에 나타내는 단계 S102로부터 단계 S110에 나타내는 처리가 행해진다(단계 S202).
단계 S102 내지 단계 S110의 처리는, 실시의 형태 1에 나타낸 바와 같으므로 설명을 생략한다.
단계 S110이 행해져 병렬화 실행 시간이 산출된 후에, 표시 처리부(114)가 제약 조건이 성립하고 있는지 여부를 판정한다(단계 S203).
예를 들면, 도 6의 기본 정보에 나타나는 제약 조건이 이용되는 경우는, 표시 처리부(114)는, 병렬화 실행 시간이, 제약 조건에 나타나는 스캔 타임의 요구치(「스캔 타임은 1.6[μs] 이하」)를 만족하는지 여부를 판정한다. 또, 표시 처리부(114)는, 프로그램의 총 단계수가, 제약 조건에 나타나는 ROM 사용량의 요구치(「ROM 사용량은 1000[단계] 이하」)를 만족하는지 여부를 판정한다. 또, 표시 처리부(114)는 공통 디바이스의 개수가, 제약 조건에 나타나는 공통 디바이스의 요구치(「공통 디바이스는 10[개] 이하」)를 만족하는지 여부를 판정한다.
모든 제약 조건이 성립하는 경우(단계 S203에서 '예')는, 표시 처리부(114)는 통상의 병렬화 정보를 생성한다(단계 S204).
한편, 1개라도 제약 조건이 성립되지 않는 경우(단계 S203에서 '아니오')는, 표시 처리부(114)는 제약 조건이 불성립된 항목을 강조 표시하는 병렬화 정보를 생성한다(단계 S205).
예를 들면, 도 6의 「스캔 타임은 1.6[μs] 이하」가 성립되지 않는 경우는, 당해 제약 조건에 대응하는 항목인 「병렬화 실행 시간」을 적색 글자로 표시하는 병렬화 정보를 생성한다.
또한, 도 6의 「스캔 타임은 1.6[μs] 이하」가 성립되지 않는 경우는, 표시 처리부(114)는, 예를 들면, 불성립의 원인으로 되는 블록을 병렬화 실행 스케줄(간트 차트) 상에서 청색 글자로 표시하는 병렬화 정보를 생성해도 좋다.
또, 예를 들면, 도 6의 「ROM 사용량은 1000[단계] 이하」가 성립하지 않는 경우는, 표시 처리부(114)는, 당해 제약 조건에 대응하는 항목인 「프로그램의 총 단계수」를 적색 글자로 표시하는 병렬화 정보를 생성한다.
또, 예를 들면, 도 6의 「공통 디바이스는 10[개] 이하」가 성립되지 않는 경우는, 표시 처리부(114)는, 당해 제약 조건에 대응하는 항목인 「공통 디바이스의 개수」를 적색 글자로 표시하는 병렬화 정보를 생성한다.
그 후, 표시 처리부(114)는, 단계 S204 또는 단계 S205에서 생성된 병렬화 정보를 표시 장치(160)에 출력한다(단계 S206).
또, 제약 조건이 성립되지 않는 경우는, 표시 처리부(114)는, 불성립의 원인으로 되는 블록의 프로그램 코드를 청색으로 표시하도록 해도 좋다.
***실시의 형태의 효과의 설명***
본 실시의 형태에 의하면, 제약 조건이 불성립된 항목을 강조 표시하는 병렬화 정보가 표시되기 때문에, 개선해야 할 항목을 프로그래머에 인식시킬 수가 있고, 프로그램의 디버그에 필요한 시간을 단축할 수 있다.
또, 상기에서는, 프로그램의 저장의 검지(도 7의 단계 S201)를 처리의 트리거로 하는 예를 설명했지만, 실시의 형태 1과 마찬가지로 확인 버튼의 눌림의 검지(도 4의 단계 S101)를 처리의 트리거로 해도 좋다.
또한, 프로그래머가 프로그램을 1행 작성할 때마다 도 7의 단계 S202 이후의 처리를 개시시키도록 해도 좋다.
또, 일정 시간(예를 들면, 1분)마다, 도 7의 단계 S202 이후의 처리를 개시시키도록 해도 좋다. 또, 프로그래머가 특정의 프로그램 부품(접점 명령 등)을 프로그램에 삽입한 것을 트리거로 하여 도 7의 단계 S202 이후의 처리를 개시시키도록 해도 좋다.
(실시의 형태 3)
본 실시의 형태에서는, 주로 실시의 형태 1 및 실시의 형태 2와의 차이를 설명한다.
또, 이하에서 설명하고 있지 않는 사항은, 실시의 형태 1 또는 실시의 형태 2와 마찬가지이다.
***구성의 설명***
본 실시의 형태에 따른 시스템 구성은 도 1에 나타내는 바와 같다.
본 실시의 형태에 따른 정보 처리 장치(100)의 하드웨어 구성예는 도 2에 나타내는 바와 같다.
본 실시의 형태에 따른 정보 처리 장치(100)의 기능 구성예는 도 3에 나타내는 바와 같다.
***동작의 설명***
도 8은, 본 실시의 형태에 따른 정보 처리 장치(100)의 동작예를 나타낸다.
도 8을 참조하여, 본 실시의 형태에 따른 정보 처리 장치(100)의 동작예를 설명한다.
입력 처리부(101)는, 표시 장치(16) 상의 확인 버튼이 표시되는 영역을 감시하고, 입력 장치(15)를 거쳐 확인 버튼이 눌렸는지 여부(마우스의 클릭 등이 있었는지 여부)를 판정한다(단계 S301).
확인 버튼이 눌린 경우(단계 S301에서 '예')는, 도 4에 나타내는 단계 S102부터 단계 S109에 나타내는 처리가 행해진다(단계 S302).
단계 S102부터 단계 S109의 처리는, 실시의 형태 1에 나타낸 바와 같으므로 설명을 생략한다.
다음에, 스케줄 생성부(112)가, 단계 S109에서 얻어진 전정 후의 태스크 그래프에 근거하여, CPU 코어수마다 병렬화 실행 스케줄(간트 차트)을 생성한다(단계 S303).
예를 들면, 프로그래머가 듀얼 코어, 트리플 코어 및 쿼드 코어의 채용을 검토하고 있는 경우는, 스케줄 생성부(112)는 프로그램을 듀얼 코어로 실행시키는 경우의 병렬화 실행 스케줄(간트 차트), 프로그램을 트리플 코어로 실행시키는 경우의 병렬화 실행 스케줄(간트 차트), 및 프로그램을 쿼드 코어로 실행시키는 경우의 병렬화 실행 스케줄(간트 차트)을 생성한다.
다음에, 표시 처리부(114)가, 단계 S306에서 생성된 스케줄마다 병렬화 실행 시간을 산출한다(단계 S304).
다음에, 표시 처리부(114)가, 조합마다의 병렬화 정보를 생성한다(단계 S305).
조합이란, 제약 조건과 CPU 코어수의 조합이다.
본 실시의 형태에서는, 프로그래머는, 제약 조건의 변화를 복수 패턴 설정한다. 예를 들면, 프로그래머는, 패턴 1으로서 스캔 타임, ROM 사용량 및 공통 디바이스의 각각의 요구치가 관대한 패턴을 설정한다. 또, 프로그래머는, 패턴 2로서 스캔 타임의 요구치가 엄격하지만, ROM 사용량 및 공통 디바이스의 각각의 요구치는 관대한 패턴을 설정한다. 또, 프로그래머는, 패턴 3으로서 스캔 타임, ROM 사용량 및 공통 디바이스의 각각의 요구치가 엄격한 패턴을 설정한다.
표시 처리부(114)는, 예를 들면, 도 9에 나타내는 바와 같이, 듀얼 코어와 패턴 1, 패턴 2 및 패턴 3의 각각의 조합, 트리플 코어와 패턴 1, 패턴 2 및 패턴 3의 각각의 조합, 쿼드 코어와 패턴 1, 패턴 2 및 패턴 3의 각각의 조합으로, 병렬화 정보를 생성한다.
도 9에 나타내는 병렬화 정보에서는, 코어수와 패턴의 조합마다 탭이 마련되어 있다. 프로그래머는, 소망하는 조합의 탭에 대해서 마우스 클릭을 행하는 것에 의해, 소망하는 조합에 있어서의 병렬화 실행 스케줄(간트 차트), 제약 조건의 성공 여부 상황 등을 참조할 수 있다. 도 9의 예에서는, 듀얼 코어와 패턴 1의 조합의 병렬화 정보가 표시되어 있다.
또, 코어수가 공통되고 있으면, 병렬화 실행 스케줄(간트 차트)은 동일하다. 즉, 듀얼 코어와 패턴 1의 조합에 대응하는 병렬화 정보, 듀얼 코어와 패턴 2의 조합에 대응하는 병렬화 정보, 및 듀얼 코어와 패턴 3의 조합에 대응하는 병렬화 정보의 각각에서 나타나는 병렬화 실행 스케줄(간트 차트)은 동일하다.
한편, 기본 정보의 기술은 패턴마다 다를 가능성이 있다. 표시 처리부(114)는, 패턴마다 제약 조건이 성립하는지 여부를 판정한다. 그리고, 표시 처리부(114)는, 패턴마다 제약 조건이 성립됐는지 여부가 기본 정보에 나타나는 병렬화 정보를 생성한다.
예를 들면, 듀얼 코어와 패턴 2의 조합에서는, 스캔 타임의 요구치가 만족되지 않고, ROM 사용량 및 공통 디바이스의 각각의 요구치는 만족되고 있는 것으로 한다. 이 경우는, 당해 제약 조건에 대응하는 항목인 「병렬화 실행 시간」이 예를 들면 적색으로 표시된다. 또, 예를 들면, 듀얼 코어와 패턴 3의 조합에서는, 스캔 타임, ROM 사용량 및 공통 디바이스의 각각의 요구치가 만족되지 않는 것으로 한다. 이 경우는, 스캔 타임, ROM 사용량 및 공통 디바이스의 각각에 대응하는 항목이 예를 들면 적색으로 표시된다.
또, 도 9에 나타내는 병렬화 정보에서는, 개선율이 나타난다. 표시 처리부(114)는, 병렬화하지 않고 프로그램을 실행할 때(싱글 코어로 프로그램을 실행할 때)의 프로그램의 실행에 필요한 시간(비병렬화 실행 시간)을 산출한다. 그리고, 표시 처리부(114)는, 병렬화 실행 스케줄로 프로그램을 실행할 때의 프로그램의 실행에 필요한 시간(병렬화 실행 시간)과 비병렬화 실행 시간의 차이 상황으로서 개선율을 산출한다. 즉, 표시 처리부(114)는, 「{(비병렬화 실행 시간/병렬화 실행 시간)-1}*100」을 계산하여 개선율을 얻는다. 표시 처리부(114)는, 듀얼 코어, 트리플 코어 및 쿼드 코어의 각각에 대해서 개선율을 산출하고, 각각의 병렬화 정보에 개선율을 표시한다.
마지막으로, 표시 처리부(114)는 병렬화 정보를 표시 장치(16)에 출력한다(단계 S309).
***실시의 형태의 효과의 설명***
본 실시의 형태에서는, CPU 코어수와 제약 조건의 패턴의 조합마다 병렬화 정보를 표시한다. 이 때문에, 본 실시의 형태에 의하면, 프로그래머는 제약 조건을 만족시키는 병렬화수를 조기에 파악할 수 있다.
이상, 본 발명의 실시의 형태에 대해 설명했지만, 이러한 실시의 형태 중, 2개 이상을 조합하여 실시해도 상관없다.
또는, 이러한 실시의 형태 중, 1개를 부분적으로 실시해도 상관없다.
또는, 이러한 실시의 형태 중, 2개 이상을 부분적으로 조합하여 실시해도 상관없다.
또, 본 발명은, 이러한 실시의 형태에 한정되는 것은 아니고, 필요에 따라서 여러 가지의 변경이 가능하다.
***하드웨어 구성의 설명***
마지막으로, 정보 처리 장치(100)의 하드웨어 구성의 보충 설명을 행한다.
도 3의 스토리지(13)에는, 입력 처리부(101), 행 프로그램 취득부(104), 블록 생성부(106), 태스크 그래프 생성부(108), 태스크 그래프 전정부(109), 스케줄 생성부(112) 및 표시 처리부(114)의 기능을 실현하는 프로그램의 외, OS(Operating System)도 기억되어 있다.
그리고, OS의 적어도 일부가 프로세서(11)에 의해 실행된다.
프로세서(11)는 OS의 적어도 일부를 실행하면서, 입력 처리부(101), 행 프로그램 취득부(104), 블록 생성부(106), 태스크 그래프 생성부(108), 태스크 그래프 전정부(109), 스케줄 생성부(112) 및 표시 처리부(114)의 기능을 실현하는 프로그램을 실행한다.
프로세서(11)가 OS를 실행함으로써, 태스크 관리, 메모리 관리, 파일 관리, 통신 제어 등이 행해진다.
또, 입력 처리부(101), 행 프로그램 취득부(104), 블록 생성부(106), 태스크 그래프 생성부(108), 태스크 그래프 전정부(109), 스케줄 생성부(112) 및 표시 처리부(114)의 처리의 결과를 나타내는 정보, 데이터, 신호치 및 변수치 중 적어도 하나가, 메모리(12), 스토리지(13), 프로세서(11) 내의 레지스터 및 캐시 기억 장치 중 적어도 하나에 기억된다.
또, 입력 처리부(101), 행 프로그램 취득부(104), 블록 생성부(106), 태스크 그래프 생성부(108), 태스크 그래프 전정부(109), 스케줄 생성부(112) 및 표시 처리부(114)의 기능을 실현하는 프로그램은, 자기 디스크, 플렉서블 디스크, 광디스크, 콤팩트 디스크, 블루레이(등록상표) 디스크, DVD 등의 운반 가능 기록 매체에 저장되어 있어도 좋다. 그리고, 입력 처리부(101), 행 프로그램 취득부(104), 블록 생성부(106), 태스크 그래프 생성부(108), 태스크 그래프 전정부(109), 스케줄 생성부(112) 및 표시 처리부(114)의 기능을 실현하는 프로그램이 저장된 운반 가능 기록 매체를 상업적으로 유통시켜도 좋다.
또, 입력 처리부(101), 행 프로그램 취득부(104), 블록 생성부(106), 태스크 그래프 생성부(108), 태스크 그래프 전정부(109), 스케줄 생성부(112) 및 표시 처리부(114)의 「부」를, 「회로」 또는 「공정」 또는 「순서」 또는 「처리」로 바꿔읽어도 좋다.
또, 정보 처리 장치(100)는, 처리 회로에 의해 실현되어도 좋다. 처리 회로는, 예를 들면, 논리 IC(Integrated Circuit), GA(Gate Array), ASIC(Application Specific Integrated Circuit), FPGA(Field-Programmable Gate Array)이다.
이 경우는, 입력 처리부(101), 행 프로그램 취득부(104), 블록 생성부(106), 태스크 그래프 생성부(108), 태스크 그래프 전정부(109), 스케줄 생성부(112) 및 표시 처리부(114)는, 각각 처리 회로의 일부로서 실현된다.
또, 본 명세서에서는, 프로세서와 처리 회로의 상위 개념을, 「프로세싱 회로」라고 한다.
즉, 프로세서와 처리 회로란, 각각 「프로세싱 회로」의 구체적인 예이다.
11 : 프로세서 12 : 메모리
13 : 스토리지 14 : 통신 장치
15 : 입력 장치 16 : 표시 장치
100 : 정보 처리 장치 101 : 입력 처리부
102 : 프로그램 데이터베이스 103 : 명령 데이터베이스
104 : 행 프로그램 취득부 105 : 가중치 부여 프로그램 데이터베이스
106 : 블록 생성부 107 : 의존 관계 데이터베이스
108 : 태스크 그래프 생성부 109 : 태스크 그래프 전정부
110 : 태스크 그래프 데이터베이스
111 : 제약 조건 데이터베이스 112 : 스케줄 생성부
113 : 스케줄 데이터베이스 114 : 표시 처리부
200 : 제어 기기 300 : 공장 라인
301 : 설비(1) 302 : 설비(2)
303 : 설비(3) 304 : 설비(4)
305 : 설비(5) 401 : 네트워크
402 : 네트워크

Claims (14)

  1. 복수의 블록으로 구성되는 프로그램을 실행할 때에 가능한 처리의 병렬화수를 병렬화 가능수로서 판정하는 판정부와,
    상기 프로그램을 실행할 때의 상기 프로그램의 실행 스케줄을 병렬화 실행 스케줄로서 생성하는 스케줄 생성부와,
    상기 병렬화 실행 스케줄로 상기 프로그램을 실행할 때의 상기 프로그램의 실행에 필요한 시간인 병렬화 실행 시간을 산출하는 산출부와,
    상기 병렬화 가능수와, 상기 병렬화 실행 스케줄과, 상기 병렬화 실행 시간과, 상기 복수의 블록 중 2 이상의 블록에서 공통으로 이용되고 있는 변수의 개수인 공통 변수 개수와, 상기 프로그램을 실행할 때의 메모리 사용량이 나타나는 병렬화 정보를 생성하고, 생성한 상기 병렬화 정보를 출력하는 정보 생성부를 갖는
    정보 처리 장치.
  2. 제 1 항에 있어서,
    상기 정보 처리 장치는,
    상기 프로그램을 구성하는 복수의 블록의 블록간의 의존 관계에 근거하여, 상기 복수의 블록의 태스크 그래프를 생성하는 태스크 그래프 생성부를 더 갖고,
    상기 판정부는,
    상기 태스크 그래프를 해석하여 상기 병렬화 가능수를 판정하는
    정보 처리 장치.
  3. 제 2 항에 있어서,
    상기 판정부는,
    상기 태스크 그래프의 전정(debranching)을 행하고, 전정 후의 태스크 그래프에 있어서의 블록간의 접속수 중 최대의 접속수에 따라 상기 병렬화 가능수를 판정하는
    정보 처리 장치.
  4. 제 3 항에 있어서,
    상기 정보 생성부는,
    상기 전정 후의 태스크 그래프가 나타나는 병렬화 정보를 생성하는
    정보 처리 장치.
  5. 제 1 항에 있어서,
    상기 정보 생성부는,
    상기 병렬화 실행 시간의 요구치가 나타나는 병렬화 정보를 생성하는
    정보 처리 장치.
  6. 제 5 항에 있어서,
    상기 정보 생성부는,
    상기 병렬화 실행 시간이 상기 요구치를 만족하고 있는지 여부가 나타나는 병렬화 정보를 생성하는
    정보 처리 장치.
  7. 제 1 항에 있어서,
    상기 정보 생성부는,
    상기 공통 변수 개수가 상기 공통 변수 개수의 요구치를 만족하고 있는지 여부, 및 상기 메모리 사용량이 상기 메모리 사용량의 요구치를 만족하고 있는지 여부가 나타나는 병렬화 정보를 생성하는
    정보 처리 장치.
  8. 제 1 항에 있어서,
    상기 스케줄 생성부는,
    상기 프로그램을 실행하는 CPU(Central Processing Unit) 코어의 수인 CPU 코어수마다, 상기 병렬화 실행 스케줄을 생성하고,
    상기 산출부는,
    상기 CPU 코어수마다, 대응하는 병렬화 실행 스케줄로 상기 프로그램을 실행할 때의 병렬화 실행 시간을 산출하고,
    상기 정보 생성부는,
    상기 CPU 코어수마다, 병렬화 실행 스케줄과 병렬화 실행 시간이 나타나는 병렬화 정보를 생성하는
    정보 처리 장치.
  9. 제 1 항에 있어서,
    상기 정보 생성부는,
    상기 병렬화 실행 시간의 복수의 요구치가 나타나고, 상기 병렬화 실행 시간이 각 요구치를 만족하고 있는지 여부가 나타나는 병렬화 정보를 생성하는
    정보 처리 장치.
  10. 제 1 항에 있어서,
    상기 정보 생성부는,
    상기 공통 변수 개수의 복수의 요구치가 나타나고, 상기 프로그램을 실행할 때의 메모리 사용량의 복수의 요구치가 나타나고, 상기 공통 변수 개수가 각 요구치를 만족하고 있는지 여부, 및 상기 메모리 사용량이 각 요구치를 만족하고 있는지 여부가 나타나는 병렬화 정보를 생성하는
    정보 처리 장치.
  11. 제 1 항에 있어서,
    상기 산출부는,
    처리를 병렬화하지 않고 상기 프로그램을 실행할 때의 상기 프로그램의 실행에 필요한 시간인 비병렬화 실행 시간을 산출하고,
    상기 정보 생성부는,
    상기 병렬화 실행 시간과 상기 비병렬화 실행 시간의 차이 상황이 나타나는 병렬화 정보를 생성하는
    정보 처리 장치.
  12. 컴퓨터가, 복수의 블록으로 구성되는 프로그램을 실행할 때에 가능한 처리의 병렬화수를 병렬화 가능수로서 판정하고,
    상기 컴퓨터가, 상기 프로그램을 실행할 때의 상기 프로그램의 실행 스케줄을 병렬화 실행 스케줄로서 생성하고,
    상기 컴퓨터가, 상기 병렬화 실행 스케줄로 상기 프로그램을 실행할 때의 상기 프로그램의 실행에 필요한 시간인 병렬화 실행 시간을 산출하고,
    상기 컴퓨터가, 상기 병렬화 가능수와, 상기 병렬화 실행 스케줄과, 상기 병렬화 실행 시간과, 상기 복수의 블록 중 2 이상의 블록에서 공통으로 이용되고 있는 변수의 개수인 공통 변수 개수와, 상기 프로그램을 실행할 때의 메모리 사용량이 나타나는 병렬화 정보를 생성하고, 생성한 상기 병렬화 정보를 출력하는
    정보 처리 방법.
  13. 복수의 블록으로 구성되는 프로그램을 실행할 때에 가능한 처리의 병렬화수를 병렬화 가능수로서 판정하는 판정 처리와,
    상기 프로그램을 실행할 때의 상기 프로그램의 실행 스케줄을 병렬화 실행 스케줄로서 생성하는 스케줄 생성 처리와,
    상기 병렬화 실행 스케줄로 상기 프로그램을 실행할 때의 상기 프로그램의 실행에 필요한 시간인 병렬화 실행 시간을 산출하는 산출 처리와,
    상기 병렬화 가능수와, 상기 병렬화 실행 스케줄과, 상기 병렬화 실행 시간과, 상기 복수의 블록 중 2 이상의 블록에서 공통으로 이용되고 있는 변수의 개수인 공통 변수 개수와, 상기 프로그램을 실행할 때의 메모리 사용량이 나타나는 병렬화 정보를 생성하고, 생성한 상기 병렬화 정보를 출력하는 정보 생성 처리를 컴퓨터로 하여금 실행하게 하는
    기록 매체에 저장된 정보 처리 프로그램.
  14. 삭제
KR1020217025783A 2019-02-26 2019-02-26 정보 처리 장치, 정보 처리 방법 및 기록 매체에 저장된 정보 처리 프로그램 KR102329368B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/007312 WO2020174581A1 (ja) 2019-02-26 2019-02-26 情報処理装置、情報処理方法及び情報処理プログラム

Publications (2)

Publication Number Publication Date
KR20210106005A KR20210106005A (ko) 2021-08-27
KR102329368B1 true KR102329368B1 (ko) 2021-11-19

Family

ID=72239160

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217025783A KR102329368B1 (ko) 2019-02-26 2019-02-26 정보 처리 장치, 정보 처리 방법 및 기록 매체에 저장된 정보 처리 프로그램

Country Status (7)

Country Link
US (1) US20210333998A1 (ko)
JP (1) JP6890738B2 (ko)
KR (1) KR102329368B1 (ko)
CN (1) CN113439256A (ko)
DE (1) DE112019006739B4 (ko)
TW (1) TW202032369A (ko)
WO (1) WO2020174581A1 (ko)

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05257709A (ja) * 1992-03-16 1993-10-08 Hitachi Ltd 並列化判別方法およびそれを用いた並列化支援方法
JP3664473B2 (ja) 2000-10-04 2005-06-29 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムの最適化方法及びこれを用いたコンパイラ
US7281192B2 (en) 2004-04-05 2007-10-09 Broadcom Corporation LDPC (Low Density Parity Check) coded signal decoding using parallel and simultaneous bit node and check node processing
JP2008500627A (ja) * 2004-05-27 2008-01-10 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 信号処理装置
CN1300699C (zh) * 2004-09-23 2007-02-14 上海交通大学 并行程序可视化调试方法
JP4082706B2 (ja) 2005-04-12 2008-04-30 学校法人早稲田大学 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
JP3938387B2 (ja) * 2005-08-10 2007-06-27 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイラ、制御方法、およびコンパイラ・プログラム
JP2009129179A (ja) * 2007-11-22 2009-06-11 Toshiba Corp プログラム並列化支援装置およびプログラム並列化支援方法
JP5209059B2 (ja) * 2008-10-24 2013-06-12 インターナショナル・ビジネス・マシーンズ・コーポレーション ソース・コード処理方法、システム、及びプログラム
US8881124B2 (en) * 2010-12-21 2014-11-04 Panasonic Corporation Compiler device, compiler program, and loop parallelization method
US9830164B2 (en) * 2013-01-29 2017-11-28 Advanced Micro Devices, Inc. Hardware and software solutions to divergent branches in a parallel pipeline
US20140282572A1 (en) * 2013-03-14 2014-09-18 Samsung Electronics Co., Ltd. Task scheduling with precedence relationships in multicore systems
JP6212823B2 (ja) * 2013-11-29 2017-10-18 三菱日立パワーシステムズ株式会社 並列化支援装置、実行装置、制御システム、並列化支援方法及びプログラム
JP6303626B2 (ja) * 2014-03-07 2018-04-04 富士通株式会社 処理プログラム、処理装置および処理方法
JP6488739B2 (ja) * 2015-02-05 2019-03-27 株式会社デンソー 並列化コンパイル方法、及び、並列化コンパイラ
US10374970B2 (en) * 2017-02-01 2019-08-06 Microsoft Technology Licensing, Llc Deploying a cloud service with capacity reservation followed by activation
US10719902B2 (en) * 2017-04-17 2020-07-21 Intel Corporation Thread serialization, distributed parallel programming, and runtime extensions of parallel computing platform
US10325022B1 (en) * 2018-03-13 2019-06-18 Appian Corporation Automated expression parallelization
US10768904B2 (en) * 2018-10-26 2020-09-08 Fuji Xerox Co., Ltd. System and method for a computational notebook interface
US20200184366A1 (en) * 2018-12-06 2020-06-11 Fujitsu Limited Scheduling task graph operations

Also Published As

Publication number Publication date
DE112019006739B4 (de) 2023-04-06
DE112019006739T5 (de) 2021-11-04
CN113439256A (zh) 2021-09-24
JP6890738B2 (ja) 2021-06-18
WO2020174581A1 (ja) 2020-09-03
JPWO2020174581A1 (ja) 2021-09-13
KR20210106005A (ko) 2021-08-27
TW202032369A (zh) 2020-09-01
US20210333998A1 (en) 2021-10-28

Similar Documents

Publication Publication Date Title
US8612372B2 (en) Detection rule-generating facility
US20110083125A1 (en) Parallelization processing method, system and program
KR101522444B1 (ko) 소스 코드 처리 방법, 시스템, 및 프로그램
US9747190B2 (en) Analysis system, analysis method, and computer program product
CN111488211A (zh) 基于深度学习框架的任务处理方法、装置、设备及介质
US8898649B2 (en) Application program analysis method, analysis system and recording medium for identifying a contributing factor for an invalid operation of an application program
US20130232192A1 (en) Operations task management system and method
US8584080B2 (en) Modeling and generating computer software product line variants
Rosiak et al. Custom-tailored clone detection for IEC 61131-3 programming languages
US11106563B2 (en) Log analysis device, log analysis method, and recording medium storing program
KR102329368B1 (ko) 정보 처리 장치, 정보 처리 방법 및 기록 매체에 저장된 정보 처리 프로그램
US10255119B2 (en) Parallelization method, parallelization tool and vehicle-mounted device
US9396239B2 (en) Compiling method, storage medium and compiling apparatus
JP6665576B2 (ja) 支援装置、支援方法及びプログラム
US10909021B2 (en) Assistance device, design assistance method, and recording medium storing design assistance program
GB2476544A (en) Relational modeling for performance analysis of multi-core processors
EP3940483A1 (en) Graph display device, graph display method, and graph display program
US20090271766A1 (en) Methods, systems and computer program products for improving program performance by anti-refactoring
US9003383B2 (en) Analytic engine to parallelize serial code
US20190384687A1 (en) Information processing device, information processing method, and computer readable medium
US20240143300A1 (en) Program analyzing apparatus, program analyzing method, and trace processing addition apparatus
CN111566625A (zh) 测试用例生成装置、测试用例生成方法和测试用例生成程序
EP3940481A1 (en) Graph display device, graph display method, and graph display program
US11921496B2 (en) Information processing apparatus, information processing method and computer readable medium
US20230237097A1 (en) Information processing device, information processing method, and recording medium

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