JP2022184244A - サービス機能の集約型リアルタイム処理装置 - Google Patents

サービス機能の集約型リアルタイム処理装置 Download PDF

Info

Publication number
JP2022184244A
JP2022184244A JP2021091966A JP2021091966A JP2022184244A JP 2022184244 A JP2022184244 A JP 2022184244A JP 2021091966 A JP2021091966 A JP 2021091966A JP 2021091966 A JP2021091966 A JP 2021091966A JP 2022184244 A JP2022184244 A JP 2022184244A
Authority
JP
Japan
Prior art keywords
service
task
real
time
circuit
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.)
Pending
Application number
JP2021091966A
Other languages
English (en)
Inventor
菜岐佐 石浦
Nagisa Ishiura
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.)
Kwansei Gakuin Educational Foundation
Original Assignee
Kwansei Gakuin Educational Foundation
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 Kwansei Gakuin Educational Foundation filed Critical Kwansei Gakuin Educational Foundation
Priority to JP2021091966A priority Critical patent/JP2022184244A/ja
Publication of JP2022184244A publication Critical patent/JP2022184244A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Hardware Redundancy (AREA)

Abstract

【課題】個々の回路モジュールにサービス機能を分散せず集約化することによって回路規模が削減され、タスクからサービス機能を起動する仕組みと同時に複数のタスクからサービス機能の要求があった場合の調停の仕組みを備えたリアルタイム処理装置を提供する。【解決手段】複数の回路モジュールと、サービス実行管理回路を備え、プロセッサを用いず、全てハードウェア化される。回路モジュールは、リアルタイムOSを用いるプロセッサで動作する全ての処理タスクが個々にハードウェア化される。サービス実行管理回路は、回路モジュールが用いるリアルタイムOSのサービスが重複なく集約してハードウェア化され、回路モジュールからのサービスの起動要求を並列に受付け、タスク状態及びタスク優先度に応じて同時複数要求を調停して要求されたサービスを実行し、実行されたサービスの実行結果値を回路モジュールに受渡しする。【選択図】図2

Description

