viernes, 1 de marzo de 2013

TENDENCIAS DEL FUTURO


AMD BULLDOZER

Arquitectura construida a través de módulos con cuatro de ellos en el caso de los más potentes (los primeros de óctuple núcleo de procesamiento nativo que llegan al mercado de consumo) destinados a ordenadores de sobremesa (gama alta / entusiasta) y fabricados en una pastilla de 315 milímetros cuadrados con dos mil millones de transistores.





  
FUENTE: http://www.muycomputer.com/2011/10/12/todo-sobre-lanzamiento-procesadores-         amd-fx-bulldozer

Sus características principales completas son:

  • Ocho núcleos X86 de procesamiento nativo
  • Frecuencia base de 3,6 GHz
  • Frecuencia base ampliada a 4,2 GHz mediante Turbo Core 2.0
  • 256K caché L1 (64KB por modulo) / 128K data cache L1 (16K por modulo)
  • 8 Mbytes de caché de segundo nivel (2 MB por módulo)
  • 8 Mbytes de caché de tercer nivel (1 MB por núcleo)
  • Controladora de memoria integrada 128 bits (2 x 72 bit)
  • Velocidad del controlador de memoria : 2,2 GHz con Dual Dynamic Power Management
  • Memorias soportadas hasta PC3-14900 (DDR3-1866)
  • Hypertransport 3.0: Un link de 16-bit/16-bit hasta 4,44 GHz full duplex (2.2GHz x2)
  • Socket AM3+ 938-pin
  • Instrucciones SSE3, SSE4.1/4.2, AES, AVX Plus FMA4, XOP
  • Black Edition con multiplicador desbloqueado
  • TDP: 125 vatios
  • Tecnología de fabricación 32 nm DSL SOI (GlobalFoundries, Dresden-Alemania)
  • Precio base recomendado por el fabricante: 245 dólares

 

El más rápido de estos chips se llama FX-8150 y cuenta con una frecuencia básica de 3,6 GHz, una frecuencia máxima alcanzada en modo Turbo de 4,2 GHz, 8 MB de memoria caché de nivel 2 y una potencia de diseño térmico (TDP) de 125W.
El siguiente chip destacado es el FX-8120, que también empaqueta ocho núcleos de procesamiento y otras características similares, pero se ejecuta a 3,1 GHz (4 GHz en modo Turbo).
El modelo FX-8120 será el único procesador AMD de la serie FX que estará disponible en dos modelos diferentes, uno con una TDP de 125W y otro con TDP de 95W.
El modelo de seis núcleos, FX-6100, tiene una frecuencia de reloj básica de 3,3 GHz y cuenta con una memoria caché L2 de 6 MB, mientras que la frecuencia máxima en modo Turbo será de 3,9 GHz (según un documento que apareció a mediados de julio).
La cantidad de memoria caché de nivel 2 se reduce aún más al llegar al procesador FX-4100 de cuatro núcleos, que funciona a 3,6 GHz y puede llegar a 3,8 GHz cuando la tecnología Turbo Core está habilitada.
Todos los procesadores detallados se basan en el núcleo AMD Zambezi de 32nm, proporcionan 8 MB de memoria caché L3 compartida, un controlador de memoria DDR3 1866MHz de doble canal, un multiplicador desbloqueado y son compatibles con todas las placas base AM3+.

TABLA DE CARACTERISTICAS DE AMD


FUENTE: http://news.softpedia.es/Las-especificaciones-de-las-CPUs-AMD-Bulldozer-FX-filtradas-accidentalmente-por-Gigabyte-220451.html


INTEL CORE I7

Construído a 45 nm., es el primer procesador del Intel en conseguir poner cuatro y ocho procesadores integrados de forma nativa compartiendo una misma memoria caché y procesador de instrucciones. Asímismo vuelve la tecnología hyperthreading ya utlizada en el Pentium 4, por lo el sistema operativo nos reportaría 16 procesadores si tuvierámos instalado el Intel Core i7 Octo. Además el controlador de memoria va integrado dentro del propio procesador con la nueva tecnología QuickPath, algo a lo que AMD ya nos tiene acostumbrados desde hace bastante tiempo con su tecnología HyperTransport.

Memoria Caché Compartida de Alto-Nivel.

