JP2010182096A - Program parallel execution system and program parallel execution method on multi-core processor - Google Patents

Program parallel execution system and program parallel execution method on multi-core processor Download PDF

Info

Publication number
JP2010182096A
JP2010182096A JP2009025044A JP2009025044A JP2010182096A JP 2010182096 A JP2010182096 A JP 2010182096A JP 2009025044 A JP2009025044 A JP 2009025044A JP 2009025044 A JP2009025044 A JP 2009025044A JP 2010182096 A JP2010182096 A JP 2010182096A
Authority
JP
Japan
Prior art keywords
task
group
processor cores
program
processor
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2009025044A
Other languages
Japanese (ja)
Other versions
JP5453825B2 (en
Inventor
Junji Sakai
淳嗣 酒井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2009025044A priority Critical patent/JP5453825B2/en
Publication of JP2010182096A publication Critical patent/JP2010182096A/en
Application granted granted Critical
Publication of JP5453825B2 publication Critical patent/JP5453825B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To provide a parallel execution environment wherein overhead is reduced and the execution time is easily predicted on the multi-core processor of a general purpose CPU base. <P>SOLUTION: A plurality of processor cores of the multi-core processor 10 are divided into the processor cores of a first group for operating an operating system 20 and operating a first application program 21 on the operating system and the processor cores of a second group for operating a second application program 31 by a request from the first application without operating the operating system, and a control means is included for performing control for executing the second application program or receiving the processing result of the second application program by the first application program by performing communication between the processor cores of the first group and the processor cores of the second group. <P>COPYRIGHT: (C)2010,JPO&INPIT

Description

本発明は、複数のプロセッサコアをバスによって相互結合したマルチコアプロセッサを備えるプログラム並列実行システムとマルチコアプロセッサ上のプログラム並列実行方法に関する。   The present invention relates to a program parallel execution system including a multi-core processor in which a plurality of processor cores are interconnected by a bus, and a program parallel execution method on the multi-core processor.

単一の汎用CPUだけでは処理能力が不足する場合に用いられている技術としては、専用のハードウェア機構、例えば動画処理ハードウェア等を追加し、あるいは、DSP(ディジタルシグナルプロセッサ)や3Dグラフィックプロセッサ(GPUとも称される)等の、用途に特化した演算能力を有する特別なプロセッサを導入し、これらを汎用CPUと組み合わせて所望の処理を行わせる手法がある。   As a technique used when a single general-purpose CPU is insufficient in processing capacity, a dedicated hardware mechanism such as a moving image processing hardware is added, or a DSP (digital signal processor) or a 3D graphic processor There is a method of introducing a special processor having a calculation capability specialized for a use, such as a GPU (also referred to as a GPU), and performing a desired process in combination with a general-purpose CPU.

例えば、NECエレクトロニクス社による携帯機器用プロセッサMP201は、汎用CPUであるARM9に加え、画像や音声処理用にDSP(K611)、画像処理用にイメージ・プロセッサ及びローテータを備えており、動画再生の中枢処理をDSPで行わせることで所望の動画再生能力を実現できる。   For example, a portable device processor MP201 by NEC Electronics Corporation includes a general-purpose CPU ARM9, a DSP (K611) for image and sound processing, and an image processor and rotator for image processing. The desired moving image reproduction capability can be realized by performing the processing by the DSP.

このように汎用CPUに加えて、画像や音声処理用にDSPを備える関連技術が、例えば特許文献1に記載されている。   In this way, in addition to the general-purpose CPU, a related technology including a DSP for image and sound processing is described in Patent Document 1, for example.

他方、汎用CPUの能力向上策の一つとして、マルチコア技術の開発が進んでいる。マルチコアプロセッサとは、「コア」と呼ばれる単体CPUを複数個結合したものであり、複数コアを同時に動かす並列処理によって高い処理能力を実現することができる。   On the other hand, development of multi-core technology is progressing as one of the measures for improving the capacity of general-purpose CPUs. A multi-core processor is a combination of a plurality of single CPUs called “cores”, and high processing capability can be realized by parallel processing that moves multiple cores simultaneously.

マルチコアプロセッサの例として、NECエレクトロニクス社/ARM社によるMPCoreが存在する。MPCoreは、ARM11コアを複数個(例えば4個)バス結合してワンチップに収めている。   An example of a multi-core processor is MPCore by NEC Electronics / ARM. In MPCore, a plurality of (for example, four) ARM11 cores are combined in a single chip.

汎用CPU上ではシステム内の多種多様な処理を行えるため、OS(オペレーティングシステム)を導入して、その上で多数のタスクを切り替えながら実行する形態をとることが通例である。マルチコアプロセッサでは、SMP(対称型マルチプロセシング)型のOSとして、例えば、Linuxはじめとする各種UNIXや、マイクロソフト社のWindows等が用いられる。   Since a wide variety of processes in the system can be performed on a general-purpose CPU, it is a common practice to introduce an OS (operating system) and execute a number of tasks while switching them. In the multi-core processor, for example, various UNIX such as Linux, Microsoft Windows, etc. are used as an SMP (symmetric multi-processing) type OS.

マルチコアプロセッサ上では、アプリケーションをいくつかの部分に分解して複数コアで並列実行させることにより、アプリケーションの高速処理が可能である。例えば、動画再生アプリケーションにおいて、動画デコード処理を複数タスクで構成し、それらのタスクをLinuxやWindows上で実行開始させると、これらのOSが各タスクを各プロセッサコアに配置し、マルチコアを利用した並列処理によって動作再生を高速で行うことができる。   On a multi-core processor, high-speed processing of an application is possible by decomposing the application into several parts and executing them in parallel on multiple cores. For example, in a video playback application, when a video decoding process is composed of a plurality of tasks and execution of those tasks is started on Linux or Windows, these OSs allocate each task to each processor core, and use multi-core in parallel. The operation can be played back at high speed by the processing.

このように複数コアを同時に動かす並列処理によって高い処理能力を実現するマルチコアプロセッサに関する関連技術が、例えば特許文献2に記載されている。   For example, Patent Document 2 discloses a related technology relating to a multi-core processor that realizes high processing capability by parallel processing that moves a plurality of cores simultaneously.

このように、これまでは、単一CPUで処理能力が不足する場合、専用のハードウェア機構あるいは特別なプロセッサを導入して処理させるか、マルチコア上の並列化アプリケーションとして処理させる、という手法が用いられてきた。   Thus, until now, when the processing capability of a single CPU is insufficient, a method has been used in which a dedicated hardware mechanism or special processor is introduced for processing, or processing is performed as a multi-core parallel application. Has been.

特開2008−176699号公報JP 2008-176699 A 特開2007−141155号公報JP 2007-141155 A

特許文献1に記載の関連技術の問題は、専用ハードウェアや特別なプロセッサを導入するためにコストがかかることである。グラフィクスや動画等の用途に応じたハードウェア機構を自ら開発するとその開発コストがかかり、外部から調達するとライセンスの支払いが生じる。また、近年、システムの多様化に伴って多品種少量生産の傾向にあるが、これらの専用ハードウェアないし特別なプロセッサを含むシステムLSIを開発する場合、その生産量が少ないと、開発コストを回収することが難しい場合がある。   The problem of the related art described in Patent Document 1 is that it is expensive to introduce dedicated hardware and a special processor. If you develop a hardware mechanism that suits your purpose, such as graphics or video, you will be charged for the development, and if you procure it from the outside, you will have to pay a license. In recent years, with the diversification of systems, there has been a tendency to produce a wide variety of products in small quantities. However, when developing system LSIs that include these dedicated hardware or special processors, if the production volume is low, the development cost can be recovered. It may be difficult to do.

特許文献2に記載の関連技術の問題は、汎用CPUベースのマルチコアでの実行オーバヘッドが高くなることである。汎用CPUは専用ハードウェアや特別なプロセッサに比べて単体性能に劣るため、所望の性能を実現するには複数コアに処理を分担させる並列処理が必要になる。他方、汎用CPUは多種多様なタスクを動かすためにOSを搭載するのが普通であり、各タスクはOSのサービスを介して互いの処理の同期や通信を行う。ここにOS介在によるオーバヘッドが生じ、細かな単位で同期や通信を行おうとするとこのOS介在によるオーバヘッドが無視できず、所望の並列性能を達成できなくなる場合がある。   The problem with the related art described in Patent Document 2 is that the execution overhead in a general-purpose CPU-based multicore increases. Since a general-purpose CPU is inferior in unit performance as compared with dedicated hardware or a special processor, parallel processing in which processing is shared by a plurality of cores is required to achieve desired performance. On the other hand, general-purpose CPUs usually have an OS installed to run a wide variety of tasks, and each task synchronizes and communicates with each other via OS services. Here, an overhead due to the OS occurs, and if synchronization or communication is performed in a fine unit, the overhead due to the OS cannot be ignored and a desired parallel performance may not be achieved.

特許文献2に記載の関連技術の他の問題は、汎用CPUベースのマルチコアでの実行時間予測が難しい点である。前述の通り汎用CPU上には多種多様なタスクが存在し、これらが時分割実行されるため、特定タスクがいつ実行され、どれぐらいの実時間が経過すれば処理完了するのか、予測するのが難しい。これは、一定時間内での処理完了が求められるリアルタイム処理では特に問題になる。   Another problem with the related art described in Patent Document 2 is that it is difficult to predict the execution time in a general-purpose CPU-based multicore. As described above, there are a wide variety of tasks on general-purpose CPUs, and these are executed in a time-sharing manner, so it is possible to predict when a specific task will be executed and how much real time will elapse. difficult. This is particularly a problem in real-time processing that requires completion of processing within a certain time.

(発明の目的)
本発明の目的は、汎用CPUベースのマルチコアプロセッサ上でオーバヘッドが少なく、かつ実行時間予測のつきやすい並列実行環境を実現できるプログラム並列実行システム、マルチコアプロセッサ上のプログラム並列実行方法を提供することにある。
(Object of invention)
An object of the present invention is to provide a program parallel execution system and a program parallel execution method on a multi-core processor that can realize a parallel execution environment with low overhead and easy execution time prediction on a general-purpose CPU-based multi-core processor. .

本発明の他の目的は、専用ハードウェアや特別なプロセッサを導入するコストを抑えつつ、高い演算処理能力を実現できるプログラム並列実行システム、マルチコアプロセッサ上のプログラム並列実行方法を提供することにある。   Another object of the present invention is to provide a program parallel execution system and a program parallel execution method on a multi-core processor that can realize high arithmetic processing capability while suppressing the cost of introducing dedicated hardware and a special processor.

本発明によるプログラム並列実行システムは、複数のプロセッサコアをバスによって相互結合したマルチコアプロセッサを備えるプログラム並列実行システムあって、複数のプロセッサコアを、オペレーティングシステムを稼動させ、当該オペレーティングシステム上で第1のアプリケーションプログラムを動作させる第1のグループのプロセッサコアと、オペレーティングシステムを稼動させずに、第1のアプリケーションからの要求によって第2のアプリケーションプログラムを動作させる第2のグループのプロセッサコアに分け、第1のグループのプロセッサコアと第2のグループのプロセッサコアの間の通信を行うことにより、第1のアプリケーションプログラムが、第2のアプリケーションプログラムを実行させ、又は第2のアプリケーションプログラムの処理結果を受け取るための制御を行う制御手段を含む。   A program parallel execution system according to the present invention is a program parallel execution system comprising a multi-core processor in which a plurality of processor cores are interconnected by a bus, the plurality of processor cores operating an operating system, and a first on the operating system. The first group of processor cores that operate the application program and the second group of processor cores that operate the second application program in response to a request from the first application without operating the operating system. By performing communication between the processor cores of the second group and the processor cores of the second group, the first application program causes the second application program to execute or the second application program. Comprising a control means for performing control for receiving a processing result of the application program.

本発明によるプログラム並列実行方法は、複数のプロセッサコアをバスによって相互結合したマルチコアプロセッサ上のプログラム並列実行方法であって、複数のプロセッサコアの第1のグループのプロセッサコア上で、オペレーティングシステムを稼動させ、当該オペレーティングシステム上で第1のアプリケーションプログラムを動作させ、複数のプロセッサコアの第2のグループのプロセッサコア上で、オペレーティングシステムを稼動させずに、第1のアプリケーションからの要求によって第2のアプリケーションプログラムを動作させ、第1のグループのプロセッサコアと第2のグループのプロセッサコアの間の通信を行うことにより、第1のアプリケーションプログラムから第2のアプリケーションプログラムを実行させ、又は第1のアプリケーションプログラムからで第2のアプリケーションプログラムの処理結果を受け取るための制御を行う。   A program parallel execution method according to the present invention is a program parallel execution method on a multi-core processor in which a plurality of processor cores are interconnected by a bus, and an operating system is operated on a processor core of a first group of the plurality of processor cores. The first application program is operated on the operating system, and the second system is operated by a request from the first application without operating the operating system on the second group of processor cores of the plurality of processor cores. Causing the first application program to execute the second application program by operating the application program and performing communication between the first group of processor cores and the second group of processor cores; or It performs control for receiving a processing result of the second application program from the first application program.

本発明によれば、汎用CPUベースのマルチコアプロセッサ上でオーバヘッドが少なく、かつ実行時間予測のつきやすい並列実行環境を実現できる。   According to the present invention, it is possible to realize a parallel execution environment with less overhead and easy execution time prediction on a general-purpose CPU-based multi-core processor.

また、専用ハードウェアや特別なプロセッサを導入するコストを抑えつつ、高い演算処理能力を実現できる。   In addition, high calculation processing capability can be realized while suppressing the cost of introducing dedicated hardware and a special processor.

本発明の第1の実施の形態によるプログラム並列実行システムの全体構成を示すブロック図である。1 is a block diagram showing an overall configuration of a program parallel execution system according to a first embodiment of the present invention. 第1の実施の形態によるプログラム並列実行システムにおける軽量スケジューラの内部構成を示すブロック図である。It is a block diagram which shows the internal structure of the lightweight scheduler in the program parallel execution system by 1st Embodiment. 第1の実施の形態によるプログラム並列実行システムにおけるOLタスク表の各エントリの構成例を示す図である。It is a figure which shows the structural example of each entry of the OL task table | surface in the program parallel execution system by 1st Embodiment. 第1の実施の形態によるプログラム並列実行システムにおけるOLリモート制御部の内部構成を示すブロック図である。It is a block diagram which shows the internal structure of the OL remote control part in the program parallel execution system by 1st Embodiment. 第1の実施の形態によるプログラム並列実行システムにおけるOLタスク制御の動作を示すフローチャートである。It is a flowchart which shows the operation | movement of OL task control in the program parallel execution system by 1st Embodiment. 第1の実施の形態によるプログラム並列実行システムにおけるOLタスクの時分割多重制御の動作を示すフローチャートである。It is a flowchart which shows the operation | movement of the time division multiplexing control of the OL task in the program parallel execution system by 1st Embodiment. 第1の実施の形態によるプログラム並列実行システムにおけるOLタスクサービス手段が提供するサービス関数例の一覧を示す図である。It is a figure which shows the list of the service function examples which the OL task service means in the program parallel execution system by 1st Embodiment provides. 本発明の第2の実施の形態によるプログラム並列実行システムの全体構成を示すブロック図である。It is a block diagram which shows the whole structure of the program parallel execution system by the 2nd Embodiment of this invention. 第2の実施の形態によるプログラム並列実行システムにおけるOLリモート制御部の内部構成を示すブロック図である。It is a block diagram which shows the internal structure of the OL remote control part in the program parallel execution system by 2nd Embodiment. 第2の実施の形態によるプログラム並列実行システムにおける割り当てコア数増減の動作を示す図である。It is a figure which shows the operation | movement of increase / decrease in the number of allocation cores in the program parallel execution system by 2nd Embodiment. 第1の実施の形態における軽量スケジューラLSの実施例を示すブロック図である。It is a block diagram which shows the Example of the lightweight scheduler LS in 1st Embodiment. 第1の実施の形態におけるOLリモート制御部の実施例を示すブロック図である。It is a block diagram which shows the Example of the OL remote control part in 1st Embodiment.

次に、本発明の実施の形態について図面を参照して詳細に説明する。   Next, embodiments of the present invention will be described in detail with reference to the drawings.

(第1の実施の形態)
図1は、本発明の第1の実施の形態によるプログラム並列実行システムの構成を示すブロック図である。第1の実施の形態によるプログラム並列実行システムは、共有メモリ型のマルチコアプロセッサ上にアプリケーション用OSと軽量スケジューラとを搭載する構成である。
(First embodiment)
FIG. 1 is a block diagram showing a configuration of a program parallel execution system according to the first embodiment of the present invention. The program parallel execution system according to the first embodiment has a configuration in which an application OS and a lightweight scheduler are mounted on a shared memory type multi-core processor.

図1を参照すると、第1の実施の形態によるプログラム並列実行システムは、複数のCPUコアを有するマルチコアSoC(SystemOnChip(システムオンチップ);システムLSIとも呼ばれる)10と、それらのCPUコア上で動作するAP OS(アプリケーション用OS)20および軽量スケジューラLS(LightweightScheduler)32と、AP OS20上で動作するアプリケーション(AP)タスク群21およびOL(オフロード)リモート制御部22と、LS32上で動作するOLタスク群31と、これらのソフトウェア動作に使用するメモリ50とを含む。   Referring to FIG. 1, a program parallel execution system according to the first embodiment operates on a multi-core SoC (System On Chip (system-on-chip); also referred to as system LSI) 10 having a plurality of CPU cores. AP OS (application OS) 20 and lightweight scheduler LS (LightweightScheduler) 32, application (AP) task group 21 and OL (offload) remote control unit 22 operating on the AP OS 20, and OL operating on the LS32 A task group 31 and a memory 50 used for these software operations are included.

マルチコアSoC10は、同じ種類の複数個のCPUコア(40、41、・・・、4n)と、これらのCPUコアの間で割り込みをかけるためのコア間割込機構45と、メモリ50を駆動するためのメモリ制御部47とを含み、これらがSoCバス46で互いに接続されている。近年の一般的なプロセッサがそうであるように、各CPUコア内にはL1キャッシュ(1次キャッシュ)が含まれている。なお、図1に示したマルチコアSoCは典型的な構成例を示したものであり、図示した構成要素以外の処理ユニット(DMAコントローラ、グラフィクスプロセッサ、各種I/Oコントローラ等)やローカルメモリを含む構成であっても良い。   The multi-core SoC 10 drives a plurality of CPU cores (40, 41,..., 4n) of the same type, an inter-core interrupt mechanism 45 for interrupting between these CPU cores, and a memory 50. And a memory control unit 47 for connecting to each other via a SoC bus 46. As is the case with common processors in recent years, each CPU core includes an L1 cache (primary cache). The multi-core SoC shown in FIG. 1 shows a typical configuration example, and includes a processing unit (DMA controller, graphics processor, various I / O controllers, etc.) other than the illustrated components and a local memory. It may be.

マルチコアSoC10が有するCPUコア(40、41、・・・、4n)は、その利用目的によりAP(アプリケーション)処理用とOL(オフロード)処理用の大きく2つの群に分けられる。AP(アプリケーション)処理用のCPUコア上ではAP OS20として、汎用CPU用OS(例えばLinuxはじめとする各種UNIX OS、Windows等)が動作する。APタスク群21を構成する各APタスク210、211は、同じくAP OS20上で実行されるOLリモート制御部22を介してOL処理用のCPUコアの上で動作しているOLタスク群と連係して動作する。   The CPU cores (40, 41,..., 4n) included in the multi-core SoC 10 are roughly divided into two groups for AP (application) processing and OL (offload) processing depending on the purpose of use. On the CPU core for AP (application) processing, a general-purpose CPU OS (for example, various UNIX OS such as Linux, Windows, etc.) operates as the AP OS 20. The AP tasks 210 and 211 constituting the AP task group 21 are linked to the OL task group operating on the CPU core for OL processing via the OL remote control unit 22 that is also executed on the AP OS 20. Works.

OL処理用のCPUコア上で動作するLS 32は、OLタスクの実行制御に特化した、コンパクトなスケジューラであり、その上では1つ以上のOLタスク(図1ではOLタスク310、311の2つが動作している例を示している)が動作している。このLS32は、単に機能を限定した小型のOSという位置づけではなく、共有メモリ型マルチコアプロセッサであることを活かし、LS32とOLリモート制御部22とにスケジューリング機能を分担させていることが、本実施の形態における特徴の一つである。   The LS 32 operating on the CPU core for OL processing is a compact scheduler specialized for execution control of OL tasks, on which one or more OL tasks (OL tasks 310 and 311 in FIG. One is working)) is working. The LS32 is not simply a small OS with limited functions, but is a shared memory type multi-core processor, and the scheduling function is shared between the LS32 and the OL remote control unit 22. It is one of the features in the form.

