13 votos

De C a de Silicio: Cómo implementar el software/firmware de la solución de hardware?

A la luz de esta pregunta, me preguntaba si no era bastante estándar, un proceso para convertir una solución de software en un hardware de implementación. Perdonar yo y mi imaginación, pero ¿habrá un compilador que podría tener un programa en C y compilarlo en términos de un esquema de transistores, resistencias, etc. o tal vez incluso conocidos los PCBs?

Me doy cuenta de que yo podría estar buscando en este escenario desde el punto equivocado. Históricamente, desde mi propia experiencia, normalmente usted tiene alguna pieza de hardware que alguien se ha implementado como una solución de software (creo emulación de hardware). ¿Este concepto en sentido inverso siquiera existen? ¿Cómo estas grandes empresas hacen tales como software vs hardware de enrutamiento IP?

7voto

Morris Maynard Puntos 49

Lo más cercano sería Altera la C-a-Hardware (C2H) Compilador. Se puede hacer algo de lo que estás sugiriendo. Pero hay desafiante advertencias. Usted no puede girar a cualquier código C en hardware, ni desea. Pero las funciones específicas de trabajo bastante bien y se puede ver un aumento dramático en el rendimiento.

Normalmente, usted podría implementar un NIOS II softcore procesador en una FPGA de Altera. Entonces escribir algunos ANSI C código de como lo haría con cualquier otro procesador. Entonces decir que una de las funciones de C que has escrito implica unos pesados de matemáticas que beneficiaría en cuanto al rendimiento de algunas de ejecución en paralelo. Invocar el C2H compilador, decir "Implementar en Hardware", y que esencialmente se convierte en esa función en un periférico de los NIOS II softcore procesador.

He aquí un ejemplo de codificación de un Mandelbrot computación en ANSI C y luego en la implementación en hardware:

El C2H compilador acelerado de Mandelbrot resultados del algoritmo en una velocidad mejora de al menos 60 veces en comparación con el mismo algoritmo que se ejecuta en la forma más rápida de Nios II del procesador mediante la optimización del compilador de nivel 2 (-O2). Este aumento de velocidad es porque el paralelismo y rápido las velocidades de iteración que el hardware puede ofrecer, que no son posibles a partir de un propósito general de la unidad de procesamiento.

Volviendo a tu ejemplo, el NIOS II procesador puede ejecutar Linux. Y ciertas funciones que sería necesario para realizar tareas de enrutamiento podrían beneficiarse de la aceleración por hardware. Lo más probable es que funcionan mejor que un puro software del router. Pero nunca se enfoque en el rendimiento de diseñado especialmente dedicado ASICs.

2voto

user13107 Puntos 313

Usted menciona "C a de Silicio" en el título y la mención de la junta de los productos de nivel en el cuerpo. Voy a centrarme sólo en la parte de la ecuación que no existe -> "C a de Silicio" de los flujos de diseño. C en sí mismo no es un ajuste natural para la descripción de hardware como carece de algunas apoyo fundamental para el paralelismo inherente de hardware, la necesidad de evitar las condiciones de carrera y otros temas, y no es particularmente expresiva, en la que es capaz de representar estos conceptos. O no tanto como Verilog y VHDL.

Código C que es synthesizable (es decir, pueden ser prestados para una descripción de hardware) y aquí hardware = lógica digital, no ganar ningún tipo de codificación de los concursos juzgados por los desarrolladores de software.

Aquí está una lista de algunas notables abastecen a la C -> Silicio herramientas para el ASIC de flujo de la multitud.

  • Forte Cynthesizer

  • Mentor De La Catapulta

  • BlueSpec C

  • Synopsys Synphony (ex - Synfora)

  • La cadencia de C-a-Silicio

1voto

Brett Cline Puntos 11

Girando el software en el hardware no es totalmente una tarea trivial si usted espera razonable de hardware. Hardware tiende a necesitar más la arquitectura de administrar cuidadosamente el uso de los recursos a que se refiere al área/costo. Habiendo dicho eso, hay una serie de herramientas que tomar C en cierta forma, permiten agregar información específica del hardware (por ejemplo, ¿qué es la interfaz de hardware?), y generar hardware optimizado. Competente los usuarios pueden fácilmente obtener mejores resultados en menos tiempo que con la mano codificados RTL.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X