Cómo funcionan los microprocesadores

  • Gyles Lewis
  • 0
  • 5025
  • 511
Los microprocesadores están en el corazón de todas las computadoras. Jorg Greuel / Getty Images

-La computadora que está usando para leer esta página usa un microprocesador para hacer su trabajo. El microprocesador es el corazón de cualquier computadora normal, ya sea una computadora de escritorio, un servidor o una computadora portátil. El microprocesador que está utilizando puede ser un Pentium, un K6, un PowerPC, un Sparc o cualquiera de las muchas otras marcas y tipos de microprocesadores, pero todos hacen aproximadamente lo mismo de la misma manera..

Un microprocesador, también conocido como UPC o unidad central de procesamiento: es un motor de cálculo completo que se fabrica en un solo chip. El primer microprocesador fue el Intel 4004, introducido en 1971. El 4004 no era muy potente; todo lo que podía hacer era sumar y restar, y solo podía hacer esos 4 bits a la vez. Pero fue sorprendente que todo estuviera en un solo chip. Antes del 4004, los ingenieros construían computadoras a partir de colecciones de chips o de componentes discretos (transistores conectados uno a la vez). El 4004 impulsó una de las primeras calculadoras electrónicas portátiles.

- Si alguna vez se ha preguntado qué hace el microprocesador de su computadora, o si alguna vez se ha preguntado acerca de las diferencias entre los tipos de microprocesadores, siga leyendo. En este artículo, aprenderá cómo las técnicas de lógica digital bastante simples permiten que una computadora haga su trabajo, ya sea jugar un juego o revisar la ortografía de un documento.!

Contenido
  1. Progresión del microprocesador: Intel
  2. Lógica del microprocesador
  3. Memoria del microprocesador
  4. Instrucciones del microprocesador
  5. Rendimiento y tendencias del microprocesador
  6. Microprocesadores de 64 bits
El Intel 8080 fue el primer microprocesador en una computadora doméstica.

El primer microprocesador que lo convirtió en una computadora doméstica fue el Intel 8080, un equipo completo de 8 bits en un chip, introducido en 1974. El primer microprocesador que causó un verdadero revuelo en el mercado fue el Intel 8088, introducido en 1979 e incorporado en el IBM PC (que apareció por primera vez alrededor de 1982). Si está familiarizado con el mercado de las PC y su historia, sabrá que el mercado de las PC pasó del 8088 al 80286 al 80386 al 80486 al Pentium al Pentium II al Pentium III al Pentium 4. Todos estos Los microprocesadores están hechos por Intel y todos ellos son mejoras en el diseño básico del 8088. El Pentium 4 puede ejecutar cualquier código que se ejecute en el 8088 original, pero lo hace unas 5.000 veces más rápido!

Desde 2004, Intel ha introducido microprocesadores con múltiples núcleos y millones de transistores más. Pero incluso estos microprocesadores siguen las mismas reglas generales que los chips anteriores..

Aquí están las diferencias entre los diferentes procesadores que Intel ha introducido a lo largo de los años. Compilado de la Guía de referencia rápida del microprocesador Intel y las puntuaciones de referencia de TSCP

Información adicional sobre la tabla en esta página:

  • los fecha es el año en que se introdujo por primera vez el procesador. Muchos procesadores se reintroducen a velocidades de reloj más altas durante muchos años después de la fecha de lanzamiento original..
  • Transistores es el número de transistores en el chip. Puede ver que la cantidad de transistores en un solo chip ha aumentado constantemente a lo largo de los años..
  • Micrones es el ancho, en micrones, del cable más pequeño del chip. En comparación, un cabello humano tiene 100 micrones de grosor. A medida que disminuye el tamaño de la función en el chip, aumenta la cantidad de transistores.
  • Velocidad de reloj es la velocidad máxima a la que se puede sincronizar el chip. La velocidad del reloj tendrá más sentido en la siguiente sección.
  • Ancho de datos es el ancho de la ALU. Una ALU de 8 bits puede sumar, restar, multiplicar, etc. dos números de 8 bits, mientras que una ALU de 32 bits puede manipular números de 32 bits. Una ALU de 8 bits tendría que ejecutar cuatro instrucciones para sumar dos números de 32 bits, mientras que una ALU de 32 bits puede hacerlo en una instrucción. En muchos casos, el bus de datos externo tiene el mismo ancho que la ALU, pero no siempre. El 8088 tenía una ALU de 16 bits y un bus de 8 bits, mientras que los Pentium modernos obtienen datos de 64 bits a la vez para sus ALU de 32 bits..
  • MIPS significa "millones de instrucciones por segundo" y es una medida aproximada del rendimiento de una CPU. Las CPU modernas pueden hacer tantas cosas diferentes que las calificaciones de MIPS pierden gran parte de su significado, pero puede obtener una idea general del poder relativo de las CPU en esta columna..

