¿Cuánto conocimiento sobre circuito (o VLSI) se necesita para investigar en el campo de la arquitectura de computadoras?

Pido disculpas porque me ha llevado bastante tiempo responder. Tomé un “descanso Quora”.

En estos días, la arquitectura de la computadora es un tema amplio, por lo que no hay una respuesta única que se ajuste a todos los posibles temas de investigación. Al final, el objetivo de un arquitecto de computadoras es construir una máquina que funcione bien en la tarea en cuestión, con el hardware disponible para realizar esa tarea. (Y en realidad, hay más de un arquitecto involucrado en una computadora moderna).

Me considero un arquitecto de computadoras, en un equipo de arquitectos talentosos. Mi conocimiento de circuito de nivel más bajo se limita a los cursos básicos de VLSI, microelectrónica y circuitos que tomé como BSEE en la universidad, más lo que he leído a lo largo de los años, o que mis compañeros de trabajo me han enseñado. Conozco los conceptos básicos sobre cómo funcionan las puertas, los costos de propagación de señales, etc. Pero, no soy un experto allí. Por otro lado, pasé mucho tiempo aprendiendo cómo se construye el software, cómo funcionan realmente los compiladores y el código que se ejecuta en la máquina.

Un arquitecto necesita comprender los puntos sobresalientes de cada nivel de la pila, desde lenguajes de programación de alto nivel hasta transistores y cables. Eso no significa ser un experto en todos esos niveles, sino conocer las dinámicas e interacciones básicas y tener expertos disponibles para ayudarlo a hacer las llamadas difíciles.

Para el tema específico de investigación , especialmente la investigación académica , lo que necesita saber bien probablemente depende del tema de investigación. Por ejemplo, gran parte de la investigación fundamental sobre las máquinas VLIW ILP se produjo en la década de 1980, pero todavía es aplicable a los procesadores submicrónicos en la actualidad. Gran parte de la investigación involucró técnicas de compilación para identificar y extraer estáticamente el paralelismo de los programas, de modo que se pudieran construir máquinas simples de problemas paralelos que aún funcionaran bien.

No necesita muchos conocimientos de VLSI de bajo nivel para investigar esa familia de arquitecturas en ese nivel; más bien, comienza con un marco (VLIW) impulsado por alguna noción de costo de hardware, y observa las implicaciones que se derivan de eso, e investiga los algoritmos y los elementos necesarios para que sea práctico. Ahora, si desea proponer una forma de cambiar el marco para que se adapte mejor al compilador y lo anterior, algunos conocimientos sobre cómo funciona la tubería y lo que es costoso / poco práctico frente a lo que no le permitirá hacer mejores propuestas. A menudo puede hacerlo casi tan bien trabajando con un experto en esos detalles, deconstruyendo el problema que está tratando de resolver y construyendo una solución potencial en colaboración.

Ahora, para identificar los cuellos de botella que conducen a nuevas microarquitecturas, necesita alguna noción de cuáles son los cuellos de botella, o qué cuellos de botella podrían surgir dadas las tendencias actuales. Pero muchas de esas cosas pueden abstraerse. Los cables serán más costosos en comparación con los transistores. La brecha de ancho de banda entre la memoria externa y el cómputo continuará aumentando. Y así. Ninguna técnica de circuito específica negará esas tendencias. Puede desplazarlo a un lado u otro de la línea de tendencia, pero no cambiará la dirección general.

(Aunque, supongo que podría argumentar que algunas técnicas de diseño / espacios de diseño lo hacen más susceptible a algunas tendencias que otras. Si se enfoca en la computación insensible a la potencia de alto rendimiento en comparación con la computación de eficiencia de energía de pico de batería, por ejemplo. Pero incluso esos dominios dispares convergen con el tiempo).

Por lo tanto, la investigación de arquitectura realmente necesita conocer las macro tendencias y sus implicaciones. Dentro de ese marco, usted investiga cómo estructurar una máquina que sea resistente a las tendencias negativas y aproveche las tendencias positivas.

