martes, 27 de marzo de 2012

UNIDAD 1 EL MICROPROCESADOR

Microprocesador

El microprocesador (o simplemente procesador) es el circuito integrado central y más complejo de un sistema informático; a modo de ilustración, se le suele asociar por analogía como el «cerebro» de un computador. Es un circuito integrado constituido por millones de componentes electrónicos. Constituye la unidad central de procesamiento (CPU) de un PC catalogado como microcomputador.
Es el encargado de ejecutar los programas; desde el sistema operativo hasta las aplicaciones de usuario; sólo ejecuta instrucciones programadas en lenguaje de bajo nivel, realizando operaciones aritméticas y lógicas simples, tales como sumar, restar, multiplicar, dividir, las lógicas binarias y accesos a memoria.
Esta unidad central de procesamiento está constituida, esencialmente, por registros, una unidad de control, una unidad aritmético lógica (ALU) y una unidad de cálculo en coma flotante(conocida antiguamente como «co-procesador matemático»).

1.1 ARQUITECTURA BASICA Y SUS OPERACIONES

Arquitectura básica y sus operaciones.

El microprocesador tiene una arquitectura parecida a la computadora digital. En otras palabras, el microprocesador es como la computadora digital porque ambos realizan cálculos bajo un programa de control. Consiguientemente, la historia de la computadora digital ayuda a entender el microprocesador. El hizo posible la fabricación de potentes calculadoras y de muchos otros productos. El microprocesador utiliza el mismo tipo de lógica que es usado en la unidad procesadora central (CPU) de una computadora digital. El microprocesador es algunas veces llamado unidad microprocesadora (MPU). En otras palabras, el microprocesador es una unidad procesadora de datos. En un microprocesador se puede diferenciar diversas partes:
Encapsulado: es lo que rodea a la oblea de silicio en si, para darle consistencia, impedir su deterioro (por ejemplo, por oxidación por el aire) y permitir el enlace con los conectores externos que lo acoplaran a su zócalo a su placa base.
Memoria cache: es una memoria ultrarrápida que emplea el micro para tener a alcance directo ciertos datos que «predeciblemente» serán utilizados en las siguientes operaciones, sin tener que acudir a la memoria RAM, reduciendo así el tiempo de espera para adquisición de datos. Todos los micros compatibles con PC poseen la llamada cache interna de primer nivel o L1; es decir, la que está dentro del micro, encapsulada junto a él. Los micros más modernos (Pentium III Coppermine, Athlon Thunderbird, etc.) incluyen también en su interior otro nivel de caché, más grande, aunque algo menos rápida, es la caché de segundo nivel o L2 e incluso los hay con memoria caché de nivel 3, o L3.
Coprocesador matemático: unidad de coma flotante. Es la parte del micro especializada en esa clase de cálculos matemáticos, antiguamente estaba en el exterior del procesador en otro chip. Esta parte esta considerada como una parte «lógica» junto con los registros, la unidad de control, memoria y bus de datos.
Registros: son básicamente un tipo de memoria pequeña con fines especiales que el micro tiene disponible para algunos usos particulares. Hay varios grupos de registros en cada procesador. Un grupo de registros esta diseñado para control del programador y hay otros que no son diseñados para ser controlados por el procesador pero que la CPU los utiliza en algunas operaciones, en total son treinta y dos registros.
Memoria: es el lugar donde el procesador encuentra las instrucciones de los programas y sus datos. Tanto los datos como las instrucciones están almacenados en memoria, y el procesador las accede desde allí. La memoria es una parte interna de la computadora y su función esencial es proporcionar un espacio de almacenamiento para el trabajo en curso.
Puertos: es la manera en que el procesador se comunica con el mundo externo. Un puerto es análogo a una línea de teléfono. Cualquier parte de la circuitería de la computadora con la cual el procesador necesita comunicarse, tiene asignado un «número de puerto» que el procesador utiliza como si fuera un número de teléfono para llamar circuitos o a partes especiales.

1.2 TIPOS DE ARQUITECTURAS Y EVOLUCION DEL CPU

Tipos de arquitecturas.

ARQUITECTURAS CISC
La microprogramación es una característica importante y esencial de casi todas las arquítecturas CISC.
Como por ejemplo:
Intel 8086, 8088, 80286, 80386, 80486.
Motorola 68000, 68010, 68020, 68030, 6840.