OLタスク310、311は、各々が1つ以上のスレッドで構成されるマルチスレッドタスクである。OLタスク310、311は、実行時にLS32に割り当てられるOL処理用のCPUコアの数と同じか、それ未満の数のスレッドが同時に存在するように設計されたアプリケーションプログラムであり、LS32が複数のOLタスク間をギャングスケジューリング方式で時分割切り替えを行いながら実行する。ここで、ギャングスケジューリング方式とは、必要な数の物理コアすべてを一度に確保しタスク切り替えを行う方式である。   The OL tasks 310 and 311 are multi-thread tasks each composed of one or more threads. The OL tasks 310 and 311 are application programs designed so that a number of threads equal to or less than the number of OL processing CPU cores assigned to the LS 32 at the time of execution exist, and the LS 32 includes a plurality of OLs. Executes while switching between tasks by gang scheduling method. Here, the gang scheduling method is a method in which all necessary numbers of physical cores are secured at a time and task switching is performed.

なお、AP処理用CPUコアとOL処理用CPUコアについては、各々1つ以上であればよい。   The AP processing CPU core and the OL processing CPU core may each be one or more.

次に、図1における軽量スケジューラLS32の内部構成について、図2を参照して詳しく説明する。   Next, the internal configuration of the lightweight scheduler LS32 in FIG. 1 will be described in detail with reference to FIG.

軽量スケジューラLS32は、複数のOLタスクを時分割で切り替えながら実行するための時分割多重化部110と、AP処理用CPUコア側との通信を行う対AP通信部120と、存在するOLタスクを管理するためのOLタスク表160と、現在実行中のOLタスクを示すカレントOLタスク変数150と、現在実行待機中のOLタスクを示すOLタスクキュー140と、OLタスク表操作時の排他制御に用いるOLタスク表ロック変数170とを含んでいる。   The lightweight scheduler LS32 includes a time division multiplexing unit 110 for executing a plurality of OL tasks while switching in a time division manner, an AP communication unit 120 for performing communication with the AP processing CPU core side, and existing OL tasks. An OL task table 160 for management, a current OL task variable 150 indicating an OL task that is currently being executed, an OL task queue 140 that indicates an OL task that is currently waiting to be executed, and exclusive control when operating the OL task table OL task table lock variable 170 is included.

時分割多重化部110は、所定の時間が経過したことを通知するタイマ111と、タイマ111からの通知によりOLタスクの切り替えを行う時分割多重化制御部112を備える。また、対AP通信部120は、AP側からの通信を受けるLS側受信部121と、AP側への通信を発するLS側送信部122を備える。   The time division multiplexing unit 110 includes a timer 111 that notifies that a predetermined time has elapsed, and a time division multiplexing control unit 112 that switches an OL task based on a notification from the timer 111. The AP communication unit 120 includes an LS side reception unit 121 that receives communication from the AP side, and an LS side transmission unit 122 that transmits communication to the AP side.

LS32には、時分割多重化制御部112、LS側受信部121、およびOLタスク310、311から呼び出される各種の手段がある。この呼び出される各種の手段としては、これまで実行してきたOLタスクのコンテキストを退避するコンテキスト退避手段131と、これから実行しようとするOLタスクのコンテキストを復活させOLタスクを再開させるコンテキスト復活手段132と、OLタスクキュー140の中から、次に実行しようとするOLタスクを選びだす新コンテキスト選定手段133と、AP側からの指示に基き、OLタスクの開始や終了の制御を行うOLタスク制御手段134と、OLタスク内のスレッド間通信やキャッシュ制御、OLタスクの終了要求を処理するOLタスクサービス手段135とがある。   The LS 32 includes various means called from the time division multiplexing control unit 112, the LS side reception unit 121, and the OL tasks 310 and 311. The various means to be called include a context saving unit 131 that saves the context of the OL task that has been executed so far, a context restoration unit 132 that restores the context of the OL task to be executed and restarts the OL task, A new context selection means 133 for selecting an OL task to be executed next from the OL task queue 140; an OL task control means 134 for controlling the start and end of the OL task based on an instruction from the AP side; And OL task service means 135 for processing inter-thread communication in the OL task, cache control, and OL task end request.

