stringtranslate.com

Низкое количество контактов

Интерфейс с малым количеством выводов Чип Winbond
Модуль Trusted Platform Module , установленный на материнской плате и использующий шину LPC.

Шина Low Pin Count ( LPC ) — это компьютерная шина, используемая на IBM-совместимых персональных компьютерах для подключения устройств с низкой пропускной способностью к ЦП , таких как ПЗУ BIOS (ПЗУ BIOS было перенесено на шину последовательного периферийного интерфейса (SPI) в 2006 году). [1] ), «устаревшие» устройства ввода-вывода (интегрированные в Super I/O , встроенный контроллер , чип CPLD и/или IPMI ) и доверенный платформенный модуль (TPM). [2] «Устаревшие» устройства ввода-вывода обычно включают в себя последовательные и параллельные порты, клавиатуру PS/2 , мышь PS/2 и контроллер гибких дисков .

Большинство материнских плат ПК с шиной LPC имеют либо концентратор контроллера платформы (PCH), либо микросхему южного моста , которая действует как хост и управляет шиной LPC. Все остальные устройства, подключенные к физическим проводам шины LPC, являются периферийными устройствами.

Обзор

Схема, показывающая шину LPC, соединяющую южный мост, флэш-ПЗУ и микросхему Super I/O.

Шина LPC была представлена ​​компанией Intel в 1998 году в качестве программно-совместимой замены шины промышленной стандартной архитектуры (ISA). С точки зрения программного обеспечения он похож на ISA, хотя физически он совершенно другой. Шина ISA имеет 16-битную шину данных и 24-битную адресную шину, которую можно использовать как для 16-битных адресов портов ввода-вывода , так и для 24-битных адресов памяти; оба работают на частоте до 8,33  МГц . Шина LPC использует сильно мультиплексированную четырехбитную шину, работающую на четырехкратной тактовой частоте (33,3 МГц) для передачи адресов и данных с одинаковой производительностью.

Основное преимущество LPC заключается в том, что базовой шине требуется всего семь сигналов, что значительно сокращает количество выводов, необходимых на периферийных микросхемах. Интегральной схеме, использующей LPC, потребуется на 30–72 контакта меньше, чем ее эквиваленту ISA. Кроме того, маршрутизацию проще выполнить на современных материнских платах, которые часто бывают переполнены. Тактовая частота была выбрана такой же, как у PCI , чтобы еще больше упростить интеграцию. Кроме того, LPC предназначен для использования только в качестве шины материнской платы. Обычного стандартизированного разъема не существует, хотя Intel определяет один для использования с модулями отладки, [3] и доступно несколько дочерних плат периферии LPC , включая доверенные платформенные модули (TPM) с дочерней платой TPM, распиновка которых является собственностью поставщика материнской платы [ 2], а также карты POST для отображения диагностических кодов BIOS и собственные карты, такие как RS-232 и устройства с параллельным портом для промышленного использования. [4] Обнаружение устройств не поддерживается; поскольку подключены только устройства материнской платы или определенные модели TPM, образ прошивки хоста (BIOS, UEFI ) будет включать статическое описание любых устройств и их адресов ввода-вывода, которые, как ожидается, будут присутствовать на конкретной материнской плате.

Сигналы

Спецификация LPC определяет семь обязательных сигналов, необходимых для двунаправленной передачи данных:

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

Сроки и производительность

Шина LPC заимствует свои электрические соглашения от обычных PCI . В частности, он разделяет ограничение, заключающееся в том, что для «разворота» любого сигнала шины требуется два цикла простоя, чтобы «разговаривало» другое устройство. В первом автобус активно едет высоко. Во втором случае шина не приводится в действие и удерживается на высоком уровне с помощью подтягивающих резисторов. Новое устройство может начать отправлять данные по шине на третьем цикле. Операции LPC тратят значительную часть своего времени на такие ремонты.

