• No se han encontrado resultados

Introducción a la Computación Cómo funciona una computadora?

N/A
N/A
Protected

Academic year: 2021

Share "Introducción a la Computación Cómo funciona una computadora?"

Copied!
22
0
0

Texto completo

(1)

Introducci ´on a la Computaci ´on

¿C ´

omo funciona una computadora?

Esteban E. Mocskos ([email protected])

Facultad de Ciencias Exactas y Naturales, UBA CONICET

(2)

Un poquito de historia

Y al comienzo solo hab´ıa oscuridad

Hasta que se hizo la luz ...

¡Alan Turing!

En 1936, escribe On Computable Numbers, with an Application to the Entscheidungsproblem - Decision Problem en Proceedings of the London Mathematical Society.

Cre ´o una m ´aquina “imaginaria” (por que a ´un no se hab´ıa construido) llamada m ´aquina universal de c ´omputo (“universal computing machine”). Hoy en d´ıa se la conoce como “Universal Turing machine”.

(3)

¿Qu ´e es una computadora?

Modelo de von Neumann

Se compone de cuatro partes principales:

1 Memoria 2 Unidad de Control 3 Unidad aritm ´etica l ´ogica

4 Componentes de entrada/salida (input/output)

Memoria de acceso aleatorio de lectura y escritura para

instruccionesy datos.

Los datos son informaci ´on almacenada que es usada e interpretada por el programa (o programador). Los programas son datos codificados que indican a la computadora qu ´e tiene que hacer.

La unidad de control consigue las instrucciones y datos de la memoria, decodifica las instrucciones y luego coordina las distintas tareas para que las operaciones se realicen.

La unidad aritm ´etica se encarga de las operaciones b ´asicas entre n ´umeros enteros.

Los componentes de entrada/salida son la comunicaci ´on con el universo de los humanos.

(4)

¿Qu ´e es una computadora?

Los tres componentes del sistema son:

1 La unidad central de proceso (CPU): dentro

est ´an los registros que pueden ser

manipulados directamente por un programa.

2 La memoria

3 Los dispositivos de Entrada/Salida (I/O).

Estos tres componentes se interconectan mediante un dispositivo denominado bus de sistema (system bus).

Bus: es un paquete de conductores (cables o pistas) que interconectan

(5)

¿Qu ´e es una computadora?

Ciclo de instrucci ´on

Una computadora vive realizando el siguiente ciclo:

1 Fetch: conseguir la siguiente instrucci ´on a ejecutar. 2 Decode: a partir de un chorizo de bits (0110 1110 1100

1100) adivinar de qu ´e instrucci ´on se trata.

3 Memory fetch: de ser necesario, se deber ´an conseguir los

datos requeridos por la instrucci ´on.

4 Execute: se ejecuta la instrucci ´on.

5 Write back: si fuera necesario, se deber ´a almacenar en

memoria el resultado de la instrucci ´on.

(6)

¿Qu ´e es una computadora?

Buses

source: Prof. Marc H. Scholl - Universit ¨at Konstanz

Habitualmente, hay tres tipos de buses en un sistema:

1 Bus de datos: viajan los datos.

2 Bus de direcciones: se utiliza para indicar el

destino o fuente de los datos a mover.

3 Bus de control: se usa para sincronizar las

operaciones y para indicar qu ´e operaci ´on se realiza.

Los buses proveen la infraestructura de comunicaci ´on y coordinaci ´on que es compartida por todos los componentes del sistema.

No hay comunicaci ´on punto a punto (hay excepciones muy puntuales por dise ˜no, como las l´ıneas de interrupci ´on).

La velocidad de transmisi ´on del bus impone un l´ımite en la performance del sistema. Esto se conoce como bus bottleneck (cuello de botella del bus).

(7)

¿Qu ´e es una computadora?

Fetch en detalle

source: Prof. Scholl-Universit ¨at Konstanz

10111000 00000000 00000001 corresponde con MOV AX, 0x100 para un Pentium 4 (i = 256 en C). IP: instruction pointer.

IR: instruction register.

