Кодировка шины - Bus encoding

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

В контексте этой статьи система может относиться ко всему, где данные передаются от одного элемента к другому по шине (например, система на кристалле (SoC), компьютерная система, встроенная система на борту и т. Д.).

Мотивация

Энергопотребление в электронных системах сегодня вызывает озабоченность по следующим причинам:

  1. Устройства с батарейным питанием : из-за повсеместного распространения устройств с батарейным питанием и необходимости максимизировать продолжительность между двумя последовательными зарядками батареи, необходимо, чтобы система потребляла как можно меньше мощности (и энергии).
  2. Экологические ограничения : в попытке защитить окружающую среду нам необходимо экономить полезную энергию. Поскольку энергия, потребляемая электронными системами, резко возрастает, минимизация энергопотребления электронных систем имеет решающее значение для сохранения окружающей среды.
  3. Рассеивание мощности : согласно закону Мура , полупроводниковые устройства упаковывают все больше и больше транзисторов в меньшую площадь. Это приводит к увеличению рассеиваемой мощности на единицу площади и делает проектирование упаковки и системы термического охлаждения сложным и дорогостоящим. Следовательно, для решения этой проблемы необходимы электронные системы малой мощности.

Динамическая мощность, рассеиваемая электронной схемой, прямо пропорциональна коэффициенту активности и емкости нагрузки, как видно на выходе логического элемента. В случае шины емкость нагрузки обычно высока, поскольку шина должна быть подключена к нескольким модулям и разводиться дольше, а коэффициент активности также высок. Из-за более высоких значений емкости нагрузки и коэффициента активности в типичной системе потребляемая мощность шины может составлять до 50% от общей потребляемой мощности. Кодирование шины направлено на снижение этой мощности за счет уменьшения активности (количества переключателей) на линиях шины. Хотя тип кодирования шины, который будет использоваться для конкретной системы, может быть лучше всего определен, когда целевое приложение и ограничения среды для системы известны априори, ниже описаны некоторые методы кодирования шины, которые могут помочь снизить мощность шины для большинства систем.

Следовательно, кодирование шины важно для проектирования любой электронной системы.

Примеры кодирования шины для достижения низкого энергопотребления

Ниже приведены некоторые реализации использования кодирования шины для снижения динамического энергопотребления в различных сценариях:

  1. Кодирование Грея : адресные линии шины в большинстве вычислительных систем увеличивают последовательные числовые значения из-за пространственной локальности . Если мы используем обычное двоичное кодирование для шины, мы не уверены в минимальном расстоянии Хэмминга между двумя последовательными адресами. Использование кодов Грея для кодирования адресных строк приведет к расстоянию Хэмминга 1 между любыми двумя последовательными значениями адресной шины (пока сохраняется пространственная локальность). Существуют вариации этой схемы, называемые кодированием смещенного серого, чтобы уменьшить накладные расходы на задержку.
  2. Последовательная адресация или коды T0 : в случае адресной шины из-за пространственной локальности, которая существует в программах, большинство переходов включают изменение адреса на следующее последовательное значение. Возможная схема кодирования заключается в использовании дополнительной строки INC на шине, указывающей, является ли текущий переход адресом следующего приращения или нет. Если это не последовательный адрес, то получатель может использовать значение на шине. Но если это последовательный адрес, передатчику не нужно изменять значение на шине, а просто установить строку INC равной 1. В таком случае для схемы непрерывной адресации на шине нет никакого перехода, ведущего к коэффициент активности автобуса 0.
  3. Числовое представление : рассмотрим пример системы, которая получает одни из своих данных от датчика. В большинстве случаев датчик может измерять некоторый шум, и в этом примере учтите, что измеряемые значения равны (0) и (-1) поочередно. Для 32-битной шины данных значение 0 преобразуется в 0x00000000 (0000 0000 0000 0000 0000 0000 0000 0000), а (-1) преобразуется в 0xFFFFFFFF (1111 1111 1111 1111 1111 1111 1111 1111) в представлении с дополнением до 2. Мы видим, что расстояние Хэмминга в этом случае равно 32 (поскольку все 32-битные значения меняют свое состояние). Вместо этого, если мы закодируем шину для использования целочисленного представления со знаком (MSB - знаковый бит), мы можем представить 0 как 0x00000000 (0000 0000 0000 0000 0000 0000 0000 0000) и -1 как 0x80000001 (1000 0000 0000 0000 0000 0000 0000 0001) . В этом случае мы видим, что расстояние Хэмминга между числами равно 2. Следовательно, используя дополнение 2 к знаковой арифметической кодировке, мы можем снизить активность с 32 до 2 раз.
  4. Инверсионное кодирование : это еще одна реализация кодирования шины, в которой к линиям шины добавляется дополнительная линия с именем INV. В зависимости от значения строки INV, другие строки будут использоваться с инверсией или без нее. например, если строка INV равна 0, данные на шине выбираются как есть, но если строка INV равна 1, данные на шине инвертируются перед любой обработкой на ней. Ссылаясь на пример, использованный в 3, вместо использования целочисленного представления со знаком мы могли бы продолжить использование дополнения до 2 и добиться того же снижения активности, используя инверсионное кодирование. Таким образом, 0 будет представлен как 0x00000000 с INV = 0, а -1 будет представлен как 0x00000000 с INV = 1. Поскольку INV = 1, получатель инвертирует данные перед их использованием, тем самым преобразуя их в 0xFFFFFFFF внутренне. В этом случае только 1 бит (бит INV) изменяется по шине, что приводит к активности фактора 1. Как правило, при инверсионном кодировании кодировщик вычисляет расстояние Хэмминга между текущим значением и следующим значением и на основе этого определяет, будет ли использовать INV = 0 или INV = 1.
  5. Кодирование кэша значений : это еще одна форма кодирования шины, которая в основном используется для внешних (внешних) шин. Словарь (кэш значений) поддерживается как на стороне отправителя, так и на стороне получателя о некоторых из часто используемых шаблонов данных. Вместо того, чтобы каждый раз передавать шаблоны данных, отправитель просто переключает один бит, указывающий, какая запись из кеша значений будет использоваться на стороне получателя. Только для значений, которых нет в кэше значений, полные данные передаются по шине. Были различные модифицированные реализации этого метода с целью максимизировать количество совпадений для кеша значений, но основная идея остается той же.
  6. Также были предложены другие методы, такие как кодирование на основе секторов, варианты инверсионного кодирования. Были проведены работы по использованию кодировок шины, которые также снижают энергопотребление при утечке, а также уменьшают перекрестные помехи с минимальным влиянием на задержки тракта.