En esta tabla puede ver que, en general, existe una relación entre la velocidad del reloj y MIPS. La velocidad máxima de reloj es una función del proceso de fabricación y los retrasos dentro del chip. También existe una relación entre el número de transistores y MIPS. Por ejemplo, el 8088 registró una frecuencia de 5 MHz pero solo se ejecutó a 0.33 MIPS (aproximadamente una instrucción por 15 ciclos de reloj). Los procesadores modernos a menudo pueden ejecutarse a una velocidad de dos instrucciones por ciclo de reloj. Esa mejora está directamente relacionada con la cantidad de transistores en el chip y tendrá más sentido en la siguiente sección..

¿Qué es un chip??

UNA chip también se llama un circuito integrado. Generalmente es una pequeña y delgada pieza de silicio sobre la que se han grabado los transistores que forman el microprocesador. Un chip puede ser tan grande como una pulgada de lado y puede contener decenas de millones de transistores. Los procesadores más simples pueden consistir en unos pocos miles de transistores grabados en un chip de unos pocos milímetros cuadrados..

Procesador Intel Pentium 4 Foto cortesía de Intel Corporation

Para comprender cómo funciona un microprocesador, es útil mirar adentro y aprender sobre la lógica utilizada para crear uno. En el proceso también puede aprender sobre lenguaje ensamblador -- el idioma nativo de un microprocesador, y muchas de las cosas que los ingenieros pueden hacer para aumentar la velocidad de un procesador.

Un microprocesador ejecuta una colección de instrucciones de la máquina que le dicen al procesador qué hacer. Según las instrucciones, un microprocesador hace tres cosas básicas:

  • Usando su ALU (Unidad Aritmética / Lógica), un microprocesador puede realizar operaciones matemáticas como suma, resta, multiplicación y división. Los microprocesadores modernos contienen procesadores de punto flotante completos que pueden realizar operaciones extremadamente sofisticadas en grandes números de punto flotante..
  • Un microprocesador puede mover datos de una ubicación de memoria a otra.
  • Un microprocesador puede tomar decisiones y pasar a un nuevo conjunto de instrucciones basadas en esas decisiones..

Puede haber cosas muy sofisticadas que hace un microprocesador, pero esas son sus tres actividades básicas. El siguiente diagrama muestra un microprocesador extremadamente simple capaz de hacer esas tres cosas:

