martes, 4 de diciembre de 2012

MIPS

MIPS

Con el nombre de MIPS (siglas de Microprocessor without Interlocked Pipeline Stages) se conoce a toda una familia de microprocesadores de arquitectura RISC desarrollados por MIPS Technologies.


La familia de procesadores MIPS hizo su aparicion a mediados de los años ochenta. Desde entonces se han comercializado diversos procesadores de esta familia que se caracterizan por ser procesadores sencillos y potentes de tipo RISC. El primer procesador de la familia fue el MIPS R2000 que aparecio en 1985. Desde entonces han aparecido distintos modelos tanto de 32 como de 64 bits. En 1999, MIPS formalizo dos modelos de arquitectura: MIPS32 para 32 bits y MIPS64 para 64 bits.
En la actualidad muchos dispositivos empotrados utilizan procesadores MIPS. Ademas, estos procesadores han tenido mucho exito en la industria de las consolas de juegos (Ningento 64, Sony PlayStation, Sony PlayStation 2 y Sony PSP).


Historia


En 1981, un equipo liderado por John L. Hennessy en la Universidad de Stanford comenzó a trabajar en lo que se convertiría en el primer procesador MIPS. La idea básica era mejorar drásticamente el rendimiento mediante el uso de la segmentación, una técnica que ya era entonces muy conocida pero también difícil de implementar. Su funcionamiento puede resumirse en que la ejecución de una instrucción es dividida en varias etapas, comenzando la "etapa 1" de una instrucción antes de que haya finalizado la ejecución de la instrucción anterior. En contraste, los diseños tradicionales esperaban la finalización por completo de una instrucción antes de pasar a la siguiente, de modo que grandes áreas de la CPU permanecían inactivas mientras el proceso continuaba. Además, la frecuencia de reloj de toda la CPU venía dictada por la latencia del ciclo completo, en lugar de por el llamado camino crítico, latencia de la etapa de segmentación que más tarda en completarse.
Otra de las grandes barreras a superar por la segmentación era la necesidad de introducir bloqueos para poder asegurarse de que las instrucciones que necesitan varios ciclos de reloj para completarse dejan de cargar datos desde los registros de segmentación. Estos bloqueos pueden durar cantidades de tiempo considerables, y suponían una gran barrera a mejoras de velocidad posteriores. Por ello, uno de los principales aspectos del diseño del MIPS fue el marcarse como objetivo que todas las subfases (incluyendo el acceso a memoria) de todas las instrucciones tardasen un único ciclo en completarse, dejando así de ser necesarios los bloqueos, y permitiendo un rendimiento de un solo ciclo.
Aunque esta idea de diseño eliminó numerosas instrucciones útiles, destacando el hecho de que la multiplicación y la división necesitarían varias instrucciones, en conjunto se sabía que el rendimiento general del sistema sería drásticamente mejorado al poder funcionar los chips a frecuencias mucho mayores. Este ascenso de la velocidad sería difícil con la intervención de los bloqueos, pues el tiempo necesario es función del tamaño del chip y de la frecuencia de reloj: añadir el hardware necesario para evitarlos reduciría notablemente la velocidad del sistema.
La eliminación de estas instrucciones se convirtió en un tema polémico. Muchos observadores afirmaron que ese diseño (y los procesadores RISC en general) nunca superaría sus ambiciosas expectativas ("Si uno sencillamente sustituye la instrucción compleja de multiplicación por una simple serie de sumas, ¿dónde se produce el incremento de velocidad?"). Este análisis tan simplista ignoraba el hecho de que la velocidad del diseño residía en la segmentación, no en las instrucciones.
En 1984 Hennessy se convenció del futuro potencial comercial del diseño, dejando Stanford para formar MIPS Computer Systems. La empresa presentó su primer diseño, el R2000, en 1985, siendo mejorado con el R3000 de 1988. Estas CPU's de 32 bits fueron la base de la compañía durante los 80, y fueron empleadas principalmente en algunas series de workstations de SGI. Estos diseños comerciales se diferenciaron de los de investigación académica de Stanford en aspectos como la implementación de la mayoría de los bloqueos con hardware y el proporcionar instrucciones completas para la multiplicación y la división, entre otros.
En 1991 MIPS presentó su primer procesador de 64 bits, el R4000. Sin embargo, MIPS tuvo dificultades financieras en su lanzamiento al mercado. El diseño era tan importante para SGI, entonces uno de los pocos grandes clientes de MIPS, que en 1992 compró sin recelo alguno la compañía para evitar que se perdiera el diseño. Como subsidiaria de SGI, la compañía pasó a llamarse MIPS Technologies.
A principios de los 90 MIPS comenzó a otorgar licencias de sus diseños a terceros. Esto probó con justo éxito la simplicidad del núcleo, algo que le permitía ser empleado en numerosas aplicaciones que anteriormente utilizaban diseños CISC mucho menos capaces y de precio y número de puertas similares (comentar que ambas magnitudes están estrechamente relacionadas; el precio de una CPU está generalmente relacionado con el número de puertas y pins externos). Sun Microsystems intentó subirse al carro otorgando licencias de su núcleo SPARC, pero ni llegó a rozar el éxito del MIPS. A finales de los 90 MIPS tenía un caballo de batalla en los procesadores integrados, y en 1997 fue entregado el procesador MIPS 48 millones, convirtiéndose en la primera CPU RISC en desbancar a la famosa familia 68k de Motorola. La familia MIPS tuvo tanto éxito que SGI relanzó a MIPS Technologies en 1998. Más de la mitad de los ingresos de MIPS actualmente proceden de las concesiones de licencias, mientras que gran parte del resto procede de contratos de diseño de núcleos para ser fabricados por terceros.
En 1999 MIPS consolidó su sistema de licencias alrededor de dos diseños básicos, el MIPS32 de 32 bits y el MIPS64 de 64 bits. NEC, Toshiba y SiByte (posteriormente adquirida por Broadcom) obtuvieron licencias para el MIPS64 tan pronto como este procesador fue anunciado; a estas empresas les siguieron otras como Philips, LSI Logic e IDT. Los éxitos se sucedieron, y actualmente los núcleos MIPS son uno de los pesos pesados del mercado de dispositivos como los ordenadores de mano o decodificadores y sintonizadoras de TV. Un indicio de su éxito es el hecho de que Freescale (filial de Motorola) utilice procesadores MIPS en sus aparatos, en lugar de otros propios basados en el PowerPC.
Desde que la arquitectura MIPS es licenciable, ha atraído a numerosas compañías jóvenes a lo largo de los años. Una de las primeras nuevas compañías en diseñar procesadores MIPS fue Quantum Effect Devices. El equipo de diseño de MIPS encargado del R4300 fundó SandCraft, que diseñó el R5432 para NEC y posteriormente el SR7100, uno de los primeros procesadores basados en ejecución fuera de orden para sistemas embebidos. El equipo original de diseño del DEC StrongARM finalmente se dividió en dos compañías MIPS: SiByte, fabricante del SB-1250, uno de los primeros sistemas de chip único de alto rendimiento basados en el MIPS; y Alchemy Semiconductor (más tarde comprada por AMD), que fabricaba el sistema de chip único Au-1000 para aplicaciones poco exigentes. Lexra utilizó arquitectura pseudo-MIPS y añadió extensiones DSP para el mercado de los chips de audio y soporte multithreading para el mercado de redes. Debido a que Lexra no era concesionaria de ninguna licencia MIPS, dos pleitos fueron abiertos entre ambas empresas. El primero se resolvió rápidamente al prometer Lexra no seguir anunciando sus procesadores como MIPS-compatibles. El segundo fue largo y dañó los intereses de ambas compañías, terminando con la concesión por parte de MIPS de una licencia gratuita a Lexra, así como el pago de una gran cantidad de dinero.

La arquitectura MIPS32

