La entrada/salida de propósito general en serie (SGPIO) es un bus de cuatro señales (o cuatro cables) que se utiliza entre un adaptador de bus host (HBA) y una placa base . De las cuatro señales, tres son controladas por el HBA y una por la placa base. Normalmente, el HBA es un controlador de almacenamiento ubicado dentro de un servidor, computadora de escritorio, bastidor o estación de trabajo que interactúa con unidades de disco duro o unidades de estado sólido para almacenar y recuperar datos. Se considera una extensión del concepto de entrada/salida de propósito general (GPIO). – La especificación SGPIO es mantenida por el Comité de Factor de Forma Pequeño en el estándar SFF-8485 . La Interpretación Internacional de Patrón Parpadeante indica cómo las señales SGPIO se interpretan en diodos emisores de luz (LED) parpadeantes en matrices de discos y placas base de almacenamiento.
SGPIO fue desarrollado como una colaboración de ingeniería entre American Megatrends Inc, en ese momento fabricantes de placas base, y LSI-Logic en 2004. SGPIO fue posteriormente publicado por el comité SFF como especificación SFF-8485.
La señal SGPIO consta de 4 señales eléctricas; normalmente se origina en un adaptador de bus host (HBA). Los conectores iPass (normalmente SFF-8087 o SFF-8484) llevan conexiones eléctricas SAS/SATA entre el HBA y los discos duros, así como las 4 señales SGPIO.
Una placa base es una placa de circuitos con conectores y circuitos de alimentación en la que se conectan los discos duros; pueden tener varias ranuras, cada una de las cuales puede albergar un disco duro. Normalmente, la placa base está equipada con LED que, por su color y actividad, indican el estado de la ranura; normalmente, el LED de una ranura emitirá un color particular o un patrón de parpadeo para indicar su estado actual.
Aunque muchos proveedores de hardware definen su propio patrón de parpadeo de LED, el estándar común para la interpretación de SGPIO y el patrón de parpadeo de LED se puede encontrar en la especificación IBPI .
En las placas base, los proveedores suelen utilizar 2 o 3 LED por ranura; en ambas implementaciones, un LED verde indica presencia o actividad; para las placas base con 2 LED por ranura, el segundo LED indica estado, mientras que en las placas base con 3 LED, el segundo y el tercero indican localización y falla .
El bus SGPIO consta de 4 líneas de señal y se origina en el HBA, denominado iniciador , y termina en una placa base , denominada destino . Si no hay una placa base (o destino ), el HBA puede controlar el bus sin dañar el sistema; si existe, puede comunicarse con el HBA mediante el cuarto cable.
El bus SGPIO es un bus de colector abierto con resistencias pull-up de 2,0 kΩ ubicadas en el HBA y el plano posterior; como en cualquier bus de colector abierto, la información se transfiere mediante dispositivos en el bus que tiran de las líneas a tierra (GND) utilizando un transistor de colector abierto o un FET de drenaje abierto .
El bus SGPIO tiene una línea de reloj dedicada impulsada por el iniciador (su frecuencia de reloj máxima es 100 kHz), aunque muchas implementaciones utilizan frecuencias más lentas (normalmente 48 kHz).
Esta línea es sincrónica con el reloj y se utiliza para indicar el inicio de un nuevo marco de datos; un nuevo marco SGPIO se indica mediante SLoad siendo alto en un borde ascendente de un reloj después de haber sido bajo durante al menos 5 ciclos de reloj. Los siguientes 4 bordes descendentes del reloj después de una condición de inicio se utilizan para llevar un valor de 4 bits desde el HBA al back-plane; la definición de este valor es exclusiva y varía entre los proveedores del sistema.
Esta línea lleva 3 bits de datos desde el HBA hasta la placa base: el primer bit generalmente lleva actividad ; el segundo bit lleva localización ; y el tercer bit lleva falla . Un valor bajo para el primer bit indica que no hay actividad y un valor alto indica actividad .
Esta línea es utilizada por la placa base e indica alguna condición en la placa base de regreso al HBA. El primer bit que está alto generalmente indica la presencia de una unidad. Los dos bits siguientes normalmente no se utilizan y se ponen bajos. Debido a que esta línea estaría alta para los 3 bits cuando no hay una placa base conectada, un HBA puede detectar la presencia de una placa base mediante el segundo o tercer bit de SDataIn que se ponen bajos.
Luego, SDataIn y SdataOut se repiten con 3 relojes por unidad hasta que se llega a la última unidad y el ciclo comienza nuevamente.
Existen variedades en cómo se implementa el bus SGPIO entre los proveedores de HBAs y controladores de almacenamiento: algunos proveedores enviarán un flujo continuo de datos que resulta ventajoso para actualizar rápidamente los LED en una placa base después de que se quitan y vuelven a insertar los cables, mientras que otros envían datos solo cuando es necesario actualizar el patrón de LED.
SGPIO y la especificación SGPIO se adoptan e implementan generalmente en productos de la mayoría de los principales proveedores de controladores de almacenamiento y HBA, como LSI , Intel , Adaptec , Nvidia , Broadcom , Marvell Technology Group y PMC-Sierra . La mayoría de los productos que se envían con compatibilidad con unidades SAS y SATA admiten este estándar.
La especificación SGPIO exige que el objetivo apague todos los indicadores cuando SClock, SLoad y SDataOut hayan estado en valores altos durante 64 ms; en la práctica, esto no es seguido de manera consistente por todos los proveedores. Además, en las implementaciones de algunos proveedores, el reloj puede detenerse esporádicamente o detenerse durante o entre ciclos. Otra variación (bastante poco práctica) entre proveedores es el estado en el que se deja el reloj después de un ciclo.
La idea detrás de esta especificación era poder usar CPLD de bajo costo o microcontroladores en una placa base para controlar LED; en la práctica, se ha descubierto que existen variaciones en la sincronización e interpretación de los bits entre proveedores, por lo que un CPLD simple solo funcionaría para una implementación específica probada a fondo con un producto de un proveedor. [ cita requerida ] Un microcontrolador es más aplicable para este propósito, aunque el bus personalizado de interfaz SGPIO de 4 bits no está implementado en ellos [ cita requerida ] - el muestreo de las líneas de 4 bits mediante operaciones de bits de 100 kHz de GPIO es demasiado lento [ aclaración necesaria ] para que muchos microcontroladores de bajo costo lo gestionen mientras manejan LED y otras funciones simultáneamente. La longitud del flujo de bits varía entre HBA o controlador de almacenamiento; algunos proveedores detendrán el flujo de bits cuando lleguen a la unidad deseada, mientras que otros lo sincronizarán hasta el final. Algunos flujos de bits de expansores SAS pueden tener una longitud de hasta 108 (36 × 3) bits.
La implementación más segura que garantiza la compatibilidad entre todos los proveedores de HBA y controladores de almacenamiento es utilizar un ASIC , específicamente, una combinación de un núcleo de microcontrolador con una interfaz SGPIO de hardware; este concepto fue patentado [ cita requerida ] en 2006 por AMI e implementado en una serie de chips controladores de placa base denominados MG9071, MG9072, MG9077 y MG9082.
Estos chips recibirán 1 o 2 flujos SGPIO y controlarán los LED en consecuencia; el último chip de AMI, el MG9077, se puede configurar mediante resistencias pull-up y pull-down para adoptar 16 configuraciones diferentes de buses SGPIO y controlar los LED en consecuencia. Desde que AMI puso a disposición estos chips, los principales fabricantes de equipos originales (OEM) , incluidos NEC , Hitachi , Supermicro , IBM , Sun Microsystems y otros, los están utilizando en sus placas base para recibir los flujos SGPIO de una variedad de proveedores de HBA y chips controladores integrados para controlar de manera constante los LED con un patrón de parpadeo predeterminado.