Esto es tan simple como un microprocesador. Este microprocesador tiene:

  • Un bus de dirección (que puede tener un ancho de 8, 16 o 32 bits) que envía una dirección a la memoria
  • UNA bus de datos (que puede tener un ancho de 8, 16 o 32 bits) que puede enviar datos a la memoria o recibir datos de la memoria
  • Un RD (Lea y WR (escribir) línea para decirle a la memoria si quiere establecer u obtener la ubicación direccionada
  • UNA línea de reloj que permite que un pulso de reloj secuencia el procesador
  • UNA reiniciar línea que restablece el contador del programa a cero (o lo que sea) y reinicia la ejecución

Supongamos que tanto la dirección como los buses de datos tienen 8 bits de ancho en este ejemplo..

Estos son los componentes de este simple microprocesador:

  • Los registros A, B y C son simplemente pestillos hechos de flip-flops. (Consulte la sección sobre "pestillos activados por borde" en Cómo funciona la lógica booleana para obtener más detalles).
  • El pestillo de dirección es como los registros A, B y C.
  • El contador del programa es un pestillo con la capacidad adicional de aumentar en 1 cuando se le indica que lo haga, y también de restablecerse a cero cuando se le indica que lo haga..
  • La ALU podría ser tan simple como un sumador de 8 bits (consulte la sección sobre sumadores en Cómo funciona la lógica booleana para obtener más detalles), o podría ser capaz de sumar, restar, multiplicar y dividir valores de 8 bits. Asumamos lo último aquí.
  • El registro de prueba es un pestillo especial que puede contener valores de comparaciones realizadas en la ALU. Una ALU normalmente puede comparar dos números y determinar si son iguales, si uno es mayor que el otro, etc. El registro de prueba normalmente también puede contener un bit de acarreo de la última etapa del sumador. Almacena estos valores en flip-flops y luego el decodificador de instrucciones puede usar los valores para tomar decisiones.
  • Hay seis casillas marcadas como "3 estados" en el diagrama. Estos son búferes de tres estados. Un búfer de tres estados puede pasar un 1, un 0 o esencialmente puede desconectar su salida (imagine un interruptor que desconecta totalmente la línea de salida del cable hacia el que se dirige la salida). Un búfer de tres estados permite que varias salidas se conecten a un cable, pero solo una de ellas impulsa un 1 o un 0 en la línea.
  • El registro de instrucciones y el decodificador de instrucciones son responsables de controlar todos los demás componentes..

Aunque no se muestran en este diagrama, habría líneas de control del decodificador de instrucciones que:

  • Dile al registro A que retenga el valor actualmente en el bus de datos
  • Dile al registro B que retenga el valor actualmente en el bus de datos
  • Dígale al registro C que bloquee el valor emitido actualmente por la ALU
  • Dígale al registro del contador del programa que retenga el valor actualmente en el bus de datos
  • Dígale al registro de direcciones que retenga el valor actualmente en el bus de datos
  • Dígale al registro de instrucciones que retenga el valor actualmente en el bus de datos
  • Dile al contador del programa que incremente
  • Dile al contador del programa que se restablezca a cero
  • Active cualquiera de los seis búferes de tres estados (seis líneas separadas)
  • Dígale a la ALU qué operación realizar
  • Dile al registro de prueba que bloquee los bits de prueba de la ALU
  • Activar la línea RD
  • Activar la línea WR

Entrando en el decodificador de instrucciones están los bits del registro de prueba y la línea de reloj, así como los bits del registro de instrucciones..

Chip de ROM

En la sección anterior se habló de los buses de direcciones y datos, así como de las líneas RD y WR. Estos buses y líneas se conectan a RAM o ROM, generalmente a ambos. En nuestro microprocesador de muestra, tenemos un bus de direcciones de 8 bits de ancho y un bus de datos de 8 bits de ancho. Eso significa que el microprocesador puede direccionar (28) 256 bytes de memoria, y puede leer o escribir 8 bits de la memoria a la vez. Supongamos que este simple microprocesador tiene 128 bytes de ROM comenzando en la dirección 0 y 128 bytes de RAM comenzando en la dirección 128.

ROM significa memoria de solo lectura. Un chip ROM está programado con una colección permanente de bytes preestablecidos. El bus de direcciones le dice al chip ROM qué byte debe obtener y colocar en el bus de datos. Cuando la línea RD cambia de estado, el chip ROM presenta el byte seleccionado en el bus de datos.

RAM significa memoria de acceso aleatorio. La RAM contiene bytes de información y el microprocesador puede leer o escribir en esos bytes dependiendo de si la línea RD o WR está señalizada. Un problema con los chips RAM actuales es que se olvidan de todo una vez que se apaga. Por eso la computadora necesita ROM.

Chip de RAM

Por cierto, casi todas las computadoras contienen cierta cantidad de ROM (es posible crear una computadora simple que no contenga RAM; muchos microcontroladores hacen esto colocando un puñado de bytes de RAM en el chip del procesador), pero generalmente es imposible de crear. uno que no contiene ROM). En una PC, la ROM se denomina BIOS (Sistema básico de entrada / salida). Cuando se inicia el microprocesador, comienza a ejecutar las instrucciones que encuentra en el BIOS. Las instrucciones del BIOS hacen cosas como probar el hardware en la máquina, y luego va al disco duro para buscar el sector de arranque (consulte Cómo funcionan los discos duros para obtener más detalles). Este sector de arranque es otro programa pequeño y el BIOS lo almacena en la RAM después de leerlo del disco. Luego, el microprocesador comienza a ejecutar las instrucciones del sector de arranque desde la RAM. El programa del sector de arranque le dirá al microprocesador que busque algo más del disco duro en la RAM, que luego el microprocesador ejecuta, y así sucesivamente. Así es como el microprocesador carga y ejecuta todo el sistema operativo.