MAR: memory address register.

En la memoria est ´a almacenado el programa.

1 IP → MAR: el contenido del registro IP se coloca en el registro MAR.

2 IP++: se incrementa IP para que apunte a la siguiente instrucci ´on del programa.

3 (MAR) → IR: el contenido de lo referenciado por MAR se copia, a trav ´es del bus

de datos, al IR.

(8)

¿Qu ´e es una computadora?

Fetch en esquema

IP → MAR: (MAR) → IR:

(9)

Memoria

¿Qu ´e pasa con la memoria?

¿Cu ´antos de estos pasos tienen que ver con acceder a la memoria?

1 XFetch: conseguir la siguiente instrucci ´on a ejecutar. 2 Decode: a partir de un chorizo de bits (0110 1110 1100

1100) adivinar de qu ´e instrucci ´on se trata.

3 XMemory fetch: de ser necesario, se deber ´an conseguir

los datos requeridos por la instrucci ´on.

4 Execute: se ejecuta la instrucci ´on.

5 XWrite back: si fuera necesario, se deber ´a almacenar en

memoria el resultado de la instrucci ´on.

source: Computer Arquitecture: A quantitative Approach. By John L. Hennesy, David Patterson, Andrea C. Arpaci-Dusseau

(10)

Memoria

Memory Wall

source: http://www.ict- ramplas.eu

Diferencia de velocidad

(11)

Memoria

¿Qu ´e es la latencia?

Wikipedia: Latency is a time interval between the stimulation and response, or, from a more general point of view, as a time delay between the cause and the

(12)

Memoria

¿Qu ´e significa en t ´erminos reales?

(13)

Memoria

Tratando de evitar el problema

(14)

Memoria

Jerarqu´ıa de memoria

source: blog.teachbook.com.au

Si lo m ´as r ´apido son los registros... ¿Por qu ´e no estodo registros?

La platita...

(15)

Memoria

Evoluci ´on de los procesadores

(16)

Memoria Instrucciones

¿C ´omo son las instrucciones de un procesador?

(17)

Memoria Instrucciones

Programa de ejemplo

A continuaci ´on, vemos un programa escrito en un lenguaje de fantas´ıa que est ´a muy cerca de las instrucciones propias del procesador:

1 l d r0 , 0xFFAB 2 l d r1 , [ b ] 3 add r2 , r0 , r 1 ; r 2 = r 0 + r 1 4 l d r3 , [ c ] 5 mul r4 , r2 , r 3 ; r 4 = r 2 * r3 6 s t o [ b ] , r 4

ld r0, 0xFFAB: ir a la posici ´on de memoria 0xFFAB y guardar su contenido en el

registro 0, el valor que est ´a almacenado.

add r2, r0, r1: realiza la suma de lo que est ´a guardado en los registros 0 y 1, y

lo guarda en el registro 2.

mul r4, r2, r3: multiplicaci ´on, guarda el resultado en el registro 4.

(18)

Programando

¿Qu ´e es programar?

Un algoritmo es una lista finita de intrucciones, consiste de: Instrucciones que indican qu ´e hacer.

Valores con los cuales se trabaja (par ´ametros).

Variables a las cuales se les asigna un valor y a las cuales se le realizan operaciones (i.e. sumar, restar).

Los programas se escriben en un lenguaje que puede convertirse en algo que una computadora pueda entender (i.e. ejecutar).

(19)

Programando

Lenguajes de alto nivel

Se refiere a las construcciones que son relativamente f ´aciles de entender por un humano (y no a que juegan en Primera A o en la NBA)

Ejemplos de lenguajes (¡no se pueden imaginar la cantidad de lenguajes que existen o existieron!): Perl, Matlab, Java, C, C++, C#, Visual Basic, Python, Scheme, Lisp, Pascal, Fortran y ¡la lista sigue!

Hay algunos que han sido creados espec´ıficamente para cierto nicho de

aplicaci ´on, haciendo m ´as f ´acil la vida para aquellos que lo necesitan (por ejemplo

Fortran para simulaci ´on).

