Está en la página 1de 7

La Evolución De La Potencia De Procesamiento De La Cpu Parte 1: La Mecánica De Una Cpu

En esta serie de varias partes, exploramos la evolución del microprocesador y su asombroso


crecimiento en el poder de procesamiento a lo largo de las décadas. En la Parte 1, aprendemos
sobre la primera CPU comercial, la Intel 4004 y examinamos cómo funciona esta y otras CPU
similares en el nivel fundamental.

A mediados de la década de 1960 se inició una revolución en la miniaturización. La idea de


empaquetar docenas de transistores basados en semiconductores en un solo chip de silicio generó
el circuito integrado. Se sentó las bases para un cambio de paradigma completo sobre cómo
evolucionaría la sociedad moderna. En marzo de 1971, el lanzamiento comercial de un nuevo
producto semiconductor sentó las bases para esta nueva era. Compuesto por los entonces
increíbles 2,300 transistores, se lanzó la unidad de procesamiento central Intel 4004 o CPU.

En comparación, ENIAC, la primera computadora electrónica construida solo 25 años antes, solo
podía ejecutar 5,000 instrucciones por segundo. Pero lo que hizo que el 4004 fuera tan poderoso
no fue solo su aumento del 1800% en la potencia de procesamiento, solo consumió 1 vatio de
electricidad, tenía aproximadamente ¾ "de largo y su producción costó $ 5 en el dinero actual.
Esto fue millas por delante de ENIAC, costo de $ 5.5 millones en dinero de hoy, consumo de
energía de 180kW y peso de 27 toneladas.

Para comprender cómo una CPU obtiene su potencia de procesamiento, examinemos qué hace
realmente una CPU y cómo interactúa con los datos. Para todos los efectos, podemos pensar en
una CPU como una máquina de procesamiento de instrucciones. Operan recorriendo tres pasos
básicos: buscar, decodificar y ejecutar. A medida que los diseños de CPU evolucionan, estos tres
pasos se vuelven dramáticamente más complicados y se implementan tecnologías que amplían
este modelo central de operación.

IR A BUSCAR

En la fase de búsqueda, la CPU carga la instrucción que ejecutará en sí misma. Se puede pensar
que una CPU existe en una burbuja de información. Extrae instrucciones y datos de fuera de sí
mismo, realiza operaciones dentro de su propio entorno interno y luego devuelve los datos. Estos
datos normalmente se almacenan en una memoria externa a la CPU denominada Memoria de
acceso aleatorio o (RAM). Las instrucciones y los datos del software se cargan en la RAM desde
fuentes más permanentes, como discos duros y memoria flash. Pero en un momento de la historia
se utilizaron cintas magnéticas, tarjetas perforadas e incluso interruptores.

AUTOBÚS

El mecanismo por el cual los datos se mueven hacia adelante y hacia atrás a la RAM se llama bus.
Se puede pensar en un autobús como una autopista de varios carriles entre la CPU y la RAM, en la
que cada bit de datos tiene su propio carril. Pero también necesitamos transmitir la ubicación de
los datos que estamos solicitando, por lo que se debe agregar una segunda autopista para
acomodar tanto el tamaño de la palabra de datos como la palabra de dirección. Estos se
denominan bus de datos y bus de direcciones respectivamente. En la práctica, estas líneas de
datos y direcciones son conexiones eléctricas físicas entre la CPU y la RAM y, a menudo, se ven
exactamente como una superautopista en una placa de circuito.

REGISTRARSE

La dirección de la ubicación de la memoria a buscar se almacena en la CPU, en un mecanismo


llamado registro. Un registro es una palabra de memoria interna de alta velocidad que las
operaciones de la CPU utilizan como un "bloc de notas". Por lo general, se usa como un almacén
de datos temporal para instrucciones, pero también se puede asignar a funciones vitales de la
CPU, como realizar un seguimiento de la dirección actual a la que se accede en la RAM. Debido a
que están diseñados de forma innata en el hardware de la CPU, la mayoría solo tiene un puñado
de registros. El tamaño de las palabras generalmente está acoplado a la arquitectura nativa de la
CPU.

DESCODIFICAR