ここで、OLタスクサービス手段135がOLタスク向けに提供するサービス関数の例を図7に示す。これらはマルチコアSoC10内のCPUコア(40、41、42)が持つ機械命令、たとえば、CPUレジスタが持つ1ワードとメモリ上の1ワードをアトミックに交換するエクスチェンジ命令(XCHG等と表記されることが多い)や、CPUコアに付属のコプロセッサが持つキャッシュ制御命令等を用いることで、容易に実現できるサービス関数である。プログラマはこれらのサービス関数を用いてOLプログラムを開発する。また、必要に応じ、これらのサービス関数をインライン関数として実装することで、実行時オーバヘッドをより少なくすることができる。   Here, FIG. 7 shows an example of a service function provided by the OL task service unit 135 for the OL task. These are expressed as machine instructions held by the CPU cores (40, 41, 42) in the multi-core SoC 10, for example, exchange instructions (XCHG etc.) for exchanging one word in the CPU register and one word in the memory atomically. Service functions that can be easily realized by using a cache control instruction or the like of a coprocessor attached to the CPU core. A programmer develops an OL program using these service functions. Further, if necessary, these service functions are implemented as inline functions, so that the runtime overhead can be further reduced.

OLタスク表160には、1つのOLタスク毎に1つのエントリ(OLタスク表エントリ)が登録される。このOLタスク表エントリは、図3に示すようなフィールドを有する。図3において、OLタスク表エントリが有するフィールドは、OLタスクを互いに一意に識別するための整数値を設定するOLタスクIDフィールド161、そのOLタスクを生成したAPタスクのIDフィールド163及びそのAPタスクが動作しているOSの識別IDを設定するAP OS IDフィールド162、そのOLタスクが動作しているのか止まっているのか等を示す情報を設定するステータスフィールド164、そのOLタスクが使っている全レジスタや特殊レジスタ等を設定するコンテキストフィールド165、そのOLタスクの連続実行時間を規定するタイムスライスフィールド166、そのOLタスクとAPタスクとの間の同期をとるためのセマフォフィールド167、ならびに、そのOLタスクのプログラムメモリ領域や作業メモリ領域に関する情報を保持するメモリ領域情報フィールド168である。   In the OL task table 160, one entry (OL task table entry) is registered for each OL task. This OL task table entry has fields as shown in FIG. In FIG. 3, the fields of the OL task table entry include an OL task ID field 161 for setting an integer value for uniquely identifying the OL task, an ID field 163 of the AP task that generated the OL task, and the AP task. AP OS ID field 162 for setting the identification ID of the OS on which the OS is operating, a status field 164 for setting information indicating whether the OL task is operating or not, and all the OL tasks are using A context field 165 for setting registers, special registers, etc., a time slice field 166 for defining the continuous execution time of the OL task, a semaphore field 167 for synchronizing the OL task and the AP task, and its OL Task program memory area This is a memory area information field 168 that holds information about the area and the working memory area.

ここで、AP OS IDフィールド162は、図1におけるAP OS20を識別する整数値である。図1の例ではAP OS20はシステム内にただ一つしか存在しないのでこのIDの必要性はないが、マルチコアSoC10が多数のCPUコアを有し、その上で複数のAP OS20が稼動するようになったときに備え、図3のようにAP OS20を識別するIDを登録する。   Here, the AP OS ID field 162 is an integer value for identifying the AP OS 20 in FIG. In the example of FIG. 1, since there is only one AP OS 20 in the system, there is no need for this ID. However, the multi-core SoC 10 has a large number of CPU cores, and a plurality of AP OSs 20 operate on that. In preparation for this, an ID for identifying the AP OS 20 is registered as shown in FIG.

また、APタスクIDフィールド163は、そのAP OS20内で複数のタスクを識別するためのIDであればよく、通常は当該OSが使用しているタスクIDをそのまま用いる。   The AP task ID field 163 may be an ID for identifying a plurality of tasks in the AP OS 20, and normally the task ID used by the OS is used as it is.

対AP通信部120は、後述するAP側の対LS通信部240と対向接続される。   The AP communication unit 120 is oppositely connected to an AP side LS communication unit 240 described later.

次に、図1においてAP OS20上に位置するOLリモート制御部22の内部構成について、図4を用いて詳しく説明する。   Next, the internal configuration of the OL remote control unit 22 located on the AP OS 20 in FIG. 1 will be described in detail with reference to FIG.

OLリモート制御部22内部には、APタスクがOLタスクの制御するためのインタフェースとなるAPタスク向けインタフェース部230と、OL処理用CPUコア側との通信を行う対LS通信部240が含まれる。   The OL remote control unit 22 includes an AP task interface unit 230 that serves as an interface for the AP task to control the OL task, and an LS communication unit 240 that performs communication with the OL processing CPU core side.

また、APタスク向けインタフェース部230は、APタスクから呼び出されることを想定した、OL処理用CPUコア上でLS32が動作できるように初期設定を行うLS初期化手段231、それによって稼働中のLS32上に新しくオフロード処理のプログラムをロードし実行可能な状態にセットアップするOLプログラムセットアップ手段232、OLプログラムセットアップ手段232でセットアップしたOLプログラムの実行開始させるOLタスク開始手段233、OLタスク開始手段233で開始したOLタスクの終了を待ち合わせるOLタスク終了待ち手段234、OLタスク側の自主的な終了を待たず、強制的に終了させるためのOLタスク強制終了手段235、一旦終了したOLタスクを再ロードせずに初期状態に戻すOLタスク再初期化手段236、ロードしたOLプログラムを破棄してリソースを解放するOLプログラム破棄手段237、の各手段を含む。   Further, the AP task interface unit 230 is assumed to be called from the AP task, and the LS initialization unit 231 for performing initial setting so that the LS 32 can operate on the OL processing CPU core, and thereby on the LS 32 in operation. A new offload processing program is newly loaded and set up in an executable state. OL program setup means 232, OL task setup means 233 for starting execution of the OL program set up by OL program setup means 232, and OL task start means 233 are started. OL task end waiting means 234 for waiting for the end of the completed OL task, OL task forcible end means 235 for forcibly ending without waiting for the voluntary end of the OL task, and reloading the OL task that has once ended O to return to the initial state Task reinitialization means 236, including the means of the OL program discarding means 237 to release resources to discard OL loaded program.

対LS通信部240は、それぞれLS側への送信とLS側からの受信を行う、AP側送信部241、AP側受信部242から構成され、それぞれLS側受信部121、LS側送信部122と対向接続される。
The LS communication unit 240 includes an AP-side transmission unit 241 and an AP-side reception unit 242 that perform transmission to the LS side and reception from the LS side, respectively, and the LS-side reception unit 121 and the LS-side transmission unit 122 respectively. Connected oppositely.

(第1の実施の形態の動作の説明)
次に、図5および図6のフロー図を参照して本実施の形態の全体動作について詳細に説明する。
(Description of the operation of the first embodiment)
Next, the overall operation of the present embodiment will be described in detail with reference to the flowcharts of FIGS.

まず、図5を参照して、APタスク(0)210がOLタスク(0)310を実行する一連の動作を例にとって説明する。   First, a series of operations in which the AP task (0) 210 executes the OL task (0) 310 will be described with reference to FIG.

最初は、OL処理用CPUコアの上で軽量スケジューラLS32が動作していない状態である。   Initially, the lightweight scheduler LS32 is not operating on the OL processing CPU core.

ここで、APタスク(0)210がOLリモート制御部22内にあるAPタスク向けインタフェース部230のLS初期化手段231を呼び出すと(ステップS101)、LS初期化手段231は、LS32のプログラムをOL処理用CPUコアがアクセス可能なメモリ領域にロードする(ステップS102)と共に、各々のOL処理用CPUコアに対してLS32のプログラムのエントリ番地から実行を開始するよう指示する(ステップS103)。   Here, when the AP task (0) 210 calls the LS initialization unit 231 of the AP task interface unit 230 in the OL remote control unit 22 (step S101), the LS initialization unit 231 executes the LS32 program OL. The CPU core for processing is loaded into an accessible memory area (step S102), and each OL processing CPU core is instructed to start execution from the entry address of the LS32 program (step S103).

LS32がエントリ番地から実行を開始すると、LS32は、OL処理用CPUコアのうちの1コアがOLタスク表160、OLタスクキュー140、カレントOLタスク変数150の初期化を行った後(ステップS104)、AP側からの指示待ち状態となる(ステップS105)。OL処理用コアの他のCPUコアは、すみやかにAP側からの指示待ち状態となる。   When the LS 32 starts execution from the entry address, one of the OL processing CPU cores initializes the OL task table 160, the OL task queue 140, and the current OL task variable 150 (step S104). Then, it waits for an instruction from the AP side (step S105). The other CPU cores for the OL processing core immediately wait for an instruction from the AP side.

ここで、APタスク(0)210がOLリモート制御部22内にあるAPタスク向けインタフェース部230のOLプログラムセットアップ手段232を呼び出すと(ステップS106)、OLプログラムセットアップ手段232は、OLタスク表ロック変数170をロックしてOLタスク表160への排他的アクセス権を取得し、OLタスク(0)310をOL処理用CPUコアがアクセス可能なメモリ領域にロードすると共に、OLタスク(0)310の処理用の作業メモリ領域を確保する(ステップS107)。続いて、OLプログラムセットアップ手段232は、OLタスク表160に新たなOLタスク表エントリを作成し、そのOLタスク表エントリの各フィールドを以下のように設定する(ステップS108)。   When the AP task (0) 210 calls the OL program setup unit 232 of the AP task interface unit 230 in the OL remote control unit 22 (step S106), the OL program setup unit 232 reads the OL task table lock variable. 170 is locked to acquire exclusive access to the OL task table 160, and the OL task (0) 310 is loaded into a memory area accessible to the OL processing CPU core, and the OL task (0) 310 is processed. A working memory area is reserved (step S107). Subsequently, the OL program setup means 232 creates a new OL task table entry in the OL task table 160, and sets each field of the OL task table entry as follows (step S108).

(A) OLタスクIDフィールド161=OLプログラムセットアップ手段232がOLタスク(0)310に割り当てたユニークな値。
(B) AP OS IDフィールド162=APタスクが動作しているOSの種類を識別する値。
(C) APタスクIDフィールド163=APタスク(0)210のAP OS内でのタスクID。
(D) ステータスフィールド164=初期状態。
(E) メモリ領域情報フィールド168=OLタスク(0)310をロードしたメモリ領域および作業メモリ領域の情報。
(A) OL task ID field 161 = unique value assigned to the OL task (0) 310 by the OL program setup means 232
(B) AP OS ID field 162 = a value identifying the type of OS on which the AP task is operating.
(C) AP task ID field 163 = task ID in AP OS of AP task (0) 210.
(D) Status field 164 = initial state.
(E) Memory area information field 168 = information on memory area and working memory area loaded with OL task (0) 310.

続いて、OLプログラムセットアップ手段232は、OLタスク表ロック変数170をアンロックして排他的アクセス権を解放し、OLタスクIDフィールド161の値を戻り値として呼び出し元のAPタスク(0)210に制御を戻す。このOLタスクIDフィールド161の値はAPタスク(0)210内部で保持され、以後のAPタスク向けインタフェース部230内の各手段を呼び出す際に引数として渡される。   Subsequently, the OL program setup means 232 unlocks the OL task table lock variable 170 to release the exclusive access right, and returns the value of the OL task ID field 161 to the calling AP task (0) 210 as a return value. Return control. The value of the OL task ID field 161 is held inside the AP task (0) 210, and is passed as an argument when calling each means in the AP task interface unit 230 thereafter.

次に、APタスク(0)210が設定したOLタスクIDフィールド161の値を引数としてAPタスク向けインタフェース部230のOLタスク開始手段233を呼び出すと(ステップS109)、OLタスク開始手段233は、OLタスク表160から設定したOLタスクIDフィールド161の値に該当するエントリを探し出し、そのエントリ内の次のフィールドを、次のように設定する(ステップS110)。   Next, when the OL task start means 233 of the AP task interface unit 230 is called using the value of the OL task ID field 161 set by the AP task (0) 210 as an argument (step S109), the OL task start means 233 An entry corresponding to the value of the OL task ID field 161 set from the task table 160 is found, and the next field in the entry is set as follows (step S110).

(A) コンテキストフィールド165=OLタスク(0)310を開始するためのレジスタ値。
特に、プログラムカウンタについてはOLタスク(0)310のエントリ番地とし、もし必要ならスタックポインタやデータポインタとして確保したOLタスク用作業メモリ領域内の適切なアドレス値を与える。
(B) タイムスライスフィールド166=OLタスク(0)310の連続実行時間をタイマ111の動作周期(動作周波数の逆数)で割った値。
この連続実行時間を越えてOLタスクが実行を続けると、時分割多重化制御部112によって一旦処理を中断されることになる。OL処理用CPUコア上で複数のOLタスクが同時に動作する場面では、より優先的に処理したいOLタスクにより長めの連続実行時間を与えることで、それらのOLタスク間に優先度をつけることができる。
(C) セマフォフィールド167=初期値ゼロ。
(A) Context field 165 = register value for starting OL task (0) 310.
In particular, the program counter is the entry address of the OL task (0) 310, and if necessary, an appropriate address value in the OL task working memory area secured as a stack pointer or data pointer is given.
(B) Time slice field 166 = A value obtained by dividing the continuous execution time of the OL task (0) 310 by the operation period of the timer 111 (the reciprocal of the operation frequency).
When the OL task continues execution beyond this continuous execution time, the processing is temporarily interrupted by the time division multiplexing control unit 112. In a scene where a plurality of OL tasks operate simultaneously on the CPU core for OL processing, it is possible to give priority to these OL tasks by giving a longer continuous execution time to the OL task to be processed with higher priority. .
(C) Semaphore field 167 = initial value zero.