MIPS32 es un modelo de arquitectura implementado por diversos modelos de procesador. Un procesador conforme a la arquitectura MIPS32 esta formado por un procesador principal y puede tener hasta cuatro coprocesadores: 
- El coprocesador 0 ofrece funcionalidades de apoyo al sistema de memoria asi como a la gestion de excepciones.
- El coprocesador 1 esta reservado para la unidad de coma flotando (FPU o floating point unit).
- Los coprocesadores 2 y 3 estan reservados para extensiones especificas.

El simulador spim ofrece una implementacion parcial del coprocesador 0, asi como la implementacion del coprocesador 1, dejando sin implementar los coprocesadores 2 y 3.

Banco de registros

La arquitectura MIPS32 define un banco de registros generales de 32 registros de 4 bytes. De ellos, uno es un registro de solo lectura que mantiene siempre el valor cero, y el resto son registros de lectura y escritura. El listado completo de registros puede consultar el Apendice A. Los convenios de programacion MIPS asignan usos especificos a cada uno de ellos. Estos son los siguientes.
- El registro $zero tiene cableado el valor numerico cero.
- Los registros $a0, $a1, $a2, $a3 se utilizan para pasar parametros a subrutinas. No se garantiza que sus valores se preserven entre llamadas.
- Los registros $v0 y $v1 se utilizan para devolver valores de subrutinas.
- El registro $ra contiene la direccion de retorno y se utiliza para volver despues de una llamada a subrutina.
- Los registros $s0, $s1, $s2, $s3, $s4, $s5, $s6 y $s7 son registros salvados. Esto quiere decir que si una subrutina modifica su valor, debe guardar su valor anterior y restaurarlo posteriormente.
- Los registros $t0, $t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8 y $t9 son registros temporales. Es decir, no hay garantia de que una subrutina no vaya a modificar su valor.
- El registro $gp contiene el puntero global.
- Los registros $k0 y $k1 estan reservados para s uso por el nucleo del sistema operativo.

Existen dos formas de hacer referencia a un registro, por su nombre simbolico o por su numero de registro. De este modo el registro $a0 tambien puede referenciarse como registro $4. No obstante, a la hora de escribir un programa en ensamblador, se prefiere el uso de nombres simbolicos.
Ademas de los registros generales, existen tres registros especiales de 32 bits.
- pc. Es el registro contador de programa, que almacena la direccion de la siguiente instruccion a ejecutar.
- hi y lo. Son un par de registros que almacenan el resultado de operaciones de multiplicacion o division que generan resultados de 64 bits. En el registro hi se almacena la parte alta del resultado y en el registro lo se almacena la parte baja.

Modelo de memoria.

Un aspecto importante en cualquier procesador con un ancho de palabra superior a 1 byte es el ordenamiento de los bytes dentro de una palabra. Dicho ordenamiento puede tomar dos alternativas: big endian o little endian. La figura muestra las diferencias entre los dos tipos de ordenamiento.



El simulador spim no usa el ordenamiento real del procesador MIPS. En vez de ellos, y por motivos de implementacion, toma el ordenamiento de la maquina en la que se ejecuta.
En cuanto al direccionamiento de la memoria, este se realiza por bytes. Esto quiere decir que las direcciones de memoria de dos palabras consecutivas estaran separadas en 4 unidades (ya que las palabras son de 4 bytes). No obstante, debe tenerse en cuenta que la mayor parte de las instrucciones que acceden a memoria lo hacen de forma alineada, por lo que la direccion a la que se accede debe ser multiplo de 4.

Las direcciones validas de un proceso van desde la direccion 0x00400000 hasta la direccion 0x7fffefff.
Las direcciones inferiores y superiores a este rango quedan reservadas para el nucleo del sistema operativo. Esto incluye una region de 4 MB en la parte inferior y los 2 GB superiores de la memoria.
Tal y como puede observarse en la siguiente figura, el espacio de memoria utilizable por un programa de usuario es algo menor de 2 GB.




Instrucciones del MIPS

El conjunto de instrucciones permite realizar instrucciones de carga y almacenamiento desde y hacia memoria, tiene capacidad de desarrollar programas que resuelven problemas aritmeticos y logicos, y ofrece la posibilidad de controlar el flujo de la ejecucion del programa mediante instrucciones de comparaciones y salto. En este ultimo caso dispone de instrucciones de salto tanto condicional como incondicional. Una breve clasificacion seria:
- Instrucciones aritmeticas.
- Instrucciones logicas.
- Instrucciones de salto incondicional.

Todas las instrucciones del MIPS R2000 tienen el mismo tamaño (32 bits). Se pueden clasificar en funcion de los elementos que utilizan. Cada uno de los componentes que utiliza la instruccion se debe especificar en una serie de bits. Los distintos tipos de instrucciones constan de diferentes tamaños para los espacios reservados para esos bits es decir, utilizan diferentes formatos para codificar sus campos.

En el caso del MIPS R2000 se distinguen tres tipos de formatos de instruccion:
- Formato R o tipo registro.
- Formato I o de tipo inmediato.
- Formato J o de salto incondicional.





sábado, 10 de noviembre de 2012

Memorias

Introducción

Ninguna computadora seria funcional si esta no pudiera almacenar los datos que necesitemos aun cuando apaguemos el sistema.
El almacenamiento es guardar datos que la computadora no este usando. Tiene tres ventajas sobre la memoria:
1. Hay más espacio en almacenamiento que en memoria.
2. El almacenamiento retiene su contenido cuando se apaga el computador.
3. El almacenamiento es más barato que la memoria.

La manera mas común de almacenar datos es en un disco magnético. Dicho disco esta contenido en una unidad de disco (drive). La mayoria de las computadoras personales tienen un disco duro no removible. Pero cuentan con una o dos unidades de disco flexible, las cuales le permiten usar discos flexibles removibles. El disco duro puede guardar mucho mas datos que los discos flexibles y por esta razon el disco duro es el dispositivo por excelencia para el almacenamiento de datos. Los discos flexibles pueden ser usados para cargar nuevos programas o datos al disco duro, además sirven para intercambiar datos con otros usuarios o para realizar una copia de respaldo de los datos del disco duro.

Las computadoras pueden leer y escribir datos en un disco duro de forma mas rapida que la que pueden leer y escribir datos en un disco flexible. Esto se debe a que el disco duro esta construido con materiales mas pesados, tiene una velocidad giratoria mas alta que un disco flexible y además esta sellado dentro de una camara de aire, por lo tanto las particulas de polvo no pueden entrar en contacto con los cabezales.

La capacidad de registrar una cadena de caracteres o de instrucciones y de volver a incorporarlo en determinado proceso o ejecutarlo bajo ciertas circunstancias se denomina memorización.

El computador dispone de varios dispositivos de memorización:
- Memoria ROM.
- Memoria RAM.
- Memorias externas.
- Acumulador.

La principal memoria externa es el disco duro, conformado por un aparato independiente, que contiene un conjunto de placas de plástico magnetizado apto para registrar la grabacion de los datos que constituyen los archivos y sistemas de programas. Estos discos giran a gran velocidad impulsados por un motor y es recorrido por un conjunto de brazos que leen sus registros. Tambien contiene un circuito electronico propio, que recepciona y graba, como tambien lee y dirige hacia otros componentes del computador la informacion registrada.

Unidades de Memoria

- Bit: Puede tener valores de 0 o 1, es decir codigo binario.
- Byte: Son el conjunto de 8 bits.
- Kilobyte (Kb) = Agrupacion de 1024 bytes.
- Megabyte (Mb) = Agrupación de 1024 kilobytes.
- Gigabyte (Gb) = Agrupación de 1024 megabytes.
- Terabyte (Tb) = Agrupación de 1024 terabytes.

Aún pueden ir aumentando estas unidades usando la misma nomenclatura, por ejemplo podriamos hablar de megaterabytes, gigaterabytes, etc, estas unidades son infinitas pero con la tecnología actual solo usamos las ya mencionadas.


Memoria RAM