Как уже упоминалось, шина LPC спроектирована так, чтобы иметь производительность, аналогичную шине ISA. Точная скорость передачи данных зависит от типа выполняемого доступа к шине (ввод-вывод, память, DMA , встроенное ПО ), а также от скорости хоста и устройства LPC. Все циклы шины тратят большую часть своего времени на накладные расходы, а не на передачу данных, за исключением 128-байтового цикла чтения прошивки, в котором 256 из 273 тактов, потребляемых этим циклом, фактически используются для передачи данных, чтобы получить пропускную способность 15,63 МБ. /с. [6] Следующий самый быстрый цикл шины, 32-битный цикл записи DMA в стиле ISA, определенный в этом стандарте, может передавать данные со скоростью до 6,67 МБ/с, поскольку только 8 из 20 тактов, используемых в этом цикле шины, фактически передают данные. в то время как остальные циклы являются накладными. [6]

Один из самых медленных циклов шины — это простое чтение или запись в память, при котором только 2 из 17 тактов (плюс любые состояния ожидания, налагаемые устройством) передают данные со скоростью передачи 1,96 МБ/с.

Приложения

Intel разработала шину LPC таким образом, чтобы образ системной BIOS мог храниться в одной микросхеме флэш-памяти, напрямую подключенной к шине LPC. Intel также позволила размещать образы операционной системы и программные приложения на одном чипе флэш-памяти, напрямую подключенном к шине LPC, в качестве альтернативы порту Parallel ATA . [7]

CPLD или FPGA могут реализовывать хост или периферийное устройство LPC. [8]

Исходная игровая консоль Xbox имеет порт отладки LPC , который можно использовать для принудительной загрузки нового кода Xbox. [9] [10]

ISA-совместимая работа

Все транзакции шины LPC инициируются хостом, кратковременно переводящим LFRAME# в низкий уровень, по крайней мере, на один цикл. Во время последнего цикла с низким значением LFRAME# (называемым полем START) хост устанавливает LAD[3:0] на все нули, что указывает на то, что последует ISA-совместимая транзакция. [6] Во время первого цикла, когда LFRAME# снова высокий, хост управляет полем «тип/направление цикла» (CTDIR): три бита, обозначающие тип (ввод-вывод, память или DMA) и направление (чтение с устройства, или напишите на устройство) о последующей передаче. Обычно за ним следует поле адреса передачи. Размер адреса зависит от типа цикла:

ISA-совместимое чтение и запись

Доступ к памяти и вводу-выводу разрешен только как однобайтовый доступ.

При записи за адресом, описанным выше, следует поле данных: 8 бит передаются с младшим полубайтом первым за два цикла.

После этого хост передает шину устройству. Этот поворот занимает два цикла и работает так же, как обычные сигналы управления шиной PCI: в течение одного цикла хост подает на линии LAD высокий уровень (1111). Во время второго цикла хост перестает управлять линиями, хотя из-за подтягивающих резисторов они остаются высокими. Устройство может управлять линиями, начиная с третьего цикла.

После любого переключения устройства требуется минимум один цикл SYNC. Число является переменным, под контролем устройства, чтобы добавить столько состояний ожидания , сколько необходимо. Битовые комбинации 0101 и 0110 указывают, что циклы синхронизации будут продолжаться. Ожидание заканчивается, когда устройство передает по шине LAD комбинацию 0000 (готовность) или 1010 (ошибка) в течение одного цикла.

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

Затем устройство снова поворачивает шину к хосту (затрачивая еще два цикла), и передача завершается; хост может отправить поле START другой передачи в следующем цикле.

Если хост попытается выполнить передачу на неиспользуемый адрес, ни одно устройство не будет запускать циклы SYNC, и хост увидит 1111 на шине LAD. Увидев три цикла 1111 (в дополнение к двум циклам оборота разрешены два цикла, чтобы медленное устройство декодировало адрес и начало использовать шаблоны SYNC), хост прервет операцию.

ISA-совместимый DMA

Чип Platform Controller Hub (PCH) или чип южного моста действует как хост и управляет шиной LPC. Он также действует как центральный контроллер DMA для устройств на этой шине, если контроллер памяти находится в наборе микросхем. В процессорах, которые содержат собственные контроллеры памяти, контроллер DMA расположен в процессоре. Для совместимости с программным обеспечением, изначально написанным для систем с шиной ISA, контроллер DMA содержит схемы, эквивалентные «устаревшим» встроенным периферийным устройствам архитектуры IBM PC/AT , например, два программируемых контроллера прерываний , программируемый интервальный таймер и два ISA-контроллера. Контроллеры DMA , которые все участвуют в « DMA в стиле ISA ».