Una vez que se obtiene una instrucción, comienza la fase de decodificación. En la arquitectura RISC
clásica, una palabra de memoria forma una instrucción completa. Esto cambia a un método más
elaborado a medida que las CPU evolucionan hacia una arquitectura de conjunto de instrucciones
compleja, que se presentará en la parte 2 de esta serie.

DERIVACIÓN

La bifurcación ocurre cuando una instrucción causa un cambio en la dirección del contador del
programa. Esto hace que la siguiente búsqueda ocurra en una nueva ubicación en la memoria en
oposición a la siguiente dirección secuencial.

OPERANDO

Los códigos de operación a veces requieren datos para realizar su operación. Esta parte de una
instrucción se llama operando. Los operandos son bits superpuestos a una instrucción que se
utilizarán como datos. Digamos que queremos agregar 5 a un registro. La representación binaria
del número 5 estaría incrustada en la instrucción y extraída por el decodificador para la operación
de suma.

EJECUCIÓN

En la fase de ejecución, se disparan las CPU ahora configuradas. Esto puede ocurrir en un solo paso
o en una serie de pasos dependiendo del código de operación.

RELOJES

En una CPU, estas 3 fases de operación se repiten continuamente, avanzando a través de la


instrucción del programa de computadora cargado en la memoria. Pegar esta máquina de bucle es
un reloj. Un reloj es un pulso repetitivo que se utiliza para sincronizar la mecánica interna de una
CPU y su interfaz con componentes externos. La frecuencia de reloj de la CPU se mide por el
número de pulsos por segundo o Hertz.

LA EVOLUCIÓN DE LA POTENCIA DE PROCESAMIENTO DE LA CPU, PARTE 2: EL AUGE DEL X86

En esta serie de varias partes, exploramos la evolución del microprocesador y su asombroso


crecimiento en el poder de procesamiento a lo largo de las décadas. En la Parte 2, aprendemos
cómo la arquitectura x86 llegó a dominar el mundo de las PC a través de la trifecta de Intel, IBM y
Microsoft.

A medida que avanzaba la década de 1970, los diseños de CPU se hicieron más robustos. Se
aprovecharon velocidades de reloj más rápidas, mayores capacidades de direcciones y conjuntos
de instrucciones más elaborados. La siguiente gran oferta de Intel fue el 8008.

Una de las adiciones más destacadas a la lista de funciones 8008 fue la inclusión del
direccionamiento indirecto. Con el direccionamiento directo, se proporciona una ubicación de
memoria a una instrucción, donde luego obtiene el contenido de datos de esa ubicación de
dirección. En el direccionamiento indirecto, el contenido de esa ubicación de memoria
referenciada es en realidad un puntero a otra ubicación, donde realmente están los datos.

El 8008 también implementó un mecanismo conocido como interrupciones. Las interrupciones


permitieron que las señales de hardware y los eventos internos de la CPU hicieran una pausa en la
ejecución del programa y saltaran a una pequeña región de código de alta prioridad. Un ejemplo
de eventos de interrupción podría ser una señal de reloj en tiempo real, un disparador de una
pieza de hardware externo, como un teclado, o un cambio en el estado interno de la CPU. Incluso
el código de programa puede provocar una interrupción. Después de la ejecución del código de
servicio de interrupción, el programa original se reanudaría.

El siguiente producto principal de Intel fue el 8080. El 8080 fue el primero en la línea de productos
de Intel en utilizar un controlador de bus externo. Este chip de soporte era responsable de la
interfaz con la RAM y otros componentes de hardware del sistema. Estas comunicaciones se
conocen comúnmente como entrada / salida o IO. Esto permitió que la CPU interactuara con una
memoria e IO más lentas, que operaban a velocidades de reloj del sistema que eran más lentas
que la velocidad de reloj de la CPU. También mejoró la inmunidad general al ruido eléctrico.

El 8080 fue considerado por muchos el primer microprocesador realmente utilizable, sin embargo,
estaban surgiendo arquitecturas de procesadores competidores. Durante los años siguientes, el
auge de la informática de escritorio estuvo dominado por la CPU Zilog Z80 de la competencia, que,
irónicamente, era una extensión mejorada del 8080 de Intel y fue diseñada por el ex ingeniero de
Intel Federico Faggin. Intel contra esto fue el lanzamiento del 8086.

