Blog realizado con la finalidad de fortalezer los conocimientos para todo aquel usuario.

martes, 19 de abril de 2011
ENSAMBLADOR
El término ensamblador (del inglés assembler) se refiere a un tipo de programa informático que se encarga de traducir un fichero fuente escrito en un lenguaje ensamblador, a un fichero objeto que contiene código máquina, ejecutable directamente por la máquina para la que se ha generado. El propósito para el que se crearon este tipo de aplicaciones es la de facilitar la escritura de programas, ya que escribir directamente en código binario, que es el único código entendible por la computadora, es en la práctica imposible. La evolución de los lenguajes de programación a partir del lenguaje ensamblador originó también la evolución de este programa ensamblador hacia lo que se conoce como programa compilador.
Funcionamiento
El programa lee el fichero escrito en lenguaje ensamblador y sustituye cada uno de los códigos nemotécnicos que aparecen por su código de operación correspondiente en sistema binario para la plataforma que se eligió como destino en las opciones específicas del ensamblador es una basura.cc
Tipos de ensambladores
Artículo principal: Ensamblador de alto nivel
Podemos distinguir entre tres tipos de ensambladores:
- Ensambladores básicos. Son de muy bajo nivel, y su tarea consiste básicamente en ofrecer nombres simbólicos a las distintas instrucciones, parámetros y cosas tales como los modos de direccionamiento. Además, reconoce una serie de directivas (o meta instrucciones) que indican ciertos parámetros de funcionamiento del ensamblador.
- Ensambladores modulares, o macro ensambladores. Descendientes de los ensambladores básicos, fueron muy populares en las décadas de los 50 y los 60, antes de la generalización de los lenguajes de alto nivel. Hacen todo lo que puede hacer un ensamblador, y además proporcionan una serie de directivas para definir e invocar macroinstrucciones (o simplemente, macros). Véase X86.
- Ensambladores modulares 32-bits o de alto nivel. Son ensambladores que aparecieron como respuesta a una nueva arquitectura de procesadores de 32 bits, muchos de ellos teniendo compatibilidad hacia atrás pudiendo trabajar con programas con estructuras de 16 bits. Además de realizar la misma tarea que los anteriores, permitiendo también el uso de macros, permiten utilizar estructuras de programación más complejas propias de los lenguajes de alto nivel.
PASADAS DE TEXTO FUENTE
Traductor: Es una máquina teórica que tiene como entrada un texto escrito en un lenguaje L1 y como salida un texto escrito en un lenguaje L2. Habitualmente se denomina a L1 lenguaje fuente y a L2 lenguaje objeto.
Las técnicas que se desarrollan en esta asignatura no sólo son válidas para la implementación de compiladores, sino que son aplicables en general a todos los sistemas de procesamiento de lenguajes y de traducción. Estos sistemas pueden ser de distintos tipos:
Traductores de lenguaje natural: Serían los que tradujeran un lenguaje natural en otro (por ejemplo, español a inglés). Esto en la actualidad no se ha conseguido debido fundamentalmente a la ambigüedad del lenguaje natural. Los mayores logros en la materia siempre trabajan con un subconjunto del lenguaje natural, limitando las construcciones sintácticas válidas y/o el vocabulario. Este tema se aborda generalmente mediante técnicas de inteligencia artificial.
Compilador: Es un traductor que convierte un texto escrito en un lenguaje fuente de alto nivel en un programa objeto en código máquina.
Intérprete: Es un traductor que realiza la operación de compilación paso a paso. Para cada sentencia que compone el texto de entrada, se realiza una traducción, ejecuta dicha sentencia y vuelve a iniciar el proceso con la sentencia siguiente. La principal ventaja del proceso de compilación frente al de interpretación es que los programas se ejecutan mucho más rápidamente una vez compilados; por el contrario, es más cómodo desarrollar un programa mediante un intérprete que mediante un compilador puesto que en el intérprete las fases de edición y ejecución están más integradas. La depuración de los programas suele ser más fácil en los intérpretes que en los compiladores puesto que el código fuente está presente durante la ejecución. Estas ventajas pueden incorporarse al compilador mediante la utilización de entornos de desarrollo y depuradores simbólicos en tiempo de ejecución.
Preprocesadores: Procesan un texto fuente modificándolo en cierta forma previamente a la compilación. Por ejemplo, muchos compiladores admiten un conjunto de macroinstrucciones ajenas al lenguaje en sí que indican al compilador si tiene que incluir algún fichero externo, si ha de hacer o no un listado completo de la compilación, etc...
Conversores Fuente-Fuente: (LCP) Traducen un lenguaje fuente de alto nivel a otro (por ejemplo,
PASCAL -> C
). Una aplicación interesante de la traducción fuente-fuente es el desarrollo e implementación de prototipos de nuevos lenguajes de programación. Así, por ejemplo, si se desea definir un lenguaje especializado puede implementarse rápidamente mediante su traducción a un lenguaje convencional de alto nivel.Rutinas de análisis de instrucciones: El conjunto de instrucciones del entorno de un sistema operativo constituye un lenguaje que debe ser analizado previamente para realizar las acciones oportunas. Igualmente, ciertos programas como editores de texto, sistemas de diseño asistido, etc..., utilizan instrucciones complejas que deben interpretarse adecuadamente.
Ensambladores: Son compiladores cuyo lenguaje de entrada, llamado ensamblador, permite la traducción de cada sentencia fuente a una instrucción en código máquina.
Compilador cruzado: Es el que genera un código objeto ejecutable en un ordenador distinto de aquél en el que se realiza la compilación.
Compilación-Montaje-Ejecución: En las aplicaciones grandes es conveniente fragmentar el programa a realizar en módulos que se compilan por separado, y una vez que estos estén compilados unirlos mediante un programa denominado montador para formar el módulo ejecutable. El montador se encarga, a su vez, de incluir las librerías donde están guardadas las funciones predefinidas de uso común.
Compilación en una o varias pasadas: Se llama pasada a cada lectura que hace el compilador del texto fuente.
Compilación incremental. Este compilador actúa de la siguiente manera. Compila un programa fuente. Caso de detectar errores al volver a compilar el programa corregido sólo compila las modificaciones que se han hecho respecto al primero.
Autocompilador: Es aquél que está escrito en el mismo lenguaje que se pretende compilar. Supongamos, por ejemplo, que queremos desarrollar la versión 2.0 de un compilador Pascal. Dicho compilador generará un código mucho más rápido y eficiente que el que generaba la versión anterior 1.0. Sin embargo, son ya muchas las máquinas (IBM 370, Serie 1, PDP 11, ...) que disponen del antiguo compilador, o que al menos tienen otro compilador Pascal. La mejor opción consiste en escribir el nuevo compilador en Pascal, ya que así podrá (el compilador) ser compilado en las distintas máquinas por los compiladores Pascal ya existentes.
Metacompilador: Es un traductor que tiene como entrada la definición de un lenguaje y como salida el compilador para dicho lenguaje.
Decompilador: Es el que traduce código máquina a lenguaje de alto nivel. Los decompiladores más usuales son los desensambladores, que traducen un programa en lenguaje máquina a otro en ensamblador.
Bootstrapping.
Es una técnica muy usada actualmente para el desarrollo de compiladores de lenguajes de alto nivel, en especial si se quiere obtener un autocompilador, o sea, un compilador que se compile a sí mismo.
Para describir el proceso de autocompilación se emplea la notación en T que representa gráficamente los tres lenguajes implicados en el proceso de compilación:

- Lenguaje fuente: Lenguaje origen que traduce el compilador.
- Lenguaje objeto: Lenguaje meta, al cuál traduce el compilador.
- Lenguaje del compilador: Lenguaje en el que está escrito el compilador.
Supongamos que se quiere implementar un nuevo lenguaje A(N) en una máquina determinada. Disponemos solamente de un ensamblador para dicha máquina. En principio parece que la solución es escribir un compilador en lenguaje ensamblador que traduzca desde el lenguaje A(N) al lenguaje máquina LM.