Memoria RAM viene de Random Access Memory (Memoria de acceso aleatorio) es la memoria donde el ordenador guarda los datos que estan siendo utilizados en ese instante. Es definido aleatorio porque el procesador accede a la informacion que esta en la memoria en cualquier punto, no es necesario acceder a la informacion anterior o posterior. La memoria RAM esta actualizandose constantemente mientras el ordenador esta en uso. Esta memoria pierde los datos guardados una vez que el ordenador se apaga.

Cuando una aplicacion es ejecutada, primero se carga en la memoria RAM. El procesador realiza accesos a dicha memoria para cargar instrucciones y enviar o recibir datos. Reduce el tiempo de acceso a la memoria, ayuda a mejorar las prestaciones del sistema. La RAM es bastante rapida, pero como ya mencionamos pierde la informacion al apagar el sistema.


Esta memoria guarda los bits que le corresponden en pequeños condensadores a los que se aplican una pequeña carga electrica y se mantienen durante un tiempo en funcion de la constante de descarga. Es por eso que se realizan "refrescos" de memoria para optimizar el tiempo requerido para la operacion del refresco y para controlar estos condensadores.


Tipos de memorias RAM

DRAM: acrónimo de "Dynamic Random Access Memory", o simplemente RAM ya que es la original, y por tanto la más lenta.
Usada hasta la época del 386, su velocidad de refresco típica es de 80 ó 70 nanosegundos (ns), tiempo éste que tarda en vaciarse para poder dar entrada a la siguiente serie de datos. Por ello, la más rápida es la de 70 ns. Físicamente, aparece en forma de DIMMs o de SIMMs, siendo estos últimos de 30 contactos.
FPM (Fast Page Mode): a veces llamada DRAM, puesto que evoluciona directamente de ella, y se usa desde hace tanto que pocas veces se las diferencia. Algo más rápida, tanto por su estructura (el modo de Página Rápida) como por ser de 70 ó 60 ns. Es lo que se da en llamar la RAM normal o estándar. Usada hasta con los primeros Pentium, físicamente aparece como SIMMs de 30 ó 72 contactos (los de 72 en los Pentium y algunos 486).
Para acceder a este tipo de memoria se debe especificar la fila (página) y seguidamente la columna. Para los sucesivos accesos de la misma fila sólo es necesario especificar la columna, quedando la columna seleccionada desde el primer acceso. Esto hace que el tiempo de acceso en la misma fila (página) sea mucho más rápido. Era el tipo de memoria normal en los ordenadores 386, 486 y los primeros Pentium y llegó a alcanzar velocidades de hasta 60 ns. Se presentaba en módulos SIMM de 30 contactos (16 bits) para los 386 y 486 y en módulos de 72 contactos (32 bits) para las últimas placas 486 y las placas para Pentium.
EDO o EDO-RAM: Extended Data Output-RAM. Evoluciona de la FPM. Permite empezar a introducir nuevos datos mientras los anteriores están saliendo (haciendo su Output), lo que la hace algo más rápida (un 5%, más o menos). Mientras que la memoria tipo FPM sólo podía acceder a un solo byte (una instrucción o valor) de información de cada vez, la memoria EDO permite mover un bloque completo de memoria a la caché interna del procesador para un acceso más rápido por parte de éste. La estándar se encontraba con refrescos de 70, 60 ó 50 ns. Se instala sobre todo en SIMMs de 72 contactos, aunque existe en forma de DIMMs de 168.
La ventaja de la memoria EDO es que mantiene los datos en la salida hasta el siguiente acceso a memoria. Esto permite al procesador ocuparse de otras tareas sin tener que atender a la lenta memoria. Esto es, el procesador selecciona la posición de memoria, realiza otras tareas y cuando vuelva a consultar la DRAM los datos en la salida seguirán siendo válidos. Se presenta en módulos SIMM de 72 contactos (32 bits) y módulos DIMM de 168 contactos (64 bits).
SDRAM: Sincronic-RAM. Es un tipo síncrono de memoria, que, lógicamente, se sincroniza con el procesador, es decir, el procesador puede obtener información en cada ciclo de reloj, sin estados de espera, como en el caso de los tipos anteriores. Sólo se presenta en forma de DIMMs de 168 contactos; es la opción para ordenadores nuevos.
SDRAM funciona de manera totalmente diferente a FPM o EDO. DRAM, FPM y EDO transmiten los datos mediante señales de control, en la memoria SDRAM el acceso a los datos esta sincronizado con una señal de reloj externa.
La memoria EDO está pensada para funcionar a una velocidad máxima de BUS de 66 Mhz, llegando a alcanzar 75MHz y 83 MHz. Sin embargo, la memoria SDRAM puede aceptar velocidades de BUS de hasta 100 MHz, lo que dice mucho a favor de su estabilidad y ha llegado a alcanzar velocidades de 10 ns. Se presenta en módulos DIMM de 168 contactos (64 bits). El ser una memoria de 64 bits, implica que no es necesario instalar los módulos por parejas de módulos de igual tamaño, velocidad y marca
PC-100 DRAM: Este tipo de memoria, en principio con tecnología SDRAM, aunque también la habrá EDO. La especificación para esta memoria se basa sobre todo en el uso no sólo de chips de memoria de alta calidad, sino también en circuitos impresos de alta calidad de 6 o 8 capas, en vez de las habituales 4; en cuanto al circuito impreso este debe cumplir unas tolerancias mínimas de interferencia eléctrica; por último, los ciclos de memoria también deben cumplir unas especificaciones muy exigentes. De cara a evitar posibles confusiones, los módulos compatibles con este estándar deben estar identificados así: PC100-abc-def.
BEDO (burst Extended Data Output): Fue diseñada originalmente para soportar mayores velocidades de BUS. Al igual que la memoria SDRAM, esta memoria es capaz de transferir datos al procesador en cada ciclo de reloj, pero no de forma continuada, como la anterior, sino a ráfagas (bursts), reduciendo, aunque no suprimiendo totalmente, los tiempos de espera del procesador para escribir o leer datos de memoria.
RDRAM: (Direct Rambus DRAM). Es un tipo de memoria de 64 bits que puede producir ráfagas de 2ns y puede alcanzar tasas de transferencia de 533 MHz, con picos de 1,6 GB/s. Pronto podrá verse en el mercado y es posible que tu próximo equipo tenga instalado este tipo de memoria. Es el componente ideal para las tarjetas gráficas AGP, evitando los cuellos de botella en la transferencia entre la tarjeta gráfica y la memoria de sistema durante el acceso directo a memoria (DIME) para el almacenamiento de texturas gráficas. Hoy en día la podemos encontrar en las consolas NINTENDO 64.
DDR SDRAM: (Double Data Rate SDRAM o SDRAM-II). Funciona a velocidades de 83, 100 y 125MHz, pudiendo doblar estas velocidades en la transferencia de datos a memoria. En un futuro, esta velocidad puede incluso llegar a triplicarse o cuadriplicarse, con lo que se adaptaría a los nuevos procesadores. Este tipo de memoria tiene la ventaja de ser una extensión de la memoria SDRAM, con lo que facilita su implementación por la mayoría de los fabricantes.
SLDRAM: Funcionará a velocidades de 400MHz, alcanzando en modo doble 800MHz, con transferencias de 800MB/s, llegando a alcanzar 1,6GHz, 3,2GHz en modo doble, y hasta 4GB/s de transferencia. Se cree que puede ser la memoria a utilizar en los grandes servidores por la alta transferencia de datos.
ESDRAM: Este tipo de memoria funciona a 133MHz y alcanza transferencias de hasta 1,6 GB/s, pudiendo llegar a alcanzar en modo doble, con una velocidad de 150MHz hasta 3,2 GB/s.
 La memoria FPM (Fast Page Mode) y la memoria EDO también se utilizan en tarjetas gráficas, pero existen además otros tipos de memoria DRAM, pero que SÓLO de utilizan en TARJETAS GRÁFICAS, y son los siguientes:
MDRAM (Multibank DRAM) Es increíblemente rápida, con transferencias de hasta 1 GIGA/s, pero su coste también es muy elevado.
SGRAM (Synchronous Graphic RAM) Ofrece las sorprendentes capacidades de la memoria SDRAM para las tarjetas gráficas. Es el tipo de memoria más popular en las nuevas tarjetas gráficas aceleradoras 3D.
VRAM Es como la memoria RAM normal, pero puede ser accedida al mismo tiempo por el monitor y por el procesador de la tarjeta gráfica, para suavizar la presentación gráfica en pantalla, es decir, se puede leer y escribir en ella al mismo tiempo.
WRAM (Window RAM) Permite leer y escribir información de la memoria al mismo tiempo, como en la VRAM, pero está optimizada para la presentación de un gran número de colores y para altas resoluciones de pantalla. Es un poco más económica que la anterior.
Para procesadores lentos, por ejemplo el 486, la memoria FPM era suficiente. Con procesadores más rápidos, como los Pentium de primera generación, se utilizaban memorias EDO. Con los últimos procesadores Pentium de segunda y tercera generación, la memoria SDRAM es la mejor solución.

Dispositivos de Almacenamiento Secundario

La memoria secundaria son todas las unidades de disco que en un computador puede tener, se usan para almacenar programas ejecutables y grandes volúmenes de datos que requieren ser acsesados en algún momento.
Los Floppy drives: Por mala y anticuada que sea una computadora, siempre dispone de al menos uno de estos aparatos. Su capacidad es totalmente insuficiente para las necesidades actuales, pero cuentan con la ventaja que les dan los muchos años que llevan como estándar absoluto para almacenamiento portátil.
Las disqueteras son compatibles "hacia atrás"; es decir, que en una disquetera de 3,5" de alta densidad (de 1,44 MB) podemos usar discos de 720 Kb o de 1,44 MB, pero en una de doble densidad, más antigua, sólo podemos usarlos de 720 Kb.
Unidades de disco Ls-120: es una unidad diseñada para la lecutra y escritura en disquetes de 3 ½ pulgadas de gran capacidad de almacenamiento (120 MB) en especial para archivos y programas modernos mas amplios. La tecnología del LS -120 utiliza una interfase IDE que graba en pistas de alta densidad, las cuales son leídas por un rayo láser en cabezas de alta precisión.
Discos duros
Pertenecen a la llamada memoria secundaria o almacenamiento secundario. Al disco duro se le conoce con gran cantidad de denominaciones como disco duro, rígido (frente a los discos flexibles o por su fabricación a base de una capa rígida de aluminio), fijo (por su situación en la computadora de manera permanente), Winchester (por ser esta la primera marca de cabezas para disco duro). Estas denominaciones aunque son las habituales no son exactas ya que existen discos de iguales prestaciones pero son flexibles, o bien removibles o transportables.
Las capacidades de los discos duros varían desde 10 Mb. hasta varios GB. en minis y grandes computadoras. Para conectar un disco duro a una computadora es necesario disponer de una tarjeta controladora (o interfaz). La velocidad de acceso depende en gran parte de la tecnología del propio disco duro y de la tarjeta controladora asociada al discos duro.
Estos están compuestos por varios platos, es decir varios discos de material magnético montados sobre un eje central sobre el que se mueven. Para leer y escribir datos en estos platos se usan las cabezas de lectura/escritura que mediante un proceso electromagnético codifican / decodifican la información que han de leer o escribir. La cabeza de lectura/escritura en un disco duro está muy cerca de la superficie, de forma que casi vuela sobre ella, sobre el colchón de aire formado por su propio movimiento. Debido a esto, están cerrados herméticamente, porque cualquier partícula de polvo puede dañarlos.
Los discos duros han evolucionado mucho desde los modelos primitivos de 10 ó 20 MB. Actualmente los tamaños son del orden de varios gigabytes, el tiempo medio de acceso es muy bajo (menos de 20 ms) y su velocidad de transferencia es tan alta que deben girar a más de 5000 r.p.m. (revoluciones por minuto), lo que desgraciadamente hace que se calienten como demonios, por lo que no es ninguna tontería instalarles un ventilador para su refrigeración.
Una diferencia fundamental entre unos y otros discos duros es su interfaz de conexión. Antiguamente se usaban diversos tipos, como MFM, RLL o ESDI, aunque en la actualidad sólo se emplean dos: IDE y SCSI.
El interfaz usado por el disco duro: El interfaz es la conexión entre el mecanismo de la unidad de disco y el bus del sistema. El interfaz define la forma en que las señales pasan entre el bus del sistema y el disco duro. En el caso del disco, su interfaz se denomina controladora o tarjeta controladora, y se encarga no sólo de transmitir y transformar la información que parte de y llega al disco, sino también de seleccionar la unidad a la que se quiere acceder, del formato, y de todas las órdenes de bajo nivel en general. La controladora a veces se encuentra dentro de la placa madre.
Se encuentran gobernados por una controladora y un determinado interfaz que puede ser:
· ST506: Es un interfaz a nivel de dispositivo; el primer interfase utilizado en los PC’s. Proporciona un valor máximo de transferencia de datos de menos de 1 Mbyte por segundo (625k por segundo con codificación MFM, y 984k por segundo con codificación RLL). Actualmente esta desfasado y ya no hay modelos de disco duro con este tipo de interfaz.
· ESDI: Es un interfaz a nivel de dispositivo diseñado como un sucesor del ST506 pero con un valor más alto de transferencia de datos (entre 1.25 y 2.5 Mbytes por segundo).Ya ha dejado de utilizarse este interfaz y es difícil de encontrar.
· IDE: Es un interfase a nivel de sistema que cumple la norma ANSI de acoplamiento a los AT y que usa una variación sobre el bus de expansión del AT (por eso también llamados discos tipo AT) para conectar una unidad de disco a la CPU, con un valor máximo de transferencia de 4 Mbytes por segundo. En principio, IDE era un término genérico para cualquier interfaz a nivel de sistema. La especificación inicial de este interfaz  está mal definida. Es más rápida que los antiguos interfaz ST506 y ESDI pero con la desaparición de los ATs este interfaz desaparecerá para dejar paso al SCSI y el SCSI-2.
Íntimamente relacionado con el IDE, tenemos lo que se conoce como ATA, concepto que define un conjunto de normas que deben cumplir los dispositivos. Años atrás la compañía Western Digital introdujo el standard E-IDE (Enhanced IDE), que mejoraba la tecnología superando el límite de acceso a particiones mayores de 528 Mb. y se definió ATAPI, normas para la implementación de lectores de CD-ROM y unidades de cinta con interfaz IDE. E-IDE se basa en el conjunto de especificaciones ATA-2. Como contrapartida comercial a E-IDE, la empresa Seagate presento el sistema FAST-ATA-2, basado principalmente en las normas ATA-2. En cualquier caso a los discos que sean o bien E-IDE o FAST-ATA, se les sigue aplicando la denominación IDE como referencia.
Para romper la barrera de los 528 Mb. las nuevas unidades IDE proponen varias soluciones:
* El CHS es una traducción entre los parámetros que la BIOS contiene de cilindros, cabezas y sectores (ligeramente incongruentes) y los incluidos en el software de sólo lectura (Firmware) que incorpora la unidad de disco.
* El LBA (dirección lógica de bloque), estriba en traducir la información CHS en una dirección de 28 bits manejables por el sistema operativo, para el controlador de dispositivo y para la interfaz de la unidad.
Debido a la dificultad que entraña la implementación de la compatibilidad LBA en BIOS, muchos de las computadoras personales de fabricación más reciente continúan ofreciendo únicamente compatibilidad con CHS. El techo de la capacidad que permite las solución CHS se sitúa en los 8.4 GB, que por el momento parecen suficientes.
· SCSI: Es un interfase a nivel de sistema, diseñado para aplicaciones de propósito general, que permite que se conecten hasta siete dispositivos a un único controlador. Usa una conexión paralela de 8 bits que consigue un valor máximo de transferencia de 5 Mbytes por segundo. Actualmente se puede oír hablar también de SCSI-2 que no es más que una versión actualizada y mejorada de este interfase. Es el interfase con más futuro, si bien tiene problemas de compatibilidad entre las diferentes opciones de controladoras, discos duros, impresoras, unidades de CD-ROM y demás dispositivos que usan este interfase debido a la falta de un estándar verdaderamente sólido.
Las mejoras del SCSI-2 sobre el SCSI tradicional son el aumento de la velocidad a través del bus, desde 5 Mhz a 10 Mhz, duplicando de esta forma el caudal de datos. Además se aumenta el ancho del bus de 8 a 16 bits, doblando también el flujo de datos. Actualmente se ha logrado el ancho de 32 bits, consiguiendo velocidades teóricas de hasta 40 Mbytes / seg.
Los interfaces IDE y SCSI llevan la electrónica del controlador en el disco, por lo que el controlador realmente no suele ser más que un adaptador principal para conectar el disco al PC. Como se puede ver unos son interfaz a nivel de dispositivo y otros a nivel de sistema, la diferencia entre ambos es:
· INTERFAZ A NIVEL DE DISPOSITIVO: Es un interfaz que usa un controlador externo para conectar discos al PC. Entre otras funciones, el controlador convierte la ristra de datos del disco en datos paralelos para el bus del microprocesador principal del sistema. ST506 y ESDI son interfaz a nivel de dispositivo.
· INTERFAZ A NIVEL DE SISTEMA: Es una conexión entre el disco duro y su sistema principal que pone funciones de control y separación de datos sobre el propio disco (y no en el controlador externo), SCSI e IDE son interfaz a nivel de sistema.
Discos duros IDE
El interfaz IDE (más correctamente denominado ATA, el estándar de normas en que se basa) es el más usado en PCs normales, debido a que tiene un balance bastante adecuado entre precio y prestaciones. Los discos duros IDE se distribuyen en canales en los que puede haber un máximo de 2 dispositivos por canal; en el estándar IDE inicial sólo se disponía de un canal, por lo que el número máximo de dispositivos IDE era 2.
El estándar IDE fue ampliado por la norma ATA-2 en lo que se ha dado en denominar EIDE (Enhanced IDE o IDE mejorado). Los sistemas EIDE disponen de 2 canales IDE, primario y secundario, con lo que pueden aceptar hasta 4 dispositivos, que no tienen porqué ser discos duros mientras cumplan las normas de conectores ATAPI; por ejemplo, los CD-ROMs y algunas unidades SuperDisk se presentan con este tipo de conector.
En cada uno de los canales IDE debe haber un dispositivo Maestro (master) y otro Esclavo (slave). El maestro es el primero de los dos y se suele situar al final del cable, asignándosele generalmente la letra "C" en DOS. El esclavo es el segundo, normalmente conectado en el centro del cable entre el maestro y la controladora, la cual muchas veces está integrada en la propia placa base; se le asignaría la letra "D".
Los dispositivos IDE o EIDE como discos duros o CD-ROMs disponen de unos microinterruptores (jumpers), situados generalmente en la parte posterior o inferior de los mismos, que permiten seleccionar su carácter de maestro, esclavo o incluso otras posibilidades como "maestro sin esclavo". Las posiciones de los jumpers vienen indicadas en una etiqueta en la superficie del disco, o bien en el manual o serigrafiadas en la placa de circuito del disco duro, con las letras M para designar "maestro" y S para "esclavo".
Los modos DMA tienen la ventaja de que liberan al microprocesador de gran parte del trabajo de la transferencia de datos, encargándoselo al chipset de la placa (si es que éste tiene esa capacidad, como ocurre desde los tiempos de los Intel Tritón), algo parecido a lo que hace la tecnología SCSI. Sin embargo, la activación de esta característica (conocida como bus mastering) requiere utilizar los drivers adecuados y puede dar problemas con el CD-ROM, por lo que en realidad el único modo útil es el UltraDMA.
Discos duros SCSI
Sobre este interfaz ya hemos hablado antes en el apartado de generalidades; sólo recalcar que la ventaja de estos discos no está en su mecánica, que puede ser idéntica a la de uno IDE (misma velocidad de rotación, mismo tiempo medio de acceso...) sino en que la transferencia de datos es más constante y casi independiente de la carga de trabajo del microprocesador.
Esto hace que la ventaja de los discos duros SCSI sea apreciable en computadoras cargadas de trabajo, como servidores, computadoras para CAD o vídeo, o cuando se realiza multitarea de forma intensiva, mientras que si lo único que queremos es cargar Word y hacer una carta la diferencia de rendimiento con un disco UltraDMA será inapreciable.
En los discos SCSI resulta raro llegar a los 20 MB/s de transferencia teórica del modo Ultra SCSI, y ni de lejos a los 80 MB/s del modo Ultra-2 Wide SCSI, pero sí a cifras quizá alcanzables pero nunca superables por un disco IDE. De lo que no hay duda es que los discos SCSI son una opción profesional, de precio y prestaciones elevadas, por lo que los fabricantes siempre escogen este tipo de interfaz para sus discos de mayor capacidad y velocidad. Resulta francamente difícil encontrar un disco duro SCSI de mala calidad, pero debido a su alto precio conviene proteger nuestra inversión buscando uno con una garantía de varios años, 3 ó más por lo que pueda pasar... aunque sea improbable.
Los componentes físicos de una unidad de disco duro
· CABEZA DE LECTURA / ESCRITURA: Es la parte de la unidad de disco que escribe y lee los datos del disco. Su funcionamiento consiste en una bobina de hilo que se acciona según el campo magnético que detecte sobre el soporte magnético, produciendo una pequeña corriente que es detectada y amplificada por la electrónica de la unidad de disco.
· DISCO: Convencionalmente los discos duros están compuestos por varios platos, es decir varios discos de material magnético montados sobre un eje central. Estos discos normalmente tienen dos caras que pueden usarse para el almacenamiento de datos, si bien suele reservarse una para almacenar información de control.
· EJE: Es la parte del disco duro que actúa como soporte, sobre el cual están montados y giran los platos del disco.
· IMPULSOR DE CABEZA: Es el mecanismo que mueve las cabezas de lectura / escritura radialmente a través de la superficie de los platos de la unidad de disco.
Mientras que lógicamente la capacidad de un disco duro puede ser medida según los siguientes parámetros:
· CILINDRO: Es una pila tridimensional de pistas verticales de los múltiples platos. El número de cilindros de un disco corresponde al número de posiciones diferentes en las cuales las cabezas de lectura/escritura pueden moverse.
· CLUSTER: Es un grupo de sectores que es la unidad más pequeña de almacenamiento reconocida por el DOS. Normalmente 4 sectores de 512 bytes constituyen un Cluster (racimo), y uno o más Cluster forman una pista.
· PISTA: Es la trayectoria circular trazada a través de la superficie circular del plato de un disco por la cabeza de lectura / escritura. Cada pista está formada por uno o más Cluster.
· SECTOR: Es la unidad básica de almacenamiento de datos sobre discos duros. En la mayoría de los discos duros los sectores son de 512 Bytes cada uno, cuatro sectores constituyen un Cluster.
Otros elementos a tener en cuenta en el funcionamiento de la unidad es el tiempo medio entre fallos, MTBF (Mean Time Between Failures), se mide en horas (15000, 20000, 30000..) y a mayor numero mas fiabilidad del disco, ya que hay menor posibilidad de fallo de la unidad. Otro factor es el AUTOPARK o aparcamiento automático de las cabezas, consiste en el posicionamiento de las cabezas en un lugar fuera del alcance de la superficie del disco duro de manera automático al apagar la computadora, esto evita posibles daños en la superficie del disco duro cuando la unidad es sometida a vibraciones o golpes en un posible traslado.



