Кодирование шины
Кодирование шины означает преобразование/кодирование части данных в другую форму перед запуском на шине . Хотя кодирование шины можно использовать для различных целей, таких как уменьшение количества выводов, сжатие передаваемых данных, уменьшение перекрестных помех между битовыми линиями и т. д., это один из популярных методов, используемых при проектировании систем для снижения динамической мощности. потребляется системной шиной . [1] [2] Кодирование шины направлено на уменьшение расстояния Хэмминга между двумя последовательными значениями на шине. Поскольку активность прямо пропорциональна расстоянию Хэмминга , кодирование шины оказывается эффективным для снижения общего коэффициента активности, тем самым снижая динамическое энергопотребление в системе.
В контексте этой статьи под системой может подразумеваться что угодно, где данные передаются от одного элемента к другому по шине (а именно: система на кристалле (SoC), компьютерная система, встроенная система на борту и т. д.).
Мотивация
[ редактировать ]Потребление энергии в электронных системах сегодня является предметом беспокойства по следующим причинам:
- Устройства с батарейным питанием : из-за повсеместного распространения устройств с батарейным питанием и необходимости максимизировать продолжительность между двумя последующими зарядками аккумулятора, необходимо, чтобы система потребляла как можно меньше мощности (и энергии).
- Экологические ограничения : Чтобы защитить окружающую среду, нам необходимо экономить полезную энергию. Поскольку потребление энергии электронными системами резко возрастает, минимизация энергопотребления электронных систем имеет решающее значение для сохранения окружающей среды.
- Рассеяние мощности : Согласно закону Мура , полупроводниковые устройства содержат все больше и больше транзисторов на меньшей площади. Это приводит к более высокой рассеиваемой мощности на единицу площади и делает проектирование упаковки и системы термического охлаждения сложным и дорогостоящим. Следовательно, для решения этой проблемы необходимы электронные системы малой мощности.
Динамическая мощность, рассеиваемая электронной схемой, прямо пропорциональна коэффициенту активности и емкости нагрузки, как видно по выходному сигналу логического элемента. В случае шины емкость нагрузки обычно высока, поскольку шину необходимо подключать к нескольким модулям и прокладывать ее дольше, а коэффициент активности также высок. Из-за более высокого значения емкости нагрузки и коэффициента активности в типичной системе энергопотребление шины может составлять до 50% от общего энергопотребления. Кодирование шины направлено на снижение этой мощности за счет уменьшения активности (количества переключений) в линиях шины. Хотя тип кодирования шины, который будет использоваться для конкретной системы, лучше всего определить, когда целевое приложение и ограничения окружающей среды системы известны априорно, ниже описаны некоторые методы кодирования шины, которые могут помочь снизить мощность шины для большинства систем.
Следовательно, кодирование шины важно для проектирования любой электронной системы. [ нужна ссылка ]
Примеры кодирования шины для достижения низкого энергопотребления
[ редактировать ]Ниже приведены некоторые реализации использования кодирования шины для снижения динамического энергопотребления в различных сценариях:
- Адресация по коду Грея : [3] Адресные строки шины в большинстве вычислительных систем увеличиваются в последовательных числовых значениях из-за пространственной локальности . Если мы используем обычное двоичное кодирование для шины, мы не уверены в минимальном расстоянии Хэмминга между двумя последовательными адресами. Использование кодов Грея для кодирования адресных строк приведет к тому, что расстояние Хэмминга будет равно 1 между любыми двумя последовательными значениями адресной шины (при условии сохранения пространственной локальности). Существуют варианты этой схемы, называемые кодированием Shifted Gray, для уменьшения накладных расходов на задержку. [4]
- Последовательная адресация или коды Т0 : [5] В случае адресной шины из-за существующей в программах пространственной локальности большинство переходов связано с изменением адреса на следующее последовательное значение. Возможная схема кодирования заключается в использовании дополнительной строки INC на шине, указывающей, является ли текущий переход следующим адресом приращения или нет. Если это не последовательный адрес, получатель может использовать значение на шине. Но если это последовательный адрес, передатчику не нужно менять значение на шине, а просто установить линию INC на 1. В таком случае для схемы непрерывной адресации переход на шине вообще отсутствует, что приводит к коэффициент активности автобуса равен 0.
- Числовое представление : рассмотрим пример системы, которая получает данные от датчика. В большинстве случаев датчик может измерять некоторый шум, и в этом примере предположим, что измеряемые значения попеременно равны (0) и (-1). Для 32-битной шины данных значение 0 преобразуется в 0x00000000 (0000 0000 0000 0000 0000 0000 0000 0000), а (-1) преобразуется в 0xFFFFFFFF (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.
- Инверсное кодирование : [6] [7] Это еще одна реализация кодирования шины, в которой к линиям шины добавляется дополнительная строка с именем 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.
- Кодировка кэша значений : [8] Это еще одна форма кодирования шины, в основном используемая для внешних (внечиповых) шин. Словарь . (кэш значений) поддерживается как на стороне отправителя, так и на стороне получателя для некоторых часто используемых шаблонов данных Вместо того, чтобы каждый раз передавать шаблоны данных, отправитель просто переключает один бит, указывающий, какую запись из кэша значений следует использовать на стороне получателя. Только для значений, которых нет в кэше значений, полные данные передаются по шине. Были различные модифицированные реализации этого метода с целью максимизировать количество попаданий в кэш значений, но основная идея та же самая. [9] [10]
- Другие методы , такие как секторное кодирование, [11] Также были предложены варианты инверсионного кодирования. Была проведена работа по использованию кодирования шины, которое снижает энергопотребление утечки, а также уменьшает перекрестные помехи с минимальным влиянием на задержки на пути. [12] [13]
Другие примеры кодирования шины
[ редактировать ]Многие другие типы кодирования шины были разработаны по ряду причин:
- улучшенная ЭМС: дифференциальная сигнализация, используемая во многих шинах, и более общий код постоянного веса, MIPI C-PHY. используемый в последовательном интерфейсе камеры [14] они более невосприимчивы к внешним помехам и создают меньше помех другим устройствам.
- Мультиплексирование шины: многие ранние микропроцессоры и многие ранние микросхемы DRAM снижали затраты за счет использования мультиплексирования шины вместо выделения вывода для каждого бита адреса и бита данных системной шины . Один из подходов повторно использует контакты адресной шины в разное время для контактов шины данных. [15] подход, используемый обычным PCI . Другой подход повторно использует одни и те же контакты в разное время для верхней половины и нижней половины адресной шины, подход, используемый многими микросхемами динамической памяти с произвольным доступом , добавляя 2 контакта к шине управления - адрес строки. строб ( RAS ) и строб адреса столбца ( CAS ).
Метод реализации
[ редактировать ]В случае конструкций SoC схемы кодирования шины лучше всего реализовать в RTL путем создания экземпляров выделенных кодеров и декодеров по шине. Другой способ реализовать это — передать подсказку инструменту синтеза либо в виде следа моделирования. [16] или с помощью прагмы синтеза, чтобы определить тип необходимого кодирования.
На плате между главным и подчиненным модулями на шине можно установить небольшую микросхему с низким энергопотреблением для реализации функций кодирования и декодирования.
Свойства функции кодирования
[ редактировать ]Функция кодирования/декодирования шины должна быть биекцией . По сути, это требует, чтобы функция кодирования имела следующее поведение: [3]
- Каждые данные, передаваемые по шине, должны иметь уникальное закодированное значение, и каждое закодированное значение должно однозначно декодироваться в одно и то же исходное значение.
- Должна быть возможность кодировать и декодировать все значения, которые могут быть сгенерированы источником.
Компромисс/анализ
[ редактировать ]- Хотя добавление кодирования шины снижает коэффициент активности по шине и приводит к снижению динамической мощности, добавление кодеров и декодеров вокруг шины приводит к добавлению в конструкцию дополнительных схем, которые также потребляют определенное количество динамической мощности. Мы должны учитывать это при расчете экономии энергии.
- Дополнительная схема также увеличит мощность утечки конструкции/схемы/системы/SoC. Если базовый коэффициент активности системной шины не очень высок, кодирование шины может быть не очень целесообразным вариантом, поскольку оно приведет к снижению общего энергопотребления из-за более высокой мощности утечки.
- Если синхронизация шины находится на критическом пути передачи данных, добавление дополнительных схем в этот путь приведет к ухудшению качества пути синхронизации и может оказаться вредным. Этот анализ необходимо провести тщательно, чтобы определить, какой тип кодирования шины использовать.
См. также
[ редактировать ]- Адресация по коду Грея
- Рассеяние мощности
- Электроника малой мощности
- Удаление глюков
- Зеленые вычисления
Ссылки
[ редактировать ]- ^ Педрам, Массуд; Абдоллахи, А., Методы синтеза маломощного RT-уровня: учебное пособие (PDF)
- ^ Девадас; Малик (1995), «Обзор методов оптимизации, ориентированных на схемы СБИС малой мощности», DAC 32 : 242–247.
- ^ Jump up to: а б Ченг, Вэй-Чунг; Педрам, Массуд, Кодирование шины памяти для низкого энергопотребления: учебное пособие (PDF)
- ^ Го, Хуэй; Парамешваран, Шри (апрель – июнь 2010 г.). «Кодировка со сдвигом Грея для уменьшения переключения шины адреса памяти команд для встраиваемых систем с низким энергопотреблением». Журнал системной архитектуры . 56 (4–6): 180–190. дои : 10.1016/j.sysarc.2010.03.003 .
- ^ Бенини, Лука; Де Микели, Джованни; Масии, Энрико; Сьюто, Д .; Сильвано, К. (март 1997 г.). «Асимптотическое кодирование активности с нулевым переходом для адресных шин в маломощных микропроцессорных системах». Материалы седьмого симпозиума Великих озер по СБИС : 77–82.
- ^ Стэн, Мирча Р.; Берлесон, Уэйн П. (март 1995 г.). «Кодирование с инвертированием шины для ввода-вывода с низким энергопотреблением». Транзакции IEEE в системах очень большой интеграции (VLSI) . 3 (1): 49–58. CiteSeerX 10.1.1.89.2154 . дои : 10.1109/92.365453 . 1063-8210/95 04 доллара США.
- ^ http://www.eng.auburn.edu/~agrawvd/COURSE/E6270_Fall07/PROJECT/JIANG/Low%20power%2032-bit%20bus%20with%20inversion%20encoding.ppt .
{{cite web}}
: Отсутствует или пусто|title=
( помощь ) - ^ Ян, Дж.; и др. (август 2001 г.). «Кодирование FV для ввода-вывода данных с низким энергопотреблением». Ислпед 2001 : 84–87.
- ^ Басу; и др. (2002). «Протокол питания: уменьшение рассеиваемой мощности на шинах данных вне кристалла». Микро .
- ^ Лин, Ч.-Х.; и др. (2006). «Кодирование иерархического кэша значений для внекристальной шины данных». ИСЛПЕД .
- ^ Агагири, Яздан; Фаллах, Фарзан; Педрам, Массуд. «Сокращение переходов в шинах памяти с использованием методов секторного кодирования» (PDF) .
- ^ Деогун, Х.; Рао, Р.; Сильвестр, Д.; Блаау, Д. (июнь 2004 г.). «Кодирование шины с учетом утечек и перекрестных помех для общего снижения мощности». Материалы 41-й конференции по автоматизации проектирования : 779–782.
- ^ Хан, З.; Арслан Т.; Эрдоган, А. (январь 2005 г.). «Новая схема кодирования шины с точки зрения эффективности энергопотребления и перекрестных помех для универсальных систем SoC на базе AMBA». Материалы 18-й Международной конференции по проектированию СБИС : 751–756.
- ^ «Демистификация подсистемы MIPI C-PHY / DPHY - компромиссы, проблемы и внедрение» ( зеркало )
- ^ Дон Ланкастер. «Поваренная книга для телевизионной пишущей машинки» . ( ТВ-пишущая машинка ). Раздел «Организация автобусов». п. 82.
- ^ Бенини, Лука; Де Микели, Джованни; Масии, Энрико; Пончино, Массимо; Кер, Стефано (декабрь 1998 г.). «Оптимизация энергопотребления систем на базе ядра путем кодирования адресной шины» (PDF) . Транзакции IEEE в системах очень большой интеграции (VLSI) . 6 (4).
Дальнейшее чтение
[ редактировать ]- Су, Чинг-Лун; Цуй, Чи-Ин; Деспейн, Элвин М. (1994). Методы проектирования и компиляции архитектуры малой мощности для высокопроизводительных процессоров (PDF) (Отчет). Лаборатория передовой компьютерной архитектуры. АКАЛ-ТР-94-01.