¿Hay más en un microcontrolador que unas pocas puertas lógicas?

1

Soy un desarrollador de software (que utiliza lenguajes de alto nivel como .NET, C, C ++, etc.) que trata de entender cómo funcionan las computadoras en un nivel inferior.

Hice esta pregunta hace unos días: Desarrollo de sistemas de nivel inferior . He configurado mi arduino y he escrito algunos programas en lenguaje C y ensamblador.

Sin embargo, consulte el siguiente diagrama:

    
pregunta w0051977

5 respuestas

5

Bastante solo transistores. Muchos de ellos. Comenzando con un par de miles para el 4004 (el primer microprocesador comercialmente exitoso) en 1971, hasta miles de millones en los últimos chips. Los transistores se utilizan para crear puertas lógicas, que a su vez se utilizan para crear los componentes básicos del procesador:

Instruction decoder
ALU (arithmetic logic unit)
Registers
Multiplexors/buffers to route signals between the above sections and the outside

Los microcontroladores además tienen memoria de programa y de datos, que también se construye a partir de transistores, junto con circuitos analógicos y puertos de E / S.

Los lenguajes de lenguaje de alto nivel se compilan o interpretan, en el primer caso se traducen finalmente en instrucciones de la máquina que son decodificadas por el decodificador de instrucciones. Los códigos de operación en la instrucción dictan qué operación tiene lugar. Las operaciones aritméticas (sumar, restar, etc.) y lógicas como AND, OR, etc. se manejan mediante la ALU . Así que sí, hay puertas enterradas dentro de la ALU que realizan operaciones AND y OR, correspondientes a las operaciones AND y OR en su programa.

Sin embargo, no es necesario que tales operaciones se realicen con las puertas AND u OR. Cualquier función lógica se puede realizar utilizando todas las puertas NAND (Y seguido de e inversor) o todas las Puertas NOR (O puertas seguidas de e inversor) por lo que no hay otro tipo de puerta sería necesario. La computadora de guía para la nave espacial Apollo 11, que aterrizó en la Luna en 1969, consistía completamente en 2800 IC con dos puertas NOR de tres entradas.

Aquí está el recuento de transistores para un número seleccionado de microprocesadores a lo largo de los años:

Intel 4004           (1971)          2,300
MOS Tech 6502        (1975)          3,510
Motorola 6800        (1974)          4,100
Intel 8080           (1974)          4,500
Intel 8086 & 8088    (1974)         29,000
Motorola 68000       (1979)         68,000
Intel 80386          (1985)        275,000
ARM 1                (1985)         25,000
Intel 80486          (1989)      1,180,235
Intel Pentium        (1993)      3,100,000
AMD K7               (1999)     22,000,000
Intel Pentium 4      (2000)     42,000,000
Intel Core 2 Duo     (2006)    291,000,000
ARM Cortex-A9        (2007)     26,000,000
AMD K10 quad-core    (2008)    758,000,000
Intel 6-core i7      (2010)  1,170,000,000
Intel 8-core Itanium (2012)  3,100,000,000 

Es sorprendente que el número de transistores haya aumentado en más de seis órdenes de magnitud en 41 años (1971-2012). Este aumento tiene casi exactamente emparejado Ley de Moore :

$$ 2300 (2 ^ {41/2}) = 3,410,693,920 $$

que indica la cantidad de transistores en un circuito integrado que se duplica cada dos años.

Algunas notas sobre la tabla:

  1. El número de transistores en el 8088 (usado en la primera PC) y el 8086 fue el mismo porque internamente, los chips eran esencialmente idénticos. Solo la interfaz de bus (8 para el 8088 vs 16 bits para el 8086) fue diferente.
  2. El número de transistores para el Motorola 68000 fue de 68,000 para dar o recibir. Esto se utilizó en materiales de marketing.
  3. Note la notable diferencia entre CISC (cómputo de conjunto de instrucciones complejas) y RISC (Computación de conjuntos de instrucciones reducidas) arquitecturas: el Intel 80386, lanzado en 1985 tenía 275,000 transistores, mientras que el ARM 1, lanzado el mismo año, tenía 25,000, una proporción de 11 a 1. Y el Intel Core 2 Duo, lanzado en 2006, tenía 291,000,000 transistores, mientras que el ARM Cortex-A9, introducido un año después, tenía 22,000,000, una proporción similar de 13 a 1.

Los primeros microprocesadores, como el 6502 utilizado en el muy popular Apple [], tenían un recuento de transistores suficientemente bajo que con solo una pequeña ampliación se pueden ver los transistores individuales. Aquí hay un 6502 simulator que en realidad muestra las rutas de datos a través del chip mientras ejecuta un programa. Simplemente haga clic en el botón Reproducir en el lado derecho. Puede hacer zoom y obtener más detalles. El simulador se creó exponiendo la matriz, fotografiando la superficie y los sustratos en alta resolución y luego creando un modelo digital completo del chip.

Las primeras computadoras en la década de 1940 estaban compuestas por tubos de vacío o relés, pero en cualquier caso se realizaron las mismas álgebra booleana como los circuitos digitales de hoy. Las computadoras de transistores discretos aparecieron a fines de los años cincuenta y principios de los sesenta. Fueron reemplazados por procesadores que utilizan SSI (circuitos integrados de pequeña escala). Esto fue impulsado en gran medida por la industria aeroespacial, tanto la carrera espacial como la defensa. para minimizar el peso. Los microprocesadores de la lista anterior son un ejemplo de LSI (integración a gran escala).

    
respondido por el tcrosley
1

