JP2021174368A - リアルタイム演算処理装置 - Google Patents
リアルタイム演算処理装置 Download PDFInfo
- Publication number
- JP2021174368A JP2021174368A JP2020079206A JP2020079206A JP2021174368A JP 2021174368 A JP2021174368 A JP 2021174368A JP 2020079206 A JP2020079206 A JP 2020079206A JP 2020079206 A JP2020079206 A JP 2020079206A JP 2021174368 A JP2021174368 A JP 2021174368A
- Authority
- JP
- Japan
- Prior art keywords
- task
- state
- message
- priority
- tray
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 99
- 230000007704 transition Effects 0.000 claims description 57
- 238000012805 post-processing Methods 0.000 claims description 6
- 238000004904 shortening Methods 0.000 abstract 1
- 235000013923 monosodium glutamate Nutrition 0.000 description 31
- 238000012544 monitoring process Methods 0.000 description 29
- 238000000034 method Methods 0.000 description 18
- 102100039292 Cbp/p300-interacting transactivator 1 Human genes 0.000 description 17
- 101000888413 Homo sapiens Cbp/p300-interacting transactivator 1 Proteins 0.000 description 17
- 230000008569 process Effects 0.000 description 14
- 238000012546 transfer Methods 0.000 description 10
- 125000004122 cyclic group Chemical group 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 101100396152 Arabidopsis thaliana IAA19 gene Proteins 0.000 description 8
- 101100274486 Mus musculus Cited2 gene Proteins 0.000 description 8
- 101150096622 Smr2 gene Proteins 0.000 description 8
- 238000001514 detection method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 4
- 239000000725 suspension Substances 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
Description
図1から図7に第1実施形態の説明図を示す。まず図1を参照し、リアルタイム演算処理装置1の全体のハードウェア構成を説明する。リアルタイム演算処理装置1は、FPUOS機能ブロック3(以下、FPUOS3と略す:オペレーティングシステム処理部相当)、メッセージリスト4、演算命令テーブル5、WORKER6(演算処理部相当)、FPU第1引数汎用レジスタ群7、FPU第2引数汎用レジスタ群8、及びFPU9(浮動小数点演算処理部相当)を、同一のASIC内、すなわちICチップ内に構成している。なお、ハードウェア構成を監視するためのウォッチドッグタイマ2(図8参照)も設けられているが、後述の第2実施形態にて説明する。
転送方法は、メッセージトレイ23にタスクIDと優先度のパラメータが格納される度に、FPUOS3はトレイ格納メッセージ数をアップカウントする時分割転送を行っても良いし、また並列に1サイクルで転送しても良い。また、タスクメッセージMSGが、メッセージトレイ23からメッセージキュー24に転送されると、FPUOS3はトレイ格納メッセージ数をダウンカウントする。
<Send状態>
OSステートマシン22は、Send状態に遷移すると、外部からメッセージトレイ23に受領したタスクメッセージMSGをメッセージキュー24に転送する。このとき、メッセージキュー24が空状態であれば、タスクメッセージMSGは、メッセージキュー24の先頭から順に格納される。また、他のタスクメッセージMSGが、メッセージキュー24に既に存在する場合には、既に格納されているタスクIDの次の番号にタスクメッセージMSGが時系列的に順に書き込まれる。メッセージキュー24は、このような先入れ先出し型のキュー構造に構成されている。
OSステートマシン22は、メッセージトレイ23からメッセージキュー24への転送を終えると、Peek状態に遷移する。OSステートマシン22は、Peek状態において、起動有無を判定すると共に、メッセージキュー24の中から起動するべきタスクメッセージMSGを選択する。
OSステートマシン22は、起動するべきタスクメッセージMSGの選択を終えると、Disp状態に遷移し、Peek状態で選定されたタスクメッセージMSGをタスクトレイ25に転送し、WORKER6にタスクメッセージMSGを実行指令する。
FPUOS3が、WORKER6へのタスク実行指令S5を終えると、OSステートマシン22は、Post状態に遷移する。FPUOS3は、Post状態において、後処理としてメッセージキュー24を整理整頓する。具体的に、FPUOS3は、メッセージキュー24にNothing状態となっているタスクメッセージMSGがある場合にはメッセージキュー24を空にする。
通常、メッセージリスト4に格納される開始アドレス/終了アドレスは、2^nビット、例えば16ビット、32ビットなど多ビット表現される。アドレス番地が比較的大きな値になると、このアドレス番地を他の情報と紐付けて記憶保持するためのレジスタなどのハードウェア記憶部を必要以上に多く必要とし、特にメッセージトレイ23及びメッセージキュー24のハードウェア回路の規模が大きくなりやすい。
前述の構成では、タスクIDは1ビット又は2ビット程度の例を挙げたが、仮にタスクIDの種類が多くなると、タスクIDの情報量が多くなり、この場合、メッセージトレイ23やメッセージキュー24のハードウェア回路規模の増加に繋がる虞がある。
図1に例示したように、WORKER6は、プログラムカウンタブロック31、演算命令デコーダ32、及びセレクタ33を備える。FPUOS3とWORKER6とは、ハードウェア上、独立してASIC内に構成されている。
以下、プログラムカウンタブロック31の構成及び基本動作について、図4を参照しながら説明する。プログラムカウンタブロック31は、プログラムカウンタ41、一致比較部42、遷移検出部43、中断判定部44、開始アドレスセレクタ45、及び、終了アドレスセレクタ46を備える。
<比較例の説明>
従来より用いられるマイコンでは、アプリケーション未処理中に割込みが発生すると、割込みベクタにジャンプし、割込みハンドラ処理にジャンプし、割込みハンドラ処理の先頭で、汎用レジスタやステータスレジスタ、ジャンプ元のプログラムカウンタ等、中断元に戻るための情報を退避する割込み時にコンテキストスイッチが行われる。
これに対し、本実施形態では、FPUOS3とWORKER6とがハードウェア的に独立して構成されている。このため、実行タスクを中断させることなくアプリケーションタスクを処理でき、割込み時及び復帰時におけるコンテキストスイッチのオーバーヘッド時間分だけ短縮できる。
OSステートマシン22がDisp状態とされている時、図4に示すプログラムカウンタブロック31は、遷移検出部43によるロード指令S33の出力のタイミングにおいて通常開始アドレスNTT_STA_ADDRをプログラムカウンタ41にロードする。
他方、WORKER6が、タイミングt14以降にて低優先度の演算タスクを実行中に、タイミングt15にて高優先度の演算イベントを発生すると、FPUOS3は、当該高優先度の演算イベントに係るタスクを低優先度の演算イベントに係るタスクよりも優先してWORKER6に実行指令する。
FPUOS3がタスク中断フラグをセットするタイミングt17以降、WORKER6がタスク中断フラグを認識する。WORKER6は、演算命令テーブル5を参照して演算命令セット選択結果S11を確認する。そして、WORKER6は、タイミングt18において演算命令を一時中断可能な区切りのよいタイミングで中断アドレスを判断し、処理中断を完了させると共に、判断した中断アドレスを退避させる。このとき、WORKER6は、中断アドレスをタスクトレイ25の通常開始アドレスNTT_STA_ADDRの格納領域に退避させる。
WORKER6の側では、タスクトレイ状態TTRAY_STが「優先タスク実行状態ST5」に遷移すると、開始アドレスセレクタ45が優先開始アドレスPTT_STA_ADDRを選択すると共に、終了アドレスセレクタ46が優先終了アドレスPTT_STP_ADDRを選択する。
現在、一般化されているマルチタスクOSでは、複数のプロセスのタスクが衝突したときにコンテキストスイッチ等を発生することを考慮に入れると、処理オーバーヘッドを生じることから高速演算には不向きである。
本実施形態では、FPUOS3とWORKER6とがハードウェア的に分離して独立して構成されている。このため、高優先度の実行タスクを中断させることなくアプリケーションタスクを処理でき、割込み時及び復帰時におけるコンテキストスイッチのオーバーヘッド時間分だけ短縮できる。
また、WORKER6の側で特に最優先となる高優先度の演算タスクを実行しているときには、FPUOS3が低優先度の演算タスクをWORKER6に対して実行指令に移さないようにしているため、WORKER6は当該高優先度の演算タスクを中断することなく、当該演算タスクを最速処理できる。
また、本実施形態においては、FPUOS3とWORKER6との間の中断ハンドシェーク期間t17〜t18の間、低優先度の演算タスクに係るメッセージキューMQ1をRun状態に保持したまま、OSステートマシン22はDisp状態に留まっている。OSステートマシン22は、サイクリックに状態を遷移させずDisp状態に留まっており、メッセージキュー24をRun状態に保持しているため、FPUOS3は、WORKER6による演算タスクの実行に係る中断応答に対し、メッセージキュー24をWait状態に即時変更でき、即時対応できる。これにより、タスク中断オーバーヘッド時間の増加を抑制できる。
図8及び図9に第3実施形態の追加説明図を示している。従来のマイコンが、OS処理もアプリケーション処理も1つのハードウェアを用いて順次処理する場合、デッドロックしたか否かはOSが定期的に所定の状態に遷移するか否かを監視することで判定できる。この場合、ウォッチドッグタイマを1つ設ければデッドロックしたか否かを判定できる。
前述実施形態に限定されるものではなく、例えば、以下に示す変形又は拡張が可能である。
浮動小数点の演算は、単精度、倍精度等に限定されるものではない。また、浮動小数点演算処理を例示して演算処理する形態を説明したが、これに限定されるものではなく、例えば固定小数点演算処理に適用しても良い。
Claims (2)
- 外部から演算イベントが発行されると時間軸及び優先度に基づいて実行順序を判断し前記演算イベントに係るタスクを実行指令すると共に前記タスクの管理を行うことに特化したオペレーティングシステム処理部(3)と、
前記オペレーティングシステム処理部(3)の実行指令に従って演算処理を実行することに特化した演算処理部(6)とを、
同一のICチップ内にそれぞれハードウェア上で独立して構成され、
前記オペレーティングシステム処理部(3)は、OSステートマシン(22)、外部から前記タスクに係るタスクメッセージを受け付けるメッセージトレイ(23)、少なくとも前記タスクメッセージの初動(peek)状態,実行(Run)状態,又は非実行(Wait,nothing)状態を記憶するメッセージキュー(24)、前記演算処理部(6)との間で互いに認識可能に構成されるタスク中断フラグの格納領域,及び前記タスクメッセージの非実行状態又は実行状態を格納するタスクトレイ状態の格納領域を備えるタスクトレイ(25)を有し、
前記OSステートマシン(22)は、
外部から前記メッセージトレイに受領した前記タスクメッセージを前記メッセージキューに転送するSend message(以降、Sendと略す)状態と、
起動有無を含め、前記メッセージキューの中から起動する前記タスクメッセージを選択し当該タスクメッセージに係る前記メッセージキューを初動状態とするPeek message(以降、Peekと略す)状態と、
前記Peek状態にて選択された前記タスクメッセージを前記タスクトレイを経由して前記演算処理部(6)に実行指令し当該タスクメッセージに係る前記メッセージキューを実行状態とするDispatch message(以降、Dispと略す)状態と、
前記メッセージキューを整理整頓するPost processing(以降、Postと略す)状態と、の4つの状態を有して当該4つの状態をサイクリックに遷移し、
前記演算処理部が第1優先度のタスクメッセージを実行中に、前記オペレーティングシステム処理部が前記第1優先度よりも高い第2優先度の演算イベントに係る前記タスクメッセージを前記メッセージトレイに受付けた場合、
少なくとも前記オペレーティングシステム処理部が前記タスクトレイに前記第1優先度のタスクメッセージに係る前記タスク中断フラグをセットし前記演算処理部が当該セットされた前記タスク中断フラグを認識して前記第1優先度のタスクメッセージの実行を中断するまでの中断ハンドシェーク期間(t17〜t18)には、前記オペレーティングシステム処理部が前記第1優先度のタスクメッセージに係る前記メッセージキューを実行状態に保持したまま、前記OSステートマシンが前記Disp状態に留まるステート制御を実行し、
前記演算処理部により前記第1優先度のタスクメッセージの実行が中断されると、前記オペレーティングシステム処理部は前記第1優先度のタスクメッセージに係る前記メッセージキューを非実行状態とするリアルタイム演算処理装置。 - 外部から演算イベントが発行されると時間軸及び優先度に基づいて実行順序を判断し前記演算イベントに係るタスクを実行指令すると共に前記タスクの管理を行うことに特化したオペレーティングシステム処理部(3)と、
前記オペレーティングシステム処理部(3)の実行指令に従って演算処理を実行することに特化した演算処理部(6)とを、
同一のICチップ内にそれぞれハードウェア上で独立して構成され、
前記オペレーティングシステム処理部(3)は、OSステートマシン(22)、外部から前記タスクに係るタスクメッセージを受け付けるメッセージトレイ(23)、少なくとも前記タスクメッセージの初動(peek)状態、実行(Run)状態、又は非実行(Wait,nothing)状態を記憶するメッセージキュー(24)、前記演算処理部(6)との間で互いに認識可能に構成されるタスク中断フラグの格納領域、及び、前記タスクの非実行状態又は実行状態を格納するタスクトレイ状態の格納領域を備えるタスクトレイ(25)を有し、
前記OSステートマシン(22)は、
外部から前記メッセージトレイに受領した前記タスクメッセージを前記メッセージキューに転送するSend message(以降、Sendと略す)状態と、
起動有無を含め、前記メッセージキューの中から起動する前記タスクメッセージを選択し当該タスクメッセージに係る前記メッセージキューを初動状態とするPeek message(以降、Peekと略す)状態と、
前記Peek状態にて選択された前記タスクメッセージを前記タスクトレイのインターフェースを経由して前記演算処理部(6)に実行指令し当該タスクメッセージに係る前記メッセージキューを実行状態とするDispatch message(以降、Dispと略す)状態と、
前記メッセージキューを整理整頓するPost processing(以降、Postと略す)状態と、の4つの状態を有して当該4つの状態をサイクリックに遷移し、
前記演算処理部が第1優先度のタスクメッセージを実行中に、前記オペレーティングシステム処理部が前記第1優先度よりも高い第2優先度の演算イベントに係る前記タスクメッセージを前記メッセージトレイに受付けた場合、
少なくとも前記演算処理部が前記第2優先度のタスクメッセージを実行開始するタイミング以降、前記演算処理部が前記第2優先度のタスクメッセージを実行終了したことを示す状態(ST4)に前記タスクトレイ状態を遷移させるまでの期間(t20〜t21)には、前記オペレーティングシステム処理部は前記第2優先度のタスクメッセージに係る前記メッセージキューを実行状態に保持したまま前記OSステートマシンが前記Disp状態に留まるステート制御を実行し、
前記演算処理部が前記第2優先度のタスクメッセージを実行終了したことを示す状態に前記タスクトレイ状態を遷移させると、前記オペレーティングシステム処理部は前記第2優先度のタスクメッセージに係る前記メッセージキューを非実行状態とするリアルタイム演算処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020079206A JP7331768B2 (ja) | 2020-04-28 | 2020-04-28 | リアルタイム演算処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020079206A JP7331768B2 (ja) | 2020-04-28 | 2020-04-28 | リアルタイム演算処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021174368A true JP2021174368A (ja) | 2021-11-01 |
JP7331768B2 JP7331768B2 (ja) | 2023-08-23 |
Family
ID=78279859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020079206A Active JP7331768B2 (ja) | 2020-04-28 | 2020-04-28 | リアルタイム演算処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7331768B2 (ja) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07152587A (ja) * | 1993-09-21 | 1995-06-16 | Microsoft Corp | 協調型のタスク・グループを有する横取り型のマルチ・タスキング方法およびデータ処理システム |
JP2003298599A (ja) * | 2002-03-29 | 2003-10-17 | Denso Corp | 分散制御方法及び装置 |
JP2005235229A (ja) * | 2004-02-20 | 2005-09-02 | Sony Computer Entertainment Inc | マルチプロセッサシステムにおけるプロセッサタスクの移動方法および装置 |
JP2006216015A (ja) * | 2004-12-03 | 2006-08-17 | Microsoft Corp | 無線usbハードウェアのスケジューリング |
JP2012185541A (ja) * | 2011-03-03 | 2012-09-27 | Denso Corp | 車載装置、スケジューリングプログラム、及びスケジューリング方法 |
JP2015533270A (ja) * | 2012-09-21 | 2015-11-19 | アップル インコーポレイテッド | 高電力高性能受信機又は低電力基本受信機を選択するためのデータスケジューリングアクティビティの監視 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220124627A1 (en) | 2019-02-22 | 2022-04-21 | Ntt Docomo, Inc. | Terminal and wireless communication method |
-
2020
- 2020-04-28 JP JP2020079206A patent/JP7331768B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07152587A (ja) * | 1993-09-21 | 1995-06-16 | Microsoft Corp | 協調型のタスク・グループを有する横取り型のマルチ・タスキング方法およびデータ処理システム |
JP2003298599A (ja) * | 2002-03-29 | 2003-10-17 | Denso Corp | 分散制御方法及び装置 |
JP2005235229A (ja) * | 2004-02-20 | 2005-09-02 | Sony Computer Entertainment Inc | マルチプロセッサシステムにおけるプロセッサタスクの移動方法および装置 |
JP2006216015A (ja) * | 2004-12-03 | 2006-08-17 | Microsoft Corp | 無線usbハードウェアのスケジューリング |
JP2012185541A (ja) * | 2011-03-03 | 2012-09-27 | Denso Corp | 車載装置、スケジューリングプログラム、及びスケジューリング方法 |
JP2015533270A (ja) * | 2012-09-21 | 2015-11-19 | アップル インコーポレイテッド | 高電力高性能受信機又は低電力基本受信機を選択するためのデータスケジューリングアクティビティの監視 |
Also Published As
Publication number | Publication date |
---|---|
JP7331768B2 (ja) | 2023-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5166877B2 (ja) | ハードウェアマルチスレッドシステムおよび方法 | |
JP5323828B2 (ja) | 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路 | |
EP3754492B1 (en) | Interrupt system for risc-v architecture | |
CN101334721B (zh) | 线程活锁单元 | |
US8341641B2 (en) | Task processor | |
US6665699B1 (en) | Method and data processing system providing processor affinity dispatching | |
US7853743B2 (en) | Processor and interrupt controlling method | |
US20140089936A1 (en) | Multi-core device and multi-thread scheduling method thereof | |
CN101529383A (zh) | 任务处理装置 | |
US10248463B2 (en) | Apparatus and method for managing a plurality of threads in an operating system | |
EP2857968A1 (en) | Task processor | |
US20090271790A1 (en) | Computer architecture | |
US11704152B2 (en) | Processor zero overhead task scheduling | |
US10545890B2 (en) | Information processing device, information processing method, and program | |
JPH10505444A (ja) | 処理システム、プロセッサ、命令ストリーム格納用メモリ及びコンパイラ | |
EP2495656B1 (en) | Enhanced prioritising and unifying interrupt controller | |
JP7380406B2 (ja) | リアルタイム演算処理装置 | |
JP7338548B2 (ja) | リアルタイム演算処理装置 | |
JP7331768B2 (ja) | リアルタイム演算処理装置 | |
JP7322797B2 (ja) | リアルタイム演算処理装置 | |
KR101838474B1 (ko) | 다중프로세서 시스템에서의 예외 제어 | |
US20080282072A1 (en) | Executing Software Within Real-Time Hardware Constraints Using Functionally Programmable Branch Table | |
JP2010049700A (ja) | タスク処理装置 | |
JP2005078484A (ja) | 命令フェッチ装置および方法 | |
CN118363897A (zh) | 基于risc-v架构的中断延迟电路、控制方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220810 |
|
TRDD | Decision of grant or rejection written | ||
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230630 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20230711 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230724 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 7331768 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |