martes, 11 de diciembre de 2018

ARQUITECTURA CISC

CISC


Complex Instruction Set Computer (CISC). En español(Computadora de Conjunto de Instrucciones Complejas). En ella el procesador trae cientos de registros y se necesitan muchos pasos y ciclos de reloj para realizar una sola operación.
Todos los CPUs x86 compatibles con la PC son procesadores CISC, pero en las Mac nuevas o en algunas que se hagan dibujos de ingeniería complejos, probablemente tengan un CPU RISC(Computadora de Conjunto de Instrucciones Reducido).

CARACTERÍSTICAS
La microprogramación es una característica importante y esencial de casi todas las arquítecturas CISC. Como por ejemplo: Intel 8086, 8088, 80286, 80386, 80486, Motorola 68000, 68010, 620, 8030, 684.
La microprogramación significa que cada instrucción de máquina es interpretada por un microprograma localizado en una memoria en el circuito integrado del procesador. En la década de los sesentas la micropramación, por sus características, era la técnica más apropiada para las tecnologías de memorias existentes en esa época y permitía desarrollar también procesadores con compatibilidad ascendente. En consecuencia, los procesadores se dotaron de poderosos conjuntos de instrucciones.
Las instrucciones compuestas son decodificadas internamente y ejecutadas con una serie de microinstrucciones almacenadas en una ROM interna. Para esto se requieren de varios ciclos de reloj (al menos uno por microinstrucción). La meta fundamental de la arquitectura de CISC es terminar una tarea adentro como pocas líneas de la asamblea como sea posible. Esto es alcanzado construyendo el hardware del procesador que es capaz de entender y de ejecutar una serie de operaciones.
Para esta tarea particular, un procesador de CISC vendría preparado con una instrucción específica a la que se le nombrara MULT. Cuando está instrucción esta ejecutada, carga los dos valores en los registros separados, multiplica los operandos en la unidad de la ejecución, y después almacena el producto en el registro apropiado. Así, la tarea entera de multiplicar dos números se puede terminar con una instrucción.


MULT 2:3, 5:2
MULT es la qué se conoce como “instrucción compleja.
FUNCIONAMIENTO:
Funciona directamente en los bancos de la memoria de computadora y no requiere a programador llamar explícitamente ningún cargamento o las funciones el almacenar. Se asemeja de cerca a un comando en una lengua de alto nivel. Por ejemplo, si dejamos “a” representar el valor de 2:3 y “b” representa el valor de 5:2, después este comando es idéntica a la declaración de C “a = a * B.”
Una de las ventajas primarias de este sistema es que el recopilador tiene que hacer muy poco el trabajo para traducir una declaración del idioma de alto nivel a la asamblea. Porque la longitud del código es relativamente corta, el ESPOLÓN muy pequeño se requiere para almacenar instrucciones. El énfasis se pone en instrucciones complejas del edificio directamente en el hardware.
CISC no representa una propuesta de arquitectura de procesador en el sentido usual. CISC refleja la forma en que se desarrollaban y las mejoras que se habían introducido a las arquitecturas de procesadores hasta, más o menos, 1975. CISC, es el Computador con un Conjunto Complejo de Instrucciones (Complex Instruction Set Computer), representa el nombre la corriente principal desarrollada en arquitectura de computadores y, quizás, podríamos entender que es el nombre que se asigno a la tendencia a la cual el movimiento RISC se oponía.

"Para realizar una sola instrucción un chip CISC requiere de cuatro a diez ciclos de reloj"

Entre las ventajas de CISC destacan las siguientes:
•          Reduce la dificultad de crear compiladores.
•          Permite reducir el costo total del sistema.
•          Reduce los costos de creación de software.
•          Mejora la compactación de código.
•          Facilita la depuración de errores.

Ejemplo de microprocesadores basados en la tecnología CISC:

