IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 学校法人関西学院の特許一覧

<>
  • 特許-リアルタイム処理装置及びその作製方法 図1
  • 特許-リアルタイム処理装置及びその作製方法 図2
  • 特許-リアルタイム処理装置及びその作製方法 図3
  • 特許-リアルタイム処理装置及びその作製方法 図4
  • 特許-リアルタイム処理装置及びその作製方法 図5
  • 特許-リアルタイム処理装置及びその作製方法 図6
  • 特許-リアルタイム処理装置及びその作製方法 図7
  • 特許-リアルタイム処理装置及びその作製方法 図8
  • 特許-リアルタイム処理装置及びその作製方法 図9
  • 特許-リアルタイム処理装置及びその作製方法 図10
  • 特許-リアルタイム処理装置及びその作製方法 図11
  • 特許-リアルタイム処理装置及びその作製方法 図12
  • 特許-リアルタイム処理装置及びその作製方法 図13
  • 特許-リアルタイム処理装置及びその作製方法 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-26
(45)【発行日】2022-08-03
(54)【発明の名称】リアルタイム処理装置及びその作製方法
(51)【国際特許分類】
   G06F 15/78 20060101AFI20220727BHJP
   G06F 9/48 20060101ALI20220727BHJP
【FI】
G06F15/78 560
G06F9/48 300F
【請求項の数】 9
(21)【出願番号】P 2018029244
(22)【出願日】2018-02-21
(65)【公開番号】P2019144910
(43)【公開日】2019-08-29
【審査請求日】2021-01-29
【新規性喪失の例外の表示】特許法第30条第2項適用 刊行物名 SWEST組込みシステム技術に関するサマーワークショップ 実行委員会予稿集 発行日 2017年8月22日 発行所 SWEST実行委員会
(73)【特許権者】
【識別番号】503092180
【氏名又は名称】学校法人関西学院
(74)【代理人】
【識別番号】110000822
【氏名又は名称】特許業務法人グローバル知財
(72)【発明者】
【氏名】石浦 菜岐佐
(72)【発明者】
【氏名】大迫 裕樹
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開2006-155448(JP,A)
【文献】米国特許出願公開第2008/0134187(US,A1)
【文献】特開2002-064463(JP,A)
【文献】東 香実 他,Erlangからの高位合成のためのメモリ分散アーキテクチャ,情報処理学会 研究報告,情報処理学会,2018年01月11日,2018-ARC-229,第1頁-第6頁
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/78
G06F 9/48
(57)【特許請求の範囲】
【請求項1】
リアルタイムOSを用いる演算処理装置で動作する全処理タスク及びハンドラが個々にハードウェア化された複数の回路モジュールと、
前記回路モジュールのリアルタイムOSにおける起動/停止を含む状態を記憶する状態レジスタを備え、前記回路モジュールからの信号によって自他の前記状態レジスタを読み書きし、前記状態レジスタの値の変化に応じて前記回路モジュールを制御するモジュール実行機構と、
前記回路モジュールがアクセスし得る共有メモリと、
前記共有メモリにアクセスする前記回路モジュールの調停を行う調停機構、
を備え、
演算処理ユニットを用いず、全てハードウェア化されたことを特徴とするリアルタイム処理装置。
【請求項2】
前記状態レジスタは、前記回路モジュールの起動/停止状態を表すレジスタ値と、前記回路モジュールの優先度を表すレジスタ値とから少なくとも構成されることを特徴とする請求項に記載のリアルタイム処理装置。
【請求項3】
前記調停機構は、前記回路モジュールの優先度を表すレジスタ値に応じて、前記共有メモリにアクセスする前記回路モジュールを調停することを特徴とする請求項に記載のリアルタイム処理装置。
【請求項4】
前記回路モジュールは、全て独立して実装され、全てが並列に実行し得ることを特徴とする請求項1~の何れかに記載のリアルタイム処理装置。
【請求項5】
前記回路モジュールは、高位合成により個々にハードウェア化されたことを特徴とする請求項1~の何れかに記載のリアルタイム処理装置。
【請求項6】
前記モジュール実行機構は、
前記回路モジュールからメモリアクセス用アドレスを読み込み、
前記共有メモリに記憶されている前記回路モジュール毎の起動/停止の状態を記憶する状態レジスタを読み書きし、
前記状態レジスタにおける前記回路モジュールの起動/停止のレジスタ値の変化に応じて前記回路モジュールを制御することを特徴とする請求項1に記載のリアルタイム処理装置。
【請求項7】
下記1)~6)のステップを備えるリアルタイム処理装置の作製方法:
1)リアルタイムOSを用いる演算処理装置で動作する処理タスク及びハンドラの構成と設定パラメータをコンフィグレーションファイルから抽出するステップと、
2)前記処理タスク及びハンドラが使用する前記リアルタイムOSのシステムコールで呼び出される関数本体を、状態レジスタの読み書き処理に置換し、前記処理タスク及びハンドラに結合するステップと、
3)前記結合された処理タスク及びハンドラの全てを、個々にハードウェア化して複数の回路モジュールに変換するステップと、
4)前記回路モジュールからの信号によってリアルタイムOSにおける起動/停止を含む状態を記憶する自他の状態レジスタを読み書きし、前記状態レジスタの値の変化に応じて前記回路モジュールを制御するモジュール実行機構を回路生成するステップと、
5)有メモリにアクセスする前記回路モジュールを調停する調停機構を回路生成するステップと、
6)前記回路モジュールを、前記モジュール実行機構と前記調停機構とに接続するステップ。
【請求項8】
前記状態レジスタは、前記回路モジュールの起動/停止状態を表すレジスタ値と、前記回路モジュールの優先度を表すレジスタ値とから少なくとも構成され、
前記調停機構は、前記回路モジュールの優先度を表すレジスタ値に応じて、前記共有メモリにアクセスする前記回路モジュールを調停することを特徴とする請求項に記載のリアルタイム処理装置の作製方法。
【請求項9】
上記の回路モジュールに変換するステップは、前記処理タスク及びハンドラを、高位合成により個々にハードウェア化することを特徴とする請求項又はに記載のリアルタイム処理装置の作製方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、リアルタイムOS(Operating System)を用いる制御システムの処理プログラムから、CPU、リアルタイムOS、処理プログラムの組合せと機能等価な専用ハードウェアのリアルタイム処理装置及び該装置を自動的に生成する作製方法に関するものである。
【背景技術】
【0002】
家電製品、車載機器、医療機器等の機器の制御部分は、リアルタイムOSを用いたプログラムで実装され、マイクロコンピュータ(CPUなどの電子部品)によって実行されている。近年の情報通信技術の発展に伴って、機器に組込まれる制御システムには益々高い機能と高い応答性能が要求されるようになっている。特に、自動運転車両、無人飛行機、ロボット制御などの制御には、非常に高い応答性能が要求されており、このような高性能な制御システムを如何に実装するかが重要な課題になっている。
【0003】
従来から、リアルタイムOSを用いたシステムの応答性を向上させる手法として、リアルタイムOSの機能をハードウェアとして実装する方法が知られている(例えば、特許文献1、非特許文献1,2を参照。)。しかし、これらの方法では、処理タスクや処理ハンドラはソフトウェアとして実行されるため、その処理の計算量が多い場合には必ずしも応答性能は改善されないといった問題がある。
【0004】
一方で、高位合成技術を用いて、処理タスクや処理ハンドラをハードウェア化し、処理の高速化を図ることが知られている。この高位合成技術を利用して処理タスクや割込みハンドラをハードウェア化するシステムレベル設計方法が存在するが(例えば、非特許文献3を参照。)、リアルタイムOSを含めたシステム全体をハードウェア化することは実現されていないといった実状である。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2001-75820号公報
【非特許文献】
【0006】
【文献】森久直ら,“組込み制御システム向けリアルタイムOSのハードウェア化”,東京都立産業技術研究所研究報告, 第8 号(2005).
【文献】Carl Stenquist,“HW-RTOS Improved RTOS Performance by Implementation in Silicon",White Paper Renesas R-IN32M3 Industrial Network ASSP, (2014).
【文献】Yuki Ando et al., “System-level Design Method for Control Systems with Hardware-implemented Interrupt Handler”, Journal of Information Processing, Vol. 23, No. 5,pp. 532-541. (2014).
【発明の概要】
【発明が解決しようとする課題】
【0007】
上述の如く、リアルタイムOSのハードウェア化による処理の高速化、処理タスクや処理ハンドラをハードウェア化による処理の高速化は行われているが、リアルタイムOSを含めたシステム全体をハードウェア化することは実現されるというものではない。
【0008】
かかる状況に鑑みて、本発明は、リアルタイムOSを含めたシステム全体をハードウェア化したリアルタイム処理装置、並びに、リアルタイムOSを用いたプログラムを入力とし、処理タスクと処理ハンドラ及びリアルタイムOSのサービスコールの機能全てをハードウェア化しそれらを合成させるといったリアルタイム処理装置の作製方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
上記課題を解決すべく、本発明のリアルタイム処理装置は、下記1)~4)を備え、CPUなどの演算処理ユニットを用いず、フルハードウェア化される。
1)リアルタイムOSを用いる演算処理装置で動作する全処理タスク及びハンドラが個々にハードウェア化された複数の回路モジュール。
2)回路モジュールのリアルタイムOSにおける起動/停止を含む状態を記憶する状態レジスタを備え、回路モジュールからの信号によって自他の状態レジスタを読み書きし、状態レジスタの値の変化に応じて回路モジュールを制御するモジュール実行機構。
3)回路モジュールがアクセスし得る共有メモリ。
4)共有メモリにアクセスする前記回路モジュールの調停を行う調停機構。
【0010】
上記の構成によれば、制御システムの一部だけではなく、リアルタイムOSの機能も含めた処理タスク及びハンドラの全ての機能をハードウェア化することで、 格段に高速な応答を実現することができる。
【0011】
上記2)のモジュール実行機構は、上記1)の回路モジュールからの信号によって、上記3)の回路モジュール毎の状態レジスタを読み書きし、状態レジスタにおける回路モジュールの起動/停止のレジスタ値の変化に応じて回路モジュールを制御することにより、処理タスク及びハンドラのスケジューリング機能が不要になる。ここで、状態レジスタは、回路モジュールの起動/停止状態を制御するための状態を記憶するレジスタであり、回路モジュールの起動/停止状態を表すレジスタ値と、回路モジュールの優先度を表すレジスタ値とから少なくとも構成される。
また、上記1)の回路モジュールは、全て独立して実装され、全てが並列に実行される。これにより、処理タスクやハンドラを時分割によりCPUで並行して演算処理する必要はなく、タスクスイッチの切り替えに伴うオーバヘッドがほとんど生じないため、システムの応答時間を格段に短縮できる。処理タスクや処理ハンドラの並列実行により処理を高速化できる。処理タスク及びハンドラのスケジューリング機能が不要であり、簡潔なハードウェアで実現できるのである。
【0012】
ここで、本明細書で用いる用語について定義する。
リアルタイムシステムとは、制御システムの中でも、入力に対して定められた時間以内に応答をするものと定義する。例えば、距離センサーから前方車両との距離が近接しているという入力があると、20マイクロ秒以内にブレーキに作動信号を出力するといったシステムである。
また、処理タスクとは、制御システムにおいて、複数の処理を並行して行っている処理、例えば、走行モーターの制御を行いながら、画像カメラで障害物の検出を行う等、これらの個々の処理と定義する。
処理ハンドラとは、制御システムに対する非定期的な入力、例えば、障害物の急接近や外部からの緊急信号に応答するため、特定の入力があった場合には実行中のタスクを一時中断して特定の処理を行うが、このような特定の入力を割り込みに対する処理タスクと定義する。
タスクスイッチとは、CPUが搭載された制御システムにおいて、処理タスクやハンドラから別の処理タスクやハンドラに処理を切り替えることと定義する。CPUが搭載された制御システムでは、タスクスイッチのためには、 現在実行している処理タスクの状態をすべてメモリに退避し、再び処理タスクを実行する場合にはこれを復元するという処理が必要になるため、 そのオーバヘッドが生じてしまうという問題がある。
【0013】
リアルタイムOSとは、リアルタイムシステムを効率的に実装するためのOSであり、処理タスクやハンドラの起動や停止、及び、これらの間の通信などを担うプログラムと定義する。
タスクスケジューリングとは、CPUが搭載された制御システムにおいて、CPUが実行する処理タスクを状況に応じて切り替える機能をタスクスケジューリングと定義する。リアルタイムといった制約を満たすために、処理タスクやハンドラに、優先順位(優先度)を設定でき、リアルタイムOSはこの優先度に基づいてタスクのスケジューリングを行う。
システムコールとは、プログラムからリアルタイムOSの機能を呼び出すことをいう。システムコールを具体的に行うための呼び出し方は厳密に定められており、API (application program interface) という。
【0014】
上記1)の回路モジュールは、高位合成により個々にハードウェア化されることが好ましい。高位合成とは、C言語などで書かれたプログラムから、等価なハードウェア(論理回路) の設計記述を自動生成する技術である。
【0015】
上記3)の共有メモリは、処理タスクやハンドラがアクセスできるメモリとして共用されるものであるが、この共有メモリは1つのセクションで構成される以外に、複数のセクションに分けられており、異なるセクションのメモリは同時に異なる回路モジュールからアクセスできるメモリ構成でも構わない。
【0016】
上記4)の調停機構は、具体的には、回路モジュールの優先度を表すレジスタ値に応じて、共有メモリにアクセスする回路モジュールを調停して共有メモリにアクセルする回路モジュールを決定する。
【0017】
次に、本発明のリアルタイム処理装置の作製方法を説明する。本発明のリアルタイム処理装置の作製方法は、下記1)~6)のステップを備え、リアルタイムOSを用いたプログラムを入力とし、処理タスクとハンドラ及びリアルタイムOSのサービスコールの機能全てをハードウェア化しそれらを合成させて、装置を自動的に生成する。
1)リアルタイムOSを用いる演算処理装置で動作する処理タスク及びハンドラの構成と設定パラメータをコンフィグレーションファイルから抽出するステップ。
2)処理タスク及びハンドラが使用するリアルタイムOSのシステムコールで呼び出される関数本体を、状態レジスタの読み書き処理に置換し、前記処理タスク及びハンドラに結合するステップと、
3)結合された処理タスク及びハンドラの全てを、個々にハードウェア化して複数の回路モジュールに変換するステップ。
4)回路モジュールからの信号によってリアルタイムOSにおける起動/停止を含む状態を記憶する自他の状態レジスタを読み書きし、状態レジスタの値の変化に応じて回路モジュールの起動/停止の信号を生成するモジュール実行機構を回路生成するステップ。
5)共有メモリにアクセスする回路モジュールを調停する調停機構を回路生成するステップ。
6)回路モジュールを、モジュール実行機構と前記調停機構とに接続するステップ。
【0018】
ここで、状態レジスタは、回路モジュールの起動/停止状態を表すレジスタ値と、回路モジュールの優先度を表すレジスタ値とから少なくとも構成される。そして、調停機構は、回路モジュールの優先度を表すレジスタ値に応じて、共有メモリにアクセスする回路モジュールを調停する。
また、上記3)の回路モジュールに変換するステップは、具体的には、上記2)のステップ後に、結合された処理タスク及びハンドラを、高位合成により個々にハードウェア化する。
【発明の効果】
【0019】
本発明によれば、1つの処理タスクや処理ハンドラを独立した1つのハードウェアに合成して、全ての処理タスク及びハンドラを並列に実行させることができ、処理性能とレスポンスの向上を図れるといった効果がある。また、リアルタイムOSのタスクスケジューリング機能を不要にし、軽量なハードウェアでシステムを制御できるといった効果がある。
【図面の簡単な説明】
【0020】
図1】リアルタイム処理装置のハードウェア構成図
図2】従来装置と本発明のリアルタイム処理装置の構成の対比図
図3】リアルタイム処理装置の作製方法のフロー図
図4】回路モジュールに変換する方法の説明図
図5】リアルタイム処理装置の動作説明図(1)
図6】リアルタイム処理装置の動作説明図(2)
図7】リアルタイム処理装置の動作説明図(3)
図8】リアルタイム処理装置の動作説明図(4)
図9】リアルタイム処理装置の動作説明図(5)
図10】リアルタイム処理装置の動作説明図(6)
図11】リアルタイム処理装置の動作説明図(7)
図12】リアルタイム処理装置の動作説明図(8)
図13】実施例2のリアルタイム処理装置のハードウェア構成図
図14】実施例3のリアルタイム処理装置のハードウェア構成図
【発明を実施するための最良の形態】
【0021】
以下、本発明の実施形態の一例を、図面を参照しながら詳細に説明していく。なお、本発明の範囲は、以下の実施例や図示例に限定されるものではなく、幾多の変更及び変形が可能である。
【実施例1】
【0022】
本発明のリアルタイム処理装置の一実施例に係るハードウェア構成について図1を参照し説明する。
リアルタイム処理装置1は、回路モジュール2と、モジュール実行機構3と、調停機構4、及び共有メモリ5から構成される。回路モジュール2は、リアルタイムOSを用いる演算処理装置で動作する処理タスクやハンドラがハードウェア化されたものである。
モジュール実行機構3は、回路モジュールである各処理タスクやハンドラの実行(起動/停止)を制御するものであり、調停機構4は、共有メモリ5のメモリアクセスの調停を行うものである。
上述のとおり、処理タスクは、制御システムにおいて、複数の処理を並行して行っている処理と定義されるが、従来はコンピュータが実行する処理プログラムであり、メモリに保存され、コンピュータが読み出し実行するものであった。また、処理ハンドラは、上述のとおり、制御システムに対する非定期的な入力などの特定の入力を割り込みに対する処理タスクと定義されるが、同様に従来はコンピュータが実行する処理プログラムである。
【0023】
図1に示す回路モジュール2は、従来、リアルタイムOSを用いる演算処理装置のコンピュータが実行する全ての処理タスク及びハンドラが個々にハードウェア化されたものであり、処理タスク1(2a)、処理タスク2(2b)、周期ハンドラ(2c)、アラームハンドラ(2d)、割込ハンドラ(2e)は、何れもハードウェア化された回路モジュールである。
また、モジュール実行機構3は、各処理タスク(2a,2b)及びハンドラ(2c~2e)とは、メモリアクセス用のアドレス、データ及びタスクの起動/停止を制御する信号線で接続されている。モジュール実行機構3は、その内部に各々の処理タスク及びハンドラの起動/停止の状態を記憶する状態レジスタ(タスク1状態レジスタ、タスク2状態レジスタ、周期ハンドラ状態レジスタ、アラームハンドラ状態レジスタ、割込ハンドラ状態レジスタ)を備えている。それぞれの状態レジスタは、回路モジュールの起動/停止状態を表すレジスタ値と、回路モジュールの優先度を表すレジスタ値を少なくとも含む。周期ハンドラやアラームハンドラの状態レジスタには、タイマカウント値も含まれている。タイマカウント値が所定の値になった場合には、モジュール実行機構3が周期ハンドラやアラームハンドラを実行制御する。
【0024】
モジュール実行機構3内の状態レジスタは、回路モジュール2からメモリアクセスと同様に読み書きすることができる。すなわち、モジュール実行機構3は、回路モジュール2からメモリアクセス用アドレスを読み込み、読み込んだアドレスが内部の状態レジスタを示す場合には、回路モジュール2に状態レジスタの値を読み書きさせることを可能にする。
また、モジュール実行機構3は、状態レジスタにおける回路モジュールの起動/停止のレジスタ値の変化に応じて、回路モジュールを起動又は停止させる。
また、モジュール実行機構3は、周期ハンドラやアラームハンドラの状態レジスタ内のタイマカウント値が所定の値になった場合には、周期ハンドラやアラームハンドラを起動又は停止させる。
【0025】
全ての処理タスク及びハンドラの回路モジュールは、1つのアドレス空間を共有しており、全てのデータは共有メモリ5にデータ格納される。メモリのポート数には限りがあるので、同時に複数のメモリアクセスがあった場合は、調停機構4が調停を行う。この調停は、処理タスクやハンドラの優先度に基づいて行う。すなわち、同時に起こった複数のメモリアクセスのうち、優先度の最も高い処理タスク又はハンドラのメモリアクセスのみが許可され、それ以外の処理タスクやハンドラの回路ジュールには、モジュール実行機構3が停止信号を出力し、優先度の最も高い処理タスク以外の処理タスクやハンドラは停止する。処理タスクやハンドラの優先度は、状態レジスタに記憶されている。
このように、調停機構4は、回路モジュールの優先度を表すレジスタ値に応じて、共有メモリ5にアクセスする回路モジュールを調停している。調停機構4は、複数の処理タスク/ハンドラからメモリアクセスがあった場合にこれを調停するが、例えば、ARM社が開発したRISC(Reduced Instruction Set Computer)アーキテクチャに採用されているAXI(Advanced eXtensible Interface)のような既存の接続回路であって構わない。
【0026】
以上のように、処理タスクの実行は、モジュール実行機構3からの起動/停止信号によって制御される。全処理タスクが並列実行可能であるため、実行可能状態の処理タスクは即座に実行状態に遷移し、実行されることになる。停止状態や待ち状態、強制待ち状態では、モジュール実行機構3から停止信号が該当する処理タスクに対して出力され、停止信号を入力した処理タスクの回路モジュールが停止する。なお、処理タスクのディパッチの禁止は状態レジスタで記憶し、その値に応じて起動/停止信号が処理タスクに送られる。
【0027】
周期ハンドラやアラームハンドラの実行は、処理タスクと同様に、モジュール実行機構3からの起動/停止信号によって制御される。
例えば、周期イベントやアラームイベントが起動された場合に、モジュール実行機構3内部の当該周期ハンドラやアラームハンドラの状態レジスタの内部のタイマ値がセットされ、サイクル毎にタイマ値が減じられる。そして、タイマ値が0(ゼロ)になると周期ハンドラやアラームハンドラの回路モジュールに対して、モジュール実行機構3から停止信号が解除され、周期ハンドラやアラームハンドラの回路モジュールが起動し、処理動作の実行が開始される。周期ハンドラの場合は、タイマが0になった後、自動的に次のタイマが再設定される。
【0028】
割込ハンドラも他のハンドラと同様、モジュール実行機構3からの起動/停止信号によって管理される。モジュール実行機構3に対して割込信号が入ると、割込みがマスクされ、無効にされていなければ、割込ハンドラの回路モジュールへの停止信号が解除され、実行が開始される。
【0029】
図2を参照して、従来装置と本発明のリアルタイム処理装置の構成を対比する。
図2(1)は、従来のリアルタイム処理装置の構成模式図である。従来装置では、演算処理ユニット(CPU)を用いて、リアルタイムOSというプログラムで処理タスクやハンドラの実行制御、スケジューリング、タスクの切替え、メモリアクセス制御を行っている。タスク1、タスク2、・・・、タスクn、周期1ハンドラ、周期2ハンドラ、アラームハンドラ、割込ハンドラは、全てプログラムであり、リアルタイムOSのシステムコールの関数プログラムと結合された後、CPUが逐次処理できるプログラムコード(機械語)に置き換えられ、そのプログラムコードがメモリに記憶されている。
演算処理ユニット(CPU)は、メモリに記憶されたプログラムコードを読み出して実行し、リアルタイム処理を実現している。
【0030】
一方、図2(2)に示すように、本発明のリアルタイム処理装置の場合は、タスク1、タスク2、・・・、タスクn、周期1ハンドラ、周期2ハンドラ、アラームハンドラ、割込ハンドラを全て回路モジュール2として実現し、上述したモジュール実行機構3及び調停機構4、共有メモリ5でリアルタイム処理を実現しており、従来のように演算処理ユニット(CPU)は用いず、全てハードウェア化されている。
また、タスク1、タスク2、・・・、タスクn、周期1ハンドラ、周期2ハンドラ、アラームハンドラ、割込ハンドラなど全ての処理タスク及びハンドラは、実行が可能な状態であれば、その優先度によらず、全て実行できることが特徴である。
【0031】
図3に、リアルタイム処理装置の作製方法のフローを示す。
まず、処理タスク/ハンドラの構成と設定パラメータをコンフィグレーションファイルから抽出し(ステップS01)、処理タスク/ハンドラが使用するリアルタイムOSのシステムコールの関数本体を、状態レジスタの読み書き処理プログラムに置換し、処理タスク/ハンドラの処理プログラムと結合する(ステップS02)。そして、結合された処理タスク/ハンドラの全てを、回路モジュールに変換する(ステップS03)。
次に、状態レジスタの値の変化に応じて回路モジュールの起動/停止の信号を生成するモジュール実行機構の回路を生成する(ステップS04)。また、共有メモリにアクセスする回路モジュールの調停機構の回路を生成する(ステップS05)。そして、回路モジュールをモジュール実行機構と調停機構に接続する(ステップS06)。
【0032】
このように、本発明のリアルタイム処理装置の作製方法では、リアルタイムOSのシステムコールを用いた処理タスク/ハンドラのプログラムを入力し、処理タスク/ハンドラおよびリアルタイムOSのシステムコールの機能全てをハードウェアに合成している。リアルタイムOSのシステムコールの機能とは、具体的には、リアルタイムOSのシステムコールの関数本体に記述されている機能である。処理タスク/ハンドラおよびリアルタイムOSのシステムコールの機能全てをハードウェアに合成することにより、カーネルの関数プログラムを実行するプロセッサと機能等価なハードウェアを合成するのである。
また、本発明のリアルタイム処理装置の作製方法では、1つの処理タスクやハンドラを独立した1つのハードウェアの回路モジュールに合成し、全ての処理タスク/ハンドラを並列に実行させることによって、処理性能とレスポンスの向上を図る。これによってリアルタイムOSのタスクスケジューリング機能を不要にし、軽量なハードウェアでシステムを制御することができる。
【0033】
次に、処理タスク/ハンドラを、回路モジュールに変換する具体例について説明する。処理タスク/ハンドラを回路モジュールに変換する方法として、高位合成を用いることができる。図4を参照し、回路モジュールに変換する方法として高位合成について説明する。
高位合成は、C言語などのプログラミング言語で記述されたソフトウェア処理動作の記述から、ハードウェア設計の記述を自動生成する技術である。高位合成を用いて回路モジュールを作製することにより、高い抽象度での設計やソフトウェア開発のノウハウを用いたデバッグが可能になるメリットがある。
【0034】
高位合成を実行するシステムとして、例えば、ACAP(詳細は、Nagisa Ishiura et.al., “ACAP: Binary Synthesizer Based on MIPS Object Codes”, Proc. ITC-CSCC 2014, pp. 725-728 (2014).を参照。)が知られている。ACAPは、アセンブラやコンパイラを用いることにより、アセンブリ言語やC言語プログラムも入力可能であり、レジスタ転送レベルのハンドラを生成できる。図4を参照して、ACAPによる高位合成の処理の流れについて説明する。
ACAPによる高位合成処理は、アセンブリ言語やC言語で記述されたプログラムをそれぞれgas(アセンブラ)やgcc(コンパイラ)で変換して得られる機械語を入力とし、これを高位合成の標準的な内部データ構造であるCDFG(Control Data-Flow Graph)に変換する。このCDFGに対して、最適化(処理の効率化のための変換)、スケジューリング(演算処理の並列化と、各演算をどのタイミングで実行するかの決定)、バインディング(演算処理の演算器への割り当てと中間結果の記憶装置への割り当て)を行って制御論理を決定し、最終的にハードウェア記述言語“Verilog HDL”によるハードウェアの設計記述を出力する。
なお、本発明に用いる高位合成システムは、上記ACAPに限定されるものではなく、市販ツールである例えば、Xilinx社の「Vivado HLS」を用いることも可能である(https://www.xilinx.com/products/design-tools/vivado/integration/esl-design.html)。
【0035】
次に、処理タスク/ハンドラの回路モジュールとしてのハードウェア合成処理の流れについて説明する。まず、従来のCPUを用いるリアルタイム処理装置に用いられるコンフィギュレーションファイルの記述から、処理タスク/ハンドラの状態や関連するマクロ等の定義ファイル、および合成用の処理タスク/ハンドラのメイン関数を含むメインファイルを生成する。
そして、メインファイル、定義ファイル、処理タスク/ハンドラのアプリケーションプログラムファイルを記述したソースファイル、および、処理タスク/ハンドラが使用するリアルタイムOSのシステムコールの関数本体を状態レジスタの読み書き処理プログラムに置換したもの(ハードウェア合成用に実装したOSシステムコール)を結合する。結合された処理タスク/ハンドラの全てを、高位合成システムACAPに入力し、処理プログラムのソフトウェアの記述からハードウェア設計の記述を自動生成し、ハードウェアの回路モジュールを生成する。
【0036】
ここで、モジュール実行機構3の内部にある状態レジスタについて説明する。
下記表1は、状態レジスタの内部のレジスタ値の意味の一例を示している。1つの状態レジスタは、例えば、32ビットで構成され、各々の処理タスク/ハンドラ毎に複数の状態レジスタが割り当てられる。
【0037】
【表1】
【0038】
モジュール実行機構は、状態レジスタのタスク状態の変化に応じて、該当する処理タスク/ハンドラに起動/停止信号を出力する。下記表2に示すように、処理タスクは、起動信号を入力して実行状態になる(停止が解除される)。処理タスクは、起動信号を入力すると、実行可能状態から実行状態に即遷移できるのである。従来装置の場合、ソフトウェアで実行されているため、実行可能状態になった処理タスク(プログラム)は、直ちに実行されるのではなく、一旦キューにつながれ、CPUがそのタスクを実行する状態になるまで待つ必要があった。しかし、本発明の装置では、状態レジスタのタスク状態が実行可能状態になった場合に、タスクは直ちに実行可能である。また、他の処理タスクから別の処理タスクに実行を切り替えるためのオーバヘッド(レジスタの退避や復旧など)が不要なため、実行が高速になるのである。
【0039】
【表2】
【0040】
図5~12を参照し、実施例1のリアルタイム処理装置の動作の仕組みについて説明する。
図5に示すように、モジュール実行機構3は、内部のタスク1状態レジスタのタスク状態が起動となっている場合、処理タスク1の回路モジュールに起動信号を出力する。処理タスク1では処理が実行される。処理タスク1が実行結果データを共有メモリ5のデータ領域に書き込む際には、処理タスク1からアドレスと共にデータがモジュール実行機構3に出力される。モジュール実行機構3では、処理タスク1からのメモリアクセスのアドレスが共有メモリ5に割り当てられているアドレスであれば、それをそのまま調停機構4に出力する。その際、タスク1状態レジスタの現在の優先度も併せて調停機構4に出力する。調停機構4では、入力したアドレスに従って、共有メモリ5にアクセスし、データを書き込む。優先度については同時に複数のアクセスがあった場合に、優先度の高いものにアクセスさせる際の判定に用いている。
【0041】
図6に示すように、モジュール実行機構3は、内部のタスク1状態レジスタのタスク状態が起動となっている場合、処理タスク1の回路モジュールに起動信号を出力する。処理タスク1では処理が実行される。処理タスク1が共有メモリ5のデータを読み込む際には、処理タスク1からアドレスのみがモジュール実行機構3に出力される。モジュール実行機構3では、処理タスク1からのメモリアクセスのアドレスが共有メモリ5に割り当てられているアドレスであれば、それをそのまま調停機構4に出力する。その際、タスク1状態レジスタの現在の優先度も併せて調停機構4に出力する。調停機構4では、入力したアドレスに従って、共有メモリにアクセスし、データを読み込み、読み込んだデータをモジュール実行機構3に出力する。モジュール実行機構3では調停機構4から入力したデータをそのまま処理タスク1に出力する。
【0042】
図7に示すように、モジュール実行機構3は、内部のタスク1状態レジスタのタスク状態が起動となっている場合、処理タスク1の回路モジュールに起動信号を出力する。処理タスク1では処理が実行される。処理タスク1がタスク1状態レジスタにアクセス(読み書き)する際には、処理タスク1からタスク1状態レジスタに割り当てられたアドレスがモジュール実行機構3に出力される。タスク1状態レジスタに書き込みする場合は、アドレスと共にデータも出力される。
【0043】
図8に示すように、モジュール実行機構3は、内部のタスク1状態レジスタのタスク状態が起動となっている場合、処理タスク1の回路モジュールに起動信号を出力する。処理タスク1では処理が実行される。処理タスク1がタスク2状態レジスタにアクセス(読み書き)するため、処理タスク1からタスク2状態レジスタに割り当てられたアドレスがモジュール実行機構3に出力される。タスク2状態レジスタに書き込みする場合は、アドレスと共にデータも出力される。図8に示すケースでは、タスク2状態レジスタのタスク状態が、処理タスク1によって書き換えられ、実行状態に遷移したとする。
モジュール実行機構3では、内部のタスク2状態レジスタのタスク状態が停止から起動へと更新されたことで、処理タスク2の回路モジュールに起動信号を出力する。処理タスク2では処理が実行される。処理タスク2が共有メモリ5にアクセスする際には、処理タスク2からアドレス、書き込みの場合にはデータを併せて、モジュール実行機構3に出力される。モジュール実行機構3では、それをそのまま調停機構4に出力する。その際、タスク2状態レジスタの現在の優先度も併せて調停機構4に出力する。調停機構4では、入力したアドレスに従って、共有メモリにアクセスする。
【0044】
図9に示すように、モジュール実行機構3は、内部のタスク1状態レジスタのタスク状態が起動となっている場合、処理タスク1の回路モジュールに起動信号を出力する。処理タスク1では処理が実行される。モジュール実行機構3は、内部のタスク2状態レジスタのタスク状態が起動となっている場合、処理タスク2の回路モジュールに起動信号を出力する。処理タスク2では処理が実行される。処理タスク1と2は、別の回路モジュールで構成されており、同時に実行される。
処理タスク1が共有メモリ5に書き込みする際には、処理タスク1からアドレスと、書き込みデータが、併せてモジュール実行機構3に出力される。モジュール実行機構3では、それをそのまま調停機構4に出力する。その際、タスク1状態レジスタの現在の優先度も併せて調停機構4に出力する。
一方、同時に実行されている処理タスク2が共有メモリ5に書き込みする際には、処理タスク2からアドレスと、書き込みデータが、併せてモジュール実行機構3に出力される。モジュール実行機構3では、それをそのまま調停機構4に出力する。その際、タスク2状態レジスタの現在の優先度も併せて調停機構4に出力する。
調停機構4では、優先度の高い方(この場合は処理タスク2)から入力したアドレスに従って、共有メモリにアクセスする。
【0045】
図10を参照し、図9に示す状況で、割込信号が入った場合について説明する。割込信号が入ると、割込ハンドラ状態レジスタのタスク状態が実行状態に変化する。モジュール実行機構3は、割込ハンドラ状態レジスタのタスク状態が起動となっている場合、割込ハンドラの回路モジュールに起動信号を出力する。割込ハンドラでは割込処理が実行される。割込ハンドラが割込処理の実行中に、共有メモリ5に書き込みする際には、割込ハンドラからアドレスと、書き込みデータがモジュール実行機構3に出力される。モジュール実行機構3では、それをそのまま調停機構4に出力する。その際、割込ハンドラ状態レジスタの優先度も併せて調停機構4に出力する。
図10の場合では、共有メモリ5にアクセス(データ書き込み)しようとしている回路モジュールは3つあり(処理タスク1、処理タスク2、割込ハンドラ)、それぞれデータ書き込みを要求している。調停機構4では、処理タスク1、処理タスク2、割込ハンドラの優先度を判定し、最も優先度の高い割込ハンドラのメモリアクセスのみ実行することになる。なお、割込ハンドラのメモリアクセスが終了すれば、メモリアクセスを待っている処理タスク1、処理タスク2の内、優先度が高い処理タスクのメモリアクセスを実行し、それが終了すれば優先度が低かった他方の処理タスクのメモリアクセスを実行する。
【0046】
図11を参照して、周期ハンドラの動作について説明する。周期ハンドラは、カウント処理やサイクリック通信処理などリアルタイム処理装置において、周期的に起動される処理を行うタスクである。モジュール実行機構3の内部の周期ハンドラ状態レジスタには、タイマカウント値が含まれ、タイマカウント値が所定の値になった場合には、モジュール実行機構3が周期ハンドラを実行制御する。具体的には、周期ハンドラが起動された場合、状態レジスタ内部のタイマカウント値がセットされ、サイクル毎にそのタイマカウント値が減じられ(或は、所定値が増減され)、タイマカウント値が0になると周期ハンドラの起動信号がモジュール実行機構3から出力され、実行が開始される。なお、タイマカウント値は、他の処理タスクから書き込みが可能である。
周期ハンドラが実行中に、共有メモリ5にアクセスする際には、周期ハンドラからアドレスと、書き込みの場合には書き込みデータがモジュール実行機構3に出力される。モジュール実行機構3では、それをそのまま調停機構4に出力する。その際、周期ハンドラ状態レジスタの優先度も併せて調停機構4に出力する。
【0047】
図12を参照して、アラームハンドラの動作に関し、処理タスク2から起動され、タイマカウント値がセットされ、一定時間後にアラームが停止する動作について説明する。アラームハンドラは、周期ハンドラと同様に、モジュール実行機構3の内部のアラームハンドラ状態レジスタには、タイマカウント値が含まれ、タイマカウント値が所定の値になった場合には、モジュール実行機構3がアラームハンドラを実行制御する。
図12に示す例では、処理タスク2が起動され、処理タスク2によって、モジュール実行機構3の内部のアラームハンドラ状態レジスタのタイマカウント値が所定の値に書き換えられ、モジュール実行機構3がアラームハンドラに起動信号を出力している。
アラームハンドラが実行中に、共有メモリ5に書き込みする際には、アラームハンドラからアドレスと、書き込みデータがモジュール実行機構3に出力される。モジュール実行機構3では、それをそのまま調停機構4に出力する。その際、アラームハンドラ状態レジスタの優先度も併せて調停機構4に出力する。
【実施例2】
【0048】
(複数のセクションに分けられた共有メモリ)
図13を参照して、共有メモリを複数のセクション分けして使用するリアルタイム処理装置の実施態様について説明する。
図13に示すように、共有メモリ5を複数のセクションのメモリ領域に分け、異なるセクションのメモリ領域は同時にアクセスできるようにしてもよい。この場合、異なる処理タスクが個々の処理に用いるデータは、それぞれ異なるセクションのメモリ領域に割り当てることが好ましい。図13に示す例では、共有メモリ5は5つのセクションのメモリ領域に分けられており、処理タスク1がセクション1のメモリ領域にアクセスし、処理タスク2がセクション2のメモリ領域にアクセスし、周期ハンドラがセクション3のメモリ領域にアクセスし、アラームハンドラがセクション4のメモリ領域にアクセスし、割込ハンドラがセクション5のメモリ領域にアクセスする構成になっている。このような構成では、異なる処理タスク/ハンドラが個々の処理に用いるデータは、それぞれ異なるセクションのメモリ領域に割り当てることができるため、調停機構4による共有メモリ5の調停によって、処理タスク/ハンドラが待たされることがなく、リアルタイム処理装置の性能を更に向上できる可能性がある。
【0049】
共有メモリ5が複数のセクションに分けられたとしても、処理タスクやハンドラの間で共有するデータなど、同一のセクションへ複数の処理タスクから同時にメモリアクセスが起こる場合がある。このように、同一のセクションへ複数の処理タスクから同時にメモリアクセスが起こった場合には、調停機構4によって、そのうち優先度の最も高い処理タスク又はハンドラのメモリアクセスのみが許可され、それ以外の処理タスク又はハンドラのメモリアクセスは待たされる(モジュール実行機構3が停止信号を出力し、優先度の最も高い処理タスク以外の処理タスクやハンドラは停止する。)。
同一のセクションへ複数の処理タスクから同時にメモリアクセスが起こらない限りは、複数のセクションに分けられる構成により、処理タスク又はハンドラが、優先順位の高い他の処理タスクやハンドラに妨げられることなく共有メモリにアクセスし、効率よく処理を実行することができるのである。
【実施例3】
【0050】
(共有メモリに状態レジスタを配置する構成について)
図14に、本発明のリアルタイム処理装置の他の実施形態のハードウェア概略構成図を示す。図14に示すように、状態レジスタをモジュール実行機構3の内部に配置するのではなく、共有メモリ5に配置する構成も可能である。但し、この場合、処理タスクやハンドラの状態を確認するために、都度、共有メモリ5にアクセスするといったオーバヘッドが生じることから、装置全体の性能が下がる方向になる。
【実施例4】
【0051】
上述の如く、本発明のリアルタイム処理装置では、実行可能状態にある全ての処理タスクを即座に実行状態に遷移して実行させることができるが、これ以外に、実行可能状態にある処理タスクのうち、優先順位が最高位の処理タスクだけを実行状態に遷移させて実行させ、それ以外のタスクを停止させるという排他制御を行うことも可能である。
従来のリアルタイム処理装置において、CPU上では1つの処理タスクしか実行されないことを前提にして排他制御のプログラムが書かれることがある。そのため、上述した本発明のリアルタイム処理装置の作製方法で、従来のプログラムそのものから高位合成などの手法で回路モジュールを作製しそのまま動かす場合には、優先順位が最高位の処理タスクのみを実行状態に遷移させて、それ以外のタスクを停止させるという実行制御を行う方が適しているからである。
具体的には、モジュール実行機構3が、実行可能状態にある処理タスク及びハンドラのうち、優先順位が最高位のものだけを実行状態に遷移させて実行させる。これにより、従来のリアルタイム処理装置で動作していたプログラムをそのまま活用した場合であっても、排他制御の実現を容易化できる。
【実施例5】
【0052】
全ての処理タスク/ハンドラの回路モジュールは、高位合成などを用いて自動で作製する以外に、回路モジュールは手動で設計し作製してもよく、高位合成で自動作製された回路モジュールと、手動で設計された回路モジュールが混在しても構わない。また、回路モジュールを、従来の装置と同じ動作のプログラム (例えば、高位合成システムに入力するプログラムそのもの) を実行するプロセッサで置き換えることも可能である。
すなわち、本発明のリアルタイム処理装置における処理タスク/ハンドラの回路モジュールは、高位合成により個々にハードウェア化される以外に、手設計により得た同様の動作をする回路や、同様の動作を実現するプログラムを実行するプロセッサで置き換えることも可能である。
【産業上の利用可能性】
【0053】
本発明は、自動運転車両、無人飛行機、ロボット制御などの制御装置として有用である。
【符号の説明】
【0054】
1 リアルタイム処理装置
2 回路モジュール
3 モジュール実行機構(マネージャー)
4 調停機構(アービタ)
5 共有メモリ
6 状態レジスタ
2a、2b 処理タスク
2c 周期ハンドラ
2d アラームハンドラ
2e 割込ハンドラ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14