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

Low Pin Count шины или шины LPC , является компьютерная шина используется на IBM-совместимых персональных компьютерах для подключения устройств с низкой пропускной способностью к CPU , например, загрузочный диск , «устаревшие» устройства ввода / вывода (встроенный в Super I / O , встроенный контроллер или микросхема IPMI ) и Trusted Platform Module (TPM). [1] «Наследие» устройства ввода / вывода обычно включают в себя последовательные и параллельные порты, 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 задуман как шина только для материнской платы. Разъем не определен, и периферийные дочерние платы LPC недоступны, за исключением Trusted Platform Modules (TPM) с дочерней платой TPM, распиновка которой является собственностью производителя материнской платы [1] и плат POSTдля отображения диагностических кодов BIOS. Обнаружение устройств не поддерживается; поскольку подключены только устройства материнской платы или определенные модели TPM, образ микропрограммы хоста (BIOS, UEFI ) будет включать статическое описание любых устройств и их адресов ввода-вывода, которые должны присутствовать на конкретной материнской плате.

Сигналы [ править ]

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

  • LCLK : частота 33,3 МГц, предоставляется хостом. Может быть подключен к обычным часам PCI (PCICLK), поэтому не требуется выделенный вывод на хосте (южный мост).
  • LRESET # : сброс шины с активным низким уровнем. Может быть подключен к PCIRST #.
  • LFRAME # : Этот активный низкий сигнал указывает на начало транзакции шины LPC. Управляется только хозяином.
  • LAD [3: 0] : эти четыре двунаправленных сигнала несут мультиплексированный адрес, данные и другую информацию. Как и в предыдущих двух управляющих сигналах, эти сигналы имеют слабые подтягивающие резисторы , поэтому они останутся в состоянии «все единицы», если не будут активно управляться устройством.

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

  • LDRQ # : запрос мастера DMA / шины. Это выходной сигнал устройства, которое хочет выполнить прямой доступ к памяти либо через контроллер DMA, совместимый с Intel 8237 , либо через протокол ведущего устройства шины, специфичный для LPC. Хост должен предоставить один соответствующий входной контакт для каждого устройства, которое в нем нуждается (минимум два).
  • SERIRQ : серийный сигнал прерывания, совместимый с Intel 8259 . [2] Одна линия используется всеми устройствами LPC и хостом.
  • CLKRUN # : сигнал открытого коллектора, используемый для перезапуска часов в системах, которые могут останавливать их для управления питанием. Не требуется, если хост не останавливает часы. Может быть подключен к эквивалентному сигналу PCI.
  • LPME # : событие управления питанием с открытым коллектором, чтобы вывести систему из спящего режима. Эквивалентно сигналу PME # шины PCI.
  • LPCPD # : дополнительный вывод от хоста для предупреждения устройства LPC о том, что питание скоро будет отключено, и он не должен делать никаких прерываний или запросов DMA.
  • LSMI # : запрос прерывания управления системой . Это требуется только в том случае, если устройству LPC необходимо запустить SMI # в ответ на доступ к шине (например, для выполнения программной эмуляции отсутствующего периферийного оборудования). В противном случае для запроса SMI можно использовать более медленный протокол SERIRQ.

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

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

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

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

Приложения [ править ]

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

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

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

ISA-совместимая операция [ править ]

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

  • Для доступа ввода / вывода адрес составляет 16 бит, в течение 4 циклов первым передается старший полубайт.
  • Для доступа к системной памяти адрес составляет 32 бита, в течение 8 циклов первым передается старший полубайт.
  • Доступ к DMA в стиле ISA не имеет адреса как такового , но за два тактовых цикла передается полубайт, содержащий номер канала DMA, и второй полубайт, указывающий размер передачи. Адрес памяти программируется в контроллере DMA в стиле ISA в наборе микросхем или в ЦП вне шины LPC. См. Раздел о прямом доступе к памяти ниже.

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

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

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

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

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

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

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

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

ISA-совместимый DMA [ править ]

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

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

