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
Tipicamente tenemos un programa
guardado en el SSD o HDD (memoria secundaria).
Cuando ejecutamos el programa, cargamos datos a la memoria primaria (RAM).
El CPU luego lee los datos en RAM como instrucciones para ejecutar el programa.
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.