Ésto en la práctica resulta bastante complicado, dado que programar en ensamblador es muy engorroso.
Lo que se hace en estos casos es desarrollar un lenguaje restringido A(1), parecido al A(N) pero más simple, y para este lenguaje escribir el compilador en ensamblador, o en cualquier otro lenguaje soportado por la máquina.
Una vez construido este compilador, y dado que nuestra máquina es ya capaz de entender el lenguaje A(1), se puede desarrollar un compilador para otro lenguaje A(2) escribiéndolo en el lenguaje A(1), y así sucesivamente hasta llegar a obtener un autocompilador del lenguaje A(N). Esta técnica se conoce como bootstrapping.

El primer compilador de Pascal desarrollado en Zurich por Wirth fue posible gracias a esta técnica. El conocido compilador C de GNU emplea también este mecanismo en tres pasos.
Estructura de un compilador.
Un compilador es un programa, en el que pueden dirstinguirse dos subprogramas o fases principales: una fase de análisis, en la cuál se lee el programa fuente y se estudia la estructura y el significado del mismo; y otra fase de síntesis, en la que se genera el programa objeto.
En un compilador pueden distinguirse, además, algunas estructuras de datos comunes, la más importante de las cuales es la tabla de símbolos, junto con las funciones de gestión de ésta y de los demás elementos del compilador, y de una serie de rutinas auxiliares para detección de errores.
El esquema general de un compilador podría ser el siguiente:

Esquema de un compilador.
Las funciones de estos módulos son las siguientes:
Analizador lexicográfico: Las principales funciones que realiza son:
- Identificar los símbolos.
- Eliminar los blancos, caracteres de fin de línea, etc...
- Eliminar los comentarios que acompañan al fuente.
- Crear unos símbolos intermedios llamados tokens.
- Avisar de los errores que detecte.
Ejemplo: A partir de la sentencia en PASCAL siguiente
nuevo := viejo + RAZON*2
genera un código simplificado para el análisis sintáctico posterior, por ejemplo:
<id1> <:=> <id2> <+> <id3> <*> <ent>
Nota: Cada elemento encerrado entre
<>
representa un único token. Las abreviaturas id
y ent
significan identificador y entero, respectivamente.Analizador sintáctico: Comprueba que las sentencias que componen el texto fuente son correctas en el lenguaje, creando una representación interna que corresponde a la sentencia analizada. De esta manera se garantiza que sólo serán procesadas las sentencias que pertenezcan al lenguaje fuente. Durante el análisis sintáctico, así como en las demás etapas, se van mostrando los errores que se encuentran.
Ejemplo: El esquema de la sentencia anterior corresponde al de una sentencia de asignación del lenguaje Pascal. Estas sentencias son de la forma:
<id> <:=> <EXPRESION>
y la parte que se denomina
<EXPRESION>
es de la forma:<id> <+> <EXPRESION>
o bien<id> <*> <EXPRESION>
o bien<real>
La estructura de la sentencia queda, por tanto, de manifiesto mediante el siguiente esquema:
<id1><:=><EXPRESION> | <id2><+><EXPRESION> | <id3><*><EXPRESION> | <real>
Análisis semántico: Se ocupa de analizar si la sentencia tiene algún significado. Se pueden encontrar sentencias que son sintácticamente correctas pero que no se pueden ejecutar porque carecen de sentido. En general, el análisis semántico se hace a la par que el análisis sintáctico introduciendo en éste unas rutinas semánticas.
Ejemplo: En la sentencia que se ha analizado existe una variable entera. Sin embargo, las operaciones se realizan entre identificadores reales, por lo que hay dos alternativas: o emitir un mensaje de error "Discordancia de tipos", o realizar una conversión automática al tipo superior, mediante una función auxiliar
inttoreal
.<id1><:=><EXPRESION>|<id2><+><EXPRESION>|<id3><*><EXPRESION>|
<real>|<inttoreal>|<int>
Generador de código intermedio: El código intermedio es un código abstracto independiente de la máquina para la que se generará el código objeto. El código intermedio ha de cumplir dos requisitos importantes: ser fácil de producir a partir del análisis sintáctico, y ser fácil de traducir al lenguaje objeto. Esta fase puede no existir si se genera directamente código máquina, pero suele ser conveniente emplearla.
Ejemplo: Consideremos, por ejemplo, un código intermedio de tercetos, llamado así porque en cada una de sus instrucciones aparecen como máximo tres operandos. La sentencia traducida a este código intermedio quedaría :
temp1 := inttoreal (2)temp2 := id3 * temp1temp3 := id2 + temp2id1 := temp3
Optimizador de código: A partir de todo lo anterior crea un nuevo código más compacto y eficiente, eliminando por ejemplo sentencias que no se ejecutan nunca, simplificando expresiones aritméticas, etc... La profundidad con que se realiza esta optimización varía mucho de unos compiladores a otros. En el peor de los casos esta fase se suprime.
Ejemplo: Siguiendo con el ejemplo anterior, es posible evitar la función
inttoreal
mediante el cambio de 2
por 2.0
, obviando además una de las operaciones anteriores. El código optimizado queda como sigue :temp1 := id3 * 2.0id1 := id2 + temp1
Generador de código: A partir de los análisis anteriores y de las tablas que estos análisis van creando durante su ejecución produce un código o lenguaje objeto que es directamente ejecutable por la máquina. Es la fase final del compilador. Las instrucciones del código intermedio se traducen una a una en código máquina reubicable.
Nota: Cada instrucción de código intermedio puede dar lugar a más de una de código máquina.
Ejemplo: El código anterior traducido a ensamblador DLX quedaría:
LW R1,id3MUL R1,R1,2LW R2,id2ADD R2,R2,R1SW id1,R2
en donde
id1
, id2
y id3
representan las posiciones de memoria en las que se hallan almacenadas estas variables; R1
y R2
son los registros de la máquina; y las instrucciones LW
, SW
, MUL
y ADD
representan las operaciones de colocar un valor de memoria en un registro, colocar un valor de un registro en memoria, multiplicar en punto flotante y sumar, respectivamente.La tabla de símbolos: Es el medio de almacenamiento de toda la información referente a las variables y objetos en general del programa que se está compilando.
Ejemplo: Hemos visto que en ciertos momentos del proceso de compilación debemos hacer uso de cierta información referente a los identificadores o los números que aparecen en nuestra sentencia, como son su tipo, su posición de almacenamiento en memoria, etc... Esta información es la que se almacena en la tabla de símbolos.
Rutinas de errores: Están incluidas en cada uno de los procesos de compilación (análisis lexicográfico, sintáctico y semántico), y se encargan de informar de los errores que encuentran en texto fuente.
Ejemplo: El analizador semántico podría emitir un error (o al menos un aviso) cuando detectase una diferencia en los tipos de una operación.
TRATAMIENTO DE OPERANDOS Y MODOS DE DIRECCIONAMIENTO DE LA
- Ensambladores
- Tratamiento de operandos y modos de direccionamiento de la máquina objeto (RP)
- Ensambladores residentes y cruzados (E)
- Ensamble condicional (RP)
Sugerencias bibliográficas: [BECL88], [DONJ72], [LEVG89], [LEVG97], [SILP94], [ULLJ76]
- Macroprocesadores
- Bibliotecas de macros (E)
- Expansión condicional (RP)
Sugerencias bibliográficas: [BECL88], [DONJ72], [LEVG89], [LEVG97], [SILP94], [ULLJ76]
II. Traductores de alto nivel
- Intérpretes
- Interpretación directa o mediante pseudocódigo (RP)
- Lenguajes para aplicaciones específicas susceptibles o idóneos para interpretación (E)
Sugerencias bibliográficas: [BECL88], [DONJ72], [LEVG89], [LEVG97], [SILP94], [ULLJ76]
- Compiladores
- Notación formal de sintaxis (RP)
- Análisis lexicográfico (RP)
- Generación de código, códigos intermedios (RP)
- Optimización de código (RP)
- Generadores de analizadores léxicos (E)
- Generadores de compiladores (E)
Sugerencias bibliográficas: [AHOS90], [DEIH93], [STAW97b], [TREJ85], [ULLJ76]
- Tópicos de compilación
- Tratamiento de recursividad (E, RP)
- Tratamiento de extensibilidad (RP)
- Tratamiento de lenguajes orientados a objetos (definición de clase, herencia, instanciamiento) (E, RP)
Sugerencias bibliográficas: [AHOS90], [DEIH93], [STAW97b], [TREJ85], [ULLJ76]
- Ambientes integrados
- Depuración interactiva (E)
- Ayudas (E)
Sugerencias bibliográficas: [BECL88], [DEIH93], [STAW97b]
B. Sistemas operativos
I. Conceptos y estructuras básicas
- Historia y evolución
- Necesidad del sistema operativo, administración de recursos y desempeño del sistema (R)
- Generaciones de sistemas operativos (R)
Sugerencias bibliográficas: [BACM86], [DEIH93], [STAW97b], [TANW98], [ULLJ76]
- Esquema básico
- Estructura interna: monolítico y modular (E)
- Tipos de sistemas: monousuario, multiusuario, distribuido, de red, de tiempo real, de propósito especial (E)
- Lenguajes de control (shell), interfaces gráficas y utilitarios de un sistema operativo (E)
- Llamadas al sistema (E)
Sugerencias bibliográficas: [BACM86], [DEIH93], [STAW97b], [TANW98], [ULLJ76]
- Arquitectura de un sistema operativo
- Manejo del procesador: políticas y técnicas para la gestión (scheduling) (RP)
- Manejo de memoria secundaria: políticas y técnicas para la gestión (RP)
- Manejo de dispositivos de E/S (RP)
- Sistema de archivos: archivos y directorios. Estructura, organización y tipos (RP)
- Seguridad y protección (RP)
Sugerencias bibliográficas: [BACM86], [DEIH93], [STAW97b], [TANW98], [ULLJ76]
- Desempeño de un sistema operativo
- Herramientas matemáticas asociadas: teoría de colas, cálculo de probabilidades, procesos de Markov (RP)
- Algoritmos de scheduling (RP)
Sugerencias bibliográficas: [BACM86], [DEIH93], [STAW97b], [TANW98], [ULLJ76]
- Dispositivos y servicios especiales
- Construcción de drivers (E, RP)
Sugerencias bibliográficas: [BACM86], [DEIH93], [STAW97b], [TANW98], [ULLJ76]
II. Sistemas operativos especializados
- Tipos especiales de sistemas operativos
- Intercomunicación entre procesos (E)
- Sistemas operativos de red: servidores de archivos y de impresión, arquitectura cliente-servidor, arquitectura par a par (E)
- Sistemas operativos distribuidos: sistema de archivos distribuidos, memoria distribuida, balanceo de carga (E)
- Modelos de procesos distribuidos y multihilos (E)
- Sistemas en tiempo real (E)
- Sistemas para computadoras paralelas (memoria compartida, memoria distribuida, memoria distribuida/compartida) (E)
Sugerencias bibliográficas: [DEIH93], [TANA96], [TANW98]
- Ambientes gráficos
- Manejo de ventanas (E)
- Entornos multitarea (E)
Sugerencias bibliográficas: [DEIH93], [TANA96], [TANW98]
C. Utilerías y manejadores
I. Orientados al usuario
- Sistemas de respaldo y recuperación
- Compactación y descompactación (RP)
- Respaldos incrementales, periodicidad y confiabilidad (E)
- Herramientas para reparación y recuperación (E)
Sugerencias bibliográficas: [DEIH93], [LISE93], [STAW97b], [TANA94]
- Tratamiento de virus
- Prevención, detección y erradicación (E, RP)
- Reparación de archivos (E, RP)
Sugerencias bibliográficas: [SILP94], [STAW97b], [TANA94]
II. Orientados al sistema
- Cargadores y ligadores
- Manejo de ligaduras estáticas y dinámicas (E, RP)
- Resolución de direcciones y referencias externas (RP)
Sugerencias bibliográficas: [BECL88], [DEIH93], [LISE93]
- Administración y vigilancia
- Bitácoras (RP)
- Detección de errores físicos (E)
- Manejo de suspensiones de energía e interrupciones de servicio (E)
- Herramientas para arranque y manejo de recursos físicos (E)
- Herramientas para diagnóstico (RP)
- Reinicio de tareas (E)
- Puntos de reinicio (E)
Sugerencias bibliográficas: [DEIH93], [LISE93], [TANA94]
- Herramientas para la administración
- Uso de recursos físicos: manejadores de memoria, para optimización de espacio en disco, para dispositivos de comunicaciones (E)
- Instalación y arranque: definición de entornos iniciales, sistemas para instalación automática, autoinstalación (E)
- Manejadores para supervisión y diagnóstico de dispositivos físicos (E)
ENSAMBLARORES RESIDENTES Y CRUZADOS
Ensambladores Cruzados.
Un ensamblador cruzado es aquel que se ejecuta sobre un computador con un procesador diferente de aquel para el que se ensambla el código.
Los ensambladores cruzados permiten a un programador desarrollar
programas para diferentes sistemas sobre un computador.
Sin embargo, excepto en el caso de minicomputadores y grandes computadores que pueden ofrecer un simulador de microprocesador destinatario real, no se puede normalmente probar y depurar el código creado por un ensamblador cruzado sin ejecutarse sobre una maquina real que utilice este procesador. En cualquier caso, siempre se debe utilizar la sintaxis correcta, esto es, códigos OP, operandos, y así sucesivamente, para el microprocesador para el que el ensamblador cruzado esta diseñado.
Ensambladores residentes.
El polo opuesto del ensamblador cruzado es el ensamblador residente, que se ejecuta sobre una maquina que contiene el mismo procesador que el destinatario del código ensamblado. Un ensamblador residente ofrece al programador la ventaja de utilizar una única maquina para crear, probar, y depurar código.
Los ensambladores residentes sobre los primeros microprocesadores fueron algo lentos y restrictivos en características debido al alto costo de memoria y la lentitud del microprocesador, con la disponibilidad de
memoria debajo costo (y consecuentemente grandes memorias disponibles en la mayor parte de los sistemas) y la posibilidad del procesador de direccionar directamente grandes cantidades de memoria, así como de realizar funciones mas rápidas, los ensambladores residentes proporcionan ahora una variedad de características y velocidad de ensamblaje que anteriormente solo se encontraban en ensambladores cruzados sobre grandes computadores y microcomputadores.
ENSAMBLE CONDICIONAL
Tipos De Ensambladores
Aunque todos los ensambladores realizan básicamente las mismas tareas, podemos clasificarlos de acuerdo a características.
Así podemos clasificarlos en:
Ensambladores Cruzados (Cross-Assembler).
Se denominan así los ensambladores que se utilizan en una computadora que posee un procesador diferente al que tendrán las computadoras donde va a ejecutarse el programa objeto producido.
El empleo de este de traductores permite aprovechar el soporte de medios físicos (discos, impresoras, pantallas, etc.), y de programación que ofrecen las máquinas potentes para desarrollar programas que luego los van a ejecutar sistemas muy especializados en determinados tipos de tareas.
Ensambladores Residentes.
Son aquellos que permanecen en la memoria principal de la computadora y cargan, para su ejecución, al programa objeto producido. Este tipo de ensamblador tiene la ventaja de que se puede comprobar inmediatamente el programa sin necesidad de transportarlo de un lugar a otro, como se hacía en cross-assembler, y sin necesidad de programas simuladores.
Sin embargo, puede presentar problemas de espacio de memoria, ya que el traductor ocupa espacio que no puede ser utilizado por el programador. Asimismo, también ocupará memoria el programa fuente y el programa objeto. Esto obliga a tener un espacio de memoria relativamente amplio. Es el indicado para desarrollos de pequeños sistemas de control y sencillos automatismo empleando microprocesadores(1).
Ensambladores
Dir.(http://mx.geocities.com/laura_40cruz/idicelau.htm)
La ventaja de estos ensambladores es que permiten ejecutar inmediatamente el programa; la desventaja es que deben mantenerse en la memoria principal tanto el ensamblador como el programa fuente y el programa objeto.
Macroensambladores.
Son ensambladores que permiten el uso de macroinstrucciones (macros). Debido a su potencia, normalmente son programas robustos que no permanecen en memoria una vez generado el programa objeto. Puede variar la complejidad de los mismos, dependiendo de las posibilidades de definición y manipulación de las macroinstrucciones, pero normalmente son programas bastantes complejos, por lo que suelen ser ensambladores residentes.
Microensambladores.
Generalmente, los procesadores utilizados en las computadoras tienen un repertorio fijo de instrucciones, es decir, que el intérprete de las mismas interpretaba de igual forma un determinado código de operación.
El programa que indica al intérprete de instrucciones de la UCP cómo debe actuar se denomina microprograma. El programa que ayuda a realizar este microprograma se llama microensamblador. Existen procesadores que permiten la modificación de sus microprogramas, para lo cual se utilizan microensambladores.
Ensambladores de una fase.
Estos ensambladores leen una línea del programa fuente y la traducen directamente para producir una instrucción en lenguaje máquina o la ejecuta si se trata de una pseudoinstrucción. También va construyendo la tabla de símbolos a medida que van apareciendo las definiciones de variables, etiquetas, etc.
Debido a su forma de traducción, estos ensambladores obligan a definir los símbolos antes de ser empleados para que, cuando aparezca una referencia a un determinado símbolo en una instrucción, se conozca la dirección de dicho símbolo y se pueda traducir de forma correcta. Estos ensambladores son sencillos, baratos y ocupan poco espacio, pero tiene el inconveniente indicado(1).
Ensambladores de dos fases.
Los ensambladores de dos fases se denominan así debido a que realizan la traducción en dos etapas. En la primera fase, leen el programa fuente y construyen una tabla de símbolos; de esta manera, en la fase, vuelven a leer el programa fuente y pueden ir traduciendo totalmente, puesto que conocen la totalidad de los símbolos utilizados y las posiciones que se les ha asignado. Estos ensambladores son los más utilizados en la .
Para mayor información http: www.sapag.com
CONCLUSIONES
Al parecer así como hay diferentes tipos de memoria también hay diferentes tipos de ensambladores y diferentes tipos de pero bueno me parece que cada característica le sirven a cada persona o ustedes que opinan..nos vemos(1).
Es por esta razón que la mayoría de los ensambladores hacen su trabajo pasando dos veces por el programa fuente: una primera vez se pasa para asignar a cada etiqueta su dirección correspondiente en el programa objeto. El ensamblador pasa una Segunda ocasión por el programa fuente para llevar a cabo el ensamblaje de las instrucciones una vez ya tiene asignadas las direcciones de todas las etiquetas. Estos ensambladores se llaman ensambladores de dos pasadas ("two pass assembler").
Las tareas que el ensamblador lleva a cabo en cada pasada son:
Primera pasada:
1. asignar una dirección de memoria a cada instrucción
2. guardar en una tabla las direcciones de todas las etiquetas del programa
3. procesar algunas de las directrices
Segunda pasada:
1. cambiar los mnemónicos a su código correspondiente en lenguaje de máquina
2. poner las direcciones de los operandos simbólicos o etiquetas en las instrucciones
4. procesar el resto de las directrices
5. escribir el programa en lenguaje objeto y el "listing"
MICROPROCESADORES
El microprocesador, o simplemente procesador, es el circuito integrado central y más complejo de una computadora u ordenador; a modo de ilustración, se le suele asociar por analogía como el "cerebro" de una computadora.
El procesador es un circuito integrado constituido por millones de componentes electrónicos integrados. Constituye la unidad central de procesamiento (CPU) de un PC catalogado como microcomputador.
Desde el punto de vista funcional es, básicamente, el encargado de realizar toda operación aritmético-lógica, de control y de comunicación con el resto de los componentes integrados que conforman un PC, siguiendo el modelo base de Von Neumann. También es el principal encargado de ejecutar los programas, sean de usuario o de sistema; sólo ejecuta instrucciones programadas a muy bajo nivel, realizando operaciones elementales, básicamente, las aritméticas y lógicas, tales como sumar, restar, multiplicar, dividir, las lógicas binarias y accesos a memoria.
Esta unidad central de procesamiento está constituida, esencialmente, por registros, una unidad de control y una unidad aritmético lógica (ALU), aunque actualmente todo microprocesador también incluye una unidad de cálculo en coma flotante, (también conocida como "coprocesador matemático"), que permite operaciones por hardware con números decimales, elevando por ende notablemente la eficiencia que proporciona sólo la ALU con el cálculo indirecto a través de los clásicos números enteros.
El microprocesador está conectado, generalmente, mediante un zócalo específico a la placa base. Normalmente para su correcto y estable funcionamiento, se le adosa un sistema de refrigeración, que consta de un disipador de calor fabricado en algún material de alta conductividad térmica, como cobre o aluminio, y de uno o más ventiladores que fuerzan la expulsión del calor absorbido por el disipador; entre éste último y la cápsula del microprocesador suele colocarse pasta térmica para mejorar la conductividad térmica. Existen otros métodos más eficaces, como la refrigeración líquida o el uso de células peltier para refrigeración extrema, aunque estas técnicas se utilizan casi exclusivamente para aplicaciones especiales, tales como en las prácticas de overclocking.
La "velocidad" del microprocesador suele medirse por la cantidad de operaciones por ciclo de reloj que puede realizar y en los ciclos por segundo que este último desarrolla, o también en MIPS. Está basada en la denominada frecuencia de reloj (oscilador). La frecuencia de reloj se mide hertzios, pero dada su elevada cifra se utilizan múltiplos, como el megahertzio o el gigahertzio.
Cabe destacar que la frecuencia de reloj no es el único factor determinante en el rendimiento, pues sólo se podría hacer comparativa entre dos microprocesadores de una misma microarquitectura.
Es importante notar que la frecuencia de reloj efectiva no es el producto de la frecuencia de cada núcleo físico del procesador por su número de núcleos, es decir, uno de 3 GHz con 6 núcleos físicos nunca tendrá 18 GHz, sino 3 GHz, independientemente de su número de núcleos.
Hay otros factores muy influyentes en el rendimiento, como puede ser su memoria caché, su cantidad de núcleos, sean físicos o lógicos, el conjunto de instrucciones que soporta, su arquitectura, etc; por lo que sería difícilmente comparable el rendimiento de dos procesadores distintos basándose sólo en su frecuencia de reloj.
Un computador de alto rendimiento puede estar equipado con varios microprocesadores trabajando en paralelo, y un microprocesador puede, a su vez, estar constituido por varios núcleos físicos o lógicos. Un núcleo físico se refiere a una porción interna del microprocesador cuasi-independiente que realiza todas las actividades de una CPU solitaria, un núcleo lógico es la simulación de un núcleo físico a fin de repartir de manera más eficiente el procesamiento.
Estos últimos años ha existido una tendencia de integrar el mayor número de elementos de la PC dentro del propio procesador, aumentando así su eficiencia energética y su rendimiento. Una de las primeras integraciones, fue introducir la unidad de coma flotante dentro del encapsulado, que anteriormente era un componente aparte y opcional situado también en la placa base, luego se introdujo también el controlador de memoria, y más tarde un procesador gráfico dentro de la misma cámara, aunque no dentro del mismo encapsulado. Posteriormente se llegaron a integrar completamente en el mismo encapsulado (die).
Respecto a esto último, compañías tales como Intel ya planean integrar el puente sur dentro del microprocesador, eliminando completamente ambos circuitos auxiliares de la placa.
También la tendencia general, más allá del mercado del PC, es integrar varios componentes en un mismo chip para dispositivos tales como Tablet PC, teléfonos móviles, videoconsolas portátiles, etc. A estos circuitos integrados "todo en uno" se los conoce como system on a chip; por ejemplo nVidia Tegra o Samsung Hummingbird, ambos integran microprocesador, unidad de procesamiento gráfico y controlador de memoria dentro de un mismo circuito integrado.
La evolución del microprocesador
El microprocesador es producto de la evolución de distintas tecnologías predecesoras, surgido de la computación y la tecnología semiconductora; en los inicios no existían los procesadores tal como los conocemos hoy. El inicio de su desarrollo data de mitad de la década de 1950; estas tecnologías se fusionaron a principios de los años 70, produciendo el primer microprocesador.
Tales tecnologías iniciaron su desarrollo a partir de la segunda guerra mundial; en este tiempo los científicos desarrollaron computadoras específicas para aplicaciones militares. En la posguerra, a mediados de la década de 1940, la computación digital emprendió un fuerte desarrollo también para propósitos científicos y civiles.
La tecnología de circuitos electrónicos avanzó y los científicos hicieron grandes progresos en el diseño de componentes de estado sólido. En 1948 en los laboratorios Bell crearon el transistor.
En los años 1950, aparecieron las primeras computadoras digitales de propósito general. Se fabricaron utilizando tubos al vacío o bulbos como componentes electrónicos activos. Tarjetas o módulos de tubos al vacío componían circuitos lógicos básicos, tales como compuertas y flip-flops. Ensamblando compuertas y flip-flops en módulos se construyó la computadora electrónica (la lógica de control, circuitos de memoria, etc.). Los tubos de vacío también formaron parte de la construcción de máquinas para la comunicación con las computadoras.
Para la construcción de un circuito sumador simple se requiere de algunas compuertas lógicas. La construcción de una computadora digital precisa numerosos circuitos o dispositivos electrónicos. Un paso trascendental en el diseño de la computadora fue hacer que el dato fuera almacenado en memoria, como una forma de palabra digital. La idea de almacenar programas en memoria para luego ejecutarlo fue de fundamental importancia (Arquitectura de von Neumann).
La tecnología de los circuitos de estado sólido evolucionó en la década de 1950. El empleo del silicio, de bajo costo y con métodos de producción masiva, hicieron del transistor el componente más usado para el diseño de circuitos electrónicos. Por lo tanto el diseño de la computadora digital tuvo un gran avance el reemplazo del tubo al vacío por el transistor, a finales de la década de 1950.
A principios de la década de 1960, el estado de arte en la construcción de computadoras de estado sólido sufrió un notable avance; surgieron las tecnologías en circuitos digitales como: RTL (Lógica Transistor Resistor), DTL (Lógica Transistor Diodo), TTL (Lógica Transistor Transistor), ECL (Lógica Complementada Emisor).
A mediados de los años 1960 se producen las familias de circuitos de lógica digital, dispositivos en escala SSI y MSI que corresponden a baja y mediana escala de integración de componentes. A finales de los años 1960 y principios de los 70 surgieron los sistemas a alta escala de integración o LSI. La tecnología LSI fue haciendo posible incrementar la cantidad de componentes en los circuitos integrados. Sin embargo, pocos circuitos LSI fueron producidos, los dispositivos de memoria eran un buen ejemplo.
Las primeras calculadoras electrónicas requerían entre 75 y 100 circuitos integrados. Después se dio un paso importante en la reducción de la arquitectura de la computadora a un circuito integrado simple, resultando uno que fue llamado microprocesador, unión de las palabras "Micro" del griego μικρο-, "pequeño", y procesador. Sin embargo, es totalmente válido usar el término genérico procesador, dado que con el paso de los años, la escala de integración se ha visto reducida de micrométrica a nanométrica; y además, es, sin duda, un procesador.
- El primer microprocesador fue el Intel 4004,[1] producido en 1971. Se desarrolló originalmente para una calculadora, y resultó revolucionario para su época. Contenía 2.300 transistores, era un microprocesador de arquitectura de 4 bits que podía realizar hasta 60.000 operaciones por segundo, trabajando a una frecuencia de reloj de alrededor de 700KHz.
- El primer microprocesador de 8 bits fue el Intel 8008, desarrollado a mediados de 1972 para su uso en terminales informáticos. El Intel 8008 integraba 3300 transistores y podía procesar a frecuencias máximas de 800Khz.
- El primer microprocesador realmente diseñado para uso general, desarrollado en 1974, fue el Intel 8080 de 8 bits, que contenía 4500 transistores y podía ejecutar 200.000 instrucciones por segundo trabajando a alrededor de 2MHz.
- Los primeros microprocesadores de 16 bits fueron el 8086 y el 8088, ambos de Intel. Fueron el inicio y los primeros miembros de la popular arquitectura x86, actualmente usada en la mayoría de los computadores. El chip 8086 fue introducido al mercado en el verano de 1978, en tanto que el 8088 fue lanzado en 1979. Llegaron a operar a frecuencias mayores de 4Mhz.
- El microprocesador elegido para equipar al IBM Personal Computer/AT, que causó que fuera el más empleado en los PC-AT compatibles entre mediados y finales de los años 80 fue el Intel 80286 (también conocido simplemente como 286); es un microprocesador de 16 bits, de la familia x86, que fue lanzado al mercado en 1982. Contaba con 134.000 transistores. Las versiones finales alcanzaron velocidades de hasta 25 MHz.
- Uno de los primeros procesadores de arquitectura de 32 bits fue el 80386 de Intel, fabricado a mediados y fines de la década de 1980; en sus diferentes versiones llegó a trabajar a frecuencias del orden de los 40Mhz.
- El microprocesador DEC Alpha se lanzó al mercado en 1992, corriendo a 200 MHz en su primera versión, en tanto que el Intel Pentium surgió en 1993 con una frecuencia de trabajo de 66Mhz. El procesador Alpha, de tecnología RISC y arquitectura de 64 bits, marcó un hito, declarándose como el más rápido del mundo, en su época. Llegó a 1Ghz de frecuencia hacia el año 2001. Irónicamente, a mediados del 2003, cuando se pensaba quitarlo de circulación, el Alpha aun encabezaba la lista de los computadores más rápidos de Estados Unidos.[2]
- Los microprocesadores modernos tienen una capacidad y velocidad mucho mayores, trabajan en arquitecturas de 64 bits, integran más de 700 millones de transistores, como es en el caso de las serie Core i7, y pueden operar a frecuencias normales algo superiores a los 3GHz (3000MHz).
[editar] Breve historia
Seguidamente se expone una lista ordenada cronológicamente de los microprocesadores más populares que fueron surgiendo.
El 4004 fue el primer microprocesador del mundo, creado en un simple chip, y desarrollado por Intel. Era un CPU de 4 bits y también fue el primero disponible comercialmente. Este desarrollo impulsó la calculadora de Busicom[1] y dio camino a la manera para dotar de "inteligencia" a objetos inanimados, así como la computadora personal.
Codificado inicialmente como 1201, fue pedido a Intel por Computer Terminal Corporation para usarlo en su terminal programable Datapoint 2200, pero debido a que Intel terminó el proyecto tarde y a que no cumplía con la expectativas de Computer Terminal Corporation, finalmente no fue usado en el Datapoint. Posteriormente Computer Terminal Corporation e Intel acordaron que el i8008 pudiera ser vendido a otros clientes.
El SC/MP desarrollado por National Semiconductor, fue uno de los primeros microprocesadores, y estuvo disponible desde principio de 1974. El nombre SC/MP (popularmente conocido como "Scamp") es el acrónimo de Simple Cost-effective Micro Processor (Microprocesador simple y rentable). Presenta un bus de direcciones de 16 bits y un bus de datos de 8 bits. Una característica avanzada para su tiempo, es la capacidad de liberar los buses, a fin de que puedan ser compartidos por varios procesadores. Este procesador fue muy utilizado, por su bajo costo, y provisto en kits, para el propósitos educativos, de investigación y para el desarrollo de controladores industriales de diversos propósitos.
EL 8080 se convirtió en la CPU de la primera computadora personal, la Altair 8800 de MITS, según se alega, nombrada en base a un destino de la Nave Espacial "Starship" del programa de televisión Viaje a las Estrellas, y el IMSAI 8080, formando la base para las máquinas que ejecutaban el sistema operativo [[CP/M]|CP/M-80]. Los fanáticos de las computadoras podían comprar un equipo Altair por un precio (en aquel momento) de u$s395. En un periodo de pocos meses, se vendieron decenas de miles de estas PC.
Se fabrica, por parte de Motorola, el Motorola MC6800, más conocido como 6800. Fue lanzado al mercado poco después del Intel 8080. Su nombre proviene de que contenía aproximadamente 6800 transistores. Varios de los primeras microcomputadoras de los años 1970 usaron el 6800 como procesador. Entre ellas se encuentran la SWTPC 6800, que fue la primera en usarlo, y la muy conocida Altair 680. Este microprocesador se utilizó profusamente como parte de un kit para el desarrollo de sistemas controladores en la industria. Partiendo del 6800 se crearon varios procesadores derivados, siendo uno de los más potentes el Motorola 6809
La compañía Zilog Inc. crea el Zilog Z80. Es un microprocesador de 8 bits construido en tecnología NMOS, y fue basado en el Intel 8080. Básicamente es una ampliación de éste, con lo que admite todas sus instrucciones. Un año después sale al mercado el primer computador que hace uso del Z80, el Tandy TRS-80 Model 1 provisto de un Z80 a 1,77 MHz y 4 KB de RAM. Es uno de los procesadores de más éxito del mercado, del cual se han producido numerosas versiones clónicas, y sigue siendo usado de forma extensiva en la actualidad en multitud de sistemas embebidos. La compañía Zilog fue fundada 1974 por Federico Faggin, quien fue diseñador jefe del microprocesador Intel 4004 y posteriormente del Intel 8080.
Una venta realizada por Intel a la nueva división de computadoras personales de IBM, hizo que las PC de IBM dieran un gran golpe comercial con el nuevo producto con el 8088, el llamado IBM PC. El éxito del 8088 propulsó a Intel a la lista de las 500 mejores compañías, en la prestigiosa revista Fortune, y la misma nombró la empresa como uno de Los triunfos comerciales de los sesenta.
El 80286, popularmente conocido como 286, fue el primer procesador de Intel que podría ejecutar todo el software escrito para su predecesor. Esta compatibilidad del software sigue siendo un sello de la familia de microprocesadores de Intel. Luego de 6 años de su introducción, había un estimado de 15 millones de PC basadas en el 286, instaladas alrededor del mundo.
Este procesador Intel, popularmente llamado 386, se integró con 275000 transistores, más de 100 veces tantos como en el original 4004. El 386 añadió una arquitectura de 32 bits, con capacidad para multitarea y una unidad de traslación de páginas, lo que hizo mucho más sencillo implementar sistemas operativos que usaran memoria virtual.
- 1985: El VAX 78032
El microprocesador VAX 78032 (también conocido como DC333), es de único ship y de 32 bits, y fue desarrollado y fabricado por Digital Equipment Corporation (DEC); instalado en los equipos MicroVAX II, en conjunto con su ship coprocesador de coma flotante separado, el 78132, tenían una potencia cercana al 90% de la que podía entregar el minicomputador VAX 11/780 que fuera presentado en 1977. Este microprocesador contenía 125000 transistores, fue fabricado en tecnologóa ZMOS de DEC. Los sistemas VAX y los basados en este procesador fueron los preferidos por la comunidad científica y de ingeniería durante la década del 1980.
La generación 486 realmente significó contar con una computadora personal de prestaciones avanzadas, entre ellas,un conjunto de instrucciones optimizado, una unidad de coma flotante o FPU, una unidad de interfaz de bus mejorada y una memoria caché unificada, todo ello integrado en el propio chip del microprocesador. Estas mejoras hicieron que los i486 fueran el doble de rápidos que el par i386 - i387 operando a la misma frecuencia de reloj. El procesador Intel 486 fue el primero en ofrecer un coprocesador matemático o FPU integrado; con él que se aceleraron notablemente las operaciones de cálculo. Usando una unidad FPU las operaciones matemáticas más complejas son realizadas por el coprocesador de manera prácticamente independiente a la función del procesador principal.
Procesadores fabricados por AMD 100% compatible con los códigos de Intel de ese momento, llamados "clones" de Intel, llegaron incluso a superar la frecuencia de reloj de los procesadores de Intel y a precios significativamente menores. Aquí se incluyen las series Am286, Am386, Am486 y Am586.
Es un procesador de tecnología RISC de 32 bits, en 50 y 66MHz. En su diseño utilizaron la interfaz de bus del Motorola 88110. En 1991, IBM busca una alianza con Apple y Motorola para impulsar la creación de este microprocesador, surge la alianza AIM (Apple, IBM y Motorola) cuyo objetivo fue quitar el dominio que Microsoft e Intel tenían en sistemas basados en los 80386 y 80486. PowerPC (abreviada PPC o MPC) es el nombre original de la familia de procesadores de arquitectura de tipo RISC, que fue desarrollada por la alinza AIM. Los procesadores de esta familia son utilizados principalmente en computadores Macintosh de Apple Computer y su alto rendimiento se debe fuertemente a su arquitectura tipo RISC.
El microprocesador de Pentium poseía una arquitectura capaz de ejecutar dos operaciones a la vez, gracias a sus dos pipeline de datos de 32bits cada uno, uno equivalente al 486DX(u) y el otro equivalente a 486SX(u). Además, estaba dotado de un bus de datos de 64 bits, y permitía un acceso a memoria de 64 bits (aunque el procesador seguía manteniendo compatibilidad de 32 bits para las operaciones internas, y los registros también eran de 32 bits). Las versiones que incluían instrucciones MMX no sólo brindaban al usuario un más eficiente manejo de aplicaciones multimedia, como por ejemplo, la lectura de películas en DVD, sino que también se ofrecían en velocidades de hasta 233 MHz. Se incluyó una versión de 200 MHz y la más básica trabajaba a alrededor de 166 MHz de frecuencia de reloj. El nombre Pentium, se mencionó en las historietas y en charlas de la televisión a diario, en realidad se volvió una palabra muy popular poco después de su introducción.
- 1994: EL PowerPC 620
En este año IBM y Motorola desarrollan el primer prototipo del procesador PowerPC de 64 bit[2], la implementación más avanzada de la arquitectura PowerPC, que estuvo disponible al año próximo. El 620 fue diseñado para su utilización en servidores, y especialmente optimizado para usarlo en configuraciones de cuatro y hasta ocho procesadores en servidores de aplicaciones de base de datos y vídeo. Este procesador incorpora siete millones de transistores y corre a 133 MHz. Es ofrecido como un puente de migración para aquellos usuarios que quieren utilizar aplicaciones de 64 bits, sin tener que renunciar a ejecutar aplicaciones de 32 bits.
Lanzado al mercado para el otoño de 1995, el procesador Pentium Pro (profesional) se diseñó con una arquitectura de 32 bits. Se usó en servidores y los programas y aplicaciones para estaciones de trabajo (de redes) impulsaron rápidamente su integración en las computadoras. El rendimiento del código de 32 bits era excelente, pero el Pentium Pro a menudo era más lento que un Pentium cuando ejecutaba código o sistemas operativos de 16 bits. El procesador Pentium Pro estaba compuesto por alrededor de 5,5 millones de transistores.
Habiendo abandonado los clones, AMD fabricada con tecnologías análogas a Intel. AMD sacó al mercado su primer procesador propio, el K5, rival del Pentium. La arquitectura RISC86 del AMD K5 era más semejante a la arquitectura del Intel Pentium Pro que a la del Pentium. El K5 es internamente un procesador RISC con una Unidad x86- decodificadora, transforma todos los comandos x86 (de la aplicación en curso) en comandos RISC. Este principio se usa hasta hoy en todas las CPU x86. En la mayoría de los aspectos era superior el K5 al Pentium, incluso de inferior precio, sin embargo AMD tenía poca experiencia en el desarrollo de microprocesadores y los diferentes hitos de producción marcados se fueron superando con poco éxito, se retrasó 1 año de su salida al mercado, a razón de ello sus frecuencias de trabajo eran inferiores a las de la competencia, y por tanto, los fabricantes de PC dieron por sentado que era inferior.
Con el K6, AMD no sólo consiguió hacerle seriamente la competencia a los Pentium MMX de Intel, sino que además amargó lo que de otra forma hubiese sido un plácido dominio del mercado, ofreciendo un procesador casi a la altura del Pentium II pero por un precio muy inferior. En cálculos en coma flotante, el K6 también quedó por debajo del Pentium II, pero por encima del Pentium MMX y del Pro. El K6 contó con una gama que va desde los 166 hasta los más de 500 Mhz y con el juego de instrucciones MMX, que ya se han convertido en estándares.
Más adelante se lanzó una mejora de los K6, los K6-2 de 250 nanómetros, para seguir compitiendo con los Pentium II, siendo éste último superior en tareas de coma flotante, pero inferior en tareas de uso general. Se introduce un juego de instrucciones SIMD denominado 3DNow!
Un procesador de 7,5 millones de transistores, se busca entre los cambios fundamentales con respecto a su predecesor, mejorar el rendimiento en la ejecución de código de 16 bits, añadir el conjunto de instrucciones MMX y eliminar la memoria caché de segundo nivel del núcleo del procesador, colocándola en una tarjeta de circuito impreso junto a éste. Gracias al nuevo diseño de este procesador, los usuarios de PC pueden capturar, revisar y compartir fotografías digitales con amigos y familia vía Internet; revisar y agregar texto, música y otros; con una línea telefónica; el enviar vídeo a través de las líneas normales del teléfono mediante Internet se convierte en algo cotidiano.
Los procesadores Pentium II Xeon se diseñan para cumplir con los requisitos de desempeño en computadoras de medio-rango, servidores más potentes y estaciones de trabajo (workstations). Consistente con la estrategia de Intel para diseñar productos de procesadores con el objetivo de llenar segmentos de los mercados específicos, el procesador Pentium II Xeon ofrece innovaciones técnicas diseñadas para las estaciones de trabajo y servidores que utilizan aplicaciones comerciales exigentes, como servicios de Internet, almacenamiento de datos corporativos, creaciones digitales y otros. Pueden configurarse sistemas basados en este procesador para integrar de cuatro o ocho procesadores trabajando en paralelo, también más allá de esa cantidad.
Continuando la estrategia, Intel, en el desarrollo de procesadores para los segmentos del mercado específicos, el procesador Celeron es el nombre que lleva la línea de de bajo costo de Intel. El objetivo fue poder, mediante ésta segunda marca, penetrar en los mercados impedidos a los Pentium, de mayor rendimiento y precio. Se diseña para el añadir valor al segmento del mercado de los PC. Proporcionó a los consumidores una gran actuación a un bajo coste, y entregó un desempeño destacado para usos como juegos y el software educativo.
Procesador totalmente compatible con la arquitectura x86. Internamente el Athlon es un rediseño de su antecesor, pero se le mejoró substancialmente el sistema de coma flotante (ahora con 3 unidades de coma flotante que pueden trabajar simultáneamente) y se le incrementó la memoria caché de primer nivel (L1) a 128 KiB (64 KiB para datos y 64 KiB para instrucciones). Además incluye 512 KiB de caché de segundo nivel (L2). El resultado fue el procesador x86 más potente del momento.
El procesador Athlon con núcleo Thunderbird apareció como la evolución del Athlon Classic. Al igual que su predecesor, también se basa en la arquitectura x86 y usa el bus EV6. El proceso de fabricación usado para todos estos microprocesadores es de 180 nanómetros. El Athlon Thunderbird consolidó a AMD como la segunda mayor compañía de fabricación de microprocesadores, ya que gracias a su excelente rendimiento (superando siempre al Pentium III y a los primeros Pentium IV de Intel a la misma frecuencia de reloj) y bajo precio, la hicieron muy popular tanto entre los entendidos como en los iniciados en la informática.
El procesador Pentium III ofrece 70 nuevas instrucciones Internet Streaming, las extensiones de SIMD que refuerzan dramáticamente el desempeño con imágenes avanzadas, 3D, añadiendo una mejor calidad de audio, video y desempeño en aplicaciones de reconocimiento de voz. Fue diseñado para reforzar el área del desempeño en el Internet, le permite a los usuarios hacer cosas, tales como, navegar a través de páginas pesadas (con muchos gráficos), tiendas virtuales y transmitir archivos video de alta calidad. El procesador se integra con 9,5 millones de transistores, y se introdujo usando en él tecnología 250 nanómetros.
El procesador Pentium III Xeon amplia las fortalezas de Intel en cuanto a las estaciones de trabajo (workstation) y segmentos de mercado de servidores, y añade una actuación mejorada en las aplicaciones del comercio electrónico e informática comercial avanzada. Los procesadores incorporan mejoras que refuerzan el procesamiento multimedia, particularmente las aplicaciones de vídeo. La tecnología del procesador III Xeon acelera la transmisión de información a través del bus del sistema al procesador, mejorando el desempeño significativamente. Se diseña pensando principalmente en los sistemas con configuraciones de multiprocesador.
Este es un microprocesador de séptima generación basado en la arquitectura x86 y fabricado por Intel. Es el primero con un diseño completamente nuevo desde el Pentium Pro. Se estrenó la arquitectura NetBurst, la cual no daba mejoras considerables respecto a la anterior P6. Intel sacrificó el rendimiento de cada ciclo para obtener a cambio mayor cantidad de ciclos por segundo y una mejora en las instrucciones SSE.
Cuando Intel sacó el Pentium 4 a 1,7 GHz en abril de 2001 se vió que el Athlon Thunderbird no estaba a su nivel. Además no era práctico para el overclocking, entonces para seguir estando a la cabeza en cuanto a rendimiento de los procesadores x86, AMD tuvo que diseñar un nuevo núcleo, y sacó el Athlon XP. Este compatibilizaba las instrucciones SSE y las 3DNow! Entre las mejoras respecto al Thunderbird se puede mencionar la prerrecuperación de datos por hardware, conocida en inglés como prefetch, y el aumento de las entradas TLB, de 24 a 32.
- 2004: El Intel Pentium 4 (Prescott)
A principios de febrero de 2004, Intel introdujo una nueva versión de Pentium 4 denominada 'Prescott'. Primero se utilizó en su manufactura un proceso de fabricación de 90 nm y luego se cambió a 65nm. Su diferencia con los anteriores es que éstos poseen 1 MiB o 2 MiB de caché L2 y 16 KiB de caché L1 (el doble que los Northwood), prevención de ejecución, SpeedStep, C1E State, un HyperThreading mejorado, instrucciones SSE3, manejo de instrucciones AMD64, de 64 bits creadas por AMD, pero denominadas EM64T por Intel, sin embargo por graves problemas de temperatura y consumo, resultaron un fracaso frente a los Athlon 64.
- 2004: El AMD Athlon 64
El AMD Athlon 64 es un microprocesador x86 de octava generación que implementa el conjunto de instrucciones AMD64, que fueron introducidas con el procesador Opteron. El Athlon 64 presenta un controlador de memoria en el propio circuito integrado del microprocesador y otras mejoras de arquitectura que le dan un mejor rendimiento que los anteriores Athlon y que el Athlon XP funcionando a la misma velocidad, incluso ejecutando código heredado de 32 bits.El Athlon 64 también presenta una tecnología de reducción de la velocidad del procesador llamada Cool'n'Quiet,: cuando el usuario está ejecutando aplicaciones que requieren poco uso del procesador, baja la velocidad del mismo y su tensión se reduce.
Intel lanzó ésta gama de procesadores de doble núcleo y CPUs 2x2 MCM (módulo Multi-Chip) de cuatro núcleos con el conjunto de instrucciones x86-64, basado en el la nueva arquitectura Core de Intel. La microarquitectura Core regresó a velocidades de CPU bajas y mejoró el uso del procesador de ambos ciclos de velocidad y energía comparados con anteriores NetBurst de los CPU Pentium 4/D2. La microarquitectura Core provee etapas de decodificación, unidades de ejecución, caché y buses más eficientes, reduciendo el consumo de energía de CPU Core 2, mientras se incrementa la capacidad de procesamiento. Los CPU de Intel han variado muy bruscamente en consumo de energía de acuerdo a velocidad de procesador, arquitectura y procesos de semiconductor, mostrado en las tablas de disipación de energía del CPU. Esta gama de procesadores fueron fabricados de 65 a 45 nanómetros.
Phenom fue el nombre dado por Advanced Micro Devices (AMD) a la primera generación de procesadores de tres y cuatro núcleos basados en la microarquitectura K10. Como característica común todos los Phenom tienen tecnología de 65 nanómetros lograda a través de tecnología de fabricación Silicon on insulator (SOI). No obstante, Intel, ya se encontraba fabricando mediante la más avanzada tecnología de proceso de 45 nm en 2008. Los procesadores Phenom están diseñados para facilitar el uso inteligente de energía y recursos del sistema, listos para la virtualización, generando un óptimo rendimiento por vatio. Todas las CPU Phenom poseen características tales como controlador de memoria DDR2 integrado, tecnología HyperTransport y unidades de coma flotante de 128 bits, para incrementar la velocidad y el rendimiento de los cálculos de coma flotante. La arquitectura Direct Connect asegura que los cuatro núcleos tengan un óptimo acceso al controlador integrado de memoria, logrando un ancho de banda de 16 Gb/s para intercomunicación de los núcleos del microprocesador y la tecnología HyperTransport, de manera que las escalas de rendimiento mejoren con el número de núcleos. Tiene caché L3 compartida para un acceso más rápido a los datos (y así no depende tanto del tiempo de latencia de la RAM), además de compatibilidad de infraestructura de los zócalos AM2, AM2+ y AM3 para permitir un camino de actualización sin sobresaltos. A pesar de todo, no llegaron a igualar el rendimiento de la serie Core 2 Duo.
Intel Core i7 es una familia de procesadores de cuatro núcleos de la arquitectura Intel x86-64. Los Core i7 son los primeros procesadores que usan la microarquitectura Nehalem de Intel y es el sucesor de la familia Intel Core 2. FSB es reemplazado por la interfaz QuickPath en i7 e i5 (zócalo 1366), y sustituido a su vez en i7, i5 e i3 (zócalo 1156) por el DMI eliminado el northBrige e implementando puertos PCI Express directamente. Memoria de tres canales (ancho de datos de 192 bits): cada canal puede soportar una o dos memorias DIMM DDR3. Las placa base compatibles con Core i7 tienen cuatro (3+1) o seis ranuras DIMM en lugar de dos o cuatro, y las DIMMs deben ser instaladas en grupos de tres, no dos. El Hyperthreading fue reimplementado creando nucleos lógicos. Está fabricado a arquitecturas de 45 nm y 32 nm y posee 731 millones de transistores su versión más potente. Se volvió a usar frecuencias altas, aunque a contrapartida los consumos se dispararon.
Phenom II es el nombre dado por AMD a una familia de microprocesadores o CPUs multinúcleo (multicore) fabricados en 45 nm, la cual sucede al Phenom original y dieron soporte a DDR3. Una de las ventajas del paso de los 65 nm a los 45 nm, es que permitió aumentar la cantidad de cache L3. De hecho, ésta se incrementó de una manera generosa, pasando de los 2 MiB del Phenom original a 6 MiB.
Entre ellos, el Amd Phenom II X2 BE 555 de doble núcleo surge como el procesador binúcleo del mercado. También se lanzan tres Athlon II con sólo Cache L2, pero con buena relación precio/rendimiento. El Amd Athlon II X4 630 corre a 2,8 GHz. El Amd Athlon II X4 635 continua la misma línea.
AMD también lanza un triple núcleo, llamado Athlon II X3 440, así como un doble núcleo Athlon II X2 255. También sale el Phenom X4 995, de cuatro núcleos, que corre a más de 3,2GHz. Tambien AMD lanza la familia Thurban con 6 núcleos físicos dentro del encapsulado
Llegan para remplazar los chips Nehalem, con Intel Core i3, Intel Core i5 e Intel Core i7 serie 2000 y Pentium G.
Intel lanzó sus procesadores que se conocen con el nombre en clave Sandy Bridge. Estos procesadores Intel Core que no tienen sustanciales cambios en arquitectura respecto a nehalem, pero si los necesarios para hacerlos más eficientes y rápidos que los modelos anteriores. Es la segunda generación de los Intel Core con nuevas instrucciones de 256 bits, duplicando el rendimiento, mejorando el desempeño en 3D y todo lo que se relacione con operación en multimedia. Llegaron la primera semana de Enero del 2011. Incluye nuevo conjunto de instrucciones denominado AVX y una GPU integrada de hasta 12 unidades de ejecución
Ivy Bridge es la mejora de sandy bridge a 22 nm. Se estima su llegada para 2012 y promete una mejora de la GPU, así como procesadores de sexdécuple núcleo en gamas más altas y cuádruple núcleo en las más bajas, abandonándose los procesadores de núcleo doble.
AMD Fusion es el nombre clave para un diseño futuro de microprocesadores Turion, producto de la fusión entre AMD y ATI, combinando con la ejecución general del procesador, el proceso de la geometría 3D y otras funciones de GPUs actuales. La GPU (procesador gráfico) estará integrada en el propio microprocesador. Se espera la salida progresiva de esta tecnología a lo largo del 2011; estando disponibles los primeros modelos (Ontaro y Zacate) para ordenadores de bajo consumo entre últimos meses de 2010 y primeros de 2011, dejando el legado de las gamas medias y altas (Llano, Brazos y Bulldozer para mediados o finales del 2011)
Suscribirse a:
Entradas (Atom)