jueves, 18 de octubre de 2012

ARQUITECTURA Y MICROARQUITECTURA



Para poder diferenciar estos términos, debemos definir cada uno de ellos.

Micro-arquitectura: En computación, una micro-arquitectura es una descripción del circuito eléctrico de una computadora, de la unidad central de proceso o del procesador digital de señal, que es suficiente para describir completamente el funcionamiento del hardware.

En ámbitos académicos, suele emplearse el término "organización de la computadora", mientras que en la industria de la computación suele utilizarse el término micro-arquitectura  Ambas palabras son sinónimos.

La micro-arquitectura de una máquina, generalmente es representada empleando un diagrama de bloques que describe las interconexiones entre registros, buses y bloques funcionales de la máquina. Esta descripción incluye el número de unidades de ejecución, el tipo de las unidades de ejecución (como punto flotante, entero, SIMD, etc.), la naturaleza del pipelining, el diseño de la memoria caché y el soporte de periféricos.

El esquema físico del circuito, las construcciones de hardware y otros detalles físicos son llamados implementación de esa micro-arquitectura  Dos máquinas pueden tener la misma micro-arquitectura  y por lo tanto el mismo diagrama de bloques, pero diferentes implementaciones de hardware.

Arquitectura: La arquitectura de computadoras es el diseño conceptual y la estructura operacional fundamental de un sistema de computadora. Es decir, es un modelo y una descripción funcional de los requerimientos y las implementaciones de diseño para varias partes de una computadora, con especial interés en la forma en que la unidad central de proceso (UCP) trabaja internamente y accede a las direcciones de memoria.
También suele definirse como la forma de seleccionar e interconectar componentes de hardware para crear computadoras según los requerimientos de funcionalidad, rendimiento y costo.
El ordenador recibe y envía la información a través de los periféricos por medio de los canales. La UCP es la encargada de procesar la información que le llega al ordenador. El intercambio de información se tiene que hacer con los periféricos y la UCP. Todas aquellas unidades de un sistema exceptuando la UCP se denomina periférico, por lo que el ordenador tiene dos partes bien diferenciadas, que son: la UCP (encargada de ejecutar programas y que está compuesta por la memoria principal, la UAL y la UC) y los periféricos (que pueden ser de entrada, salida, entrada-salida y comunicaciones).
La micro-arquitectura y la arquitectura de conjunto de instrucciones constituyen la arquitectura de computadora.