Manteniéndose en línea con el espíritu centrado en el software, el soporte de CPU de lenguajes de


programación de nivel superior se mejoró mediante la adición de instrucciones de pila más sólidas.
En el diseño de software, los fragmentos de código de uso común se estructuran en bloques
llamados subrutina. A veces también puede denominarse función, procedimiento o subprograma.

Para ilustrar esto, digamos que hicimos un programa que encuentra el promedio de miles de pares
de números. Para hacer esto de manera eficiente, escribimos un bloque de código que toma dos
números, calcula su promedio y lo devuelve. Nuestro programa ahora pasa por la lista de pares de
números, llamando a la subrutina para realizar el cálculo y devolviendo el resultado a la secuencia
principal del programa. La pila se utiliza para almacenar y transportar estos datos y direcciones de
retorno para llamadas a subrutinas.

La notable complejidad de 8086 y su éxito habían cimentado el compromiso de Intel con una
característica clave de su arquitectura: CISC o computadora con conjunto de instrucciones
complejas. Aunque se utilizó una arquitectura CISC en el 8080 y su sucesor ligeramente mejorado
el 8085, el 8086 marcó la transición de Intel hacia la adopción completa de la arquitectura CISC
con su sólido conjunto de instrucciones.

Con solo un puñado de CPU empleándola, la arquitectura CISC es una opción de diseño
relativamente rara en comparación con el RISC dominante o la arquitectura de computadora con
un conjunto de instrucciones reducido. Incluso hoy en día, las CPU x86 siguen siendo los únicos
procesadores principales que utilizan un conjunto de instrucciones CISC.

La diferencia entre una CPU RISC y una CPU CISC radica en su respectivo conjunto de instrucciones
y cómo se ejecuta. RISC utiliza instrucciones simples y primitivas, mientras que CISC emplea
instrucciones sólidas y complejas.

Además de adoptar la arquitectura CISC, la penalización del rendimiento de acceder a la memoria


también se combatió de nuevas formas en el 8086.

El rendimiento del 8086 se mejoró aún más con la capacidad de hacer uso del 8087, un
coprocesador matemático de coma flotante independiente

El éxito de los procesadores 8086 está vinculado sinérgicamente a otro gran éxito en la historia de
la informática. A fines de la década de 1970, la nueva industria de las computadoras personales
estaba dominada por empresas como Commodore, Atari, Apple y Tandy Corporation. Con un
crecimiento anual proyectado de más del 40% a principios de la década de 1980, el mercado de
computadoras personales atrajo la atención del gigante de mainframe IBM, que condujo al
lanzamiento de IBM PC, que también allanó el camino para el dominio de Microsoft en la industria
del software, IBM PC como la computadora personal dominante, y la x86 y la arquitectura
principal de las PC de hoy.
LA EVOLUCIÓN DE LA POTENCIA DE PROCESAMIENTO DE LA CPU PARTE 3: EL ORIGEN DE LOS
SISTEMAS OPERATIVOS MODERNOS

El origen de los sistemas operativos modernos

Durante la década de 1960 hasta la de 1970, el paradigma de la multitarea estaba ganando


terreno en el mundo del mainframe. Inicialmente, el concepto se implementó en una forma más
cruda conocida como multiprogramación. La multiprogramación se logró procesando programas
en lotes, saltando entre ellos durante las regiones de código que esperan la entrada del hardware.
Esto eventualmente evolucionaría hacia el tiempo compartido.

A fines de la década de 1960, la verdadera multitarea comenzó a surgir en sistemas operativos


como PDP-6 de DEC, OS / 360 MFT de IBM y MULTICS. MULTICS influiría mucho en el desarrollo de
UNIX.

En un entorno de proceso único tradicional, el programa que se está ejecutando generalmente


tiene el control total de la CPU y sus recursos. Esto crea problemas con el uso eficiente de la CPU,
la estabilidad y la seguridad a medida que el software se vuelve más complejo.

En la multitarea, el enfoque de la CPU se baraja entre los procesos que se ejecutan


simultáneamente.

La multitarea cooperativa fue utilizada por muchos de los primeros sistemas operativos multitarea.
Siempre que el sistema operativo le da un enfoque de CPU a un proceso, se basa en el proceso
mismo para devolver el control.