•          Intel 8086, 8088, 80286, 80386, 80486.
•          Motorola 68000, 68010, 68020, 68030, 6840.
•          MIPS, Millions Instruction Per Second.
•          PA-RISC, Hewlett Packard.
•          SPARC, Scalable Processor Architecture, Sun Microsystems.
•          POWER PC, Apple, Motorola e IBM.




FUNCIONAMIENTO

Funciona directamente en los bancos de la memoria de computadora y no requiere a programador llamar explícitamente ningún cargamento o las funciones el almacenar. Se asemeja de cerca a un comando en una lengua de alto nivel. Por ejemplo, si dejamos “a” representar el valor de 2:3 y “b” representa el valor de 5:2, después este comando es idéntica a la declaración de C “a = a * B.”
Una de las ventajas primarias de este sistema es que el recopilador tiene que hacer muy poco el trabajo para traducir una declaración del idioma de alto nivel a la asamblea. Porque la longitud del código es relativamente corta, el ESPOLÓN muy pequeño se requiere para almacenar instrucciones. El énfasis se pone en instrucciones complejas del edificio directamente en el hardware.
CISC no representa una propuesta de arquitectura de procesador en el sentido usual. CISC refleja la forma en que se desarrollaban y las mejoras que se habían introducido a las arquitecturas de procesadores hasta, más o menos, 1975. CISC, es el Computador con un Conjunto Complejo de Instrucciones (Complex Instruction Set Computer), representa el nombre la corriente principal desarrollada en arquitectura de computadores y, quizás, podríamos entender que es el nombre que se asigno a la tendencia a la cual el movimiento RISC se oponía.


APLICACIÓN

Las arquitecturas CISC utilizadas desde hace 15 años han permitido desarrollar un gran número de productos de software. Ello representa una considerable inversión y asegura a estas familias de procesadores un mercado creciente. Sin embargo, simultáneamente aumentan las aplicaciones en las cuales la capacidad de procesamiento que se pueda obtener del sistema es más importante que la compatibilidad con el hardware y el software anteriores, lo cual no solo es válido en los subsistemas de alta capacidad en el campo de los sistemas llamados "embedded", en los que siempre dominaron las soluciones especiales de alta capacidad de procesamiento sino también para las estaciones de trabajo ("workstations"). Esta clase de equipos se han introducido poco a poco en oficinas, en la medicina y en bancos, debido a los cada vez mas voluminosos y complejos paquetes de software que con sus crecientes requerimientos de reproducción visual, que antes se encontraban solo en el campo técnico de la investigación y desarrollo.
En este tipo de equipos, el software de aplicación, se ejecuta bajo el sistema operativo UNIX, el cual es escrito en lenguaje C, por lo que las arquítecturas RISC actuales están adaptadas y optimizadas para este lenguaje de alto nivel. Por ello, todos los productores de estaciones de trabajo de renombre, han pasado en pocos años, de los procesadores CISC a los RISC, lo cual se refleja en el fuerte incremento anual del número de procesadores RISC, (los procesadores RISC de 32 bits han visto crecer su mercado hasta en un 150% anual). En pocos años, el RISC conquistará de 25 al 30% del mercado de los 32 bits, pese al aparentemente abrumador volumen de software basado en procesadores con el estándar CISC que se ha comercializado en todo el mundo.


EL SIGUIENTE VÍDEO NOS EXPLICA TODA LA HISTORIA DE CISC DE FORMA RESUMIDA:



CIBERGRAFÍA 


GENERACIONES DE LAS COMPUTADORAS

















Primera Generación (1938-1958) 

En esta época las computadoras funcionaban con válvulas, usaban tarjetas perforadas para entrar los datos y los programas, utilizaban cilindros magnéticos para almacenar información e instrucciones internas y se utilizaban exclusivamente en el ámbito científico o militar. La programación implicaba la modificación directa de los cartuchos y eran sumamente grandes, utilizaban gran cantidad de electricidad, generaban gran cantidad de calor y eran sumamente lentas.