Las características que se pretende que tenga un conjunto de instrucciones son cuatro, principalmente:
-  Completo: Que se pueda realizar en un tiempo finito cualquier tarea ejecutable con un ordenador (computable o decidible).
-  Eficiente: Que permita alta velocidad de cálculo sin exigir una elevada complejidad en su UC y ALU y sin consumir excesivos recursos (memoria), es decir, debe cumplir su tarea en un tiempo razonable minimizando el uso de los recursos.
-  Autocontenidas: Esto es, que contengan en sí mismas toda la información necesaria para ejecutarse.
-  Independientes: Que no dependan de la ejecución de alguna otra instrucción.
Se puede comprobar que para que un conjunto de instrucciones sea completo solo se necesitan cuatro instrucciones:
-> escritura
-> mover a la izquierda una posición y leer
-> mover a la derecha una posición y leer
-> parar
En esta idea se basan las arquitecturas RISC, no obstante, con este conjunto no se puede conseguir la eficiencia del repertorio de instrucciones por lo que en la práctica el conjunto suele ser más amplio en aras de conseguir un mejor rendimiento, tanto en uso de recursos como en consumo de tiempo.

DIFERENCIAS ENTRE ARQUITECTURA Y MICRO-ARQUITECTURA

La micro-arquitectura debe distinguirse de la arquitectura de conjunto de instrucciones. Esta última es una imagen abstracta de un sistema de computación como sería visto por un programador en lenguaje máquina, e incluye el conjunto de instrucciones, modos de dirección de memoria, registros del procesador, y formatos de direcciones y datos.

La micro-arquitectura  en cambio, es de nivel más inferior, más concreto. Muestra las partes constituyentes del sistema y cómo se interconectan e interoperan, para así implementar la especificación de arquitectura. 

Diferentes máquinas podrían tener una misma arquitectura de conjunto de instrucciones, y así ser capaces de ejecutar los mismos programas, sin embargo pueden tener diferentes micro-arquitecturas.

Estas diferentes micro-arquitecturas (junto con los avances en las tecnologías de fabricación de semiconductores) son las que permiten nuevas generaciones de procesadores que permiten alcanzar mejores niveles de rendimiento comparadas con las generaciones previas. En teoría, una única micro-arquitectura (especialmente si ésta incluye microcódigo) podría ser usada para implementar dos conjuntos de instrucciones diferentes, por la programación de dos almacenes de control diferentes (el almacén de control almacena el microprograma del CPU).

Ejemplos de arquitectura RISC

Los diseños RISC han llevado a un gran número de plataformas y arquitecturas al éxito, algunas de las más grandes:
-    La línea MIPS Technologies Inc., que se encontraba en la mayoría de las computadoras de Silicon Graphics hasta 2006, y estuvo en las consolas ya descatalogadas Nintendo 64, PlayStation y PlayStation 2. Actualmente se utiliza en la PlayStation Portable y algunos routers.
-    La serie IBM POWER, utilizado principalmente por IBM en Servidores y superordenadores.
-    La versión PowerPC de Motorola e IBM (una versión de la serie IBM POWER) utilizada en los ordenadores AmigaOne, Apple Macintosh como el iMac, eMac, Power Mac y posteriores (hasta 2006). Actualmente se utiliza en muchos sistemas empotrados en automóviles, routers, etc, así como en muchas consolas de videojuegos, como la Playstation 3, Xbox 360 y Wii.
-    El procesador SPARC y UltraSPARC de Sun Microsystems y Fujitsu, que se encuentra en sus últimos modelos de servidores (y hasta 2008 también en estaciones de trabajo).
-    El PA-RISC y el HP/PA de Hewlett-Packard, ya descatalogados.
-  El DEC Alpha en servidores HP AlphaServer y estaciones de trabajo AlphaStation, ya descatalogados.
-  El ARM – El paso de hardware de instrucciones x86 en operaciones RISC llega a ser significativo en el área y la energía para dispositivos móviles e integrados. Por lo tanto, los procesadores ARM dominan en PALM, Nintendo DS,Game Boy Advance y en múltiples PDAs, Apple iPods, Apple iPhone, iPod Touch (Samsung ARM1176JZF, ARM Cortex-A8, Apple A4), Apple iPad (Apple A4 ARM -based SoC), videoconsolas como Nintendo DS (ARM7TDMI, ARM946E-S), Nintendo Game Boy Advance (ARM7TDMI).
-  El Atmel AVR usado en gran variedad de productos, desde mandos de la Xbox a los coches de la empresa BMW.
-  La plataforma SuperH de Hitachi, originalmente usada para las consolas Sega Super 32X, Saturn y Dreamcast, ahora forman parte de el corazón de muchos equipos electrónicos para el consumo.SuperH es la plataforma base de el grupo Mitsubishi - Hitachi. Estos dos grupos, unidos en 2002, dejaron aparte la propia arquitectura RISC de Mitsubishi, el M32R.
-  Los procesadores XAP usados en muchos chips wireless de poco consumo (Bluetooth, wifi) de CSR.

Ejemplos de arquitectura CISC

Motorola 68000, Zilog Z80 y toda la familia Intel x86, AMD x86_64 usada en la mayoría de las computadoras personales actuales.

domingo, 7 de octubre de 2012

Unidad Central de Procesos



UNIDAD CENTRAL DE PROCESAMIENTO

La unidad central de procesos (CPU) es la parte fundamental de cualquier sistema basado en microprocesador. Habitualmente se identifica la CPU con el circuito integrado del sistema que realiza tal función, si bien esta puede realizarse por medio de varios circuitos integrados o, como también es frecuente, empleando un único circuito integrado que realiza otras funciones además de las propias de la CPU, como puedan ser la memoria o los periféricos de entrada-salida. En cualquier caso la CPU debe ocuparse de generar las señales de control necesarias y ejecutar el programa del usuario. Para ello realiza varias tareas, las cuales se pueden dividir en dos subtareas o fases,  a saber:
      1.     Fase de búsqueda (fetch). Se realiza el acceso a la memoria del sistema para leer la instrucción.
      2.     Fase de ejecución. Se realiza la interpretación de la instrucción y la activación de los recursos necesarios para su ejecución.