Tener un nivel inferior de conocimiento mejorará su capacidad de comprender y anticipar las tendencias. Para las realizaciones concretas de arquitecturas propuestas, le permitirá hacer mejores compensaciones microarquitectónicas en esas realizaciones concretas. Pero, en general, si comprende las tendencias y tiene acceso a otros expertos en dominios para intercambiar ideas específicas, es mejor tener una visión general de los problemas que está tratando de resolver y las tendencias asociadas con las piezas que podrías usar para resolver los problemas.

Me gusta el ejemplo de Quora User de lo que puede salir mal cuando un microarquitecto carece de conocimiento de circuitos, o al menos la conciencia de la falta de conocimiento. Está bien no ser un experto en todo; sin embargo, no está bien pensar que sabes todo incluso cuando no lo sabes. Personalmente confío en la experiencia de los diseñadores que me rodean y de mis co-arquitectos que tienen un mejor conocimiento de los circuitos. Complemento su conocimiento superior de circuitos con mi experiencia más sólida en software y sistemas. Juntos, formamos un equipo muy fuerte.

Gracias por el A2A. La arquitectura de computadora no es mi campo de especialización, y casi todo lo que sé sobre ella es autodidacta o aprendida en el trabajo.

Personalmente, no puedo recomendar el libro Vea MIPS Run Linux lo suficientemente bien (¡aunque ahora tiene 15 años!). Da una gran introducción a la forma en que una CPU decodifica y ejecuta las instrucciones, y explica cómo se puede usar la tubería RISC clásica para hacer esto de manera más eficiente. Luego entra en detalles explicando cómo un núcleo real del sistema operativo (Linux 2. algo) interactúa con la CPU para administrar todo tipo de hardware necesario para aplicaciones del mundo real: caché, memoria principal, E / S.

En términos de las relaciones entre el diseño de circuitos y la arquitectura de comptuer, creo que esto varía mucho.

  • Hay algunos arquitectos informáticos de alto nivel que piensan en núcleos e interconexiones y velocidades de bus, y no conocerían una puerta CMOS NAND o una celda de bits SRAM si las golpeas en la cabeza con una. *
  • En el medio, hay muchas personas de arquitectura de CPU que tienen que comprender las limitaciones de potencia y velocidad y costo / área y otros aspectos del diseño de circuitos. Quizás es su trabajo descubrir cómo combinar diferentes unidades funcionales para producir un procesador de teléfono inteligente de baja potencia, por ejemplo.
  • En el otro extremo (y estos probablemente no se considerarían arquitectos de CPU), hay diseñadores físicos que están tratando de descubrir cómo empaquetar los transistores individuales en celdas estándar de la manera más eficiente posible, para que puedan usarse como bloques de construcción para Circuitos mucho más complicados. Estas personas tienen que saber mucho sobre el diseño de circuitos y, a menudo, la física del dispositivo, la física y el proceso fabuloso también.

* No te preocupes. Son muy pequeños y no dolería mucho.

Nunca fui un arquitecto de alto nivel, pero trabajé en microarquitectura, que se ocupa de la organización de la tubería de procesamiento. En la respuesta de Dan Lenski, ese sería el “medio”. Si bien trabajo principalmente en compilación en estos días, la mayoría de mis amigos de la escuela de posgrado hacen exactamente lo que Dan dijo: descubrir cómo diseñar un procesador con alto rendimiento sin quemar demasiada potencia (la situación determina “demasiado”).

No se necesita mucho conocimiento de circuitos o VLSI para investigar en microarquitectura , aunque los cursos no son fáciles para la mayoría de las personas. Mi recomendación mínima es un curso de diseño de lógica digital (cómo dimensionar las compuertas lógicas adecuadamente para manejar suficiente corriente y tener una velocidad de conmutación aceptable), y un curso de VLSI para comprender los problemas de diseño y enrutamiento. Más sería mejor si puede aprovecharlo en el trabajo que nadie más puede hacer: uno de mis antiguos colegas tenía más experiencia que eso, e hizo algunas cosas muy interesantes para IBM.