これらのフィールドを設定後、OLタスク開始手段233は、対LS通信部240のAP側送信部241を通じてOLタスクID値および処理要求種別「OLタスク開始」の情報をLS32側に送る(ステップS111)。AP処理用CPUコアは、ここで呼び出し元のAPタスク(0)210に制御を戻す。   After setting these fields, the OL task starting means 233 sends the OL task ID value and the information of the processing request type “OL task start” to the LS 32 side through the AP side transmission unit 241 of the LS communication unit 240 (step S111). . The AP processing CPU core returns control to the calling AP task (0) 210.

他方、LS32側のLS側受信部121は、AP側送信部241から送信された情報を受け取り、処理要求種別が「OLタスク開始」であることを知り、それに対応した処理として、次の処理を行う。すなわち、OLタスク表160から指定されたOLタスクID値に該当するエントリを探し出し、そのエントリ内のステータスフィールド164を「実行中状態」に設定し、OL処理用の全CPUコア間の同期(バリア同期)をとったうえで、OLタスク表160のエントリ内のコンテキストフィールド165の値をOL処理用の各CPUコアのレジスタに設定してコンテキストを復活させる(ステップS112)。   On the other hand, the LS-side receiving unit 121 on the LS32 side receives the information transmitted from the AP-side transmitting unit 241, knows that the processing request type is “OL task start”, and performs the following processing as the processing corresponding thereto. Do. That is, an entry corresponding to the specified OL task ID value is searched from the OL task table 160, the status field 164 in the entry is set to “in-execution state”, and synchronization (barrier between all CPU cores for OL processing is set. After synchronization, the value of the context field 165 in the entry of the OL task table 160 is set in the register of each CPU core for OL processing to restore the context (step S112).

これにより、以後、AP処理用CPUコアではAPタスク(0)210の後続処理、OL処理用CPUコアではOLタスク(0)310の処理(ステップS113)が、並列して行われる。   As a result, the subsequent processing of the AP task (0) 210 is performed in the AP processing CPU core, and the processing of the OL task (0) 310 (step S113) is performed in parallel in the OL processing CPU core.

次に、APタスク(0)210は、開始したOLタスク(0)310の終了を待ち合わせるため、OLタスク(0)310のOLタスクID値を引数としてAPタスク向けインタフェース部230のOLタスク終了待ち手段234を呼び出す(ステップS114)。そして、OLタスク終了待ち手段234は、OLタスク表160から上記OLタスクID値に該当するエントリを探し出し、そのエントリ内のセマフォフィールド167に対してセマフォDOWN操作(sem_down)を行う(ステップS115)。   Next, the AP task (0) 210 waits for the end of the OL task (0) 310 that has started, and waits for the OL task to end in the AP task interface unit 230 with the OL task ID value of the OL task (0) 310 as an argument. The means 234 is called (step S114). Then, the OL task end waiting unit 234 finds an entry corresponding to the OL task ID value from the OL task table 160, and performs a semaphore DOWN operation (sem_down) on the semaphore field 167 in the entry (step S115).

他方、OLタスク(0)310側は、その処理結果を、APタスク(0)210とOLタスクとの間で共有されているメモリ50上の領域に格納した後(ステップS116)、LS32のOLタスクサービス手段135に対しOLタスク終了要求を送る(ステップS117)。   On the other hand, the OL task (0) 310 side stores the processing result in an area on the memory 50 shared between the AP task (0) 210 and the OL task (step S116), and then the OL of the LS32 An OL task end request is sent to the task service means 135 (step S117).

すると、LS32のOLタスクサービス手段135は、カレントOLタスク変数150の値からOLタスク表160内のエントリを特定し、そのエントリ内のステータスフィールド164を「終了状態」に設定する。さらに、OLタスクサービス手段135は、OLタスク表160のエントリ内のAP OS IDフィールド162の値を元に当該OLタスク(0)310を起動したAPタスク(0)210が動作しているAP OSを特定し、LS側送信部122を通じてAP OS20に対し、OLタスクID値(OLタスク表160のエントリ内のOLタスクIDフィールド161の値)および処理要求種別「OLタスク終了」の情報を送る(ステップS118、S119)。   Then, the OL task service unit 135 of the LS 32 identifies an entry in the OL task table 160 from the value of the current OL task variable 150, and sets the status field 164 in the entry to “end state”. Furthermore, the OL task service unit 135 uses the AP OS (0) 210 that has started the OL task (0) 310 based on the value of the AP OS ID field 162 in the OL task table 160 entry. And the OL task ID value (the value of the OL task ID field 161 in the entry of the OL task table 160) and the information of the processing request type “OL task end” are sent to the AP OS 20 through the LS side transmission unit 122 ( Steps S118 and S119).

すると、対LS通信部240のAP側受信部242がこの情報を受け取り、処理要求種別が「OLタスク終了」であることを知り、それに対応した処理として、次の処理を行う。すなわち、OLタスク表160から指定されたOLタスクID値に該当するエントリを探し出し、そのエントリ内のセマフォフィールド167に対してセマフォUP操作(sem_up)を行う(ステップS120)。   Then, the AP side receiving unit 242 of the LS communication unit 240 receives this information, knows that the processing request type is “OL task end”, and performs the following processing as processing corresponding thereto. That is, an entry corresponding to the specified OL task ID value is found from the OL task table 160, and a semaphore UP operation (sem_up) is performed on the semaphore field 167 in the entry (step S120).

これら2つのセマフォ操作により、APタスク(0)210とOLタスク(0)310とが同期され、APタスク(0)210はセマフォDOWN操作の直後から動作を再開する。APタスク(0)210は、メモリ50上の共有領域からデータを読み出すことで、OLタスク(0)310にオフロードさせた処理の結果を取得する(ステップS121)。   By these two semaphore operations, the AP task (0) 210 and the OL task (0) 310 are synchronized, and the AP task (0) 210 resumes the operation immediately after the semaphore DOWN operation. The AP task (0) 210 reads the data from the shared area on the memory 50, and acquires the result of the process offloaded to the OL task (0) 310 (step S121).

ここで、APタスク(0)210がOLタスクID値を引数としてAPタスク向けインタフェース部230のOLタスク強制終了手段235を呼び出すと、OLタスク強制終了手段235は、次の段階に沿って、実行中のOLタスクを強制的に終了させることを試みる。   Here, when the AP task (0) 210 calls the OL task forced termination means 235 of the AP task interface unit 230 using the OL task ID value as an argument, the OL task forced termination means 235 executes the following steps. Attempts to forcibly terminate the existing OL task.

第1段階として、通信によってOLタスク強制終了要求をLS32側に伝える。具体的には、OLタスク(0)310のOLタスクID値および処理要求種別「OLタスク強制終了」の情報をAP側送信部241を通じてLS32側に送る。LS32側ではLS側受信部121がこの要求を受け、処理要求種別が「OLタスク強制終了」であることを知り、OLタスク表160およびOLタスクキュー140から当該OLタスク(0)310に相当するエントリを削除する。   As a first stage, an OL task forced termination request is transmitted to the LS 32 side by communication. Specifically, the OL task ID value of the OL task (0) 310 and information of the processing request type “OL task forced termination” are sent to the LS 32 side through the AP side transmission unit 241. On the LS 32 side, the LS-side receiving unit 121 receives this request, knows that the processing request type is “OL task forced termination”, and corresponds to the OL task (0) 310 from the OL task table 160 and the OL task queue 140. Delete the entry.

もし、OLタスクの暴走等の原因でLS32側が正常に機能しない場合、第2段階として、APタスク向けインタフェース部230のOLタスク強制終了手段235は、OL処理用の各CPUコアに対してリセットをかけることでOLタスクを止める。この場合、OL処理用CPUコアでOLタスク(0)310以外のOLタスクが実行中であると、それらも含めてすべて止められてしまう。従って、第1段階の仕組みでの強制終了を試みるのが優先であって、この第2段階の処置は非常用に限定すべきである。   If the LS32 side does not function normally due to an OL task runaway or the like, as a second step, the OL task forced termination means 235 of the AP task interface unit 230 resets each CPU core for OL processing. The OL task is stopped by calling. In this case, if an OL task other than the OL task (0) 310 is being executed in the OL processing CPU core, all of them including the OL task (0) 310 are stopped. Therefore, priority is given to the forced termination in the first stage mechanism, and this second stage treatment should be limited to emergency use.

また、APタスク(0)210がOLタスク(0)310のOLタスクID値を引数としてAPタスク向けインタフェース部230のOLタスク再初期化手段236を呼び出すと、OLタスク再初期化手段236はOLタスク表ロック変数170をロックしてOLタスク表160への排他的アクセス権を得てから、OLタスク表160内の当該OLタスクのエントリを探し出し、そのエントリ内のステータスフィールド164を「初期状態」に設定し、OLタスク表ロック変数170をアンロックする。これにより、当該OLタスク(0)310は初期状態に戻り、以後APタスク(0)210がOLタスク開始手段233を呼び出せば、再び当該OLタスク(0)310を実行することができるようになる。   When the AP task (0) 210 calls the OL task reinitialization means 236 of the interface section 230 for the AP task with the OL task ID value of the OL task (0) 310 as an argument, the OL task reinitialization means 236 After the task table lock variable 170 is locked and exclusive access right to the OL task table 160 is obtained, an entry of the OL task in the OL task table 160 is searched, and the status field 164 in the entry is set to “initial state”. And the OL task table lock variable 170 is unlocked. As a result, the OL task (0) 310 returns to the initial state, and when the AP task (0) 210 calls the OL task start means 233, the OL task (0) 310 can be executed again. .

最後に、APタスク(0)210がOLタスクID値を引数としてAPタスク向けインタフェース部230のOLプログラム破棄手段237を呼び出すと(ステップS122)、OLプログラム破棄手段237はOLタスク表ロック変数170をロックしてOLタスク表160への排他的アクセス権を得てから、OLタスク表160内の当該OLタスクのエントリを探し出す。次に、OLプログラム破棄手段237は、そのOLタスク表エントリ内のメモリ領域情報の値を元に当該OLタスク用に確保したメモリ領域を開放する。さらにOLプログラム破棄手段237は、そのOLタスク表エントリをOLタスク表160から削除し、最後にOLタスク表ロック変数170をアンロックして排他的アクセス権を返上する(ステップS123)。   Finally, when the AP task (0) 210 calls the OL program discarding unit 237 of the AP task interface unit 230 using the OL task ID value as an argument (step S122), the OL program discarding unit 237 sets the OL task table lock variable 170. After the exclusive access right to the OL task table 160 is obtained by locking, the entry of the OL task in the OL task table 160 is searched. Next, the OL program discarding unit 237 releases the memory area reserved for the OL task based on the value of the memory area information in the OL task table entry. Further, the OL program discarding unit 237 deletes the OL task table entry from the OL task table 160, and finally unlocks the OL task table lock variable 170 to return the exclusive access right (step S123).

図5には、APタスク(0)210がOLタスクID値を引数としてAPタスク向けインタフェース部230のOLプログラム破棄手段237を呼び出した場合の動作を示している。   FIG. 5 shows an operation when the AP task (0) 210 calls the OL program discarding unit 237 of the AP task interface unit 230 using the OL task ID value as an argument.

ここで、OLリモート制御部22と軽量スケジューラLS32との間の通信の動作について説明する。   Here, the operation of communication between the OL remote control unit 22 and the lightweight scheduler LS32 will be described.

この通信の内部構造は本実施の形態の本質的な特徴ではなく、指定した通信相手CPUコアに2つの固定長整数値を伝え、その相手CPUコア側で事前登録されたハンドラを呼び出すことができれば、任意の通信方式を用いることができる。1つの実現方法として、図1に示したコア間割込機構45とメモリ50上のコア間共有メモリ領域を用い、相手に伝達すべき整数値を共有メモリ領域に格納してからコア間割込機構45によって相手コアに割り込みを発生させ、相手コアの割込みハンドラにて共有メモリ領域に格納された値を読み出し、その値を引数として、事前登録されたハンドラ関数を呼び出す、という仕組みが考えられる。   The internal structure of this communication is not an essential feature of the present embodiment. It is possible to transmit two fixed-length integer values to a designated communication partner CPU core and call a pre-registered handler on the partner CPU core side. Any communication method can be used. As one implementation method, the inter-core interrupt mechanism 45 shown in FIG. 1 and the inter-core shared memory area on the memory 50 are used, and the integer value to be transmitted to the other party is stored in the shared memory area, and then the inter-core interrupt is performed. A mechanism may be considered in which an interrupt is generated in the partner core by the mechanism 45, a value stored in the shared memory area is read by the interrupt handler of the partner core, and a pre-registered handler function is called using the value as an argument.

次に、図6および図2を参照して、OL処理用CPUコア上で複数のOLタスクが存在する場合の時分割多重処理の動作について説明する。ここでは、OLタスク(0)〜(2)の3タスクが存在し、現在OLタスク(0)が実行中である、という事例を用いて説明する。   Next, with reference to FIG. 6 and FIG. 2, the operation of the time division multiplex processing when there are a plurality of OL tasks on the OL processing CPU core will be described. Here, a case will be described in which three tasks OL tasks (0) to (2) exist and the OL task (0) is currently being executed.

現在、OLタスク(0)が実行中であるため、時分割多重化部110のタイマ111にはOLタスク(0)のタイムスライス値が初期値として設定されている。所定の時間が経過するとデクリメントしているタイマ111のカウンタがゼロに到達し(ステップS201)、タイマ111がその旨を時分割多重化部110の時分割多重化制御部112に通知する(ステップS202)。   Since the OL task (0) is currently being executed, the time slice value of the OL task (0) is set as an initial value in the timer 111 of the time division multiplexing unit 110. When the predetermined time elapses, the counter of the decrementing timer 111 reaches zero (step S201), and the timer 111 notifies the time division multiplexing control unit 112 of the time division multiplexing unit 110 (step S202). ).