Este tipo de lenguajes es independiente de la m ´aquina o arquitectura en la cual funciona (en realidad, en algunos casos se usan trucos espec´ıficos para obtener mejoras en el desempe ˜no).

Desde el punto de vista te ´orico, lo que se puede computar con cualquier lenguaje de estos es “lo mismo”.

(20)

Programando

¿C ´omo se logra ejecutar un programa?

Los lenguajes de alto nivel necesitan ser traducidos a lo que una computadora entiende: lenguaje de m ´aquina. Para esto, hay dos opciones:

1 Compilador: es un programa que toma c ´odigo fuente de alto nivel y lo convierte

en lenguaje de m ´aquina.

2 Int ´erprete: es un programa que convierte cada instrucci ´on en lenguaje de alto

nivel a una serie de instrucciones de m ´aquina.

Esto hace falta porque una computadora (i.e. el procesador) solo puede procesar lenguaje de m ´aquina:

El lenguaje de m ´aquina consiste en un conjunto de instrucciones que un

procesador puede ejecutardirectamente.

Cada instrucci ´on se codifica como un patr ´on de 1’s y 0’s que el procesador (en realidad, el ingeniero que lo dise ˜na) vincula con la operaci ´on a realizar (por ejemplo: add, substract, read, store, etc.)

(21)

Programando

Algunos t ´erminos y su explicaci ´on

Varios de estos t ´erminos surgieron en la ´epoca de las primeras computadoras y a ´un se usan

Bug: error en un programa

Debug: sacar un error de un programa

cableada (tambi ´en hardcodeada): cuando una entrada o par ´ametro de un programa est ´a directamente escrito como parte del mismo (por vagancia o falta de previsi ´on). Cada vez que se quiere correr el programa con otra entrada, hay que tocar el c ´odigo (¡muy feo!).

Varios de estos aportes fueron gracias a Grace Hopper, una de las primeras programadoras.

Tambi ´en se la conoce como “Amazing Grace”: El destructor americano USS Hopper y la supercomputadora Cray XE6 “Hopper” fueron nombradas por ella.

(22)

Terminando

Conclusiones

En este curso vamos a usar Python.

Es una lenguajeinterpretado (Hay un programa traduciendo cada comando que

se introduce a un mont ´on de operaciones en lenguaje de m ´aquina). Para aprender Python (o cualquier otro lenguaje de programaci ´on), hay que perder tiempo. Hay mucha informaci ´on en Internet, pero hasta que uno no se

ensucia los dedos, la cosa no avanza.No hay recetas m ´agicas

Aprovechen a los docentes para hacernos consultas y todo aquello que nunca se atrevieron a preguntar, es el momento de hacerlo, ¡no tengan verg ¨uenza!

Referencias

Documento similar

23 Aqui, entre aspas, para não deixar de registrar nossa repulsa ao “essencialismo”.. Ao contrário, para os que se inserem no universo dialético, a liberdade começa a

"No porque las dos, que vinieron de Valencia, no merecieran ese favor, pues eran entrambas de tan grande espíritu […] La razón porque no vió Coronas para ellas, sería

Finally, Ore shows that when all these polynomials (f,)J Y) have no multiple factors, then all these factors of f,(X) are irreducible, and the shape of the polygon

Ciaurriz quien, durante su primer arlo de estancia en Loyola 40 , catalogó sus fondos siguiendo la división previa a la que nos hemos referido; y si esta labor fue de

• El monumento debió ser visible desde la ciudad dada la ubicación general en El Espinillo, un Mo- numento Conmemorativo y planteado en paralelo a otro en la barranca, debió

Tras establecer un programa de trabajo (en el que se fijaban pre- visiones para las reuniones que se pretendían celebrar los posteriores 10 de julio —actual papel de los

b) El Tribunal Constitucional se encuadra dentro de una organiza- ción jurídico constitucional que asume la supremacía de los dere- chos fundamentales y que reconoce la separación

Finally, the main objective of the work is to develop a complete study of the manifold multiplexer, its circuit model optimization and a complete design (from the ideal circuit model