El más simple y más microprocesadores primitivos de 4 bits tenía solo unos 3.000 transistores, por lo que tal vez 1000 puertas en la tecnología PMOS . La memoria se puede hacer con puertas, pero no es tan ineficiente como eso, y eso está por encima del requisito del microprocesador, ya que los microcontroladores tienen memoria integrada.

Un microcontrolador moderno, incluso uno económico como un pequeño ARM de 32 bits sería mucho más complejo. Aquí hay una foto del troquel de Wikipedia de tal procesador , que resulta ser un ARM Cortex M3 de ST:

Unchipdeestecomplejorequeriríaherramientasautomatizadasdealtonivelyunequipodedesarrolladoresparacrear,yseríaalgosimilaraunproyectodesoftwaregrandeentérminosdeprocesosdediseño.Dehecho,sontancomplejosquelosfabricantesamenudocompran(licencia)losdiseñosdeunaempresacomoARMyadaptanelnúcleoasusrequisitos.ImprimirunesquemaaniveldetransistoroinclusoaniveldepuertaparaunchipdeestetiposeríatanpocoprácticocomoimprimirelcódigofuenteenMicrosoftWindows.

Encontraste,aquíescómoseveeldiseñodeldadodeunchipdecuatropuertas(deun hoja de datos de TI ):

Laspersonasquetrabajancon X-Acto (tm) cuchillos y Rubylith .

    
respondido por el Spehro Pefhany
1

Sus términos iniciales de búsqueda de imágenes de Google microcontroller logic gates diagram dan resultados engañosos. Omita la palabra "microcontrolador" y obtendrá aproximadamente los mismos resultados: puertas lógicas genéricas y nada acerca de los microcontroladores. Lo que realmente estás preguntando no es qué son las puertas lógicas , sino más bien cuál es la lógica que se encuentra dentro de un microcontrolador.

La razón por la que no encontrará un diagrama esquemático de la lógica interna de un microcontrolador moderno y propietario (como Atmel AVR o Microchip PIC), es porque en realidad se trata de información secreta. (Además, incluso el más simple de estos será bastante complejo). Sin embargo, hay muchos microcontroladores más antiguos y estándar de la industria que ya no se consideran secretos.

La buena noticia es que, tanto los microcontroladores como el FPGA han existido por mucho tiempo, que ahora hay muchos ejemplos gratuitos y de código abierto que los entusiastas de% co_de han diseñado con ingeniería inversa a partir de diseños clásicos de microcontroladores. enlace en la pestaña Procesador , tiene varios núcleos de microcontroladores de código abierto y gratuitos, basados en diseños más antiguos de uso general Que ya no se defiende como propietario. Estos están escritos en un lenguaje de descripción de hardware como Verilog o VHDL.

Recomiendo comenzar con algunos de los microcontroladores clásicos más antiguos (y, por lo tanto, de arquitectura más simple), como:

  • 4004
  • 6502
  • 8080
  • 8051
  • Z80

Una de las razones por las que a los entusiastas les gusta reutilizar estas arquitecturas de microcontroladores más antiguas (especialmente 8051 o Z80), es porque hay cadenas de herramientas disponibles de forma gratuita, como SDCC. Esto lo hace realmente útil para resolver problemas reales, sin el gasto de un sistema de 32 bits.

Si realmente prefiere verlos como esquemas en lugar de código HDL, es posible, pero requerirá la instalación de algunas herramientas de software de desarrollo FPGA. Tanto Xilinx.com como Altera.com ofrecen un conjunto de herramientas de desarrollo gratuitas (el software de Xilinx se llama ISE y el software de Altera se llama Quartus). Los objetivos FPGA más grandes requieren una licencia pagada, pero hay un rango de objetivos FPGA más pequeños que pueden construirse usando una licencia gratuita de "webpack" (es decir, solo el registro pero no dinero). El uso de estas herramientas requiere invertir parte de su tiempo para aprender, pero puede ser un proyecto que valga la pena si desea profundizar en los niveles más bajos de diseño de hardware digital.

De todos modos, asumiendo que tiene Xilinx ISE configurado y que ha cargado uno de estos proyectos de microcontroladores opencores, seleccionaría retrocomputing para ver un esquema jerárquico ... aunque en verdad, cuando llegue al nivel de un pequeño o microcontrolador de tamaño mediano, los esquemas realmente se vuelven ineficientes.

Una última cosa que vale la pena estudiar: Xilinx tiene un microcontrolador suave de 8 bits llamado RTL Schematic , que se puede sintetizar en los FPGA de Xilinx. Este diseño fue hecho a mano por Ken Chapman de Xilinx usando primitivas de nivel de puerta FPGA, por lo que es al menos comprensible en el nivel bajo pero aún es útil para tareas reales. Sufre por no tener un compilador de C u otro soporte de herramientas acolchado, pero funciona bien para trabajos pequeños que requieren más que una máquina de estado, pero menos que un compilador de C de fuerza industrial.

    
respondido por el MarkU
0

La respuesta corta es: "Sí", pero para obtener solo un pequeño indicio de la complejidad de un microcontrolador, puede ser instructivo trabajar en hardware, cómo cargar un número binario de 16 bits en cualquiera de, digamos, 65536 ubicaciones de memoria, otro número de 16 bits en otra parte de la matriz de memoria, luego multiplíquelos y almacene el producto en las dos direcciones, el multiplicando y el multiplicador que antes estaba ocupado.

    
respondido por el EM Fields
0

La imagen que vinculó en su pregunta no es la de un microcontrolador sino un circuito integrado que consta de cuatro AND lógicos. Un microcontrolador tiene millones de ellos.

Además, tenga en cuenta que utilizando solo puertas NAND puede realizar cualquier operación lógica que pueda necesitar.

    
respondido por el ig343

Lea otras preguntas en las etiquetas