時分割多重化制御部112は、まずコンテキスト退避手段131を呼び出す。コンテキスト退避手段131はカレントOLタスク変数150をチェックする。そして、カレントOLタスク変数150に有効なOLタスクが格納されていれば、これまで各OL処理用CPUコアで実行していたOLタスク(0)のレジスタ等のコンテキスト一式を、OLタスク(0)に対するOLタスク表160のエントリにおけるコンテキストフィールド165に格納する(ステップS203)。   The time division multiplexing control unit 112 first calls the context saving unit 131. The context saving unit 131 checks the current OL task variable 150. If a valid OL task is stored in the current OL task variable 150, a set of contexts such as a register of the OL task (0) executed by each of the OL processing CPU cores so far is stored in the OL task (0). Is stored in the context field 165 in the entry of the OL task table 160 (step S203).

次に、時分割多重化制御部112は、新コンテキスト選定手段133を呼び出し、次に実行すべきOLタスクを決める。選定方法については種々考えられるが、ここでは単純なFIFO方式による方法を説明する。すなわち、新コンテキスト選定手段133は、OLタスクキュー140の先頭にあるOLタスクを次のコンテキストとして選定する(ステップS204)。図6の例ではOLタスク(1)が選定されることになる。新コンテキスト選定手段133は、選定したOLタスク(1)をOLタスクキュー140から取り除き、カレントOLタスク変数150に設定する。   Next, the time division multiplexing control unit 112 calls the new context selection unit 133 and determines an OL task to be executed next. Various selection methods can be considered. Here, a simple FIFO method will be described. That is, the new context selection unit 133 selects the OL task at the head of the OL task queue 140 as the next context (step S204). In the example of FIG. 6, OL task (1) is selected. The new context selection means 133 removes the selected OL task (1) from the OL task queue 140 and sets it in the current OL task variable 150.

次に、時分割多重化制御部112は、コンテキスト復活手段132を呼び出す。コンテキスト復活手段132は、カレントOLタスク変数150が指し示すOLタスク表160のOLタスク(1)に対するエントリを参照し、その中のタイムスライスフィールド166の値をタイマ111に設定すると共に(ステップS205)、OLタスク表エントリのコンテキストフィールド165の内容に従って各OL処理用コアのレジスタ等を設定する。最後に全OL処理用コア間で同期を取った上で、レジスタコンテキストでの実行を開始する。これにより、OLタスク(1)のコンテキストが再開されることになる(ステップS206)。   Next, the time division multiplexing control unit 112 calls the context restoration unit 132. The context restoration means 132 refers to the entry for the OL task (1) in the OL task table 160 indicated by the current OL task variable 150, sets the value of the time slice field 166 therein to the timer 111 (step S205), In accordance with the contents of the context field 165 of the OL task table entry, registers and the like of each OL processing core are set. Finally, after synchronizing all the OL processing cores, execution in the register context is started. Thereby, the context of the OL task (1) is resumed (step S206).

その後、上記で設定したタイムスライス分の時間が経過するとタイマ111のカウンタがゼロに到達し(ステップS207)、上述したタイマ111から時分割多重化制御部112への通知(ステップS208)、ならびに時分割多重化制御部112によるコンテキスト切替動作が繰り返される(ステップS209〜S212)。   Thereafter, when the time slice time set above elapses, the counter of the timer 111 reaches zero (step S207), the notification from the timer 111 to the time division multiplexing control unit 112 (step S208), and the time The context switching operation by the division multiplexing control unit 112 is repeated (steps S209 to S212).

上記コンテキスト退避手段131にて、カレントOLタスク変数150に有効なOLタスクが格納されていない場合は、退避すべきコンテキストは存在しないものとみなす。その場合、時分割多重化制御部112は、コンテキスト退避処理は行わず、その次の新コンテキスト選定手段133の呼び出しへ進む。   If no valid OL task is stored in the current OL task variable 150 in the context saving unit 131, it is considered that there is no context to be saved. In that case, the time division multiplexing control unit 112 does not perform the context saving process, and proceeds to the next call of the new context selection unit 133.

また、上記新コンテキスト選定手段133にて、OLタスクキュー140が空である場合は、新コンテキストは存在しないことから、カレントOLタスク変数150には無効値(NULL等)を設定する。その場合、後続のコンテキスト復活手段132では、タイマ111の設定も新コンテキストの各OL処理用コアレジスタへの設定も行わない。各OL処理用コアはそのまま停止状態に移行し、その後AP処理用コア側からのOLタスク開始等が通知されてくるのを待つことになる。   In addition, when the OL task queue 140 is empty, the new context selection unit 133 sets an invalid value (such as NULL) in the current OL task variable 150 because no new context exists. In that case, the subsequent context restoration means 132 does not set the timer 111 or the new context in each OL processing core register. Each OL processing core shifts to the stopped state as it is, and then waits for notification of the start of the OL task from the AP processing core side.

以上が複数のOLタスクを時分割多重化して制御する動作の説明であり、その具体的なフローの例が図6に示されている。   The above is the description of the operation for controlling a plurality of OL tasks by time division multiplexing, and a specific example of the flow is shown in FIG.

OL処理用CPUコアは一般には複数存在するが、これらの複数のCPUコアは、APタスク側からのタスク開始指示(OLタスク開始手段233参照)やタイマ111のゼロ到達(タイマ111から時分割多重化手段112への通知参照)を契機として、OLタスク処理からLS処理へ、あるいはLS処理からOLタスク処理へと、全CPUコアが一斉に切り替わる。これはいわゆるギャングスケジューリングであり、OL処理用CPUコアできめ細かい並列処理を有効に行うための本実施の形態の特徴の1つである。   In general, there are a plurality of OL processing CPU cores, and these CPU cores are provided with a task start instruction from the AP task side (see OL task start means 233) and timer 111 reaching zero (time division multiplexing from the timer 111). All CPU cores are switched simultaneously from OL task processing to LS processing or from LS processing to OL task processing. This is so-called gang scheduling, and is one of the features of the present embodiment for effectively performing fine parallel processing by the OL processing CPU core.

(第1の実施の形態による効果)
次に、上述した第1の実施の形態による効果について説明する。
(Effects of the first embodiment)
Next, effects of the first embodiment described above will be described.

本実施の形態では、マルチコアSoC10(マルチコアプロセッサ)の複数のCPUコアをAP処理用CPUコアとOL処理用CPUコアの2つのグループに分け、一方のAP処理用CPUコアに一般的なアプリケーション用のAP OS20を動作させ、他方のOL処理用CPUコアに軽量スケジューラLS32を載せることで、CPUコアやキャッシュ機能等のハードウェアリソースを最大限に活用した特定用途のプログラム(OLタスク)を、OS用アプリケーションと同時に走らせることができる。特定用途プログラムであるOLタスクは、ハードウェアリソースを直接アクセスし、かつそれらのハードウェアリソースのOLタスクへの割当時間を指示できるため、実行時のオーバヘッドを少なくでき、実行時間予測が容易になる。これにより、相互に密に連携して動作する複数のスレッドを効率よく実行させることが可能となる。   In the present embodiment, a plurality of CPU cores of the multi-core SoC 10 (multi-core processor) are divided into two groups of AP processing CPU cores and OL processing CPU cores, and one AP processing CPU core is used for general applications. By operating the AP OS20 and placing the lightweight scheduler LS32 on the other OL processing CPU core, a special purpose program (OL task) that makes the most use of hardware resources such as the CPU core and cache function can be used for the OS. It can be run simultaneously with the application. An OL task that is a special purpose program can directly access hardware resources and specify the allocation time of those hardware resources to the OL task. Therefore, overhead during execution can be reduced, and execution time prediction is facilitated. This makes it possible to efficiently execute a plurality of threads that operate in close cooperation with each other.

すなわち、OL処理用CPUコアで動作するOLタスクはAP OS20からの影響を受けず、物理的なCPUコア上での実行に極めて近い形態で動作することになり、オーバヘッドが少なく実行時間を予測しやすい並列実行環境が実現される。   In other words, the OL task that operates on the CPU core for OL processing is not affected by the AP OS 20, and operates in a form that is very close to execution on the physical CPU core. Easy parallel execution environment is realized.

また、本実施の形態では、AP処理用コアとOL処理用コアの分割点を変えることで、AP処理とOL処理の性能比率を任意に変更可能であるため、SoCに対する要求性能の異なるいくつかのシステムに対して、同じ種類のマルチコアSoCを適用することが可能である。これにより、SoC開発コストの低減とシステム開発日程の短縮という効果を実現できる。   In the present embodiment, the performance ratio of the AP processing and the OL processing can be arbitrarily changed by changing the dividing point between the AP processing core and the OL processing core. It is possible to apply the same type of multi-core SoC to these systems. Thereby, the effect of reduction of SoC development cost and shortening of a system development schedule is realizable.

すなわち、要求される処理能力に応じて、マルチコアプロセッサ上のCPUコアの割り当てをソフトウェアによって変更可能とすることにより、システム仕様に応じて静的に、CPUコアのリソースを処理要求に割り当てることができる。この結果、スペックの異なる複数種類のシステムLSIで対応していたシステムを一種類のマルチコアシステムLSIで実現すること、あるいは、ある一製品において要求性能の異なる多様な動作モードを一種類のマルチコアシステムLSIで実現できる。これにより、システムLSIの販売可能性を高めることで生産量増加を促し、システムLSIへの開発投資を回収しやすくなる。   In other words, by making it possible to change the allocation of CPU cores on a multi-core processor by software according to the required processing capacity, it is possible to statically allocate CPU core resources to processing requests according to system specifications. . As a result, a system that was supported by multiple types of system LSIs with different specifications can be realized with a single type of multicore system LSI, or a variety of operation modes with different required performance can be achieved with a single product. Can be realized. As a result, by increasing the possibility of selling the system LSI, it is possible to promote an increase in production volume and to easily recover the development investment for the system LSI.

(第2の実施の形態)
次に、本発明の第2の実施の形態によるプログラム並列実行システムについて図面を参照して詳細に説明する。
(Second Embodiment)
Next, a program parallel execution system according to a second embodiment of the present invention will be described in detail with reference to the drawings.

図8および図9を参照すると、第2の実施の形態は、第1の実施の形態に加えて、コアの割り当てを動的に変更するための仕組みを導入したものである。   Referring to FIGS. 8 and 9, the second embodiment introduces a mechanism for dynamically changing the assignment of cores in addition to the first embodiment.

図8を参照すると、第2の実施の形態においては、AP OS20に、AP OS20が使用するCPUコアを変更するための稼動コア制御部201を備えると共に、AP OS 20自体にCPUのホットプラグ(HotPlug)機能を備えている点が第1の実施の形態と異なっている。   Referring to FIG. 8, in the second embodiment, the AP OS 20 includes an active core control unit 201 for changing the CPU core used by the AP OS 20, and the AP OS 20 itself has a CPU hot plug ( This embodiment is different from the first embodiment in that a HotPlug) function is provided.