特許法第30条第2項適用申請有り 刊行物名 電子情報通信学会技術研究報告 VLD2020-75,HWS2020-50(2021-03) 発行日 2021年3月3日 発行所 一般社団法人電子情報通信学会
本発明は、プロセッサ(CPU)、リアルタイムOS(Operating System)、処理プログラムの組合せと機能等価な専用ハードウェアのリアルタイム処理装置に関するものである。
近年の情報通信技術の発展に伴って、機器に組込まれる制御システムには、益々高い機能と高い応答性能が要求されるようになっている。特に、自動運転車両、無人飛行機、ロボット制御などの制御には、非常に高い応答性能が要求されており、このような高性能な制御システムを如何に実装するかが重要な課題になっている。
従来から、リアルタイムOSを用いたシステムの応答性を向上させる手法として、リアルタイムOSの機能をハードウェアとして実装する方法が知られている。リアルタイムOSは、タスクやハンドラが制約時間内に実行を完了するようにシステムを実装するための機能を提供する。しかし、これらの方法では、タスクやハンドラはソフトウェアとして実行されるため、システムの高機能化が進むにつれ、その処理の計算量が多い場合には必ずしも応答性能が改善されないといった問題があり、リアルタイムOSを利用したシステムのリアルタイム性確保は難しくなってきているのが実状である。
一方で、高位合成技術を用いて、リアルタイムOS上で動作するタスクをハードウェア化し、処理の高速化を図ることが知られている。この高位合成技術を利用して指定したタスクをハードウェア化するシステムレベル設計方法が存在するが、リアルタイムOSを含めたシステム全体をハードウェア化することは実現されていないといった実状である。
上記の実状を踏まえ、本発明者は、既に、リアルタイムOS、タスクを含めたシステム全体をハードウェア化したリアルタイム処理装置を提案している(特許文献1、非特許文献1を参照)。提案したリアルタイム処理装置は、リアルタイムOSを用いる演算処理装置で動作する全てのタスクが個々にハードウェア化された複数の回路モジュールと、回路モジュールの起動/停止の信号を生成するモジュール実行機構と、回路モジュールがアクセスし得る共有メモリと、共有メモリにアクセスする回路モジュールの調停を行う調停機構を備え、CPUなどの演算処理ユニットを用いず、リアルタイムOSのサービスの全ての機能を含めてフルハードウェア化されるものである。このリアルタイム処理装置の作製においては、リアルタイムOS上で動作するプログラムを入力として、 これを実行するプロセッサと機能等価なハードウェアを自動生成し、タスクがそれぞれ独立に動作するハードウェアに合成される。そのため、全てのタスクは並列に実行でき、タスクの切り替えオーバーヘッドが無く、高い応答性能を実現できる。
しかしながら、タスクをハードウェア化した回路モジュールの回路規模が大きくなることが問題であった。これは、リアルタイムOSのサービス機能を含めてタスクがハードウェア化されていることが問題を招いていた。すなわち、タスクが要求するOSのサービス機能は個々のタスクの処理内容に応じて通常異なるものの、異なるタスクにおいて同じのサービス機能を用いる場合であっても、個々のタスクが独立に動作できるように同じサービス機能を含めて回路モジュール化されており、そのため重複したサービス機能の回路が存在し、結果として回路規模の増大化を招く事態となっていたのである。
特開2019-144910号公報
N.Ishiura, et al.,"Synthesis of Full Hardware Implementation ofRTOS-Based Systems", Proc. RSP 2018, pp. 1-7 (2018.10).
上述の如く、従来のリアルタイム処理装置では、リアルタイムOSのサービス機能を重複してタスクがハードウェア化されているため、回路規模の増大化の問題が生じている。そこで、リアルタイムOSのサービス機能を含めずに、タスクをハードウェア化し、サービス機能だけを集約して回路を構築しようとした場合には、タスクからサービス機能を起動する仕組みが必要になり、またハードウェア化されたタスクがそれぞれ独立に動作することから、同時に複数のタスクからサービス機能の要求があった場合の調停の仕組みが必要になる。
かかる状況に鑑みて、本発明は、個々の回路モジュールにサービス機能を分散せず集約化することによって回路規模が削減され、タスクからサービス機能を起動する仕組みと同時に複数のタスクからサービス機能の要求があった場合の調停の仕組みを備えたリアルタイム処理装置を提供することを目的とする。
上記課題を達成すべく、本発明のリアルタイム処理装置は、複数の回路モジュールと、サービス実行管理回路を備え、プロセッサを用いず、全てハードウェア化されたことを特徴とする。回路モジュールは、リアルタイムOSを用いるプロセッサで動作する全ての処理タスクが個々にハードウェア化される。また、サービス実行管理回路は、回路モジュールが用いるリアルタイムOSのサービスが重複なく集約してハードウェア化され、回路モジュールからのサービスの起動要求を並列に受付け、タスク状態及びタスク優先度に応じて同時複数要求を調停して要求されたサービスを実行し、実行されたサービスの実行結果値を回路モジュールに受渡しする。
上記の構成によれば、リアルタイムOSのサービス機能を集約して、処理タスクの全ての機能をハードウェア化でき、
格段に高速な応答を実現すると共に、回路規模の削減が図ることができる。処理タスクの回路モジュールは、全て独立して実装され、全てが並列に実行され、タスクのスケジューリング機能が不要である。すなわち、処理タスクを時分割によりプロセッサで並行して演算処理する必要はなく、タスクスイッチの切り替えに伴うオーバーヘッドがほとんど生じないため、システムの応答時間を格段に短縮できる。
ここで、リアルタイムシステムとは、例えば、制御システムにおいて、入力に対して定められた時間以内に応答をするものと定義する。例えば、自動車の制御システムのように、距離センサーから前方車両との距離が近接しているという入力があると、数μs以内にブレーキに作動信号を出力するといったシステムである。リアルタイムOSとは、リアルタイムシステムを効率的に実装するためのOSであり、処理タスクの起動や停止、及び、処理タスク間の通信などを担うプログラムをいう。システムコールとは、処理タスクのプログラムからリアルタイムOSのサービス機能を呼び出すことをいう。
処理タスクとは、リアルタイムシステムにおいて、複数の処理を並行して行っている処理、例えば、走行モーターの制御を行いながら、画像カメラで障害物の検出を行う等、これらの個々の処理と定義する。本明細書において、処理タスクは処理ハンドラを含む意味で用いている。処理ハンドラとは、タスクの一種であり、制御システムに対する非定期的な入力、例えば、障害物の急接近や外部からの緊急信号に応答するため、特定の入力があった場合には実行中のタスクを一時中断して特定の処理を実行するタスクである。
タスクスイッチとは、プロセッサが搭載された制御システムにおいて、処理タスクから別の処理タスクに処理を切り替えることをいう。プロセッサが搭載された制御システムでは、タスクスイッチのために、現在実行している処理タスクの状態をすべてメモリに退避し、再び処理タスクを実行する場合にはこれを復元するという処理が必要になる。これらの処理は本体目的のタスクの処理ではないことから、オーバーヘッドという。タスクスケジューリングとは、プロセッサが搭載された制御システムにおいて、プロセッサが実行する処理タスクを状況に応じて切り替える機能をいう。リアルタイムといった制約を満たすために、処理タスクに、タスクの優先順位(タスク優先度)を設定でき、リアルタイムOSはこの優先度に基づいてタスクスケジューリングを行う。
本発明のリアルタイム処理装置では、タスクの回路モジュールは、全て独立して実装され、全てが並列に実行されることから、タスクスイッチ、タスクスケジューリングが不要であるが、OSのサービス機能の要求に関するスケジューリングが必要であり、タスク優先度に応じた調停を行うが、これについては後述する。本発明のリアルタイム処理装置における回路モジュールは、高位合成により個々にハードウェア化されることが好ましい。高位合成とは、C言語などで書かれたプログラムから、等価なハードウェア(論理回路) の設計記述を自動生成する技術である。
本発明のリアルタイム処理装置におけるサービス実行管理回路では、上述のとおり、回路モジュールが用いるリアルタイムOSのサービスが重複なく集約してハードウェア化されている。リアルタイムOSのサービスとは、処理タスクのプログラムからシステムコールを呼び出すことにより実行されるOSのプログラムであるが、これをハードウェア化すると共に、タスクの一部として組み込み回路モジュールとするのではなく、タスクの回路モジュールとは別回路のサービス実行管理回路の一部としてハードウェア化する。そして、サービス実行管理回路では、個々に独立した回路モジュールからのサービスの起動要求を並列に受付ける構成である。
サービス実行管理回路では、タスク状態及びタスク優先度に応じて同時複数要求を調停して要求されたサービスを実行し、実行されたサービスの実行結果値を回路モジュールに受渡しする。ここで、タスク状態は、サービス機能を要求し、要求したサービスの完了待ちの状態であるか否かを示すものであり、タスク優先度は、OSのサービス機能の要求に関して、同時複数要求を調停するために用いるものである。実行されたサービスの実行結果値には、サービスの実行による計算結果の値、及びサービスの実行の成否を表す値(正常終了又はエラー)が含まれる。
リアルタイムOSのシステムコール(関数)では、サービスの実行の成否を表す値(正常終了コード又はエラーコード)を関数の返り値として呼び出し側の処理プログラムに返す。サービスコールによっては、返り値とは別にサービスの処理結果であるデータを受け渡すこともある。サービス実行管理回路における実行結果値は、返り値と処理結果のデータを纏めたものであり、サービス機能の処理完了は、別途、制御信号で通知している。
本発明のリアルタイム処理装置において、サービス実行管理回路は、具体的には、以下の1)~4)を備える。
1)回路モジュール毎のサービスの起動要求を受け付けるポート、
2)タスク状態及びタスク優先度を記憶するレジスタ、
3)リアルタイムOSのサービスが集約してハードウェア化されたサービスモジュール群、
4)ポートからサービスの起動要求を読み込み、サービスの同時複数要求がある場合には、回路モジュール毎のタスク状態及びタスク優先度に応じて調停し、起動要求されたサービスモジュールを起動して、サービスが起動中の前記回路モジュールに対応するポートに対して、サービスモジュールにおけるサービスの実行結果と実行完了状態を、実行結果値として出力する調停機構。
上記1)のポートは、サービス実行管理回路の一形態として、サービスの起動要求をレジスタで受け付けることもできる。サービス起動要求はポートを介することでもよく、また、レジスタを介するものでもよい。上記3)のサービスモジュール群は、個々のサービスモジュールの集合体を指すが、システムによってはサービスモジュールが1つだけの場合もあり、それを許容する。
上記4)の調停機構は、回路モジュールのタスクからサービスの起動要求があり、かつ、タスク状態が停止状態でないタスクのタスク優先度を比較し、比較した中で最も高い優先度のタスクの識別番号と、識別番号に対応するタスクが起動要求するサービスの識別番号及びパラメータとをサービスモジュールに引渡す。ここで、サービスの識別番号とは、要求するサービス機能のユニークな番号であり、従来のシステムコールの関数名に相当するものである。また、パラメータとは、従来のシステムコールの引数に相当するものである。
本発明のリアルタイム処理装置では、上記2)のレジスタに、タスク優先度およびタスク状態が記憶され、タスク優先度およびタスク状態は、サービスモジュールにより書き換え可能である。
本発明のリアルタイム処理装置において、処理タスクは、周期的に起動するタスクと、非定期的な割り込みに対するタスクとが含まれる。また、本発明のリアルタイム処理装置における回路モジュールは、全て独立して実装され、全てが並列に実行するものである。
次に、本発明のリアルタイム処理装置の作製方法について説明する。本発明のリアルタイム処理装置の作製方法は、以下の1)~7)のステップを備える。
1)リアルタイムOSを用いるプロセッサで動作する処理タスクの構成と設定パラメータを与えられたプログラムから抽出するステップ、
2)処理タスクが使用するリアルタイムOSのシステムコールの呼び出しをサービスの起動要求処理および実行結果値の受け取り処理に置換するステップ、
3)処理タスクの全てを、個々にハードウェア化して複数の回路モジュールに変換するステップ、
4)リアルタイムOSのシステムコールの関数本体を重複なく集約して、個々にハードウェア化して複数のサービスモジュールに変換するステップ、
5)サービスの起動要求に応じてサービスモジュールを起動し、かつ、サービスの同時複数要求がある場合には、回路モジュール毎のタスク状態及びタスク優先度に応じて調停する調停機構を回路生成するステップ、
6)回路モジュール毎のタスク状態及びタスク優先度を記憶するレジスタと、サービスモジュールと、調停機構とを接続して構成されるサービス実行管理回路を生成するステップ、
7)回路モジュールを、サービス実行管理回路に接続するステップ。
上記1)では、従来のリアルタイムOSを用いたプログラム(群)をスキャンして、そこから情報を抽出してハードウェアを全自動で合成することができる。
上記3)の回路モジュールに変換するステップは、高位合成により個々にハードウェア化することができる。
本発明のリアルタイム処理装置によれば、タスクからサービス機能を起動する仕組みと同時に複数のタスクからサービス機能の要求があった場合の調停の仕組みを備え、個々の回路モジュールにサービス機能を分散せず集約化することによって回路規模が削減できるといった効果がある。また、全ての処理タスクを並列に実行させることができ、処理性能とレスポンスの向上を図ることができるといった効果がある。
本発明のリアルタイム処理装置の概略図 本発明のリアルタイム処理装置の一実施形態のハードウェア構成図 サービス実行管理回路の機能ブロック図(1) サービス実行管理回路の機能ブロック図(2) サービス実行管理回路の機能ブロック図(3) リクエストアービタ(調停機構)の機能ブロック図 リアルタイム処理装置の作製フロー図 本発明のリアルタイム処理装置の他の実施形態の概略図 本発明のリアルタイム処理装置の他の実施形態のハードウェア構成図 先行で提案したリアルタイム処理装置の概略図
以下、本発明の実施形態の一例を、図面を参照しながら詳細に説明していく。なお、本発明の範囲は、以下の実施例や図示例に限定されるものではなく、幾多の変更及び変形が可能である。
図1は、本発明のリアルタイム処理装置の概略図を示している。一方、図10は、特許文献1に開示された先行提案のリアルタイム処理装置の概略図を示している。図1,10中、T1~T3はタスクを実行するハードウェアである回路モジュール2、S1~S4はサービス機能の処理を行うハードウェアであるサービスモジュール6を表す。
図10に示すように、先行提案のリアルタイム処理装置100は、回路モジュール200及びモジュール実行機構(マネージャー)300から構成される。リアルタイム処理装置100では、リアルタイムOSのサービス機能の処理を、モジュール実行機構(マネージャー)300側ではなく、回路モジュール200側、すなわちタスク側のプログラムの一部として高位合成していたことから、同じサービス機能が、複数の回路モジュール200の中に重複して存在していた。
これに対して、図1に示すように、本発明のリアルタイム処理装置1では、サービス機能の処理は、回路モジュール2側、すなわちタスク側ではなく、すべてサービス実行管理回路3側に集約することにより、この重複を排除している。サービス機能の起動は、タスクである回路モジュール2がポート41(TFi、TAi)にそれぞれ起動したいサービスの識別番号とパラメータ(引数)を出力することにより行う。
複数のタスク、すなわち複数の回路モジュール2から、複数のサービスの起動要求が同時に発生した場合には、サービス実行管理回路3が、要求を行ったタスクのその時点でのタスク優先度に従って、最初に処理するサービスを決定し、対応するサービスモジュール6を起動する。起動したサービスモジュール6の実行が完了すると、サービス実行管理回路3が、サービスモジュール6が出力する実行完了値をTAiに格納し、TFiに実行完了を表す値を書き込んでタスクに完了を通知する。
図2は、本発明のリアルタイム処理装置の一実施形態のハードウェア構成図を示している。図2に示すように、リアルタイム処理装置1は、回路モジュール2及びサービス実行管理回路3から構成される。
回路モジュール2は、リアルタイムOSを用いるプロセッサ(CPU)で動作する全ての処理タスクが個々にハードウェア化されたものである。また、サービス実行管理回路3は、回路モジュール2が用いるリアルタイムOSのサービスが重複なく集約してハードウェア化されたサービスモジュール群と、回路モジュール2からのサービスの起動要求を並列に受付け、タスク状態及びタスク優先度に応じて同時複数要求を調停して要求されたサービスを実行し、実行されたサービスの実行結果値を回路モジュール2に受渡しするリクエストアービタ(RA)5を備える。
サービス実行管理回路3において、TFiおよびTAiは、タスクTi(以下、タスクT1~T3を、Ti、但し、iは1~3を表す)サービス実行管理回路3にサービスを通知するポート41であり、status[Ti]は、タスクTiの状態変数を格納するレジスタ群42である。一方、status[G]は、リアルタイム処理装置の全体システムの状態変数を格納するレジスタ群42である。なお、サービス実行管理回路3にサービスを通知するポート41は、タスクTiの回路モジュールと直結してもよく、また、バスを介して接続してもよい。また、ポート41は、レジスタにすることでもよい。
リクエストアービタ(RA)5は、複数のサービス機能の処理要求があった場合の調停を行う調停機構である。S1~S4は、サービス処理を行うハードウェアモジュール(サービスモジュール6)である。S1~S4は、各々、異なるサービス処理を行うモジュールであり、それぞれ異なる識別番号が割り当てられている。XF、XA、XTは、サービス実行管理回路3とサービスモジュール6を仲介するレジスタ43である。サービスモジュール6は、サービス機能の処理の実行のためにstatusレジスタ群42の読み書きを行う。TFiとXFには、サービス要求の有無、サービス機能を処理するサービスモジュール6の識別番号が符号化されている。TAiとXAはレジスタ配列であり、要求のあったサービスに必要な個数だけパラメータ(引数)が書き込まれる。XTには、サービス要求を行ったタスクの識別番号が符号化され書き込まれる。
回路モジュール2及びサービス実行管理回路3の具体的な動作の流れを図3~6を参照して説明する。図3~5は、本発明のリアルタイム処理装置の機能ブロック図を示し、図中の矢印は主なデータの流れを示し、制御信号は省略している。また、図6は、本発明のリアルタイム処理装置の調停機構であるリクエストアービタの機能ブロック図を示している。
まず、タスクTiは、パラメータ(引数)をTAiに、サービスの識別番号をTFiに書き込むことによってサービス実行管理回路3にサービス機能の起動要求を行う。図3(1)では、タスクT1が、パラメータ(引数)をTAに、サービスの識別番号をTFに書き込む例を示している。
図3(2)に示すように、リクエストアービタ(RA)は、TFiを監視し、タスクTiからサービスの要求があれば、図3(3)に示すように、リクエストアービタ(RA)は、XF、XA、XTにそれぞれTFi、TAi、iを書き込む。複数のタスクから複数のサービス要求が同時にあった場合、あるいは、あるサービス機能の要求の処理待ちの間に別のサービス要求があった場合には、タスク優先度に応じてそのうちの1つを選択してXF、XA、XTを書き込む。それ以外のサービス要求は、実行中のサービスの終了を待つ。
サービスモジュールは、XFを監視しており、XFに自身のサービスの識別番号が書かれると処理を開始し、XA、XTを読み込んで要求されたサービス機能の処理を実行する。図4(1)に示す例では、XFにサービスモジュールS1の識別番号が書かれたので、サービスモジュールS1が処理を開始し、XA、XTを読み込んで要求されたサービス機能の処理を実行する様子を示している。図4(2)に示すように、サービスモジュールS1は、必要に応じてタスク状態のレジスタにアクセスして、タスクやシステムの状態変数を参照・更新する。また、図4(2)に示すように、サービス機能の処理が完了すると(サービス実行中にエラーが発生した場合を含む)、XAのレジスタにサービス機能の実行結果値を書き込むと共に、リクエストアービタ(RA)に対して完了信号を出す。
リクエストアービタ(RA)は、図4(3)に示すように、XTの値から要求があったタスク番号を認識し、図5(1)に示すように、XAの実行結果値を、要求があったタスク1のTA1のポートに出力し、実行の完了を表す値(完了通知)をTF1に出力してタスク1に処理完了を通知する。図5(2)に示すように、タスクT1は、TF1とTA1のポートからサービス機能の実行結果値と完了通知(図示せず)を受け取る。
リクエストアービタ5は、複数のサービスモジュールの起動要求が同時に発生している場合に、次に実行するサービスモジュールを決定し、XF、XA、XTレジスタ43を介して該当するサービスモジュール6を起動する。サービスモジュールの選択は、その時点でのタスク優先度により行う。すなわち、起動要求を出しているタスクのうち、その時点で実行中であり、かつその時点での優先度が最も高いタスクのサービス機能の起動要求を選択する。なお、タスク状態やタスク優先度は、サービス機能の起動要求を出してからサービスモジュールの処理が開始されるまでに変動し得る。
図6(1)(2)は、調停機構(リクエストアービタ)の機能ブロック図を示している。図6(1)に示すように、TFi(i=1~3)にサービス機能の起動要求があった場合に、実行が停止状態でないタスクのタスク優先度を比較し、優先度が最大のタスクの識別番号をXTに、対応する起動要求されたサービスモジュールの識別番号とパラメータ(引数)を、XFとXAに書き込む。すなわち、タスク状態を表すstatus[Ti]において、stall信号線が“1”(タスク状態が停止)の場合に、AND回路のstatus[Ti]からの入力は“0”となるため、AND回路の出力は常に“0”になり、一方、タスク状態を表すstatus[Ti]において、stall信号線が“0”(タスク状態が停止でない)の場合に、AND回路のstatus[Ti]からの入力は“1”となり、サービス機能の起動要求を表すrequest信号線が“1”(起動要求有り)であれば、AND回路の出力は“1”になり、選択回路(selector)を介して、タスク優先度(priority)が優先度比較器(priority comparator)に入力され、優先度が最大のタスクの識別番号 (highest
priority task)がXTに出力される。
例えば、図6(2)に示すように、タスクT1及びタスクT3(図示せず)からそれぞれTF1とTF3にサービス機能の起動要求があった場合に、status[T1]とstatus[T3]を参照し、タスク状態が停止状態でないならば、タスクT1,T3のタスク優先度を比較し、優先度が大きいタスクの識別番号をXTに(例えば、タスクT1の優先度がタスクT3よりも大きい場合には、タスクT1の識別番号をXTに出力)、対応する起動要求されたサービスモジュールの識別番号とパラメータ(引数)を、XFとXAに書き込む。
TFiとTAiは、タスクTiがサービス機能を起動したい時に書き込むサービスの識別番号と必要なパラメータ(引数)を示している。status[Ti]は、タスクTiの各種状態を記憶しているレジスタ群である。stalliは、タスクTiが停止しているとき、すなわち実行状態ではないとき“1”、そうでないときは“0”になる。priorityiは、タスクTiのその時点でのタスク優先度である。優先度は固定ではなく、サービス機能の起動により実行中に変化する。ここでは、数値が大きいほど優先度が高く、“1”が最低の優先度としている。Priority´iは、実行状態にあるタスクTiがサービス起動を要求している時には、そのタスク優先度(priorityi)と等しく、そうでない場合には“0”となる。
requestiは、タスクTiがサービス機能の起動要求を行っている時は“1”、そうでないときは“0”になる。ここで、TFiはその特定のビットがrequestiになるように符号化することができる。stalliは、タスクTiが実行状態でないときは“1”、そうでないときは“0”となる。selectorは、選択信号(図中で横から入力されている信号)が指定した入力を選択して出力する。Priority comparator は、priorityiが最も大きいi(タスク番号)を出力する。XTには、priority
comparator の出力がセットされ、XFとXAには選択されたタスクTiのXFiとTAiがセットされる。
(リアルタイム処理装置の作製方法について)
図7に、本発明のリアルタイム処理装置の作製方法のフローを示す。
まず、リアルタイムOSを用いるプロセッサで動作する処理タスクの構成と設定パラメータをプログラムから抽出する(ステップS01)。ここで、プログラムからの抽出は自動で行うことも可能である。次に、処理タスクが使用するリアルタイムOSのシステムコールの呼び出しをサービスの起動要求処理および実行結果値の受け取り処理に置換する(ステップS02)。そして、処理タスクの全てを、個々にハードウェア化して複数の回路モジュールに変換する(ステップS03)。ステップS01~S03によって、回路モジュールを作製する。
次に、サービス実行管理回路を作製する。まず、回路モジュールで起動要求されるリアルタイムOSのシステムコールの関数本体を重複なく集約して、個々にハードウェア化して複数のサービスモジュールに変換する(ステップS04)。そして、サービスの起動要求に応じてサービスモジュールを起動し、かつ、サービスの同時複数要求がある場合には、回路モジュール毎のタスク状態及びタスク優先度に応じて調停する調停機構を回路生成し(ステップS05)、回路モジュール毎のタスク状態を記憶するレジスタと、サービスモジュールと、調停機構とを接続して構成されるサービス実行管理回路を生成する(ステップS06)。
最後に、作製した回路モジュールと、作製したサービス実行管理回路を接続する(ステップS07)。
なお、図7のフローにおいて、回路モジュールの作製(ステップS01~S03)と、サービス実行管理回路の作製(ステップS04~S06)のステップを並列に行い、最後に、作製した回路モジュールと、作製したサービス実行管理回路を接続する(ステップS07)ことでもよい。
本発明のリアルタイム処理装置の作製方法では、リアルタイムOSのシステムコールを用いた処理タスクのプログラムを入力し、処理タスクおよびリアルタイムOSのサービス機能の全てをハードウェアに合成している。リアルタイムOSのサービス機能とは、具体的には、リアルタイムOSのシステムコールの関数本体に記述されている機能である。処理タスクおよびリアルタイムOSのサービス機能の全てをハードウェアに合成することにより、OSのカーネルの関数プログラムを実行するプロセッサと機能等価なハードウェア装置を作製する。
また、本発明のリアルタイム処理装置の作製方法では、それぞれの処理タスクを独立した1つのハードウェアの回路モジュールに合成し、全ての処理タスクを並列に実行させることによって、処理性能とレスポンスの向上を図り、リアルタイムOSのタスクスケジューリング機能を不要にし、軽量なハードウェアでシステムを制御する。
ここで、上記3)の処理タスクを回路モジュールに変換する具体例について説明する。処理タスクを回路モジュールに変換する方法として、例えば、高位合成を用いることができる。高位合成は、C言語などのプログラミング言語で記述されたソフトウェア処理動作の記述から、ハードウェア設計の記述を自動生成する技術である。高位合成を用いて回路モジュールを作製することにより、ハードウェア記述言語(HDL)と呼ばれる論理回路を設計するための言語よりも、設計者がクロック周波数や信号タイミングを細かく意識することなく、回路機能を高い抽象度で設計でき、また、ソフトウェア開発のノウハウを用いたデバッグが可能になるメリットがある。高位合成を用いて回路モジュールを作製するシステムは、例えば、Xilinx社の「Vivado HLS」といった市販ツールを用いることができる。
(実装と実験結果について)
本発明のリアルタイム処理装置の構成に基づいて、TOPPERS/ASP3付属のサンプルプログラム“sample1" をハードウェア化した結果について説明する。TOPPERS/ASP3とは、TOPPERS/ASPカーネルを拡張し改良したものであり、TOPPERSの第3世代カーネル(ITRON(Industrial The Real-time Operating-system Nucleus)系の組込み機器用のリアルタイムOS)の基盤となるものとして開発されたものである。
このプログラムは、全体を制御するタスク(MAIN_TASK)、例外を処理するタスク(EXC_TASK)、および3つの並行実行タスク(TASK1,TASK2,TASK3)からなり、MAINN_TASKはシリアル通信からのメッセージを受けとり、OSのサービス機能を呼び出し実行する。
本発明のリアルタイム処理装置のサービス実行管理回路は、Verilog(IEEE 1364として標準化されているハードウェア記述言語(HDL))で設計した。サービスモジュールに関しては、TOPPERS/ASP3のサービス機能178個中でタスクからの呼び出しに関する28個のサービス機能をサポートした。タスクの回路モジュールは、ACAPによる高位合成により合成した。ACAPの詳細については、本発明者の論文「ACAP: Binary Synthesizer Based on MIPS Object Codes」(Proc. ITC-CSCC 2014, pp.725-728)を参照。ACAPによる高位合成は、C言語などで記述されたプログラムをそれぞれgas(アセンブラ)やgcc(コンパイラ)で変換して得られる機械語を入力とし、これを高位合成の標準的な内部データ構造であるCDFG(Control Data-Flow Graph)に変換し、このCDFGに対して、最適化、スケジューリング、バインディングを行って制御論理を決定し、最終的にハードウェア記述言語を出力する。これらの設計は、Xilinx社の「Vivado HLS」(2016.4)の市販ツールを用いて、Xilinx FPGA Artix-7 (xc7a100tcsg324-3) をターゲットに論理合成した。
本実験において、上記の論理合成した本発明のリアルタイム処理装置(実施例)に関して、各モジュールの回路規模、回路のクリティカルパスの伝播遅延時間、各タスクの実行サイクル数と遅延時間に関して、表1,2に纏める。表1,2には、実施例と対比できるように、前述の特許文献1に示した先行提案のリアルタイム処理装置(比較例)の回路規模や遅延時間などを示している。なお、表1において、LUTは、ルックアップテーブル」(Look Up Table)の略称で、ある入力数以下の任意の論理関数を実現できる論理ブロックであり、FFは、フリップフロップ(flip-flop)である。
Figure 2022184244000002
Figure 2022184244000003
表1に示すように、論理合成した各モジュールの回路規模を比べると、本発明のリアルタイム処理装置では、3つの並行実行タスク(TASK1,TASK2,TASK3)の回路規模が先行提案のリアルタイム処理装置に比べて削減できていたが、サービスモジュールとリクエストアービタがあらたに必要になったため、全体としては回路規模を大幅に削減できなかった。このことは、実験で用いたsample1プログラムは、一般的な実用プログラムから見ても使用されているサービス機能の処理自体が軽量なためであり、回路規模削減の効果がサービスモジュールとリクエストアービタによる回路規模の増加を大きく上回らなかったためであり、タスク数が増え、要求されるサービス機能の種類が増大するほど、回路規模の削減効果が顕著に表れる。
また、表2に示すように、各サービス機能が起動要求され状態が更新されるまでの実行サイクル数を比較すると、本発明のリアルタイム処理装置では、先行提案のリアルタイム処理装置に比べて半分のサイクル数以下に削減できていた。また、本発明のリアルタイム処理装置では、タスクがサービス機能の起動要求をしてから、実際にサービス機能の実行結果値が送られてくる遅延時間が、いずれのサービス機能も200ns以内であった。
(その他の実施例)
(1)図8,9は、本発明のリアルタイム処理装置の他の実施形態の概略図とハードウェア構成図を示しているが、図に示すように、リアルタイム処理装置1aは、回路モジュールとして、タスク(T1~T3)に加えて、特定の入力があった場合には実行中のタスクを一時中断して特定の処理を実行するタスクであるハンドラ(H1,H2)を設けてもよい。
(2)図1~図6において、ポート41は、レジスタとすることでもよい。レジスタの場合には、タスクのメモリ空間にマップされているため、タスクはそのアドレスに対して読み書きすることにより、サービス機能の起動と実行結果値の受け取りを行うことができる。
(3)全ての処理タスクの回路モジュールは、高位合成などを用いて自動で作製する以外に、レジスタ転送レベル(RTL;Register Transfer Level)などのハードウェア記述言語を用いて手動で設計し作製してもよく、高位合成で自動作製された回路モジュールと、手動で設計された回路モジュールが混在しても構わない。また、回路モジュールを、従来の装置と同じ動作のプログラム (例えば、高位合成システムに入力するプログラムそのもの) を実行するプロセッサで置き換えることも可能である。
本発明は、自動運転車両、無人飛行機、ロボット制御などの制御装置として有用である。
1,1a,100 リアルタイム処理装置
2,200 回路モジュール
3 サービス実行管理回路
5 リクエストアービタ(RA)
6 サービスモジュール
41 ポート
42 レジスタ群
43 レジスタ
300 モジュール実行機構(マネージャー)

