El Computador Moderno

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.
  • Típicamente 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 "humanos".

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 esto, ahora Ada Lovelace es considerada la primera programadora.

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.

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 del siglo XX

  • Todos los computadores contemporáneos usan algún tipo de 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

Como funciona el Computador?

La idea Fundamental

  • Los computadores modernos son dispositivos que usan un número muy muy grande de pequeños interruptores electricos para hacer operaciones lógicas.
  • 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.
    • No han cambiado su diseño fundamental desde los primeros computadores programables, que fueron desarrollados en los 40 y 50.
  • Los procesadores en un computador (los chips) contienen laminas de silicio, en el que los circuitos están grabados (se llaman circuítos integrados).

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 el hecho de que los circuitos funcionan con 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.

Los Números binarios

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

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 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.

¿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 tengo transporte, 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).
  • 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 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.

La arquitectura de un computador

  • Pero... como construimos un computador útil que podemos usar?
  • 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

La 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)

La Memoria

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

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.

La organización de 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 organización de 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.

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.

El CPU

El 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.

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.

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.
  • Los CPUs modernos pueden ejecutar millones de instrucciones por segundo.

Ejecución 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.