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

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

▶ ウーブン・プラネット・ホールディングス株式会社の特許一覧

特開2025-27966ソフトウェアに対するタイミング独立性の提供
<>
  • 特開-ソフトウェアに対するタイミング独立性の提供 図1
  • 特開-ソフトウェアに対するタイミング独立性の提供 図2
  • 特開-ソフトウェアに対するタイミング独立性の提供 図3
  • 特開-ソフトウェアに対するタイミング独立性の提供 図4
  • 特開-ソフトウェアに対するタイミング独立性の提供 図5
  • 特開-ソフトウェアに対するタイミング独立性の提供 図6
  • 特開-ソフトウェアに対するタイミング独立性の提供 図7
  • 特開-ソフトウェアに対するタイミング独立性の提供 図8a
  • 特開-ソフトウェアに対するタイミング独立性の提供 図8b
  • 特開-ソフトウェアに対するタイミング独立性の提供 図9
  • 特開-ソフトウェアに対するタイミング独立性の提供 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025027966
(43)【公開日】2025-02-28
(54)【発明の名称】ソフトウェアに対するタイミング独立性の提供
(51)【国際特許分類】
   G06F 11/36 20060101AFI20250220BHJP
【FI】
G06F11/36 196
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024092315
(22)【出願日】2024-06-06
(31)【優先権主張番号】18/450,361
(32)【優先日】2023-08-15
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】521042770
【氏名又は名称】ウーブン・バイ・トヨタ株式会社
(74)【代理人】
【識別番号】100099759
【弁理士】
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【弁理士】
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100092624
【弁理士】
【氏名又は名称】鶴田 準一
(74)【代理人】
【識別番号】100147555
【弁理士】
【氏名又は名称】伊藤 公一
(74)【代理人】
【識別番号】100123593
【弁理士】
【氏名又は名称】関根 宣夫
(74)【代理人】
【識別番号】100133835
【弁理士】
【氏名又は名称】河野 努
(74)【代理人】
【識別番号】100120499
【弁理士】
【氏名又は名称】平山 淳
(72)【発明者】
【氏名】ジャーン-フランスワー バスティエン
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042GB07
5B042GB08
5B042HH07
5B042HH19
(57)【要約】
【課題】方法の提供。
【解決手段】タイミング独立性がソフトウェアに提供される。非決定性、ランダム化、及び同種のものなどの変動がソフトウェアに追加される。ソフトウェアに関連付けられた不特定のモダリティの分布が識別される。不特定のモダリティは、クリティカルパス内のモダリティ、ソフトウェアの設計タイミング制約の外側にあるモダリティ、タイミング範囲の端にあるモダリティ、及び同種のものを含む。ソフトウェアの少なくとも一部は、実装されたハードウェアの過剰設計及び実装されたハードウェアへのソフトウェアの過適合を防ぐために修正を実装すること、ソフトウェアのタスクの実行を最適化すること、クリティカルパス内にない非依存タスクの実行の順序を再配置すること、及び同種のことなどで不特定のモダリティを除去するために修正される。
【選択図】図9
【特許請求の範囲】
【請求項1】
タイミング独立性をソフトウェアに提供する方法であって、
変動をソフトウェアに追加することと、
前記ソフトウェアに関連付けられた不特定のモダリティの分布を識別することと、
前記不特定のモダリティを除去するために前記ソフトウェアの少なくとも一部を修正することと、
を含む、方法。
【請求項2】
前記ソフトウェアに関連付けられた前記不特定のモダリティの前記分布の前記識別は、前記ソフトウェアの設計タイミング制約の外側にあるモダリティの前記分布を識別することを含む、請求項1に記載の方法。
【請求項3】
前記ソフトウェアへの前記変動の前記追加は、
前記ソフトウェアによるタスクの実行のタイミングを変更させるように非決定性を前記ソフトウェアに追加すること、又は
ランダム化を前記ソフトウェアに追加すること、のうちの少なくとも1つを含み、
前記ソフトウェアへの前記ランダム化の前記追加は、メモリ割り当てのランダム化の追加、メモリのオーバーサイズの割り当て、又は前記ソフトウェアの命令を様々な同等の命令で置き換えること、のうちの少なくとも1つを含む、請求項1又は2に記載の方法。
【請求項4】
前記不特定のモダリティの前記分布の前記識別は、前記不特定のモダリティを定量化することと、前記ソフトウェアのタスクの実行に関するタイミング範囲を決定することと、前記タイミング範囲の端における前記不特定のモダリティを識別することと、を含む、請求項1又は2に記載の方法。
【請求項5】
前記不特定のモダリティの前記分布の前記識別は、クリティカルパス内の事象を識別することと、前記クリティカルパス内にない非依存タスクの実行の順序を再配置することと、を含む、請求項1又は2に記載の方法。
【請求項6】
前記不特定のモダリティを除去するための前記ソフトウェアの前記少なくとも一部の前記修正は、実装されたハードウェアの過剰設計及び前記実装されたハードウェアへのソフトウェアの過適合を防ぐために前記ソフトウェアの前記少なくとも一部を修正することを含む、請求項1又は2に記載の方法。
【請求項7】
前記不特定のモダリティを除去するための前記ソフトウェアの前記少なくとも一部の前記修正は、前記ソフトウェアのタスクの実行を最適化することを含む、請求項1又は2に記載の方法。
【請求項8】
タイミング独立性をソフトウェアに提供する装置であって、
コンピュータ可読命令を記憶するメモリと、
前記メモリに接続されたプロセッサと、
を備え、前記プロセッサは、前記コンピュータ可読命令を実行して、
変動をソフトウェアに追加することと、
前記ソフトウェアに関連付けられた不特定のモダリティの分布を識別することと、
前記不特定のモダリティを除去するために前記ソフトウェアの少なくとも一部を修正することと、
の動作を行うように構成されている、装置。
【請求項9】
前記プロセッサは更に、前記ソフトウェアの設計タイミング制約の外側にあるモダリティの前記分布を識別することによって、前記ソフトウェアに関連付けられた前記不特定のモダリティの前記分布を識別するように構成されている、請求項8に記載の装置。
【請求項10】
前記プロセッサは更に、
前記ソフトウェアによるタスクの実行のタイミングを変更させるように非決定性を前記ソフトウェアに追加すること、又は
ランダム化を前記ソフトウェアに追加すること、のうちの少なくとも1つを行うことによって前記変動を前記ソフトウェアに追加するように構成されており、
前記ソフトウェアへの前記ランダム化の前記追加は、メモリ割り当てのランダム化の追加、メモリのオーバーサイズの割り当て、又は前記ソフトウェアの命令を様々な同等の命令で置き換えることのうちの少なくとも1つを含む、請求項8又は9に記載の装置。
【請求項11】
前記プロセッサは更に、前記不特定のモダリティを定量化することと、前記ソフトウェアのタスクの実行に関するタイミング範囲を決定することと、前記タイミング範囲の端における前記不特定のモダリティを識別することと、によって前記不特定のモダリティの前記分布を識別するように構成されている、請求項8又は9に記載の装置。
【請求項12】
前記プロセッサは更に、クリティカルパス内の事象を識別することと、前記クリティカルパス内にない非依存タスクの実行の順序を再配置することと、によって前記不特定のモダリティの前記分布を識別するように構成されている、請求項8又は9に記載の装置。
【請求項13】
前記プロセッサは更に、実装されたハードウェアの過剰設計及び前記実装されたハードウェアへのソフトウェアの過適合を防ぐために前記ソフトウェアの前記少なくとも一部を修正することによって、前記不特定のモダリティを除去するために前記ソフトウェアの前記少なくとも一部を修正するように構成されている、請求項8又は9に記載の装置。
【請求項14】
前記プロセッサは更に、前記ソフトウェアのタスクの実行を最適化することによって、前記不特定のモダリティを除去するために前記ソフトウェアの前記少なくとも一部を修正するように構成されている、請求項8又は9に記載の装置。
【請求項15】
コンピュータ可読命令が記憶された非一時的コンピュータ可読媒体であって、前記コンピュータ可読命令は、プロセッサによって実行されると、
変動をソフトウェアに追加することと、
前記ソフトウェアに関連付けられた不特定のモダリティの分布を識別することと、
前記不特定のモダリティを除去するために前記ソフトウェアの少なくとも一部を修正することと、
を含む動作を前記プロセッサに行わせる、非一時的コンピュータ可読媒体。
【請求項16】
前記ソフトウェアに関連付けられた前記不特定のモダリティの前記分布の前記識別は、前記ソフトウェアの設計タイミング制約の外側にあるモダリティの前記分布を識別することを含む、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項17】
前記ソフトウェアへの前記変動の前記追加は、
前記ソフトウェアによるタスクの実行のタイミングを変更させるように非決定性を前記ソフトウェアに追加すること、又は
ランダム化を前記ソフトウェアに追加することのうちの少なくとも1つを含み、前記ソフトウェアへの前記ランダム化の前記追加は、メモリ割り当てのランダム化の追加、メモリのオーバーサイズの割り当て、又は前記ソフトウェアの命令を様々な同等の命令で置き換えることのうちの少なくとも1つを含む、請求項15又は16に記載の非一時的コンピュータ可読媒体。
【請求項18】
前記不特定のモダリティの前記分布の前記識別は、
前記不特定のモダリティを定量化すること、前記ソフトウェアのタスクの実行に関するタイミング範囲を決定すること、及び前記タイミング範囲の端における前記不特定のモダリティを識別すること、又は
クリティカルパス内の事象を識別すること、及び前記クリティカルパス内にない非依存タスクの実行の順序を再配置すること、
のうちの少なくとも1つを含む、請求項15又は16に記載の非一時的コンピュータ可読媒体。
【請求項19】
前記不特定のモダリティを除去するための前記ソフトウェアの前記少なくとも一部の前記修正は、実装されたハードウェアの過剰設計及び前記実装されたハードウェアへのソフトウェアの過適合を防ぐために前記ソフトウェアの前記少なくとも一部を修正することを含む、請求項15又は16に記載の非一時的コンピュータ可読媒体。
【請求項20】
前記不特定のモダリティを除去するための前記ソフトウェアの前記少なくとも一部の前記修正は、前記ソフトウェアのタスクの実行を最適化することを含む、請求項15又は16に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、タイミング独立性をソフトウェアに提供すること及びそれを使用する方法に関する。
【背景技術】
【0002】
ソフトウェアは歴史的に、実行時間の観点で変動源を最小化する状況で実行されている。変動源を最小化することにより、システム全体の信頼性を得るのがより容易になる。例えば、実行時間を制限することは、一般的な要件である(例えば、ブレーキシステムは、特定のミリ秒数以内にブレーキをかける必要がある)。また、実行時間の変動は、複数のシステムがそれらの相互作用を複雑な方法でインターリーブし得ることを意味し、観測可能である組み合わせの実行を完全に予測するのを困難にして、正確性を分析するためにより大きい状態空間を作成し、より多くの考えられる失敗経路を検証させる。しかしながら、この手法は、ソフトウェアの変更が困難であり(最後に追い打ちをかけ得る)、(タイミングが大部分で特定のハードウェアによって規定されるため)ソフトウェアがハードウェアに結び付けられることを意味する。
【0003】
車両は、一部の基準を満たすために、より多くの非リアルタイムのハードウェア及びオペレーティングシステムを使用し始めている。したがって、タイミングに対する従来の手法は、ソフトウェアの再使用及び展開を妨げ、より一層現実的なものではない。
【0004】
ソフトウェアの品質目標を満足させるのと同様に、ソフトウェアをハードウェアから分離させることが依然好ましい。したがって、ソフトウェアのレベルの変更におけるタイミングの影響を理解することが依然有用である。この要求は、他の基準、例えば、ポータビリティ、再使用、ハードウェア独立性、ソフトウェアの修正可能性などとバランスを取る必要がある。
【発明の概要】
【0005】
少なくとも実施形態では、タイミング独立性をソフトウェアに提供する方法は、変動をソフトウェアに追加することと、ソフトウェアに関連付けられた不特定のモダリティの分布を識別することと、不特定のモダリティを除去するためにソフトウェアの少なくとも一部を修正することと、を含む。
【0006】
少なくとも1つの実施形態では、装置は、コンピュータ可読命令を記憶するメモリと、メモリに接続されたプロセッサと、を含み、プロセッサは、コンピュータ可読命令を実行して、変動をソフトウェアに追加し、ソフトウェアに関連付けられた不特定のモダリティの分布を識別し、不特定のモダリティを除去するためにソフトウェアの少なくとも一部を修正するように構成されている。
【0007】
少なくとも1つの実施形態では、非一時的コンピュータ可読媒体にはコンピュータ可読命令が記憶され、コンピュータ可読命令は、プロセッサによって実行されると、変動をソフトウェアに追加し、ソフトウェアに関連付けられた不特定のモダリティの分布を識別し、不特定のモダリティを除去するためにソフトウェアの少なくとも一部を修正する動作をプロセッサに行わせる。
【図面の簡単な説明】
【0008】
本開示の態様は、以下の詳細な説明を添付の図を用いて読むことで最もよく理解される。業界における慣行に従って、様々な特徴は縮尺通りに描かれているわけではないことに留意されたい。実際、説明を明確にするために、様々な特徴の寸法は増減可能である。
【0009】
図1図1は、セーフティクリティカルアプリケーション及び汎用アプリケーションを実装したシステムを示す。
図2図2は、少なくとも1つの実施形態に係る動作を行うタイミングを示す。
図3図3は、少なくとも1つの実施形態に係る実行部によって完了される複数のタスクを示す。
図4図4は、少なくとも1つの実施形態に係る2つのモダリティを示す。
図5図5は、少なくとも1つの実施形態に係るメモリアライメントランダム化を示す。
図6図6は、少なくとも1つの実施形態に係る依存性を有する事象のクリティカルパスを示す。
図7図7は、少なくとも1つの実施形態に係る3つのモダリティを示す。
図8a図8aは、少なくとも1つの実施形態に係るAPIの呼び出し及び応答にタイミングの変動を導入する効果を示す。
図8b図8bは、少なくとも1つの実施形態に係るAPIの呼び出し及び応答にタイミングの変動を導入する効果を示す。
図9図9は、少なくとも1つの実施形態に係るタイミング独立性をソフトウェアに提供する方法のフローチャートである。
図10図10は、少なくとも1つの実施形態に係るプロセッサベースのシステムのハイレベル機能ブロック図である。
【発明を実施するための形態】
【0010】
本明細書に記載される実施形態は、提供される主題の様々な特徴を実装する例を記載する。本開示を簡略化するために、構成要素、値、動作、材料、配置、又は同種のものに関する例が以下に記載される。もちろん、これらは、例であって限定することを意図したものではない。他の構成要素、値、動作、材料、配置、又は同種のものが想定される。例えば、以下の説明で第2の特徴の上方又は上に第1の特徴を形成することは、第1及び第2の特徴が直接的に接触して形成されている実施形態を含み、第1及び第2の特徴が直接的な接触を行えないように、追加の特徴が第1及び第2の特徴間に形成されている実施形態を含む。加えて、本開示は、様々な例で参照番号及び/又は参照文字を繰り返す。この繰り返しは、簡略化及び明確化を目的としたものであって、説明される様々な実施形態及び/又は構成間の関係を規定するものではない。
【0011】
更に、「下方」、「下」、「~よりも下」、「上方」、「~よりも上」、及び同種のものなどの空間的に相対的な用語は、図に示されるような別の要素又は特徴に対するある要素又は特徴の関係を記載するように説明を容易にするために本明細書で使用される。空間的に相対的な用語は、図で描写される向きに加えて、使用又は動作時における装置の様々な向きを包含することを意図したものである。装置は、違う向き(90度回転又は他の向き)であり、本明細書で使用される空間的に相対的な記述は、それに従って同様に解釈される。
【0012】
少なくとも1つの実施形態では、タイミング独立性をソフトウェアに提供する方法は、変動をソフトウェアに追加することと、ソフトウェアに関連付けられた不特定のモダリティの分布を識別することと、不特定のモダリティを除去するためにソフトウェアの少なくとも一部を修正することと、を含む。
【0013】
本明細書に記載される実施形態は、1つ以上の利点を提供する方法を提供する。例えば、タイミング依存性を満足した目標を依然満たしつつ、ある程度までソフトウェアをタイミング独立性のあるものにすることができる方法と共に状況が列挙される。
【0014】
システムは多くの場合、複数のモーダルソフトウェアを実行する。ソフトウェアは複数回実行され、時間対事象の頻度に関するプロットが取り込まれる。例えば、100ミリ秒は、何らかの動作を行うように意図されるソフトウェアの設計において提供される。動作は、100ミリ秒ごとに繰り返される。したがって、ソフトウェアは効果的に、同じ動作を連続的に行っている。
【0015】
ソフトウェアに伴う1つの問題は脆弱性であって、ここで、ソフトウェアの任意の小さい変更は、クリティカルパスを超えた状態にすることによりタイミングに影響を与える。クリティカルパス及び非クリティカルパスは、例えば、Place&Routeなどの様々なツールを通じて自動的に識別可能である。これらのパスを識別することにより、クリティカルパスの周囲で自動的にスケジュールすることができるか、又は少なくとも、(非クリティカルパスがクリティカルになるまで)非クリティカルパスソフトウェアのタイミング要件を緩和することができる。この態様は、タイミングクリティカル性の周囲のルールを緩和し、ここで、実際のタイミングクリティカルソフトウェアのみが考慮され、自動化は目標をサポートする。
【0016】
別の問題は、組み合わせの複雑性であって、これは、1つの考えられる実行を常に曝すだけである試行に関してタイミングによる変更を妨げる。しかし、最新のスーパースカラハードウェアは本質的に、最新のオペレーティングシステムによって構成される推測を通じて実行され、これは、単一のタイミングを有することが通常役に立たないことを意味する。したがって、タイミングは変わるということが受け入れられ、この可能性は徹底的にテストされる。これを行うための1つの方法は、テストの際、又は生産実行の際であっても、単に、タイミングのより多くの変動を意図的に追加することである。
【0017】
図1は、優先アプリケーション及び汎用アプリケーションを実装したシステム100を示す。
【0018】
図1で、異なる区分110、120は、様々なアプリケーションドメインを分離、すなわち、混合クリティカルアプリケーションをマージして、可能な限り効率的にハードウェアリソースを利用するように構成されている。リアルタイムオペレーティングシステム(RTOS)112は、優先アプリケーション114を呼び出すために使用可能である。汎用アプリケーション124は、オペレーティングシステム122、例えば、RTOS、又はWindows(登録商標)オペレーティングシステム若しくはLinux(登録商標)オペレーティングシステムなどのより一般的なオペレーティングシステムを使用して行うことができる。別々のプロセッサ又はマルチコアプロセッサ130は、アプリケーション114、124を実行するために使用可能である。したがって、各区分110、120は、そのOSと、OSの上に配置された、例えば認識のアプリケーションドメインと、を有する。タスク、OSスケジューラに対する様々なタイミング制約、及びマッピング制約(すなわち、タスク及びスケジューラを特定のコアに割り当てること)は、定義され、可視化され、確認され、そして検証される。
【0019】
アプリケーション層は概して、設定された機能を実行するか又は入力のセットに応答する複雑なソフトウェア層である。アプリケーションプログラム114、124は概して、RTOSなどのオペレーティングシステム112、122を通じて呼び出され、それ自体は、レイテンシを保証して決定性の動作を提供するように設計される。RTOS112及び優先アプリケーション114は通常、優先設計規格に対して構築されたハードウェアドライバライブラリにインターフェース接続されている。ドライバ層は、アプリケーションプログラム呼び出しの機能を限定するアプリケーションプログラミングインターフェース(API)の構造を通じてレイテンシ及び決定性を保証する。優先制約を使用したAPIの設計は、より高いレベルのソフトウェアに対する土台を設定し、優先動作を保証するように設定されたシステム設計制約として機能する。
【0020】
図2は、少なくとも1つの実施形態に係る動作200を行うタイミングを示す。
【0021】
図2で、事象210は、少なくとも1つの実施形態に従って時間220に対してプロットされる。動作が行われると、事象230が取り込まれる。一見、事象は、ランダムな時間に分布しているように見える。しかしながら、ソフトウェアのサンプリングに応じて、事象230は、ほぼ所与の時間の周囲に群がっている。図2で、事象230は、例えば、1ミリ秒(ms)の所定の時間境界240内に分布している。図2における事象230に対する時間境界240は、5ms242から6ms244までの1msウィンドウ240において群がっている。しかしながら、事象、例えば、10msにおける事象250は、クラスタの外側で発生可能である。
【0022】
動作時、プロセッサは、例えば、1ミリ秒の時間境界の間コンテキストスイッチを採用する。事象が開始し、オペレーティングシステムは、コンテキストスイッチに何かを実行させ、次いで、プロセスは、動作の実行に戻る。したがって、コンテキストスイッチは、比較的大量の時間を費やすことが可能であり、例えば、総時間は、10ミリ秒要することが可能である。優先システムでは、遅延及び異常値、例えば、10msにおける事象250を除去する試行が行われる。例えば、優先ソフトウェアは、自動運転車両、ロボット、医療機器、又は同種のものに関与可能であり、事象が1ミリ秒を要する予定か10ミリ秒を要する予定かを予測できないことにより、問題が生じる。優先ソフトウェアに関して、この予測不可能な遅延は、財産又は人に深刻な損害又は傷害をもたらし得、この例は、車が自動運転モードからマニュアルモードに切り替わって運転者が準備できていないこと、ロボットが誰かを殺すか又は傷つけるように機能することなどである。
【0023】
優先システムは、遅延によってもたらされる信頼性の問題を防ぐようにアップグレードされる。対照的に、携帯電話又はラップトップコンピュータに関して、当該状況はいつも生じる。例えば、ユーザがブラウザでスクロールしたことに応じて、スクロールプロセスは、継続前にある期間ハングすることもある。ユーザは、この現象を観測し得るが、継続してスクロールする。しかしながら、優先アプリケーションに関して、損害又は傷害をもたらすなどの上述の問題が回避されるように、当該タイプのグリッチは生じ得ない。
【0024】
多くの場合、ソフトウェアは、可能な限り迅速に動作するように設計されている。しかしながら、優先ソフトウェアに関して、目標は信頼性であり、例えば、タスクは、安全性又は動作に対する悪影響を防ぐように、一貫して、所与の時間フレーム240、例えば1ミリ秒以内に完了すべきである。更に、実際には、連続的且つ同時に実行される様々なタスクが存在する。
【0025】
図3は、少なくとも1つの実施形態に係る実行部300によって完了される複数のタスクを示す。
【0026】
図3で、実行部は、タスク又は動作をスケジュールする。タスクの完了は多くの場合、事象と称される。実行部310、例えば、CPU又はマルチコアプロセッサにおける複数のコアは、タスク320を連続的にスケジュールする。タスク間に依存性322、324が存在することもあり、あるタスク326は多くの場合、次のタスク328によって使用されるデータを生成する。これにより、依存性の順序が生成され、ここで、タスクの実行に関する時間境界は、所定の時間量330であり、例えば、タスクは、100ミリ秒(ms)以内に実行されるべきである。タスクの1ミリ秒の境界340は、タスクが開始及び終了し得る期間を定義した開始エラー境界342及び終了エラー境界344を含むことができ、タスクの全ての完全な実行は、100ミリ秒の時間境界330内に完了すべきである。
【0027】
したがって、多くの場合、クッション又はゆとりがタスクの実行に構築され、100ミリ秒330全体だけでなく、個々のタスク320においても時間境界が存在し、タスク間に依存性322、324が存在する。例えば、第1のタスク326は、第2のタスク328が開始し得る前に実行されるべきである。したがって、実行部310は、タスクが100ミリ秒の時間フレーム330以内に実行されるように、例えば、リアルタイムオペレーティングシステム(RTOS)においてタスク320をスケジュールする。1ミリ秒340の変動は、開始時間と終了時間との間で表される。開始時間及び終了時間は、モダリティの時間量、例えば、1ms340を一括する。図2に関して示されるような1ミリ秒の時間境界240、340は、例えば、5ミリ秒242と6ミリ秒244との間で生じる。
【0028】
図4は、少なくとも1つの実施形態に係る2つのモダリティ400を示す。
【0029】
図4で、第1のグループの事象410は、5ms414から6ms416までの1msの時間境界1(モード1 412)において群がっている。第2のグループの事象420は、10ms424から11ms426までの1msの時間境界2(モード2 422)において群がっている。しかしながら、当業者であれば、他のモダリティが発生可能であることを理解する。したがって、現実世界では、常に単一のモダリティが存在するわけではなく、多くの場合、マルチモダリティが存在する。したがって、モード1 412は、5ミリ秒414から6ミリ秒416までの1ミリ秒以内に生じ、モード2 422は、10ミリ秒424から11ミリ秒426までのミリ秒で生じる。しかしながら、どのモードが生じるかに関して不確実性が存在する。2つのモード412、422は、ソフトウェアが連続的に実行されているときに発生可能であるか、又は必ずしも実行中のソフトウェア内というわけではなくソフトウェア内のどこかに機能が追加される場合に生じる。様々なモダリティは、ソフトウェアが一度コンパイルされて車両に送られたことに応じて発生可能であり、ここで、1つのモードのみが改良されている。しかしながら、ソフトウェアの他の部分をコンパイルして再実行したことに応じて、モード2 422を認識できる。
【0030】
したがって、以下に記載されるように、タイミング問題を識別するためにバリアント若しくは非決定性がソフトウェアに追加されるか、又は知られていなかったモダリティの発生を強制する。モダリティの強制は、開発テスト中に問題を識別する可能性を増加させるため、生産中又はソフトウェアが展開された後にモダリティが生じる統計的可能性が低くても、安全性が増加する。非決定性を意図的に挿入することによるランダム性の動的な適用は、当該問題を識別するようにソフトウェアの中断を試行するために使用される。
【0031】
図5は、少なくとも1つの実施形態に係るメモリアライメントランダム化500を示す。
【0032】
図5で、ソフトウェアのメモリレイアウトは、ある実行から別の実行へソフトウェアの実行の順序が変更されてモダリティが現れるようにランダム化される。しかしながら、ソフトウェアにおけるメモリ割り当ては、線形的に割り当てられる多数のメモリ又はスクラッチバッファの事前割り当てを伴う。
【0033】
図5は、特定の動作に応じて、4つの入力、例えば、入力1 512、入力2 514、入力3 516、入力4 518が割り当てられたメモリ510を示す。第5の入力がアクセスされたことに応じてソフトウェアはクラッシュする。ソフトウェアにより、入力1 512、次いで入力2 514、次いで入力3 516、次いで入力4 518が連続して割り当てられる。これにより、割り当ては、充分に予測可能となる。任意の種類のキャッシュ効果又はどのようにキャッシュが機能しているか若しくは相互作用するかは、当該状況において予測可能な方法で現れる。
【0034】
意図的な非決定性は、ハードウェアにおいてタイミングを変更させるソフトウェアの一部において追加可能である。一例は、アドレス空間配置のランダム化であり、「偽共有」又は「真共有」が存在する場合に、ハードウェアにおけるキャッシュ(データキャッシュ、TLB、分岐予測など)が変わる傾向にあるため、このセキュリティ対策は、ソフトウェアタイミングにおいてモダリティを曝す傾向にあり、次いで、「偽共有」又は「真共有」は、どのようにASLRが(仮想又は物理)アドレスを整列させることを選択したかに依存する。データの真共有は、2つのコアが同じワードにアクセス及び修正を試行した結果、他のコアにおいてキャッシュラインの連続的な無効となる場合に生じる。「データの偽共有」は、2つのコアが同じキャッシュライン内の2つの異なるワードにアクセス及び修正を試行した結果、他のコアにおいてキャッシュラインの連続的な無効となる場合に生じる。
【0035】
したがって、少なくとも1つの実施形態によれば、メモリ520の割り当て順序は、テスト及び生産の両方に関してランダム化され、その結果、メモリ510に示されるように順次、入力1 512、入力2 514、入力3 516、入力4 518を割り当てる代わりに、乱数生成器又は擬似乱数生成器530が使用され、変動が順序に提供され、ここで、割り当てが生じてモダリティの遵守を強制する。例えば、ランダム化により、メモリ520は、入力3 522、入力1 524、入力4 526、次いで入力2 528である順序で割り当てられる。
【0036】
例えば、実行ファイルがメモリの内部に配置されている場合、様々なモードは、ページアライメントに対する変更に起因する。したがって、どのコードも変更されていないが、コードがメモリ内部に配置されている場合、モード変更をもたらす。モード変更の理由は、キャッシュがハードウェア内で機能する方法が原因で変更が生じるということである。モード変更は、再コンパイルによるものだけでなく、変更は、異なるハードウェア上の実行によることもある。
【0037】
したがって、ASLRの使用及びより多くのASLRの使用は、偽/真共有を強制することによってモーダル挙動を曝す。ASLRは、モーダル挙動のエリアを強制的に曝すようにランダム化され得るか又は非決定性にされ得る他の場所に対して一般化され得る。別の例は、連想コンテナに対してハッシュアルゴリズム又は定数を割り当てる場合である。
【0038】
ソフトウェアはまた、2つの高度な縮小命令セットコンピュータ(RISC)マシン(ARM)CPUにおいて実行可能であって、ここで、ARM CPUは、異なるバージョンである。同じ時間境界が使用可能であるが、異なるハードウェア上で、ソフトウェアは、様々なモードで実行される。
【0039】
車両に関して、製造者は、単一のモードを有するように努め、複数のモードを有することに応じて、製造者は予算を超える。例えば、製造者は、2つのモードを構築して、2つのモードについて最悪の場合の挙動を計算する。しかしながら、タイミングは過大評価され、これは予算過大をもたらす。ソフトウェア構成要素は、積み重なった複数の最悪の場合を有し、これは、より一層更なる過大評価につながる。
【0040】
経時的にソフトウェアを更新できるようにするために、生じるモードの知見及びそのソフトウェアの実行方法が使用される。様々なバージョンのハードウェアにおいてそのソフトウェアを使用するために、様々なモードの知見が有用であるが、複数のモードが生じる時間は変化し得る。
【0041】
通常、自動運転ソフトウェア、ロボット、医療機器、原子力プラント、飛行機、及び同種のものなどの優先ソフトウェアに関して、ソフトウェアが開発され、次いで、ソフトウェアは、ソフトウェアが意図される目的、及びソフトウェアが経験するであろう状況に対して具体的にテストされる。安全性に対する現在の業界の最も優れた手法は、ソフトウェアを書いて、次いで、クリティカルソフトウェアにおける任意のことが変更されるのを防ぐことである。
【0042】
対照的に、少なくとも1つの実施形態によれば、例えば、図5を参照して記載されるメモリ割り当てのランダム化に関して記載されるように、変更が開発プロセス全体に構築される。ある場所から別の場所へモードシフトを生じさせる。任意の僅かな変更は、最後に追い打ちとなり得、ここで、ソフトウェアは、タイミング制約を満たさない、例えば、実行タイミングは、100ミリ秒の境界の範囲内に適合しない。少なくとも1つの実施形態に係る目標は、ソフトウェアの品質を増加させ、コストを低減し、ソフトウェアをより高速で送るのを可能にすることであって、これは、部分的にソフトウェアを経時的に再使用することと、ソフトウェアを経時的に更新することと、を含む。ソフトウェアを経時的に更新するために、ソフトウェアの態様は、ソフトウェアが変更されるのを防ぐように基盤に固定され得ない。変更が行われるであろうということを受け入れることによって、マルチモーダルソフトウェアが存在するということも受け入れられる必要がある。このため、マルチモダリティ問題は、早期に解決されるべきものであって、そうでない場合、ソフトウェアに対する任意の変更は大きな邪魔者であり、これは、当該変更が、タイミング変更をもたらすか又はテストされていない予測不可能な効果をもたらすためである。したがって、マルチモダリティは、開発プロセスにおいて早期に行使される。
【0043】
したがって、ソフトウェアが開発されるとき、バリアントの発生が強制されるので、ソフトウェアは、弾力的な方法で構築されるため、知られていなかった帯域の発生が強制され、これにより、以前に知られていない問題に対処するように修正が開発される。当該変動は多くの場合、小さい変更からの形態をもたらす。バリアントがソフトウェア内に強制されるため、ソフトウェアは、ソフトウェアが通常遭遇するものではない状況に遭遇する。
【0044】
ソフトウェア内への変動の構築は、顧客需要により製造プロセスを整列させることを含む、TAKT時間と称される概念と同様である。TAKT時間は、利用可能な生産時間が顧客需要で割られる時間の計算を表す指標である。例えば、工場が1日に480分動作して、顧客が1日に240個の製品を要求する場合、TAKT時間は2分である。同様に、顧客が1月に2つの新しい製品を望んでいる場合、TAKT時間は2週間である。目的は、需要に対して生産を正確に一致させることである。Chaos Monkeyと呼ばれる概念も存在し、これは、アプリケーションがランダムインスタンス不良を許容するのに役立つ弾力的なツールである。生産プロットは、何が生じているかを認識して生産プロセスが中断するのを防ぐために定期的に引かれる。変動又は不良は、不良に耐えられるように生産環境内に導入される。少なくとも1つの実施形態によれば、バリアントは、ソフトウェアのタイミングのテストプロセスとしてソフトウェア開発プロセス内に構築される。時間の0.0001%の事象のような発生事象を時間の1%で発生させるため、当該事象を回避できない。
【0045】
図6は、少なくとも1つの実施形態に係る依存性を有する事象のクリティカルパス600を示す。
【0046】
図6で、依存タスク/事象610、612、依存タスク/事象620、622、及び依存タスク/事象630、632、634は識別可能であり、タスクの実行は再配置可能である。タスク/事象の実行順序は、各実行において動的に交換可能である。実行順序を交換することによって、非クリティカル効果が曝される。
【0047】
クリティカルパスは識別可能であり、クリティカルパスが優先され、他のタスク順序の実行はシフト及び変更される。タスクの並べ替えは、静的に1回のみ変更可能であるか、又は動的に変更可能である。クリティカルパスは、最重要経路、すなわち、完了するのに最も長く要する経路である。
【0048】
図6で、まず事象1 640が生じる。次いで、事象2 610、事象4 620、及び事象3 630が事象1 640の後にスケジュールされる。事象2 610に依存する事象5 612は、事象2 610の後にスケジュールされ、事象4 620に依存する事象6 622は、事象4 620の後にスケジュールされる。事象3 630に依存する事象7 632は、事象3 630の後にスケジュールされ、事象7 632に依存する事象8 634は、事象7 632の後にスケジュールされる。事象9 650は、事象8 634の後にスケジュールされる。事象9 650はまた、事象5 612及び事象6 622の後にスケジュールされる。次いで、事象10 660は、事象9 650の後に完了する。変動が追加可能である様々な場所が存在する。タスクの全てが互いに依存性を有しているわけではない。依存していないタスクは、便宜上、連続的にスケジュールされるように生じる。最終的に、タスクは、その出力を他の依存タスクに供給する。
【0049】
図6で、クリティカルパスは経路670である。図6に示されるように、クリティカルパス670は、事象1 640と、事象3 630と、事象7 632と、事象8 634と、事象9 650と、事象10 660と、を含む。クリティカルパス670は、最長の実行時間を有する経路であるため、クリティカルパス670内のタスクは、並べ替え可能でない。しかしながら、他のタスクの順序は、再配置可能である。例えば、事象5 612は、事象7又は事象8 634と共にスケジュール可能である。同様に、事象2 610は、事象3 630又は事象7 632と共にスケジュール可能である。同様に、事象6 622は、事象7又は事象8 634と共にスケジュール可能であり、事象4 620は、事象3 630又は事象7 632と共にスケジュール可能である。それらのタスクの実行の並べ替えは、クリティカルパスの変動に影響を与える。
【0050】
タスクが線形的に実行されるとき、他のタスクは、クリティカルパス670の周囲で循環するか、又は他のCPUにおける実行を変更する。複数の実行部を有するシステムに関して、実行の順序は変更可能である。これは、キャッシュ効果を強制するか又は実行のモダリティを曝す。
【0051】
モダリティの強制は、開発テスト中に問題を識別する可能性を増加させるため、生産中又はソフトウェアが展開された後にモダリティが生じる統計的可能性が低くても、安全性が増加する。事象を並べ替えるランダム性の適用は、非決定性を意図的に挿入して、問題を識別するために動的にソフトウェアを常に中断しようと努めることで達成される。述べられているように、0.0001%で問題が生じ、非決定性を追加することによって、0.0001%よりも多い頻度、例えば、0.01%で問題を生じさせ、その結果、問題は、生産の前及びソフトウェアが展開される前に対処可能である。
【0052】
別の態様は、ソフトウェア再使用が有効にされること、例えば、ソフトウェアが経時的に発展可能なことである。例えば、現在のバージョンのソフトウェアは、問題を有していない。しかしながら、変動がソフトウェアの実行に構築され、その結果、ソフトウェア変更が行われると、可能性のあるモダリティが探索可能である。非決定性のランダム性は、将来の変更を考慮及び管理し、且つハードウェアの割り当てを最適化するためにテスト及び生産中に導入される。
【0053】
非決定性の導入は、実際に指定されるものを超えた許容度を提供し、例えば、ソフトウェアは、オーバープロビジョンではない。ソフトウェアが変更されるか又はアップグレードが実装されると、ソフトウェアは、問題が生じないことを保証するために非決定性を導入することによってテストされる。非決定性の導入は、ハードウェアの過剰設計を防ぐだけでなく、現在のソフトウェアを現在のハードウェアに過適合させるのも防ぐ。
【0054】
例えば、ハードウェアは、新しい車両が作成されるときに変更され、ソフトウェアは再使用される。ソフトウェアは、新しいハードウェアについて作成される。新しいソフトウェアが一定に保持される場合、例えば、変更が許可されない場合、新しいソフトウェアが新しいハードウェアで使用されるとき、新しいハードウェアはソフトウェアに対して過適合される。代わりに、非決定性の導入は、当該モダリティのより広い視野を提供し、安全性は、ハードウェア及びソフトウェアに関する完全な理解を慎重に計画及び展開することにより保証される。
【0055】
図7は、少なくとも1つの実施形態に係る3つのモダリティ700を示す。
【0056】
図7で、タイミング制約は、100ミリ秒710である。第1のグループの事象720は、1ms722の時間境界1(モード1 724)において群がっている。第2のグループの事象730は、1ms732の時間境界2(モード2 734)において群がっている。第3のグループの事象740は、1ms742の時間境界3(モード3 744)において群がっている。
【0057】
サブコンポーネント0 750、サブコンポーネント1 751、サブコンポーネント2 752、サブコンポーネント3 753、サブコンポーネント4 754、サブコンポーネント5 755、サブコンポーネント6 756、及びサブコンポーネント7 757は、プロットの下に示されている。サブコンポーネント0~7 750~757を個々に測定する代わりに、サブコンポーネント0~7 750~757についての全部の実行タイミングが測定される。実行の順序が変更され、モーダル分布が取り込まれる。
【0058】
事象がランダム化されると、複数のモードが曝されて積み重なる。右のモード、モード3 744は、通常の実行において非常にまれなものであるが、ランダム化は、モード3 744を曝している。ソフトウェア開発者は、モード3 744を回避しようと試みることができるため、ソフトウェア開発者は、モード3 744がなぜ生じたか、例えば、どのサブコンポーネント0~7 750~757がクリティカルパスの一部であったかを決定するためにソフトウェアを検査する。3つのモダリティ700を示す分布プロットは、実行を最適化するために、変動を低減するために、などで時間が費やされるべきである場合をソフトウェア開発者に知らせるので、モード3 744は、左にシフト可能であるため、変動は、安全性を保証するように100ミリ秒の時間制約710に近すぎることはない。
【0059】
少なくとも1つの実施形態によれば、ソフトウェア及びハードウェアは分離されている。したがって、ハードウェアが浮動小数点であり得るか、ソフトウェアが浮動小数点であり得るか、又はその両方である。システムの性質により、一方が他方を中断させることはない。したがって、ソフトウェアは、ソフトウェアの中断に応じて生産に移されないか、又はテストが当該著しいエッジケースを明らかにできるため、ソフトウェアは、非常に迅速にロールバックされる。不特定のモダリティ、例えば、設計タイミング制約の外側又はそれに近すぎるモダリティ、例えば、モード3 744を除去することで、当該システムがますます複雑になっていても真の安全性に関する計画及び軽減の問題が対処される。
【0060】
エッジケース、例えば、モード3 744の識別を通じて、関連のハードウェアとのソフトウェアの互換性に沿ったソフトウェアの品質が保証される。静的なモデルにおける複雑性、並びにソフトウェア及びハードウェアの両方に関する、両方が変化している動的なモデルにおける複雑性の両方が考慮される。これは、特定のモデルラインの展開だけでなく、完全に異なるモデルにおける当該モデルライン内の変動にも適用可能である。見識は、リスクを軽減するためにソフトウェア及びハードウェアの全ての詳細において必要とされていない。
【0061】
ランダム化は、いくつかの方法でソフトウェア内に導入可能である。ランダム化は、図6を参照して記載されるような依存性を考慮して事象がスケジュールされた順序に基づいて導入可能である。上述のように、現在のソフトウェア開発手法は、任意の変動を防ぐことである。
【0062】
割り当て順序はまた、図5に関して記載されるようにランダム化可能である。他のランダム化技術は、オーバーサイズの割り当て(要求を超える割り当て)、コード割り当て、様々な命令の使用、及び同種のものを含む。
【0063】
例えば、ソフトウェア命令は、タスクのセットを行うように生成される。多くの場合、命令は、同等であるか又は少なくとも同じ結果を生成する。このため、様々な命令が使用可能であり、例えば、x86システムに関して、同様の命令、例えば、加算、ロード実効アドレス(LEA)などが存在する。LEAは、異なる実行ユニット上で実行され、実行において何らかの量のバリアントを導入し、これは、異なるリソースをLEAが使用するためである。また、異なる結果を生成する、所与の目的に対して同等である様々な命令が選択可能である。例えば、浮動小数点数学に関して、(F16と呼ばれる)16ビット浮動小数点命令、及び(F32と呼ばれる)32ビット浮動小数点命令を使用したバージョンが使用可能である。
【0064】
図8a~8bは、少なくとも1つの実施形態に係るAPIの呼び出し及び応答800にタイミングの変動を導入する効果を示す。
【0065】
図8aで、要求1~3 810、820、830についての事象及び応答1~3 812、822、832についての事象が示されている。ソフトウェアのテスト中、仮想ハードウェアは、レースコンディションが生じ得る全てのタイミングAPIを列挙することによってシステムにおけるタイミングクリティカルな不良をシミュレートすることができる。事象は、プログラムにおけるステートメント又はステートメントシーケンスの実行インスタンスを表す。事象は、読み取られる及び/又は書き込まれる共有のメモリ場所のセットを指定する。事象は必ずしも、瞬時に生じるわけではなく、並列プログラムにおいて、事象は無秩序なこともある。事象のタイミングは、その開始及び終了の瞬間によって指定される。e1の開始が、e2の開始後であるがe2の終了前に生じる場合、又は逆も同様に、事象e1、e2は同時である。追跡機能は、選択されたシステム事象を監視することによってシステム問題を分離するのに役立つ。
【0066】
図8で、t812とt814との間で生じている要求1 810は、車両、例えば、鉄道車両、乗用車、及び同種のものに関する減速の要求を表す。しかしながら、当業者であれば、本明細書で開示される実施形態と整合する他の実装態様が適用可能であることを理解する。t814とt822との間で生じている応答1 812は、車両に適用される減速を表す。
【0067】
822とt824との間で生じている要求2 820は、車両(この具体例では、車両は鉄道車両である)の軌道切り替えの減速に関する識別の要求を表す。t824とt832との間で生じている応答2 822は、識別されている軌道切り替えの位置を表す。
【0068】
832とt834との間で生じている要求3 830は、識別された軌道切り替え位置で行われる車両の軌道切り替えの要求を表す。t834とt836との間で生じている応答3 832は、識別された軌道切り替え位置で実装される車両の軌道切り替えを表す。
【0069】
同じ入力における同じプログラムの異なる実行において、競合を構成するアクセス事象は、異なる順序で生じることもあり、これは、異なるプログラム挙動(非決定性)をもたらすこともある。例えば、複数のスレッドは、共有のメモリにおいて同じ変数に同時にアクセスすることもあり、少なくとも1つのアクセスは、変数を修正し、これは、エラーをもたらすこともある。
【0070】
アプリケーションプログラミングインターフェース(API)は、異なるアプリケーションが互いに通信するのを可能にする定義されたルールのセットである。例えば、メモリ管理APIは、メモリを割り当てるために使用され、データ管理APIは、データにアクセスするために使用され、ソケットAPIは、プロセス間通信(IPC)の形態を提供して、ネットワーク中でメッセージを送信するために使用される。多数の他のタイプのAPIが存在する。
【0071】
リアルタイムレンダリング用に設計されたAPIは、パイプライン実行モデルを採用する。レースコンディションは、複数の動作の実行に関するタイミング又は順序により生じるバグを参照する。バグは、コンピュータソフトウェアに対して誤っているか若しくは予期していない結果を生成させるか又は意図しない方法で動作させる、コンピュータソフトウェアの設計、開発、又は動作におけるエラー、欠陥、不具合である。レースコンディションは、非常に広いクラスのバグであって、当該バグは、問題空間に応じて大いに異なる方法でそれ自体を表し得る。例えば、同じリソースを使用した複数のAPI呼び出しを作成する複数のスレッドは、APIのタイミングにより異なる結果を生成することもある。
【0072】
図8bで、APIの動作間での考えられるインターリーブに関する不具合導入は、タイミング問題を識別するためにソフトウェア内に欠陥を導入することを含む。正式な方法は、タイミングが依拠するソフトウェアの一部を識別し、次いで、全ての潜在的な実行経路を列挙するために使用可能である。これは次いで、全ての潜在的な不良モードの識別につながり、当該不良モードの全てが(自動的に又は手動で)テストされる必要があるテストプランを作成する。
【0073】
図8bは、車両を減速させるコマンドを再度表して、要求1 850がt852とt854との間で生じていることを示す。t854とt862との間で生じている応答1 852は、開始される車両の減速を表す。
【0074】
要求2 860、応答2 862、要求3 870、及び応答3 872が時間でシフトされて、それによって、要求2 860と要求3 870との間及び応答2 862と応答3 872との間でレースコンディションを生成するように変動が追加されている。
【0075】
ここで、要求2 860は、t854とt862との間で生じ、車両の軌道切り替えの減速に関する識別の要求を表す。ここで、応答2 862は、t862とt864との間で生じ、識別されている軌道切り替えの位置を表す。
【0076】
ここで、要求3 870は、t854とt862との間で生じ、識別された軌道切り替え位置で行われる車両の軌道切り替えの要求を表す。ここで、応答3 872は、t862とt864との間で生じ、識別された軌道切り替え位置で実装される車両の軌道切り替えを表す。しかしながら、識別された軌道切り替え位置において行われる軌道切り替えの要求3 870は、車両の軌道切り替えの減速に関する識別の要求2 860と同時である。同様に、識別された軌道切り替え位置において軌道切り替えを行う応答3 872は、軌道切り替え位置を識別する応答2 862と同時である。したがって、応答2 862が完了しておらず、軌道切り替え動作が行われる前に軌道切り替え位置の識別が既知ではないため、要求3 870及び応答3 872での軌道切り替えを行うことはできない。
【0077】
非決定性の当該ソースを追加することによって、モーダル挙動が定量化され、様々な実行についてのタイミングの範囲が決定される。この定量化は、異なっているソフトウェア/ハードウェアの一部の発見を可能にし、これらの全てがシステムの運行設計領域内にあることを保証する。タイミング問題の完全なリスト(例えば、完全に正式な方法)はまた、システムについての「タイミング適用範囲」を提供し、どのくらい多くのタイミングモダリティが実行及び定量化されているかを識別する。実行されていなかったモダリティ(カバーされていないモダリティ)の最悪の場合の境界を示す推定が識別可能である。
【0078】
ソフトウェアはまた、現実世界のソフトウェアが、開発されたモデルに合っていないタイミングをこれまでに経験しているかどうかを識別するように生産において修正可能である。任意の超過が報告され得、調査は、モデルがなぜ間違いであったかを理解するために開始可能である。更に、予期していない超過に対してだけでなく、予期されるランタイム実行挙動の分布曲線に対しても注目可能である。ランタイムが、予期される統計的なモデルに合っていないことに応じて、調査が再び開始され得る。テストは、ハードウェアに対して変化する忠実度に関して仮想的に行われ得る。シミュレーション/エミュレーションの忠実レベルは、モデルの確立に関連しており、より正確な仮想のテストは、あまり正確でないモデルの忠実度を定量化するために使用可能である。したがって、タイミングの変動性が管理可能であり、マルチモーダル挙動が曝される。ソフトウェア及びハードウェアが発展すると、新しいモダリティが生じることもある。上記方法により、新しいモダリティが生じる場合を識別することができ、考えられる挙動及び考えられる新しい不良経路の範囲の変化が定量化され得る。他の挙動を示して他のモダリティを曝す仮定的なハードウェアが作成可能である。不特定のモダリティ及び不良経路の識別は、新しいハードウェアの作成をより容易にし、これは、この新しいプラットフォームにおけるタイミングが問題であるというリスクが、タイミング変更のスケールを予め分かっている状態にすることによって低減されるためである。
【0079】
上記のことを更に改善するために、一部のタイプのアルゴリズムは、特定のタイミング事象における同期に応じてより効率的である。例えば、RAMへの直接的なネットワーキングは、タイミングが充分に定量化されたことに応じてより効率的である。同様に、オペレーティングシステムスケジューラは、スケジューラが調整されたことに応じてタイミング変動性を低減することができ、これは、上記のような潜在的な変動性の定量化を必要とする。当該最適化は、無干渉としても既知である安全性システムに関する干渉の低減と同様である。加えて、RCU(リードコピーアップデート)などの一部のアルゴリズムは、可能な限り早くメモリを回収するようにカスタムの静止点を有することに応じて(特に、リアルタイムオペレーティングシステムにおいて)より充分に機能する。システムにタイミングの変動を定量化させることで、システム全体に関する他の基準を満たしつつ、静止点を最適にスケジュール及び挿入する方法を発見することができる。
【0080】
図9は、少なくとも1つの実施形態に係るタイミング独立性をソフトウェアに提供する方法のフローチャート900である。
【0081】
図9で、方法がS902で開始し、S910で、変動がソフトウェアに追加される。図4を参照して、タイミング問題を識別するためにバリアント若しくは非決定性がソフトウェアに追加されるか、又は知られていなかったモダリティの発生を強制する。モダリティの強制は、開発テスト中に問題を識別する可能性を増加させるため、生産中又はソフトウェアが展開された後にモダリティが生じる統計的可能性が低くても、安全性が増加する。非決定性を意図的に挿入することによるランダム性の動的な適用は、当該問題を識別するようにソフトウェアの中断を試行するために使用される。図5を参照して、ソフトウェアのメモリレイアウトは、ある実行から別の実行へソフトウェアの実行の順序が変更されてモダリティが現れるようにランダム化される。図7を参照して、他のランダム化技術は、オーバーサイズの割り当て(要求を超える割り当て)、コード割り当て、様々な命令の使用、及び同種のものを含む。
【0082】
S914で、ソフトウェアに関連付けられた不特定のモダリティの分布が識別される。図7を参照して、不特定のモダリティ、例えば、設計タイミング制約の外側にあるモダリティを除去することで、当該システムがますます複雑になっていても真の安全性に関する計画及び軽減の問題が対処される。図8a~図8bを参照して、非決定性の当該ソースを追加することによって、モーダル挙動が定量化され、様々な実行についてのタイミングの範囲が決定される。この定量化は、異なっているソフトウェア/ハードウェアの一部の発見を可能にし、これらの全てがシステムの運行設計領域内にあることを保証する。図6を参照して、クリティカルパスは識別可能であり、クリティカルパスが優先され、他のタスク順序の実行はシフト及び変更される。タスクの並べ替えは、静的に1回のみ変更可能であるか、又は動的に変更可能である。
【0083】
S918で、ソフトウェアの少なくとも一部が、不特定のモダリティを除去するために修正される。図6を参照して、非決定性の導入は、実際に指定されるものを超えた許容度を提供し、例えば、ソフトウェアは、オーバープロビジョンではない。ソフトウェアが変更されるか又はアップグレードが実装されると、ソフトウェアは、問題が生じないことを保証するために非決定性を導入することによってテストされる。非決定性の導入は、ハードウェアの過剰設計を防ぐだけでなく、現在のソフトウェアを現在のハードウェアに過適合させるのも防ぐ。図7を参照して、分布プロットは、実行を最適化するために、変動を低減するために、などで時間が費やされるべきである場合をソフトウェア開発者に知らせるので、モード3は、左にシフト可能であるため、変動は、安全性を保証するように100ミリ秒の時間制約に近すぎることはない。
【0084】
次いで、プロセスがS920で終了する。
【0085】
タイミング独立性をソフトウェアに提供する方法の少なくとも1つの実施形態は、変動をソフトウェアに追加することと、ソフトウェアに関連付けられた不特定のモダリティの分布を識別することと、不特定のモダリティを除去するためにソフトウェアの少なくとも一部を修正することと、を含む。
【0086】
図10は、少なくとも1つの実施形態に係るプロセッサベースのシステム1000のハイレベル機能ブロック図である。
【0087】
少なくとも1つの実施形態では、処理回路1000は、タイミング独立性をソフトウェアに提供する。処理回路1000は、プロセッサ1002を使用してソフトウェアに対するタイミング独立性の追加を実装する。処理回路1000はまた、タイミング独立性をソフトウェアに実装するために使用される非一時的コンピュータ可読記憶媒体1004を含む。特に、非一時的コンピュータ可読記憶媒体1004は、プロセッサ1002によって実行されてタイミング独立性をソフトウェアに提供する動作をプロセッサ1002に行わせる命令1006、すなわち、コンピュータプログラムコードでエンコードされる、すなわち、それを記憶する。プロセッサ1002による命令1006の実行は(少なくとも部分的に)、1つ以上の実施形態に従って本明細書に記載される方法(以下で、記載のプロセス及び/又は方法)の少なくとも一部を実装するアプリケーションを表す。
【0088】
プロセッサ1002は、バス1008を介して非一時的コンピュータ可読記憶媒体1004に対して電気的に接続されている。プロセッサ1002は、バス1008によって入力/出力(I/O)インターフェース1010に対して電気的に接続されている。ネットワークインターフェース1012も、バス1008を介してプロセッサ1002に対して電気的に接続されている。ネットワークインターフェース1012は、ネットワーク1014に接続されており、その結果、プロセッサ1002及び非一時的コンピュータ可読記憶媒体1004は、ネットワーク1014を介して外部要素に接続する。プロセッサ1002は、プロセス及び/又は方法の少なくとも一部を行うように処理回路1000を使用可能にするために、非一時的コンピュータ可読記憶媒体1004においてエンコードされた命令1006を実行するように構成されている。1つ以上の実施形態では、プロセッサ1002は、中央処理装置(CPU)、マルチプロセッサ、分散処理システム、特定用途向け集積回路(ASIC)、及び/又は好適な処理ユニットである。
【0089】
処理回路1000は、I/Oインターフェース1010を含む。I/Oインターフェース1010は、外部回路に接続されている。1つ以上の実施形態では、I/Oインターフェース1010は、情報及びコマンドをプロセッサ1002に通信する、キーボード、キーパッド、マウス、トラックボール、トラックパッド、タッチスクリーン、及び/又はカーソル方向キーを含む。
【0090】
処理回路1000はまた、プロセッサ1002に接続されたネットワークインターフェース1012を含む。ネットワークインターフェース1012により、処理回路1000は、1つ以上の他のコンピュータシステムが接続されたネットワーク1014と通信することができる。ネットワークインターフェース1012は、無線ネットワークインターフェース、例えば、Bluetooth(登録商標)、Wi-Fi、世界規模相互運用マイクロ波アクセス(WiMAX)、汎用パケット無線サービス(GPRS)、若しくは広帯域符号分割多元接続(WCDMA(登録商標))、又は有線ネットワークインターフェース、例えば、イーサネット、ユニバーサルシリアルバス(USB)、若しくは電気電子エンジニア学会(IEEE)864を含む。
【0091】
処理回路1000は、I/Oインターフェース1010を通じて情報を受信するように構成されている。I/Oインターフェース1010を通じて受信される情報は、命令、データ、設計ルール、セルのライブラリ、及び/又はプロセッサ1002が処理する他のパラメータのうちの1つ以上を含む。情報は、バス1008を介してプロセッサ1002に転送される。処理回路1000は、I/Oインターフェース1010を通じて、ユーザインターフェース(UI)に関連する情報を受信するように構成されている。情報は、UI1020として非一時的コンピュータ可読記憶媒体1004に記憶される。
【0092】
1つ以上の実施形態では、1つ以上の非一時的コンピュータ可読記憶媒体1004には、本明細書に記載されるプロセス又は方法を行うようにコンピュータ、プロセッサ、(又は他の電子デバイス)をプログラムするために使用され得る命令1006が(圧縮形態又は非圧縮形態で)記憶されている。1つ以上の非一時的コンピュータ可読記憶媒体1004は、電子記憶媒体、磁気記憶媒体、光記憶媒体、量子記憶媒体、又は同種のもののうちの1つ以上を含む。
【0093】
例えば、非一時的コンピュータ可読記憶媒体1004は、ハードドライブ、フロッピディスケット、光ディスク、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能なプログラマブルROM(EPROM)、電気的に消去可能なプログラマブルROM(EEPROM)、フラッシュメモリ、磁気カード若しくは光カード、ソリッドステートメモリデバイス、又は電子命令を記憶するのに好適な他のタイプの物理媒体を含み得るが、これらに限定されない。光ディスクを使用した1つ以上の実施形態では、1つ以上の非一時的コンピュータ可読記憶媒体1004は、コンパクトディスクリードオンリーメモリ(CD-ROM)、コンパクトディスク読み取り/書き込み(CD-R/W)、及び/又はデジタルビデオディスク(DVD)を含む。
【0094】
1つ以上の実施形態では、非一時的コンピュータ可読記憶媒体1004は、タイミング独立性をソフトウェアに提供するプロセス及び/又は方法の少なくとも一部をプロセッサ1002に行わせるように構成された命令1006を記憶する。1つ以上の実施形態では、非一時的コンピュータ可読記憶媒体1004はまた、タイミング独立性をソフトウェアに提供するプロセス及び/又は方法の少なくとも一部を行うのを容易にするアルゴリズムなどの情報を記憶する。
【0095】
したがって、少なくとも1つの実施形態では、プロセッサ1002は、テスト対象のソフトウェア1030をロード、実行、及び操作するように1つ以上の非一時的コンピュータ可読記憶媒体1004に記憶された命令1006を実行する。プロセッサ1002は、非決定性及びランダム化(例えば、メモリ割り当てのランダム化、メモリのオーバーサイズの割り当て、又は様々な同等の命令)を含む変動1032をソフトウェアに追加する。プロセッサ1002は、不特定のモダリティの分布1034、例えば、ソフトウェアの設計タイミング制約1036の外側にあるモダリティに関する分布を決定するように、1つ以上の非一時的コンピュータ可読記憶媒体1004に記憶された命令1006を実行する。プロセッサ1002は、タスクの実行に関するタイミング範囲1038を決定し、クリティカルパス内の事象及びクリティカルパス内にない非依存タスク1040を決定する。プロセッサ1002は、クリティカルパス内にない非依存タスク1040を並べ替えることができる。プロセッサ1002は、実装されたハードウェアの過剰設計及び実装されたハードウェアへのソフトウェアの過適合を防ぐためのソフトウェアに対する修正1042を実装する。プロセッサ1002は、ソフトウェアのタスクの実行1044を最適化する。ディスプレイ1070は、ソフトウェア、モダリティの分布、ソフトウェアに追加される変動、タイミング範囲、並びに事象、タスク、及び経路1074を提示するユーザインターフェース(UI)1072を提供する。
【0096】
これらのプログラムの別々のインスタンスは、任意の数の別々のコンピュータシステム上で実行され得るか、又はその間で分散され得る。したがって、特定のステップが、特定のデバイス、ソフトウェアプログラム、プロセス、又はエンティティによって行われているものとして記載されているが、そうである必要はない。様々な代替的実装態様が当業者によって理解されるだろう。
【0097】
更に、当業者であれば、上述の技術は、様々なデバイス、環境、及び状況において利用され得ることを容易に理解する。実施形態は、構造的特徴又は方法の行為に固有の用語で記載されているが、添付の特許請求の範囲で定義される主題は必ずしも、記載される特定の特徴又は行為に限定されるわけではない。むしろ、特定の特徴及び行為は、特許請求の範囲を実装する例示的な形態として開示される。
図1
図2
図3
図4
図5
図6
図7
図8a
図8b
図9
図10
【外国語明細書】