Запросы DMA выполняются с использованием сигнала устройства LDRQ #. Обычно высокий уровень, устройство может указать переход на ISA-совместимой линии DRQ, отправив 6-битный запрос: начальный бит 0, 3-битный номер канала DMA (старший бит первым), один бит нового уровня запроса ( почти всегда 1, что указывает на то, что запрошена передача DMA) и последний стоповый бит. Затем хост выполняет цикл 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 с помощью часов. Каждому запросу прерывания выделяется временной интервал, при этом начальная синхронизация выполняется хостом. [2] В качестве упрощенного примера:

  • Хост устанавливает низкий уровень на линии SERIRQ в течение восьми тактов, затем высокий уровень для другого, и позволяет шине плавать в течение последнего цикла обработки.
  • Если устройству необходимо запросить IRQ №6, оно ждет 6 × 3 = 18 тактов, затем устанавливает низкий уровень SERIRQ для одного тактового сигнала и высокий для другого.

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

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

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

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

Циклы LPC без ISA [ править ]

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

СТАРТ = 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-битная передача. [8]
СТАРТ = 1111
Прерывание транзакции
В любое время, хотя обычно в ответ на ошибку устройства во время поля SYNC, хост может прервать текущую транзакцию, установив LFRAME # в низкий уровень, не дожидаясь завершения текущей транзакции. Он должен удерживать его на низком уровне не менее 4 циклов, а затем вернуть его на высокий уровень с помощью специального значения поля START 1111. Это выполняет мягкий сброс шины LPC и оставляет шину в состоянии ожидания до тех пор, пока не будет начата следующая передача, снова установив LFRAME # на низкий уровень. .
СТАРТ = 0101
Доступ к местоположению TPM
Последние спецификации Trusted Platform Module определяют специальные циклы TPM-Read и TPM-Write, которые основаны на циклах ввода-вывода и записи ввода-вывода. [9] Эти циклы используют поле START с ранее зарезервированным значением 0101 и помещают 16-битное смещение адреса памяти в поле адреса. [9] Эти циклы используются при использовании средства определения местоположения TPM. [9]

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

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

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

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

См. Также [ править ]

  • Список битрейтов интерфейса
  • Устаревшие Plug and Play
  • Дополнительное ПЗУ
  • Последовательный периферийный интерфейс
  • Шина последовательного периферийного интерфейса § Шина усовершенствованного последовательного периферийного интерфейса Intel (eSPI), преемница шины LPC.

Ссылки [ править ]

  1. ^ a b Йоханнес Винтер (2011). «Руководство угонщика к автобусу LPC» . tugraz.at . Проверено 19 декабря 2013 .
  2. ^ a b Поддержка сериализованных IRQ для систем PCI (версия 6.0; 1 сентября 1995 г.)
  3. ^ a b c d e f g «Спецификация интерфейса с низким числом выводов для набора микросхем Intel» . www.intel.com . Intel. Архивировано 14 февраля 2017 года.
  4. ^ Даган, Шарон (2002-05-03). «Альтернативы флэш-памяти для шины с малым числом выводов (LPC)» . EE Times .
  5. ^ «Контроллер шины LPC. Эталонный дизайн RD1049» . www.latticesemi.com . Решетчатый полупроводник. Архивировано из оригинального (PDF) 07 августа 2013 года.
  6. ^ Хуанг, Эндрю (2003). Взлом Xbox: Введение в обратный инжиниринг . С. 48, 151. ISBN 1-59327-029-1.
  7. ^ О. Тайс. «Модификация XBox» . раздел «Детали ЛКП».
  8. ^ a b Intel Corp. (2003-04-25), «Глава 12: ISA Bus» (PDF) , Архитектура ПК для технических специалистов: Уровень 1 , получено 27 января 2015 г.
  9. ^ a b c «Спецификация профиля TPM (PTP) клиентской платформы TCG для ПК» (PDF) . Trusted Computing Group . 26 января 2015. С. 29, 123–124 . Проверено 5 октября, 2016 . .

Внешние ссылки [ править ]

  • Поддержка Serialized IRQ для систем PCI, используемых шиной LPC
  • Хост LPC с открытым исходным кодом и периферийные ядра