stringtranslate.com

Número bajo de pines

Chip Winbond con interfaz de bajo número de pines
Módulo de plataforma confiable instalado en una placa base y que utiliza el bus LPC

El bus Low Pin Count ( LPC ) es un bus de computadora utilizado en computadoras personales compatibles con IBM para conectar dispositivos de bajo ancho de banda a la CPU , como la ROM del BIOS (la ROM del BIOS se trasladó al bus de Interfaz periférica en serie (SPI) en 2006 [1] ), dispositivos de E/S "heredados" (integrados en Super I/O , Embedded Controller , CPLD y/o chip IPMI ) y Trusted Platform Module (TPM). [2] Los dispositivos de E/S "heredados" generalmente incluyen puertos seriales y paralelos , teclado PS/2 , mouse PS/2 y controlador de disquete .

La mayoría de las placas base de PC con un bus LPC tienen un concentrador controlador de plataforma (PCH) o un chip de puente sur , que actúa como host y controla el bus LPC. Todos los demás dispositivos conectados a los cables físicos del bus LPC son periféricos.

Descripción general

Un diagrama que muestra el bus LPC que conecta el puente sur, la ROM flash y el chip Super I/O

El bus LPC fue introducido por Intel en 1998 como un sustituto compatible con software para el bus de la Arquitectura Estándar de la Industria (ISA). Se parece a ISA para el software, aunque físicamente es bastante diferente. El bus ISA tiene un bus de datos de 16 bits y un bus de direcciones de 24 bits que se pueden usar tanto para direcciones de puerto de E/S de 16 bits como para direcciones de memoria de 24 bits; ambos funcionan a velocidades de hasta 8,33  MHz . El bus LPC utiliza un bus de cuatro bits de ancho altamente multiplexado que funciona a cuatro veces la velocidad de reloj (33,3 MHz) para transferir direcciones y datos con un rendimiento similar.

La principal ventaja de LPC es que el bus básico requiere sólo siete señales, lo que reduce en gran medida la cantidad de pines necesarios en los chips periféricos. Un circuito integrado que utilice LPC necesitará entre 30 y 72 pines menos que su equivalente ISA. Esto también hace que el bus sea más fácil de enrutar en placas base modernas abarrotadas. La velocidad de reloj se eligió para que coincida con la de PCI con el fin de facilitar aún más la integración. Además, LPC está destinado a ser un bus exclusivo de la placa base; no hay un conector estandarizado de uso común, aunque Intel define uno para su uso con módulos de depuración. [3] Hay disponible una pequeña cantidad de placas hijas periféricas LPC , con asignaciones de pines propias del proveedor de la placa base: módulos de plataforma confiable (TPM), [2] tarjetas POST para mostrar códigos de diagnóstico de BIOS, [4] y periféricos de puerto serie compatibles con ISA para uso industrial. [5] No se admite el descubrimiento de dispositivos; dado que solo se conectan dispositivos de la placa base o modelos específicos de TPM, la imagen del firmware del host (BIOS, UEFI ) incluirá una descripción estática de todos los dispositivos y sus direcciones de E/S que se espera que estén presentes en una placa base en particular.

Señales

Las señales de control LPC son activas en nivel bajo , como lo indica el símbolo "#" en sus nombres. Las señales se dividen en tres categorías:

La especificación LPC define siete señales obligatorias necesarias para la transferencia de datos bidireccional:

Hay seis señales adicionales definidas, que son opcionales para los dispositivos LPC que no requieren su funcionalidad, pero el soporte para las dos primeras es obligatorio para el host:

Tiempo y rendimiento

El bus LPC deriva sus convenciones eléctricas de las del PCI convencional . En particular, comparte la restricción de que se requieren dos ciclos inactivos para "dar la vuelta" a cualquier señal de bus de modo que un dispositivo diferente "hable". En el primero, el bus se activa activamente. En el segundo, el bus no se activa y se mantiene alto mediante las resistencias pull-up. Un nuevo dispositivo puede comenzar a enviar datos a través del bus en el tercer ciclo. Las operaciones LPC dedican una gran fracción de su tiempo a realizar tales cambios.