Características:

  • Eran maquinas gigantescas, lentas, consumían mucha electricidad y se calentaban mucho.
  • Usaban el sistema binario para mostrar los datos.
  • Introducían datos y programas con tarjetas perforadas.
  • Almacenaban datos con cilindros magnéticos..
  • Procesaban la información con tubos de vació.
  • Eran muy costosas de hacer



Segunda Generación (1958-1963) 


Características de ésta generación: Usaban transistores para procesar información. Los transistores eran más rápidos, pequeños y más confiables que los tubos al vacío. 200 transistores podían acomodarse en la misma cantidad de espacio que un tubo al vacío. Usaban pequeños anillos magnéticos para almacenar información e instrucciones. Producían gran cantidad de calor y eran sumamente lentas. Se mejoraron los programas de computadoras que fueron desarrollados durante la primera generación. Se desarrollaron nuevos lenguajes de programación como COBOL y FORTRAN, los cuales eran comercialmente accesibles. Se usaban en aplicaciones de sistemas de reservaciones de líneas aéreas, control del tráfico aéreo y simulaciones de propósito general. La marina de los Estados Unidos desarrolla el primer simulador de vuelo, Computadora Whirlwind. Se comenzó a disminuir el tamaño de las computadoras. Aparecen muchas compañías y las computadoras eran bastante avanzadas para su época como la serie 5000 de Burroughs y la ATLAS de la Universidad de Mánchester. Algunas computadoras se programaban con cintas perforadas y otras por medio de cableado en un tablero.






Las características más importantes:

  • Las maquinas eran más pequeñas.
  • Almacenaban la información mediante anillos magnéticos.
  • Procesaban la información con transistores.
  • Estos transistores eran más pequeños que los tubos de vació.
  • Aparecen las primeras mini computadoras.
  • El costo de producción seguía siendo alto.
  • Aparecen lenguajes de programación (COBOL, FORTRAN) a nivel comercial.
  • Se creo el primer simulador de vuelo (Whirlwind 1).

Tercera Generación (1964-1970) 


Comienza a utilizarse los circuitos integrados, lo cual permitió abaratar costos al tiempo que se aumentaba la capacidad de procesamiento y se reducía el tamaño de las máquinas. La tercera generación de computadoras emergió con el desarrollo de circuitos integrados (pastillas de silicio) en las que se colocan miles de componentes electrónicos en una integración en miniatura. El PDP-8 de la Digital Equipment Corporation fue el primer miniordenador. 





Características:

  • Su tamaño bajo notablemente (minicomputadoras)
  • El coste de estas ya no era tan alto.
  • Eran más rápidos y no se calentaban tanto.
  • Ya no consumían tanta electricidad.
  • Aparece el circuito integrado (pastillas de silicio).
  • El almacenamiento y el procesamiento de los datos se hacia con los “chips”.
  • Aparece la multiprogramación.
  • Las empresas de Software empiezan a surgir.
Cuarta Generación (1971-1983) 

Fase caracterizada por la integración de los componentes electrónicos, lo que propició la aparición del microprocesador, es decir, un único circuito integrado en el que se reúnen los elementos básicos de la máquina. Se desarrolló el microprocesador. Se colocan más circuitos dentro de un "chip". "LSI - Large Scale Integration circuit". "VLSI - Very Large Scale Integration circuit". Cada "chip" puede hacer diferentes tareas. Un "chip" sencillo actualmente contiene la unidad de control y la unidad de aritmética/lógica. El tercer componente, la memoria primaria, es operado por otros "chips". Se reemplaza la memoria de anillos magnéticos por la memoria de "chips" de silicio. Se desarrollan las microcomputadoras, o sea, computadoras personales o PC. Se desarrollan las supercomputadoras. 




Características:

  • Reducción considerable del coste de producción.
  • Surge el microprocesador.
  • Aparecen los primeros ordenadores personales (Pc)
  • Nacen las supercomputadoras.
  • Se cambia la memoria de los anillos magnéticos por la memoria de los chips.
  • Dentro de los chips se colocan muchos más circuitos.
  • Ahora los chips pueden realizar tareas distintas.
