9

航空機搭載システムには、「DO-178B」レベル A およびレベル B 認定があります。最適化コンパイラの使用を禁止しますか?

たとえば、一部のコンパイラは、パフォーマンスを向上させるために命令を並べ替えます。DO-178B lev.A または lev.B はこの並べ替えを禁止していますか?

最近のほとんどの CPU には、このような並べ替え機能がハードウェアに組み込まれています。DO-178B lev.A ソフトウェア/ハードウェア システム内で使用できますか?

4

5 に答える 5

11

最初に、そして重要なこと: この種の質問について、答えが重要な場合は、それを提供できる有能な人から正式な専門家の意見を得るか、これについて認証機関と話し合う必要があります。ここに表示される返信は信頼しないでください。

そうは言っても、あなたは好奇心から質問していて、意味のある方法で答えに依存していないと仮定し、その意味で答えようとします. 私は専門家ではありません。これは専門的なアドバイスではありません。

クイック検索でオンラインで見つけることができた最も適切なドキュメントは、関連するトピックに関する次の FAA ガイドライン ペーパーでした。 12.pdf . この文書では、ソース コードではなく、生成されたオブジェクト コードの検証を行う必要がある条件について説明します。特に、最適化されていないコードでも発生する多くの例を示します。変数の自動初期化と例外処理はその例です。コンパイラの最適化については、次のように述べています。

コンパイラの最適化は、DO-178B/ED-12B のセクション 4.4.2a で扱われている別の領域です。これには、最適化機能が、ソフトウェア レベルと一致する要件ベースのテストと構造的なカバレッジを実証するテスト ケースの機能を損なわないという分析的判断が含まれます。これは、セクション 4.4.2b で扱われているトレーサビリティおよび追加検証の問題とは別の問題です。これは、このホワイト ペーパーの範囲外です。

セクション 4.4.2a を読むのに便利な DO-178B のコピーは持っていませんが、(a) オブジェクト コードがソース コードと 1 対 1 で対応しない他のケースを処理する手順があることに注意してください。 (b) これは、完全に禁止されているのではなく、コンパイラの最適化が議論されていることをかなり強く意味します。

その論文の多くの議論から、「ソースコードとオブジェクトコードの間で物事を追跡することはできません」に対する答えは、何らかの方法でオブジェクトコードを検証することであることも明らかです。そのようなことを禁止する以外の解決策。

したがって、少なくともいくつかのコンパイラーの最適化を許可する必要があると結論付けます。

特に、あなたが説明したような並べ替えはかなり追跡可能であり、それが許可されることはほぼ確実に思えます。

于 2011-09-04T02:20:44.673 に答える
6

DO-178B は絶対的なものではなく、解釈の余地があります。最適化をオフにすると、質問も説明も何もありません。最も明白な解釈に固執することで、後で自分の解釈を認証機関に売り込む必要がなくなり、自分がどのように物事を行ったかについての質問に自分自身を開く必要がなくなります.

コードを最適化する場合、レベル A に必要なソースから命令へのトレーサビリティーを実行するのは困難です。さらに、Do-178B を使用している場合、ソフトウェアから余分な 5% を取得することは最大の関心事ではありません。必要なすべての認証手順を簡単に完了することが、あなたの主な関心事であるべきです。

あなたの質問のハードウェア部分は興味深いものです。ソフトウェア最適化コードは並べ替えられるだけでなく、変更されます。ただし、ハードウェアの場合、実行順序のみを高速化するためにコードを変更することはありません。これについてどう考えているかについてもっと情報を得るために、周りに尋ねなければなりません。

于 2011-09-05T06:08:12.493 に答える
3

私は DO-178B について表面的な知識しか持っていません (日常的には使用していませんが、使用する人向けのツールを作成しています)。

この規格はトレーサビリティを非常に重視しています。高レベルの要件は、コンパイラによってコンパイルされるソース コードによって実装される低レベルの要件に分解されます。これらの各ステップでは、前のステップで作成された仕様に関して何が行われたかを正当化できなければなりません。

コンパイラにとって、これは、アセンブリを読み取り、特定の 1 つの命令をトレースして、この命令が生成される原因となったソース コード ステートメントに到達できる必要があることを意味します。

要するに、はい、これはほとんどの最適化を禁止していると思います。

このソフトウェアが実行されているハードウェアに関しては、別の方法で検証されます (ただし、同じくらい厳密だと思います)。関連する標準は DO-254 であり、私はそれについて何も知りません。

于 2011-09-03T18:39:14.200 に答える
2

最適化では、生成されたコードをオブジェクト アセンブリ言語レベルで検証する必要があります。以前に他のプロジェクトで検証された組み込みリアルタイム マルチタスキング用のコンパイラ スイートとライブラリがあり、それらを再度検証できるという安心感を与えてくれますが、アプリケーションで使用されているコードを検証する必要があります。

于 2012-05-24T15:40:10.477 に答える