¿Cómo diseña los procesadores / microprocesador [no es amplio]

2

Disculpas por este título vago, pero mi pregunta es un poco específica.

Tengo dos preocupaciones:

Durante mi clase de electrónica digital, me dijeron que el diseño del procesador se lleva primero en una placa FPGA y se verifica. Sólo entonces se finaliza. Para diseñar los procesadores en la placa FPGA, utiliza Verilog y VHDL, y luego deja que las herramientas hagan el trabajo pesado. Estas herramientas luego deducen o deducen un esquema / diseño de nuestro programa. Además, a la vez, otro equipo de ingenieros está ocupado programando bancos de pruebas y realizando verificación y simulación, etc.

Mi primera pregunta:

If you let the tools do the designing portion of your processor (or microprocessor), 
then wont it always infer the same circuit, or at least nearly same circuit 
for your processor ?

Por ejemplo, como uno de los ejercicios de laboratorio, tuvimos que programar una ALU de 4 bits en xilinx ISE en verilog. Mientras tengamos las mismas instrucciones / operaciones / funcionalidad para nuestra ALU, si dejamos que las herramientas diseñen la ALU, ¿no diseñará siempre el mismo circuito? Creo esto porque, en última instancia, en el nivel de transistores, una compuerta AND (solo un ejemplo) siempre estará compuesta por, digamos, transistores de 5 meses (como se proporciona en la biblioteca de componentes). Además, la ALU siempre contendrá los mismos bloques / casi los mismos bloques como el sumador, el restador, etc. (En otras palabras, se deducirá el mismo diseño).

Mi segunda pregunta:

If I am correct above ( which obviously I doubt ), then how would the designs differ ? 
In other words, where lies the role of a human / engineer if everything is 
done by the tools .

Como otro ejemplo, Intel produce procesadores. Si por el momento asumimos que producen en 28 nm, y continuaremos haciéndolo durante otros 5 años (solo un ejemplo). Entonces, ¿cómo es posible que produzcan procesadores rápidos cada año? Estoy confundido porque al final del día, la propia Intel obviamente utilizará este tipo de herramientas (verilog / vhdl) para diseñar sus chips. Por lo tanto, siempre que tengan una funcionalidad que no cambie, siempre deben tener el mismo diseño.

Comprende que esta no es una pregunta amplia. Se enfoca en los aspectos de automatización / diseño utilizando solo herramientas. Tampoco me preocupan los avances en conceptos de informática, como la introducción de tuberías, etc. que mejoraron el rendimiento. Solo me interesan los aspectos mencionados arriba.

Estoy preguntando esto porque estoy poco interesado en diseñar un pequeño microprocesador antes de mi graduación. Pero programar un par de líneas en Verilog / vhdl y dejar que las herramientas hagan el trabajo no parece que me emocione en absoluto.

Gracias.

    

5 respuestas

3
  

Si deja que las herramientas hagan la parte de diseño de su procesador (o microprocesador),   entonces, ¿no inferirá siempre el mismo circuito, o al menos casi el mismo circuito?   para tu procesador?

No. Hay varios detalles de bajo nivel que darán como resultado diferentes circuitos. Supongamos que diseñas un sumador. Realmente solo está diseñando la especificación funcional del sumador, ya sea en términos de alto nivel (por ejemplo, operador verilog "+") o en términos de nivel inferior, como puertas. Sin embargo, este diseño debe asignarse a los bloques o compuertas reales que implementarán el diseño. En un FPGA puede tener una macro-celda o una estructura de tabla de consulta (LUT) que se repite en una matriz a través del chip. Para un ASIC tienes puertas en bruto.

Como parte de esto, típicamente hay algún tipo de paso de "lugar y ruta" que mapeará los bloques funcionales en el diseño bidimensional de los recursos en el FPGA o ASIC. La colocación de un enrutamiento no es un algoritmo simple; entiendo que están "NP completos", ya que no existe un algoritmo de tiempo polinomial para encontrar el diseño y enrutamiento óptimos. Como parte típica de un diseño, especificará las restricciones de tiempo que deben cumplirse, y el lugar y la ruta intentarán operar para que se cumplan estas restricciones. Debido a que el proceso no es exhaustivo (tomaría demasiado tiempo), normalmente se usa un valor "semilla" para determinar cómo comenzar, y luego se busca una solución que esté cerca de donde debe estar. Diferentes semillas producirán diferentes diseños con las mismas características funcionales pero (generalmente, ligeramente) diferentes temporizaciones.

  