Mejoras en la memoria caché con una nueva arqitectura de tres niveles: la caché L1 con 32 Kb. de caché para intrucciones y otros 32 Kb para caché de datos; nueva caché L2 por núcleo de latencia muy baja con 256 Kb por núcleo para datos e instrucciones; y una nueva caché L3 compartida por todos los núcleos y con diferentes configuraciones en Mb. según el tipo de procesador, 8 Mb en el caso de un Core i7 con cuatro núcelos, aunque con el tiempo se irá ampliando esta memoria caché compartida.

Intel QuickPath

El procesador Intel Core i7 lleva integrado el controlador de memoria dentro del propio procesador. La tecnología Intel QuickPath Interconnect, es una tecnología de interconexión con el procesador punto a punto desarrollada por Intel en competencia con la tecnología HyperTransport de AMD


Carecteristicas Procesador Intel Core i7  Bloomfield  45 nm

Core i7-920 Core i7-930 Core i7-940 Core i7-950 Core i7-960 Core i7-965 Extreme Edition Core i7-975 Extreme Edition

  • Basado en la microarquitectura Nehalem .
  • Todos los modelos soportan: MMX , SSE , SSE2 , SSE3 , SSSE3 , SSE4.1 , SSE4.2 ,  Smart Cache.
  • FSB ha sido sustituido por QPI .
  • Tecnología Intel® Turbo Boost
  • Tecnología Intel® Hyper-Threading
  • Tecnología de virtualización Intel® (VT-x)
  • Intel® 64
  • Estados de inactividad
  • Tecnología Intel SpeedStep® mejorada
  • Bit de desactivación de ejecución
  • Cantidad de canales de memoria 3
 TABLA DE CARACTERISTICAS DE INTEL



FUENTE: http://www.nisfe.com/hardware/caracteristicas-procesadores-intel-core-i7-de-escritorio/

A CONTINUACION UN VIDEO DE QUE NOS MUESTRA LAS DIFERENCIAS ENTRE BULLDOZER E I7


BIBLIOGRAFIA

http://www.nisfe.com/hardware/caracteristicas-procesadores-intel-core-i7-de-escritorio/
http://www.slideshare.net/alemar802/core-i7-caracteristicas-ventajas-y-desventajas
http://infomicros.wordpress.com/2008/08/12/intelcorei7/
http://hardzone.es/2012/07/05/amd-vs-intel-los-procesadores-core-i7-3770k-y-amd-fx-8150-se-enfrentan-a-4-6ghz/
http://hardzone.es/2012/07/05/amd-vs-intel-los-procesadores-core-i7-3770k-y-amd-fx-8150-se-enfrentan-a-4-6ghz/
http://news.softpedia.es/Las-especificaciones-de-las-CPUs-AMD-Bulldozer-FX-filtradas-accidentalmente-por-Gigabyte-220451.html

sábado, 23 de febrero de 2013

EJEMPLOS MULTIPROCESADORES


Multiprocesadores con Memoria Compartida (MMC).- En los MMC, la memoria se organiza en uno o varios modulos, compartidos por todos los procesadores a través de distintos tipos de interconexión, con un acceso constante. A este tipo de arquitectura se le conoce como UMA (Uniform Memory Access).
El acceso a los modulos por parte de los procesadores se realiza en paralelo, pero cada modulo solamente puede atender una petición en cada instante de tiempo.

Caracteristicas: Las principales caracteristicas de los MMC son:
- Tiempos de acceso a memoria uniformes, ya que todos los procesadores se encuentran igualmente comunicados con la memoria principal.
- Las lecturas y escrituras de cada uno de los procesadores tienen exactamente las mismas latencias.
- La programacion es mucho mas facil que en los MMD, debido a que la gestión de la memoria de cada modulo es transparente para el programador.
- Al acceder simultáneamente a la memoria se producen colisiones y esperas, lo cual es un problema.
- Debido a la organización de la arquitectura, es poco escalable en numero de procesadores, debido a que puede surgir un cuello de botella si se aumenta el numero de CPU's.


Ejemplos:
- IBM 370: Para multiprogramación.
- Intel X86: Para cualquier instrucción (de acceso a memoria).
- SPARC (RISC): Operaciones atómicas registro-memoria.
- MIPS, PowerPC, Alpha: Para pareja de instrucciones.


Memoria Distribuida.- Estas tienen su propia memoria local, la informacion se comparte a traves de mensajes (paso de mensajes).
Esta directamente relacionado con procesamiento paralelo masivo (mpp), donde multiples procesadores trabajan en diferentes partes de un programa, donde cada bloque podra tener su propio sistema operativo y memoria, esta arquitectura se emplea en arreglos tipo cluster.