CPUのホットプラグ機能とは、マルチコアプロセッサ内のいくつかのCPUコア上であるOSが稼動している場合に、そのOSを終了あるいは再起動させることなく、そのOSの使用するCPUコア群に新たなCPUコアを追加したり、あるいはそのOSが使用中のCPUコア群から一部のCPUコアを取り除くことができる機能である。例えばLinuxにはCPUホットプラグ機能を有する実装が存在する。   The hot plug function of a CPU is a new CPU core group used by the OS without terminating or restarting the OS when the OS on some CPU cores in the multi-core processor is running. This is a function that can add a CPU core or remove some CPU cores from the CPU core group in use by the OS. For example, Linux has an implementation having a CPU hot plug function.

また、図9を参照すると、OLリモート制御部22は、第1の実施の形態に加え、AP OS20と軽量スケジューラLS32が使用するCPUコアの変更指示を行うための動的コンフィギュレーション変更部238を備えている。   9, in addition to the first embodiment, the OL remote control unit 22 includes a dynamic configuration change unit 238 for instructing change of the CPU core used by the AP OS 20 and the lightweight scheduler LS32. I have.

第2の実施の形態におけるその他の構成要素については、図1に示した第1の実施の形態と同様であるので、同一の参照符号を付して説明を省略する。   Since other components in the second embodiment are the same as those in the first embodiment shown in FIG. 1, the same reference numerals are given and description thereof is omitted.

(第2の実施の形態の動作の説明)
図10を参照してCPUコア割り当ての動的変更処理について説明する。
(Description of operation of second embodiment)
The CPU core allocation dynamic change process will be described with reference to FIG.

まず、はじめの状態では、図10(A)に示すように全CPUコア(APコア(0)〜(3))を使ってAP OS20が稼動している。ここで、動的コンフィギュレーション変更部238が、2つのCPUコアを使ってLSを稼動させることを決めたとする。   First, in the initial state, as shown in FIG. 10A, the AP OS 20 is operating using all CPU cores (AP cores (0) to (3)). Here, it is assumed that the dynamic configuration change unit 238 decides to operate the LS using two CPU cores.

すると、動的コンフィギュレーション変更部238は、AP OS20内の稼動コア制御部201に対し、AP OS20が使用中のCPUコアのうちの2つを開放するよう指示する。   Then, the dynamic configuration change unit 238 instructs the active core control unit 201 in the AP OS 20 to release two of the CPU cores being used by the AP OS 20.

稼動コア制御部201は、CPUホットプラグ機能によりAPコア(2)とAPコア(3)の2つのCPUコアをAP OS20から切り離し、これら2つのCPUコアを停止させる。この状態が図10(B)に示す状態である。   The operating core control unit 201 separates the two CPU cores of the AP core (2) and the AP core (3) from the AP OS 20 by the CPU hot plug function, and stops these two CPU cores. This state is the state shown in FIG.

次に、動的コンフィギュレーション変更部238は、OLリモート制御部22が備えるLS初期化手段231を呼び出して、切り離して停止させた2つのCPUコア上で軽量スケジューラLS32が動作するよう、初期化処理を行う。この結果が図10(C)に示された状態である。   Next, the dynamic configuration change unit 238 calls the LS initialization unit 231 included in the OL remote control unit 22 to perform the initialization process so that the lightweight scheduler LS32 operates on the two CPU cores separated and stopped. I do. This result is the state shown in FIG.

このようにして、AP OS20を稼動させたまま、CPUコア2つを使用するLS32を新たに稼動させることができる。   In this way, the LS 32 using two CPU cores can be newly operated while the AP OS 20 is operating.

逆に、図10(C)の状態にて、動的コンフィギュレーション変更部238が、LSを停止させて全CPUコアをAP OS20で利用することを決めたとする。   Conversely, assume that the dynamic configuration change unit 238 decides to stop the LS and use all CPU cores in the AP OS 20 in the state of FIG.

すると、動的コンフィギュレーション変更部238は、まず、必要であればOLリモート制御部22が持つOLタスク強制終了手段235を呼び出した上で、OLリモート制御部22が持つOLプログラム破棄手段237を呼び出してLS32およびその上で動作していたOLタスク等一式を停止、破棄させる。その状態が図10(B)に示す状態である。   Then, the dynamic configuration change unit 238 first calls the OL task forcible termination unit 235 of the OL remote control unit 22 if necessary, and then calls the OL program discarding unit 237 of the OL remote control unit 22. The LS 32 and a set of OL tasks operating on the LS 32 are stopped and discarded. This state is the state shown in FIG.

次に、動的コンフィギュレーション変更部238は、AP OS20内の稼動コア制御部201に対し、AP OS20が使用中のCPUコア群に、上述の操作で停止させた2つのCPUコアを追加する指示を送る。   Next, the dynamic configuration changing unit 238 instructs the active core control unit 201 in the AP OS 20 to add the two CPU cores stopped by the above operation to the CPU core group being used by the AP OS 20. Send.

稼動コア制御部201は、CPUホットプラグ機能によりこの2つのCPUコア(APコア(2)、APコア(3))を追加し、AP OS20が全CPUコアを使って稼動するように設定する。この結果が図10(A)に示された状態である。   The operating core control unit 201 adds these two CPU cores (AP core (2) and AP core (3)) by the CPU hot plug function, and sets the AP OS 20 to operate using all CPU cores. This result is the state shown in FIG.

このようにして、AP OS20を稼動させたまま、LS32に割り当てられていたCPUコアの2つをAP OS20側に割り当て直すことができる。   In this way, two of the CPU cores assigned to the LS 32 can be reassigned to the AP OS 20 side while the AP OS 20 is operating.

上記説明では、全部で4つのCPUコアを有するマルチコアSoC10にて、初期状態で全4コアをAP OS20に割り当て、次に、そのうち2コアをLS32に割り当て、そして再び全4コアをAP OS20に割り当てる、という例を示した。しかし、この例に限定されるものではなく、任意のn個のCPUコアを有するマルチコアSoC10において、そのうちの1個以上(n−1)個以下のCPUコアをLS32に割り当てる場合にも上記のCPUコア割り当ての動的変更処理をそのまま適用することが可能である。   In the above description, in multi-core SoC 10 having a total of four CPU cores, all four cores are assigned to AP OS 20 in the initial state, then two of them are assigned to LS 32, and all four cores are assigned to AP OS 20 again. An example was given. However, the present invention is not limited to this example. In the multi-core SoC 10 having any n CPU cores, the CPU described above is also used when one or more (n−1) CPU cores are allocated to the LS 32. It is possible to directly apply the core allocation dynamic change processing.

また、必要がなければ一部のCPUコアをAP処理用にもOL処理用にも割り当てずに停止させておくことで、マルチコアSoC10全体の消費電力を低減することもできる。   Further, if not necessary, the power consumption of the entire multi-core SoC 10 can be reduced by stopping some CPU cores without assigning them to AP processing or OL processing.

(第2の実施の形態の効果)
次に、上述した第2の実施の形態による効果について説明する。
(Effect of the second embodiment)
Next, effects of the second embodiment described above will be described.

上述した第2の実施に形態によれば、第1の実施の形態による効果に加えて、システムを稼動させたまま、その処理性能要求の動的変化に応じてOL処理用コアを割り当ててOLタスクを走らせ、また、当該処理要求がなくなれば全コアをAP OS用に割り当てることができ、マルチコアプロセッサが有する能力をより柔軟に引き出すことが可能になる。これにより、一つの種類のマルチコアシステムLSIを多様なシステムに適用することが可能になるという効果が実現される。   According to the second embodiment described above, in addition to the effects of the first embodiment, the OL processing core is allocated according to the dynamic change of the processing performance requirement while the system is operating, and the OL is executed. If the task is run and the processing request is eliminated, all the cores can be allocated for the AP OS, and the ability of the multi-core processor can be extracted more flexibly. As a result, the effect that one type of multi-core system LSI can be applied to various systems is realized.

次に、プログラム並列実行システムの具体的な実施例について図面を参照して説明する。この実施例は、第1の実施の形態におけるLS32とOLリモート制御部22が具体的にどのように構成されるかを示している。   Next, a specific embodiment of the program parallel execution system will be described with reference to the drawings. This example shows how the LS 32 and the OL remote control unit 22 in the first embodiment are specifically configured.

図11は、LS32の実施例を示すブロック図である。点線321で囲まれた部分はマルチコアSoC10内のハードウェアで実現される。すなわち、タイマ111はCPUコアに付随するハードウェアタイマであり、対AP通信部120において通信を行う基盤部分はコア間割込機構45と受け渡すパラメータを保持するメモリ上のパラメータ領域123で実現される。   FIG. 11 is a block diagram showing an embodiment of LS32. A portion surrounded by a dotted line 321 is realized by hardware in the multi-core SoC 10. That is, the timer 111 is a hardware timer attached to the CPU core, and the base part that communicates with the AP communication unit 120 is realized by the parameter area 123 on the memory that holds the parameters to be transferred to and from the inter-core interrupt mechanism 45. The

点線322で囲まれた部分はCPUコア上のソフトウェアとして実現される。時分割多重化制御部112はタイマ割込みハンドラ、LS側受信部121はコア間割込ハンドラを用いて実現される。時分割多重化制御部112が取り扱うコンテキストは、CPUコアの汎用レジスタ一式とステータスフラグである。   A portion surrounded by a dotted line 322 is realized as software on the CPU core. The time division multiplexing control unit 112 is realized using a timer interrupt handler, and the LS side receiving unit 121 is realized using an inter-core interrupt handler. The context handled by the time division multiplexing control unit 112 is a set of general-purpose registers of the CPU core and a status flag.

点線323で囲まれた部分はメモリ50上のデータ構造や変数として実現される。これらのデータ構造は、表、キュー(FIFO)等、コンピュータ処理においてごく一般的な構造である。OLタスクキュー140についてはAP処理用コア側からはアクセスされないので、OLタスクキュー140をOL処理用コアのローカルメモリ上に配置して、同データ構造に対するメモリアクセス性能を改善することも可能である。   A portion surrounded by a dotted line 323 is realized as a data structure or variable on the memory 50. These data structures are very common in computer processing, such as tables and queues (FIFO). Since the OL task queue 140 is not accessed from the AP processing core side, it is possible to improve the memory access performance for the data structure by arranging the OL task queue 140 on the local memory of the OL processing core. .

図12はOLリモート制御部22の実施例を示すブロック図である。APタスク向けインタフェース部230内の各手段231〜237はAP処理用コアのソフトウェアとして記述される。これらはライブラリの形態にとりまとめられ、アプリケーションプログラムにリンクされて呼び出される。対LS通信部240は前述の対AP通信部120と同様、その基盤部分はコア間割込機構45と受け渡すパラメータを保持するメモリ上のパラメータ領域123で実現される。   FIG. 12 is a block diagram showing an embodiment of the OL remote control unit 22. The means 231 to 237 in the AP task interface unit 230 are described as AP processing core software. These are collected in the form of a library and linked to an application program and called. Similar to the AP communication unit 120 described above, the base unit of the LS communication unit 240 is realized by a parameter area 123 on a memory that holds parameters to be transferred to and from the inter-core interrupt mechanism 45.

以上好ましい実施の形態と実施例をあげて本発明を説明したが、本発明は必ずしも、上記実施の形態及び実施例に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。   Although the present invention has been described with reference to the preferred embodiments and examples, the present invention is not necessarily limited to the above-described embodiments and examples, and various modifications can be made within the scope of the technical idea. Can be implemented.

本発明は、同じ種類のプロセッサコアを複数有するマルチコアプロセッサを用いた情報処理装置であって、特に、高い演算能力やリアルタイム性を要する処理とそれ以外の汎用処理がシステム内に混在するような装置、例えば、携帯電話、カーナビゲーションシステム、セットトップボックス、ネットワーク制御機器等のシステムソフトウェアに適用できる。また、同じ種類のCPUコアを複数有するマルチコアプロセッサを搭載したパーソナルコンピュータや汎用コンピュータシステムに適用することもできる。   The present invention is an information processing apparatus using a multi-core processor having a plurality of processor cores of the same type, and in particular, an apparatus in which processing that requires high computing ability and real-time performance and other general-purpose processing are mixed in the system For example, it can be applied to system software such as a mobile phone, a car navigation system, a set top box, and a network control device. The present invention can also be applied to a personal computer or a general-purpose computer system equipped with a multi-core processor having a plurality of CPU cores of the same type.

