KR100861631B1 - 멀티프로세서 시스템 및 멀티그레인 병렬화 컴파일러를 기록한 컴퓨터 판독 가능 매체 - Google Patents

멀티프로세서 시스템 및 멀티그레인 병렬화 컴파일러를 기록한 컴퓨터 판독 가능 매체 Download PDF

Info

Publication number
KR100861631B1
KR100861631B1 KR20077003527A KR20077003527A KR100861631B1 KR 100861631 B1 KR100861631 B1 KR 100861631B1 KR 20077003527 A KR20077003527 A KR 20077003527A KR 20077003527 A KR20077003527 A KR 20077003527A KR 100861631 B1 KR100861631 B1 KR 100861631B1
Authority
KR
South Korea
Prior art keywords
processor unit
unit
control
task
processing
Prior art date
Application number
KR20077003527A
Other languages
English (en)
Other versions
KR20070061795A (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 KR20070061795A publication Critical patent/KR20070061795A/ko
Application granted granted Critical
Publication of KR100861631B1 publication Critical patent/KR100861631B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • 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
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • 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/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • 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/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

멀티프로세서 시스템에서, 컴파일러에 의해 처리 대상으로 되는 입력 프로그램으로부터 자동적으로 병렬성을 갖는 태스크를 추출하고, 각 프로세서 유닛의 특성에 맞추어 해당 태스크를 배치함으로써 해당 프로세서 유닛을 효율적으로 움직이게 하는 스케줄링을 행하고, 나아가서는 해당 프로세서 유닛의 처리량을 어림함으로써 동작 주파수나 전원 전압을 최적화하는 코드를 생성한다.
컴파일러, 입력 프로그램, 태스크, 프로세서 유닛, 스케줄링, FV 제어 레지스터

Description

멀티프로세서 시스템 및 멀티그레인 병렬화 컴파일러를 기록한 컴퓨터 판독 가능 매체{MULTIPROCESSOR SYSTEM AND COMPUTER READABLE MEDIUM RECORDING MULTIGRAIN PARALLELIZING COMPILER}
본 발명은, 복수의 프로세서 유닛으로 구성되는 멀티프로세서 시스템에서, 해당 복수 프로세서 유닛을 효율적으로 동작시키는 것을 가능하게 하는 멀티프로세서 시스템의 하드웨어 구성 및 프로그램을 생성하는 컴파일러에 관한 것이다.
반도체 제조 기술의 진보에 의한 소자의 미세화에 의해, 방대한 수의 트랜지스터를 집적하는 것이 가능하게 되었다. 그것과 동시에 프로세서의 고주파수화도 진행되지만, 동작 시 전력의 증가, 또한 리크 전류에 기인하는 대기 시 전력의 증가에 의해, 종래의 프로세서가 걸어 온 동작 주파수의 향상과 논리 방식의 개선에 의해 달성해 온 성능 향상에 한계가 보이기 시작하고 있다.
따라서 현재, 성능 개선과 저전력화를 실현하는 수단으로서, 종래의 CPU, DSP 등의 프로세서 유닛(이하, PU라고 함)을 복수개 온 칩으로 탑재하고, 처리를 병렬로 행함으로써, 동작 주파수를 향상시키지 않아도, 높은 연산 성능을 얻는 것이 가능한, 멀티프로세서 시스템(싱글 칩 멀티프로세서 시스템)이 유망하게 되고 있다. 장래, 미세화가 더 진행됨으로써, PU를 온 칩으로 100개~1000개 적재하는 것도 가능하게 될 것으로 예측된다.
이러한 멀티프로세서 시스템에서, PU의 수에 비례한 연산 성능을 얻기 위해서는, 탑재된 PU를 동시에 가동시켜 프로그램을 처리할 필요가 있다. 그러나, 통상의 입력 프로그램은 처리가 시계열로 축차적으로 기술되어 있기 때문에, 복수의 PU를 탑재함에도 불구하고, 해당 복수 PU에 비례하여 기대되는 연산 성능을 얻을 수 없다.
이 문제점을 해결하기 위한 하나의 방법으로서, 프로그램 개발자가 스스로 프로그램의 병렬성을 고려하여, 해당 프로그램을 실행시키는 멀티프로세서 시스템의 구성에 기초하여, 해당 프로그램을 복수의 PU에서 실행시키기 위한 병렬화 코드를 부가할 필요가 있다. 그러나, 본 방법은 PU가 수개인 시스템에서는 유효하지만, 장래의 수십~수천 등의 수의 PU가 적재된 시스템에서는, 또한 특히 PU가 이종으로 구성되는 경우에는, 개발 시간, 실효 성능의 점에서 실용적이지 않다.
따라서, 구성 및 연산 성능이 동종의 복수 PU로 구성된 멀티프로세서 시스템에서, 입력 프로그램을 해석하고, 해당 프로그램 중으로부터 병렬로 동작 가능한 부분을 추출하고, 해당 부분을 복수의 PU에 할당하여 동시에 실행하는 것을 가능하게 하는, 자동 병렬화 컴파일러의 연구가 이미 행하여지고 있다. 예를 들면, 입력 소스 프로그램을 해석하고, 해당 프로그램을 서브 루틴이나 루프 등 여러 가지의 입도의 블록(태스크)으로 분할하고, 해당 복수 태스크간의 병렬성을 해석함과 함께, 태스크와 그들이 액세스하는 데이터를 캐쉬 혹은 로컬 메모리에 적합한 사이즈로 분할하고, 그들을 각 PU에 대하여 해당 태스크를 최적 할당함으로써, 멀티프로세서 시스템을 효율적으로 움직이게 하는 목적 프로그램을 생성하는 컴파일러 방식 이, 일본 특개 2004-252728호에 개시되어 있다. 또한 멀티그레인 병렬 처리의 기능을 서포트하는 칩 멀티프로세서의 아키텍처로서는, 일본 특개 2001-175619호에 개시되어 있다.
또한, 전력 소비의 저감 및 열 배출의 저감을 위해, 멀티프로세서 시스템에서 각 PU의 저전력화가 필수로 되지만, 개별의 프로세서에 관하여 저전력화하는 방법에 관하여, 여러 가지 제안이 행하여지고 있다. 예를 들면, 리얼타임 처리 제약 내에서 프로세서의 동작 클럭을 저감시키고, 그 클럭 주파수에 따른 전압 프로세서에 공급한다고 하는 주파수·전압을 동적으로 제어함으로써 저전력화를 달성하는 방법이, 일본 특허 제3138737호, 일본 특개 2004-234126호에서 개시되어 있다.
또한, 화상 처리 등 미리 처리의 수순이 판명되어 있는 어플리케이션에서, 각 처리의 특성에 맞추어 CPU나 DSP 등의 종류가 서로 다른 복수의 프로세서를 조합하고, 해당 프로세서 상에서의 처리 시간이나 소비 전력 정보를 미리 측정하여 제공해 둠으로써, 해당 정보에 의해 동적으로 일련의 처리를 해당 각 프로세서에 할당하는 방법이, 일본 특개 2004-252900호에 개시되어 있다.
<발명의 개시>
현재, 자동차의 네비게이션 시스템, 휴대 전화, 디지털 텔레비전 등과 같은, 화상, 음성, 데이터베이스 정보 등 다양한 데이터를 동시에 취급하는 신 어플리케이션이 나오는 가운데, 다양한 종류의 입력 데이터를, 해당 데이터 각각에 최적의 방법으로 동시에 처리를 하기 위해, 프로세서는 복수 종류의 PU를 탑재하게 된다고 생각된다. 종래의 멀티프로세서 시스템에서는, 상기 일본 특개 2004-252728호에서 개시되어 있는 바와 같이 동일한 구성의 PU를 복수 탑재한 호모지니어스한 프로세서 시스템이었다.
그러나 이와 같이, 다양한 어플리케이션이 동시에 다종의 PU 상에서 처리되는 장래의 헤테로지니어스 멀티프로세서 시스템에서, 탑재하는 PU의 종류와 수에 비례하여 처리 성능을 얻기 위해서는, PU의 종류를 고려한 프로그램의 병렬화와 배치가 필수로 된다고 하는 문제가 있다.
또한 종래, 복수의 PU 상에서 프로그램을 효율적으로 실행하기 위해서는, 소규모의 프로그램이나 처리 시퀀스를 항상 고정적으로 실행할 수 있는 경우, 스케줄링을 행하기 위한 실행 시간 등의 스케줄 정보를 얻기 위해, 한번 프로그램을 해당 시스템 상에서 실행하여 처리 시간 등을 측정하는 것이 필요로 되고, 해당 측정값에 기초하여 개발자가 미리 해당 스케줄 정보를 수동으로 생성할 필요가 있어, 많은 수고와 시간이 필요로 된다.
이 경우, 사전에 처리의 내용이나 시퀀스가 불분명한 일반의 프로그램의 경우, 특히 규모가 큰 프로그램의 경우에는, 해당 정보를 사전에 수동으로 생성하는 것이 곤란하게 된다. 또한 PU의 종류나 수가 증가한 경우도 동일하게, 해당 정보를 수동으로 생성하는 것이 곤란하게 된다.
또한, 다수의 PU가 탑재되는 시스템에서는, 프로세서 전체의 소비 전력 증대가 걱정되기 때문에, 특히 휴대 전화 등의 모바일 기기나, 가정에서 사용되는 디지털 텔레비전 등에 적용하는 것을 고려하면, 종래의 OS에 의한 FV(동작 주파수와 구동 전압) 제어뿐만 아니라, 각 어플리케이션 프로그램 내에서의 소프트웨어에 의한 각 PU의 처리 상황에 의해 섬세하고 치밀한 전원 관리나 동작 주파수 제어가 필요로 된다.
특히, 처리 성능을 떨어뜨리지 않고 소비 전력을 저감할 필요가 있다. 또한, 실시간 처리를 요구하는 프로그램을 실행할 때에도, 시간 제약을 준수하면서, 전력을 저감할 필요가 있다.
따라서 본 발명은, 다양한 종류의 PU를 탑재하는 멀티프로세서 시스템에서, 처리 대상으로 되는 입력 프로그램으로부터 자동적으로 병렬성을 갖는 태스크를 추출하고, 각 PU의 특성에 맞추어 해당 태스크를 배치함으로써 해당 PU를 효율적으로 움직이게 하고, 또한 해당 PU의 처리량을 어림함으로써 동작 주파수나 전원 전압을 최적화하는 코드를 생성하여, 목적 프로그램에 부가하는 컴파일러 및 그 최적화를 가능하게 하는 멀티프로세서 시스템을 제공하는 것을 목적으로 한다.
따라서, 본 발명에 의해, 다종의 프로세서 유닛을 집적하는 멀티프로세서 시스템에서, 해당 프로세서 유닛을 효율적으로 동작시키는 프로그램의 분할 배치 및 제어 코드(실행 코드)를 생성하는 컴파일러에 의해, 해당 프로세서 시스템의 성능을 최대한 활용하면서, 처리 시간이 최소로 되며, 또한, 저전력으로 효율적으로 처리하는 것이 가능하게 된다. 또한, 나아가서는 소프트웨어 개발자가 프로세서 유닛의 구성을 의식하지 않고, 단시간에 효율 좋은 프로그램 작성이 가능하게 된다.
또한, 입력 프로그램을 컴파일할 때에, 프로세서 유닛의 구성에 기초하여 컴파일러가 미리 사전의 처리 시간을 어림하고, 컴파일 시에 처리 순서를 정적으로 결정할 수 있는 부분에 관해서는 사전에 처리 수순을 결정해 두고, 또한 실행 시로 되지 않으면 처리 순서를 결정할 수 없는 부분에 관해서는, 컴파일러가 실행 시간을 포함한 처리 정보에 기초한 스케줄링을 동적으로 행하는 프로그램을 생성함으로써, 일반의 프로그램을 다종의 프로세서 유닛으로 구성되는 멀티프로세서 시스템 상에서 효율적으로 처리할 수 있다.
또한, 입력 프로그램을 컴파일러가 해석하고, 사전에 처리 수순을 결정한 후에 처리 시간을 어림하여, 시간 제약에 대한 해당 처리 시간의 여유도를 보고 프로세서 유닛마다 전원 관리나 주파수 제어를 섬세하고 치밀하게 행함으로써, 전력을 크게 저감할 수 있다.
또한, 이종의 프로세서 유닛으로 구성되는 멀티프로세서에서, 실행 시간 최소로 되도록 입력 프로그램을 병렬화하여 스케줄링한 후, 각 프로세서 유닛간에서 처리 시간이 최소로 되도록, 프로세서 유닛마다 섬세하고 치밀하게 동작 주파수 제어 및 전원 관리를 행함으로써, 성능을 손상시키지 않고 전력을 최적화할 수 있다.
도 1은 본 발명의 일 실시예를 나타내는 전원·주파수 생성형의 멀티프로세서 시스템의 블록도.
도 2는 전원 전압 생성 회로의 블록도.
도 3은 강압 회로의 블록도.
도 4는 공급 전압 선택 회로의 블록도.
도 5는 클럭 생성 회로의 블록도.
도 6은 클럭 펄스 선택기의 블록도.
도 7은 멀티프로세서 시스템의 다른 예를 나타내고, 전원 전압 생성 회로와 클럭 생성 회로를 집약한 전원·주파수 선택형의 멀티프로세서 시스템의 블록도.
도 8은 멀티프로세서 시스템의 다른 예를 나타내고, 각 프로세서 유닛의 FV 제어 레지스터를 집약한 FV 제어 테이블을 갖는 멀티프로세서 시스템의 블록도.
도 9는 FV 제어에 의한 프로세서 유닛의 동작 모드를 도시하는 설명도.
도 10a는 로컬 메모리의 FV 제어를 나타내고, 로컬 메모리 LM을 복수 뱅크로 구성하여 뱅크마다 FV 제어를 행하는 예를 도시하는 설명도.
도 10b는 로컬 메모리의 FV 제어를 나타내고, 로컬 메모리 LM을 복수의 어드레스 공간마다 FV 제어를 행하는 예를 도시하는 설명도.
도 10c는 로컬 메모리의 FV 제어를 나타내고, 복수 뱅크에 설정한 어드레스 공간마다 FV 제어를 행하는 예를 도시하는 설명도.
도 11은 로컬 버스 LBUS를 크로스바로 구성한 경우의 전원 제어의 설명도.
도 12는 도 11에 도시한 로컬 버스 LBUS의 구성도.
도 13은 FV 제어에 의한 로컬 메모리 LM의 동작 모드를 도시하는 설명도.
도 14a는 FV 제어 레지스터 포맷을 나타내고, 로컬 메모리 LM을 4뱅크로 구성한 경우의 레지스터 포맷을 도시하는 설명도.
도 14b는 FV 제어 레지스터 포맷을 나타내고, 도 14a와 동일하게 레지스터의 설정예를 도시하는 설명도.
도 14c는 FV 제어 레지스터 포맷을 나타내고, 다른 레지스터 포맷을 나타내는 설명도로서, LM을 4뱅크 구성으로 하고, 제어 대상마다 어드레스를 할당한 FV 제어 레지스터 포맷의 예.
도 15는 도 8에 도시한 FV 설정 테이블의 포맷의 예를 도시하는 설명도.
도 16은 FV 제어 레지스터의 맵핑을 나타내는 멀티프로세서 시스템 전체의 메모리 맵을 도시하는 설명도.
도 17a는 FV 제어 레지스터 액세스의 예를 나타내고, CPU0이 DSP0의 FV 제어 레지스터에 액세스하는 예를 도시하는 설명도.
도 17b는 FV 제어 레지스터 액세스의 예를 나타내고, CPU0이 DSP0의 FV 제어 레지스터에 액세스하는 경우의 오브젝트 코드를 도시하는 설명도.
도 17c는 FV 제어 레지스터 액세스의 예를 나타내고, OS의 API를 이용하여 FV 제어 레지스터를 조작하는 경우의 오브젝트 코드를 도시하는 설명도.
도 18a는 태스크를 병렬 처리하는 경우의 FV 제어의 개념을 나타내고, 매크로 태스크의 병렬 실행 의존성을 도시하는 매크로 태스크 그래프.
도 18b는 태스크를 병렬 처리하는 경우의 FV 제어의 개념을 나타내고, FV 제어를 행하지 않는 경우(FULL 모드)의 간트 차트를 도시하는 도면.
도 18c는 태스크를 병렬 처리하는 경우의 FV 제어의 개념을 나타내고, CPU를 계속하여 동작시키는 경우의 FV 제어의 예를 도시하는 간트 차트.
도 18d는 태스크를 병렬 처리하는 경우의 FV 제어의 개념을 나타내고, CPU를 일시적으로 정지시키는 경우의 FV 제어의 예를 도시하는 간트 차트.
도 19a는 리얼타임 제약 시의 FV 제어를 나타내고, 통상 처리에 의한 리얼타임 처리의 간트 차트.
도 19b는 리얼타임 제약 시의 FV 제어를 나타내고, CPU를 계속하여 동작시키는 경우의 FV 제어의 예를 도시하는 간트 차트.
도 19c는 리얼타임 제약 시의 FV 제어를 나타내고, CPU를 일시적으로 정지시키는 경우의 FV 제어의 예를 도시하는 간트 차트.
도 20은 컴파일러의 처리를 도시하는 플로우차트.
도 21은 입력 프로그램의 일례를 도시하는 소스 코드.
도 22는 컴파일러가 생성한 태스크간의 의존 관계도.
도 23은 태스크·FV 제어 스케줄링 결과를 나타내는 시계열적인 차트.
도 24는 컴파일러가 생성하는 코드의 예를 나타내고, CPU0, DSP0, DRP0, BRP1용의 코드를 도시하는 설명도.
도 25는 동일하게 컴파일러가 생성하는 코드의 예를 나타내고, CPU1, DSP1, BMP0, BMP1용의 코드를 도시하는 설명도.
<발명을 실시하기 위한 최량의 형태>
이하, 본 발명의 일 실시예를 첨부 도면에 기초하여 설명한다.
<실시예의 전체 구성>
도 1은, 본 발명의 일 실시예인 멀티프로세서 시스템의 구성을 도시한다. 도 1에서, 멀티프로세서 시스템은, 복수의 이종의 프로세서 유닛(이하, PU라고 함)(10~17)과, 이들 공유 메모리(이하, SM이라고 함)(18)를 주체로 하여 구성된다. 해당 각 PU(10~17)는, 각각의 버스 인터페이스(BIF)(27)를 통하여, 로컬 버스(LBUS라고 함)(19)에 접속된다. 또한, SM(18)은 LBUS(19)에 접속되어, 각 PU(10~17)로 부터 액세스할 수 있다. 해당 각 PU(10~17)는, 해당 PU에 대하여 전원 전압 및 동작 클럭을 공급하는 전원 전압 생성 회로(DCGEN)(20), 및 클럭 생성 회로(CLKGEN)(21)가 접속되어 있다. 또한, 본 멀티프로세서 시스템은, 이종의 프로세서 유닛으로 구성된 헤테로지니어스 멀티프로세서 시스템의 예를 나타낸다.
본 실시예에서는 PU의 종류와 개수를, 2개의 범용 처리 프로세서(이하, CPU)(10, 11)와, 2개의 신호 처리 프로세서(이하, DSP)(14, 15)와, 2개의 동적 재구성 가능 프로세서(이하, DRP)(16, 17)와, 및 2개의 비트 연산 처리 프로세서(이하, BMP)(12, 13)로 구성한 예를 나타낸다. 또한, 상기 PU의 종류나 수는 본 실시예에서 나타낸 것뿐만 아니라, 여러 가지의 구성을 취할 수 있다. 또한, 종래의 동종의 PU만에 의한 구성(예를 들면 CPU만 4개로 구성)으로 해도 된다. 또한, 본 실시예에서는, DSP(0, 1)(14, 15)와, DRP(0, 1)(16, 17)와, BMP(0, 1)(12, 13)를 특정 용도 프로세서 유닛으로 하고, CPU(0, 1)(10, 11)를 범용 프로세서 유닛으로 한다.
또한, 동적 재구성 가능 프로세서(16, 17)는, 처리 회로를 동적으로 재구성하는 것이 가능한 프로세서를 가리키고, 한정된 코어 내에서 가상적으로 회로를 변경할 수 있다.
상기 각 PU(10~17)는, 각 PU에서 처리되는 프로그램이나 데이터를 일시적으로 보존하는 로컬 메모리(또는 캐쉬)(LM)(24) 및, 해당 PU에 대한 공급 전압(VL)이나 동작 주파수(FL)를 결정하는 주파수·전원 전압(FV) 제어, 및 PU간의 동기 제어를 행하기 위한 시스템 제어 레지스터(R)(25)를 구비한다. 또한, 로컬 메모 리(LM)(24)는, 다른 PU 및 해당 LM을 갖는 자 PU로부터 액세스 가능한 글로벌 어드레스가 맵핑되어 있는 영역과, 해당 자 PU만 액세스 가능한 프라이빗 어드레스가 맵핑되어 있는 영역으로 분할된다. 또한, LBUS(19)에 접속된 공유 메모리(SM)(18)는 글로벌 어드레스가 맵핑되어 있어, 복수의 PU로부터 액세스 가능하다. 또한, 이상은 본 발명에서의 적용 구성의 일례에 지나지 않고, 실시예로서는 이에 한정되지 않는다. 예를 들면 도 1에서는 표현되어 있지 않지만, LBUS(19)에는 입출력 처리, 인터럽트 처리, 타이머, 디버그 회로 등의 주변 회로를 필요에 따라서 접속하게 된다. 또한, 버스 브릿지를 통하여, 동종류 또는 이종류의 버스를 계층적으로 접속해도 된다.
또한, 각 PU(10~17)에서 공유되는 SM(18)에는, SM(18)에 공급하는 공급 전압(VL)이나 동작 주파수(FL)를 설정하여, 주파수·전원 전압(FV) 제어를 행하기 위한 시스템 제어 레지스터(R)(181)를 구비한다. 또한, 상기 PU 및 상기 SM을 상호 접속하는 로컬 버스 LBUS(19)에는, LBUS(19)에 공급하는 VL이나 FL을 설정하여, FV 제어를 행하기 위한 시스템 제어 레지스터(R)(191)를 구비한다. 또한, 이 시스템 제어 레지스터(R)(181) 대신에, 각 PU(10~17)의 시스템 제어 레지스터(R)(25)의 각각에, SM(18) 및 LBUS(19)의 FV 제어용의 레지스터를 설치해도 된다. 또한, 시스템 제어 레지스터(R)(181)는, PU(10~17) 중 어느 하나에 의해서 설정된다.
또한, 상기 PU(10~17)는, 1개의 칩(LSI) 상에 구성된 경우를 나타내지만, PU(10~17)를 구성하는 복수의 LSI를 결합하여, 1개의 칩 또는 모듈로 한 것이어도 된다.
또한, SM(18)은, 프로세서의 종류마다(CPU, DSP, DRP, BMP마다) 공유하도록 해도 되고, 예를 들면, 후술하는 도 10a~도 10c와 같이, SM(18)의 영역을 뱅크로 분할하고, 각 뱅크를 프로세서의 종류마다 공유할 수도 있다. 혹은, SM(18)의 일부를 복수의 PU에서 공유하도록 해도 된다.
<전압·주파수 가변 회로>
다음으로, 각 PU에 접속된 전원 전압 생성 회로(DCGEN)(20) 및 클럭 생성 회로(CLKGEN)(21)의 구성에 대하여 설명한다.
도 2는, DCGEN(20)의 구성을 도시한다. DCGEN(20)은 외부로부터 공급된 통상의 전원 전압(VD)(22)을 미리 지정한 복수의 공급 전압(VL)(205)으로 강압(또는 승압)하는 회로(DCCNV)(206), 생성한 복수의 해당 공급 전압으로부터 PU에 공급하는 전압을 선택하는 공급 전압 선택 회로(VDSEL)(203), 및 전원 전압을 차단하는 회로(후술)로 구성한다.
또한 강압(또는 승압) 회로(DCCNV)(206)는, 복수의 전압 강하부를 포함하며, 예를 들면, 도 2와 같이, 전원 전압 VD를 그대로 공급하는 회로(22')와, 전원 전압 VD를 3/4으로 저하하는 강압 회로(LVCNV)(201)와, 전원 전압 VD를 1/2로 저하하는 강압 회로(LVCNV)(202)로 구성된다.
각 PU(10~17)는, 해당 PU가 갖는 시스템 제어 레지스터(R)(25) 내의 FV 제어 레지스터에 설정된 FV(구동 주파수 및 구동 전압) 모드에 의해 제어선(DCCL)(204)을 통하여 공급 전압 선택 회로(VDSEL)(203)를 제어함으로써, 강압 회로(DCCNV)(206)에서 생성된 복수의 전압 중 어느 하나를 선택하고, 해당 선택된 공 급 전압 VL이 대응하는 PU(10~17)에 공급된다. 또한, FV 제어 레지스터는 시스템 제어 레지스터(25) 내의 소정의 영역에 설정되는 것이다.
전원 전압을 강압하는 회로(LVCNV)의 구성의 일례를 도 3에 도시한다. 상기 도 2의 강압 회로 LVCNV(201, 202)는, 공급 전압(3/4VD)을 결정하는 참조 전압 생성 회로(VREF)(207), 및 참조 전압에서 지정한 전압까지 강압하여 PU에 대하여 전류를 공급하는 전원 생성 회로(VGEN)(208)로 구성되며, 전원 생성 회로(208)의 출력이 도 2의 공급 전압 선택 회로(203)에 입력된다.
강압 회로 LVCNV의 출력 전압(VCNV)은, 참조 전압을 결정하는 참조 전압 생성 회로(VREF)(207) 내의 nMOSFET의 단수에 의해 결정되고, FV 제어 레지스터에서 지정하는 전압을 공급하도록, LVCNV의 구성은 결정된다. 이상의 회로에서 강압한 복수의 전압으로부터, PU로부터의 제어선(204)에 의해 지정된 전압을 선택하여, 각 PU(10~17)에 출력(205)한다.
도 4는, 공급 전압 선택 회로(VDSEL)(203)의 구성의 일례를 도시한다. 공급 전압 선택 회로(VDSEL)(203)는 제어 신호 디코드부(2031)와 전압 선택 스위치(2032)로 구성한다. 또한, PU의 소스 전압 공급부에 임계값이 높은 nMOSFET(209)를 삽입함으로써, 해당 PU의 전원 차단 시에 흐르는 리크 전류를 저감할 수 있다. 또한, 도 3, 도 4의 구성은, 강압 회로 LVCNV의 기능을 실현하기 위한 하나의 구성에 지나지 않고, 다른 다양한 전원 전압 생성 회로 방식을 적용해도 된다.
계속해서 도 5에, 클럭 생성 회로(CLKGEN)(21)의 구성의 일례에 대하여 설명 한다. CLKGEN(21)은, 내부 클럭 FC(23)를 해당 내부 클럭의 1/2, 1/4 등 내부 클럭 FC를 정수분의 1로 저감하는 분주 회로(212, 213), 및 분주 생성한 복수의 클럭으로부터, 해당 PU에 공급하는 클럭(FL)(216)을 선택하는, 클럭 펄스 선택기(CLKSEL)(214)로 구성한다. 또한, 내부 클럭 FC(23)는, PLL(Phase Locked Loop) 회로(211)에서, 외부로부터 입력된 시스템 클럭을, 지정한 체배율로 체배함으로써 생성된다.
클럭 펄스 선택기(CLKSEL)(214)의 구성의 일례를 도 6에 도시한다. CLKSEL(214)은 입력 제어 신호 CKCL의 디코드부(2171)와, 클럭 신호 선택부(2172)로 구성한다. 각 PU는, 해당 PU가 갖는 FV 제어 레지스터의 모드에 의해 제어선(CKCL)(215)을 통하여 DCSEL(214)을 제어함으로써, 생성된 복수의 클럭으로부터 지정된 FL이 선택되어, 해당 클럭 FL(216)의 공급을 받는다.
또한, 상기 도 1에 도시한 구성 이외에도 도 7에 도시하는 바와 같이, 전원 전압, 클럭 펄스를 변환하는 회로(DCCNV(206), CLKCNV(217))를 복수 PU(또는 PU 전체)에 대하여 각 1개 부가하고, 각 PU측에 생성한 복수 종류의 전원 전압 및 클럭 펄스를 선택하는 회로(VDSEL(203), CLKSEL(214))를 부가하는 구성으로 해도 된다. 도 7의 예에서는, 2조의 전원 전압 생성 회로(206)와 클럭 생성 회로(217)가, 각각 4개의 PU에 전력과 클럭을 공급하는 경우를 도시한다.
이와 같이, 전원 전압 및 클럭 펄스를 생성, 공급하는 회로는 다양한 구성을 취할 수 있으며, 그 구성은 이상에 나타낸 것에 한정되지 않는다. 예를 들면, 전원 전압을 변환하는 회로 DCCNV(206)를 복수 PU(또는 PU 전체)에 대하여 1개 부가 하고, 클럭 펄스를 생성하는 회로 CLKCNV(217)는 PU측에 PU마다 부가하는 구성으로 할 수도 있다. 또한, 예를 들면, 클럭 펄스를 생성하는 회로 CLKCNV(217)를 복수 PU(또는 PU 전체)에 대하여 1개 부가하고, 전원 전압을 변환하는 회로 DCCNV(206)는 PU측에 PU마다 부가하는 구성으로 할 수도 있다. 또한, 예를 들면 칩 내에 DCCNV(206)를 탑재하지 않고, 칩 외부에서 생성한 복수 종류의 전원 전압을 입력하고, VDSEL에서 원하는 공급 전압 VL(205)을 선택 공급하는 구성으로 해도 된다.
또한, FV 제어 모드를 설정하는 수단으로서, 도 1이나 도 7에 도시한 각 PU가 해당 PU의 FV 제어를 행하는 FV 제어 레지스터(시스템 제어 레지스터(R)(25))를 갖는 구성으로 하는 것 외에, 도 8에 도시하는 바와 같이 각각 PU(10~17)의 FV 제어 모드를 일괄하여 유지하는 FV 제어 테이블(FVTBL)(26)을 LBUS(19)에 접속하는 구성으로 해도 된다. 도 8에서는, 도 1에서 시스템 제어 레지스터(25)에 포함되어 있던 FV 제어 레지스터를, 로컬 버스 LBUS(19)에 접속된 FV 제어 테이블(26)로 하여, 집약한 것이다.
FV 제어 테이블(FVTBL)(26)은 각 PU(10~17)로부터 액세스 가능하여, 공유 메모리 SM의 일부에 설정되어도 되고, 공유 메모리 SM으로부터 독립된 메모리(또는 레지스터)로 구성되어도 된다.
<버스 IF>
이상과 같이, 각 PU(10~17)는 전원 전압을 개별로 설정하는 것이 가능하기 때문에, 해당 PU와 접속된 LBUS(19) 사이에서는, 신호의 전압 레벨이 서로 다르게 된다. 따라서, PU(10~17)와 LBUS(19) 사이에 접속된 버스 인터페이스(BIF)(27)는 신호 레벨 변환 회로(도시 생략)를 구비하고, 버스 LBUS(19)와 PU(10~17) 사이의 신호 레벨 변환을 행한다.
<PU에 대한 전압·주파수 모드의 부여 방법>
다음으로, 전원 전압 생성 회로(DCGEN)(20) 및 클럭 생성 회로(CLKGEN)(21)에서 생성하는 전원 전압(VL)(205) 및 동작 클럭(FL)(216)을 결정하는 하드웨어 기구에 대하여 설명한다.
전원 전압 생성 회로 DCGEN(20) 및 클럭 생성 회로 CLKGEN(21)의 동작 모드(공급하는 VL, FL값)는 설계 시에 미리 결정되어 있고, 각 PU는 상기 회로에 대하여 해당 PU가 구비하는 FV 제어 레지스터의 값에 의해 제어선 DCCL, CKCL을 통하여 지정한다. VL, FL의 설정 방법의 상세에 관해서는 후술하지만, 컴파일러가 FV 제어 레지스터를 세트하는 제어 코드를 생성하고, 해당 코드를 실행하는 범용 프로세서 CPU0 또는 CPU1이, 메모리 맵된 FV 제어 레지스터에 액세스하여 값을 재기입한다.
본 실시예에서의 PU(10~17)의 FV 모드는, VL, FL의 조합을 4단계(FV 제어 레지스터 내의 2비트)로서 설정한다. 도 9에 PU(10~17)의 동작 모드 일람을 나타낸다. 즉, FV 제어 레지스터의 2비트의 값이 "00"에서는 VL=0, FL=0의 전압·주파수 차단으로 되는 OFF 모드로 설정되고, 상기 레지스터 값이 "11"에서는, VL=VD에서 시스템의 전원 전압과 등가, FL=FC에서 시스템의 동작 주파수와 등가로 하는 FULL 모드가 설정된다.
또한 레지스터 값이 "01"에서는 VL=(1/2)VD, FL=(1/4)FC로 되는 LOW 모드로 설정되고, 레지스터 값이 "10"에서는 VL=(3/4)VD, FL=(1/2)F로 되는 MIDDLE로 설정된다. 또한, VL·FL 모드의 수, 또한 VL값·FL값은, 구축하는 시스템의 형태나 어플리케이션, 사용하는 프로세스 기술 등에 의해, 결정된다.
<PU 내의 부분적인 FV 제어>
이상에서는 FV 제어를 대상으로 하는 범위를 PU 전체로 하고, 일괄로 FV 제어 모드를 설정하는 것으로 하여 설명하였지만, PU(10~17)에 탑재하는 로컬 메모리(LM)나 FV 제어 레지스터, 또한 다른 프로세서 주변 회로에 대하여, 각각 서로 다른 FV 제어 모드 설정을 행해도 된다. 이것은, FV 제어 레지스터의 비트 필드를 확장하고, 피FV 제어부에 대응한 FV 제어 모드를 설정하는 필드를 갖게 함으로써 실현할 수 있다. 예를 들면, 로컬 메모리 LM 또는 시스템 제어 레지스터(R)(25) 등의 데이터 유지가 필요한 회로부에 대해서는, 독립적으로 FL, VL을 설정하는 기구로 하는 것이 생각된다. 즉 로컬 메모리 LM이나 FV 제어 레지스터에 대하여 독립하여 FV 제어를 행함으로써, 상기 PU의 FV가 차단 상태로 되어도, 해당 LM 및 R의 데이터가 유지되며, 또한 대상 PU가 차단 상태에서도, 다른 PU로부터 해당 PU의 LM에 대하여 액세스하는 것도 가능하게 된다.
또한, 로컬 메모리 LM의 구성에 의해 FV 제어 대상을 복수 설정할 수 있다. 도 10a~도 10c에 로컬 메모리 LM에 대한 FV 제어 방식을 도시한다.
예를 들면, 도 10a에 도시하는 바와 같이 로컬 메모리 LM을 뱅크 구성으로 하고, 각 뱅크마다(Bank0~Bank3)에 대하여 각각 FV 제어를 실시한다. 이 때문에, 각 Bank0~3에는 각각 공급 전압 선택 회로(VDSEL)(203)가 접속된다.
즉, 데이터의 유지가 필요한 뱅크만 통상 전압, 또는 데이터 유지에 필요한 최저한의 전압을 공급하고, 해당 뱅크 이외의 다른 뱅크는 전원을 차단함으로써 전력을 삭감함과 함께, 데이터의 퇴피 처리를 행할 필요가 없어지기 때문에 PU의 전원 차단 시로부터 통상 동작 시로의 복귀를 고속으로 행하는 것이 가능하게 된다.
또한 나아가서는, 도 10b에 도시하는 바와 같이, 로컬 메모리 LM의 어드레스 공간을 일정한 연속한 어드레스 공간(Area1~Area4)으로 분할하고, 해당 공간 단위로 FV 제어를 행함으로써, 불필요한 어드레스 공간(기억 영역)에 대한 전원을 차단함으로써 전력을 삭감할 수 있다.
이 때문에, 로컬 메모리 LM의 각 어드레스 공간(Area1~Area4)마다 공급 전압 선택 회로(VDSEL)(203)가 접속된다.
또한, 도 10c에 도시하는 바와 같이, 로컬 메모리 LM이 뱅크 구성으로 되었을 때, 각 뱅크(Bank0~3)에 걸치는 일정한 연속한 어드레스 공간(Area1~Area4)으로 분할한 단위로 FV 제어를 행한다.
이 때문에, 로컬 메모리 LM의 각 Bank0~3에 걸치는 각 어드레스 공간(Area1~Area4)마다 공급 전압 선택 회로(VDSEL)(203)가 접속된다. 이 구성에 의해, 뱅크 구성을 활용하여 메모리 액세스를 고속화하는 메모리 인터리브를 실현하면서 저전력화가 가능하게 된다.
또한, 로컬 메모리 LM은, 기능적으로 해당 LM을 탑재하는 PU만으로부터 액세스할 수 있는 부분(비공유 메모리)과, 해당 PU뿐만 아니라 다른 PU로부터도 액세스 가능한 부분(분산 공유 메모리)으로 분할하여 실장해도 되고, 이상의 2개의 메모리 기능 단위별로 FV 제어를 행하는 것도 생각된다. 이 때문에, 도시는 하지 않지만, 상기 비공유 메모리와 분산 공유 메모리의 영역마다 각각 공급 전압 선택 회로(VDSEL)가 접속된다.
또한, 도 10a~도 10c에 도시한 메모리 분할 방법은, 상기 메모리 기능 단위, 또한 공유 메모리 SM 등, 시스템이 탑재하는 다양한 메모리나 기능 부위 단위에 대해서도, 마찬가지로 적용하는 것이 가능하다. 예를 들면 PU 밖에 배치한 공유 메모리 SM에 대해서도 복수 뱅크 구성으로 하고, 각 뱅크에 대한 액세스 빈도나 시스템 상태(스탠바이, 슬립 등)에 대응하여, 별도 FV 제어를 행하도록 해도 된다.
예를 들면, 도 10a의 구성을 로컬 메모리 LM 대신에 공유 메모리 SM(18)에 적용하고, 공유 메모리 SM(18)을 뱅크(Bank0~3)로 분할하여, 각 뱅크마다 공급 전압 선택 회로(VDSEL)(203)를 접속함으로써 뱅크 단위로 전력 제어를 행할 수 있다. 또한, 도 10b의 구성을 로컬 메모리 LM 대신에 공유 메모리 SM(18)에 적용하고, 공유 메모리 SM(18)의 어드레스 공간을 일정한 연속한 어드레스 공간(Area1~Area4)으로 분할하고, 해당 공간 단위로 FV 제어를 행함으로써, 불필요한 어드레스 공간(기억 영역)에 대한 전원을 차단함으로써 전력을 삭감할 수 있다. 또한, 도 10c의 구성을 로컬 메모리 LM 대신에 공유 메모리 SM(18)에 적용하고, 각 뱅크(Bank0~3)에 걸치는 일정한 연속한 어드레스 공간(Area1~Area4)으로 분할한 단위로 FV 제어(전력 제어)를 행하는 것도 가능하다. 또한, 도 10a~도 10c를 공유 메모리 SM(18)에 적용하는 경우에는, 도면 중 「LM」을 「SM」으로 대체하는 것으로 한다.
<로컬 메모리 LM에 대한 FV 제어 모드>
FV 제어 대상을 PU 내의 복수 부분(기능 부분)으로 하는 예로서, 로컬 메모리 LM에 대하여 PU와는 독립하여 FV 제어를 행하는 방법을 이하에 설명한다. 본 예에서는 로컬 메모리 LM은 도 10a에서 도시한 바와 같이 4뱅크(Bank0~3)로 구성하고, FV 제어 대상은 PU 및 LM 뱅크마다로 한다.
PU의 FV 제어 모드는 상기 도 9에 도시한 바와 같다. 도 13에 로컬 메모리 LM의 FV 제어 모드의 일람을 도시한다. LM의 동작 모드에 관해서는 대상이 메모리로 되기 때문에, 본 실시예에서는 통상 메모리 액세스 및 데이터 유지가 가능한 통상 동작 모드(VL=VD, FL=FC, 레지스터 값 "11")와, 메모리 액세스는 불가이지만 데이터를 유지 가능한 데이터 유지 모드(VL=1/2VD, FL=0, 레지스터값 "01")와, 데이터 유지를 행하지 않고 완전히 전원을 차단하는, 전원 차단 모드(VL=0, FL=0, 레지스터값 "00")의 3모드로 한다.
계속해서, 로컬 메모리 LM을 도 10a 또는 도 10c와 같이 복수의 뱅크로 구성하고, 뱅크마다의 FV 제어에 대응한 FV 제어 레지스터의 포맷을 도 14a에 도시한다. 본 예에서는, 각 PU(10~17)마다, FV 제어 레지스터(1250)를 1메모리 어드레스로 맵하고, 그 필드(맵한 어드레스)에서 제어 대상마다 FV 제어 모드를 결정한다. 1필드가 도시하는 바와 같이 32비트인 경우, 즉 비트1, 0을 PU의 FV 제어 모드(PUFV), 비트3, 2를 LM 뱅크0(Bank0)의 FV 제어 모드(LM0FV), 비트5, 4를 LM 뱅크1(Bank1)의 FV 제어 모드(LM1FV), 비트7, 6을 LM 뱅크2(Bank2)의 FV 제어 모드(LM2FV), 비트9, 8을 LM 뱅크3(Bank3)의 FV 제어 모드(LM3FV)로 하여, 원하는 필드를 액세스하고, 도 13의 테이블로부터 로컬 메모리 LM의 동작 모드를 결정하여, FV 제어를 행한다. 또한, PU의 동작 모드는, 도 9의 테이블에 기초하여 결정한다.
FV 제어 레지스터(1250)의 설정예를 도 14b에 도시한다. 본 예에서는, PU의 모드는 도 14a의 PUFV에 MIDDLE("1, 0")가 설정되고, 로컬 메모리 LM의 뱅크0만을 활성화하여 통상 동작시키도록 LM0FV에는 "1, 1"이 설정되고, LM의 뱅크1은 데이터 유지 모드로 되도록 LM1FV에는 "1, 0"이 설정되고, 뱅크2 및 뱅크3은 LM2FV, LM3FV에 "0, 0"을 설정하여 전원 차단으로 하고 있다.
또한, 상기 이외에도 FV 제어 레지스터에 대하여, 제어 대상마다 어드레스를 할당하는 구성으로 해도 된다. 예를 들면, 도 14c에서 도시하는 바와 같이 FV 제어 대상마다 레지스터를 메모리 어드레스에 맵한 FV 제어 레지스터의 포맷을 나타낸다. 도 14c에서는, 어드레스의 순으로 PU의 FV 제어 모드와 LM의 FV 제어 모드를 나타내는 PUFV, LM0FV~LM3FV가 저장된다.
상기 도 14a에서 도시한 바와 같이, FV 제어 레지스터의 비트 필드에서 제어 대상의 FV 제어 모드를 절환하는 경우, 해당 필드의 값을 설정하기 위한 비트 연산이 필요로 되지만, 도 14c의 구성에서는 직접 해당 제어 대상 레지스터가 맵된 어드레스에 직접 액세스하면 되어, FV 제어 레지스터의 설정에 관한 명령수를 삭감할 수 있다. 그러나 그 반면, 어드레스 리소스가 도 14a와 비교하여 많이 필요로 된다.
이상에서는, 각 PU가 갖는 FV 제어 레지스터를 설정함으로써, PU나 LM의 FV 제어 모드를 설정하는 예로서 설명하였지만, 도 8에서 설명한 바와 같이 각 PU(10~17)의 FV 제어 모드를 나타내는 FV 제어 레지스터를, 로컬 버스 LBUS(19)에 접속된 FV 제어 테이블(FVTBL)(26)로서 갖게 하는 경우에서는, 도 15에 도시하는 바와 같이 해당 FVTBL을 구성한다.
도 15는, 도 8에서 도시한 FV 제어 테이블 FVTBL의 포맷을 도시한다. 해당 FVTBL의 1라인은, PU 번호(PUN(250)), 해당 PU의 FV 제어 모드(PUFV(251)), LM의 FV 제어 모드(LM0FV(252), LM1FV(253), LM2FV(254), LM3FV(255)), 후술하는 로컬 버스 LBUS의 FV 제어 모드(BUSFV)에 대응하고, 임의의 PU에 대한 해당 PU, LM, LBUS의 FV 동작 모드를 결정할 수 있다.
그리고, CPU0 등이 이 FV 제어 테이블 FVTBL을 판독하여, 각 PU(10~17)마다 PU와 로컬 메모리 LM(각 뱅크마다) 및 로컬 버스의 FV 제어 모드를 결정하고, 전압 생성 회로(DCGEN)(20) 및 클럭 생성 회로(CLKGEN)(21)를 제어한다.
<버스에 대한 전원 제어>
또한, 각 PU(10~17)를 접속하는 로컬 버스(LBUS)(19)에 대해서도, 멀티프로세서 시스템의 기능 부위 단위의 FV 제어로서, 부분적으로 전원 제어(전원 차단)할 수 있다.
예를 들면, PU(10~17) 중 어느 하나가 비동작 시에서 전원 차단되어 있는 경우, 해당하는 PU의 버스 인터페이스(BIF)는 액세스되지 않기 때문에, 해당 BIF의 전원 차단을 행할 수 있고, 그 결과 리크 전류를 삭감할 수 있다. 또한, 버스 구성을 크로스바로 한 경우, 해당 PU에 접속하는 버스를 결정하는 스위치부의 전원을 제어하여 차단할 수도 있다.
도 11에, 크로스바 구성의 버스에 대한 전원 제어의 개념을 도시한다. 예를 들면, DSP0(14)을 전원 차단 상태로 하여 DSP0에 대한 통신 트래픽이 없는 것으로 하면, DSP0에 부수하는 BIF(27), 및 DSP0에 대하여 다른 PU 및 공유 메모리 SM으로부터의 버스 네트워크를 접속하는 스위치군(192)에 대한 전원도 차단한다.
이에 의해, 비동작 상태로 된 DSP0의 스위치군(192)의 전력 소비를 삭감할 수 있다.
도 12에, 크로스바 네트워크에 대한 전원 제어를 실현하기 위한 회로 구성을 도시한다. 또한 본 도면에서는, CPU0, DSP0, DSP1 및 공유 메모리 SM을, 크로스바 네트워크로 구성된 로컬 버스 LBUS(19)에 접속한 구성을 도시한다. 본 회로는, 각 PU(10~17)가 송출한 패킷 데이터를 해석하고, 도 11에 도시한 스위치군(192)의 제어를 행하는 네트워크 제어부 NWCRL과, 해당 패킷 데이터의 송출원과 송출처의 네트워크를 접속하는 네트워크 스위치부(NWSW)로 구성한다.
네트워크 제어부 NWCRL는, PU(10~17)가 송출한 패킷을 해석하여 패킷 처리의 우선도를 결정하는 SHCTL(195)과, SHCTL(195)에 의해 우선도 결정된 해당 패킷을 선택하는 셀렉터(SELC)(196)와, 해당 패킷을 일시적으로 유지하는 큐(197)와, 해당 패킷을 해석하여 송출처 및 송출원의 네트워크를 접속하는 셀렉터 스위치(191~194)를 제어하는 SWCTL(198)로 구성된다.
또한, 네트워크 스위치 NWSW는 각 PU간의 네트워크를 접속하는 셀렉터 스위치(SEL)(191~194)로 구성한다.
각 PU(10~17)와 네트워크 제어부 NWCRL에는, 전원 생성 회로 DCGEN과 선택적으로 접속하는 스위치(DCSEL)(199)가 각각 설치된다. 그리고, 스위치(DCSEL)(199) 로부터 각 PU(10~17) 및 BIF(27)와, 해당 PU가 접속되는 셀렉터 스위치(191~194)에 대하여 전원 공급을 행한다.
예를 들면 DSP0을 전원 차단 상태로 하여, DSP0에 대한 통신 트래픽이 발생하지 않는다고 하면, DSP0에 부가한 스위치 DCSEL(199)은, 해당 DSP0뿐만 아니라 해당 DSP0에 접속된 BIF(27) 및, 해당 DSP0에의 네트워크를 선택하는 셀렉터 스위치 SEL1(192)에 대한 전원을 차단한다. 이에 의해, 전원 차단 상태로 한 DSP0뿐만 아니라, 주변의 회로에의 전력을 차단함으로써 전력 소비를 더욱 삭감할 수 있다. 또한, 네트워크 전체를 대기 상태, 즉 전원 차단 상태로 할 때에는, NWCRL에 대해서도 해당 NWCRL에 전원 공급하는 스위치 DCSEL(199)에 의해, 전원 차단을 행한다.
<FV 제어 레지스터의 설정 방법>
다음으로, FV 제어 레지스터(1250)를 설정하는 구체적인 방법에 대하여 설명한다. 또한 이하에서는, 레지스터 포맷을 도 14a의 구성으로서 설명한다.
각 PU의 FV 제어 레지스터(25)에는, 전체 PU로부터 일의로 액세스 가능한 글로벌 어드레스가 각각 할당되며, 컴파일러가 미리 결정한 태스크 관리용의 PU(즉, 스케줄러 또는 OS를 실행하는 PU)가 해당 어드레스에 액세스하여, 해당 레지스터값을 변경함으로서 FV 제어 모드를 설정한다.
도 16에 멀티프로세서 시스템 전체의 글러벌 어드레스 공간 맵을 도시한다. 본 실시예에서는, 선두 어드레스로부터 소정의 어드레스까지 PU 자신의 로컬 리소스(LM, FV 제어 레지스터(1250)를 포함하는 시스템 설정 레지스터)가 보이는 영역, 브로드캐스트(BC) 영역을 정의한다. BC 영역에 관해서는 후술한다. 그리고, BC 영역 뒤에 각 PU마다의 어드레스 공간을 할당하고, 또한 각 PU 내의 어드레스 공간에 로컬 메모리 LM 어드레스, 및 시스템 설정 레지스터 어드레스를 할당한다. FV 제어 레지스터는, 상기 시스템 설정 레지스터 어드레스 중의 1개의 어드레스를 갖고, 해당 어드레스를 액세스함으로써 FV 제어 모드를 설정할 수 있다. 또한 도 16에서는, CPU0, CPU1, DSP0, DSP1의 순으로 선두 공간부터 어드레스가 맵되며, 예를 들면 DSP0의 FV 제어 레지스터를 설정할 때에는, 어드레스 "DSP0_FVREG_ADRS"를 액세스하게 된다. 또한, 해당 공간의 각 PU 영역 뒤에는 공유 메모리 SM의 어드레스를 할당한다.
FV 제어 레지스터의 설정은, 컴파일러가 결정한 태스크 관리용의 PU가 레지스터 액세스용의 오브젝트 코드를 실행하고, 로컬 버스 LBUS(19)를 통하여 제어처 PU의 FV 제어 레지스터를 액세스함으로써 행한다. 컴파일러가 해당 오브젝트 코드를 생성하는 구체적인 방법에 관해서는 후술하지만 이하 간단하게 설명하면, 컴파일러가 태스크를 복수 PU에 할당할 때, 해당 복수의 PU를 그룹화하고, 그룹 내의 태스크의 기동이나 동기 처리를 행하는 태스크 관리 PU를 결정한다. 컴파일러는, 해당 관리 PU 상에서 FV 제어를 행하는 코드를 생성하고, 해당 관리 PU는 해당 코드를 실행함으로써, 그룹 내의 PU의 FV 제어를 행한다. 또한, 상기 컴파일러는 도시하지 않은 계산기 상에서 실행되는 것이다.
도 17a에 FV 제어 레지스터를 설정하는 예를 도시한다. 컴파일러가 CPU0, DSP0, DSP1을 그룹화하고, CPU0이 태스크 관리를 행하고, 해당 CPU0이 DSP0에 대하여 FV 제어를 행하는 것으로 한다. CPU0은, 컴파일러가 생성한 FV 설정을 행하는 오브젝트 코드를 실행함으로써, DSP0의 FV 제어 모드를 설정한다.
도 17b에 DSP0의 FV 제어 모드를 설정하는 오브젝트 코드의 예를 도시한다. 본 예에서는 DSP0 내의 FV 제어 레지스터의 어드레스를 미리 정의해 두고, CPU0 내의 범용 레지스터에 해당 FV 제어 레지스터의 어드레스, 및 FV 설정값을 전송하고, 해당 설정값을 해당 어드레스에서 지정된 레지스터에 기입함으로써, 설정을 완료한다.
또한, FV 설정을 행하는 방법으로서, 태스크 관리 PU가 레지스터를 직접 액세스하는 오브젝트 코드를 실행하는 것으로 하였지만, 예를 들면, 도 17c에 도시하는 바와 같이, OS가 각 PU의 FV 동작 모드를 관리하는 것으로 한 경우에서는, OS의 FV 제어용 API를 콜함으로써, OS의 관리 하에서 PU의 FV 제어 모드 설정을 행할 수 있다.
또한, 시스템 전체의 FV 제어용 레지스터를 설치하고, 이 레지스터 내에 모든 PU(10~17)의 FV 제어 모드를 설정하는 레지스터를 설치하여, 각 레지스터에 모드를 설정하면, 전체 PU(10~17)의 FV 모드가 자동으로 설정되는 기구를 갖게 해도 된다. 예를 들면, 도 8의 FV 제어 테이블(26)과 같이 전체 PU(10~17)에서 공유하는 레지스터를 설치하고, 해당 레지스터를 갱신함으로써, 전체 PU(10~17)의 FV 제어 모드를 변경하는 것이 가능하게 된다.
또한, 해당 시스템 전체의 제어용 레지스터에 범용 처리 PU군(CPU), 전용 처리 PU군(DSP, DRP, BMP) 등, 프로세서의 종류에 대응하여, 해당 종류마다의 PU에 대하여 FV 모드를 동기하여 설정하는 복수의 FV 제어 레지스터를 설치하도록 해도 된다. 이 경우, 도 8의 FV 제어 테이블(26)에 프로세서의 종류마다 FV 제어 레지스터를 설치하고, 각 CPU, DSP, DRP, BMP마다 FV 제어 레지스터를 공유함으로써, 1개의 레지스터를 변경함으로써, 프로세서의 종류마다 FV 제어 모드를 변경할 수 있다.
<BC 영역>
계속해서, 상기 도 16에서 도시한 메모리 맵의 선두 영역에 설치한 브로드캐스트(BC) 영역에 대하여, 이하에 설명한다. 해당 BC 영역은 기입 전용의 영역이며, 1PU가 해당 BC 영역의 1어드레스에 대하여 데이터의 기입을 행하면, 해당 어드레스에 미리 대응시킨 전체 PU의 각 LM 엔트리에 해당 데이터를, 로컬 버스 LBUS(19)를 통하여 동시에 기입한다. 이에 의해, 전체 PU에서 공유하는 데이터를 동시에 각 PU의 로컬 메모리 LM이 갖게 되어, 각 PU(10~17)는 공유 메모리 SM에 액세스하지 않아도 고속으로 LM 상의 해당 데이터에 액세스하는 것이 가능하게 된다.
또한, FV 제어 등의 시스템 제어를 행할 때에도, 해당 브로드캐스트를 행함으로써 전체 PU에 대하여 일제히 제어 정보를 송신하는 것이 가능하게 된다. 또한, PU 범위를 지정하는 마스크 정보를 아울러 브로드캐스트 송신함으로써, PU의 범위를 한정하여 데이터나 제어 정보를 송신하는 멀티캐스트 기능을 실현하는 것도 가능하다. 이 결과, 예를 들면 컴파일러가, 임의의 태스크를 병렬 처리하는 복수 PU로 구성하는 PU 범위를 정의하는 경우, 해당 PU 범위 내에서 일제히 태스크 처리를 개시하거나, FV 제어를 실행하거나 하는 것이 가능하게 되어, 시스템 전체의 스루풋이 향상된다.
<태스크 처리 시의 FV 제어 개념>
다음으로, 도 18a~도 18d를 이용하여 각 PU(10~17)에서의 태스크 처리 시의 전원 전압, 동작 주파수(FV) 제어 방법의 개념에 대하여 설명한다. 각 PU에서 실행하는 태스크(프로그램)는, 후술하는 컴파일러에 의해 입력 프로그램으로부터 생성된다. 즉, 해당 입력 프로그램은, 우선 후술하는 컴파일에 의해, 해당 프로그램의 구조를 해석함으로써, 대입문으로만 이루어지는 베이직 블록(BB), 반복 블록(RB), 서브 루틴(SB) 등의 입도가 큰 스테이트먼트 블록을 매크로 태스크(MT)로서 분할한다. 본 예에서는, 3개의 매크로 태스크 MT(301~303)로 분할되는 것으로 한다. 여기서, 매크로 태스크는, 입력 프로그램(소스 코드)을 복수의 입도의 단위 블록으로 분할한 것이다. 즉, 매크로 태스크로 분할함으로써, 서브 루틴 등의 거친 입도 태스크간의 병렬 처리를 이용하는 매크로 데이터 플로우 처리, 루프 레벨의 병렬 처리인 중간 입도 병렬 처리에, 기본 블록 내부의 스테이트먼트 레벨의 병렬성을 이용하는 고운 입도 병렬 처리를 계층적으로 조합하여 병렬 처리를 행하는 멀티그레인 병렬 처리를 행한다. 또한, 본 실시예에서는, 프로그램의 구성 요소를 매크로 태스크로 하고, 매크로 태스크의 구성 요소를 태스크로 하고, 태스크를 PU(10~17)에 할당하는 것으로 한다.
계속해서, 해당 매크로 태스크 MT의 임의의 PU에서의 연산 코스트 등의 특성 정보를 산출함으로써, 해당 매크로 태스크 MT를 어느 PU 상에서 실행할지를 결정하고, 또한 해당 매크로 태스크 MT간의 데이터 의존성이나 제어 의존성을 해석함으로써, 태스크의 실행 순서를 결정한다.
도 18a는, 태스크간의 병렬 실행 의존성을 나타낸 매크로 태스크 그래프이다. 본 그래프는, 매크로 태스크 MT1(301)과 매크로 태스크 MT2(302)는 동시에 실행할 수 있는 것을 나타내고, 또한 매크로 태스크 MT3(303)은, 매크로 태스크 MT1(301) 및 MT2(302)의 실행이 종료된 후에, 실행할 수 있는 것을 나타내고 있다. 또한 본 예에서는, 매크로 태스크 MT1은 PU(10)(CPU0)에, 매크로 태스크 MT2는 PU(12)(BMP0)(12)에, 매크로 태스크 MT3은 PU(10)(CPU0)에 배치된다.
이상과 같이 스케줄링된 매크로 태스크를 통상 처리(전압·주파수 제어 없음)하였을 때의 처리 간트 차트를 도 18b에 도시한다.
도 18b에서, 매크로 태스크 MT1과 MT2는 병렬 실행 가능하기 때문에, MT1은 CPU(CPU0)에서(305), MT2는 BMP(BMP0)에서(306) 동시에 처리가 개시된다. 통상 처리 시에는 CPU, BMP 모두에 공급되는 전압은 통상의 VD, 또한 동작 주파수도 통상의 FC가 공급되어 있다. 본 예에서는, CPU에서의 매크로 태스크 MT1의 처리 사이클수는, BMP에서의 매크로 태스크 MT2의 처리 사이클수보다 작기 때문에, CPU에서의 매크로 태스크 MT1의 처리(305)가, BMP에서의 MT2의 처리(306)에 선행하여 종료된다.
CPU는 매크로 태스크 MT1의 처리(305)를 종료하였기 때문에, 다음에 매크로 태스크 MT3을 처리(307)하게 되지만, 매크로 태스크 MT간의 의존 관계로부터 BMP에서의 MT2의 처리(306)가 종료될 때까지는, CPU에서 다음에 처리할 매크로 태스크 MT3을 실행할 수 없다. 그 때문에, CPU는 BMP에서의 매크로 태스크 MT2의 처리가 종료될 때까지 아이들 상태로 된다. 해당 아이들 상태에서도, CPU에 대해서는 통 상의 전원 전압 VD 및 클럭 FC가 공급되어 있기 때문에, 여분의 전력을 소비하게 된다.
따라서 이상을 해결하는 한 방법으로서, CPU에서 매크로 태스크 MT1을 실행할 때에, BMP가 매크로 태스크 MT2의 처리에 필요로 하는 시간과, CPU에서 실행하는 매크로 태스크 MT1의 처리 시간이 동일하게 되도록, CPU의 동작 주파수를 통상 시(FULL 모드)보다도 저감시키는 LOW 모드(도 9의 1/4FC를 공급하는 모드)로 구동한다(308). 즉, BMP를 통상 시의 FV 제어 모드(FULL)로 구동하는 한편, CPU의 FV 제어 모드를 LOW 모드로 하고, 처리가 빨리 종료되는 쪽의 PU의 동작 주파수를 저감하고, 병렬 처리를 행하는 PU간에서 FV 제어 모드가 서로 다르도록 FV 제어 레지스터의 설정을 행한다. 본 방법에 의한 FV 제어 적용 시의 간트 차트를 도 18c에 도시한다. 컴파일러는, CPU(CPU0)에서의 매크로 태스크 MT1의 처리 사이클수 및 , BMP(BMP0)에서의 매크로 태스크 MT2의 처리 사이클수를 어림함으로써, 쌍방의 처리 시간이 동일하게 되도록 CPU의 동작 주파수를 결정한다. 이 결과, CPU의 동작 주파수가 저감되기 때문에, 해당 PU에 대한 전원 전압 VL도 저감하는 것이 가능하게 되어, 소비 전력을 최적화할 수 있다.
즉 이 예에서는, 매크로 태스크 MT1에 대하여, CPU의 FV 제어 모드를 도 9의 「LOW 모드」로 설정하고, 병렬적으로 처리가 행하여지는 BMP의 FV 제어 모드를 「FULL」로 설정한다.
또한, 상기 도 18b의 CPU 아이들 상태를 해결하는 다른 방법으로서, CPU에서의 매크로 태스크 MT1의 처리(309)가 종료된 시점에서, CPU의 전원 전압 및 동작 클럭의 공급을 차단하여 대기 상태로 한다(310). 즉, CPU가 매크로 태스크 MT1의 처리를 완료하면, CPU의 FV 제어 모드를 도 9의 「OFF」로 설정한다. 그리고, 매크로 태스크 MT3의 개시 시에, FV 제어 모드를 「FULL」로 설정하고, 처리를 재개한다. 본 방법에 의한 FV 제어 적용 시의 간트 차트를 도 18d에 도시한다.
도 18d에서, CPU에 의한 매크로 태스크 MT1의 처리는 BMP에서의 매크로 태스크 MT2(306)보다 선행하여 종료되지만, 해당 종료 시점에서 CPU를 대기 상태(OFF)로 하고, BMP가 매크로 태스크 MT2의 처리(306)가 종료된 시점에서 재차 CPU를 통상의 전원 전압 및 동작 클럭을 공급함으로써 통상 상태로 복귀시켜, 매크로 태스크 MT3의 처리(307)를 개시한다. 이 결과, CPU를 아이들시키지 않고 동작이 정지하기 때문에, 소비 전력을 저감할 수 있다.
이와 같이, 프로그램(태스크)을 컴파일할 때, PU의 구성에 기초하여 컴파일러가 미리 사전의 처리 시간을 어림하고, 컴파일 시에 처리 순서를 정적으로 결정할 수 있는 부분에 관해서는 사전에 처리 수순을 결정하고, PU마다 섬세하고 치밀하게 동작 주파수 제어 및 전원 관리를 행함으로써, 멀티프로세서 시스템의 성능을 손상시키지 않고 전력을 최적화하는 것이 가능하게 되는 것이다.
<태스크 처리 시(리얼타임 제약 시)의 FV 제어 개념>
이상에서는, 매크로 태스크(MT)의 실행 조건이 다른 매크로 태스크 MT에 의존하는 경우의 FV 제어 방법을 설명하였지만, 그 외에도 태스크가 임의의 일정 시간 내에 처리할 제약을 갖는, 즉 도 19a에서 도시하는 바와 같은, 해당 태스크의 처리 기한(허용 시간)이 결정되어 있는 리얼타임 처리 태스크를 대상으로 한 FV 제 어 방법도 생각할 수 있다.
도 19a에서 예시한 매크로 태스크(MT1)(311)에서는, 「FULL」 모드, 즉 통상의 전원 전압 및 클럭 주파수로 동작하는 CPU에서 처리한 경우, 처리 기한(Deadline)보다도 선행하여 처리가 종료된다. 이 경우, 처리가 종료된 시점에서 CPU는 아이들 상태로 되지만, 본래의 처리 기한에 대하여 여유가 있기 때문에, 처리 기한 제약 내에서 CPU의 동작 주파수를 저감시키는(312) 것이 가능하게 된다.
본 방법에 의한 FV 제어 적용 시의 간트 차트를 도 19b에 도시한다. 컴파일러는 처리 기한까지 처리를 완료 가능한 동작 주파수를 어림하고, 도시한 바와 같이 CPU의 FV 제어 모드를 「LOW」 모드로 결정한다. 그 결과, 공급 전압 VL도 저감할 수 있어, 소비 전력을 최적화할 수 있다.
또한, 마찬가지로 매크로 태스크 MT1의 처리(313)가 종료된 시점에서 CPU의 전원 및 동작 클럭을 차단(314)함으로써, 소비 전력을 저감하도록 해도 된다. 본 방법에 의한 FV 제어 적용 시의 간트 차트를 도 19c에 도시한다. 이 경우, CPU는 「FULL」 모드에서 매크로 태스크 MT1을 처리하고, 처리 기한 전에 처리를 완료하게 되지만, 매크로 태스크 MT1의 완료 시에 동작 모드를 「OFF」로 함으로써, 쓸데없는 전력 소비를 회피할 수 있다.
<컴파일러의 처리 플로우>
다음으로 상술한 멀티프로세서 아키텍처 상에서, 프로세서 유닛(PU)의 특성에 맞춘 스케줄링과 전압·주파수의 동적 변화에 의한 소비 전력의 최적 제어를 행하는 코드를 생성하는 컴파일러 방법과, 해당 방법을 실장한 컴파일러의 처리에 대 하여 이하의 순서를 따라서 설명해 간다. 도 20에 본 방법을 실장한 컴파일러(40)의 처리 플로우를 도시한다.
<매크로 태스크의 생성>
C나 Fortran 등의 고급 언어로 기술된 축차 구조의 입력 프로그램(400)은, 우선, 해당 프로그램 구조를 해석함으로써, 반복 블록(RB:Repetition Block), 서브 루틴(SB:Sub Routine), 의사 대입문 블록(BPA:Block of Pseudo Assignment statements)의 3종류의 입도가 큰 매크로 태스크(MT)로 분할되어, 각 매크로 태스크를 생성한다(401). RB는 루프 블록으로 각 계층에서의 가장 외측의 루프이며, BPA는 스케줄링 오버 헤드 혹은 병렬성을 고려하여, 대입문으로 이루어지는 복수의 기본 블록을 융합 혹은 분할한 블록이다. 도 21에, 상기한 바와 같은 입력 프로그램(소스 프로그램(400))의 일례를 도시한다.
<Directive 지정>
또한, 해당 소스 프로그램(400) 중에는, 미리 PU의 할당을 기술하는 것이 가능하며, 예를 들면 임의의 서브 루틴을 DSP에, 또한 임의의 서브 루틴을 CPU에 할당하는 것을 명시적으로 지정하는 것도 가능하다. 그 결과, 해당 DSP 서브 루틴은 컴파일러(40)에 의해 다시 병렬성의 해석이 행하여지고, 예를 들면 DSP가 4개 있는 경우, 해당 4개의 DSP에 대하여 컴파일러(40)는 병렬화 스케줄링을 실시한다.
<데이터 의존·제어 플로우 해석>
계속해서, 분할 생성된 해당 매크로 태스크간의 제어 플로우 및 데이터 의존성을 해석하고, 매크로 태스크 MT의 실행 순서 관계를 추출한다(402). 도 21의 입 력 프로그램(400)은, 축차적으로 기술되어 있기 때문에, 통상의 컴파일러(40)에 의해 생성되는 실행 코드는, 해당 프로그램의 구조와 마찬가지로 축차적인 순서로 실행되지만, 매크로 태스크 MT간에서 보면 반드시 기술된 순서로 실행할 필요가 없는 경우가 많다.
즉, 매크로 태스크 MT간에서, 제어 또는 데이터 참조의 의존성이 없는 경우, 특히 멀티프로세서 시스템에서는, 복수의 PU에 복수의 매크로 태스크 MT를 배치하여 동시에, 또는 순서를 변경하여, 전체의 실행 시간이 짧게 되도록 스케줄링하는 것이 중요하게 된다.
이러한 스케줄링을 행하기 위해서는, MT간의 병렬성을 해석할 필요가 있다. 따라서, 이 해석에 충당한 준비로서, 데이터 의존·제어 플로우 해석 처리(402)에 의해, 매크로 태스크 MT간의 실행 순서 관계를 추출한다.
<루프 레벨 병렬성 해석>
계속해서, 매크로 태스크 MT 내의 중 입도 레벨의 병렬성 해석으로서, 루프 레벨의 병렬화를 행한다(403). 루프 레벨 병렬화(403)에서는, 루프의 반복(인터레이션) 단위간의 데이터 의존성을 해석하여, 각 인터레이션을 독립적으로 처리할 수 있는지를 판단하고, 가능한 경우에는 각 인터레이션을 복수의 PU에 할당하여 병렬 처리를 행한다.
또한, 단일의 루프를 복수의 루프로 분할하여 병렬성을 높이거나, 데이터의 카피나 배열 변수의 확장에 의해, 각 루프간의 데이터 의존성을 삭제함으로써 병렬화하거나, 또한 복수의 루프를 단일의 루프로 융합함으로써 루프 제어에 필요한 오 버 헤드를 경감하거나 하는 등의 다양한 방법에 의해 루프의 병렬화를 실현한다.
<처리 코스트 해석>
다음으로, 상기 생성된 매크로 태스크 MT를 각 PU에서 실행하였을 때에 필요로 되는 처리 사이클을 어림하는, 처리 코스트 해석을 행한다(404). 처리 코스트(연산 코스트)의 어림 방법으로서는, 예를 들면 CPU 등에 관해서는, 승산이나 가산 등 명령 레벨에서 필요로 하는 사이클수를 처리 코스트 테이블(420)에 프로파일링 정보로서 유지해 두고, 해당 테이블(420)을 참조함으로써, 매크로 태스크 MT를 해당 PU에서 실행할 때의 축차 처리 사이클수를 어림할 수 있다.
또한, DRP나 DSP 등, 프로그램 중으로부터 표현되는 명령 레벨에서의 사이클수의 어림이 곤란한 경우에는, 1번 해당 블록의 프로그램을 DRP나 DSP용의 실행 코드를 생성하는 각각의 로컬 컴파일러를 호출하고, 변환한 실행 코드에 기초하여 프로파일링을 행하여, 처리 코스트를 구한다(413). 또한, 로컬 컴파일러는, PU의 종류에 따라서 미리 설정되며, 예를 들면, DSP이면 DSP의 로컬 컴파일러 프로파일링 정보를, DRP이면 DRP의 로컬 컴파일러 프로파일링 정보를 이용한다.
또한, 예를 들면 분기를 포함하는 경우, 혹은 루프의 사이즈나 배열의 사이즈가, 매크로 태스크 MT의 실행 전에서는 정해지지 않는 경우에서는, 로컬한 컴파일러에서 1번 프로파일링함으로써, 정밀도를 높인 처리 코스트의 산출을 행할 수도 있다. 또한, 본 프로파일링을 행하지 않고 매크로 태스크 MT가 분기를 포함하는 경우에는, 분기 확률을 50%로 하여 코스트 산출을 행한다. 또한, 동일하게 프로파일링을 행하지 않고 루프나 배열의 사이즈가 정해지지 않은 경우에는, 예를 들면 루프를 고정 횟수로 하고, 또한 배열 선언 시의 최대 사이즈로 하는 등의 방법을 적용한다.
이상에서는 처리 코스트를, 처리 사이클수(시간)로서 정의하였지만, 그 밖에 코스트를 전력으로서 정의함으로써, 전력이 최소로 되는 스케줄링을 행하는 것도 가능하다. 예를 들면, 처리 사이클수와 매크로 태스크 MT를 완료할 처리 기한으로부터, 설정 가능한 FV 제어 모드(주파수, 동작 전압) 중 처리 기한 내에서 최소의 소비 전력으로 되는 동작 모드를 선택한다. 혹은, PU의 소비 전력은,
소비 전력=동작 전압2×구동 주파수
로 어림할 수 있으므로, 처리 기한 내에서 소비 전력이 최소로 되는 FV 제어 모드의 조합을 선택하여, 스케줄링하면 된다. 예를 들면, 도 19b와 같이 LOW 모드만으로, 처리를 실행하는 경우나, 도 19c와 같이 복수의 FV 제어 모드를 조합한다. 혹은, 처리 시간이 최소 또한 소비 전력이 최소로 되는 FV 제어 모드의 조합을 선택할 수도 있다.
<매크로 태스크간 병렬성 해석=가장 빠른 실행 조건 해석>
컴파일러(40)는 매크로 태스크 MT의 처리 코스트가 결정된 후, 데이터 의존·제어 플로우 해석 처리(402)에서 추출한 매크로 태스크 MT간의 제어 플로우와, 데이터 의존성을 동시에 해석한 결과로부터, 매크로 태스크 MT간의 병렬성, 즉 각 매크로 태스크 MT의 실행을 가장 빠르게 실행하기에 좋은 조건(가장 빠른 실행 조건)을 결정한다(405).
이 가장 빠른 실행 조건을 그래프로 가시적으로 나타낸 것이 매크로 태스크 그래프(MTG)이다. 도 21의 입력 프로그램을 해석하여 생성된 MTG를, 도 22에 도시한다. 또한, 매크로 태스크간 배열성 해석 결과는, 매크로 태스크 그래프 테이블(421)로서 외부 기억 장치에 유지되며, 후단의 컴파일 처리에서 사용된다. 또한, 이 외부 기억 장치는, 컴파일러(40)를 실행하는 도시하지 않은 계산기의 것을 가리킨다.
<매크로 태스크 그래프의 설명>
이하, 도 22를 참조하면서, 매크로 태스크 그래프 MTG에 대하여 설명한다. 본 그래프 중의 각 노드는 매크로 태스크 MT를 나타내고, 노드간의 실선은 매크로 태스크간의 데이터 의존 관계를, 노드간의 파선은 매크로 태스크간의 제어 의존 관계를, 노드 내의 작은 원이 조건 분기를 나타내고 있다. 예를 들면, 매크로 태스크 MT1_1(501)로부터 MT1_2(502) 및 MT1_3(503)에 대하여 실선이 신장되어 있지만, 이것은 입도가 큰 매크로 태스크 MT1_2 및 MT1_3이 MT1_1을 실행한 결과 발생한 데이터를 입력 데이터로서 이용하여, 처리를 실행하고 있다고 하는 의존 관계가 있는 것을 나타내고 있다. 그 때문에, 실행 순서로서, MT1_2 및 MT1_3은 MT1_1의 종료 후, 실행할 수 있는 것을 나타낸다.
또한, 입력 프로그램(400)으로부터 구한 매크로 태스크 MT1_2(502)는, 복수의 루프나 서브 루틴으로 구성된 입도가 큰 블록이므로, 컴파일러(40)는 해당 매크로 태스크 MT를 다시 복수의 매크로 태스크 MT로 계층적으로 분할한다. 따라서, 해당 매크로 태스크 그래프 MTG에서는 MT1_2 중에, 다른 계층으로 다시 매크로 태스크 그래프 MTG1_2를 구성한다. 매크로 태스크 MT1_3(503)도 마찬가지로 다른 계 층의 매크로 태스크 그래프 MTG1_3을 구성한다.
매크로 태스크 MT1_2(502) 내의 매크로 태스크 그래프 MTG1_2(510)를 보면, 태스크 MT1_2_1(511)로부터는 태스크 MT1_2_2(512), 태스크 MT1_2_4(514), 태스크 MT1_2_5(515)에 실선이 연장되어 있기 때문에, MT1_2_1(511) 종료 후, 동시에 이들 3개의 태스크(512, 514, 515)를 실행하는 것이 가능하다.
또한, 태스크 MT1_2_2(512)는 또한 태스크 MT1_2_3(513)에 의존이 있지만, 이것은 MT1_2_2(512)의 태스크가 종료된 후, MT1_2_3(513)의 태스크를 실행하면 된다. 또한, 태스크 MT1_2_4(514) 및 MT1_2_5(515)로부터 태스크 MT1_2_6(516)에 대하여 실선이 연장되어 있기 때문에, 태스크 MT1_2_4(514) 및 태스크 MT1_2_5(515) 쌍방의 실행이 종료된 시점에서 MT1_2_6(516)을 실행할 수 있다.
이상과 같이, 매크로 태스크 MT1_2는 실행 전에 병렬 순서 관계는 확정되어 있어, 미리 고정적(정적)으로 태스크를 스케줄링 가능하다.
계속해서, 매크로 태스크 MT1_3(503) 내의 매크로 태스크 그래프 MTG(520)를 보면, 매크로 태스크 MT1_3_1(521)에는 작은 원이 존재하는데, 이것은 태스크 MT1_3_1(521)이 조건 분기를 포함하는 것을 나타내고 있다. 작은 원으로부터 태스크 MT1_3_2(522), MT1_3_5(525)에는 화살표가 있는 파선이 신장되어 있고, 또한 제어 의존의 OR 조건을 나타내는 점선의 아크(529)가 겹쳐 있기 때문에, 해당 조건이 태스크 MT1_3_2 또는 MT_1_3_5 중 어느 하나로 분기하는 것을 나타내고 있다.
또한, 태스크 MT1_3_3(523)에는 화살표가 없는 파선이 연장되어 있고, 태스크 MT1_3_3(522)에의 화살표가 없는 해당 파선과, 태스크 MT1_3_2(523)에 접속되는 파선 상에는, 제어 의존의 AND 조건을 나타내는 실선의 아크(528)가 겹쳐 있다. 이것은, 만약 해당 조건에서, 화살표로 가리켜져 있는 태스크 MT1_3_2의 방향으로 분기하면, 동일한 분기에 제어 의존하고 있는 태스크 MT1_3_3이 동시에 실행 가능한 것을 나타내고 있다. 또한, 도면 중 파선은 태스크의 실행이 확정되는 제어 의존 관계와, 데이터 의존하고 있는 태스크가 실행되지 않는 경우의 조건을 나타내고 있다. 또한, 화살표가 붙은 파선은, 데이터 의존·제어 플로우 해석(402)에서 구한 제어 플로우와 동일(즉, 오리지널)인 것을 나타낸다.
또한, 태스크 MT1_3_1(521)의 조건 분기는, 해당 태스크 MT1_3_1을 실행하지 않으면 분기 방향이 확정되지 않기 때문에, 실행 시의 상황에 따른 스케줄링을 행할 필요가 있다. 해당 조건 분기가 확정되고, 태스크 MT1_3_2(522) 및 태스크 MT1_3_3(523) 방향으로 분기한 경우, 태스크 MT1_3_2(522) 및 태스크 MT1_3_3(523)으로부터 태스크 MT1_3_4(524)에 데이터 의존 관계를 나타내는 실선이 있기 때문에, 쌍방의 태스크 MT(522, 523) 처리의 실행이 종료된 시점에서, 태스크 MT1_3_4(524)의 처리를 실행할 수 있다.
또한, 태스크 MT1_3_5(525) 방향으로 분기한 경우, 마찬가지로 데이터 의존 관계로부터 해당 태스크(525)가 종료한 시점에서, 태스크 MT1_3_6(526) 및 태스크 MT1_3_7(527)의 처리를 실행할 수 있다.
<프로세서 그룹핑>
다음으로 컴파일러(40)는, 생성된 매크로 태스크 그래프 MTC 테이블(421)을 참조하여, 매크로 태스크 그래프의 형상이나 병렬성에 따른, 또는 유저로부터의 지 정에 따른 프로세서의 그룹화를 행한다(406).
즉, 매크로 태스크 그래프 MTG에서 표현된 상위 계층의 매크로 태스크 MT, 예를 들면 매크로 태스크 MT1_2(502), MT1_3(503)의 형상, 병렬성을 해석하고, 해당 매크로 태스크 MT의 처리에 필요로 되는 PU(10~17)를 그룹화하고, 해당 그룹에 대하여 태스크 MT를 할당한다. 또한, 1개의 그룹은, 해당 그룹 내의 특정 용도 프로세서(DSP, DRP, BMP)를 제어하기 위한 범용 프로세서(CPU)를 적어도 1개 포함하는 집합으로 된다. 구체적으로는, 매크로 태스크 그래프 MTG의 구성에 의해 컴파일 시에 적절한 프로세서 PU의 그룹 구성을 판단할 수 있는 경우, 컴파일러(40)는 특정 용도 프로세서를 포함시킨 그룹핑을 행한다.
또한, 매크로 태스크 그래프 MTG의 구성에 의해 컴파일 시에 프로세서 그룹핑을 할 수 없는 경우, 즉 특수 용도 프로세서가 사용할 태스크가 다계층에 존재하고, 그룹핑을 적절하게 행할 수 없는 경우에서는, 컴파일 시에 컴파일러(40), 또는 실행 시에 스케줄러로서의 역할을 하는 범용 프로세서가, 태스크를 특정 용도 프로세서 그룹에 대하여 할당한다. 이 때, 특정 용도 프로세서에의 부하가 큰 경우, 범용 프로세서에서 처리를 대행한다. 또한, 결정한 그룹핑 정보는, 프로세서 그룹핑 테이블(422)로서 외부 기억 장치에 유지되고, 후단의 처리에서 사용된다.
본 실시예에서는, 도 22의 매크로 태스크 그래프 MTG1(500)에서 매크로 태스크 MT1_2(502)와 MT1_3(503)의 처리 코스트가 동등하며, 이들 매크로 태스크 내부의 매크로 태스크 그래프 MTG1_2(510), MTG1_3(520)의 실행에는 범용 프로세서에 의한 특정 용도 프로세서의 제어가 필요하기 때문에, 2개의 프로세서 그룹을 정의 한다.
다음으로, 매크로 태스크 MT1_2, MT1_3의 각 PU에 대한 처리 코스트나 병렬성에 따라서, 각 프로세서 그룹 내에서 필요로 되는 특정 용도 프로세서의 구성을 결정한다. 본 실시예에서는, 필요로 되는 프로세서 구성을 매크로 태스크 그래프 MTG1 상의 이용 가능한 리소스로 실현할 수 있기 때문에, 프로세서 그룹을, CPU0, DSP0, DRP0, DRP1, 및 CPU1, DSP1, BMP0, BMP1로 컴파일 시에 결정한다.
<스태틱 스케줄과 다이내믹 스케줄>
컴파일러(40)는 다음에 스케줄링 방법으로서, 스태틱 스케줄인지 다이내믹 스케줄인지를 판단한다(407). 각각의 스케줄링 방법의 상세는 후술하지만, 이하 간단히 설명한다. 우선, 만약, 태스크 MT에 조건 분기가 없어 가장 빠른 실행 조건을 미리 결정할 수 있는 MT 플로우이면, 전자의 스태틱 스케줄을 적용하여, 컴파일러(40)가 미리 태스크 MT의 스케줄링을 행하여, 동기 코드 및 FV 제어 코드(스케줄링 코드)를 태스크간에 삽입한다.
또한, 만약 태스크 MT에 조건 분기가 있거나, 혹은 태스크 MT의 처리 시간이 실행 시에 변동되는 등, 컴파일 시에 예측할 수 없는 MT 플로우이면, 후자의 다이내믹 스케줄을 적용하여, 컴파일러(40)는, 분기 등의 상황에 따른 제어를 실행 시에 행하는 스케줄링 프로그램을 생성한다. 컴파일러(40)가 스케줄링 프로그램(스케줄링 코드)을 생성하는 이점은, 종래의 멀티프로세서와 같이 0S 혹은 라이브러리에 거친 입도 태스크의 생성, 스케줄링을 의뢰하면, 수천 내지 수만 클럭의 오버 헤드가 발생하게 될 가능성이 있어, 그것을 피하기 위해서이다.
<스태틱 스케줄링>
우선, 스태틱 스케줄링의 처리 플로우에 대하여 설명한다. 스태틱 스케줄링에서는, 컴파일 시에 태스크 MT의 할당과 실행 순서가 이미 결정되어 있기 때문에, 우선, 매크로 태스크 스케줄링 처리(408)에 의해, 매크로 태스크 테이블(421) 및 프로세서 그룹핑 테이블(422) 정보를 참조하여, PU간에서의 실행 태스크간의 동기나 다른 태스크의 기동 등을 행하는 제어 정보를 생성하고, 해당 제어 정보의 삽입 개소를 결정한다.
또한, 태스크 프로그램 또는 태스크가 필요로 하는 데이터를, 다른 PU의 로컬 메모리 LM이나 공유 메모리 SM으로부터 해당 PU의 로컬 메모리 LM에 로드하는 등의 데이터 전송 정보도 아울러 생성한다. 이러한, 데이터 로컬라이제이션 방법에 의해, 로컬 메모리 LM을 유효하게 활용하여, 데이터의 전송량을 최소화한다. 이상의 처리에 의해 생성된 스케줄 정보는, 매크로 태스크 스케줄 테이블(423)로서, 외부 기억 장치에 유지된다.
계속해서, 컴파일러(40)는, 스태틱 FV 스케줄링 처리(409)를 행한다. 본 처리에서는, 도 18a~도 18d에서 설명한 태스크 병렬 처리 실행 시의 FV 제어 개념에 기초하여, 매크로 태스크 스케줄링(408)에서 생성된 스케줄 정보(매크로 태스크 스케줄 테이블)로부터, 태스크의 처리 코스트 및 스케줄 기한(처리 기한)으로 결정되는 여유도를 판정하고, 해당 여유도에 따른 동작 주파수·공급 전압을 결정하는 PU 동작 모드를 설정하기 위해, FV 제어 정보를 생성한다. 해당 FV 제어 정보는, 전원·FV 제어 스케줄 테이블(424)로서, 외부 기억 장치에 유지된다. 또한, 여유도 는, 예를 들면, 실행 개시로부터 실행 완료까지의 처리 시간과, 처리 기한까지의 시간으로부터 구해지는 것으로, 각 PU(10~17)의 성능상의 여유의 정도를 나타낸다. 예를 들면, 도 19a와 같이, CPU0의 실행 완료로부터 처리 기한까지의 시간이 긴 경우에는 여유도가 크다고 판정하고, 반대로 실행 완료로부터 처리 기한까지의 시간이 짧은 경우에는 여유도가 작다고 판정할 수 있다.
또한, 처리 기한(허용 시간)은, 입력 프로그램에 기술하거나, 컴파일러(40)의 처리 시에 도시하지 않은 콘솔로부터 입력해도 된다.
<다이내믹 스케줄링>
다음으로, 다이내믹 스케줄링의 처리 플로우에 대하여 설명한다. 다이내믹 스케줄링 시에는, 태스크 MT 내의 조건 분기 등의 불확정 요소에 의해 컴파일 시에 스케줄링 내용을 결정할 수 없다. 이 때문에 컴파일러(40)는, 태스크 MT의 처리 결과에 기초하여, 프로그램 실행 시에 동적으로 스케줄링을 행하는 스케줄링 프로그램을 생성한다(410). 본 프로그램은, 처리 결과에 기초하여 태스크 MT의 기동이나 동기, 및 해당 MT가 필요로 하는 데이터의 로드를 행한다. 또한, 도 18a~도 18d에서 설명한 태스크 병렬 처리 실행 시의 FV 제어 개념에 기초하여, PU의 동작 주파수·공급 전압을 결정하는 동작 모드(FV 제어 모드)를 설정한다. 생성한 스케줄링 프로그램은, 전원·FV 제어 스케줄 테이블(424)로서, 외부 기억 장치에 유지된다.
<스케줄링 코드의 생성>
컴파일러(40)는 이상의 처리에 의해, 입력 프로그램(400)의 PU(10~17)에의 스케줄링을 완료한다. 지금까지의 처리에서 생성한 스케줄링 정보는 외부 기억 장치에 테이블(421~424)로서 유지되어 있다. 컴파일러(40)는, 해당 테이블(421~424)에 액세스하여, 태스크의 실행 순서나 데이터 전송 정보, 및 FV 제어 정보를 판독하여, 입력 프로그램에 대하여 스태틱 스케줄부에는 제어 코드(스케줄링 코드)를, 또한 다이내믹 스케줄부에는 스케줄링 프로그램을 부가한다(411). 제어 코드는, 예를 들면 분산 메모리형 병렬 계산기에서의 병렬 프로그래밍 표준 인터페이스인 MPI(Message Passing Interface) 등을 이용하여 생성한다. 해당 코드가 부가된 입력 프로그램은, 또한 각 PU의 종류마다 준비된 로컬 컴파일러에서 처리함으로써, 해당 PU에서의 실행 바이너리 코드로 변환된다(412). 또한, 로컬 컴파일러는, 상술한 바와 같이 CPU, DSP, DRP, BMP의 PU의 종류마다 미리 준비되고, 컴파일러(40)로부터 각 PU의 종류에 따른 로컬 컴파일러를 호출하여 실행 바이너리 코드를 생성하는 것이다.
<스케줄링의 결과>
본 스케줄링 결과의 예를 도 23에 도시한다. 도 23은, MT의 스케줄링 결과를 PU마다 시간축에서 나타내고 있다. 본 예에서는 CPU0이 태스크의 기동이나 동기, FV 제어 등의 관리를 행하기 때문에, 최초로 CPU0 상에 컴파일러(40)가 생성한 제어 코드(550)가 로드된다. 해당 제어 코드(550)는, 각 PU의 FV 제어를 행하는 코드, 및 CPU0에서 매크로 태스크 MT1_1을 기동하는 코드로 표현되어 있다. 즉 CPU0은, 매크로 태스크 MT1_1을 실행하는 CPU0에 대하여 동작 모드를 FULL로 하도록 FV 제어 레지스터의 값을 "3"으로 설정한다. 또한, 다른 PU에 대해서는 처리할 MT가 없기 때문에, 동작 모드를 OFF로 하도록 FV 제어 레지스터의 값을 "0"으로 설정한다. 다음으로, CPU0은 자 CPU0에서 매크로 태스크 MT1_1의 처리를 개시한다.
CPU0에서 매크로 태스크 MT1_1 처리 종료 후, 컴파일러(40)가 생성한 제어 코드(551)를 실행하여, FV 제어 모드의 설정을 행한다. 다음으로 처리할 태스크는, 매크로 태스크 MT1_2 및 MT1_3의 하위층의 매크로 태스크 그래프 MTG에서 지정된 태스크 MT1_2_1 및 태스크 MT1_3_1이며, 전자는 CPU0에서, 후자는 CPU1에서 실행된다.
따라서 CPU0은 태스크 MT1_3_1을 처리하는 CPU1의 FV 제어 레지스터를 통상 모드(FULL)로 설정한다. 또한 CPU0에 관해서도, 이미 FV 제어 모드는 통상 모드이지만, 계속해서 MT1_2_1을 처리하기 위해 통상 모드(FULL)로 해 둔다.
이 때, 상기 태스크 MT1_2_1 및 상기 태스크 MT1_3_1의 처리 중에는, 다른 PU 상에서의 처리 태스크는 존재하지 않기 때문에, 해당 다른 PU는 계속해서 동작 모드를 OFF로 해 둔다. 계속해서 CPU0은, 자 CPU0에서 태스크 MT1_2_1을, 또한 CPU1에서 태스크 MT1_3_1의 처리를 개시한다.
또한 상술한 바와 같이, 매크로 태스크 MTG1_2는 조건 분기를 포함하지 않기 때문에 컴파일 시에서 이미 스케줄링이 행하여져 있어(스태틱 스케줄링), CPU0, DSP0, DRP0, DP1 그룹에 태스크 MT를 할당한다. 또한 매크로 태스크 MTG1_3은 조건 분기를 포함하기 때문에, 실행 시에 스케줄링을 행하는 프로그램을 부가하고, 실행 결과에 따라 CPU1, DSP1, BMP0, BMP1의 그룹에 태스크 MT를 할당한다.
계속해서 매크로 태스크 그래프 MTG1_2의 태스크 MT 그룹의 스케줄링에 대 하여 설명한다. 태스크 MT1_2_1의 실행이 CPU0에서 종료되면, CPU0은 제어 코드(552)를 실행하여, 태스크 MT1_2_2를 처리하기 위해 DSP0을 통상 동작 모드 FULL로 하도록, FV 제어 레지스터를 "3"으로 설정한다. 또한 태스크 MT1_2_4 및 MT1_2_5는 컴파일 시의 FV 스케줄링에 의한 태스크의 여유도 판정에 의해 DRP0, DRP1을 저전력 동작 모드 MIDDLE로 하도록, FV 제어 레지스터를 "2"로 설정한다. 또한, CPU0에서는 실행할 MT는 없지만, 스케줄러를 실행하여 DSP0, DRP0, 및 DRP1의 태스크의 동기 관리를 행하고 있기 때문에, 스케줄러는 CPU0에 대하여 저전력 동작 모드 LOW로 하도록, FV 제어 레지스터를 "1"로 설정한다. 그리고, 태스크 MT1_2_2, 태스크 MT1_2_4, 및 태스크 MT1_2_5의 처리를 개시한다. 또한, 태스크 MT1_2_2는 해당 MT 처리 종료 후, 마찬가지로 DSP0에서 태스크 MT1_2_3을 실행하게 되기 때문에, 이 시점에서 태스크 MT1_2_2 종료 후에 태스크 MT1_2_3을 기동하도록 태스크의 기동 예약(태스크 레디 큐에의 태스크의 등록)을 해 둔다.
다음으로 상기 태스크 MT1_2_4 및 태스크 MT1_2_5의 처리가 쌍방 모두 종료된 것을 CPU0이 판정하면, 해당 CPU0은 제어 코드(553)를 실행하여, CPU0은 태스크 MT1_2_6을 처리하는 자 CPU0의 동작 모드를 MIDDLE로, 또한 DRP0 및 DRP1은 처리할 태스크가 존재하지 않기 때문에, 동작 모드를 OFF로 설정하여, 통상보다도 전압과 동작 주파수를 저감한 상태에서 상태 태스크 MT1_2_6의 처리를 개시한다. 상기 태스크 MT1_2_6의 처리가 종료되면, CPU0은 제어 코드(554)를 실행하여 태스크 MT1_2_3의 처리 종료를 판정하면, MTG1_2 그룹 내의 태스크 처리가 완료되었기 때문에, CPU0은 DSP0의 동작 모드를 OFF로 설정한다.
계속해서 MTG1_3의 태스크 MT 그룹에 대하여 설명한다. 매크로 태스크 MT1_3은 내부에 분기를 갖기 때문에, 태스크를 실행하지 않으면 분기 방향을 알 수 없다. 따라서, 실행 시의 상황에 따라 태스크, 데이터의 로드, 태스크의 기동, 동기 및 FV 제어 코드의 관리를 행하는 다이내믹 스케줄러(555)를, CPU1에서 실행한다. 해당 스케줄러(555)는, 우선 태스크 MT1_3_1을 실행하기 위해 CPU1의 동작 모드를 FULL로 설정하고, 태스크 MT1_3_1을 기동한다. 태스크 MT1_3_1 실행 종료 후, 스케줄러(556)는 분기 방향을 판정하고, 다음에 기동할 태스크를 판단한다.
도 23에 도시한 스케줄링에서는, 태스크 MT1_3_2가 DSP1에서, 태스크 MT1_3_3이 BMP0에서 처리된다. 해당 처리의 기동 전에, 스케줄러(556)는 FV 스케줄링 결과에 따라 DSP1의 동작 모드를 FULL로, 또한 BMP0의 동작 모드를 LOW로 설정한다. CPU1에서는, 실행할 태스크 MT는 없지만, 스케줄러(556)를 실행하여 DSP1 및 BMP0의 태스크 관리를 행하고 있기 때문에, 스케줄러(556)는 CPU1의 동작 모드를 저전력 모드 LOW로 설정한다.
다음으로, CPU0 상의 다이내믹 스케줄러(557)는, 상기 태스크 MT1_3_2 및 태스크 MT1_3_3의 쌍방의 처리 종료를 판정하면, 다음으로 태스크 MT1_3_4를 처리하는 자 CPU0의 동작 모드(FV 제어 모드)를 FULL로, 또한 실행할 태스크가 존재하지 않는 DSP1 및 BMP0의 동작 모드를 OFF로 설정한다. 그리고, 자 CPU0에서, 상기 태스크 MT1_3_4를 실행한다.
이상에 의해, 이종의 PU(10~17)로 구성되는 멀티프로세서에서, 멀티그레인 병렬 처리에 의해, 실행 시간이 최소로 되도록 입력 프로그램을 병렬화하여 스케줄 링한 후, 각 PU간에서 처리 시간이 균일하게 되도록, PU마다 섬세하고 치밀하게 동작 주파수 제어 및 전원 관리를 행함으로써, 최소의 실행 시간으로 성능을 손상시키지 않고 소비 전력의 저감을 도모하는 것이 가능하게 되는 것이다.
<컴파일러가 생성하는 목적 프로그램>
컴파일러(40)에 의해, 이상에서 설명한 바와 같은 스케줄을 행하는 스케줄링 코드를, 입력 프로그램(400)에 부가하여 PU마다 출력한 출력 프로그램(목적 코드)의 일례를 도 24 및 도 25에 도시한다. 도 24, 도 25는, 상기 도 23에서 도시한 처리를 기술한 것으로, 도 24는 매크로 태스크 MTG1_2를 처리하는 프로세서의 그룹으로서 CPU0, DSP0, DRP0, DRP1의 각 PU용의 실행 코드를 도시한다. 또한, 도 25는, 매크로 태스크 MTG1_3을 처리하는 프로세서의 그룹으로서 CPU1, DSP1, BMP0, 1의 각 PU용의 실행 코드를 도시한다. 컴파일러(40)의 생성 코드는 의사 코드로 표현되어 있지만, 상술한 바와 같이 실제는 MPI 등의 인터페이스 규격에 따라서 표현된다.
<정리>
이상과 같이, 본 발명에 따르면, 다종의 프로세서 유닛 PU를 집적하는 멀티프로세서 시스템에서, 해당 PU를 효율적으로 동작시키는 프로그램의 분할 배치 및 제어 코드를 생성하는 컴파일러(40)에 의해, 해당 프로세서 시스템의 성능을 최대한 활용하면서, 최소한의 처리 시간 내에 저전력으로 효율적으로 처리하는 것이 가능하게 된다. 또한, 나아가서는 소프트웨어 개발자가 프로세서의 구성을 의식하지 않고, 단시간에 매우 효율이 양호한 프로그램 작성이 가능하게 된다.
<보충>
또한, 상기 실시예에서는, 1개의 칩에 복수의 PU(10~17)를 구비한 멀티프로세서 시스템에 본 발명을 적용한 예를 나타내었지만, 도 1에 도시한 칩을 복수 구비한 병렬 계산기에 적용하는 것도 가능하며, 상기한 바와 마찬가지의 작용 효과를 얻을 수 있다.
또한, 청구항 13에서, 상기 프로세서 유닛마다 설정된 프로파일링 정보에 기초하여 상기 단위 블록을 처리하는 처리 사이클수를 구하고, 해당 처리 사이클로부터 상기 연산 사이클 시간을 구하는 것을 특징으로 하는 멀티그레인 병렬화 컴파일러.
또한, 청구항 13에서, 상기 연산 사이클 시간은, 상기 프로세서 유닛마다 설정된 로컬 컴파일러에 의해 상기 단위 블록을 실행 코드로 변환하고, 상기 프로세서 유닛마다 설정된 프로파일링 정보에 기초하여 상기 단위 블록을 처리하는 처리 사이클수를 구하고, 해당 처리 사이클수에 기초하여 상기 연산 사이클 시간을 구하는 것을 특징으로 하는 멀티그레인 병렬화 컴파일러.
또한, 청구항 15에서, 상기 프로세서 유닛마다 설정된 프로파일링 정보에 기초하여 상기 단위 블록을 처리하는 처리 사이클수를 구하고, 해당 처리 사이클로부터 상기 전력을 구하는 것을 특징으로 하는 멀티그레인 병렬화 컴파일러.
또한, 청구항 15에서, 상기 연산 사이클 시간은, 상기 프로세서 유닛마다 설정된 로컬 컴파일러에 의해 상기 단위 블록을 실행 코드로 변환하고, 상기 프로세서 유닛마다 설정된 프로파일링 정보에 기초하여 상기 단위 블록을 처리하는 처리 사이클수를 구하고, 해당 처리 사이클수에 기초하여 상기 전력을 구하는 것을 특징으로 하는 멀티그레인 병렬화 컴파일러.
또한, 청구항 13에서, 상기 단위 블록의 병렬성을 추출하는 처리는, 상기 추출한 단위 블록을 매크로 태스크 그래프 테이블에 저장하고, 상기 단위 블록을 처리하는 데에 필요한 프로세서 유닛을 그룹화하여 프로세서 그룹핑 테이블에 저장하는 처리를 포함하며,
상기 스케줄링 코드를 생성하는 처리는, 상기 매크로 태스크 그래프 테이블과 프로세서 그룹핑 테이블 및 코스트 정보를 참조하여 프로세서 유닛의 제어 코드를 생성하는 처리와, 상기 단위 블록의 실행 순서에 따라서 상기 제어 코드를 삽입하는 처리를 포함하는 것을 특징으로 하는 멀티그레인 병렬화 컴파일러.
또한, 청구항 13에서, 상기 단위 블록의 병렬성을 추출하는 처리는, 상기 추출한 단위 블록을 매크로 태스크 그래프 테이블에 저장하고, 상기 단위 블록을 처리하는 데에 필요한 프로세서 유닛을 그룹화하여 프로세서 그룹핑 테이블에 저장하는 처리를 포함하며,
상기 스케줄링 코드를 생성하는 처리는, 상기 매크로 태스크 그래프 테이블과 프로세서 그룹핑 테이블 및 코스트 정보를 참조하여, 동적으로 상기 단위 블록의 스케줄링을 행하는 스케줄링 프로그램을 생성하는 처리와, 상기 단위 블록의 실행 순서에 따라서 상기 스케줄링 프로그램을 삽입하는 처리를 포함하는 것을 특징으로 하는 멀티그레인 병렬화 컴파일러.
본 발명에 따르면, 다양한 PU를 집적하는 멀티프로세서 시스템에서, 해당 PU를 효율적으로 동작시키는 프로그램의 분할 배치 및 제어 코드를 생성하는 컴파일러에 의해, 해당 프로세서 시스템의 성능을 최대한 활용하면서, 저전력으로 효율적으로 처리하는 것이 가능하게 된다. 또한, 나아가서는 소프트웨어 개발자가 프로세서의 구성을 의식하지 않고, 단시간에 효율이 양호한 프로그램 작성이 가능하게 된다. 그 결과, 높은 연산 성능을 갖고 또한 저전력으로 처리하는 것이 강하게 요망되는, 카 네비게이션 시스템이나 휴대 전화, 정보 가전용의 LSI에 본 발명을 적용할 수 있어, 고품질의 동화상이나 음성 처리, 또한 화상 인식이나 음성 인식 등의 기능을 실현하는 것이 가능하게 된다. 또한, 자동차에서의 정보계, 제어계 시스템용 LSI에 대해서도 적용할 수 있어, 자동 운전이나 안정 운전 시스템 등을 실현하는 것이 가능하게 된다. 또한 나아가서는 장래 매우 높은 연산 성능을 가지면서 저전력화가 필수로 되는, 슈퍼 컴퓨터에의 적용도 가능하다.

Claims (39)

  1. 단일 또는 복수 종류의 프로세서 유닛을 복수개 갖는 멀티프로세서 시스템으로서,
    상기 멀티프로세서 시스템은,
    상기 프로세서 유닛에 복수의 클럭 주파수 중의 1개를 동작 클럭으로서 공급하는 클럭 공급부와,
    상기 프로세서 유닛에 복수의 전압 중의 1개를 동작 전압으로서 공급하는 전력 공급부와,
    상기 프로세서 유닛에 배치되어 데이터 또는 명령을 저장하는 로컬 메모리와,
    상기 복수의 프로세서 유닛으로부터 액세스 가능한 공유 메모리와,
    상기 각 프로세서 유닛에 배치되어 각 프로세서 유닛에 공급하는 동작 클럭과 동작 전압을 각각 설정하는 시스템 제어 레지스터
    를 구비하며,
    상기 공유 메모리는, 미리 설정된 영역에 기입된 데이터를 상기 각 프로세서 유닛의 메모리 공간에 전송하는 브로드캐스트 영역을 갖고,
    상기 프로세서 유닛 중의 어느 하나가, 병렬 처리의 스케줄링에 기초하여 각 프로세서 유닛에 공급하는 동작 클럭과 동작 전압을 상기 브로드캐스트 영역에 기입할 때에는, 해당 브로드캐스트 영역에 기입된 동작 클럭과 동작 전압을 각 프로세서 유닛의 시스템 제어 레지스터에 전송하는 것을 특징으로 하는 멀티프로세서 시스템.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 시스템 제어 레지스터는, 해당 멀티프로세서 시스템을 구성하는 복수의 기능 부위 단위마다 대응하는 비트 필드를 복수 설정하고, 해당 비트 필드에 설정된 값에 따라서 상기 기능 부위 단위마다 동작 주파수와 동작 전압을 각각 설정하는 것을 특징으로 하는 멀티프로세서 시스템.
  5. 제4항에 있어서,
    상기 로컬 메모리는, 미리 복수의 영역으로 구분되고,
    상기 시스템 제어 레지스터는, 상기 기능 부위와 상기 로컬 메모리의 복수의 영역마다 대응한 비트 필드를 갖고, 해당 비트 필드에 설정된 값에 따라서 상기 메모리의 영역마다 동작 주파수와 동작 전압을 각각 설정하는 것을 특징으로 하는 멀티프로세서 시스템.
  6. 제5항에 있어서,
    상기 비트 필드는, 개별 어드레스를 갖고,
    상기 프로세서 유닛은 해당 어드레스를 참조하여 값을 설정함으로써, 상기 비트 필드에 대응한 상기 기능 부위 또는 상기 로컬 메모리의 1영역의 동작 주파수와 동작 전압을 설정하는 것을 특징으로 하는 멀티프로세서 시스템.
  7. 제4항 내지 제6항 중 어느 한 항에 있어서,
    상기 기능 부위는, 프로세서 유닛 내의 로컬 메모리와, 복수의 프로세서 유닛에서 공유하는 상기 공유 메모리와, 각 프로세서 유닛을 접속하는 로컬 버스를 포함하며, 이들 기능 부위 중 적어도 하나에 대하여, 기능 부위 단위마다 동작 주파수 또는 동작 전압을 각각 변경하는 것을 특징으로 하는 멀티프로세서 시스템.
  8. 제1항에 있어서,
    상기 공유 메모리는 미리 설정된 복수의 영역을 갖고,
    상기 공유 메모리의 상기 영역마다 공급하는 동작 전압을 설정하는 제2 시스템 제어 레지스터를 구비하고,
    상기 프로세서 유닛이 상기 제2 시스템 제어 레지스터에 설정한 값에 따라서 상기 공유 메모리의 영역마다 동작 전압을 각각 설정하는 것을 특징으로 하는 멀티프로세서 시스템.
  9. 제1항에 있어서,
    상기 프로세서 유닛 중의 어느 하나가, 병렬 처리의 처리 시간이 최소로 되는 스케줄링에 기초하여, 각 프로세서 유닛에 공급하는 동작 클럭과 동작 전압을 상기 시스템 제어 레지스터에 설정하는 것을 특징으로 하는 멀티프로세서 시스템.
  10. 제1항에 있어서,
    상기 시스템 제어 레지스터는, 해당 멀티프로세서 시스템의 어드레스 영역에서 프로세서 유닛마다 일의의 어드레스가 설정되고, 상기 각 프로세서 유닛으로부터 액세스 가능하게 설정된 것을 특징으로 하는 멀티프로세서 시스템.
  11. 삭제
  12. 삭제
  13. 단일 또는 복수 종류의 프로세서 유닛을 복수개 갖는 멀티프로세서 시스템에 실행시키는 목적 프로그램을 생성하는 컴파일러로서,
    상기 프로세서 유닛은, 특정 용도 프로세서 유닛과 범용 프로세서 유닛을 포함하고,
    입력 프로그램을 판독하는 처리와,
    상기 입력 프로그램을 해석하고, 상기 입력 프로그램을 복수의 입도의 단위 블록으로 분할하는 처리와,
    상기 단위 블록간의 제어 의존성, 및 데이터 의존성을 해석하고, 상기 단위 블록의 병렬성을 추출하는 처리와,
    상기 멀티프로세서 시스템이 구비하는 각 프로세서 유닛에서 상기 단위 블록을 처리하기 위해 필요한 연산 사이클 시간을 코스트 정보로서 구하는 처리와,
    상기 코스트 정보에 기초하여 상기 입력 프로그램의 처리 시간이 최소로 되도록, 상기 단위 블록을 처리하는 데에 필요한 상기 특정 용도 프로세서 유닛을 선택하고, 또한 적어도 하나의 범용 프로세서 유닛을 선택하며, 이들 특정 용도 프로세서 유닛과 범용 프로세서 유닛을 1개의 그룹으로 하여 상기 단위 블록을 할당하는 스케줄링 코드를 생성하는 처리와,
    상기 스케줄링 코드를 입력 프로그램에 부가하여, 상기 각 프로세서 유닛마다의 실행 코드를 생성하여, 목적 코드로서 출력하는 처리
    를 계산기에 실행시키는 것을 특징으로 하는 멀티그레인 병렬화 컴파일러를 기록한 컴퓨터 판독 가능 매체.
  14. 삭제
  15. 단일 또는 복수 종류의 프로세서 유닛을 복수개 갖는 멀티프로세서 시스템에 실행시키는 목적 프로그램을 생성하는 컴파일러로서,
    상기 프로세서 유닛은, 특정 용도 프로세서 유닛과 범용 프로세서 유닛을 포함하고,
    입력 프로그램을 판독하는 처리와,
    상기 입력 프로그램을 해석하고, 상기 입력 프로그램을 복수의 입도의 단위 블록으로 분할하는 처리와,
    상기 단위 블록간의 제어 의존성, 및 데이터 의존성을 해석하고, 상기 단위 블록의 병렬성을 추출하는 처리와,
    상기 멀티프로세서 시스템이 구비하는 각 프로세서 유닛에서 상기 단위 블록을 처리하기 위해 필요한 전력을 코스트 정보로서 구하는 처리와,
    상기 코스트 정보에 기초하여 상기 입력 프로그램의 처리 시간이 최소로 되도록, 상기 단위 블록을 처리하는 데에 필요한 상기 특정 용도 프로세서 유닛을 선택하고, 또한 적어도 하나의 범용 프로세서 유닛을 선택하며, 이들 특정 용도 프로세서 유닛과 범용 프로세서 유닛을 1개의 그룹으로 하여 상기 단위 블록을 할당하는 스케줄링 코드를 생성하는 처리와,
    상기 스케줄링 코드를 입력 프로그램에 부가하여, 상기 각 프로세서 유닛마다의 실행 코드를 생성하여, 목적 코드로서 출력하는 처리
    를 계산기에 실행시키는 것을 특징으로 하는 멀티그레인 병렬화 컴파일러를 기록한 컴퓨터 판독 가능 매체.
  16. 제13항 또는 제15항에 있어서,
    상기 스케줄링 코드를 생성하는 처리는,
    상기 단위 블록을 스케줄링에 의해 할당받은 프로세서 유닛에서 연산하였을 때에, 상기 연산에 필요로 하는 시간이 상기 스케줄링에서 허용된 시간 내이었던 경우에는,
    상기 프로세서 유닛의 연산 시에 소비하는 전력을 저감하기 위해 프로세서 유닛에 공급하는 동작 전압 및 동작 클럭을 변화 또는 차단하기 위한 제어 코드를 생성하는 처리를 포함하는 것을 특징으로 하는 멀티그레인 병렬화 컴파일러를 기록한 컴퓨터 판독 가능 매체.
  17. 제13항 또는 제15항에 있어서,
    상기 스케줄링 코드를 생성하는 처리는,
    상기 단위 블록을 스케줄링에 의해 할당받은 프로세서 유닛 이외의 프로세서 유닛에 대하여, 동작 클럭 및 동작 전원의 공급을 차단하기 위한 제어 코드를 생성하는 것을 특징으로 하는 멀티그레인 병렬화 컴파일러를 기록한 컴퓨터 판독 가능 매체.
  18. 삭제
  19. 제13항 또는 제15항에 있어서,
    상기 실행 코드를 생성하여, 목적 코드로서 출력하는 처리는,
    상기 각 프로세서 유닛의 종류에 따른 로컬 컴파일러를 이용하여 상기 실행 코드를 생성하는 것을 특징으로 하는 멀티그레인 병렬화 컴파일러를 기록한 컴퓨터 판독 가능 매체.
  20. 제13항 또는 제15항에 있어서,
    상기 멀티프로세서 시스템은, 상기 프로세서 유닛에 복수의 클럭 주파수 중의 1개를 동작 클럭으로서 공급하는 클럭 공급부와, 상기 프로세서 유닛에 복수의 전압 중의 1개를 동작 전압으로서 공급하는 전력 공급부와, 상기 클럭 공급부 및 전력 공급부가 프로세서 유닛에 공급하는 동작 클럭과 동작 전압을 설정하는 시스템 제어 레지스터를 갖고,
    상기 스케줄링 코드를 생성하는 처리는,
    상기 단위 블록을 스케줄링에 의해 할당받은 프로세서 유닛에서 연산하였을 때에, 상기 연산에 필요로 하는 시간이 상기 스케줄링에서 허용된 시간 내이었던 경우에는,
    상기 프로세서 유닛의 연산 시에 소비하는 전력을 저감하기 위해 상기 시스템 제어 레지스터에 설정하는 값을 변경하는 제어 코드를 생성하는 처리를 포함하는 것을 특징으로 하는 멀티그레인 병렬화 컴파일러를 기록한 컴퓨터 판독 가능 매체.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 제1항에 있어서,
    상기 로컬 메모리의 영역은, 뱅크로 구성되고, 상기 시스템 제어 레지스터는 상기 뱅크 단위로 클럭 주파수와 동작 전압을 설정하는 것을 특징으로 하는 멀티프로세서 시스템.
  38. 제1항 또는 제5항에 있어서,
    상기 로컬 메모리의 영역은, 소정의 어드레스 공간으로 구성되고, 상기 시스템 제어 레지스터는 상기 어드레스 공간 단위로 클럭 주파수와 동작 전압을 설정하는 것을 특징으로 하는 멀티프로세서 시스템.
  39. 제6항에 있어서, 상기 비트 필드는, 상기 기능 부위마다 상기 개별 어드레스를 설정한 것을 특징으로 하는 멀티프로세서 시스템.
KR20077003527A 2005-04-12 2006-04-12 멀티프로세서 시스템 및 멀티그레인 병렬화 컴파일러를 기록한 컴퓨터 판독 가능 매체 KR100861631B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2005-00114842 2005-04-12
JP2005114842A JP4082706B2 (ja) 2005-04-12 2005-04-12 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ

Publications (2)

Publication Number Publication Date
KR20070061795A KR20070061795A (ko) 2007-06-14
KR100861631B1 true KR100861631B1 (ko) 2008-10-07

Family

ID=37087143

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20077003527A KR100861631B1 (ko) 2005-04-12 2006-04-12 멀티프로세서 시스템 및 멀티그레인 병렬화 컴파일러를 기록한 컴퓨터 판독 가능 매체

Country Status (6)

Country Link
US (2) US7895453B2 (ko)
EP (3) EP1870792A4 (ko)
JP (1) JP4082706B2 (ko)
KR (1) KR100861631B1 (ko)
CN (3) CN101571745B (ko)
WO (1) WO2006109887A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011103587A3 (en) * 2010-02-22 2012-01-05 Benjamin Vigoda Superscalar control for a probability computer
KR101155202B1 (ko) 2009-12-24 2012-06-13 포항공과대학교 산학협력단 멀티 코어 프로세서의 전력 관리 방법, 멀티 코어 프로세서의 전력 관리 방법이 기록된 기록매체 및 이를 실행하는 멀티 코어 프로세서 시스템

Families Citing this family (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4784827B2 (ja) * 2006-06-06 2011-10-05 学校法人早稲田大学 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
JP4697805B2 (ja) * 2006-10-24 2011-06-08 ルネサスエレクトロニクス株式会社 データ処理装置
US7949887B2 (en) 2006-11-01 2011-05-24 Intel Corporation Independent power control of processing cores
JP4945410B2 (ja) * 2006-12-06 2012-06-06 株式会社東芝 情報処理装置及び情報処理方法
US7917784B2 (en) * 2007-01-07 2011-03-29 Apple Inc. Methods and systems for power management in a data processing system
US20100070958A1 (en) * 2007-01-25 2010-03-18 Nec Corporation Program parallelizing method and program parallelizing apparatus
US8291197B2 (en) 2007-02-12 2012-10-16 Oracle America, Inc. Aggressive loop parallelization using speculative execution mechanisms
JP2007305148A (ja) * 2007-06-25 2007-11-22 Univ Waseda マルチプロセッサシステム
EP2178115B1 (en) * 2007-08-09 2017-12-13 Fujitsu Limited Semiconductor integrated circuit
EP2179356A1 (de) * 2007-08-16 2010-04-28 Siemens Aktiengesellschaft Kompilieren von computerprogrammen für multicore-prozessoren und deren ausführung
JP2009064340A (ja) * 2007-09-07 2009-03-26 Murata Mach Ltd データ転送システム
JP2009069921A (ja) 2007-09-11 2009-04-02 Hitachi Ltd マルチプロセッサシステム
EP2202638A4 (en) * 2007-09-21 2011-12-14 Fujitsu Ltd TRANSLATION FACILITY, TRANSLATION PROCEDURE AND TRANSLATION PROGRAM AND PROCESSOR CONTROL SYSTEM AND PROCESSOR
JP2009140304A (ja) 2007-12-07 2009-06-25 Sony Corp 半導体チップ
KR100957060B1 (ko) * 2007-12-12 2010-05-13 엠텍비젼 주식회사 명령어 병렬 스케줄러, 방법 및 그 기록매체
JP4823209B2 (ja) * 2007-12-13 2011-11-24 アラクサラネットワークス株式会社 パケット転送装置
JP2009146243A (ja) * 2007-12-17 2009-07-02 Hitachi Ltd 基板バイアス制御を活用する電力性能最適化コンパイラ及びプロセッサシステム
US8078897B2 (en) * 2008-01-18 2011-12-13 Texas Instruments Incorporated Power management in federated/distributed shared memory architecture
JP5214262B2 (ja) * 2008-01-30 2013-06-19 株式会社東芝 半導体集積回路及び電源制御方法
KR101418969B1 (ko) * 2008-02-27 2014-08-13 삼성전자주식회사 프로세서 및 컴파일 방법
JP4996519B2 (ja) * 2008-03-27 2012-08-08 パナソニック株式会社 仮想マルチプロセッサ、システムlsi、携帯電話機器、及び仮想マルチプロセッサの制御方法
US8176341B2 (en) * 2008-03-31 2012-05-08 Intel Corporation Platform power management based on latency guidance
US20100058086A1 (en) * 2008-08-28 2010-03-04 Industry Academic Cooperation Foundation, Hallym University Energy-efficient multi-core processor
JP5245722B2 (ja) * 2008-10-29 2013-07-24 富士通株式会社 スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム
WO2010060243A1 (en) * 2008-11-28 2010-06-03 Siemens Aktiengesellschaft Automatic control system and method for executing control program in parallel
US9323306B2 (en) * 2008-12-03 2016-04-26 Telefonaktiebolaget Lm Ericsson (Publ) Energy based time scheduler for parallel computing system
US8495342B2 (en) * 2008-12-16 2013-07-23 International Business Machines Corporation Configuring plural cores to perform an instruction having a multi-core characteristic
JP5007838B2 (ja) * 2009-03-05 2012-08-22 富士ゼロックス株式会社 情報処理装置および情報処理プログラム
JP5293289B2 (ja) * 2009-03-11 2013-09-18 富士通株式会社 マルチコアプロセッサ及びその制御方法
JP4621786B2 (ja) * 2009-04-28 2011-01-26 株式会社東芝 情報処理装置、並列処理最適化方法およびプログラム
CN102105866B (zh) * 2009-05-25 2014-02-26 松下电器产业株式会社 多处理器系统、多处理器控制方法、以及多处理器集成电路
US8230410B2 (en) * 2009-10-26 2012-07-24 International Business Machines Corporation Utilizing a bidding model in a microparallel processor architecture to allocate additional registers and execution units for short to intermediate stretches of code identified as opportunities for microparallelization
CN101714103B (zh) * 2009-12-15 2012-11-28 中国华录·松下电子信息有限公司 基于可编程逻辑器件的任务调度器
US8689037B2 (en) * 2009-12-16 2014-04-01 Qualcomm Incorporated System and method for asynchronously and independently controlling core clocks in a multicore central processing unit
US8909962B2 (en) 2009-12-16 2014-12-09 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US9176572B2 (en) 2009-12-16 2015-11-03 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US9563250B2 (en) * 2009-12-16 2017-02-07 Qualcomm Incorporated System and method for controlling central processing unit power based on inferred workload parallelism
US9104411B2 (en) 2009-12-16 2015-08-11 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US20110145559A1 (en) * 2009-12-16 2011-06-16 Thomson Steven S System and method for controlling central processing unit power with guaranteed steady state deadlines
US8650426B2 (en) 2009-12-16 2014-02-11 Qualcomm Incorporated System and method for controlling central processing unit power in a virtualized system
US9128705B2 (en) 2009-12-16 2015-09-08 Qualcomm Incorporated System and method for controlling central processing unit power with reduced frequency oscillations
US8775830B2 (en) 2009-12-16 2014-07-08 Qualcomm Incorporated System and method for dynamically controlling a plurality of cores in a multicore central processing unit based on temperature
WO2011079424A1 (zh) * 2009-12-31 2011-07-07 西门子公司 并行化自动控制程序的方法及编译器
JP4809497B2 (ja) 2010-02-25 2011-11-09 ファナック株式会社 複数の独立したシーケンスプログラムを並列実行するプログラマブルコントローラ
US8723877B2 (en) * 2010-05-20 2014-05-13 Apple Inc. Subbuffer objects
JP5382220B2 (ja) * 2010-06-30 2014-01-08 富士通株式会社 データ復元プログラム、データ復元装置およびデータ復元方法
US8943334B2 (en) * 2010-09-23 2015-01-27 Intel Corporation Providing per core voltage and frequency control
JP5581960B2 (ja) * 2010-10-14 2014-09-03 凸版印刷株式会社 半導体装置
CN101989192A (zh) * 2010-11-04 2011-03-23 浙江大学 一种程序自动并行化的方法
WO2012086040A1 (ja) 2010-12-22 2012-06-28 富士通株式会社 マルチコアプロセッサシステム、および電力制御方法
WO2012093498A1 (en) * 2011-01-07 2012-07-12 Nec Corporation Energy-efficient resource management system and method for heterogeneous multicore processors
US8468373B2 (en) * 2011-01-14 2013-06-18 Apple Inc. Modifying performance parameters in multiple circuits according to a performance state table upon receiving a request to change a performance state
KR101754998B1 (ko) * 2011-01-27 2017-07-06 삼성전자주식회사 멀티 코어 시스템 및 멀티 코어 시스템에서의 데이터 병렬 처리 방법
CN107256077A (zh) * 2011-02-10 2017-10-17 富士通株式会社 调度方法、设计辅助方法以及系统
US8799880B2 (en) * 2011-04-08 2014-08-05 Siemens Aktiengesellschaft Parallelization of PLC programs for operation in multi-processor environments
CN102207892B (zh) * 2011-05-27 2013-03-27 清华大学 一种动态可重构处理器内子单元间进行同步的方法
US8494477B2 (en) * 2011-06-24 2013-07-23 Intel Corporation Power management for an electronic device
KR20130002046A (ko) 2011-06-28 2013-01-07 삼성전자주식회사 멀티 코어를 포함하는 저장 장치의 전력 관리 방법
JP5653315B2 (ja) * 2011-07-28 2015-01-14 株式会社東芝 情報処理装置
US8918770B2 (en) * 2011-08-25 2014-12-23 Nec Laboratories America, Inc. Compiler for X86-based many-core coprocessors
JP6103647B2 (ja) * 2011-11-04 2017-04-05 学校法人早稲田大学 プロセッサシステム及びアクセラレータ
KR101893982B1 (ko) * 2012-04-09 2018-10-05 삼성전자 주식회사 분산 처리 시스템, 분산 처리 시스템의 스케줄러 노드 및 스케줄 방법, 및 이를 위한 프로그램 생성 장치
FR2989797B1 (fr) * 2012-04-24 2014-12-26 Kalray Reduction de la consommation electrique d'une matrice de processeurs
RU2012127581A (ru) * 2012-07-02 2014-01-10 ЭлЭсАй Корпорейшн Генератор исходного кода для разработки и тестирования программного обеспечения для многопроцессорных сред
RU2012127578A (ru) 2012-07-02 2014-01-10 ЭлЭсАй Корпорейшн Анализатор применимости программного модуля для разработки и тестирования программного обеспечения для многопроцессорных сред
US9619282B2 (en) 2012-08-21 2017-04-11 Lenovo (Singapore) Pte. Ltd. Task scheduling in big and little cores
US20140068581A1 (en) * 2012-08-30 2014-03-06 International Business Machines Corporation Optimized division of work among processors in a heterogeneous processing system
US9110734B2 (en) * 2012-11-12 2015-08-18 International Business Machines Corporation Power-constrained compiler code generation and scheduling of work in a heterogeneous processing system
EP2950211B1 (en) * 2013-01-23 2021-07-07 Waseda University Parallelism extraction method and method for making program
US9442559B2 (en) 2013-03-14 2016-09-13 Intel Corporation Exploiting process variation in a multicore processor
CN103257892B (zh) * 2013-05-27 2016-03-23 北京世纪瑞尔技术股份有限公司 一种基于宏组合的多任务调度方法及系统
JP6018022B2 (ja) 2013-06-14 2016-11-02 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
JP2015014833A (ja) * 2013-07-03 2015-01-22 スパンション エルエルシー 再構築可能なlsi
KR102114453B1 (ko) 2013-07-19 2020-06-05 삼성전자주식회사 모바일 장치 및 그것의 제어 방법
CN104424156A (zh) * 2013-09-09 2015-03-18 中兴通讯股份有限公司 处理器的核处理方法、装置及终端
JP2016532183A (ja) * 2013-10-03 2016-10-13 華為技術有限公司Huawei Technologies Co.,Ltd. ソフトウェアプログラムの計算ブロックをマルチプロセッサシステムのコアに割り当てるための方法及びシステム
JP6387626B2 (ja) * 2014-03-04 2018-09-12 日本電気株式会社 情報処理システム、情報処理方法、および、スケジューリングプログラム
US10180828B2 (en) * 2014-04-29 2019-01-15 Significs And Elements, Llc Systems and methods for power optimization of processors
JP6372331B2 (ja) 2014-12-05 2018-08-15 富士通株式会社 並列演算装置、並列演算システム、および並列演算プログラム
JP6072090B2 (ja) * 2015-01-16 2017-02-01 京セラドキュメントソリューションズ株式会社 情報処理装置、データ処理方法
US9400685B1 (en) * 2015-01-30 2016-07-26 Huawei Technologies Co., Ltd. Dividing, scheduling, and parallel processing compiled sub-tasks on an asynchronous multi-core processor
CN105005547B (zh) * 2015-06-25 2017-08-25 浪潮电子信息产业股份有限公司 一种基于numa的多路服务器完全物理分区方法
EP3121714B1 (en) * 2015-07-23 2018-02-21 Karlsruher Institut für Technologie Computer system and method for multi-processor communication
JP6439623B2 (ja) 2015-08-05 2018-12-19 富士通株式会社 計算機、動作周波数決定プログラム及び動作周波数決定方法
JP6638732B2 (ja) * 2015-10-13 2020-01-29 富士通株式会社 制御システムおよび制御方法
US10073718B2 (en) 2016-01-15 2018-09-11 Intel Corporation Systems, methods and devices for determining work placement on processor cores
US10877816B2 (en) * 2016-04-20 2020-12-29 Samsung Electronics Co., Ltd. Optimal task scheduler
JP6808414B2 (ja) * 2016-09-21 2021-01-06 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
US10386909B1 (en) * 2016-09-28 2019-08-20 Cadence Design Systems, Inc. Method and system to mitigate large power load steps due to intermittent execution in a computation system
EP3343351B1 (en) 2016-12-28 2023-04-26 Waseda University Parallel program generating method and parallelization compiling apparatus
US10459817B2 (en) 2017-01-18 2019-10-29 International Business Machines Corporation Evaluating performance improvement of executing instructions in a first processor over execution on a second processor
KR102475892B1 (ko) * 2017-07-26 2022-12-08 삼성전자주식회사 집적 회로, 집적 회로에게 전력을 공급하는 방법 및 시스템
JP6933052B2 (ja) * 2017-08-23 2021-09-08 富士通株式会社 情報処理装置、コンパイル方法及びコンパイルプログラム
JP7031930B2 (ja) * 2018-03-19 2022-03-08 Necプラットフォームズ株式会社 プログラム生成部、情報処理装置、プログラム生成方法、及びプログラム
JP2019179418A (ja) * 2018-03-30 2019-10-17 株式会社デンソー スケジューリング方法、スケジューリング装置
RU2685018C1 (ru) * 2018-04-24 2019-04-16 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Способ распараллеливания программ в вычислительной системе
RU2691860C1 (ru) * 2018-06-25 2019-06-18 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Способ распараллеливания программ в среде логического программирования в вычислительной системе
GB2575290B (en) * 2018-07-04 2020-12-02 Graphcore Ltd Gateway Fabric Ports
JP7087752B2 (ja) * 2018-07-11 2022-06-21 株式会社デンソー 電子装置
US10831535B2 (en) 2019-01-01 2020-11-10 International Business Machines Corporation Reducing minimum operating voltage through heterogeneous codes
RU2704533C1 (ru) * 2019-01-28 2019-10-29 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Способ распараллеливания программ в среде агентно-ориентированного программирования в вычислительной системе
JP6890738B2 (ja) 2019-02-26 2021-06-18 三菱電機株式会社 情報処理装置、情報処理方法及び情報処理プログラム
CN111913743B (zh) * 2019-05-09 2023-04-14 杭州海康威视数字技术股份有限公司 数据处理方法及装置
JP7259656B2 (ja) 2019-09-04 2023-04-18 トヨタ自動車株式会社 車両の制御装置、車両の制御方法及び制御プログラム
JP7316902B2 (ja) 2019-10-16 2023-07-28 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
KR20210132862A (ko) * 2020-04-28 2021-11-05 삼성전자주식회사 클록 제어 방법 및 이를 위한 전자 장치
CN112257362B (zh) * 2020-10-27 2023-01-31 海光信息技术股份有限公司 逻辑代码的验证方法、验证装置以及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001175619A (ja) * 1999-12-22 2001-06-29 Univ Waseda シングルチップマルチプロセッサ
US20050066330A1 (en) * 2003-08-14 2005-03-24 Tatsunori Kanai Method and system for performing real-time operation

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1013070B (zh) * 1988-01-09 1991-07-03 北京信通电脑技术公司 直接处理接近数学公式的″机器表达式″的计算机系统
JPH0786787B2 (ja) * 1988-04-12 1995-09-20 日本電気株式会社 マイクロコンピュータ
US5461266A (en) * 1990-11-27 1995-10-24 Hitachi, Ltd. Power consumption control system
JP3343346B2 (ja) * 1990-11-28 2002-11-11 株式会社日立製作所 消費電力制御方式、情報処理装置および複合部品
US5392430A (en) * 1992-10-30 1995-02-21 International Business Machines Hierarchical scheduling method for processing tasks having precedence constraints on a parallel processing system
JP3433970B2 (ja) * 1993-05-25 2003-08-04 シャープ株式会社 デジタル電子機器用電力制御装置、該電力制御装置により電力が制御される処理装置、及び該電力制御装置を備えたデジタル電子機器用電力管理システム
JP3718251B2 (ja) * 1994-02-28 2005-11-24 株式会社ルネサステクノロジ データ処理装置
US5778237A (en) * 1995-01-10 1998-07-07 Hitachi, Ltd. Data processor and single-chip microcomputer with changing clock frequency and operating voltage
US5815715A (en) * 1995-06-05 1998-09-29 Motorola, Inc. Method for designing a product having hardware and software components and product therefor
US5996083A (en) * 1995-08-11 1999-11-30 Hewlett-Packard Company Microprocessor having software controllable power consumption
US5630110A (en) 1996-03-01 1997-05-13 Samsung Electronics Co., Ltd. Method and apparatus for enhancing performance of a processor
JPH11272490A (ja) 1998-03-20 1999-10-08 Mitsubishi Electric Corp 診断制御システム
US6205519B1 (en) * 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
JP2000003225A (ja) * 1998-06-16 2000-01-07 Hitachi Ltd データ処理装置及びデータ処理システム
FI117523B (fi) * 1998-10-07 2006-11-15 Nokia Corp Menetelmä tehonkulutuksen säätämiseksi
US6477654B1 (en) * 1999-04-06 2002-11-05 International Business Machines Corporation Managing VT for reduced power using power setting commands in the instruction stream
JP3138737B1 (ja) 1999-10-22 2001-02-26 東京大学長 パワー制御装置及び方法並びにパワー制御プログラムを記録した記録媒体
US6587737B2 (en) * 2000-09-14 2003-07-01 Sulzer Makert And Technology Ag Method for the monitoring of a plant
JP2002215597A (ja) * 2001-01-15 2002-08-02 Mitsubishi Electric Corp マルチプロセッサ装置
JP2003099148A (ja) * 2001-09-19 2003-04-04 Sanyo Electric Co Ltd データ処理装置とこれに利用可能なシステム制御装置およびデータ変換方法
US7111178B2 (en) * 2001-09-28 2006-09-19 Intel Corporation Method and apparatus for adjusting the voltage and frequency to minimize power dissipation in a multiprocessor system
JP3794312B2 (ja) * 2001-11-08 2006-07-05 ソニー株式会社 電源電圧周波数制御回路
AU2002257172A1 (en) * 2002-04-19 2003-11-03 International Business Machines Corporation Power control of a processor using hardware structures controlled by a compiler with an accumulated instruction profile
JP3485558B1 (ja) * 2002-05-28 2004-01-13 沖電気工業株式会社 半導体集積回路
JP2004038642A (ja) 2002-07-04 2004-02-05 Renesas Technology Corp マルチプロセッサ
JP2004199139A (ja) * 2002-12-16 2004-07-15 Matsushita Electric Ind Co Ltd プロセッサシステム、命令列最適化装置、および命令列最適化プログラム
JP3896087B2 (ja) 2003-01-28 2007-03-22 松下電器産業株式会社 コンパイラ装置およびコンパイル方法
JP2004234116A (ja) 2003-01-28 2004-08-19 Hitachi Information Technology Co Ltd 電力供給課金システム及び電力供給課金方法
JP4177681B2 (ja) 2003-02-20 2008-11-05 学校法人早稲田大学 コンパイル方法、コンパイラ、およびコンパイル装置
JP4090908B2 (ja) 2003-02-21 2008-05-28 シャープ株式会社 画像処理装置および画像形成装置
US7185215B2 (en) * 2003-02-24 2007-02-27 International Business Machines Corporation Machine code builder derived power consumption reduction
US7009363B2 (en) * 2003-03-26 2006-03-07 Pathfinder Energy Services, Inc. Optimized battery life in multiple battery applications
US7134031B2 (en) * 2003-08-04 2006-11-07 Arm Limited Performance control within a multi-processor system
US6956579B1 (en) * 2003-08-18 2005-10-18 Nvidia Corporation Private addressing in a multi-processor graphics processing system
US8190863B2 (en) * 2004-07-02 2012-05-29 Intel Corporation Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction
US7930539B2 (en) * 2004-08-03 2011-04-19 Hewlett-Packard Development Company, L.P. Computer system resource access control
JP4557803B2 (ja) * 2005-05-27 2010-10-06 富士通株式会社 ネットワークシステム及び通信方法
US7464280B2 (en) * 2005-06-22 2008-12-09 Hewlett-Packard Development Company, L.P. Power module for a plurality of processors
JP4457047B2 (ja) * 2005-06-22 2010-04-28 株式会社ルネサステクノロジ マルチプロセッサシステム
US7870400B2 (en) * 2007-01-02 2011-01-11 Freescale Semiconductor, Inc. System having a memory voltage controller which varies an operating voltage of a memory and method therefor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001175619A (ja) * 1999-12-22 2001-06-29 Univ Waseda シングルチップマルチプロセッサ
US20050066330A1 (en) * 2003-08-14 2005-03-24 Tatsunori Kanai Method and system for performing real-time operation

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101155202B1 (ko) 2009-12-24 2012-06-13 포항공과대학교 산학협력단 멀티 코어 프로세서의 전력 관리 방법, 멀티 코어 프로세서의 전력 관리 방법이 기록된 기록매체 및 이를 실행하는 멀티 코어 프로세서 시스템
WO2011103587A3 (en) * 2010-02-22 2012-01-05 Benjamin Vigoda Superscalar control for a probability computer

Also Published As

Publication number Publication date
CN101571745B (zh) 2012-04-04
CN101019084A (zh) 2007-08-15
EP2657839A2 (en) 2013-10-30
CN101504619A (zh) 2009-08-12
JP2006293768A (ja) 2006-10-26
EP2620840B1 (en) 2016-02-03
US20070255929A1 (en) 2007-11-01
EP2657839A3 (en) 2014-08-20
CN101504619B (zh) 2012-08-08
EP2657839B1 (en) 2020-06-03
EP1870792A1 (en) 2007-12-26
EP1870792A4 (en) 2010-11-03
KR20070061795A (ko) 2007-06-14
US20100146310A1 (en) 2010-06-10
US8812880B2 (en) 2014-08-19
JP4082706B2 (ja) 2008-04-30
CN100514253C (zh) 2009-07-15
US7895453B2 (en) 2011-02-22
WO2006109887A1 (ja) 2006-10-19
EP2620840A1 (en) 2013-07-31
CN101571745A (zh) 2009-11-04

Similar Documents

Publication Publication Date Title
KR100861631B1 (ko) 멀티프로세서 시스템 및 멀티그레인 병렬화 컴파일러를 기록한 컴퓨터 판독 가능 매체
US8051412B2 (en) Global compiler for controlling heterogeneous multiprocessor
US8250548B2 (en) Method for controlling heterogeneous multiprocessor and multigrain parallelizing compiler
US8438359B2 (en) Memory management method, information processing device, program creation method, and program
JP6018022B2 (ja) 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
Giorgi et al. An introduction to DF-Threads and their execution model
US20140137123A1 (en) Microcomputer for low power efficient baseband processing
JP2007305148A (ja) マルチプロセッサシステム
Lee et al. A systematic design space exploration of MPSoC based on synchronous data flow specification
Arnold et al. Power aware heterogeneous MPSoC with dynamic task scheduling and increased data locality for multiple applications
Ruggiero et al. Application-specific power-aware workload allocation for voltage scalable MPSoC platforms
Abbas et al. Run-time parallelization switching for resource optimization on an MPSoC platform
Leupers et al. Cool mpsoc programming
Bui et al. Streamorph: A case for synthesizing energy-efficient adaptive programs using high-level abstractions
Nadeem et al. GALS-CMP: chip-multiprocessor for GALS embedded systems
Niknam Generalized strictly periodic scheduling analysis, resource optimization, and implementation of adaptive streaming applications
Ghadge Improving Code Overlay Performance by Pre-fetching in Scratch Pad Memory Systems

Legal Events

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

Payment date: 20110905

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140708

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150918

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160919

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190916

Year of fee payment: 12