Si estoy en lo cierto anteriormente (lo cual obviamente dudo), ¿en qué diferirán los diseños?   En otras palabras, ¿dónde está el papel de un humano / ingeniero si todo está   Hecho por las herramientas.

Como han mencionado otras respuestas, el diseño funcional real no se realiza mediante las herramientas. Pero todavía hay espacio para la interacción humana con las herramientas para determinar el funcionamiento real. Además de especificar los requisitos de tiempo, a veces es necesario volver atrás y ajustar el diseño para satisfacer estos requisitos. Por ejemplo, las herramientas pueden identificar una ruta crítica que limita la frecuencia de reloj a la que se puede ejecutar el diseño. Esto podría ser más lento de lo que se desea, y la ingeniería tendría que retroceder y descubrir cómo cumplir con los plazos, como la canalización, la reducción del abanico de salida, etc.

    
respondido por el Michael
5

Creo que estás malinterpretando el "diseño" que hacen las herramientas cuando dices "deja que las herramientas hagan la parte de diseño de tu procesador".

En general, el diseño avanza desde una especificación de nivel superior hasta

  1. Arquitectura,
  2. diseño
  3. Implementación

Las herramientas son muy útiles en todas las etapas para la simulación y el modelado, pero realmente se desarrollan durante la implementación.

Por ejemplo: el diagrama a continuación muestra un bloque de nivel superior para un procesador ARM ( fuente ).

Unavezquetengasuespecificacióndenivelsuperior,deberádiseñarlaarquitectura.PuedemodelarloysimularloenVerilogoC++osulenguajedealtonivelfavoritoyllegaraalgocomoestodondehaagregadoALU,desplazador,etc.paraimplementarlasfuncionesrequeridasdelasespecificaciones:

Luego, en el nivel de diseño, diseñará bloques individuales en RTL Verilog (por ejemplo).

Una vez que esto simule OK. Puedes utilizar las herramientas para implementar el diseño. Por lo general, esto significa síntesis de RTL a biblioteca de células, colocación de las células, enrutamiento de las células, extracción de parásitos, análisis de tiempo, etc.

Las herramientas hacen mucho del trabajo pesado en la etapa de implementación pero no hacen el diseño.

Hace varios años, había herramientas para tomar diseños de nivel arquitectónico y sintetizarlos en RTL, pero no son herramientas comunes.

Debe decirse que las empresas proporcionan procesadores configurables como IP en su flujo de síntesis. Por ejemplo, Cores del procesador ARC de Synopsys Designware , donde la IP solo debe configurarse en tu diseño SOC.

    
respondido por el akellyirl
3

Si eliminas todas las cosas complicadas como las tuberías, entonces no, no es particularmente complicado y puedes hacer una CPU de 8 bits en unas pocas cientos de líneas de Verilog.

La segmentación, la predicción de bifurcaciones, la captación previa, el caché, etc. es lo que le da a los diseñadores los aumentos de velocidad y lo que consume el esfuerzo de desarrollo y el área de chips.

(Chip tapeout no está completamente automatizado de la misma manera que la compilación de software, por lo que pasar de Verilog a silicon implica bastante configurar y sugerir las herramientas para lograr buenos resultados a 28 nm. Especialmente cierre de tiempo.)

Editar: eche un vistazo a OpenCores en el diseño de OpenRisc, donde puede tener una idea de cuánto Verilog se requiere para un uso totalmente útil. diseño moderno.

    
respondido por el pjc50
1

Las herramientas convierten una especificación funcional en una implementación física. Y sí, si la especificación no cambia, entonces la implementación tampoco.

La parte de "ingeniería humana" viene con la especificación funcional en primer lugar. Los diferentes procesadores tienen una funcionalidad diferente, y algunas veces están diseñados para tener características especiales que admiten una clase particular de aplicaciones.

Incluso cuando la arquitectura básica está bien definida (como Intel x86), todavía hay variaciones en los detalles de bajo nivel, como instrucciones especializadas, y hay otras opciones dentro del chip con respecto al número de núcleos, cómo están interconectados, el número y el tamaño de los cachés, etc.

    
respondido por el Dave Tweed
0

También hay diseñadores de circuitos personalizados que rompen los bloques de la síntesis y los diseñan en el nivel de transistor / compuerta. Esto se hace normalmente para las rutas críticas.

    
respondido por el john

Lea otras preguntas en las etiquetas