Incluso el microprocesador increíblemente simple que se muestra en el ejemplo anterior tendrá un conjunto bastante grande de instrucciones que puede ejecutar. La colección de instrucciones se implementa como patrones de bits, cada uno de los cuales tiene un significado diferente cuando se carga en el registro de instrucciones. Los seres humanos no son particularmente buenos para recordar patrones de bits, por lo que se define un conjunto de palabras cortas para representar los diferentes patrones de bits. Esta colección de palabras se llama lenguaje ensamblador del procesador. Un ensamblador puede traducir las palabras a sus patrones de bits muy fácilmente, y luego la salida del ensamblador se coloca en la memoria para que el microprocesador la ejecute.

Aquí está el conjunto de instrucciones en lenguaje ensamblador que el diseñador podría crear para el microprocesador simple en nuestro ejemplo:

  • LOADA mem - Cargar registro A desde la dirección de memoria
  • LOADB mem - Cargar registro B desde la dirección de memoria
  • CONB con - Cargue un valor constante en el registro B
  • SAVEB mem - Guarde el registro B en la dirección de memoria
  • SAVEC mem - Guarde el registro C en la dirección de memoria
  • AÑADIR - Suma A y B y almacena el resultado en C
  • SUB - Reste A y B y almacene el resultado en C
  • MUL - Multiplica A y B y almacena el resultado en C
  • DIV - Divida A y B y almacene el resultado en C
  • COM - Compare A y B y almacene el resultado en la prueba
  • JUMP addr - Ir a una dirección
  • Dirección JEQ - Saltar, si es igual, a la dirección
  • JNEQ addr - Salta, si no es igual, a la dirección
  • Dirección JG - Saltar, si es mayor que, para abordar
  • Dirección JGE - Saltar, si es mayor o igual, a la dirección
  • Dirección JL - Salte, si es menos que, para abordar
  • Dirección JLE - Saltar, si es menor o igual, a la dirección
  • DETENER - Detener la ejecución

Si ha leído Cómo funciona la programación en C, entonces sabrá que esta simple pieza de código C calculará el factorial de 5 (¡donde el factorial de 5 = 5! = 5 * 4 * 3 * 2 * 1 = 120):


a = 1; f = 1; mientras (a <= 5) f = f * a; a = a + 1;

Al final de la ejecución del programa, la variable F contiene el factorial de 5.

Lenguaje ensamblador

UNA Compilador C traduce este código C a lenguaje ensamblador. Suponiendo que la RAM comienza en la dirección 128 en este procesador, y la ROM (que contiene el programa en lenguaje ensamblador) comienza en la dirección 0, entonces, para nuestro microprocesador simple, el lenguaje ensamblador podría verse así:


// Suponga que a está en la dirección 128 // Suponga que F está en la dirección 1290 CONB 1 // a = 1; 1 SAVEB 1282 CONB 1 // f = 1; 3 SAVEB 1294 LOADA 128 // si a> 5 el salto a 175 CONB 56 COM7 JG 178 LOADA 129 // f = f * a; 9 LOADB 12810 MUL11 SAVEC 12912 LOADA 128 // a = a + 1; 13 CONB 114 ADD15 SAVEC 12816 JUMP 4 // bucle de regreso a if17 STOP

ROM

