Evolución de la computación

Computadores

Antiguamente, un computador era una persona que realizaba cómputos (cálculos).

"Computadores"

Máquinas de computación

  • Hoy en día "computador" se refiere a una máquina (una herramienta) que usamos para resolver problemas.
  • Tipicamente estos problemas son problemas lógicos, y muy estructurados (tienen pasos bien definidos).
  • Con el desarrollo de "inteligencia artificial" los computadores pueden resolver problemas más "reales".

Computación en tiempos antiguos

  • Distintas máquinas de cálculo han sido desarrolladas desde tiempos muy antiguos para ayudar a los humanos a calcular.
  • El ábaco fue utilizado por los Babilonios hace 4000 años.

La calculadora mecánica

Inventada por el matemático francés Blaise Pascal (1623-1662), cuando tenía 20 años.

Uno de los primeros computadores

  • El inventor inglés Charles Babbage (1791-1871) diseñó una máquina programable de propósito general.
  • Sería llamada the analytical engine (el motor analítico).
  • Pero nunca fue construida durante su vida...

Una de las primeras programadoras

  • La matemática inglesa Ada Lovelace (1815-1852) concibió una secuencia de instrucciones que la máquina de Babbage podía seguir para completar un cálculo.
  • Es decir, ella redactó un programa computacional.
  • Por eso, ahora Ada Lovelace es considerada la primera programadora.

De máquinas mecánicas a máquinas eléctricas...

  • Herman Hollerith (1860-1929), estadounidense, construyó una de las primeras máquinas electromecánicas para contar.
  • Fue usada en el censo de 1890.
  • Comercializó su invención y la empresa que fundó eventualmente se convirtió en una parte de IBM.

Computación con circuitos eléctricos

  • Claude Shannon (1916-2001): matemático, ingeniero eléctrico y criptógrafo estadounidense.
  • En su tesis de Magister demostró que una secuencia de interruptores electricos pueden simular cualquier operación lógica o númerica.
  • Su trabajo es la base de la computación digital y el diseño de circuitos digitales!

El primer computador digital

  • La máquina Colossus, construida en el Reino Unido, fue el primer computador digital.
  • Fue desarrollada en secreto durante la Segunda Guerra Mundial.
  • Diseñada por el ingeniero Tommy Flowers, con ayuda del matemático y fundador de la informática, Alan Turing.
  • Muchas ideas teóricas sobre la computación fueron descubiertas por Turing.

Máquinas de Turing

  • La "Máquina de Turing" consiste en un autómata que sigue un conjunto finito de instrucciones.
  • Por ejemplo: "Si en el estado #5 el símbolo leído es un 0, entonces escribe un 1".

Máquinas de Turing

  • La máquina de Turing puede simular la lógica de cualquier algoritmo.
  • Este es un concepto abstracto, con implicaciones profundas en lógica, matemática y computación.

El test de Turing y las IA

  • Una extensión importante de la máquina de Turing es el Test de Turing.
  • Consiste en dos participantes interactuando mediante una conversación. Uno de ellos, humano, intenta determinar si su interlocutor es o no humano.

El test de Turing y los CAPTCHA

  • Los CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) son muy utilizados desde el 2003 en adelante.
  • Se usan para intentar verificar si la interacción via internet está siendo realizada realmente por un humano y no una máquina.
  • Con el tiempo, han ido aumentando su complejidad: incluyendo sonidos, imágenes, puzzles,...

ENIAC

  • Revelado al publico en febrero 14 1946, construido en la Universidad de Pennsylvania en los Estados Unidos.
  • Colossus era un secreto durante muchos años. Por eso, ENIAC es frecuentemente nombrado como el primer computador programable digital .
  • Usado en el cálculo de tablas de fuego de artillería y usado en pruebas (teóricas) de armas termonucleares (i.e. bombas de hidrogeno).

Informática

  • El desarrollo de los computadores programables, dio a luz a la informática.
  • Pero, acuerdense que la "programación" de estos computadores implicaba cambiar fisicamente las posiciones de cables y interruptores!

Avances tecnológicos

  • Todos los computadores usan interruptores electrónicos.
  • Colossus y ENIAC usaban tubos de vacio.
  • Estos fueron reemplazados por transistores en los 50 y los principios de los 60.
  • Circuitos integrados fueron desarrollados en los 70.
  • Finalmente, a mediados de los 70, el microprocesador fue desarrollado (que tiene billones de transistores).

Tubos de vacío

Transistores

Circuitos integrados

Microprocesadores

Hoy en día

La gran diferencia

No es programable
Programable

El diseño básico de los computadores

La idea básica

  • Los computadores modernos son dispositivos que usan un número muy muy grande de pequeños interruptores electricos para hacer operaciones lógicas.
  • No han cambiado su diseño fundamental desde los primeros computadores programables, que fueron desarrollados en los 40 y 50.

¿Qué son las operaciones lógicas?