Como se mencionó, el bus LPC está diseñado para tener un rendimiento similar al bus ISA. Las velocidades de transferencia de datos exactas dependen del tipo de acceso al bus (E/S, memoria, DMA , firmware ) realizado y de la velocidad del host y del dispositivo LPC. Todos los ciclos del bus pasan la mayor parte de su tiempo en sobrecarga en lugar de en transferencia de datos, excepto los ciclos de lectura de firmware de 16 y 128 bytes, que tienen 17 ciclos de sobrecarga pero 32 y 256 ciclos (respectivamente) de transferencia de datos, logrando rendimientos de10,88 y15,63  MB/s . [7] El siguiente ciclo de bus más rápido definido en el estándar, el ciclo de escritura DMA de estilo ISA de 32 bits, gasta solo 8 de los 20 ciclos de reloj totales transfiriendo datos (los otros 12 ciclos son de sobrecarga), logrando hasta 6,67 MB/s. [7]

Uno de los ciclos de bus más lentos es una simple lectura o escritura de memoria, donde solo 2 de los 17 ciclos de reloj (más cualquier estado de espera impuesto por el dispositivo) transfieren datos, para una velocidad de transferencia de 1,96 MB/s.

Estructura de la transacción

Las transacciones LPC comienzan en una transición de bajo a alto de LFRAME#. Mientras LFRAME# está en nivel bajo, el host coloca un código de INICIO de 4 bits en las líneas LAD. El código enviado en el último ciclo antes de que LFRAME# pase a nivel alto define la siguiente transacción de bus.

Normalmente, el host solo mantiene LFRAME# en nivel bajo durante un solo ciclo de reloj, para lograr eficiencia. Una excepción es la transacción de cancelación, que puede comenzar incluso en medio de otra operación. El host mantiene LFRAME# en nivel bajo durante un mínimo de cuatro ciclos de reloj, durante los cuales todos los dispositivos deben dejar de controlar el bus LAD. En el cuarto ciclo, el host mantiene LAD en nivel alto (a 1111). Tras la transición de nivel alto a nivel bajo de LFRAME#, el bus se restablece a un estado inactivo.

En casi todos los demás casos, las transacciones LPC utilizan la siguiente estructura general:

Las transferencias DMA difieren un poco. § El DMA compatible con ISA puede tener múltiples fases de sincronización y datos. § El DMA maestro de bus tiene un cambio de dirección de bus inmediatamente después del código de INICIO y no tiene cambio de dirección final.

La fase SYNC permite que el dispositivo inserte estados de espera en la transacción. Hay seis valores SYNC posibles, todos con paridad par ( peso Hamming par ). Tres de ellos finalizan la fase SYNC, mientras que los otros tres hacen que el host espere otro fragmento SYNC:

Aplicaciones

Intel diseñó el bus LPC de modo que la imagen del BIOS del sistema pudiera almacenarse en un único chip de memoria flash conectado directamente al bus LPC. Intel también hizo posible colocar imágenes del sistema operativo y aplicaciones de software en un único chip de memoria flash conectado directamente al bus LPC, como alternativa a un puerto ATA paralelo . [8]

Un CPLD o FPGA puede implementar un host o periférico LPC. [9]

La consola de juegos Xbox original tiene un puerto de depuración LPC que se puede usar para forzar a la Xbox a iniciar un nuevo código. [10] [11]

Funcionamiento compatible con ISA

Todas las transacciones de bus LPC compatibles con ISA utilizan el código START de 0000. [7] Durante el primer ciclo con LFRAME# alto nuevamente, el host controla un campo de "tipo/dirección de ciclo" (CTDIR): dos bits que indican el tipo (E/S, memoria o DMA) y un bit que indica la dirección (lectura desde el dispositivo o escritura en el dispositivo) de la transferencia a seguir. A esto le sigue el campo de dirección de transferencia, cuyo tamaño depende del tipo de ciclo:

Lecturas y escrituras compatibles con ISA

Los accesos a la memoria y a E/S se permiten solo como accesos de un solo byte y funcionan como se describe en § Estructura de la transacción: dirección, datos del host si se escribe, respuesta, SINCRONIZACIÓN, datos del dispositivo si se lee.

Si el host intenta una transferencia a una dirección no utilizada, ningún dispositivo controlará los ciclos SYNC y el host verá 1111 en el bus LAD. Después de ver tres ciclos de 1111 (se permiten dos ciclos, además de los dos ciclos de respuesta, para que un dispositivo lento decodifique la dirección y comience a controlar los patrones SYNC), el host abortará la operación.

DMA compatible con ISA