Quinta Generación (1984 -1999)

Surge la PC tal cual como la conocemos en la actualidad. IBM presenta su primera computadora personal y revoluciona el sector informativo. En vista de la acelerada marcha de la microelectrónica, la sociedad industrial se ha dado a la tarea de poner también a esa altura el desarrollo del software y los sistemas con que se manejan las computadoras. 





Características:

  • En 1983, Japón, crea el “programa de la quinta generación de computadoras”.
  • Crean supercomputadoras.
  • Surge la inteligencia artificial.
  • Nace la robótica.
  • Hace aparición la fibra óptica, telecomunicaciones, algoritmos genéticos.
  • Se diseñan módulos de memoria compartida
  • Aparece el “CD”.


Sexta Generación (1999 - Actualidad) 

Como supuestamente la sexta generación de computadoras está en marcha desde principios de los años noventas, debemos por lo menos, esbozar las características que deben tener las computadoras de esta generación. También se mencionan algunos de los avances tecnológicos de la última década del siglo XX y lo que se espera lograr en el siglo XXI. Las computadoras de esta generación cuentan con arquitecturas combinadas Paralelo / Vectorial, con cientos de microprocesadores vectoriales trabajando al mismo tiempo; se han creado computadoras capaces de realizar más de un millón de millones de operaciones aritméticas de punto flotante por segundo (teraflops); las redes de área mundial (Wide Area Network, WAN) seguirán creciendo desorbitadamente utilizando medios de comunicación a través de fibras ópticas y satélites, con anchos de banda impresionantes. Las tecnologías de esta generación ya han sido desarrolladas o están en ese proceso. Algunas de ellas son: inteligencia / artificial distribuida; teoría del caos, sistemas difusos, holografía, transistores ópticos, etcétera.






Características:

  • Tamaños reducidos que dan paso a las Laptops, portátiles, PDAs, etc.
  • Abaratamiento de los costes de producción.
  • La robótica empieza a consolidarse como un autentico potencial
  • Mejora en prestaciones para aguantar el calor.
  • Se crean los móviles inalámbricos.
  • La inteligencia artificial se abre paso.
  • Nacimiento y mejora de las redes Wifi, Bluetooth, etc.
  • Se crean los procesadores paralelos masivos
  • Mejora de las memorias de almacenamiento (USB, Discos duros, PCMCIA, etc)
  • Crece el comercio electrónico y la mensajería.
  • Aparición de la realidad Virtual.
  • Inicio de las computadoras ópticas y cuánticas.


EN ESTE VÍDEO PODRÁN APRECIAR LA HISTORIA DE LA COMPUTADORA Y SUS CARACTERÍSTICAS:



CIBERGRAFÍA



sábado, 8 de diciembre de 2018

COMPILADORES

¿ QUÉ ES UN COMPILADOR?

Un compilador es un traductor que trasforma textos fuentes de lenguaje de alto nivel a lenguajes de bajo nivel. Un compilador típicamente opera en fases, cada una lleva a cabo una tarea sobre el programa fuente.






CARACTERÍSTICAS:

Para cada lenguaje de programación se requiere un compilador separado.
  • El compilador traduce todo el programa antes de ejecutarlo.
  • Los programas compilados se ejecutan más rápido que los interpretados, debido a que han sido completamente traducidos a lenguaje máquina.
  • Informa al usuario de la presencia de errores en el programa fuente.
  • Poseen un editor integrado con un sistema de coloreado para los comandos, funciones, variables y demás partes de un programa.





HERRAMIENTAS PARA GENERAR COMPILADORES:

Herramientas tradicionales
  • Lex/Yacc
  • Pclex
  • Pcyacc
  • Bison
  • Flex

VENTAJAS:

  • Generan analizadores eficientes, incluso más que los que se pudiera hacer de manera manual.
  • Los analizadores ascendentes reconocen la mayor parte de los lenguajes