ISA-совместимый DMA использует совместимый с Intel 8237 контроллер DMA на хосте, который отслеживает расположение и длину буфера памяти, а также направление передачи. Устройство просто запрашивает услугу по заданному номеру канала DMA, а хост выполняет доступ DMA по шине LPC.

Запросы DMA выполняются с использованием сигнала LDRQ# устройства. Обычно высокий уровень, устройство может указать переход на ISA-совместимой линии DRQ, отправив 6-битный запрос: нулевой стартовый бит, 3-битный номер канала DMA (первый наиболее значимый бит), один бит нового уровня запроса ( почти всегда 1, указывая, что запрошена передача DMA), и последний стоповый бит 1. Затем хост выполняет цикл DMA. Циклы DMA называются в зависимости от доступа к памяти, поэтому «чтение» — это передача из памяти в устройство, а «запись» — передача из устройства в память.

«Адрес» состоит из двух циклов: 3-битного номера канала и 1-битного указания количества терминалов (вывод TC шины ISA или выхода EOP# 8237), за которым следует 2-битный размер передачи.

По умолчанию каналы DMA 0–3 выполняют 8-битную передачу, а каналы 5–7 — 16-битную передачу; но расширение, специфичное для LPC, позволяет передавать 1, 2 или 4 байта по любому каналу. При выполнении многобайтовой передачи каждый байт имеет свое собственное поле SYNC, как описано ниже. Передачи DMA допускают дополнительное значение поля SYNC: шаблон 1001 указывает, что устройство готово к передаче текущего байта, а также желает передать больше байтов. Стандартный шаблон готовности 0000 указывает, что это последний байт.

Обычный шаблон готовности SYNC 0000 (или шаблон ошибки 1010) требует, чтобы хост остановил DMA после следующего байта, пока устройство не сделает еще один запрос DMA через сигнал LDRQ#. Шаблон 1001 указывает, что хост должен считать, что запрос DMA устройства все еще активен; хост продолжит передачу оставшихся байтов или начнет другую передачу, в зависимости от ситуации, без отдельного запроса через LDRQ#.

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

Сериализованные прерывания

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

Устройства могут синхронизироваться на первом этапе, поскольку хост может поддерживать низкий уровень линии только в течение двух или более тактов подряд: ни одно другое устройство не переводит ее в низкий уровень более чем на один такт. Хост распознает источники прерываний, наблюдая за линией и подсчитывая количество тактов: если он видит, что на линии SERIRQ устанавливается низкий уровень на восемнадцатом такте, то устанавливается IRQ 18/3=6.

Вышеупомянутый режим — непрерывный, в котором хост инициирует протокол. В тихом режиме устройство запрашивает прерывание, установив низкий уровень SERIRQ на такт. Затем хост продолжает поддерживать низкий уровень линии в течение остальных семи тактов. С этого момента протокол тот же. В обоих режимах количество тактов начального синхроимпульса может составлять от четырех до восьми.

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

Преимущество использования последовательных прерываний по сравнению с традиционным механизмом заключается в том, что необходима только одна строка SERIRQ (кроме тактового сигнала, который в любом случае присутствует), а не строка для каждого уровня прерывания.

Циклы LPC, отличные от ISA

Значения поля START, отличные от 0000, используются для обозначения различных несовместимых с ISA передач. [6] Поддерживаемые переводы:

СТАРТ = 1101, 1110
Чтение и запись памяти прошивки
Это позволяет прошивке (BIOS) располагаться за пределами обычного периферийного адресного пространства. Эти передачи аналогичны передачам, совместимым с ISA, за исключением того, что:
  • Поле CTDIR отсутствует; направление кодируется в поле START (1101 для чтения, 1110 для записи).
  • Поле выбора микросхемы длиной 4 бита позволяет выбрать один концентратор прошивки из многих. Например, второй концентратор прошивки можно использовать для хранения резервной копии BIOS на случай, если основной BIOS будет поврежден вредоносным ПО или плохой прошивкой.
  • Адрес составляет 28 бит. Сначала передается наиболее значимый полубайт.
  • За адресом следует поле размера. Поддерживаемые размеры чтения/записи — 1, 2 и 4 байта. Поддерживаемые размеры только для чтения — 16 или 128 байт.
  • Данные передаются одним непрерывным пакетом без состояний ожидания. Для всей передачи имеется только одно поле SYNC.
НАЧАЛО = 0010, 0011
Мастер автобуса DMA
До двух устройств на шине LPC могут запросить передачу ведущего устройства шины, используя сигнал LDRQ# для запроса использования зарезервированного канала DMA 4. В этом случае хост начнет передачу со специальным полем START со значением 0010 для ведущего устройства шины. 0 или 0011 для мастера шины 1, после чего сразу следуют два цикла переключения для передачи шины устройству, запрашивающему цикл DMA мастера шины. После циклов обработки передача происходит очень похоже на инициируемую хостом ISA-совместимую передачу с обратными ролями:
  • Устройство отправляет поле CTDIR длительностью один цикл (разрешены только типы передачи ввода-вывода и памяти).
  • Устройство отправляет адрес (16 или 32 бита, в зависимости от типа). Сначала передается наиболее значимый полубайт.
  • Устройство отправляет поле размера передачи за один цикл, кодируя 8, 16 или 32 бита.
  • В случае записи следуют данные. В отличие от циклов DMA, совместимых с ISA, данные передаются одним пакетом, без состояний ожидания.
  • Затем следуют два цикла обработки, в течение которых шина LAD возвращается хосту.
  • Вставляется поле SYNC переменной длины под управлением хоста.
  • В случае чтения следуют данные, предоставленные хостом.
  • Это отличается от управления 16-битной шиной ISA, поскольку для управления шиной LPC требуется 32-битный адрес памяти при выполнении передачи памяти, не используется канал DMA в стиле ISA и может поддерживаться 8, 16 или 32-битные передачи; в то время как управление 16-битной шиной ISA требует 24-битного адреса памяти при выполнении передачи памяти, требует использования канала DMA в стиле ISA и не может выполнять 32-битную передачу. [11]
СТАРТ = 1111
Прерывание транзакции
В любой момент, хотя обычно в ответ на ошибку устройства во время поля SYNC, хост может прервать текущую транзакцию, установив низкий уровень LFRAME#, не дожидаясь завершения текущей транзакции. Он должен удерживать его на низком уровне в течение как минимум 4 циклов, а затем вернуть его на высокий уровень со специальным значением поля START, равным 1111. Это выполняет мягкий сброс шины LPC и оставляет шину бездействующей до тех пор, пока не начнется следующая передача, снова установив низкий уровень LFRAME#. .
СТАРТ = 0101
Доступ к локальности TPM
Последние спецификации доверенного платформенного модуля определяют специальные циклы чтения TPM и циклы записи TPM, основанные на циклах чтения и записи ввода-вывода. [12] Эти циклы используют поле START с ранее зарезервированным значением 0101 и помещают 16-битное смещение адреса памяти в поле адреса. [12] Эти циклы используются при использовании функции определения местоположения TPM. [12]

Поддерживаемые периферийные устройства

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

Устройствам Super I/O и аудиоустройствам разрешено принимать циклы ввода/вывода, принимать сторонние циклы DMA в стиле ISA и генерировать мастер-циклы шины. Устройства памяти общего назначения, такие как энергонезависимая память BIOS и флэш-устройства LPC, могут принимать циклы памяти. Концентраторам прошивки разрешено принимать циклы памяти прошивки. Встроенным контроллерам разрешено принимать циклы ввода-вывода и генерировать циклы мастера шины. Некоторые циклы ISA, которые считались бесполезными для этих классов, были удалены. Они включают в себя двухбайтовые циклы памяти, инициируемые хостом, и двухбайтовые циклы ввода-вывода, инициируемые хостом. Эти удаленные типы передачи могут быть инициированы хостом на шинах ISA, но не на шинах LPC. Хосту придется моделировать двухбайтовые циклы, разделяя их на два однобайтовых цикла. Шина ISA имеет аналогичную концепцию, поскольку исходная 8-битная шина ISA требовала разделения 16-битных циклов. Таким образом, 16-битная шина ISA автоматически разделяет 16-битные циклы на 8-битные циклы в пользу 8-битных периферийных устройств ISA, если только устройство ISA, на которое нацелен 16-битный цикл памяти или цикла ввода-вывода, не выдаст сигнал, сообщающий шину, чтобы она могла принять запрошенную 16-битную передачу без помощи разветвителя цикла ISA. [11] Управление шиной в стиле ISA было заменено в шине LPC протоколом управления шиной, который вообще не полагается на контроллеры DMA в стиле ISA. Это было сделано для того, чтобы снять ограничение ISA на то, какой тип мастер-циклов шины разрешено инициировать устройству и на каком канале DMA. Циклы шины в стиле ISA, унаследованные LPC от ISA, представляют собой однобайтовые циклы шины ввода-вывода, инициируемые хостом, однобайтовые циклы памяти, инициируемые хостом, и одно- или двухбайтовые циклы DMA в стиле ISA, инициируемые хостом. . [6]

Однако были добавлены некоторые циклы шины, отличные от ISA. Циклы, которые были добавлены для повышения производительности устройств помимо концентраторов встроенного ПО, включают одно-, двух- и четырехбайтовые циклы памяти главной шины в стиле LPC; одно-, двух- и четырехбайтовые циклы ввода-вывода мастера шины; и 32-битный сторонний DMA, который соответствует всем ограничениям стороннего DMA в стиле ISA, за исключением того факта, что он может выполнять 32-битную передачу. Любое устройство, которому разрешено принимать традиционный DMA в стиле ISA, также может использовать этот 32-битный DMA в стиле ISA. Хост может инициировать 32-битные циклы DMA в стиле ISA, а периферийные устройства могут инициировать циклы мастера шины. Концентраторы встроенного ПО использовали циклы встроенного ПО, которые были разработаны специально для концентраторов встроенного ПО, чтобы адреса встроенного ПО и обычные адреса ввода-вывода, отображаемые в памяти, могли перекрываться без конфликтов. Чтение памяти прошивки может одновременно читать 1, 2, 4, 16 или 128 байт. Запись в память прошивки может записывать один, два или четыре байта одновременно. [6]

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

Рекомендации

  1. ^ https://images.slideplayer.com/26/8671671/slides/slide_5.jpg [ файл изображения с пустым URL-адресом ]
  2. ^ аб Йоханнес Винтер (2011). «Путеводитель для угонщика по автобусу LPC». tugraz.at . Проверено 19 декабря 2013 г.
  3. ^ https://web.archive.org/web/20170604011724/https://www.usbid.com/datasheets/usbid/2000/2000-q1/lpc_mod_spec72.pdf
  4. ^ https://www.dfi.com/product/index/349#спецификация
  5. ^ ab Поддержка сериализованных IRQ для систем PCI (версия 6.0; 1 сентября 1995 г.)
  6. ^ abcdefg «Спецификация интерфейса с малым количеством контактов чипсетов Intel» . www.intel.com . Интел. Архивировано из оригинала 14 февраля 2017 г.
  7. ^ Даган, Шэрон (3 мая 2002 г.). «Альтернативы флэш-памяти для шины с малым числом выводов (LPC)». ЭЭ Таймс .
  8. ^ «Контроллер шины LPC. Эталонный дизайн RD1049» . www.latticesemi.com . Решетка полупроводника. Архивировано из оригинала (PDF) 7 августа 2013 г.
  9. ^ Хуанг, Эндрю (2003). Взлом Xbox: введение в обратный инжиниринг. Нет крахмального пресса. стр. 48, 151. ISBN. 1-59327-029-1.
  10. ^ О. Тайс. «Модификация XBox». раздел «Реквизиты ЛПК».
  11. ^ ab Intel Corp. (25 апреля 2003 г.), «Глава 12: Шина ISA» (PDF) , Архитектура ПК для технических специалистов: уровень 1 , получено 27 января 2015 г.
  12. ^ abc «Спецификация профиля TPM (PTP) клиентской платформы TCG для ПК» (PDF) . Группа доверенных вычислений . 26 января 2015. С. 29, 123–124 . Проверено 5 октября 2016 г..

Внешние ссылки