Para realizar estas tareas la CPU se divide en varios bloques funcionales interconectados mediante buses internos. Se pueden utilizar uno o más buses independientes según las características y prestaciones que se deseen. En las CPU de aplicación general suele usarse un bus único que se comparte entre los diferentes subsistemas, lo que permite una única transferencia simultánea. Si se desea incrementar la capacidad de transferencia u optimizar el acceso simultaneo a más de un dato, se diseña la CPU con dos o más buses internos, de tal forma que sea posible realizar transferencias simultaneas, acceder a más de un dato en una única operación, separar los caminos de los datos y de las instrucciones, etc.
Podemos encontrar ejemplos de CPU con bus único en procesadores comerciales de aplicación general como el 8085, 6800, 8086, 68000, etc. El uso de varios buses internos es típico de CPU de aplicaciones específicas como los microcontroladores y los Procesadores Digitales de Señal (DSP). Los primeros están diseñados para aplicaciones industriales y de control: entre los más conocidos, podemos citar al 8051, PIC, 68HC11, etc. Los DSP están optimizados para realizar los cálculos habituales en procesado de señal, básicamente productos y sumas: los más conocidos son los TMS320.
En las figuras que siguen se muestran las estructuras internas más típicas de una CPU. En la figura 1 puede verse la estructura de un bus único y en la figura 2 se observa la estructura con dos buses.


Los buses son conjuntos de líneas o canales físicos (hilos de cobre) que permiten la comunicación entre los elementos principales del ordenador, memoria central, ALU y unidad de control y donde se vuelca la información que proviene de los periféricos para llegar hasta la CPU. Son de tres tipos:
      -          Bus de direcciones. Por el que se transporta la información de las direcciones o posiciones de los datos                                                                       e instrucciones en memoria o la información del periférico.
      -          Bus de datos. Por el que viajan los datos.
      -          Bus de control. Que transporta señales de control y de estado de los elementos.
Como puede verse en cualquiera de las figuras, la estructura interna de una CPU contiene los siguientes    bloques funcionales:
      -          La Unidad Central de Procesos de un sistema basado en microprocesador.
     -     Unidad Aritmetico - Logica (ALU). La función de la ALU es realizar las operaciones aritméticas y  lógicas. La operación a realizar la indica la unidad de control. Los operandos se guardan en registros al igual  que el resultado. Si el registro donde se guarda el resultado es específico se llama acumulador.
     -          Unidad de Control (UC). La tarea de la UC es la de generar las señales de control necesarias para  organizar los flujos de información externos e internos entre la CPU y el resto del sistema.
     -          Registros. Los registros son elementos de memoria que sirven para guardar información importante y  necesaria para la CPU. Los podemos agrupar en dos grandes tipos:
a)      Generales: Contienen los operandos que se especifican en las instrucciones del programa. Como su nombre indica son de carácter general, aunque algunos de ellos pueden tener misiones específicas, como es el caso del registro acumulador, el cual almacena el resultado de las operaciones aritméticas y lógicas.
b)      Específicos: son aquellos en los que su contenido y/o su uso cumplen una función concreta. Veamos los más comunes:
·         PC: contador de programa (Program Counter). Contiene la dirección de la próxima instrucción a ejecutar.
·         IR: registro de instrucción (Instruction Register). Contiene el código de operación de la instrucción en ejecución.
·         SR: registro de estado (Status Register). Contiene bits de control y estado que indican el resultado de ciertas operaciones e informaciones relevantes de la CPU tras la ejecución de cada instrucción.
·         SP: puntero de pila (Stack Pointer). Almacena la dirección de un bloque de memoria principal conocido como pila y anteriormente descrito, donde la CPU guarda información temporalmente. El acceso se realiza según un esquema LIFO (Last In First Out).
Los registros son los que el usuario conoce y direcciona explícitamente en los programas de aplicación. Además de esto registros, existen otros que no son visibles para el usuario, como el MAR (Memory Address Register) y el MDR (Memory Data Register), que anteriormente se han representado en las figuras 1 y 2. Estos registros son necesarios para retener temporalmente los datos y direcciones y completar la ejecución de las instrucciones.

viernes, 5 de octubre de 2012

Jerarquía de Memoria


¿Qué es memoria?

Una memoria es un dispositivo de almacenamiento de instrucciones y/o datos.

Jerarquía de memoria

La memoria de un computador esta organizada como una jerarquía (Figura 1) compuesta por diferentes niveles de almacenamiento entre los que se mueve la información a medida que la necesitan los procesos durante su ejecución.
Las limitaciones de diseño de la memoria de un computador se resumen en tres variables:
      ·         ¿Qué cantidad?
      ·         ¿Qué velocidad?
      ·         ¿Qué costo?
Estas tres características compiten entre sí y generalmente se cumplen las siguientes relaciones:
      ·         A menor tiempo de acceso, mayor costo por bit.
      ·         A mayor capacidad, menor costo por bit.
      ·         A mayor capacidad, mayor tiempo de acceso.
A medida que se desciende por la jerarquía (Figura 1) se tienen las siguientes condiciones:
      ·         Disminución del costo por bit.
      ·         Aumento de la capacidad.
      ·         Aumento del tiempo de acceso (menos velocidad).
      ·         Disminución de la frecuencia de acceso a la memoria por el procesador.




 El objetivo de estructurar toda la memoria de un computador como una jerarquía es conseguir una memoria relativamente grande y rápida a un precio no muy alto. El funcionamiento de la jerarquía de memoria se basa en hacer copias de información de los niveles más lentos y grandes a los niveles más rápidos en los que se necesita. Así, por ejemplo, cuando se quiere ejecutar un programa hay que copiar las instrucciones y datos del mismo, que se encuentra en disco (en el fichero ejecutable) a memoria principal. De igual forma, el procesador a medida que va accediendo a memoria caché, provoca que la información necesaria, en forma de líneas de cache, se copie de memoria principal a memoria caché. Finalmente hay muchas instrucciones que necesitan que la información resida en los registros del procesador, esto hace que haya que copiar información de la memoria caché a los registros.
En el acceso a un nivel de la jerarquía se produce un fallo cuando el dato referenciado no se encuentra en ese nivel. Se dice que hay un acierto en caso contrario. La existencia de un fallo requiere que los datos referenciados se copien del nivel inferior al nivel en el que se ha provocado el fallo.
La existencia de múltiples copias de un mismo dato en una jerarquía de memoria produce un problema de falta de coherencia. En efecto, cuando se modifica un dato en un nivel superior de la jerarquía, se produce una discrepancia con la copia del dato que se encuentra en el nivel inferior. Para resolver este problema es necesario que la información modificada en un nivel superior de la jerarquía se actualice en algún momento en el nivel inferior.


MEMORIA PRINCIPAL


La memoria principal satisface las demandas de las caches y unidades vectoriales y sirve como interfaz de entrada y salida ya que es el destino de la entrada así como la fuente para la salida, las medidas de rendimiento de la memoria principal hacen énfasis a la latencia y al ancho de banda.

MEMORIA CACHE

Cache es el nombre escogido para representar el nivel de jerarquía de memoria entre la CPU y memoria principal, y este es el uso dominante del término. Hoy en día aparecen caches en toda clase de computadoras y en algunos computadores más de una vez

En la cache se guardan las palabras de memoria de mayor uso, cuando la CPU necesita una palabra primero lo busca en la cache. Solo si la palabra no esta ahí recurre a la memoria principal, esto mejora el tiempo de acceso a los programas que se quiere usar.

MEMORIA VIRTUAL