10:マルチコアSoC
20:AP OS
21:APタスク群
22:OLリモート制御部
31:OLタスク群
32:LS(軽量スケジューラ)
40、41、42:CPUコア
45:コア間割込機構
46:SoCバス
47:メモリ制御部
50:メモリ
110:時分割多重化部
111:タイマ
112:時分割多重化制御部
120:対AP通信部
121:LS側受信部
122:LS側送信部
123:パラメータ領域
131:コンテキスト退避手段
132:コンテキスト復活手段
133:新コンテキスト選定手段
134:OLタスク制御手段
135:OLタスクサービス手段
140:OLタスクキュー
150:カレントOLタスク変数
160:OLタスク表
170:OLタスク表ロック変数
201:稼動コア制御部
230:APタスク向けインタフェース部
231:LS初期化手段
232:OLプログラムセットアップ手段
233:OLタスク開始手段
234:OLタスク終了待ち手段
235:OLタスク強制終了手段
236:OLタスク再初期化手段
237:OLプログラム破棄手段
238:動的コンフィギュレーション変更部
240:対LS通信部
241:AP側送信部
242:AP側受信部
10: Multi-core SoC
20: AP OS
21: AP task group 22: OL remote control unit 31: OL task group 32: LS (lightweight scheduler)
40, 41, 42: CPU core 45: Inter-core interrupt mechanism 46: SoC bus 47: Memory control unit 50: Memory 110: Time division multiplexing unit 111: Timer 112: Time division multiplexing control unit 120: Communication with AP Unit 121: LS side receiving unit 122: LS side transmitting unit 123: parameter area 131: context saving unit 132: context restoring unit 133: new context selecting unit 134: OL task control unit 135: OL task service unit 140: OL task queue 150: Current OL task variable 160: OL task table 170: OL task table lock variable 201: Active core control unit 230: AP task interface unit 231: LS initialization unit 232: OL program setup unit 233: OL task start unit 234 : OL task Ryo wait means 235: OL task abort means 236: OL task reinitializes means 237: OL program discarding part 238: dynamic configuration change unit 240: vs. LS communication unit 241: AP-side transmitting section 242: AP-side receiving section

Claims (20)

複数のプロセッサコアをバスによって相互結合したマルチコアプロセッサを備えるプログラム並列実行システムあって、
複数の前記プロセッサコアを、オペレーティングシステムを稼動させ、当該オペレーティングシステム上で第1のアプリケーションプログラムを動作させる第1のグループのプロセッサコアと、前記オペレーティングシステムを稼動させずに、前記第1のアプリケーションからの要求によって第2のアプリケーションプログラムを動作させる第2のグループのプロセッサコアに分け、
前記第1のグループのプロセッサコアと前記第2のグループのプロセッサコアの間の通信を行うことにより、前記第1のアプリケーションプログラムが、前記第2のアプリケーションプログラムを実行させ、又は前記第2のアプリケーションプログラムの処理結果を受け取るための制御を行う制御手段を備える
ことを特徴とするプログラム並列実行システム。
A program parallel execution system comprising a multi-core processor in which a plurality of processor cores are interconnected by a bus,
A plurality of processor cores are operated from an operating system and a first group of processor cores that operate a first application program on the operating system, and the first application without operating the operating system. Divided into a second group of processor cores for operating the second application program according to the request of
By performing communication between the first group of processor cores and the second group of processor cores, the first application program causes the second application program to be executed, or the second application A program parallel execution system comprising control means for performing control for receiving a processing result of a program.
前記制御手段が、
前記第2のグループのプロセッサコア間の同期、排他制御や前記第2のグループのプロセッサコアに対するキャッシュ制御の少なくとも一の処理を、前記第2のアプリケーションプログラムあるいは前記第2のアプリケーションプログラムから呼び出されるサービス関数に行わせることを特徴とする請求項1に記載のプログラム並列実行システム。
The control means is
A service that is called from the second application program or the second application program for at least one of synchronization, exclusive control between the second group of processor cores and cache control for the processor core of the second group The program parallel execution system according to claim 1, wherein a function is performed.
前記制御手段が、
前記第2のグループのプロセッサコア上で、前記第2のアプリケーションプログラムの実行を制御する軽量スケジューラと、
前記第1のグループのプロセッサコア上で、前記軽量スケジューラと通信するリモート制御部とを含み、
前記軽量スケジューラが、前記第2のグループのプロセッサコア上で前記第2のアプリケーションを開始あるいは終了させる機能を有し、
前記リモート制御部が、前記軽量スケジューラとプロセッサ間通信機構及びメモリ上の変数を用いて通信することで、前記第1のグループのプロセッサコア側から前記第2のアプリケーションプログラムの開始あるいは終了を指示する機能を有し、
前記第1のアプリケーションプログラムが、前記リモート制御部を呼び出すことで前記第2のアプリケーションに所定の処理を依頼し、前記リモート制御部を介して前記第2のアプリケーションの処理結果を受け取る
ことを特徴とする請求項1又は請求項2に記載のプログラム並列実行システム。
The control means is
A lightweight scheduler for controlling execution of the second application program on the second group of processor cores;
A remote control unit communicating with the lightweight scheduler on the first group of processor cores;
The lightweight scheduler has a function of starting or terminating the second application on the second group of processor cores;
The remote control unit communicates using the lightweight scheduler, an inter-processor communication mechanism, and a memory variable, thereby instructing the start or end of the second application program from the processor core side of the first group. Has function,
The first application program requests the second application to perform a predetermined process by calling the remote control unit, and receives the processing result of the second application via the remote control unit. The program parallel execution system according to claim 1 or 2.
前記軽量スケジューラが、
前記第2のグループのプロセッサコア上で、複数のタスクから構成される前記第2のアプリケーションプログラムを動作させ、
前記第2のグループのプロセッサコア上で動作する前記タスクの実行コンテキストを退避あるいは復活させる機能と、複数の前記タスクの状態を管理し切り替える機能を有する
ことを特徴とする請求項3に記載のプログラム並列実行システム。
The lightweight scheduler is
Operating the second application program including a plurality of tasks on the processor core of the second group;
4. The program according to claim 3, further comprising a function of saving or restoring an execution context of the task operating on the processor core of the second group, and a function of managing and switching the states of the plurality of tasks. Parallel execution system.
前記軽量スケジューラが、
複数の前記タスクを時分割で切り替えながら実行するための時分割多重化部と、
前記第1のグループのプロセッサコアとの通信を行う通信部と
を備えることを特徴がする請求項4に記載のプログラム並列実行システム。
The lightweight scheduler is
A time division multiplexing unit for executing a plurality of the tasks while switching in a time division manner;
The program parallel execution system according to claim 4, further comprising: a communication unit that communicates with the first group of processor cores.
前記軽量スケジューラが、
存在するタスクを管理するためのタスク表と、現在実行中のタスクを示すカレントOLタスク変数と、現在実行待機中のタスクを示すOLタスクキューと、前記タスク表操作時の排他制御に用いるタスク表ロック変数とを含むことを特徴とする請求項4又は請求項5に記載のプログラム並列実行システム。
The lightweight scheduler is
A task table for managing existing tasks, a current OL task variable indicating a currently executing task, an OL task queue indicating a currently waiting task, and a task table used for exclusive control when operating the task table 6. The program parallel execution system according to claim 4, further comprising a lock variable.
前記軽量スケジューラが、
前記時分割多重化部又は前記通信部から呼び出す、実行したタスクのコンテキストを退避するコンテキスト退避手段と、実行するタスクのコンテキストを復活させタスクを再開させるコンテキスト復活手段と、前記タスクキューの中から、次に実行するタスクを選びだす新コンテキスト選定手段と、前記第1のアプリケーションプログラム側からの指示に基き、タスクの開始や終了の制御を行うタスク制御手段と、タスク内のスレッド間通信やキャッシュ制御、タスクの終了要求を処理するOLタスクサービス手段を有することを特徴とする請求項6に記載のプログラム並列実行システム。
The lightweight scheduler is
From the task queue, a context saving unit that saves the context of the executed task that is called from the time division multiplexing unit or the communication unit, a context restoration unit that restores the context of the task to be executed and resumes the task, New context selection means for selecting a task to be executed next, task control means for controlling the start and end of a task based on an instruction from the first application program side, communication between threads in the task, and cache control 7. The program parallel execution system according to claim 6, further comprising OL task service means for processing a task end request.
前記リモート制御部が、
前記第1のアプリケーションプログラムが前記タスクの制御するためのインタフェースとなるタスク向けインタフェース部と、前記第2のグループのプロセッサコアとの通信を行う通信部を含み、
前記タスク向けインタフェース部が、
前記第2のグループのプロセッサコア上で前記軽量スケジューラが動作できるように初期設定を行う初期化手段と、稼働中の前記軽量スケジューラ上に新しく前記タスクをロードし実行可能な状態にセットアップするセットアップ手段、セットアップしたタスクを実行開始させるタスク開始手段、開始したタスクの終了を待ち合わせるタスク終了待ち手段、前記タスクを強制的に終了させるためのタスク強制終了手段、一旦終了した前記タスクを再ロードせずに初期状態に戻すタスク再初期化手段、ロードしたタスクを破棄してリソースを解放するプログラム破棄手段を含むことを特徴とする請求項3から請求項7の何れかに記載のプログラム並列実行システム。
The remote control unit is
A task interface unit serving as an interface for the first application program to control the task, and a communication unit configured to communicate with the processor core of the second group;
The task interface unit is
Initializing means for performing initial setting so that the lightweight scheduler can operate on the second group of processor cores, and setting up means for newly loading the task on the running lightweight scheduler and setting it up to an executable state , Task start means for starting execution of the set-up task, task end wait means for waiting for completion of the started task, task forced end means for forcibly terminating the task, without reloading the task once finished 8. The program parallel execution system according to claim 3, further comprising: a task re-initialization unit that returns to an initial state; and a program discard unit that discards the loaded task and releases resources.
前記第1のグループのプロセッサコアの数と第2のグループのプロセッサコアの数のいずれか又は両方をシステム動作中に変化させる機能を有することをことを特徴とする請求項1から請求項8の何れかに記載のプログラム並列実行システム。   9. The system according to claim 1, further comprising a function of changing one or both of the number of processor cores of the first group and the number of processor cores of the second group during system operation. The program parallel execution system according to any one of the above. 前記第1のグループのプロセッサコア上で稼動させるオペレーティングシステムが、当該オペレーティングシステムが稼動するプロセッサコアを動的に追加又は削除する追加削除機能を有し、
前記リモート制御部が、前記第2のグループのプロセッサコアを初期化して前記軽量スケジューラを開始させ、又は終了させる機能を有することを特徴とする請求項3から請求項9に記載のプログラム並列実行システム。
The operating system operated on the first group of processor cores has an addition / deletion function for dynamically adding or deleting the processor cores operating on the operating system,
10. The program parallel execution system according to claim 3, wherein the remote control unit has a function of initializing the second group of processor cores to start or end the lightweight scheduler. 11. .
システム動作中に、
前記プロセッサコアの追加削除機能を用いて前記第1のグループのプロセッサコアを構成する一部のプロセッサコアを前記オペレーティングシステムから切り離し、
前記切り離されたプロセッサコアを第2のグループのプロセッサコアとし、前記リモート制御部の前記軽量スケジューラ開始機能を用いて、前記第2のグループのプロセッサコア上に前記軽量スケジューラをロードして開始させることを特徴とする請求項10に記載のプログラム並列実行システム。
During system operation,
Using the processor core addition / deletion function, detaching a part of the processor cores constituting the first group of processor cores from the operating system,
The detached processor core is used as a second group of processor cores, and the lightweight scheduler is loaded on the second group of processor cores using the lightweight scheduler start function of the remote control unit to start the processor core. The program parallel execution system according to claim 10.
システム動作中に、
前記リモート制御部の前記軽量スケジューラ終了機能を呼び出したあと、前記第2のグループのプロセッサコアを停止させ、
前記プロセッサコアの追加削除機能を用いて、停止させたプロセッサコアを前記オペレーティングシステム動作プロセッサコアに追加する
ことを特徴とする請求項10又は請求項11に記載のプログラム並列実行システム。
During system operation,
After calling the lightweight scheduler termination function of the remote control unit, stop the processor core of the second group,
The program parallel execution system according to claim 10 or 11, wherein the stopped processor core is added to the operating system operation processor core using the processor core addition / deletion function.
複数のプロセッサコアをバスによって相互結合したマルチコアプロセッサ上のプログラム並列実行方法であって、
複数の前記プロセッサコアの第1のグループのプロセッサコア上で、オペレーティングシステムを稼動させ、当該オペレーティングシステム上で第1のアプリケーションプログラムを動作させ、
複数の前記プロセッサコアの第2のグループのプロセッサコア上で、前記オペレーティングシステムを稼動させずに、前記第1のアプリケーションからの要求によって第2のアプリケーションプログラムを動作させ、
前記第1のグループのプロセッサコアと前記第2のグループのプロセッサコアの間の通信を行うことにより、前記第1のアプリケーションプログラムから前記第2のアプリケーションプログラムを実行させ、又は前記第1のアプリケーションプログラムからで前記第2のアプリケーションプログラムの処理結果を受け取るための制御を行う
ことを特徴とするプログラム並列実行方法。
A program parallel execution method on a multi-core processor in which a plurality of processor cores are interconnected by a bus,
Operating an operating system on a first group of processor cores of the plurality of processor cores and operating a first application program on the operating system;
A second application program is operated by a request from the first application without running the operating system on a second group of processor cores of the plurality of processor cores,
The first application program is executed from the first application program by performing communication between the first group of processor cores and the second group of processor cores, or the first application program A program parallel execution method comprising: performing control for receiving a processing result of the second application program from
前記第2のグループのプロセッサコア間の同期、排他制御や前記第2のグループのプロセッサコアに対するキャッシュ制御の少なくとも一の処理を、前記第2のアプリケーションプログラムあるいは前記第2のアプリケーションプログラムから呼び出されるサービス関数に行わせることを特徴とする請求項13に記載のプログラム並列実行方法。   A service that is called from the second application program or the second application program for at least one of synchronization, exclusive control between the second group of processor cores and cache control for the processor core of the second group The program parallel execution method according to claim 13, wherein a function is performed. 前記第2のグループのプロセッサコア上で、前記第2のアプリケーションプログラムの実行を制御する軽量スケジューラと、
前記第1のグループのプロセッサコア上で、前記軽量スケジューラと通信するリモート制御部とを含み、
前記軽量スケジューラによって、前記第2のグループのプロセッサコア上で前記第2のアプリケーションを開始あるいは終了させ、
前記リモート制御部によって、前記軽量スケジューラとプロセッサ間通信機構及びメモリ上の変数を用いて通信することで、前記第1のグループのプロセッサコア側から前記第2のアプリケーションプログラムの開始あるいは終了を指示し、
前記第1のアプリケーションプログラムが、前記リモート制御部を呼び出すことで前記第2のアプリケーションに所定の処理を依頼し、前記リモート制御部を介して前記第2のアプリケーションの処理結果を受け取る
ことを特徴とする請求項13又は請求項14に記載のプログラム並列実行方法。
A lightweight scheduler for controlling execution of the second application program on the second group of processor cores;
A remote control communicating with the lightweight scheduler on the first group of processor cores;
The lightweight scheduler starts or terminates the second application on the second group of processor cores;
The remote control unit instructs the start or end of the second application program from the processor core side of the first group by communicating with the lightweight scheduler using an inter-processor communication mechanism and a memory variable. ,
The first application program requests a predetermined process to the second application by calling the remote control unit, and receives a processing result of the second application via the remote control unit. 15. The program parallel execution method according to claim 13 or 14.
前記軽量スケジューラが、
前記第2のグループのプロセッサコア上で、複数のタスクから構成される前記第2のアプリケーションプログラムを動作させ、
前記第2のグループのプロセッサコア上で動作する前記タスクの実行コンテキストを退避あるいは復活させる機能と、複数の前記タスクの状態を管理し切り替える機能を有する
ことを特徴とする請求項15に記載のプログラム並列実行方法。
The lightweight scheduler is
Operating the second application program including a plurality of tasks on the processor core of the second group;
The program according to claim 15, further comprising a function of saving or restoring an execution context of the task operating on the second group of processor cores, and a function of managing and switching states of the plurality of tasks. Parallel execution method.
前記第1のグループのプロセッサコアの数と第2のグループのプロセッサコアの数のいずれか又は両方をシステム動作中に変化させる機能を有することをことを特徴とする請求項9から請求項16の何れかに記載のプログラム並列実行方法。   17. The system according to claim 9, further comprising a function of changing one or both of the number of processor cores of the first group and the number of processor cores of the second group during system operation. The program parallel execution method according to any one of the above. 前記第1のグループのプロセッサコア上で稼動させるオペレーティングシステムが、当該オペレーティングシステムが稼動するプロセッサコアを動的に追加又は削除する追加削除機能を有し、
前記リモート制御部が、前記第2のグループのプロセッサコアを初期化して前記軽量スケジューラを開始させ、又は終了させる機能を有することを特徴とする請求項15から請求項17に記載のプログラム並列実行方法。
The operating system operated on the first group of processor cores has an addition / deletion function for dynamically adding or deleting the processor cores operating on the operating system,
18. The program parallel execution method according to claim 15, wherein the remote control unit has a function of initializing a processor core of the second group to start or end the lightweight scheduler. .
システム動作中に、
前記プロセッサコアの追加削除機能を用いて前記第1のグループのプロセッサコアを構成する一部のプロセッサコアを前記オペレーティングシステムから切り離し、
前記切り離されたプロセッサコアを第2のグループのプロセッサコアとし、前記リモート制御部の前記軽量スケジューラ開始機能を用いて、前記第2のグループのプロセッサコア上に前記軽量スケジューラをロードして開始させることを特徴とする請求項18に記載のプログラム並列実行方法。
During system operation,
Using the processor core addition / deletion function, detaching a part of the processor cores constituting the first group of processor cores from the operating system,
The detached processor core is used as a second group of processor cores, and the lightweight scheduler is loaded on the second group of processor cores using the lightweight scheduler start function of the remote control unit to start the processor core. The program parallel execution method according to claim 18.
システム動作中に、
前記リモート制御部の前記軽量スケジューラ終了機能を呼び出したあと、前記第2のグループのプロセッサコアを停止させ、
前記プロセッサコアの追加削除機能を用いて、停止させたプロセッサコアを前記オペレーティングシステム動作プロセッサコアに追加する
ことを特徴とする請求項18又は請求項19に記載のプログラム並列実行方法。
During system operation,
After calling the lightweight scheduler termination function of the remote control unit, stop the processor core of the second group,
The program parallel execution method according to claim 18 or 19, wherein the stopped processor core is added to the operating system operation processor core by using the processor core addition / deletion function.
JP2009025044A 2009-02-05 2009-02-05 Program parallel execution system and program parallel execution method on multi-core processor Active JP5453825B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009025044A JP5453825B2 (en) 2009-02-05 2009-02-05 Program parallel execution system and program parallel execution method on multi-core processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009025044A JP5453825B2 (en) 2009-02-05 2009-02-05 Program parallel execution system and program parallel execution method on multi-core processor