Claims (7)

  1. リアルタイムOSを用いるプロセッサで動作する全ての処理タスクが個々にハードウェア化された複数の回路モジュールと、
    前記回路モジュールが用いるリアルタイムOSのサービスが重複なく集約してハードウェア化され、前記回路モジュールからのサービスの起動要求を並列に受付け、タスク状態及びタスク優先度に応じて同時複数要求を調停して要求されたサービスを実行し、実行されたサービスの実行結果値を前記回路モジュールに受渡しするサービス実行管理回路、
    を備え、プロセッサを用いず、全てハードウェア化されたことを特徴とするリアルタイム処理装置。
  2. 前記サービス実行管理回路は、
    前記回路モジュール毎のサービスの起動要求を受け付けるポートと、タスク状態及びタスク優先度を記憶するレジスタと、
    リアルタイムOSのサービスが集約してハードウェア化されたサービスモジュール群と、
    前記ポートからサービスの起動要求を読み込み、サービスの同時複数要求がある場合には、前記回路モジュール毎のタスク状態及びタスク優先度に応じて調停し、起動要求されたサービスモジュールを起動して、サービスが起動中の前記回路モジュールに対応する前記ポートに対して、前記サービスモジュールにおけるサービスの実行結果と実行完了状態を、前記実行結果値として出力する調停機構、
    を備えることを特徴とする請求項1に記載のリアルタイム処理装置。
  3. 前記調停機構は、前記回路モジュールのタスクからサービスの起動要求があり、かつ、前記タスク状態が停止状態でないタスクの前記タスク優先度を比較し、比較した中で最も高い優先度のタスクの識別番号と、識別番号に対応するタスクが起動要求するサービスの識別番号及びパラメータとを、前記サービスモジュールに引渡すことを特徴とする請求項2に記載のリアルタイム処理装置。
  4. 前記レジスタに、前記タスク優先度および前記タスク状態が記憶され、
    前記タスク優先度および前記タスク状態は、前記サービスモジュールにより書き換えできることを特徴とする請求項3に記載のリアルタイム処理装置。
  5. 前記処理タスクは、周期的に起動するタスクと、非定期的な割り込みに対するタスクとが含まれることを特徴とする請求項1~4の何れかに記載のリアルタイム処理装置。
  6. 前記回路モジュールは、全て独立して実装され、全てが並列に実行し得ることを特徴とする請求項1~5の何れかに記載のリアルタイム処理装置。
  7. 下記1)~7)のステップを備えるリアルタイム処理装置の作製方法:
    1)リアルタイムOSを用いるプロセッサで動作する処理タスクの構成と設定パラメータを与えられたプログラムから抽出するステップと、
    2)前記処理タスクが使用する前記リアルタイムOSのシステムコールの呼び出しをサービスの起動要求処理および実行結果値の受け取り処理に置換するステップと、
    3)前記処理タスクの全てを、個々にハードウェア化して複数の回路モジュールに変換するステップと、
    4)前記リアルタイムOSのシステムコールの関数本体を重複なく集約して、個々にハードウェア化して複数のサービスモジュールに変換するステップと、
    5)サービスの起動要求に応じて前記サービスモジュールを起動し、かつ、サービスの同時複数要求がある場合には、前記回路モジュール毎のタスク状態及びタスク優先度に応じて調停する調停機構を回路生成するステップと、
    6)前記回路モジュール毎のタスク状態及びタスク優先度を記憶する前記レジスタと、前記サービスモジュールと、前記調停機構とを接続して構成されるサービス実行管理回路を生成するステップと、
    7)前記回路モジュールを、前記サービス実行管理回路に接続するステップ。