Así que ahora la pregunta es: "¿Cómo se ven todas estas instrucciones en la ROM?" Cada una de estas instrucciones en lenguaje ensamblador debe estar representada por un número binario. En aras de la simplicidad, supongamos que a cada instrucción en lenguaje ensamblador se le da un número único, como este:

  • LOADA - 1
  • LOADB - 2
  • CONB - 3
  • GUARDAR - 4
  • SAVEC mem - 5
  • AÑADIR - 6
  • SUB - 7
  • MUL - 8
  • DIV - 9
  • COM - 10
  • DIRECCIÓN DE SALTO - 11
  • Dirección JEQ - 12
  • Dirección JNEQ - 13
  • Dirección JG - 14
  • Dirección JGE - 15
  • Dirección JL - 16
  • Dirección JLE - 17
  • PARADA - 18

Los números se conocen como códigos de operación. En ROM, nuestro pequeño programa se vería así:


// Suponga que a está en la dirección 128 // Suponga que F está en la dirección 129 Addr opcode / value0 3 // CONB 11 12 4 // SAVEB 1283 1284 3 // CONB 15 16 4 // SAVEB 1297 1298 1 // LOADA 1289 12810 3 // CONB 511512 10 // COM13 14 // JG 1714 3115 1 // LOADA 12916 12917 2 // LOADB 12818 12819 8 // MUL20 5 // SAVEC 12921 12922 1 // LOADA 12823 12824 3 // CONB 125126 6 // ADD27 5 // SAVEC 12828 12829 11 // SALTAR 430831 18 // PARAR

Puede ver que siete líneas de código C se convirtieron en 18 líneas de lenguaje ensamblador, y eso se convirtió en 32 bytes en ROM.

Descodificación

El decodificador de instrucciones necesita convertir cada uno de los códigos de operación en un conjunto de señales que controlan los diferentes componentes dentro del microprocesador. Tomemos la instrucción ADD como ejemplo y veamos lo que debe hacer:

  1. Durante el primer ciclo de reloj, necesitamos cargar realmente la instrucción. Por lo tanto, el decodificador de instrucciones necesita: activar el búfer de tres estados para el contador del programa activar la línea RD activar el búfer de tres estados de entrada de datos enganchar la instrucción en el registro de instrucciones
  2. Durante el segundo ciclo de reloj, se decodifica la instrucción ADD. Necesita hacer muy poco: configurar la operación de la ALU para enganchar la salida de la ALU en el registro C
  3. Durante el tercer ciclo de reloj, el contador del programa se incrementa (en teoría, esto podría superponerse al segundo ciclo de reloj).

Cada instrucción puede desglosarse como un conjunto de operaciones secuenciadas como estas que manipulan los componentes del microprocesador en el orden correcto. Algunas instrucciones, como esta instrucción ADD, pueden tardar dos o tres ciclos de reloj. Otros pueden tomar cinco o seis ciclos de reloj..

El número de transistores disponible tiene un gran efecto en el rendimiento de un procesador. Como se vio anteriormente, una instrucción típica en un procesador como un 8088 tomó 15 ciclos de reloj para ejecutarse. Debido al diseño del multiplicador, se necesitaron aproximadamente 80 ciclos solo para hacer una multiplicación de 16 bits en el 8088. Con más transistores, son posibles multiplicadores mucho más potentes capaces de velocidades de ciclo único..

Más transistores también permiten una tecnología llamada canalización. En una arquitectura canalizada, la ejecución de instrucciones se superpone. Por lo tanto, aunque puede tomar cinco ciclos de reloj para ejecutar cada instrucción, puede haber cinco instrucciones en varias etapas de ejecución simultáneamente. De esa forma, parece que una instrucción completa cada ciclo de reloj.

Muchos procesadores modernos tienen varios decodificadores de instrucciones, cada uno con su propia canalización. Esto permite múltiples flujos de instrucciones, lo que significa que se puede completar más de una instrucción durante cada ciclo de reloj. Esta técnica puede ser bastante compleja de implementar, por lo que se necesitan muchos transistores..

Tendencias