El chip PCH ( Platform Controller Hub ) o chip de puente sur actúa como host y controla el bus LPC. También actúa como el controlador DMA central para los dispositivos en ese bus si el controlador de memoria está en el chipset. En las CPU que contienen sus propios controladores de memoria, el controlador DMA se encuentra en la CPU. Para compatibilidad con el software escrito originalmente para sistemas con el bus ISA, el controlador DMA contiene los circuitos equivalentes de los periféricos integrados "heredados" de la arquitectura IBM PC/AT , como los dos controladores de interrupción programables , el temporizador de intervalo programable y dos controladores DMA ISA , que están todos involucrados en el " DMA de estilo ISA ".

El DMA compatible con ISA utiliza un controlador DMA compatible con Intel 8237 en el host, que realiza un seguimiento de la ubicación y la longitud del búfer de memoria, así como de la dirección de la transferencia. El dispositivo simplemente solicita servicio desde un número de canal DMA determinado y el host realiza un acceso DMA en el bus LPC.

La solicitud se realiza mediante una línea de solicitud DMA (DRQ) compatible con ISA virtual, que se emula utilizando la señal LDRQ# del dispositivo para indicar transiciones en la línea DRQ emulada. Esto se hace con solicitudes de 6 bits en la señal LDRQ#: un bit de inicio 0, el número de canal DMA de 3 bits (el bit más significativo primero), un bit de nuevo nivel de solicitud (casi siempre 1, lo que indica que se solicita una transferencia DMA) y un bit de detención final 1. El host responde realizando un ciclo DMA en la siguiente oportunidad disponible. Los ciclos DMA se nombran en función de la dirección de acceso a la memoria , por lo que una "lectura" es una transferencia al dispositivo LPC y una "escritura" es una transferencia desde el dispositivo LPC.

