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