Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Alejandro Aguilar Garca Natalia Domnguez Corbacho Jernimo Valverde Martnez Manuel Chacn Martn Mara Cuevas Rodrguez Carlos Porta Gmez Elementos de Programacin 1 C E. T. S. I. Telecomunicaciones
INDICE
INTRODUCCIN...............................................................................pg. 3 MQUINA DE TURING....................................................................pg. 5 MODELO DE JOHN VON NEUMANN.............................................pg. 7 MODELO HARVARD........................................................................pg. 8 SISTEMAS DE PROGRAMACIN FUNCIONAL ..........................pg. 11 SISTEMAS FORMALES FUNCIONALES ......................................pg. 13 BIBLIOGRAFA ...............................................................................pg. 15
INTRODUCCIN
NATURALEZA DE LOS COMPUTADORES -------------------------------------------------------Para abordar el tema de los modelos computacionales hay que tener ms o menos claras algunas definiciones bsicas: Qu es un COMPUTADOR? Aunque una definicin exacta sera muy difcil de encontrar se podra definir como un sistema al que se le suministra informacin en forma de datos para luego devolvernos unos resultados acordes con la resolucin de un determinado problema. Por lo tanto podramos decir que el objetivo del computador es bsicamente resolver problemas. Para ello hace uso de los programas. Qu es un PROGRAMA? Es una secuencia de instrucciones que resuelven determinados problemas planteados. Qu es la INFORMACIN? En general es cualquier conjunto de noticias, informes o datos que nos aportan algn nuevo conocimiento. En informtica ms concretamente estos datos se transmiten en forma de seales. Antecedentes histricos ---------------------------La Computacin tiene su origen en el clculo, es decir, en la preocupacin del ser humano por encontrar maneras de realizar operaciones matemticas de forma cada vez ms rpida y ms fcilmente. Pronto se dio cuenta que con ayuda de aparatos y mquinas las operaciones podan realizarse de forma ms rpida y automtica. El primer ejemplo que encontramos en la historia es el baco, aparecido hacia el 500 AC en Oriente Prximo, que serva para agilizar las operaciones aritmticas bsicas. Tambin es digno de sealar el conocido Mecanismo de Antikythera, recuperado en 1900, construido alrededor del ao 80 a.C., en la isla griega de Rodas. Era un artefacto de clculo astronmico con mecanismos de precisin. El usuario, por medio de una perilla, poda accionar un simulador en miniatura del movimiento del sol, la luna y varios planetas, teniendo a la vista la fecha en que se haba dado, o se dara, tal combinacin. La historia de la computacin es muy extensa por que a continuacin citaremos los acontecimientos ms relevantes hasta la primera generacin de computadores, donde surgieron los primeros modelos computacionales: 1623.Shickard construye la primera calculadora, basada en ruedas dentadas y capaz de sumar y multiplicar.
1642.Pascal a la edad de 19 aos inventa para su padre (un contable) una mquina que suma y resta. 1671.Leibnitz mejora la mquina de Pascal, siendo capaz de multiplicar y dividir. 1777.Mahon construye una mquina aritmtica y otra lgica, "Demostrador de Stanhope". 1820.Charles Babbage construye en parte la mquina analtica, considerndose el primer computador digital de prposito general. Sus caractersticas eran: trabajaba con una aritmtica de 50 digitos decimales, tardaba 1 segundo en hacer sumas y restas y alrededor de un minuto con las multiplicaciones y divisiones, utilizaba tarjetas perforadas para las operaciones y las variables. 1854.Boole publica "Las leyes del pensamiento" sobre las cuales son basadas las teoras matemticas de Lgica y Probabilidad. Empezaba asi el lgebra Booleana, que consiste en un mtodo para resolver problemas de lgica que recurre solamente a los valores binarios 1 y 0 y a tres operadores: AND, OR y NOT. 1890.Hollerith construye una mquina para tabular el censo. 1914.Torres Quevedo con tecnologa electromagntica disea los esquemas de una calculadora digital. 1936.Alan Turing contest a la cuestin de si las matemticas son "decidibles", planteada aos atras, construyendo un modelo formal de computador, la Mquina de Turing, y demostrando que haba problemas tales que una mquina no poda resolver. Al mismo tiempo en Estados Unidos contestaba a la misma cuestin Alonzo Chuch, basndose en una notacin formal, que denomin clculo lambda, para transformar todas las frmulas matemticas a una forma estndar. 1938.Stibitz crea MODEL I, el primer sistema con terminales remotos, que empleaba nmeros complejos para clculos balsticos. 1941.Basndose en los resultados de Turing y de Chuch, Zuse dise y construy su serie de computadores electromecnicos binarios, desde el Z1 hasta el Z3. 1942.Atanasoff construye una mquina de propsito general con tubos de vaco. Fue la primera computadora electrnica digital. 1943.Mauchy y Eckert construyen el ENIAC (Electronic Numeric Integrator and Calculator). Sus caractersticas: empleaba 18000 tubos de vaco; consuma 150 kW; tena una medidas de 30x2,5 metros; utilizaba 20 registros de 10 dgitos decimales; tardaba 200 microsegundos en la suma, 2,8 milisegundos en la multiplicacin y 6 milisegundos en la divisin; segua utilizando el sistema de tarjetas perforadas. 1945.Von Neumann tiene una idea innovadora que es almacenar en una memoria rpida datos e instrucciones para que para modificar un programa baste con modificar las instrucciones almacenadas en la memoria. A este modelo se le conoce como "Modelo de von Neumann" y es el que an en da emplean los computadores.
MQUINA DE TURING
Alan Mathison Turing, matemtico y computador cientfico ingls, desarroll en torno a 1935 y 1945 un modelo computacional hipottico que permite en teora resolver cualquier problema matemtico siempre y cuando se reduzca a un algoritmo (conjunto ordenado y finito de operaciones que permiten la resolucin de un problema, como por ejemplo la extraccin de races cuadradas o el clculo de una suma, producto o divisin de nmeros, etc). De esta forma ser posible calcular funciones dadas a partir de las operaciones ms simples posibles y, aunque sea un algoritmo muy complejo, ser posible descomponerlo en una mayor cantidad de pasos hasta resolverlo. Este modelo, que en principio vino a llamarse Mquina de computacin lgica (Logical Computing Machine), pero que en honor a su ideador se le acab llamando mquina de Turing, es considerada la precursora de la computacin digital moderna a pesar de su sencillez estructural. Segn la Tesis de Church-Turing (llevada a cabo por Alan Turing y Alonzo Churh a mediados del siglo XX de forma independiente), se demuestra que un problema es computable si se puede construir una mquina de Turing capaz de llevar a cabo el procedimiento para resolverlo y que para cualquier otra mquina alternativa a sta, se puede crear una Mquina de Turing equivalente capaz de resolver cualquier computacin que se realice en la otra mquina. Un esquema bsico de lo que puede ser una Mquina de Turing es el siguiente:
Los componentes de esta mquina y sus descripciones son: Memoria: se trata de una cinta infinitamente larga dividida en celdas cuadradas en cada una de las cuales hay un smbolo de un cdigo (por ejemplo, un smbolo del cdigo binario, es decir, un 1 o un 0, por lo que la cinta ocupa un bit). Este conjunto de smbolos, o cdigo, es lo que se conoce como alfabeto de la mquina. En esta memoria se permite el almacenamiento tanto de la informacin introducida y de los datos de salida, como de los pasos intermedios que se han llevado a cabo para resolver el algoritmo, lo que permite algo muy til: hacer un seguimiento del proceso llevado a cabo. Debido al mltiple uso que se le da a la memoria y a la imposibilidad de conocer el nmero de pasos intermedios que la mquina va a necesitar, es por lo que la cinta debe ser ilimitada. Es precisamente este detalle de memoria sin fin lo que le otorga tanta importancia a la mquina de Turing.
Cabezal de lectura-escritura: es un dispositivo capaz de realizar cuatro operaciones: desplazarse una posicin a la derecha respecto a la celda actual, desplazarse una posicin a la izquierda, leer el contenido de la celda en la que se encuentra y escribir un smbolo distinto al que haba sido ledo por el cabezal o escribir nuevamente el que haba en la celda. Procesador: es un dispositivo digital que puede dividirse en dos partes atendiendo a las distintas funciones que cumple cada una dentro de la mquina. Por un lado existe un registro de estado que contiene un nmero determinado de posibles estados internos de la mquina y que almacena el estado concreto en el que se encuentra el procesador. Por otra parte existe una tabla de accin que contiene las instrucciones de lo que realiza la mquina en cada instante de tiempo. Esta ltima parte del procesador es la encargada de decidir cul ser el nuevo estado, el smbolo que se va a escribir en la cinta y la direccin que tomar el cabezal dependiendo del carcter que se acaba de leer y del estado actual interno. Por as decirlo, esta parte contendra todo el programa posible de la mquina. La mquina de Turing funciona de la siguiente forma para realizar una computacin Z=f(x): el dato de entrada x se codifica de forma que se pueda almacenar en la memoria, entonces se comienza el proceso con los pasos para resolver la funcin, escribindolos en la memoria. Cuando termine la ltima operacin, la mquina reflejar en la cinta el resultado. Por este mismo hecho de que la propia mquina, como si de una mente humana se tratara, es la que toma las decisiones dependiendo del estado interno del procesador y de la informacin externa que el cabezal lee en la cinta, este modelo computacional es considerado una mquina autmata capaz de alterar su propio programa. Es ms, Turing estaba ms interesado en la posibilidad de crear modelos lgicos cuyas acciones se asemejaran al funcionamiento de la mente, que en las aplicaciones prcticas de un modelo de computacin. A pesar de ser slo un modelo terico, a la mquina de Turing se la considera una mquina por el hecho de que su funcionamiento se reduce a operaciones tan simples y reales que se ajustan a la definicin de dispositivo. Esto ha hecho que existan numerosas versiones prcticas de este modelo, aunque no se trata de mquinas de Turing completas porque sus memorias estn limitadas al ser imposible construir modelos reales con memoria ilimitada. Es ms, es tan importante en el mundo de la computacin que hoy en da, numerosos trabajos de computacin toman como referencia este modelo computacional.
Modelo de Von Neumann Este modelo tiene varias caractersticas clave que se muestran de una manera u otra en todos los sistemas actuales:
.
Una Unidad de Memoria (a memory unit) que almacena valores e instrucciones en unos lugares especficos denominados celdillas, los cuales forman la memoria y son de un tamao prefijado. Una Unidad Central de Proceso, UCP (a central processing unit, CPU) que accede a la memoria de forma secuencial. Una Instruccin (an instruction) que especifica alguna secuencia particular de actividades en la CPU que modifican los contenidos de las localizaciones de la memoria o los registros de la CPU. Un Programa (a program) que consiste en una secuencia ordenada de instrucciones colocada en la memoria. Un Controlador de Programa (a Program Counter) en la CPU para seleccionar la siguiente instruccin de la memoria Un Lenguaje de Programacin (a programming language) que especifica como y que instrucciones se pueden colocar en la memoria.
Los sistemas basados en el modelo de Von Neumann tienen un solo bus para acceder tanto a datos como a instrucciones y esto es una de las caractersticas ms incomodas de este sencillo modelo. Diremos que un microcontrolador es de 4 bit cuando el bus de este sea de 4 bit, ser de 8 bit cuando el bus sea de 8 bit... Aunque por otra parte se puede considerar una ventaja, ya que al haber un nico cableado (bus) para el acceso a datos e instrucciones, se facilita en gran medida la conexin de memoria externa a travs de las lneas de entrada salida con una mnima implementacin extra de hardware. Por contra, tenemos que una instruccin puede ocupar ms de un byte con lo que para poder leer la instruccin completa tendremos que hacer varias lecturas en la memoria con lo que debemos de emplear varios ciclos de reloj para extraer una instruccin. Otra desventaja es que es posible que el contenido del contador del programa (PC) se corrompa con lo que se podra estar leyendo un dato y tratar de interpretarlo como instruccin pudiendo producirse como consecuencia un deterioro y cada del sistema. Normalmente un microprocesador debe de controlar que el PC no haga cosas raras. La principal caracterstica del modelo de Von Neumann es que durante su ejecucin, los programas nicamente pretenden modificar la memoria. Debemos conocer las localizaciones de los datos antes de ejecutar los programas para recoger despus los resultados. Esto es internamente patente en el funcionamiento y la semntica de los lenguajes de programacin convencionales. En estos lenguajes de programacin la instruccin ms importante es la de asignacin. Todos los lenguajes de programacin convencionales disponen de modos de asignacin ms o menos significativos. Otra de las caractersticas que poseen los microcontroladores basados en este tipo de arquitectura es que suelen tener un repertorio de instrucciones bastante grande. Este tipo de repertorio se llama CISC del ingls Complex Instruction Set Computer. La caracterstica principal que este tipo de conjunto de instrucciones que suele ser bastante elevado y las instrucciones estn microcodificadas, es decir, que una instruccin ser decodificada por la CPU en varias instrucciones bsicas.
MODELO DE HARVARD
La arquitecturaHarvard se caracteriza por tener la memoria de datos separada de la memoria del programa y estas a su vez estn unidas a la CPU a travs de buses independientes, luego, pueden tener distintos contenidos en la misma direccin. La arquitectura de Harvard permite a la CPU acceder silmutneamente a las dos memorias. Adems propicia numerosas ventajas al funcionamiento del sistema.
El que la informacin se almacene en palabras tiene una gran ventaja y es que tanto el codop como el dato asociado a este estn en la misma posicin por lo que su lectura es mucho ms rpida. Esta es una gran ventaja ya que dota al microcontrolador de gran agilidad. La tcnica de procesar varias instrucciones al mismo tiempo se conoce como pipelining o segmentacin. Con esta tcnica se dividen las instrucciones en distintas etapas de modo que el procesador puede procesar distintas instrucciones en estas etapas. Una desventaja de este sistema es que la adicin de memoria externa es mucho mas compleja en incluso a veces imposible. Este modelo presenta ms rapidez de ejecucin de cdigo, incluso en algoritmos de divisin que vienen implementados con ms cdigo en los RISC que el los CISC, la velocidad de ejecucin es mayor en los primeros. Menor nmero de instrucciones es una ventaja a la hora de elegir este tipo de microcontroladores para determinadas tareas, no hace falta aprender tantas instrucciones cuando queremos programar un mcu para una tarea simple. Por contra usaremos en general ms memoria en un pic que en un HC11 para realizar una misma funcin, aunque depende de sta, hablamos en general.
Modelo Harvard
En la arquitectura Harvard, la memoria de datos y de programa estn separadas, usando para almacenar las instrucciones lo que se llaman palabras. Palabras las hay de muchos tamaos como por ejemplo en los microcontroladores PIC. Los PIC de gama baja usan palabras de 12 bit, los de gama media 14 bit y los de gama alta 16 bit. Por otro lado esta la arquitectura Von Neumann que se caracteriza por tener la memoria de programa y la de datos implementada en un mismo bloque de memoria compartiendo datos e instrucciones en un mismo bus. En este tipo de microcontroladores se usan bytes para almacenar datos e instrucciones. Un ejemplo de estos microcontroladores son los Zilog, National Semiconductors o los de Motorola. Ambas arquitecturas tienen ventajas e inconvenientes, como hemos enumerado en apartados anteriores, y como siempre en el mundo de la electrnica, dependiendo de la aplicacin en la que vayamos a usar el microcontrolador, frecuencia de trabajo, conexin a otros perifricos etc, deberemos de elegir un microcontrolador u otro.
En esta tabla podemos ver una comparacin de ambos modelos. Microcontrolador Arquitectura Conjunto de instrucciones N de instrucciones Pic 16Cxxx Pic 17Cxxx Motorola HC11 Intel 8051 Hardvard Hardvard Von Newman Von Newman RISC RISC CISC CISC 35 58 109 40
As pues podemos decir que la principal ventaja de usar mcus con conjunto de instrucciones CISC es que para una instruccin compleja solo usaremos una posicin de memoria al contrario que ocurre con RISC que para realizar por ejemplo una divisin debemos de usar varias instrucciones consumiendo ms memoria. Frente a esta ventaja de los repertorios CISC, se nos presenta una desventaja con respecto a los RISC, y es que el ancho de banda se va reducido considerablemente debido a que una instruccin va a consumir varios ciclos de instruccin para ejecutarse, ya lo vimos antes, estos microcontroladores son ms lentos que los que usan repertorios RISC y adems puede ser que el conjunto de instrucciones sea bastante grande, vase Motorola HC11 lo que no es una gran pega pero si mas trabajo para aprendrselo y aprender a usarlo.
10
11
formularios funcionales sin un sistema funcional (estas limitaciones no se encuentra en los sistemas funcionales formales, FFP) El poder expresivo de este tipo de sistemas suponga dos sistemas funcionales, ambos tienen el mismo conjunto de objetos y el mismo conjunto de funciones primitivas, pero el conjunto de formularios del primero incluye correctamente al segundo. Suponga tambin que otros sistemas pueden expresar todas las funciones computables de objetos, sin embargo podemos decir que el primero es mas expresivo que el primero cuando todas las funciones expresadas en el segundo pueden ser duplicadas en el primero, pero usando un formulario no perteneciente al segundo, el primero puede expresar mas directamente y fcilmente algunas funciones que el segundo. La principal razn por la que los sistemas funcionales estn considerados mas simples que otros lenguajes convencionales es que solo usan un sistema fijo y elemental de nombramiento. Lo ms importante es que trata los nombres como funciones que pueden ser combinadas con otras funciones sin tratamiento especial. Esto le permite la oportunidad de desarrollar a un nivel ms alto las tcnicas para manipular y producir programas superando en este aspecto al sistema de Von Neumann. Otros problemas interesantes son encontrar algoritmos par expandir y analizar el comportamiento de las funciones para varias clases de argumentos y explorar caminos de uso de leyes y teoremas como reglas bsicas de un esquema formal.
12
Sintaxis
Describimos un conjunto O de objetos y el conjunto E de expresiones en un sistema funcional formal. Estos dependen de la opcin de cierto conjunto A de tomos, cul tomamos segn lo dado. Asumimos que T (verdadero), F (falso), (secuencia vaca) y # (defecto) pertenecen a A, as como nmeros de varias clases, etc. a) Fondo, _, es un objeto pero no un tomo. b) Cada tomo es un objeto. c) Cada objeto es una expresin d) Si x e y son expresiones, entonces (x:y) es una expresin llamada aplicacin. x es el operador e y es el operando. Ambos son elementos de la expresin. e) Todos los objetos y expresiones estn formados por las infinitas combinaciones y usos de estas reglas.
13
14
BIBLIOGRAFA
Fundamentos de los Computadores, Pedro de Miguel Anasagasti. Ed. Paraninfo Fundamentos de los Computadores, Rafael Asenjo Plaza, Eladio Gutirrez, Julin Ramos Czar. Universidad de Mlaga / Manuales. Turings World 3.0. An Introduction to Computability Theory, Jon Barwise y John Etchemendy. CSLI Publications, Standford, California. Introduccin a la Arquitectura de Computadores, Javier Bastida Ibez, Universidad de Valladolid. Programming Languages, A Grand Tour, Ellis Horowitz. Ed. Computer Science Press Introduccin a la teora de la Computabilidad, Hans Hermes, Edit. Tecnos. http://www.terra.es/personal/fremiro/arquitectura.htm http://www.eurobotics.org/hardvardvsvon.html
15