00:00:00
en el último episodio estudiamos la
00:00:01
construcción de una unidad aritmética
00:00:03
lógica simple luego de esto el siguiente
00:00:05
paso es almacenar los valores para
00:00:07
darles algún uso para esto necesitamos
00:00:09
la memoria ser una vez estuviste en
00:00:11
mitad de una larga misión de un
00:00:12
videojuego o elaborando un documento
00:00:14
extenso y repentinamente se corta el
00:00:16
suministro de energía eléctrica sabes lo
00:00:19
que es el dolor
00:00:20
esto pasa porque las computadoras
00:00:22
utilizan una memoria de acceso aleatorio
00:00:24
o ram que guardan cosas como el estado
00:00:26
de los juegos siempre que el equipo
00:00:28
permanezca encendido en otro tipo de
00:00:30
memorias es la memoria persistente que
00:00:32
mantiene la información guardada luego
00:00:34
de que el equipo se queda sin energía
00:00:35
pero de estas memorias vamos a hablar en
00:00:37
episodios siguientes empecemos entonces
00:00:39
por lo más básico un circuito que
00:00:41
almacena un solo bit de información
00:00:43
posteriormente lo ampliaremos y
00:00:45
construiremos un módulo de memoria luego
00:00:47
este módulo de memoria lo combinaremos
00:00:49
con la unidad aritmética lógica para
00:00:51
finalmente construir una unidad central
00:00:54
de proceso o cpu
00:00:55
[Música]
00:00:59
[Aplausos]
00:01:02
todos los circuitos lógicos que vimos
00:01:04
hasta ahora fluyen en una sola dirección
00:01:06
siempre hacia adelante como por ejemplo
00:01:08
el summa door que vimos anteriormente
00:01:09
pero también se pueden construir
00:01:11
circuitos que vuelvan sobre sí mismos es
00:01:13
decir que la salida pueda volver a
00:01:14
alimentar una o más entradas tomemos una
00:01:17
compuerta ahora clásica y conectemos la
00:01:19
salida de vuelta a una de las entradas y
00:01:21
dejamos que pasa empecemos colocando
00:01:23
ambas entradas en cero teniendo en
00:01:25
cuenta la lógica de la compuerta ahora
00:01:26
con ambas entradas en cero la salida
00:01:29
siempre será cero ahora si cambiamos la
00:01:31
entrada a 1 efectuamos la operación 1
00:01:34
por 0
00:01:35
el resultado es que la salida será un
00:01:37
una fracción de segundo más tarde la
00:01:39
salida vuelve a la entrada b por lo que
00:01:41
la compuerta org de ahora que sus dos
00:01:43
entradas tienen valor 1 la operación 1
00:01:46
por 1 sigue siendo 1 por lo que no hay
00:01:48
cambios en la salida si cambiamos el
00:01:51
valor de la entrada a 0 en la salida
00:01:53
tenemos todavía un valor 1 entonces
00:01:55
ahora tenemos un circuito que es capaz
00:01:57
de mantener el valor 1 pero tenemos un
00:01:59
pequeño problema que este cambio es
00:02:01
permanente sin importar lo que hagamos
00:02:02
no hay forma de que este circuito vuelva
00:02:05
a tener una salida 0 ahora veamos este
00:02:07
mismo circuito pero con una compuerta
00:02:09
comenzamos con las entradas a ive en 1
00:02:11
la operación andy entre 11 resulta
00:02:14
siempre 1 pero si cambiamos la entrada a
00:02:16
0 debido a la lógica de la compuerta la
00:02:18
salida ahora será 0 entonces este
00:02:21
circuito almacena un 0 exactamente lo
00:02:23
opuesto al circuito anterior igual que
00:02:25
antes no importa qué valor ingresemos
00:02:27
después a la entrada a la salida siempre
00:02:29
será 0 ahora tenemos dos circuitos uno
00:02:32
que almacena unos y otro que almacena
00:02:34
ceros para construir una memoria útil
00:02:36
combinamos los dos circuitos con lo que
00:02:38
obtenemos otro circuito llamado vía
00:02:40
estable también conocido como flip flops
00:02:42
olatz tiene dos entradas una denominada
00:02:44
set que establece la salida en 1 y una
00:02:47
entrada reset que establece la salida en
00:02:49
0 cuando ambas entradas set y reset
00:02:51
están en cero el circuito emite el
00:02:53
último valor ingresado es decir que
00:02:55
almacena un bit de información
00:02:57
la acción de cargar datos en la memoria
00:02:59
se llama escritura y la acción de sacar
00:03:01
los datos se llama lectura bien ahora ya
00:03:03
tenemos una forma de almacenar un bit de
00:03:05
información sin embargo tener dos cables
00:03:07
para un solo bit de información 7 y
00:03:10
reset puede resultar confuso entonces
00:03:12
para hacerlo más fácil queremos utilizar
00:03:13
un solo cable para ingresar los datos
00:03:15
ya sea 1 o 0 además vamos a necesitar un
00:03:18
cable que nos permita almacenar los
00:03:20
datos en la memoria lo que se denomina
00:03:22
línea de habilitación de escritura o
00:03:24
write al agregar algunas compuertas
00:03:26
lógicas adicionales podemos construir un
00:03:28
circuito denominado gate yacht o bi
00:03:30
estable con cierre se llama así porque
00:03:32
tienen una puerta que se puede abrir o
00:03:34
cerrar el diseño del circuito se está
00:03:35
siendo complicado así que como ya
00:03:37
hicimos antes vamos a colocar todo el
00:03:39
gate latch en una caja
00:03:40
ahora vamos a probar el nuevo componente
00:03:42
comencemos con todos los valores en cero
00:03:44
sin el samu 01 en el cable de datos no
00:03:47
ocurre nada
00:03:48
la salida permanece en 0 esto ocurre
00:03:50
porque el cable de habilitación de
00:03:51
escritura está en 0 lo que evita
00:03:53
cualquier cambio en la memoria ahora
00:03:54
activemos nuestra línea de habilitación
00:03:56
de escritura podemos ingresar un 1 en la
00:03:58
línea de datos para guardar el valor en
00:04:00
el lazio se puede observar como el valor
00:04:02
de salida ahora es 1 podemos desactivar
00:04:04
las líneas de habilitación de escritura
00:04:06
y la salida sigue siendo 1 una vez más
00:04:08
podemos cambiar el valor de la línea de
00:04:10
datos y la salida permanece igual
00:04:11
entonces podemos ver que los valores se
00:04:13
guardan en la memoria
00:04:14
ahora tenemos nuevamente nuestra línea
00:04:16
de habilitación de escritura y en
00:04:17
nuestra línea de datos ingresamos el
00:04:19
valor 0 desactivamos la línea de
00:04:21
habilitación de escritura
00:04:22
y la salida es 0 entonces podemos ver
00:04:24
que funciona como se esperaba como todos
00:04:26
sabemos una memoria que guarda un solo
00:04:28
no es demasiado útil pero no estamos
00:04:30
limitados a usar un solo y estable si
00:04:33
colocamos ocho enlaces uno al lado al
00:04:34
otro podemos almacenar 8 bits un grupo
00:04:37
del hachís que funciona de esta forma
00:04:39
guardando un solo número es denominado
00:04:40
un registro y el número de bits del
00:04:42
registro es lo que se conoce como ancho
00:04:44
del registro las primeras computadoras
00:04:46
tenían registros de 8 bits de ancho
00:04:48
luego aparecieron las de 16 32 y hoy en
00:04:51
día es normal encontrar computadoras con
00:04:53
registros de 64 bits de ancho para
00:04:56
escribir en nuestro registro lo primero
00:04:57
que debemos hacer es habilitar todos los
00:04:59
leches podemos hacer esto con un solo
00:05:01
cable conectando todas las líneas de
00:05:03
habilitación de escritura activamos las
00:05:05
líneas ingresando un 1 seguidamente
00:05:07
enviamos nuestro número utilizando ocho
00:05:10
cables de datos
00:05:11
luego establecemos de nuevo la
00:05:12
habilitación de escritura en cero ahora
00:05:14
el valor de 8 bits queda guardado en la
00:05:16
memoria poner y estables uno al lado del
00:05:18
otro funciona bien para una pequeña
00:05:20
cantidad de bits un registro de 64 bits
00:05:23
necesitaría 64 cables que se conectan en
00:05:26
las líneas de entrada y 64 cables para
00:05:28
la salida
00:05:29
fuerte usamos un solo cable para
00:05:31
habilitarlos la chaise pero no siguen
00:05:32
siendo 129 cables y para 256 bits
00:05:36
necesitaríamos 513 cables entonces la
00:05:39
solución es utilizar una matriz en una
00:05:41
matriz no organizamos los baches en una
00:05:43
fila sino los colocamos en una
00:05:45
cuadrícula para 256 bits necesitamos una
00:05:48
cuadrícula de 16 filas x 16 columnas con
00:05:51
sus respectivos cables
00:05:53
veamos de cerca cómo funciona solo
00:05:55
queremos habilitar los latch es la
00:05:56
intersección de los cables activos todos
00:05:58
los demás deben permanecer desactivados
00:06:00
para este trabajo podemos usar la vieja
00:06:02
confiable la compuerta ante la compuerta
00:06:04
antes tendrá de salida 1 solo si ambos
00:06:07
cables de la fila de la columna tienen
00:06:09
el valor 1 así podemos utilizar esta
00:06:11
señal para seleccionar de forma
00:06:12
exclusiva un solo latch en esta
00:06:14
configuración de filas y columnas las
00:06:16
puertas o líneas de habilitación de
00:06:18
escritura de todos los la chaise se
00:06:20
conectan a un solo cable para que un
00:06:22
like se habilite para la escritura deben
00:06:24
activarse los cables de la fila de la
00:06:26
columna y el cable de habilitación de
00:06:28
titular la activación de los tres cables
00:06:30
debería ocurrir para un sol online en
00:06:32
cualquier momento dado esto significa
00:06:34
que podemos utilizar un solo
00:06:36
compartidos para los datos debido a que
00:06:38
un solo latch está habilitado para la
00:06:40
escritura uno solo guardará los datos el
00:06:42
resto de los la dge es simplemente y
00:06:44
mejorarán los datos porque no están
00:06:46
habilitados para escritura podemos
00:06:48
utilizar el mismo truco con un cable de
00:06:50
habilitación de lectura para poder leer
00:06:52
los datos de un lazio en específico de
00:06:54
esta forma para 256 bits de datos
00:06:56
solamente necesitamos 35 cables un cable
00:07:00
de datos un cable de habilitación de
00:07:02
escritura un cable de habilitación de
00:07:04
lectura 16 cables para las filas y 16
00:07:07
cables para las columnas comparado con
00:07:09
los 513 cables que calculamos al
00:07:11
principio es un ahorro muy importante se
00:07:13
asemeja mucho a cómo se organiza una
00:07:15
ciudad por ejemplo si quisiéramos
00:07:16
conocer a alguien que vive entre la
00:07:18
avenida 12 y la calle 8 esa sería la
00:07:20
dirección es decir lo que define a una
00:07:23
intersección dado como hay un máximo de
00:07:25
16 filas y 16 columnas podemos almacenar
00:07:28
cada dirección en un número binario de 4
00:07:31
bits usando los mismos números que el
00:07:33
ejemplo en la ciudad supongamos que
00:07:35
queremos acceder al valor almacenado en
00:07:37
el lazio que se encuentra en la
00:07:39
dirección fila 12 columna 8 si
00:07:41
convertimos a binario 2
00:07:43
sería 1 100 y 81 000 entonces la
00:07:48
dirección de la dge particular se puede
00:07:50
escribir como 1 100 1000 llegados a este
00:07:55
punto necesitamos una forma de
00:07:56
especificar de manera única cada
00:07:58
intersección para esta tarea la de
00:08:00
convertir una dirección en la selección
00:08:03
de una fila o columna concreta
00:08:05
utilizamos un componente especial
00:08:06
llamada multiplexor los multiplexores
00:08:09
vienen en distintos tamaños sin embargo
00:08:11
nosotros necesitamos un multiplexor de
00:08:13
116 función a la siguiente manera
00:08:15
ingresando un número de 4 bits conecta
00:08:18
el número de entrada con una salida
00:08:19
específica si introducimos 0000
00:08:22
seleccionará la primera columna si
00:08:24
introducimos 0001 seleccionará la
00:08:26
segunda si introducimos 0010 la tercera
00:08:30
001 1 la cuarta y así sucesivamente el
00:08:33
asunto se está volviendo de nuevo
00:08:35
complicado así que vamos a hacer que
00:08:36
nuestra memoria de 256 bits se convierta
00:08:39
en su propio componente subimos un nivel
00:08:41
más atracción el componente usa 8 bits
00:08:44
para la dirección cuatro para la columna
00:08:46
y 4 para la fila 2 cables de
00:08:48
habilitación 1
00:08:49
y una escritura y por último necesitamos
00:08:51
un cable de datos que se puede utilizar
00:08:53
para leer o para escribir incluso 256
00:08:57
bits se quedan cortos para la mayoría de
00:08:59
las cosas por lo que necesitamos ampliar
00:09:01
aún más nuestra memoria vamos a poner 8
00:09:03
memorias en una fila de la misma forma
00:09:05
que hicimos con los registros con esto
00:09:07
se podrán almacenar 8 bits también
00:09:09
conocido como bytes para lograr esto
00:09:11
conectamos todos los cables de dirección
00:09:13
de forma en que las ocho memorias
00:09:15
reciban la misma dirección cada memoria
00:09:17
se encargará de guardar un bit del
00:09:19
número ingresado así el componente al
00:09:21
final puede almacenar 256 bytes en 256
00:09:25
direcciones diferentes otra vez para
00:09:27
mantener las cosas simples vamos a dejar
00:09:29
atrás la complejidad del diseño y en
00:09:31
lugar de pensar en el componente como
00:09:32
una serie de módulos de memoria y
00:09:34
circuitos conectados lo pensaremos en
00:09:36
forma de un banco de memoria
00:09:37
direccionable entonces tenemos 256
00:09:40
direcciones y en cada dirección podemos
00:09:42
leer o escribir un valor de 8 bits
00:09:45
vamos a utilizar próximamente este
00:09:46
componente para construir una cpu la
00:09:49
forma en que las computadoras modernas
00:09:50
llegan a megabytes gigabytes es haciendo
00:09:52
lo mismo que nosotros hicimos seguir
00:09:54
dando paquetes de memoria en matrices
00:09:56
más y más grandes a medida que crece la
00:09:58
cantidad de ubicaciones de memoria no
00:10:00
estas direcciones también deben crecer 8
00:10:02
bits contienen suficientes números para
00:10:04
direccionar 256 mbytes de memoria pero
00:10:07
nada más para mejorar un gigabyte o 1000
00:10:09
millones de bytes de memoria necesitamos
00:10:11
direcciones de 32 bits un atributo
00:10:14
importante de este tipo de memoria es
00:10:15
que podemos acceder a cualquier
00:10:17
ubicación en cualquier momento y en un
00:10:19
orden aleatorio y es por esta razón que
00:10:20
es llamada memoria de acceso aleatorio o
00:10:22
ram por sus siglas en inglés la memoria
00:10:25
ram es la memoria de trabajo sería más o
00:10:27
menos como la memoria a corto plazo del
00:10:29
ser humano que es utilizada por ejemplo
00:10:31
cuando alguien nos dicta un 1 teléfono
00:10:32
ese número tenemos que mantenerlo en la
00:10:34
mente para luego escribirlo oa generarlo
00:10:37
como contacto aquí podemos ver una
00:10:38
memoria ram real con 8 módulos soldados
00:10:41
a la placa si abrimos uno de estos
00:10:42
módulos y lo acercamos lo primero que
00:10:44
veremos son 32 cuadrados que son los
00:10:47
bloques de memoria si hacemos zoom en
00:10:49
uno de estos cuadrados podemos ver que
00:10:50
cada uno se compone de cuatro bloques
00:10:52
más pequeños si hacemos de vuelta un
00:10:54
acercamiento podemos llegar a ver los
00:10:56
bits individuales esta es una matriz de
00:10:59
128 x 64
00:11:01
8000 192 bits en total cada uno de estos
00:11:04
32 cuadros tiene 4 matrices por lo que
00:11:07
son 32 mil 768 bits hay 32 bloques en
00:11:11
total así que esto es aproximadamente un
00:11:14
millón de bits de memoria en cada chip
00:11:16
esta memoria ram tiene 8 por lo que en
00:11:18
total esta ram puede almacenar 8
00:11:20
millones de bits es decir un megabyte es
00:11:22
muy poca memoria debido a que este
00:11:23
módulo es de la década de 1980 hoy en
00:11:26
día lo normal es comprar módulos de
00:11:28
memoria de 1 gb para delante estos son
00:11:31
miles de millones de bits el tipo de
00:11:32
memoria que estudiamos en este vídeo es
00:11:34
llamado memoria de acceso aleatorio
00:11:35
estático o ese ram por sus siglas en
00:11:38
inglés que se construye a base de la
00:11:39
chet hay otros tipos de ram como por
00:11:41
ejemplo la de ram la memoria flash y la
00:11:43
nba ram que funcionan de manera similar
00:11:45
pero utilizan diferentes circuitos para
00:11:47
almacenar los bits por ejemplo
00:11:49
utilizando distintos tipos de compuertas
00:11:51
capacitores o trampas de carga pero la
00:11:53
esencia de todas estas tecnologías
00:11:55
almacenan bits de información en
00:11:56
matrices de celdas de memorias anidadas
00:11:59
masivamente al igual que la mayoría de
00:12:01
las cosas en informática el
00:12:02
funcionamiento es relativamente simple
00:12:04
son las capas y capas de abstracción las
00:12:06
que hacen que tengan un comportamiento
00:12:08
complejo casi mágico es todo lo que
00:12:10
vamos a hablar en este vídeo así que nos
00:12:12
vemos en el próximo episodio
00:12:15
y
00:12:19
[Música]