Un nuevo lenguaje de programación facilita a los diseñadores de dispositivos móviles, considerar las funciones a implementar en el hardware y en el software

Imprimir PDF

De la misma manera que la potencia de cálculo pasó de ordenadores centrales a ordenadores personales en la década de los 80, ahora el movimiento va desde los ordenadores personales hasta los dispositivos portátiles. Pero esto llama a nuevas exigencias de los diseñadores de chips. Debido a que son dispositivos de mano a pilas, el ahorro de energía es una parte fundamental, y muchas tareas rutinarias que serían manejadas por el software en un PC en cambio se han delegado en procesadores de propósito específico que hacen sólo una cosa de manera muy eficiente. Al mismo tiempo, los dispositivos de mano son ahora tan versátiles que no todo puede ser cableado: Algunas funciones tienen que dejarse en manos del software.

Un diseñador de hardware que está creando un nuevo dispositivo tiene que decidir desde el principio que funciones se manejan en el hardware y cuales en el software. A mitad del proceso de diseño, sin embargo, puede quedar claro que algunas funciones asignadas al hardware funcionarían mucho mejor en software, o viceversa. En ese momento, el diseñador tiene dos opciones: o bien incurrir en los gastos - incluyendo retrasos en el tiempo - de la revisión de la mitad del desarrollo del diseño, o cargar en el mercado con un dispositivo defectuoso.

En la 17 ª Conferencia Internacional de la Asociación de Maquinaria de Computación, los investigadores de Ciencias de Computación del MIT y del Laboratorio de Inteligencia Artificial (CSAIL) presentará un nuevo sistema que permite a los diseñadores de hardware especificar, en un solo lenguaje de programación, todas las funciones que quieren que un dispositivo puedallevar a cabo. A partir de entonces podrán designar que funciones deben ejecutarse en el hardware y cuales en el software y el sistema automáticamente producirá las descripciones del circuito correspondiente y el código del ordenador. Revisando las designaciones y los circuitos y el código también. El sistema también determina la forma de conectar el hardware de propósito específico y el procesador de propósito general que ejecuta el software, y esto alerta a los diseñadores, si tratan de implementar en el hardware una función que sólo funciona en el software, o viceversa.

El nuevo sistema es una extensión del lenguaje de diseño de chips BlueSpec, cuyas bases teóricas fueron establecidas en la década de 1990 y principios de 2000 por el científico del MIT, Arvind, y los profesores de ingeniería eléctrica y ciencias informáticas Charles W. y Jennifer C. Johnson, y sus estudiantes. BlueSpec Inc., una compañía que Arvind co-fundó en 2003, convirtió el trabajo teórico en código comercial en funcionamiento.

Como Arvind explica, en la década de los 80, un ingeniero de diseño de un nuevo chip empezaría a través de dibujos de diseños de circuitos. "La gente dijo entonces: 'Esto es una locura'", dice Arvind. "¿Por qué no puedo escribir esta descripción textual?" Y de hecho, 1984 vio la primera iteración de Verilog, un lenguaje que permite a los diseñadores describir los componentes de un chip y que convierte automáticamente las descripciones en un circuito.

BlueSpec, a su vez, ofrece un mayor nivel de abstracción. En lugar de describir los circuitos, el diseñador especifica un conjunto de reglas que debe seguir el chip, y BlueSpec convierte esas especificaciones en el código Verilog. Para muchos diseñadores, esto resulta ser mucho más eficiente que preocuparse por los detalles de bajo nivel del trazado del circuito desde el principio. Por otra parte, BlueSpec a menudo puede encontrar atajos que un ingeniero humano podría pasar por alto, usando muchos menos componentes de los circuitos para poner en práctica un conjunto de reglas, y puede garantizar que el chip que resulta realmente hace lo que se pretende hacer.

Para el nuevo estudio, Arvind, y sus estudiantes de doctorado Myron Rey, y el  Nirav Dave (ahora un experto en informática en SRI International) amplió el conjunto de instrucciones BlueSpec para que pueda describir las operaciones más complejas que sólo son posibles en el software. También introdujeron un esquema de anotación, para que el programador pueda indicar que funciones se llevarán a cabo en el hardware y cuales en el software, y desarrollaron un nuevo compilador que traduce las funciones asignadas a hardware en Verilog y las asignadas a software en código C++.

Hoy en día, el Sr. King comenta: "si considero mi algoritmo sólo como un grupo de módulos que he enganchado entre sí de alguna manera, y quiero pasar uno de estos módulos a hardware, yo en realidad tengo que volver a implementarlo. Tengo que volver a escribirlo en un idioma diferente. Lo que estamos tratando de darle a la gente es un lenguaje en el que puedan describir el algoritmo una vez y luego jugar un poco con la forma en que el algoritmo se divide. "

El Sr.KIng reconoce que la semántica BlueSpec - que describe un algoritmo como un conjunto de reglas y no como una secuencia de instrucciones - "es un cambio radical en la forma en que la mayoría de la gente piensa sobre el software." Y, en efecto, entre los diseñadores de chips, Verilog es todavía mucho más popular que BlueSpec. "Pero es precisamente esta forma de pensar acerca de computación lo que te permite generar tanto hardware como software," dice King.