La microprogramación significa que cada instrucción de máquina es interpretada por un microprograma localizado en una memoria en el circuito integrado del procesador.
En la década de los sesentas la micropramación, por sus características, era la técnica más apropiada para las tecnologías de memorias existentes en esa época y permitía desarrollar también procesadores con compatibilidad ascendente. En consecuencia, los procesadores se dotaron de poderosos conjuntos de instrucciones.
Las instrucciones compuestas son decodificadas internamente y ejecutadas con una serie de microinstrucciones almacenadas en una ROM interna. Para esto se requieren de varios ciclos de reloj (al menos uno por microinstrucción).

ARQUITECTURAS RISC
Buscando aumentar la velocidad del procesamiento se descubrió en base a experimentos que, con una determinada arquitectura de base, la ejecución de programas compilados directamente con microinstrucciones y residentes en memoria externa al circuito integrado resultaban ser mas eficientes, gracias a que el tiempo de acceso de las memorias se fue decrementando conforme se mejoraba su tecnología de encapsulado.
Debido a que se tiene un conjunto de instrucciones simplificado, éstas se pueden implantar por hardware directamente en la CPU, lo cual elimina el microcódigo y la necesidad de decodificar instrucciones complejas.
En investigaciones hechas a mediados de la década de los setentas, con respecto a la frecuencia de utilización de una instrucción en un CISC y al tiempo para su ejecución, se observó lo siguiente:
- Alrededor del 20% de las instrucciones ocupa el 80% del tiempo total de ejecución de un programa.
- Existen secuencias de instrucciones simples que obtienen el mismo resultado que secuencias complejas predeterminadas, pero requieren tiempos de ejecución más cortos.
Las características esenciales de una arquitectura RISC pueden resumirse como sigue:
Estos microprocesadores siguen tomando como base el esquema moderno de Von Neumann.
Las instrucciones, aunque con otras características, siguen divididas en tres grupos:
a) Transferencia.
b) Operaciones.
c) Control de flujo.

Reducción del conjunto de instrucciones a instrucciones básicas simples, con la que pueden implantarse todas las operaciones complejas.
Arquitectura del tipo load-store (carga y almacena). Las únicas instrucciones que tienen acceso a la memoria son 'load' y 'store'; registro a registro, con un menor número de acceso a memoria.
Casi todas las instrucciones pueden ejecutarse dentro de un ciclo de reloj. Con un control implantado por hardware (con un diseño del tipo load-store), casi todas las instrucciones se pueden ejecutar cada ciclo de reloj, base importante para la reorganización de la ejecución de instrucciones por medio de un compilador.
Pipeline (ejecución simultánea de varias instrucciones). Posibilidad de reducir el número de ciclos de máquina necesarios para la ejecución de la instrucción, ya que esta técnica permite que una instrucción puede empezar a ejecutarse antes de que haya terminado la anterior.
El hecho de que la estructura simple de un procesador RISC conduzca a una notable reducción de la superficie del circuito integrado, se aprovecha con frecuencia para ubicar en el mismo, funciones adicionales:
Unidad para el procesamiento aritmético de punto flotante.
Unidad de administración de memoria.
Funciones de control de memoria cache.
Implantación de un conjunto de registros múltiples.
La relativa sencillez de la arquitectura de los procesadores RISC conduce a ciclos de diseño más cortos cuando se desarrollan nuevas versiones, lo que posibilita siempre la aplicación de las más recientes tecnologías de semiconductores. Por ello, los procesadores RISC no solo tienden a ofrecer una capacidad de procesamiento del sistema de 2 a 4 veces mayor, sino que los saltos de capacidad que se producen de generación en generación son mucho mayores que en los CISC.
Por otra parte, es necesario considerar también que:
La disponibilidad de memorias grandes, baratas y con tiempos de acceso menores de 60 ns en tecnologías CMOS.
Módulos SRAM (Memoria de acceso aleatorio estática) para memorias cache con tiempos de acceso menores a los 15 ns.
Tecnologías de encapsulado que permiten realizar más de 120 terminales.
Esto ha hecho cambiar, en la segunda mitad de la década de los ochentas, esencialmente las condiciones técnicas para arquítecturas RISC.

Evolucion del CPU.