DESVENTAJAS:

  • Yacc usa herramientas externas para que le provean los tokens necesarios
  • Las acciones semánticas asociadas con las producciones de los no terminales de las gramáticas son difíciles de depurar
  • Yacc no genera árboles de análisis sintáctico
  • Mezcla las especificaciones sintácticas con las semánticas
  • Incrementos en la dificultad del trabajo de depuración de puesto que los errores que cometen el fichero de especificación con solo visibles en el analizador generado.


HERRAMIENTAS DE NUEVA GENERACIÓN:

ANTLR

  • Se considera el lex/yacc del nuevo milenio.
  • Genera árboles sintácticos descendentes.
  • Escrito íntegramente en JAVA.
  • Genera código en JAVA o C++.

Ventajas

  • Buena integración de los analizadores léxicos y sintácticos
  • El código generado por ANTLR es más fácil de entender y depurar que el YACC.
  • Las especificaciones gramaticales de ANTLR permiten la notación BNF y generan árboles de análisis sintáctico.

Desventajas

  • Genera analizadores menos eficientes que los generados por YACC.
  • Los ficheros de especificación de ANTLR son muy complejas.
  • El proceso de depurado consta de las siguientes fases:
  1. Escribir el código de acciones.
  2. Compilar el fichero de especificaciones
  3. Compilar y ejecutar el programa generado
  4. Localizar errores del programa
  5. Corregir errores en el fichero de especificaciones

JAVACC:

  • Inicialmente se llamo JACK.
  • Similar al ANTLR.
  • Analizador ascendente.

Ventajas

  • Buena integración y los analizadores léxicos y sintáctico.
  • Genera analizadores sintácticos descendentes basados en la gramática.
  • Incluye la herramienta JJTREE para generar árboles sintácticos.

Desventajas

  • Las mismas que ANTLR

OTRAS HERRAMIENTAS

BYACC/JAVA

  • Extensión de YACC para generar código JAVA en vez de C/C++.
  • Fichero de especificaciones igual que YACC
  • Código y declaraciones de lenguaje escritos en JAVA.

COCO/JAVA

  • Generados de compiladores que a partir de la descripción del lenguaje mediante una gramática LL genera un analizador sintáctico y un analizador léxico para dicho lenguaje.

CUP

  • Versión LEX/YACC para JAVA (su forma de trabajo es análoga).

JACCIE

  • JAVA BASED COMPILER.-Compiler in an Interactive Environment.
  • Herramienta educativa que se puede utilizar para visualizar las técnicas de compilación.
  • Dos principales componentes: un generador de analizadores léxicos y una variedad de generadores de generadores sintácticos.

JELL

  • Es un generador de analizadores sintácticos que genera analizadores descendentes a partir de gramáticas LL.

KITS PARA LA CONSTRUCCIÓN DE COMPILADORES

COKTAIL

Conjunto de herramientas para construir compiladores
  • REXàgenerador de analizadores léxicos.
  • LALRàgenerador de analizadores sintácticos.
  • ELLàgenerador de analizadores sintácticos.
  • ASTàgenerador de árboles sintácticos.
  • AGàpermite procesar gramáticas atribuidas.

ELI

  • Combina una variedad de herramientas estándar para implementar potentes estrategias en la construcción de compiladores.
  • Se pueden generar automáticamente implementaciones de lenguajes completos a partir de las especificaciones de la aplicación.
  • Contiene librerías de especificaciones reusable.

PCCT

  • Escrito inicialmente en C++ para generar compiladores en C++.
  • Portado a JAVA y llamado ANTLR.XX
  • Consta de 3 herramientas:
  1. ANTLRàgenerador de analizadores de sintácticos
  2. DLGàgenerador de analizadores léxicos
  3. SORCERERàgenerador de árboles sintácticos






"EN  EL PRESENTE VÍDEO PODRÁN APRECIAR QUE ES UN COMPILADOR Y COMO FUNCIONA"




CIBERGRAFÍA