Puede ser falso en biología, pero en informática, la "ontogenia recapitula la filogenia" casi casi. Una descripción histórica de las arquitecturas informáticas desde las primeras computadoras es una excelente manera de comprender el tema de la arquitectura informática desde la perspectiva de un programador; Los diseños de computadora son casi todos refinamientos de diseños anteriores.
Es decir, recomiendo estudiar diseños completos de sistemas más antiguos, en lugar de los libros teóricos de "arquitectura informática" que le dan en informática. Para comprender realmente el diseño de sistemas, y para hacer un gran trabajo al escribir software. La comprensión intuitiva de la arquitectura de los sistemas informáticos requiere el dominio de muchos conceptos. Creo que si comienzas de nuevo cuando las arquitecturas de computadora eran más manejables en tamaño y alcance, podrías lograr que tu padre escriba tu mejor código.
(La serie de libros de "escribir un código excelente" que otro tipo mencionó se ve genial, por cierto, y he editado mi pregunta para eliminar cualquier aspersión que había lanzado anteriormente sobre aprender de un libro, ¡porque se ve genial! )
Algunas cosas que enseñan arquitectura de computadora realmente bien:
Me gusta elegir máquinas de la década de 1980 como puntos de partida para explicar y demostrar cosas a las personas, porque fue cuando comencé a usar las computadoras. He utilizado la guía de referencia del programador Commodore 64 para mostrarle a la gente un lugar de salto donde el conocimiento de la programación y el conocimiento de la arquitectura de la computadora se encuentran. Con tal libro, y tal vez un emulador Commodore 64 que se ejecuta en su PC para que pueda probar cosas, aprenderá cómo se construyen realmente los sistemas informáticos en la encarnación clásica de la arquitectura de computadoras de la década de 1980. En mi opinión, un ejemplo concreto es un mejor lugar para comenzar, que una docena de modelos teóricos a los que les faltan los detalles del mundo real que hacen que las cosas funcionen. Si sabe qué es un registro, qué es una ALU, qué es un autobús y qué reloj es, y qué sistemas de señalización se utilizan en un diseño antiguo de la década de 1980, que le proporcionará los fundamentos que necesita saber para comprender algo reciente, como la "arquitectura de puente arenoso" de Intel. Históricamente, mire hacia atrás a los originales, por ejemplo, busque la arquitectura "Von neumann" en Wikipedia.
Avanzando desde mi primer punto unos años; Conozca la arquitectura original de PC de IBM, el lenguaje ensamblador 8086 y el bus ISA. A partir de esto, y sus limitaciones, la comprensión de lo que contiene una CPU "Intel COre i7", y lo que hacen los buses PCI y PCI-e y por qué los necesita, puede proceder de forma más natural. La arquitectura de PC hoy en día todavía tiene un poco de "resaca" del diseño original de PC de IBM. La forma en que se carga el programa inicial (sistema operativo) (arranque) en una PC 2011 todavía debe mucho a la herencia de la PC IBM original y su BIOS ROM, y su configuración CMOS en una PC original.
Utilice y modifique una compilación preconfigurada de Linux que funcione en algunos dispositivos integrados que no sean de PC, y aprenderá mucho sobre la arquitectura de computadoras integradas, no solo la arquitectura técnica, sino también por qué algunas de las características están ahí. Un buen ejemplo que está disponible barato es el TS-7200, que tiene una buena PC-104 (bus ISA, como en la PC original). Las computadoras PC-104 (bus ISA de 16 bits integrado que es compatible con los pines de las PC de la era PC / AT 80286 de IBM) son una excelente manera para que un diseñador que no sea de placa construya un sistema integrado, porque los módulos son apilables. ¿Quieres un extra de IO o periféricos? Solo apila algunos módulos. El TS-7200 tiene un núcleo no x86 (una CPU ARM9) que es capaz de ejecutar big-endian o little-endian. Si aún no se ha encontrado con el "endianness" en su viaje de aprendizaje de arquitectura, es un buen lugar para encontrarlo.