Другие примеры кодирования шины

Многие другие типы кодирования шины были разработаны по разным причинам:

  • улучшенная EMC: дифференциальная сигнализация, используемая во многих шинах, и более общий код постоянного веса, используемый в последовательном интерфейсе камеры MIPI C-PHY , более устойчивы к внешним помехам и излучают меньше помех другим устройствам.
  • мультиплексирование шины: многие ранние микропроцессоры и многие ранние микросхемы DRAM снизили затраты за счет использования мультиплексирования шины, вместо того, чтобы выделять вывод для каждого бита адреса и бита данных системной шины . Один подход повторно использует контакты шины адреса в разное время для контактов шины данных, подход, используемый обычным PCI . Другой подход повторно использует одни и те же контакты в разное время для верхней и нижней половины адресной шины, подход, используемый многими микросхемами динамической памяти с произвольным доступом , добавляя 2 контакта к шине управления - адрес строки. строб ( RAS ) и строб адреса столбца ( CAS ).

Метод реализации

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

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

Свойства функции кодирования

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

  1. Каждые данные, запускаемые по шине, должны иметь уникальное закодированное значение, и каждое закодированное значение должно уникально декодироваться в одно и то же исходное значение.
  2. Должна быть возможность кодирования и декодирования всех значений, которые могут быть сгенерированы источником.

Компромисс / анализ

  • В то время как добавление кодирования шины снижает коэффициент активности по шине и приводит к снижению динамической мощности, добавление кодеров и декодеров вокруг шины приводит к добавлению дополнительных схем в конструкцию, которые также потребляют определенное количество динамической мощности. Мы должны учитывать это при вычислении экономии энергии.
  • Дополнительная схема также увеличит мощность утечки конструкции / схемы / системы / SoC. Если базовый коэффициент активности системной шины не очень высок, кодирование шины может быть не очень жизнеспособным вариантом, поскольку оно снизит общее энергопотребление из-за более высокой мощности утечки.
  • Если синхронизация шины находится в критическом тракте данных, добавление дополнительных схем в тракт ухудшит тракт хронирования и может оказаться вредным. Этот анализ необходимо провести осторожно, чтобы определить, какую кодировку шины использовать.

Смотрите также

использованная литература

дальнейшее чтение