La CPU es el motor del ordenador, es la cabeza pensante del cuerpo, en definitiva es el ordenador.
 A lo largo de la historia de la Informática han sido muchas las CPU’s que han pasado por los ordenadores, pero al final, en el tema de los compatibles ha sido la serie X86 la que se ha llevado la palma.
                Cuando IBM se planteó la construcción de su Personal Computer, barajó una serie de CPU’s que cumplían una serie de requisitos, pero fue el 8086 el elegido para el PC.    
 El CPU 8086 fue uno de los primeros CPU’s de 16 Bits que salió al mercado, y era muy avanzado a su época. Sus principales características son:
                -Ancho de bus de 16 Bits.
 -Un bus de direccionamiento de 20 Bits.
 -Alimentación única a +5V.
 -Dos procesadores independientes en su interior:  Una unidad de comunicación con los buses y una unidad de ejecución de instrucciones.
 -Una serie de registros de 16 Bits.
 Cuando nos referimos que tiene un bus de direcciones de 20 Bits,  nos referimos a que es capaz de direccionar 220 direcciones, o sea, 1 MB.  Ahora nos parece ridículo, pero en su época era una barbaridad, por lo que parecía que Intel se había “pasado” en su diseño.
 Los primeros ordenadores basados en 8086, todos ellos de IBM, tenían una memoria de 64KB.  Nos puede parecer extraño que pudiendo manejar 1MB sólo lo hiciera con 64KB; debemos tener en cuenta que en aquella época la memoria era muy cara y no estaba al alcance de todo el mundo, so pena de encarecer el precio final del ordenador.  Además, el software no era tan exigente como el actual.
 Los primeros IBM PC tenían incorporado el BASIC, y como sistema de almacenamiento de masa tenía un casete.  Posteriormente, se añadió la disquetera.  Como sistema operativo, se utilizó el famoso CP/M.
 La evolución del software hizo que pronto se quedara corta la memoria.  Se hicieron ampliaciones a 128Kbytes, 256Kbytes, 512Kbytes y 640KBytes, que sólo podían pagar unos pocos.
 El aumento de memoria provocó determinadas incompatibilidades, que quedaron subsanadas con un ingenioso sistema denominado segmentación, que será explicado más adelante.
 De todas formas, los primitivos PC’s eran muy caros.  Es por ello por lo que IBM encargó a Intel un CPU compatible con el 8086 pero de menor precio, de manera que se  diseñó un CPU idéntico al 8086 pero con un bus de datos de sólo 8 Bits, denominada 8088.  Pronto se hizo muy popular, puesto que por su menor precio, el PC fue más económico.
 Las CPU’s 8086 y 8088 funcionaban a una velocidad de reloj de 4,77 MHz, siendo por tanto de las más rápidas que había en su época.  Además, surgió una gran cantidad de chips que acompañaban a los CPU’spara diversas funciones: generador de reloj, control de entradas/salidas, buffers, etc.
 Sin embargo, los 8086/8088 tenían poca facilidad para el cálculo matemático complejo, de manera que hubo que diseñar un chip específico para dichas operaciones.  A este chip se le denominó coprocesador matemático y su nombre fue 8087.
 ¿Qué es un coprocesador matemático?  Como su nombre indica, es un chip destinado única y exclusivamente a operaciones matemáticas complejas, tales como senos, cosenos, potenciación, exponenciación, etc.  Este chip va conectado al CPU mediante los buses de datos y direcciones.
 ¿Cómo funciona un coprocesador?  Supongamos que estamos ejecutando un programa que necesita de un cálculo matemático complejo.  Es necesario que el programa haya sido creado pensando en la posibilidad de utilizar un coprocesador.  Este punto es imprescindible, ya que el objeto del coprocesador es asistir a la CPU en operaciones que por sí sola no es capaz de hacer.  Si el “copro” no estuviera, el programa no debe funcionar.           
 En ese momento, el programa intenta ejecutar la orden compleja, y el CPU automáticamente deja de atender al programa, dándole paso al coprocesador.  Este ejecuta la instrucción y cuando termina, da paso otra vez al CPU, desconectándose.  Huelga decir que el “copro” pasa al CPU los resultados.
El uso del coprocesador permitió ejecutar programas complejos de diseño y cálculo, pero con el poco rendimiento del 8086/8088 no se aprovechó bien, de manera que hubo que pensar una manera de mejorar los PC´s.  La solución se llamó 80286.
3. 2.  La siguiente generación, el 80286
 La verdad es que la serie 8086/8088 tenía poca potencia de cálculo, sobre todo debido a su baja velocidad de proceso, que ya sabemos era de 4,77 MHz.  Es por eso por lo que Intel siguió investigando en el mundo de los procesadores, presentando en sociedad al 80186/80188.
 Estos CPU’s estaban optimizados en el tiempo de ejecución de las instrucciones, es decir, que la ejecución de una instrucción determinada ocupaba menos ciclos de reloj, de forma que el programa se ejecutaba más rápido.
