Casi todos los avances en la velocidad de la computadora provienen de una de estas áreas:
Transistores más pequeños
Dos cosas resultan de hacer los transistores más pequeños:
- Están físicamente más juntos, por lo que el tiempo que tarda una señal eléctrica en viajar de origen a destino es menor. Entonces, aunque las señales eléctricas no viajan más rápido que hace 50 años, a menudo viajan distancias más cortas ahora .
- Se pueden incluir más transistores en un chip, lo que significa que se puede hacer más "trabajo" al mismo tiempo. Cuantos más transistores se agreguen, más difícil será encontrar trabajo útil para ellos, pero se utilizan muchos trucos ingeniosos (ver más abajo).
Más "trabajo útil" por instrucción
Por ejemplo, algunos procesadores carecen de instrucciones para multiplicar o dividir enteros; en cambio, esta tarea debe realizarse con rutinas de software lentas. Agregar instrucciones de multiplicar y dividir acelera considerablemente las cosas. Agregar instrucciones de punto flotante puede acelerar el software que requiere números de punto flotante.
Una forma importante de hacer más "trabajo útil" por instrucción es aumentar el tamaño de la palabra . Las CPU que pueden realizar operaciones en números de 32 bits a menudo requieren muchas menos instrucciones para realizar la misma tarea que las CPU de 16 u 8 bits.
Algunos procesadores admiten instrucciones que hacen varias cosas a la vez, en particular instrucciones que realizan la misma operación en múltiples elementos de datos ( SIMD ).
Más instrucciones por ciclo.
El "ciclo de reloj" es cómo el procesador pasa de su estado actual al siguiente. En cierto sentido, es la unidad de trabajo más pequeña que el procesador puede hacer a la vez. Sin embargo, el número de ciclos de reloj que toma una instrucción particular depende del diseño del procesador.
Con la llegada de los procesadores canalizados , fue posible que las instrucciones separadas se "superpusieran", es decir, una comenzaría antes de que la anterior terminara. Sin embargo, ciertas instrucciones pueden invalidar la siguiente instrucción, que no se conocerá hasta que la próxima instrucción se haya ejecutado parcialmente, por lo que las cosas pueden complicarse. (Los procesadores canalizados incluyen lógica para asegurarse de que todo salga bien, pero las características de rendimiento son más complejas).
Los procesadores superescalares llevan esto al siguiente nivel, literalmente permitiendo que dos instrucciones se ejecuten al mismo tiempo, y la ejecución fuera de orden lo lleva un paso más allá, permitiendo que las instrucciones se ejecuten fuera de orden. Estas características requieren un análisis del flujo de instrucciones, determinando qué instrucciones no chocan entre sí.
Aunque hay otros trucos similares (por ejemplo , predicción de rama , ejecución especulativa ), lo más importante es la imagen general:
- cada instrucción toma un cierto número de ciclos de reloj para completarse (no necesariamente constante)
- pero varias instrucciones pueden estar en progreso a la vez
- así que hay " instrucciones por ciclo " medibles que es> 1 para procesadores de alta gama
- pero depende mucho de la carga de trabajo
Más ciclos por segundo.
En otras palabras, mayor velocidad de reloj . El aumento de la velocidad del reloj no solo aumenta el calor generado, sino que también requiere un diseño de chip mucho más disciplinado, porque hay un límite de tiempo menor para que el circuito se estabilice. Obtuvimos mucho kilometraje de este hasta la década de 2000 cuando alcanzamos algunos límites prácticos.
Datos en el lugar correcto en el momento correcto
Aunque los componentes dentro de la CPU se han ido acercando cada vez más debido a la reducción de los transistores, la CPU y la RAM todavía están a una distancia de 5-10 cm. Si una instrucción necesita algo de RAM, esa instrucción no tomará 5 o 6 ciclos para completarse, tomará alrededor de 200. Este es el problema del cuello de botella de von Neumann .
Nuestra arma principal contra esto es el caché . Es más probable que se acceda nuevamente a los datos a los que se accedió recientemente, por lo que se guardan en una memoria especial (llamada caché) que está dentro del chip de la CPU, lo que hace que el acceso sea mucho más rápido.
Sin embargo, otras técnicas (como la canalización y la predicción de ramificaciones ) ayudan al procesador a realizar un trabajo útil mientras espera que lleguen los datos, y también predicen qué datos podrían necesitarse pronto.
Procesadores múltiples y / o especializados.
Es mucho más fácil escribir software para un único procesador que para múltiples procesadores. Sin embargo, a veces los beneficios de rendimiento / costo / consumo de energía hacen que valga la pena.
Además, ciertos procesadores son particularmente adecuados para ciertas tareas. Por ejemplo, las GPU están específicamente diseñadas para los cálculos necesarios para renderizar gráficos y efectos 2D y 3D.
Los procesadores multinúcleo son esencialmente procesadores múltiples en un solo chip.