Режим округления: самый простой

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

Для весьма специализированного случая деления, отвечающего трем конкретным критериям, «круглый стол» может быть более эффективным. Эти три критерия:

  • Деление с фиксированной точкой/целым числом со знаком

  • Знаменатель является инвариантной константой

  • Знаменатель является точной степенью двойки

В этом случае установите режим округления равным этажу, а параметр Model Configuration Parameters > Аппаратная Реализация > Production Hardware > Signed integer distribution rounds to parameter, чтобы описать поведение округления вашей производственной платформы.

Оптимизируйте округление для отливок

Блок Data Type Conversion переводит сигнал с одним типом данных в другой тип данных. Когда блок приводит сигнал к типу данных с меньшим размером слова, чем исходный тип данных, точность теряется и происходит округление. Самый простой режим округления автоматически выбирает лучшее округление для этих случаев на основе следующих правил:

  • При приведении одного целого числа или типа данных с фиксированной точкой к другому, самый простой режим округляется к полу.

  • При приведении типа данных с плавающей точкой к целому числу или типу данных с фиксированной точкой, самый простой режим округляется к нулю.

Оптимизируйте округление для высокоуровневых арифметических операций

Самый простой режим округления выбирает лучшее округление для каждой арифметической операции высокого уровня. Например, рассмотрите операцию y = u1 × u2/ u3, реализованную с помощью блока Product:

Как указано в стандарте C, самый эффективный режим округления для операций умножения всегда является полом. Однако стандарт C не задает режим округления для деления в случаях, когда, по крайней мере, один из операндов отрицателен. Поэтому наиболее эффективным режимом округления для операции деления со знаком типов данных может быть пол или нуль, в зависимости от вашей производственной платформы.

Самый простой режим округления:

  • Округлить на этаж для всех операций nondivision.

  • Округлает на нуль или пол для деления, в зависимости от настройки параметра Model Configuration Parameters > Аппаратная Реализация > Production Hardware > Signed integer distribution rounds to parameter.

Чтобы получить наиболее эффективный код, вы должны задать параметр Signed integer division rounds to, чтобы указать, равны ли ваши производственные целевые раунды нулю или в пол для целочисленного деления. Большинство производственных платформ равны нулю для целочисленных операций деления. Обратите внимание, что Simplest округление позволяет округлять «смешанный режим» для таких случаев, когда оно округляется до пола для умножения и до нуля для деления.

Если для параметра Signed integer division rounds to задано значение Undefinedсамый простой режим округления может оказаться неспособным создать наиболее эффективный код. Самый простой режим округляется до нуля для деления в этом случае, но он не может полагаться на вашу производственную платформу, чтобы выполнить округление, потому что параметр Undefined. Поэтому вам нужен дополнительный код округления, чтобы гарантировать округление до нуля поведения.

Примечание

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

Оптимизируйте округление для промежуточных арифметических операций

Для арифметики с фиксированной точкой с ненулевым наклоном и смещением самый простой режим округления также выбирает лучшее округление для каждой промежуточной арифметической операции. Например, рассмотрите операцию y = u1/ u2, реализованную с помощью блока Product, где u1 и u2 являются величинами с фиксированной точкой:

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

y=u1u2=S1Q1+B1S2Q2+B2

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

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

Примечание

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

Похожие темы