De todas formas, estos microprocesadores apenas se vieron, debido a la aparición de un CPU que revolucionó el mercado de los ordenadores personales de la época, me refiero a la auténtica estrella de la casa: El 80286.
El 286 era un CPU pensado por y para la multitarea, debido a una serie de características internas que lo hacían idóneo para ello.  En primer lugar, era más rápido que sus antecesores, y no sólo en tiempo de ejecución  de instrucciones, sino también en el reloj del sistema.  Los 286 comenzaron a verse a velocidades de reloj de 6, 8, 12, 16 y 20MHz.     
Hay que hacer notar que los CPU’s a 16 y 20MHz no los fabricaba Intel:  Por aquel entonces comenzaba a despuntar la casa AMD, la cual ha dado al mundo versiones muy buenas de los CPU’s de Intel.  Debemos recordar al lector que Intel no había terminado de atar los cabos de las patentes, de manera que cualquiera podía basarse en sus diseños para crear un CPU.
 También entró en escena otro fabricante: HARRIS.  Si bien las CPU’s de Harris eran las más rápidas que jamás se habían visto, (¡20 MHz!), también
es cierto que quiso incorporar ciertas mejoras al 286 que provocaron una serie de problemas de compatibilidad con el software, de manera que los CPU’s de Harris siempre tuvieron fama de ser problemáticos.
Las características del 286 eran:
-Bus de datos de 16Bits.
-Direccionamiento ampliado de 24Bits.
-Dos modos de trabajo: Real y Protegido.
 Con 24Bits de bus de direcciones, el 286 permitía la ampliación de memoria hasta valores inimaginados:  16MB de  RAM. 
 A pesar de esto, era raro el 286 que tenía más de 4MB de RAM, pues el precio de la memoria en aquellos tiempos era muy caro:  Llegó a ser de hasta 10.000 Ptas el MB.
 Antes hemos dicho que el 286 tenía dos modos de trabajo: Real y Protegido.  El modo real de trabajo es el estándar del 8088/8086, con la limitación de 1MB de RAM.  Este modo se implantó para tener la compatibilidad con los sistemas antiguos.
 El modo Protegido se implantó para la integración del 286 en los sistemas multiusuario y multiprocesador de aquella época, que eran las primitivas versiones de OS/2  y UNIX.  En este modo se pueden utilizar la máxima memoria de la que se disponga, mediante la carga de un driver en el CONFIG.SYS de la máquina, ya sea en MS-DOS ó DR-DOS.
 Para conseguir la “multitarea” de los sistemas anteriormente reseñados, al 286  “no se le puede dejar solo” con la memoria.  Es por ello por lo que el 286 incorpora una especie de “coprocesador” encargado de las colas de instrucciones y el manejo de la memoria, conceptos estos que provocan una especie de “modo de supervisión” del trabajo realizado, concepto ya desarrollado por Motorola en su serie 68000.
Sin embargo, con el 286 comenzaron los errores de Intel, ya que había un error en el modo de trabajo virtual:  En determinadas circunstancias, no se podía volver al modo real, quedando el ordenador colgado.  Este fue uno de las motivos que impidió el avance del DOS.  Por aquella época,  se estaba preparando la versión 4.0 del MS-DOS.  Esta versión incluía una serie de órdenes que permitían el trabajo en modo protegido en DOS, lo cual hubiera acabado en posteriores versiones en una especie de DOS multitarea.  Lamentablemente, el fallo del 286 truncó esa esperanza, de manera que el MS-DOS 4.0 acabó con una serie de funciones y órdenes que no están documentadas en ningún sitio para que no se usen, que utilizaban las prestaciones avanzadas del 286.
 Esto hubiera supuesto la muerte de la compatibilidad, ya que también se habría acabado con la barrera de los 640KB.  Aún así, como opinión personal, creo que al final hubiera sido mejor para todos.
 Por supuesto, también apareció el coprocesador de turno, denominado 80287, con una serie de mejoras en el cálculo y en velocidad de ejecución.
 Sin embargo, no se siguió investigando para aumentar las prestaciones del 286, ya que estaba a punto de aparecer el CPU que marcó la revolución:  El 80386.

1.3 ARQUITECTURA MULTINUCLEO

Arquitectura multinucleo

HISTORIA

Como historia se puede decir que el primer procesador multinúcleo en el mercado fue el IBM Power 4 en el año 2000. Una alternativa a los procesadores multinúcleo son los sistemas multiprocesadores, que consisten en una placa madre que podía soportar desde 2 a más procesadores. El rendimiento es bastante bueno, pero también es bastante caro.