La memoria virtual es una técnica de administración de la memoria real que permite al sistema operativo brindarle al software de usuario y a sí mismo un espacio de direcciones mayor que la memoria real o física
La mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la CPU, la memoria caché (tanto dentro como fuera del CPU), la memoria física (generalmente en forma de RAM, donde la CPU pueden leer directa y razonablemente rápido) y el disco duro que es mucho más lento, pero también más grande y barato.
Muchas aplicaciones requieren acceso a más información (código y datos) que la que se puede mantener en memoria física. Esto es así sobre todo cuando el sistema operativo permite múltiples procesos y aplicaciones ejecutándose simultáneamente. Una solución al problema de necesitar mayor cantidad de memoria de la que se posee consiste en que las aplicaciones mantengan parte de su información en disco, moviéndola a la memoria principal cuando sea necesario. Hay varias formas de hacer esto. Una opción es que la aplicación misma sea responsable de decidir qué información será guardada en cada sitio (segmentación), y de traerla y llevarla. La desventaja de esto, además de la dificultad en el diseño e implementación del programa, es que es muy probable que los intereses sobre la memoria de dos o varios programas generen conflictos entre sí: cada programador podría realizar su diseño teniendo en cuenta que es el único programa ejecutándose en el sistema. La alternativa es usar memoria virtual, donde la combinación entre hardware especial y el sistema operativo hace uso de la memoria principal y la secundaria para hacer parecer que el ordenador tiene mucha más memoria principal (RAM) que la que realmente posee. Este método es invisible a los procesos. La cantidad de memoria máxima que se puede hacer ver que hay tiene que ver con las características del procesador. Por ejemplo, en un sistema de 32 bits, el máximo es 232, lo que da 4096 Megabytes (4 Gigabytes). Todo esto hace el trabajo del programador de aplicaciones mucho más fácil, al poder ignorar completamente la necesidad de mover datos entre los distintos espacios de memoria.

DISCO MAGNETICO

Un disco magnético consiste en uno o más platos de aluminio con un recubrimiento magnetizable. Originalmente estos platos llegaron a tener 50 cm de diámetro, pero en la actualidad suelen ser de 3 a 12 cm, y algunos discos para computadoras portátiles tienen diámetros de menos de 3cm y se siguen encogiendo. Una cabeza de disco contiene una bobina de inducción flota sobre la superficie y muy cerca de ella, descansando en un colchón de aire. Cuando una corriente positiva o negativa pasa por la cabeza, magnetiza la superficie justo debajo de ella, alineando las partículas magnéticas hacia la izquierda o hacia la derecha, dependiendo de la polaridad de la corriente de la unidad.

miércoles, 12 de septiembre de 2012

Benchmark

Un benchmark es un conjunto de procedimientos (programas de computación) para evaluar el rendimiento de un ordenador. Hay cuatro categorías generales de pruebas de comparación :
  • Pruebas aplicaciones-base (application-based) las ejecuta y las cronometra.
  • Pruebas playback (playback test), las cuales usan llamadas al sistema durante actividades especificas de una aplicación(Ej: Llamados a gráficos o uso del disco) y las ejecuta aisladamente.
  • Prueba sintética (synthetic test) , la cual enlaza actividades de la aplicación en subsistemas específicos.
  • Prueba de inspección (inspection tests), la cual no intenta imitar la actividad de la aplicación, sino que las ejecuta directamente en los subsistemas específicos.

Los test de aplicaciones base entregan la mejor forma de medir el rendimiento completo de el sistema en el mundo real.
El programa Winstone de Zdnet, ejecuta mas de una docena de las aplicaciones mas populares en el ambiente Windows, es un ejemplo de este tipo de comparadores.
Donde sea factible la tecnología playback le da la manera mas real de medir subsistemas individuales en aislación.
El programa WinBench de ZDnet utiliza la tecnología playback para probar gráficos, Cd-rom y subsistemas de disco duro, también corre cientos de otras pruebas en áreas especificas del computador.
Los test Synthetic continúan en el estado de medición del rendimiento es por eso que winbench usa las pruebas de procesadores.
Los test de inspección tienen su lugar verificando el comportamiento libre de fallas y midiendo rendimiento operación por operación, por esto se incluye el test de inspección en el winbench.

Dhrystone

Dhrystone es una medida de rendimiento de la CPU en entero, expresado en Millones de instrucciones por segundo(MIPS).
El Dhrystone benchmark es ampliamente usado en la industria de las computadoras como una medida de rendimiento, Wintune (programa benchmark) usa la versión modificada del Dhrystone que mantiene sus datos en el almacenador del programa. Esto permite al benchmarks trabajar apropiadamente en múltiple threads en Windows NT.
El Dhrystone estándar , fue originalmente diseñado para un único ambiente (single-threaded), manteniendo alguno de sus datos en variables estáticas globales.
El Dhrystone es un benchmark sintético, diseñado para contener ejemplos representativos de las operaciones normalmente requeridas por las aplicaciones. Estas no calculan el resultado de ningún tipo, pero hacen enlaces de complicadas secuencias de instrucciones usadas por las aplicaciones.
El resultado del Dhrystone es determinado por el tiempo que toma la medición para ejecutar esta secuencia de instrucciones .
La aritmética del entero simple, decisiones lógicas, y accesos de memoria son las actividades dominantes de la CPU en la mayoría de los programas Windows.
El Dhrystone benchmark hace un uso intensivo de estas áreas. Por lo tanto el Dhrystone no tiene suficiente código de programa o acceso suficiente a las locaciones de memoria para simular la actividad de la mayoría de los programas reales.
Su lugar de trabajo de código y datos puede generalmente ser mantenido en el cache de la CPU, con lo cual resulta con un alto rendimiento.
Desde que el Dhrystone no ofrece una buena indicación del rendimiento de memoria, Wintune tiene un set separado de prueba de memoria.

Whetstone

Whetstone es una medida de rendimiento de la CPU en punto flotante, expresado en Millones de operaciones de punto flotante por segundo (MFLOPS).
El Whetstone benchmark es ampliamente usado en la industria de la computación como una medida de rendimiento, Wintune usa una versión modificada del Whetstone que mantiene sus datos en el programa de almacenamiento. Esto permite al benchmarks trabajar apropiadamente en múltiples threads en Windows NT.
El Whetstone estándar, fue originalmente diseñado para un ambiente único, manteniendo alguno de sus datos en variables estáticas globales .
La aritmética del punto flotante es la mas significativa en programas que requieren FPU . Estos son en su mayoría ingeniería científica, de estadísticas, y programas de ayuda de diseño en computación. Es también un pequeño componente en hoja de cálculo, dibujo y pintado de programas. (Aunque la hoja de calculo trabaja con números también tiene una mejor presentación en pantalla.) Los programas procesadores de texto típicamente no hacen ningún computo en punto flotante. El Whetstone hace mucha aritmética del punto flotante un poco de acceso de memoria, y un poco la aritmética del entero.

Usando el rendimiento para elegir el sistema correcto

¿Porqué considerar el Rendimiento?

Juzgar el rendimiento de un sistema cuando se están tomando decisiones de compra es algo crítico a fin de retardar la obsolescencia y proteger su inversión.


Los procesadores Pentium(R) ofrecen la vida útil más larga.

Usted quiere obtener el máximo en la compra de su sistema. Parte de esto consiste en asegurarse que el sistema que elige le permite hacer lo que desea durante toda la vida del sistema. Esto significa que no solo va a gestionar el software de hoy sino que dispone de los recursos necesarios para ejecutar los mas complejos programas del día de mañana.
Tal como se muestra en el diagrama de más arriba, para cualquier punto determinado en el tiempo se encuentra disponible una gama de procesadores-- aquellos que ofrecen el máximo rendimiento posible y aquellos que ofrecen un mínimo nivel de rendimiento. Las flechas indican que comprando el de mayor rendimiento se obtiene una vida útil más larga.
Es importante evaluar a una serie de aspectos relativos al rendimiento cuando se han de tomar decisiones de compra.