Caracteristicas: Sus caracteristicas son:
- Alta escalabilidad, se puede agregar memoria y procesador a medida que crece la demanda de recursos.
- Accesos a memoria lentos debido a que existe trafico en el bus de conexión.
- Programación Complicada.




Multiprocesadores con Memoria Distribuida Compartida (MMD).- Este tipo de multiprocesadores distribuye la memoria de manera propia y esta conectado mediante una red de interconexion al resto de procesadores. De esta manera, cada procesador podra acceder tanto a su memoria local, como a la memoria remota de cualquiera del resto de procesadores. Este tipo de arquitectura se denomina NUMA (Non-Uniform Memory Access).

Caracteristicas: Las caracteristicas de los MMD son:
- Cada procesador tiene su memoria.
- La comunicación se realiza por intercambio explicito de mensajes a través de una red.


Ejemplos:








jueves, 21 de febrero de 2013

Pipeline, Load/Store, Microprocesador Sparc



TUBERIAS RISC (RISC PIPELINE)




En la historia del hardware de computadora, algunos procesadores RISC usaban una solucion arquitectonica, ahora llamada Risc Pipeline clasico. Esos CPUs eran: MIPS, SPARC, Motorola 88000 y luego DLX.

Cada uno de estos diseños escalares RISC buscaron e intentaron ejecutar una instruccion por ciclo. El concepto principal comun de cada diseño era una ejecucion de 5 etapas de instrucciones de tuberia. Durante la operacion, cada fase de tuberia podria trabajar en una instruccion a la vez.

Cada una de estas fases consisitia de un set inicial de flip-flops y logica combinacional que operaba en las salidas de estos flops.

Las 5 etapas Risc Pipeline



Busqueda de instruccion


La cache de instrucciones en estas maquinas tenia una latencia de un ciclo. Durante la etapa de busqueda de instruccion, una instruccion de 32 bits era buscada desde la cache.
El predictor de la PC envia el contador de programa a la cache de instrucciones para leer la posicion actual. Al mismo tiempo, se predice la direccion de la siguiente instruccion incrementando el contador en 4 (todas las instrucciones tenian 4 bytes de largo). Esta prediccion siempre estaba equivocada en el caso de tomar una rama, saltar o en el caso de una excepcion. Las proximas maquinas usarian algoritmos mas complicados y precisos para adivinar la siguiente direccion de instruccion.

Decodificación


A diferencia de maquinas con microcodigos mas tempranas, la primera maquina RISC no tenia microcodigo. Una vez realizada la busqueda de la cache de instrucciones, los bits de las instrucciones eran desplazadas hacia abajo en la tuberia (pipeline), para que la logica combinacional simple pueda producir, en cada fase de la tuberia, el control de señales para la direccion de datos directamente desde los bits de instrucciones. Como resultado se realiza muy poca decodificación en el estado tradicionalmente llamado fase de decodificación.
Todas las instrucciones MIPS, SPARC y DLX tienen 2 registros de entrada como maximo. Durante la fase de decodificación estos dos nombres de registro son identificados dentro de las instrucciones, y los dos registros nombrados son relidos desde el archivo de registro. En el diseño MIPS, el archivo de registros tenia 32 entradas.
Al mismo tiempo que el archivo de registros era leido, una instruccion logica en esta fase determinaba si la tuberia estaba lista para ejecutar la instruccion en esta fase. Si no lo estaba, la instruccion logica podia causar que las dos fases, la de busqueda y la de decodificacion, se detengan. En un ciclo detenido, las fases podian prevenir a sus flops iniciales de aceptar nuevos bits.
Si la instruccion decodificada era una rama o un salto, la direccion apuntada de la rama o salto era computada en paralelo con la lectura del archivo de registros. El predictor de la PC en la primera fase es asignado al objetivo de la rama en lugar que la direccion incrementada que habia sido computada.

Ejecución


Las instrucciones en estas maquinas RISC simples, podian ser divididas en tres clases de latencia segun el tipo de operación:
- Registro de operacion de registro (Latencia de un solo ciclo): Suma, resta, comparación y operaciones logicas. Durante la etapa de ejecucion, los dos argumentos eran direccionados a una ALU simple, que generaba el resultado al final de la fase de ejecución.
- Memoria de referencia (Latencia de dos ciclos). Todas las cargas de la memoria. Durante la etapa de ejecución, la ALU combinaba los dos argumentos (un registro y una compensación constante) para producir una direccion virtual al final del ciclo.
- Instrucciones multi ciclo (Muchos ciclos de latencia). Integrales, multiplicaciones, divisiones y todas las operaciones de punto flotante. Durante la etapa de ejecución, los operandos de estas operaciones fueron enviadas a la unidad de multi-ciclos de multiplicar/dividir. El resto de la tuberia estaba libre para continuar con la ejecución mientras la unidad de multiplicacion/division hacia su trabajo. Para evitar complicaciones a la fase de reescritura, las instrucciones multiciclo escribian sus resultados en un set de registros separado.