JP2021091966A 2021-05-31 2021-05-31 サービス機能の集約型リアルタイム処理装置 Pending JP2022184244A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2021091966A JP2022184244A (ja) 2021-05-31 2021-05-31 サービス機能の集約型リアルタイム処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021091966A JP2022184244A (ja) 2021-05-31 2021-05-31 サービス機能の集約型リアルタイム処理装置

Publications (1)

Publication Number Publication Date
JP2022184244A true JP2022184244A (ja) 2022-12-13

Family

ID=84437471

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021091966A Pending JP2022184244A (ja) 2021-05-31 2021-05-31 サービス機能の集約型リアルタイム処理装置

Country Status (1)

Country Link
JP (1) JP2022184244A (ja)

Similar Documents

Publication Publication Date Title
Becker et al. Contention-free execution of automotive applications on a clustered many-core platform
EP1046999B1 (en) Transfer controller with hub and ports architecture
KR100403658B1 (ko) 컴퓨터 프로세서 및 컴퓨터 처리 시스템
JP2020537786A (ja) 複数のプロセッサおよびニューラルネットワークアクセラレータを有するニューラルネットワーク処理システム
CN112088363A (zh) 具有自调度处理器和混合线程结构的系统中的事件消息传递
US7577822B2 (en) Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization
JP2001521219A (ja) マルチスレッド式プロセッサでのスレッド優先順位の変更
WO2022100372A1 (en) Processor architecture with micro-threading control by hardware-accelerated kernel thread
JP5578713B2 (ja) 情報処理装置
US5295265A (en) Device for enhancing the performance of a real time executive kernel associated with a multiprocessor structure that can include a large number of processors
US11392407B2 (en) Semiconductor device
Oosako et al. Synthesis of full hardware implementation of RTOS-based systems
CN113946445A (zh) 一种基于asic的多线程模块及多线程控制方法
Nikolov et al. Efficient automated synthesis, programing, and implementation of multi-processor platforms on FPGA chips
JP2022184244A (ja) サービス機能の集約型リアルタイム処理装置
Pöhnl et al. A middleware journey from microcontrollers to microprocessors
JP7112058B2 (ja) リアルタイム処理装置及びその作製方法
CN111611040A (zh) 一种低配置车载系统的显示控制方法、系统、介质及终端
US5953535A (en) Using intelligent bus bridges with pico-code to service interrupts and improve interrupt response
CN108845969B (zh) 适用于不完全对称多处理微控制器的操作控制方法及操作系统
Ando et al. Full Hardware implementation of RTOS-based systems using general high-level synthesizer
Zhou et al. An operating system framework for reconfigurable systems
US6708259B1 (en) Programmable wake up of memory transfer controllers in a memory transfer engine
Lübbers et al. Communication and Synchronization in Multithreaded Reconfigurable Computing Systems.
Jidin et al. Implementing Multi Threaded System Support for Hybrid FPGA/CPU Computational Components.

Legal Events

Date Code Title Description
A80 Written request to apply exceptions to lack of novelty of invention

Free format text: JAPANESE INTERMEDIATE CODE: A80

Effective date: 20210602

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240221