Nos permiten combinar distintas afirmaciones (u operaciones), y las podemos usar para tomar una desición.

  • Si tengo tiempo y ganas, entonces vendré a clases.
  • Si tengo dinero o me invitan, entonces saldré de fiesta.
  • Si no llueve, entonces saldré en bicicleta.

¿Qué son las operaciones lógicas?

Hay 3 operaciones lógicas básicas: AND, OR y NOT. Son operadores que actuan en valores Booleanos (verdadero o falso, TRUE o FALSE).

  • ($x$ AND $y$) = TRUE (verdad) solamente cuando ambos son TRUE (verdad).
  • ($x$ OR $y$) = TRUE (verdad) solamente cuando $x$ = TRUE, $y$ = TRUE, o ambos.
  • (NOT $x$) = TRUE (verdad) cuando $x$ = FALSE (falso).

Las operaciones lógicas

  • Hay otras operaciones lógicas, pero estas 3 son las más básicas.
  • Estas 3 operaciones pueden combinarse para construir cualquier operación matemática.

La representación de las operaciones lógicas en circuítos eléctricos

Por ejemplo, la operación de AND:

La representación de las operaciones lógicas en circuítos eléctricos

Por ejemplo, la operación de OR:

La representación de las operaciones lógicas en circuítos eléctricos

  • Los procesadores en un computador (los chips) contienen laminas de silicio, en el que los circuitos están grabados (se llaman circuítos integrados).
  • El hecho de que los computadores no ocupan un cuarto entero hoy en día es por los avances tecnológicos en fabricación de los chips, no por un cambio fundamental del diseño de los circuitos.

Arquitectura de un computador

  • Sabemos que podemos representar operaciones lógicas por circuítos electrónicos (circuítos lógicos).
  • Además, podemos combinar estas operaciones lógicas para representar cualquier cálculo lógico (es decir, cualquier algoritmo bien diseñado).
  • Entonces, un computador con millones y millones de circuítos lógicos en un chip de silicio puede (en principio) calcular cualquier cosa.

Arquitectura de un computador

  • Pero... como construimos un computador útil que podemos usar?
  • Vimos el esquema abstracto de Turing de un computador programable. Pero tal esquema es poco práctico para ayudar en la contrucción de un computador real.
  • Necesitamos un esquema (o una arquitectura) que corresponde a una máquina útil: con entradas, salidas, almacenamiento, etc.
  • La arquitectura que todos los computadores modernos usan se llama la arquitectura de von Neumann.

Computador moderno

Dispositivos de interacción (periféricos)

Placa madre

Arquitectura de von Neumann

John von Neumann fue un matemático húngaro que contribuyó a muchas áreas: en la matemática, la informática, la física y la estadística.

La arquitectura de von Neumann

  • Unidad central de procesamiento (Central Processing Unit - CPU)
  • Memoria principal (Random Access Memory - RAM)
  • Almacenamiento (disco de estado sólido - SSD o disco duro - HDD)
  • Circuitos de comunicación (bus).
  • Dispositivos de entrada/salida (Input/Output - I/O)

CPU

  • Unidad de control: dirige el sistema para ejecutar instrucciones de programas almacenados.
  • Unidad de aritmética/lógica (ALU): ejecuta instrucciones aritméticas y lógicas.
  • Registros: áreas de almacenamiento temporal, controlados por la unidad de control.

Memoria

RAM, la memoria principal, almacenamiento primario.

  • Almacena datos utilizados por un programa de forma temporal.
  • Los datos y las instrucciones se trasladadan desde un dispositivo de entrada o un SSD o disco duro a la memoria a través de la unidad de control.

Almacenamiento secundario (Memoria Permanente)

Disco de estado sólido, disco duro, DVD, cinta magnetica...

  • Almacena datos de forma permanente.
  • Estos se guardan incluso cuando se apaga el computador.

Operación básica del computador

  1. Tipicamente tenemos un programa guardado en el SSD o HDD (memoria secundaria).
  2. Cuando ejecutamos el programa, cargamos datos a la memoria primaria (RAM).
  3. El CPU luego lee los datos en RAM como instrucciones para ejecutar el programa.
  4. Las salidas de estas operaciones están guardados en RAM otra vez, o a veces guardamos los resultados permanentamente en el disco duro.

Como funciona el computador?

Los Números binarios

Los computadores no usan números decimales, como nosotros, sino números binarios.

Sistemas de numeración

  • El sistema decimal existía en la India hace al menos 1500 años.
  • Es un sistema de numeración posicional de base-10.
  • Es decir, las cantidades se representan utilizando las potencias del número 10.
  • La civilización Maya usaba un sistema de numeración de base-20!

Sistemas de numeración

  • El sistema binario, utilizado en computación, tiene base-2.
  • En binario, las cantidades se representan usando las potencias del número dos.

Números binarios

$\ldots$ $2^4$ $2^3$ $2^2$ $2^1$ $2^0$
$\ldots$ $16$ $8$ $4$ $2$ $1$
$\ldots$ $0$ $1$ $0$ $1$ $0$ = $10$

