La codificación de bus se refiere a la conversión/codificación de un dato a otro formato antes de enviarlo por el bus . Si bien la codificación de bus puede utilizarse para diversos fines, como reducir el número de pines, comprimir los datos a transmitir, reducir la diafonía entre líneas de bits, etc., es una de las técnicas más utilizadas en el diseño de sistemas para reducir el consumo de energía dinámica del bus del sistema . [ 1 ] [ 2 ] La codificación de bus tiene como objetivo reducir la distancia de Hamming entre dos valores consecutivos en el bus. Dado que la actividad es directamente proporcional a la distancia de Hamming , la codificación de bus resulta eficaz para reducir el factor de actividad general, disminuyendo así el consumo de energía dinámica del sistema.
En el contexto de este artículo, un sistema puede referirse a cualquier cosa en la que se transfieren datos de un elemento a otro a través de un bus (por ejemplo, un sistema en un chip (SoC), un sistema informático, un sistema integrado a bordo, etc.).
Motivación
El consumo de energía en los sistemas electrónicos es motivo de preocupación hoy en día por las siguientes razones:
- Dispositivos que funcionan con baterías : Debido a la omnipresencia de los dispositivos que funcionan con baterías y a la necesidad de maximizar la duración entre dos cargas consecutivas de la batería, es necesario que el sistema consuma la menor cantidad de energía posible.
- Restricciones ambientales : Para proteger el medio ambiente, necesitamos conservar la energía utilizable. Dado que el consumo energético de los sistemas electrónicos está aumentando drásticamente, minimizarlo es fundamental para la protección del medio ambiente.
- Disipación de potencia : Según la ley de Moore , los dispositivos semiconductores integran cada vez más transistores en áreas más pequeñas. Esto conlleva una mayor disipación de potencia por unidad de área, lo que complica y encarece el diseño del encapsulado y del sistema de refrigeración. Por lo tanto, se necesitan sistemas electrónicos de baja potencia para solucionar este problema.
La potencia dinámica disipada por un circuito electrónico es directamente proporcional al factor de actividad y a la capacitancia de carga, tal como se observa en la salida de la puerta lógica . En el caso de un bus, la capacitancia de carga suele ser alta, ya que el bus necesita conectarse a múltiples módulos y tener una mayor longitud de enrutamiento, y el factor de actividad también es alto. Debido al mayor valor de la capacitancia de carga y del factor de actividad, en un sistema típico, el consumo de energía del bus puede representar hasta el 50 % del consumo total de energía. La codificación del bus tiene como objetivo reducir esta energía disminuyendo la cantidad de actividad (número de conmutaciones) en las líneas del bus. Si bien el tipo de codificación de bus que se utilizará para un sistema en particular se puede determinar mejor cuando se conocen de antemano la aplicación objetivo y las restricciones ambientales del sistema, a continuación se describen algunas técnicas de codificación de bus que pueden ayudar a reducir la energía del bus para la mayoría de los sistemas.
Por lo tanto, la codificación del bus es importante para el diseño de cualquier sistema electrónico.
Ejemplos de codificación de bus para lograr bajo consumo de energía.
A continuación se presentan algunas implementaciones para utilizar la codificación de bus con el fin de reducir el consumo de energía dinámica en diferentes escenarios:
- Direccionamiento mediante código Gray : [ 3 ] Las líneas de dirección de un bus en la mayoría de los sistemas informáticos aumentan en valores numéricos consecutivos debido a la localidad espacial . Si utilizamos codificación binaria regular para el bus, no se garantiza una distancia de Hamming mínima entre dos direcciones consecutivas. El uso de códigos Gray para codificar las líneas de dirección dará como resultado una distancia de Hamming de 1 entre cualquier par de valores consecutivos del bus de direcciones (siempre que se cumpla la localidad espacial). Existen variaciones de este esquema denominadas codificación Gray desplazada para reducir la sobrecarga de retardo. [ 4 ]
- Direccionamiento secuencial o códigos T0 : [ 5 ] En el caso del bus de direcciones, debido a la localidad espacial que existe en los programas, la mayoría de las transiciones implican cambiar la dirección al siguiente valor consecutivo. Un posible esquema de codificación es usar una línea adicional, INC, en el bus que indique si la transición actual es la siguiente dirección incremental o no. Si no es una dirección consecutiva, el receptor puede usar el valor en el bus. Pero si es una dirección consecutiva, el transmisor no necesita cambiar el valor en el bus, sino simplemente activar la línea INC a 1. En tal caso, para un esquema de direccionamiento continuo, no hay ninguna transición en el bus, lo que lleva a un factor de actividad del bus de 0.
- Representación numérica : Consideremos un ejemplo de un sistema que obtiene uno de sus datos de un sensor. La mayoría de las veces, el sensor puede estar midiendo algún ruido y, para este ejemplo, consideremos que los valores que se miden son (0) y (-1) alternativamente. Para un bus de datos de 32 bits, el valor 0 se traduce a 0x00000000 (0000 0000 0000 0000 0000 0000 0000) mientras que (-1) se traduce a 0xFFFFFFFF (1111 1111 1111 1111 1111 1111 1111 1111) en una representación de complemento a dos. Vemos que la distancia de Hamming en este caso es 32 (ya que los 32 bits están cambiando su estado). En cambio, si codificamos el bus para usar la representación de enteros con signo (MSB es el bit de signo ), podemos representar 0 como 0x00000000 (0000 0000 0000 0000 0000 0000 0000) y -1 como 0x80000001 (1000 0000 0000 0000 0000 0000 0000 0001). En este caso, vemos que la distancia de Hamming entre los números es solo 2. Por lo tanto, al usar un complemento a dos a la codificación aritmética con signo, podemos reducir la actividad de un factor de 32 a 2.
- Codificación de inversión : [ 6 ] [ 7 ] Esta es otra implementación de codificación de bus donde se agrega una línea adicional llamada INV a las líneas del bus. Dependiendo del valor de la línea INV, las otras líneas se usarán con o sin inversión. Por ejemplo, si la línea INV es 0, los datos en el bus se muestrean tal cual, pero si la línea INV es 1, los datos en el bus se invierten antes de cualquier procesamiento. Haciendo referencia al ejemplo usado en 3, en lugar de usar una representación de entero con signo, podríamos continuar usando complemento a dos y lograr la misma reducción de actividad usando codificación de inversión. Entonces, 0 se representará como 0x00000000 con INV=0 y -1 se representará como 0x00000000 con INV=1. Como INV=1, el receptor invertirá los datos antes de consumirlos, convirtiéndolos así a 0xFFFFFFFF internamente. En este caso, solo se modifica 1 bit (bit INV) en el bus, lo que resulta en una actividad de factor 1. En general, en la codificación de inversión, el codificador calcula la distancia de Hamming entre el valor actual y el siguiente valor y, en función de ello, determina si debe usar INV=0 o INV=1.
- Codificación de caché de valores : [ 8 ] Esta es otra forma de codificación de bus, utilizada principalmente para buses externos (fuera del chip). Tanto en el emisor como en el receptor se mantiene un diccionario (caché de valores) sobre algunos de los patrones de datos compartidos comúnmente. En lugar de pasar los patrones de datos cada vez, el emisor simplemente cambia un bit indicando qué entrada de la caché de valores debe usarse en el receptor. Solo para los valores que no están presentes en la caché de valores, se envían los datos completos a través del bus. Ha habido varias implementaciones modificadas de esta técnica con la intención de maximizar los aciertos para la caché de valores, pero la idea subyacente es la misma. [ 9 ] [ 10 ]
- También se han propuesto otras técnicas como la codificación basada en sectores, [ 11 ] variaciones de la codificación de inversión. Se ha trabajado en el uso de codificaciones de bus que reducen el consumo de energía por fugas, además de disminuir la diafonía con un impacto mínimo en los retardos de ruta. [ 12 ] [ 13 ]
Otros ejemplos de codificación de bus
Se han desarrollado muchos otros tipos de codificación de bus por diversas razones:
- EMC mejorado: la señalización diferencial utilizada en muchos buses y el código de peso constante más general utilizado en la interfaz serial de cámara MIPI C-PHY [ 14 ] son más inmunes a la interferencia externa y emiten menos interferencia a otros dispositivos.
- Multiplexación de bus: Muchos microprocesadores y chips DRAM de la época redujeron costos al usar multiplexación de bus, en lugar de dedicar un pin a cada bit de dirección y bit de datos del bus del sistema . Un enfoque reutiliza los pines del bus de direcciones en diferentes momentos para los pines del bus de datos, [ 15 ] un enfoque utilizado por PCI convencional . Otro enfoque reutiliza los mismos pines en diferentes momentos para la mitad superior y para la mitad inferior del bus de direcciones, un enfoque utilizado por muchos chips de memoria de acceso aleatorio dinámico , agregando 2 pines al bus de control : un estroboscopio de dirección de fila ( RAS ) y el estroboscopio de dirección de columna ( CAS ).
Método de implementación
En el caso de los diseños SoC, los esquemas de codificación de bus se pueden implementar mejor en RTL instanciando codificadores y decodificadores dedicados sobre el bus. Otra forma de implementarlo es pasando una sugerencia a la herramienta de síntesis, ya sea como un rastro de la simulación [ 16 ] o utilizando pragmas de síntesis para definir el tipo de codificación necesaria.
A bordo, se puede instalar un pequeño circuito integrado de bajo consumo entre los módulos maestro y esclavo en el bus para implementar las funciones de codificación y decodificación.
Propiedades de la función de codificación
La función de codificación/decodificación del bus debe ser una biyección . Esto requiere esencialmente que la función de codificación posea el siguiente comportamiento: [ 3 ]
- Cada dato que se transmita por el bus debe tener un valor codificado único, y cada valor codificado debe decodificarse de forma única al mismo valor original.
- Debe ser posible codificar y decodificar todos los valores que pueda generar la fuente.
Análisis de compensaciones
- Si bien la incorporación de codificación de bus reduce el factor de actividad en el bus y disminuye la potencia dinámica, la adición de codificadores y decodificadores alrededor del bus implica la incorporación de circuitos adicionales al diseño, los cuales también consumen cierta cantidad de potencia dinámica. Debemos tener esto en cuenta al calcular el ahorro de energía.
- Los circuitos adicionales también aumentarán la potencia de fuga del diseño/circuito/sistema/SoC. Si el factor de actividad base del bus del sistema no es muy alto, la codificación del bus podría no ser una opción viable, ya que degradaría el consumo energético general debido a una mayor potencia de fuga.
- Si la temporización del bus se encuentra en la ruta de datos crítica, la adición de circuitos adicionales en dicha ruta degradará la temporización y podría resultar perjudicial. Este análisis debe realizarse con cuidado para determinar qué tipo de codificación de bus utilizar.
Véase también
Referencias
- ↑ Pedram, Massoud; Abdollahi, A., Técnicas de síntesis de nivel RT de baja potencia: un tutorial (PDF)
- ↑ Devadas; Malik (1995), "Un estudio de las técnicas de optimización dirigidas a circuitos VLSI de baja potencia", DAC 32 : 242–247
- 1 2 Cheng, Wei-Chung; Pedram, Massoud, Codificación de bus de memoria para bajo consumo: un tutorial (PDF)
- ↑ Guo, Hui; Parameswaran, Sri (abril-junio de 2010). "Codificación Gray desplazada para reducir la conmutación del bus de direcciones de memoria de instrucciones para sistemas embebidos de bajo consumo". Journal of Systems Architecture . 56 ( 4–6 ): 180–190 . doi : 10.1016/j.sysarc.2010.03.003 .
- ↑ Benini, Luca; De Micheli, Giovanni; Macii, Enrico; Sciuto, D .; Silvano, C. (marzo de 1997). "Codificación de actividad de transición cero asintótica para buses de direcciones en sistemas basados en microprocesadores de baja potencia". Actas del Séptimo Simposio de los Grandes Lagos sobre VLSI : 77–82 .
- ↑ Stan, Mircea R.; Burleson, Wayne P. (marzo de 1995). "Codificación de inversión de bus para E/S de baja potencia". IEEE Transactions on Very Large Scale Integration (VLSI) Systems . 3 (1): 49– 58. Bibcode : 1995ITVL....3...49S . CiteSeerX 10.1.1.89.2154 . doi : 10.1109/92.365453 . 1063-8210/95$04.00.
- ↑ http://www.eng.auburn.edu/~agrawvd/COURSE/E6270_Fall07/PROJECT/JIANG/Low%20power%2032-bit%20bus%20with%20inversion%20encoding.ppt .
{{cite web}}: Falta o está vacío|title=( ayuda ) - ↑ Yang, J.; et al. (agosto de 2001). "Codificación FV para E/S de datos de baja potencia". Islped 2001 : 84–87 .
- ↑ Basu; et al. (2002). "Protocolo de potencia: reducción de la disipación de potencia en buses de datos fuera del chip". Micro .
- ↑ Lin, C.-H.; et al. (2006). "Codificación de caché de valores jerárquica para bus de datos fuera del chip". ISLPED .
- ↑ Aghaghiri, Yazdan; Fallah, Farzan; Pedram, Massoud. "Reducción de transiciones en buses de memoria mediante técnicas de codificación basadas en sectores" (PDF) .
- ↑ Deogun, H.; Rao, R.; Sylvester, D.; Blaauw, D. (junio de 2004). "Codificación de bus con conciencia de fugas y diafonía para la reducción total de potencia". Actas de la 41.ª Conferencia de Automatización del Diseño : 779–782 .
- ↑ Khan, Z.; Arslan, T.; Erdogan, A. (enero de 2005). "Un nuevo esquema de codificación de bus desde la perspectiva de la eficiencia energética y de diafonía para sistemas SoC genéricos basados en AMBA". Actas de la 18.ª Conferencia Internacional sobre Diseño VLSI : 751–756 .
- ↑ "Desmitificando el subsistema MIPI C-PHY / DPHY: ventajas, desventajas, desafíos y adopción" ( enlace alternativo )
- ↑ Don Lancaster. "Libro de cocina para máquinas de escribir en televisión" . ( Máquina de escribir en televisión ). Sección "Organización del autobús". pág. 82.
- ↑ Benini, Luca; De Micheli, Giovanni; Macii, Enrico; Poncino, Massimo; Quer, Stefano (diciembre de 1998). "Optimización de potencia de sistemas basados en núcleos mediante codificación de bus de direcciones" (PDF) . IEEE Transactions on Very Large Scale Integration (VLSI) Systems . 6 (4): 554. Bibcode : 1998ITVL....6..554B . doi : 10.1109/92.736127 .
Lecturas adicionales
- Su, Ching-Long; Tsui, Chi-Ying; Despain, Alvin M. (1994). Diseño de arquitectura de bajo consumo y técnicas de compilación para procesadores de alto rendimiento (PDF) (Informe). Laboratorio de Arquitectura Avanzada de Computadoras. ACAL-TR-94-01.
- electrónica digital
- Optimización electrónica