Publications (2)

Publication Number Publication Date
JP2010182096A true JP2010182096A (en) 2010-08-19
JP5453825B2 JP5453825B2 (en) 2014-03-26

Family

ID=42763652

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009025044A Active JP5453825B2 (en) 2009-02-05 2009-02-05 Program parallel execution system and program parallel execution method on multi-core processor

Country Status (1)

Country Link
JP (1) JP5453825B2 (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2357455A1 (en) 2010-01-20 2011-08-17 Mitutoyo Corporation Spherical-form measuring apparatus
JP5673666B2 (en) * 2010-02-23 2015-02-18 富士通株式会社 Multi-core processor system, interrupt program, and interrupt method
JP2015097112A (en) * 2015-01-05 2015-05-21 富士通株式会社 Multi-core processor system, control method for multi-core processor system, and control program for multi-core processor system
JP2016091076A (en) * 2014-10-30 2016-05-23 日本電気株式会社 Information processing device
CN112513847A (en) * 2018-07-30 2021-03-16 西门子交通有限公司 Method for operating a computing device
CN114090097A (en) * 2020-06-30 2022-02-25 中国航发商用航空发动机有限责任公司 Engine control system and control software starting method
JP7322797B2 (en) 2020-04-28 2023-08-08 株式会社デンソー Real-time processor

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6079805B2 (en) 2015-03-23 2017-02-15 日本電気株式会社 Parallel computing device
US10169105B2 (en) * 2015-07-30 2019-01-01 Qualcomm Incorporated Method for simplified task-based runtime for efficient parallel computing

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0659944A (en) * 1992-08-06 1994-03-04 Fujitsu Ltd Device for evaluating performance of parallel processing
JP2001034582A (en) * 1999-05-17 2001-02-09 Matsushita Electric Ind Co Ltd Parallel processor selecting processor with command packet and system therefor
JP2001209627A (en) * 2000-01-27 2001-08-03 Hitachi Ltd Information processing system
JP2002007150A (en) * 2000-06-19 2002-01-11 Hitachi Ltd Scheduling method of process and device for the same and computer readable recoding medium with scheduling program of the same process recorded
JP2003345614A (en) * 2002-03-20 2003-12-05 Nec Corp Parallel processing system by os for single processor
JP2005078264A (en) * 2003-08-29 2005-03-24 Matsushita Electric Ind Co Ltd Computer system, compiler device and operating system
JP2007219816A (en) * 2006-02-16 2007-08-30 Handotai Rikougaku Kenkyu Center:Kk Multiprocessor system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0659944A (en) * 1992-08-06 1994-03-04 Fujitsu Ltd Device for evaluating performance of parallel processing
JP2001034582A (en) * 1999-05-17 2001-02-09 Matsushita Electric Ind Co Ltd Parallel processor selecting processor with command packet and system therefor
JP2001209627A (en) * 2000-01-27 2001-08-03 Hitachi Ltd Information processing system
JP2002007150A (en) * 2000-06-19 2002-01-11 Hitachi Ltd Scheduling method of process and device for the same and computer readable recoding medium with scheduling program of the same process recorded
JP2003345614A (en) * 2002-03-20 2003-12-05 Nec Corp Parallel processing system by os for single processor
JP2005078264A (en) * 2003-08-29 2005-03-24 Matsushita Electric Ind Co Ltd Computer system, compiler device and operating system
JP2007219816A (en) * 2006-02-16 2007-08-30 Handotai Rikougaku Kenkyu Center:Kk Multiprocessor system

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2357455A1 (en) 2010-01-20 2011-08-17 Mitutoyo Corporation Spherical-form measuring apparatus
JP5673666B2 (en) * 2010-02-23 2015-02-18 富士通株式会社 Multi-core processor system, interrupt program, and interrupt method
JP2016091076A (en) * 2014-10-30 2016-05-23 日本電気株式会社 Information processing device
JP2015097112A (en) * 2015-01-05 2015-05-21 富士通株式会社 Multi-core processor system, control method for multi-core processor system, and control program for multi-core processor system
CN112513847A (en) * 2018-07-30 2021-03-16 西门子交通有限公司 Method for operating a computing device
JP7322797B2 (en) 2020-04-28 2023-08-08 株式会社デンソー Real-time processor
CN114090097A (en) * 2020-06-30 2022-02-25 中国航发商用航空发动机有限责任公司 Engine control system and control software starting method

Also Published As

Publication number Publication date
JP5453825B2 (en) 2014-03-26

Similar Documents

Publication Publication Date Title
JP5453825B2 (en) Program parallel execution system and program parallel execution method on multi-core processor
US10891158B2 (en) Task scheduling method and apparatus
JP6381734B2 (en) Graphics calculation process scheduling
US8533716B2 (en) Resource management in a multicore architecture
JP6228459B2 (en) Optimizing communication of system call requests
JP6086868B2 (en) Graphics processing dispatch from user mode
US20110302587A1 (en) Information processing device and information processing method
JP5516398B2 (en) Multiprocessor system and method for sharing device between OS of multiprocessor system
US8640128B2 (en) Dynamic network adapter queue pair allocation
JP4171910B2 (en) Parallel processing system and parallel processing program
JP2013546097A (en) Accessibility of graphics processing computing resources
US8051281B2 (en) Operating system startup control method and information processing apparatus
WO2013185571A1 (en) Thread control and invoking method of multi-thread virtual assembly line processor, and processor thereof
JP2007079789A (en) Computer system and event processing method
CN103064657A (en) Method and device for achieving multi-application parallel processing on single processors
CN103744716A (en) Dynamic interrupt balanced mapping method based on current virtual central processing unit (VCPU) scheduling state
US9424101B2 (en) Method and apparatus for synchronous processing based on multi-core system
WO2011117987A1 (en) Multi-core system and start-up method
WO2012052775A1 (en) Data processing systems
US20120278814A1 (en) Shared Drivers in Multi-Core Processor
JP2007316710A (en) Multiprocessor system, workload management method
CN109542832B (en) Communication system and method between heterogeneous multi-core CPUs (central processing units) without lock mechanism
JP2014503898A (en) Method and system for synchronous operation of processing equipment
JP5805783B2 (en) Computer system interrupt processing
KR20130104958A (en) Apparatus and methods for executing multi-operating systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130417

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130423

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131002

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20131008

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131120

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131223

R150 Certificate of patent or registration of utility model

Ref document number: 5453825

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150