Acceso a Memoria


Durante esta etapa, las instrucciones simples de un ciclo de latencia tenian sus resultados dirigidos a la siguiente etapa. Este dirigimiento asegura que las instrucciones de un ciclo y de dos ciclos siempre escriban sus resultados en la misma etapa de la tuberia, asi que solo un puerto de escritura al archivo de registros podia ser usado y este siempre disponible.

Reescritura


Durante esta etapa, las instrucciones de uno y dos ciclos escriben sus resultandos en el archivo de registros.

Riesgos


Hennessy y Patterson acuñaron el termino "riesgo" para situaciones en las cuales una tuberia completamente trivial podia producir respuestas equivocadas.

Riesgos Estructurales


Estos suceden cuando dos instrucciones podrian tratar de usar los mismos recursos al mismo tiempo. Las tuberias clasicas de RISC evitaban estos riesgos replicando hardware. En particular, instrucciones de rama podian haber usado la ALU para computar la direccion apuntada de la rama. Si la ALU era usada en la etapa de decodificación para ese proposito, una instruccion ALU seguida por una rama podrian haber intentado usar la ALU simultaneamente. Es facil resolver este conflicto diseñando un acumulador de objetivos de rama en la fase de decodificación.

Riesgos de Datos


Estos ocurren cuando una instruccion, ciegamente programada, intentaria usar un dato antes que el dato este disponible en el archivo de registros.
Los riesgos de datos son evitados por cualquiera de las siguientes dos maneras:
- Solucion A, Pasar por alto.
- Solucion B, Entrelazado de tuberias.


ARQUITECTURA LOAD/STORE


En ingenieria de computadoras, una arquitectura load/store, solo permite que la memoria sea accedida por operaciones de carga y almacenamiento, y todos los valores para una operacion sean cargados de la memoria y esten presentes en registros. Siguiendo la operación, el resultado necesita ser almacenado de nuevo en la memoria.
Por ejemplo, en un enfoque de load/sotre, ambos operadores para una operacion de suma deben estar en registros. Esto difiere de una arquitectura de registro-memoria en que uno de los operadores de la suma podria estar en la memoria, mientras que el otro esta en un registro.
El anterior ejemplo de una arquitectura load/store fue el de CDC 6600. Casi todos los procesadores vector usaban el enfoque load/store.
Sistemas RISC como PowerPc, SPARC, ARM o MIPS usan la arquitectura load/store.


PROCESADORES SPARC


SPARC es una arquitectura con un conjunto de instrucciones reducidas.
Fue originalmente diseñada por Sun Microsystems y dirigido por el ingeniero Kaa en 1985, se basa en los diseños RISC I y II de la Universidad de California en Berkeley que fueron definidos entre los años 1980 y 1982.
La empresa Sun Microsystems diseñó esta arquitectura y la licenció a otros fabricantes como Texas Instruments, Cypress Semiconductor, Fujitsu, LSI Logic entre otros.
SPARC es la primera arquitectura RISC abierta y como tal, las especificaciones de diseño están publicadas, así otros fabricantes de microprocesadores pueden desarrollar su propio diseño.
Una de las ideas innovadoras de esta arquitectura es la ventana de registros que permite hacer fácilmente compiladores de alto rendimiento y una significativa reducción de memoria en las instrucciones load/store en relación con otras arquitecturas RISC. Las ventajas se aprecian sobre todo en programas grandes.
La cpu SPARC esta compuesta de una unidad entera, UI (Integer Unit) que procesa la ejecución básica y una FPU (Floating-Point Unit) que ejecuta las operaciones y cálculos de reales. La IU y la FPU pueden o no estar integradas en el mismo chip.
Aunque no es una parte formal de la arquitectura, las computadoras basadas en sistemas SPARC de Sun Microsystems tienen una unidad de manejo de memoria (MMU) y un gran caché de direcciones virtuales (para instrucciones y datos) que están dispuestos periféricamente sobre un bus de datos y direcciones de 32 bits.

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.