DESCRIPCION 
Un microprocesador multinúcleo es aquel que combina dos o más procesadores independientes en un sólo circuito integrado. Un dispositivo doble núcleo contiene solamente dos microprocesadores independientes. En general, los microprocesadores multinúcleo permiten que una computadora trabaje con Multiprocesamiento, es decir procesamiento en simultáneo con dos o más procesadores. Por otro lado, la tecnología de doble núcleo mejora el rendimiento de los entornos de trabajo multitarea y las aplicaciones con múltiples subprocesos. Por ejemplo, permite que aplicaciones fundamentales como antivirus o antiespías se ejecuten al mismo tiempo que aplicaciones empresariales con un impacto mínimo sobre el rendimiento del sistema.

Durante agosto de 2007 comenzaron a aparecer los procesadores de cuádruple núcleo, encabezados por el lanzamiento del Core 2 Quad de Intel. En el caso de las computadoras portátiles.


CLASES DE PROCESADORES MULTINUCLEOS
Antes de comenzar a nombrar los diferentes procesadores multinucleo definieremos lo que es HyperThreading.
HyperThreading: esta tecnología fue creada por Intel, para los procesadores Pentium 4 más avanzados. El Hyperthreading hace que el procesador funcione como si fuera dos procesadores. Esto fue hecho para que tenga la posibilidad de trabajar de forma multihilo (multithread) real, es decir pueda ejecutar muchos hilos simultáneamente.

Un procesador con la tecnología Hyperthreading tiene un 5% más de transistores que el mismo procesador sin esa tecnología.

Clases de procesadores multinucleo INTEL:
PentiPentium D están conformados por dos procesadores Pentium 4 Prescott sin Hyperthreadingum.
Core Duo
Core 2 Duo
Core2Quad

Clases de procesadores multinucleo AMD:

Athlon 64 X2
Opteron X2
Turion X2 (Portatiles)

FUTURO DE LOS PROCESADORES MULTINÚCLEO 

1.4 MULTIPROCESAMIENTO Y MULTINUCLEO

Multiprocesamiento

Multiprocesamiento o multiproceso es tradicionalmente conocido como el uso de múltiples procesos concurrentes en un sistema en lugar de un único proceso en un instante determinado. Como la multitarea que permite a múltiples procesos compartir una única CPU, múltiples CPUs pueden ser utilizados para ejecutar múltiples hilos dentro de un único proceso.
El multiproceso para tareas generales es, a menudo, bastante difícil de conseguir debido a que puede haber varios programas manejando datos internos (conocido como estado o contexto) a la vez. Los programas típicamente se escriben asumiendo que sus datos son incorruptibles. Sin embargo, si otra copia del programa se ejecuta en otro procesador, las dos copias pueden interferir entre sí intentando ambas leer o escribir su estado al mismo tiempo. Para evitar este problema se usa una variedad de técnicas de programación incluyendo semáforos y otras comprobaciones y bloqueos que permiten a una sola copia del programa cambiar de forma exclusiva ciertos valores.


Multinucleo

Los procesadores multi núcleo son chips independientes que contienen dos o más procesadores o núcleos de ejecución distintos en el mismo circuito integrado. Aunque son independientes, su construcción les permite compartir tareas de forma interdependiente.
Y, ¿eso qué significa para el usuario? Cada día que pasa se desarrollan programas que envían múltiples instrucciones que se tienen que procesar simultáneamente.
Estos programas toman miles de millones de decisiones en un segundo, especialmente mientras se ejecutan programas exigentes como reproducción de vídeo de alta definición o programas de ingeniería.
Los procesadores Intel Core 2 Duo incorporan dos núcleos de ejecución en un mismo paquete que ofrece, con el software adecuado, la ejecución totalmente paralela de varios subprocesos. Esto permite que cada núcleo funcione a una frecuencia menor, dividiendo la potencia normalmente asignada a un único núcleo.
El resultado para el usuario no es sólo un procesamiento más rápido. Es… bueno, ¡que tu foto ya está lista! Mientras chateas. Y has imprimido un diseño arquitectónico.
La tecnología de cuatro núcleos consiste en un único procesador que cuenta con cuatro núcleos. Piensa que son cuatro cerebros que están pensando al mismo tiempo pero que pueden trabajar juntos o por separado en una tarea grande, lo que se traduce en unos resultados más rápidos y eficientes.