Cuando los microarquitectos potenciales carecen de conocimiento del circuito y no son lo suficientemente cuidadosos con su falta de conocimiento, son propensos a proponer estructuras que no tienen sentido en el rendimiento general. Recuerdo claramente una presentación de un documento de conferencia que básicamente decía: “movimos esta estructura de predicción del documento de este tipo desde el final del proceso hasta el principio, y funciona mejor”. En mi revisión, señalé que lo que hicieron fue colocar una estructura muy complicada en una ruta crítica en la tubería, reduciendo la velocidad del reloj a la mitad: la innovación clave del documento original no era la estructura, sino cómo hacer que la estructura funcione al final de la tubería, donde no aumentaría la ruta crítica. Además, si hubieran leído la disertación del tipo, habrían sabido que ya había intentado ponerla al frente.

Por definición, “arquitectura” es la descripción de alto nivel de una computadora u otro sistema digital. circuitos eléctricos, circuitos integrados, etc. son el nivel más bajo. Piense en los modelos de pila de capas múltiples convencionales como el modelo de comunicaciones OSI. el nivel más bajo (o capa) es la capa “física”: circuitos eléctricos, fibra óptica, RF / microondas inalámbrico. el siguiente nivel superior, o capa, es el nivel “lógico”: puertas, funciones lógicas, celdas de memoria. Llamo a la tercera capa el nivel de “procesador ISA”. ahí es donde vive la “arquitectura informática”. para entender la “arquitectura de computadora”, comenzaría con RISC vs. CISC. RISC introdujo la mayoría de los elementos modernos utilizados ahora: control de hardware, tuberías, jerarquía de memoria caché, subprocesamiento múltiple. y luego uno tiene que pasar al paralelismo introducido por los chips multinúcleo.

Además, los propios formatos de instrucción comenzaron a ir a VLIW (muy largo), en oposición a las otras instrucciones extremas, cortas o “reducidas”, que tomaron después del concepto de microprogramación vertical (todas esas instrucciones se ejecutan en un ciclo). La “ejecución de ciclo único” era el objetivo de RISC, que luego era fácilmente escalable a frecuencias cada vez más altas.

Finalmente, uno necesita conocer la partición de ID básica (Flynn): flujos individuales o múltiples de instrucciones (I) y datos (D). La mayoría de las arquitecturas informáticas ahora son simplemente SISD. En los años sesenta y principios de los setenta, antes del advenimiento del microprocesador, hubo mucha experimentación con otras arquitecturas informáticas, especialmente los “procesadores vectoriales” (SIMD), y algunos “superordenadores” en MIMD.

More Interesting

¿Sabemos si la factorización es más difícil que el isomorfismo gráfico?

¿Google financia una gran cantidad de investigación académica, especialmente en el aprendizaje automático?

¿En qué área de investigación (es decir, base de datos, inteligencia artificial o cualquier otra) cae el big data?

¿Cuáles son las limitaciones prácticas de la visión por computadora móvil?

¿Qué programa es mejor: UT Dallas o la Universidad de Edimburgo para una pista ML / NLP?

¿Qué país europeo es el mejor para hacer un doctorado en visión artificial y vivir allí después de la graduación?

¿Es necesaria una sólida formación en informática para realizar investigaciones en informática teórica?

¿Cómo debo prepararme si quiero investigar en aprendizaje automático? ¿Hay documentos particulares que debería leer o algoritmos que debería implementar?

¿Cuáles son algunos temas interesantes para la investigación que combinan el conocimiento de la energía eólica / solar (energía limpia) y el aprendizaje automático?

¿Cuáles son los trabajos de investigación que un graduado de CS debería haber leído antes de seguir una carrera como desarrollador de software?

¿Qué tipo de proyectos privados se pueden hacer en biología computacional o bioinformática que se pueden hacer a pequeña escala?

¿Qué computadoras portátiles usan los grupos de investigación en visión artificial / AR? MacBooks o Alienwares? ¿Cuáles son las especificaciones?

¿Cuáles son algunas áreas inexploradas en el campo de la informática?

¿Cuál es la investigación de HCI que fue hace 10 años pero que ya no es la tendencia?

¿Cuáles son las áreas / problemas de investigación actuales en informática teórica?