Números binarios en la computación

  • En el computador, toda la información, procesamiento, etc. ocurre utilizando números binarios.
  • Esto es compatible con los interruptores eléctricos (que son los componentes básicos de los chips).
    • Un interruptor tiene dos estados: encendido (on) o apagado (off).
    • $1$ corresponde a encendido, $0$ corresponde a apagado.
  • Podemos combinar los estados de varios interruptores para formar números binarios más grandes.

Números binarios e interruptores

Números binarios en la computación

  • Un solo $1$ o $0$, en jerga informática, se llama un bit.
    • Es la unidad de información más básica posible.
  • Un conjunto de $8$ bits se conoce como un byte.
    • Es una unidad más 'práctica' de información.
  • Se suele hablar más del byte y múltiplos de este:
    • Por ejemplo: un conjunto de $1024$ bytes se conoce como un kilobyte.

La información en el computador está codificada en términos de bits/bytes.

La memoria

  • Como vimos antes, un computador tiene dos tipos principales de memoria:
    • Memoria primaria: RAM
    • Memoria secundaria: disco de estado sólido, o disco duro

La memoria

  • Se puede imaginar la memoria de un computador como muchas cajitas.
  • En cada cajita se puede almacenar un bit de información (es decir, un $0$ o $1$).

La memoria

  • Las ubicaciones en memoria donde los datos o instrucciones se almacenan tienen direcciones, como las casas.
  • Estas direcciones también son números binarios.

Ejecución de un programa

  • Para ejecutarse, un programa debe ser procesado (leído) desde la memoria, por el CPU.
  • Un programa entero puede consistir de miles y miles de instrucciones.
  • Como discutimos, los CPUs modernos pueden ejecutar millones de instrucciones por segundo.

Ejecución de un programa

El procesador central: CPU

  • El núcleo de un computador es su CPU: central processing unit.
  • El CPU recibe números binarios (pulsos eléctricos) como entradas y entrega otros números binarios como salidas, que se puede usar como nuevas entradas o guardados en la memoria.
  • Se dice que el CPU ejecuta instrucciones (en forma de números binarios) que vienen de un programa.

Ciclo de reloj (clock cycle)

  • El reloj interno de un CPU sincroniza las operaciones, y marca el número de ciclos por segundo.
  • En cada ciclo, el CPU lee y procesa una cierta cantidad de instrucciones.
  • Si un CPU tiene una frecuencia del reloj de $2,8$ Ghz, significa que éste ejecuta $2,8$ billones$^*$ de ciclos por segundo!

$^*$: Notar que 1 billón "anglo" equivale a mil millones, i.e. $10^{9}$.

¿El futuro?

Miniaturización y potencia

La ley de Moore

La Ley de Moore dice que el número de transistores en un microprocesador se duplica aproximadamente cada dos años.

La ley de Moore

  • En la actualidad, el número no se duplica tan rapidamente.
  • La evolución reciente de la tecnología de microprocesador indica que la duplicación de la cantidad de transistores ocurre cada 2.5 años.
  • Eventualmente será imposible poner más circuitos en el silicio, y la tecnología de microprocesador no avanzará más!

Limitaciones fundamentales: energía y comunicación

  • Con una frecuencia de reloj más alta, hay mucho más consumo de energía.
  • Los CPUs necesitan enfriamiento!

Limitaciones fundamentales: energía y comunicación

  • Los datos deben ser trasladados de un lugar a otro (i.e. del procesador a la memoria).
  • El tiempo para esta comunicación tiene limitaciones: aún si lo datos pudiesen viajar a la velocidad de la luz, con un procesador funcionando a 5GHz los datos tardarían más en llegar que el tiempo que toma un ciclo del reloj.

Computación cuántica

  • Los computadores cuánticos usan qubits de información, en vez de los bits de los computadores normales. Un qubit no tiene un valor definido hasta que sea medido.
  • ¿Solamente un uso limitado a aplicaciones especializadas? Requieren enfriamiento a temperaturas cerca de cero absoluto para evitar ruido térmico.

Supercomputadores

  • La desaceleración de la Ley de Moore se puede combatir con el uso de muchos procesadores trabajando simultáneamente: paralelismo.
    • Hablaremos más sobre la computación en paralelo próximamente.
  • Hoy en día, incluso las laptops y desktops tienen procesadores multinúcleo (multicore).

Resumen

  • El diseño básico de los computadores modernos no ha cambiado desde los años 40.
  • Gracias a los avances tecnológicos, podemos poner millones y millones de circuítos lógicos en los chips y así tener procesadores muy rápidos.
  • Sin embargo, la Ley de Moore se ha visto estancada producto de límites físicos (temperatura, energía, escala).
  • La computación en paralelo (multiples CPU, GPU) es la actual alternativa para seguir incrementando el poder de cálculo de máquinas modernas.