La "dirección" consta de 6 bits enviados como dos nibbles: un número de canal de 3 bits y una indicación de conteo de terminal de 1 bit (el pin TC del bus ISA o la salida EOP# del 8237), seguido de un tamaño de transferencia de 2 bits.

De manera predeterminada, los canales DMA 0 a 3 realizan transferencias de 8 bits y los canales 5 a 7 realizan transferencias de 16 bits; pero una extensión específica de LPC permite transferencias de 1, 2 o 4 bytes en cualquier canal. Cuando se realiza una transferencia de varios bytes, cada byte tiene su propio campo SYNC, como se describe a continuación.

Un patrón SYNC "listo" normal de 0000 (o un patrón de error de 1010) también provoca una anulación de la señal de solicitud DMA emulada correspondiente; el host detendrá el DMA después del byte inmediatamente siguiente hasta que el dispositivo realice otra solicitud DMA a través de la señal LDRQ#. Un patrón SYNC de 1001 indica que el host debe considerar que la solicitud DMA del dispositivo aún está activa; el host continuará con los bytes restantes en esta transferencia o iniciará otra transferencia, según corresponda, sin una solicitud separada a través de LDRQ#.

En el caso de una escritura DMA, en la que los datos se transfieren desde el dispositivo, el campo SYNC va seguido de los 8 bits de datos y otro campo SYNC, hasta que se alcanza la longitud especificada por el host para esta transferencia o el dispositivo detiene la transferencia. Un campo de respuesta de dos ciclos completa la transacción. En el caso de una lectura DMA, en la que los datos se transfieren al dispositivo, el campo SYNC va seguido de una respuesta y la secuencia datos-respuesta-sincronización-respuesta se repite para cada byte transferido.

Interrupciones serializadas

Las interrupciones se transmiten a través de una única línea SERIRQ compartida utilizando el protocolo "interrupciones serializadas para PCI" desarrollado originalmente para el bus PCI. [6] El host envía periódicamente paquetes de interrupción, dentro de los cuales a cada solicitud de interrupción se le asigna un intervalo de tiempo de 1 reloj, separado por 2 ciclos de respuesta de reloj. La sincronización inicial la realiza el host. A modo de ejemplo simplificado:

Los dispositivos pueden reconocer el comienzo de la trama porque solo el host activará la línea durante más de un ciclo. El host identifica la interrupción contando la cantidad de ciclos de reloj: si ve que la línea SERIRQ se activa en el decimoctavo reloj, se activa IRQ 18/3=6.

La cantidad de ranuras de interrupción es específica del sistema, siendo 17 un número típico: 16 interrupciones compatibles con ISA (IRQ0–IRQ15), más NMI .

Después del último espacio de interrupción, el host agrega una señal de "detención" que consta de dos o tres ciclos bajos seguidos de dos ciclos de respuesta.

En el modo "continuo", el host inicia periódicamente un nuevo paquete. También existe un modo "silencioso" en el que un dispositivo solicita un nuevo paquete activando SERIRQ en un nivel bajo durante un ciclo de reloj. Luego, el host continúa activando la línea en un nivel bajo durante los otros siete ciclos de reloj. A partir de este punto, el protocolo es el mismo.

El modo se controla mediante la longitud de la señal de detención del host al final de cada paquete. Si consta de tres relojes de señal baja, se aplica el modo continuo y solo el host puede comenzar un nuevo paquete. Si la señal de detención consta de dos relojes bajos, se aplica el modo silencioso y cualquier dispositivo puede iniciar un paquete de interrupción.

Transacciones no ISA de LPC

Los valores del campo START distintos de 0000 o 1111 se utilizan para indicar varias transferencias no compatibles con ISA. [7] Las transferencias admitidas son:

INICIO = 1101, 1110: Lectura y escritura de memoria de firmware

Esto permite que el firmware (BIOS) se ubique fuera del espacio de direcciones periférico habitual. Estas transferencias son similares a las transferencias compatibles con ISA, excepto que:

INICIO = 0010, 0011: DMA del bus maestro

Hasta dos dispositivos en un bus LPC pueden solicitar una transferencia de bus master utilizando la señal LDRQ# para solicitar el uso del canal DMA reservado 4. En este caso, el host comenzará una transferencia con un campo START especial de 0010 para bus master 0 o 0011 para bus master 1, seguido inmediatamente por dos ciclos de respuesta para entregar el bus al dispositivo que solicita el ciclo DMA de bus master. Después de los ciclos de respuesta, la transferencia se realiza de manera muy similar a una transferencia compatible con ISA iniciada por el host con los roles invertidos:

Esto difiere del dominio de bus ISA de 16 bits porque el dominio de bus LPC requiere una dirección de memoria de 32 bits cuando se realiza una transferencia de memoria, no utiliza un canal DMA de estilo ISA y puede admitir transferencias de 8, 16 o 32 bits; mientras que el dominio de bus ISA de 16 bits requiere una dirección de memoria de 24 bits cuando se realiza una transferencia de memoria, requiere el uso de un canal DMA de estilo ISA y no puede realizar transferencias de 32 bits. [12]

INICIO = 0101: Acceso a la localidad de TPM

Las especificaciones recientes del Módulo de Plataforma Confiable definen ciclos especiales de Lectura TPM y ciclos de Escritura TPM que se basan en los ciclos de Lectura E/S y Escritura E/S. [13] Estos ciclos utilizan un campo START con el valor anteriormente reservado de 0101, seguido de un nibble CTDIR y una dirección de E/S de 16 bits, al igual que una escritura compatible con ISA. [13] Estos ciclos se utilizan cuando se utiliza la función de localidad de un TPM. [13]

Periféricos compatibles

La especificación del bus LPC limita el tipo de periféricos que se pueden conectar a él. Solo permite dispositivos que pertenecen a las siguientes clases de dispositivos: dispositivos de E/S super, memoria BIOS no volátil , concentradores de firmware, dispositivos de audio y controladores integrados. Además, cada clase tiene restricciones sobre qué ciclos de bus se permiten para cada clase. [7]

Los dispositivos de E/S super y los dispositivos de audio pueden aceptar ciclos de E/S, aceptar ciclos DMA de terceros de estilo ISA y generar ciclos maestros de bus. Los dispositivos de memoria de aplicación genérica, como la memoria BIOS no volátil y los dispositivos flash LPC, pueden aceptar ciclos de memoria. Los concentradores de firmware pueden aceptar ciclos de memoria de firmware. Los controladores integrados pueden aceptar ciclos de E/S y generar ciclos maestros de bus. Se eliminaron algunos ciclos ISA que se consideraron no útiles para estas clases. Entre ellos se incluyen los ciclos de memoria de dos bytes iniciados por el host y los ciclos de E/S de dos bytes iniciados por el host. Estos tipos de transferencia eliminados podrían ser iniciados por el host en buses ISA, pero no en buses LPC. El host tendría que simular ciclos de dos bytes dividiéndolos en dos ciclos de un byte. El bus ISA tiene un concepto similar porque el bus ISA original de 8 bits requería que se dividieran los ciclos de 16 bits. Por lo tanto, el bus ISA de 16 bits dividió automáticamente los ciclos de 16 bits en ciclos de 8 bits para el beneficio de los periféricos ISA de 8 bits a menos que el dispositivo ISA al que se dirige un ciclo de E/S o de memoria de 16 bits emitiera una señal que le indicara al bus que podía aceptar la transferencia de 16 bits solicitada sin la asistencia de un divisor de ciclo ISA. [12] El dominio del bus de estilo ISA ha sido reemplazado en el bus LPC por un protocolo de dominio del bus que no depende en absoluto de los controladores DMA de estilo ISA. Esto se hizo para eliminar el límite de ISA sobre qué tipo de ciclos de dominio del bus puede iniciar un dispositivo en qué canal DMA. Los ciclos de bus de estilo ISA que LPC heredó de ISA son ciclos de bus de E/S iniciados por el host de un byte, ciclos de memoria iniciados por el host de un byte y ciclos DMA de estilo ISA iniciados por el host de uno o dos bytes. [7]

Sin embargo, se añadieron algunos ciclos de bus que no son ISA. Los ciclos que se añadieron para mejorar el rendimiento de los dispositivos además de los concentradores de firmware incluyen ciclos de memoria de bus master de uno, dos y cuatro bytes de estilo LPC; ciclos de E/S de bus master de uno, dos y cuatro bytes; y DMA de terceros de 32 bits que cumple con todas las restricciones del DMA de terceros de estilo ISA, excepto por el hecho de que puede realizar transferencias de 32 bits. Cualquier dispositivo al que se le permita aceptar DMA de estilo ISA tradicional también puede utilizar este DMA de estilo ISA de 32 bits. El host podría iniciar ciclos de DMA de estilo ISA de 32 bits, mientras que los periféricos podrían iniciar ciclos de bus master. Los concentradores de firmware consumían ciclos de firmware que estaban diseñados solo para concentradores de firmware, de modo que las direcciones de firmware y las direcciones de E/S mapeadas en memoria normales pudieran superponerse sin conflictos. Las lecturas de memoria de firmware podían leer 1, 2, 4, 16 o 128 bytes a la vez. Las escrituras de memoria de firmware podrían escribir uno, dos o cuatro bytes a la vez. [7]

Véase también

Referencias

  1. ^ Kovah, Xeno; Kallenberg, Corey; LegbaCore LLC (15 de octubre de 2015). SPI Flash (PDF) . Advanced x86: BIOS and system management mode internals. OpenSecurityTraining.info . pág. 5.
  2. ^ por Johannes Winter (2011). "Guía para secuestradores del autobús LPC". tugraz.at . Consultado el 19 de diciembre de 2013 .
  3. ^ Guía de diseño de módulos de depuración LPC instalables (PDF) (Especificación). Revisión 1.0. Intel . 2000. p. 15. Archivado desde el original (PDF) el 4 de junio de 2017.
  4. ^ "Lector de código POST del BIOS con Raspberry Pi Pico" . Consultado el 11 de septiembre de 2024 .
  5. ^ "Periféricos de placa base industriales: EXT-RS232". DFI . Consultado el 11 de septiembre de 2024 .
  6. ^ Compatibilidad con IRQ serializado para sistemas PCI (revisión 6.0; 1 de septiembre de 1995)
  7. ^ abcdefg "Especificación de interfaz de bajo conteo de pines (LPC) de Intel" (PDF) . Revisión 1.1. Intel . Agosto de 2002. Número de documento 251289-001. Archivado (PDF) desde el original el 2019-03-31 . Consultado el 2024-09-11 .
  8. ^ Dagan, Sharon (3 de mayo de 2002). "Alternativas de almacenamiento flash para el bus de bajo número de pines (LPC)". EE Times .
  9. ^ "Controlador de bus LPC. Diseño de referencia RD1049". www.latticesemi.com . Lattice Semiconductor. Archivado desde el original (PDF) el 2013-08-07.
  10. ^ Huang, Andrew (2003). Hackeando la Xbox: Una introducción a la ingeniería inversa. No Starch Press. pp. 48, 151. ISBN 1-59327-029-1.
  11. ^ O. Theis. "Modding de la XBox". Sección "Detalles del LPC".
  12. ^ de Intel Corp. (2003-04-25), "Capítulo 12: Bus ISA" (PDF) , Arquitectura de PC para técnicos: nivel 1 , consultado el 27 de enero de 2015
  13. ^ abc "TCG PC Client Platform TPM Profile (PTP) Specification" (PDF) . Trusted Computing Group . 26 de enero de 2015. págs. 29, 123–124 . Consultado el 5 de octubre de 2016 ..

Enlaces externos