La multitarea preventiva resolvió los problemas de estabilidad de la multitarea cooperativa al


garantizar de manera confiable a cada proceso un período regular o "intervalo de tiempo" de
enfoque de la CPU.

También necesitamos una forma de evitar que un proceso utilice la memoria asignada a otro
proceso, pero también permitirles comunicarse entre sí de forma segura. La solución a esto es una
capa de hardware dedicada a la tarea entre la CPU y la RAM llamada unidad de administración de
memoria o MMU.

Si un proceso intenta acceder a la memoria fuera de las reglas de protección, se activa una falla de
hardware.

En una de las MMU, el concepto de privilegios de acceso a la memoria se incorpora a la gestión de


la memoria. Al asignar niveles de privilegio a regiones de memoria, es imposible que un proceso
acceda a códigos o datos por encima de su propio nivel de privilegio. Esto crea un mecanismo de
confianza en el que el código con menos privilegios y menos confiable no puede alterar el código o
la memoria más confiables y críticos.

La memoria virtual es una técnica de gestión de memoria que proporciona una capa de
abstracción de los recursos de almacenamiento disponibles en un sistema. Si bien la memoria
virtual viene en varias implementaciones, todas funcionan fundamentalmente al mapear el acceso
a la memoria desde ubicaciones lógicas a una física.

En enero de 1983, Apple lanzó Lisa. Pronto se vería eclipsado por el lanzamiento de Apple
MacIntosh un año después. La línea de productos Macintosh eventualmente crecería
dramáticamente a lo largo de los años. El Macintosh funcionaba con la CPU Motorola 68K.

Lo que hizo que el 68K fuera tan poderoso fue la adopción temprana de una arquitectura interna
de 32 bits. Sin embargo, el 68k no se consideró un verdadero procesador de 32 bits, sino más bien
un procesador híbrido de 32/16. A pesar de estas limitaciones, demostró ser un procesador muy
capaz.

A pesar de estas limitaciones, el 68k admitió una forma simple de privilegios que hizo posible la
multitarea facilitada por el hardware. El 68K siempre funciona en uno de los dos estados de
privilegios, el estado del usuario o el estado del supervisor.

A fines de 1984, IBM dio su siguiente paso adelante con el lanzamiento de su segunda generación
de computadora personal, la IBM PC AT.

Entre algunos de los nuevos programas desarrollados para la AT se encontraba un proyecto de


Microsoft llamado Windows. Con el desarrollo inicial a partir de 1981, Windows 1.0 hizo su primer
debut público el 10 de noviembre de 1983.

El 80286 fue pionero en ese momento, ya que fue el primer procesador producido en masa que
admitió directamente sistemas multiusuario con multitarea.

El primero fue la eliminación de la multiplexación en buses de datos y direcciones.

El segundo avance fue el traslado del control de direccionamiento de memoria a un bloque de


hardware dedicado.

La tercera mejora importante fue una unidad de captación previa mejorada. Conocido como su
unidad de instrucciones, el 80286 comenzaría a decodificar hasta 3 instrucciones de su cola de
captación previa de 8 bytes.

El 80286 era capaz de direccionar 24 bits de memoria o 16 MB de RAM, lo que hacía que el
modelo de memoria 8086 fuera insuficiente.

Para hacer uso de los 16 MB completos y facilitar la multitarea, el 80286 también podría funcionar
en un estado conocido como modo protegido.

Los descriptores de segmento proporcionan un marco de seguridad al permitir protección contra


escritura para segmentos de datos y protección contra lectura para segmentos de código. Si se
infringen las reglas de segmento, se produce una excepción, lo que obliga a un disparador de
interrupción del código del sistema operativo.

La MMU del 80286 rastreó todos los segmentos en dos tablas. La tabla de descriptores globales o
GDT y la tabla de descriptores locales o LDT

que combinados podrían abordar potencialmente hasta 1 GB de memoria virtual.

La estructura de interrupciones del modo protegido es muy diferente del modo real en que tiene
una tabla propia, conocida como tabla de descriptores de interrupciones.

Las fallas del 80286 eventualmente se solucionarían con un modo protegido más refinado que se
abrirá paso en las próximas generaciones de CPU de Intel.

También podría gustarte