La tendencia en el diseño de procesadores ha sido principalmente hacia ALU de 32 bits completos con procesadores de punto flotante rápidos integrados y ejecución canalizada con múltiples flujos de instrucciones. Lo más nuevo en el diseño de procesadores son las ALU de 64 bits, y se espera que las personas tengan estos procesadores en sus PC domésticos en la próxima década. También ha habido una tendencia hacia instrucciones especiales (como las instrucciones MMX) que hacen que ciertas operaciones sean particularmente eficientes, y la adición de soporte de memoria virtual de hardware y almacenamiento en caché L1 en el chip del procesador. Todas estas tendencias aumentan el número de transistores, lo que lleva a las potencias multimillonarias de transistores disponibles en la actualidad. Estos procesadores pueden ejecutar aproximadamente mil millones de instrucciones por segundo!

Foto cortesía de AMD

Los procesadores de sesenta y cuatro bits han estado con nosotros desde 1992, y en el siglo XXI han comenzado a generalizarse. Tanto Intel como AMD han introducido chips de 64 bits y la Mac G5 tiene un procesador de 64 bits. Los procesadores de sesenta y cuatro bits tienen ALU de 64 bits, registros de 64 bits, buses de 64 bits, etc..

Una de las razones por las que el mundo necesita procesadores de 64 bits es su espacios de direcciones ampliados. Los chips de treinta y dos bits suelen estar limitados a un máximo de 2 GB o 4 GB de acceso a la RAM. Eso suena a mucho, dado que la mayoría de las computadoras domésticas actualmente usan solo de 256 MB a 512 MB de RAM. Sin embargo, un límite de 4 GB puede ser un problema grave para las máquinas servidor y las máquinas que ejecutan grandes bases de datos. E incluso las máquinas domésticas comenzarán a chocar con el límite de 2 GB o 4 GB muy pronto si continúan las tendencias actuales. Un chip de 64 bits no tiene ninguna de estas restricciones porque un espacio de direcciones de RAM de 64 bits es esencialmente infinito en el futuro previsible: 2 ^ 64 bytes de RAM es algo del orden de mil millones de gigabytes de RAM.

Con un bus de direcciones de 64 bits y buses de datos anchos y de alta velocidad en la placa base, las máquinas de 64 bits también ofrecen velocidades de E / S (entrada / salida) más rápidas para cosas como unidades de disco duro y tarjetas de video. Estas funciones pueden aumentar considerablemente el rendimiento del sistema..

Los servidores definitivamente pueden beneficiarse de los 64 bits, pero ¿qué pasa con los usuarios normales? Más allá de la solución RAM, no está claro que un chip de 64 bits ofrezca a los "usuarios normales" beneficios reales y tangibles en este momento. Pueden procesar datos (datos muy complejos con muchos números reales) más rápido. Las personas que editan videos y las personas que editan fotografías en imágenes muy grandes se benefician de este tipo de potencia informática. Los juegos de alta gama también se beneficiarán, una vez que se vuelvan a codificar para aprovechar las funciones de 64 bits. Pero el usuario medio que lee el correo electrónico, navega por la Web y edita documentos de Word no utiliza realmente el procesador de esa forma..

Para obtener más información sobre microprocesadores y temas relacionados, consulte los enlaces en la página siguiente..

Artículos relacionados

  • Prueba de CPU
  • ¿Por qué hay límites en la velocidad de la CPU??
  • Cómo funcionan los semiconductores
  • Cómo funcionan las PC
  • Cómo funciona la programación en C
  • Cómo funciona Java
  • Cómo funcionan los sistemas operativos
  • Cómo funciona la memoria de la computadora
  • Cómo funcionarán las computadoras cuánticas
  • Cómo funcionarán las computadoras de ADN

Más enlaces geniales

  • Webopedia: microprocesador
  • Haga clic en CPU
  • Actualizaciones del procesador
  • Comparaciones de CPU de sexta generación
  • Comparaciones de CPU de 7.a generación
  • Puntajes de referencia TSCP



Nadie ha comentado sobre este artículo todavía.

Los artículos más interesantes sobre secretos y descubrimientos. Mucha información útil sobre todo
Artículos sobre ciencia, espacio, tecnología, salud, medio ambiente, cultura e historia. Explicando miles de temas para que sepas cómo funciona todo