«DO-178B level A» запрещает оптимизировать компиляторы? - PullRequest
9 голосов
/ 03 сентября 2011

Существует сертификация уровня A и уровня B "DO-178B" для бортовых систем. Запрещает ли использование оптимизирующих компиляторов?

например. Некоторые компиляторы переупорядочивают инструкции, чтобы повысить производительность. DO-178B lev.A или lev.B запрещает это изменение порядка?

Большинство современных процессоров имеют такое переупорядочение, встроенное в аппаратное обеспечение. Разрешено ли их использование в софтверных / аппаратных системах DO-178B lev.A?

Ответы [ 4 ]

11 голосов
/ 04 сентября 2011

Во-первых, и очень важно: для ответа на этот тип вопроса, если ответ имеет значение, вам необходимо получить официальное профессиональное мнение от того, кто компетентен предоставить его, или обсудить это с вашим сертификационным органом. На любой ответ, который вы получите здесь, не следует полагаться.

С учетом вышесказанного, я предполагаю, что вы спрашиваете с любопытства и не будете полагаться на ответ каким-либо значимым образом, и я попытаюсь ответить в том же духе. Я не профессионал, и это не профессиональный совет.

Самой доступной документацией, которую я смог найти в Интернете с помощью быстрого поиска, был этот руководящий документ ФАУ по соответствующей теме: http://www.faa.gov/aircraft/air_cert/design_approvals/air_software/cast/cast_papers/media/cast-12.pdf. В этом документе описываются условия, при которых необходимо скорее выполнить проверку сгенерированного объектного кода чем исходный код. В частности, он дает ряд примеров, которые будут встречаться даже в неоптимизированном коде - автоматическая инициализация переменных и обработка исключений - пара примеров. По оптимизации компилятора он отмечает:

Оптимизация компилятора является еще одной областью, рассматриваемой в разделе 4.4.2a документа DO-178B / ED-12B. Это включает в себя аналитическое определение того, что функции оптимизации не ставят под угрозу способность тестовых случаев демонстрировать основанное на требованиях тестирование и структурное покрытие, соответствующее уровню программного обеспечения. Это отдельная проблема от проблем прослеживаемости и дополнительных проверок, рассмотренных в Разделе 4.4.2b. Это выходит за рамки данной статьи.

У меня нет копии DO-178B, удобной для чтения в разделе 4.4.2a, но я хотел бы отметить, что (a) существуют процедуры для обработки других случаев, когда объектный код не соответствует исходному коду один-на-один, и (б) это довольно сильно подразумевает, что оптимизация компилятора обсуждается, а не прямо запрещена.

Из ряда дискуссий в этой статье также ясно, что ответ на вопрос «мы не можем проследить вещи между исходным кодом и объектным кодом» состоит в том, чтобы каким-то образом проверять объектный код - другими словами есть иное решение, чем запрещение подобных вещей.

Таким образом, я бы пришел к выводу, что по крайней мере некоторые оптимизации компилятора должны быть разрешены.

В частности, вид переупорядочения, который вы описываете, вполне прослеживается, и мне кажется почти уверенным, что это будет разрешено.

6 голосов
/ 05 сентября 2011

DO-178B не является абсолютным и открыт для интерпретации. Если вы отключите оптимизацию, нет вопросов и объяснять нечего. Придерживаясь наиболее очевидной интерпретации, вы избегаете необходимости впоследствии продавать свою интерпретацию сертификационным органам и открывать себя для вопросов о том, как вы поступили.

Когда вы оптимизируете свой код, трудно сделать трассируемость источника до инструкции, которая требуется для уровня A. Кроме того, если вы используете Do-178B, получение дополнительных 5% от вашего программного обеспечения не является вашей главной задачей. Простота выполнения всех необходимых этапов сертификации должна быть вашей главной задачей, поскольку это то, что будет поглощать все ваше время.

Аппаратная часть вашего вопроса интересна. Для оптимизации программного обеспечения код не просто переупорядочен, но и изменен. Но для аппаратного обеспечения код не изменяется, чтобы получить более высокую скорость только в порядке выполнения. Я должен спросить вокруг, чтобы получить больше информации о том, что думает по этому поводу.

3 голосов
/ 03 сентября 2011

У меня есть только поверхностные знания о DO-178B (я не работаю с ним изо дня в день, но я создаю инструменты для людей, которые это делают).

Стандарт очень серьезно относится к отслеживаемости.Требования высокого уровня снижаются до требований низкого уровня, которые реализуются исходным кодом, который компилируется компилятором.На каждом из этих этапов нужно уметь обосновывать то, что было сделано с точки зрения спецификаций, созданных на предыдущем шаге.

Для компилятора это означает, что нужно уметь читать сборку и отслеживать ееконкретная инструкция к выражению исходного кода, из-за которого эта инструкция была сгенерирована.

Короче говоря, да, я думаю, что это запрещает большинство оптимизаций.

Что касается оборудования, на котором работает это программное обеспечение,это проверено по-другому (но я думаю, так же строго).Соответствующим стандартом является DO-254, и я ничего о нем не знаю.

2 голосов
/ 24 мая 2012

При оптимизации вам необходимо проверить сгенерированный код на уровне языка ассемблера объектов.Существуют наборы компиляторов и библиотеки для встроенной многозадачности в режиме реального времени, которые ранее были проверены в других проектах, что дает вам уровень комфорта, что их можно проверять снова - но вам все равно необходимо проверить код, используемый в вашем приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...