1 00:00:00,000 --> 00:00:07,000 Bueno, este vídeo tiene como objetivo ayudaros un poco en la comprensión de la arquitectura 2 00:00:07,000 --> 00:00:16,000 de Numa, una de las partes más complicadas de la arquitectura de Numa. Como sabéis tenéis 3 00:00:16,000 --> 00:00:22,000 una infografía colgada en la web virtual en la que ya está representado todo esto, pero 4 00:00:22,000 --> 00:00:28,000 lo que intento con este vídeo es hacerlo un poco más intuitivo para que entendáis 5 00:00:28,000 --> 00:00:32,000 cómo se produce el traspaso de información entre las partes de la web virtual, ¿vale? 6 00:00:32,000 --> 00:00:38,000 Utilizo elementos de la clase simulando los bloques que tenéis dentro de la infografía 7 00:00:38,000 --> 00:00:44,000 de Numa que tenemos colgada en la web virtual. Básicamente, como recordáis, son tres. Aquí 8 00:00:44,000 --> 00:00:50,000 en esta parte de la pantalla estoy representando el día de control, que es la parte más importante 9 00:00:50,000 --> 00:00:55,000 del proceso y la que se encarga de comprobar el programa que el ordenador está ejecutando. 10 00:00:55,000 --> 00:00:59,000 Aquí en la pizarra blanca estoy representando la memoria de alineamiento ecológica, que 11 00:00:59,000 --> 00:01:03,000 es lo que también entra dentro del procesador. En este caso, la parte que se encarga de hacer 12 00:01:03,000 --> 00:01:08,000 todo el calculo de matemáticos, pero sobre casi todo el programa se basa en el mismo 13 00:01:08,000 --> 00:01:13,000 procedimiento de analización de datos. Y luego, por último, este mueble de aquí 14 00:01:13,000 --> 00:01:18,000 representaría la memoria RAM, la memoria principal, la zona en la que están almacenados 15 00:01:18,000 --> 00:01:23,000 todos los datos y todas las instrucciones con que el programa se tratará de ejecutarse. 16 00:01:23,000 --> 00:01:29,000 El objetivo es realizar la interacción entre estos tres elementos. Yo llevaré la información 17 00:01:29,000 --> 00:01:36,000 de un sitio a otro simulando un poco las líneas de comunicación internas. Vale, pues comenzamos. 18 00:01:36,000 --> 00:01:41,000 Como sabéis, todo comienza con lo que hemos visualizado aquí mediante un reloj, que sería 19 00:01:41,000 --> 00:01:45,000 el reloj que marca el ritmo del ordenador. Es decir, siempre tuve que estar sincronizado 20 00:01:45,000 --> 00:01:49,000 con el programa. Ese reloj entra en un bloque, que recordaréis que se llama sincronizador, 21 00:01:49,000 --> 00:01:55,000 que es el que se encarga de repartir ese ritmo en ritmos más pequeños y distributo, en el 22 00:01:55,000 --> 00:02:01,000 último, todo ese compás, ese ritmo que todos los elementos deben seguir para que todo esté 23 00:02:01,000 --> 00:02:06,000 sincronizado. Lo he colocado ahí arriba para que estén presentes durante todo el vídeo 24 00:02:06,000 --> 00:02:10,000 y durante todo el espacio de comunicación. Dentro de la unidad de control, lo que es 25 00:02:10,000 --> 00:02:14,000 lo más importante es el contador de programa, que me va a decir a dónde tengo que ir de 26 00:02:14,000 --> 00:02:19,000 la memoria a encontrar esa instrucción que me toca ejecutar ahora. El programa, como 27 00:02:19,000 --> 00:02:23,000 sabéis, es un conjunto de instrucciones, pues para saber qué me toca hacer ahora, nadie 28 00:02:23,000 --> 00:02:29,000 me lo dice directamente, sino que el contador de programa me incita a que vaya a la memoria 29 00:02:29,000 --> 00:02:34,000 a recoger esa instrucción. Tal y como se ve aquí, el contador de programa me dice que 30 00:02:34,000 --> 00:02:39,000 voy a la memoria hasta el día 2 de la memoria. El problema es que la memoria RAM es algo 31 00:02:39,000 --> 00:02:44,000 demasiado importante para tener acceso libre, por lo tanto, está controlada. Y a la entrada, 32 00:02:44,000 --> 00:02:49,000 esta silla, simboliza el registro de direccionamiento de memoria, al que yo le tengo que enseñar 33 00:02:49,000 --> 00:02:54,000 a dónde quiero ir para que me dé permiso, puesto que la memoria que hemos representado 34 00:02:54,000 --> 00:02:59,000 y que está, que la tiene aquí, tiene zonas prohibidas a las que no debería poder acceder 35 00:02:59,000 --> 00:03:04,000 porque no tienen información privilegiada. Por lo tanto, yo le digo al registro de direccionamiento 36 00:03:04,000 --> 00:03:09,000 de memoria a dónde quiero ir, hasta el día 2, y desde el principio me da permiso. Yo 37 00:03:09,000 --> 00:03:14,000 accedo hasta el día 2, y en esta estante de día 2 voy a saber que recogo una información 38 00:03:14,000 --> 00:03:19,000 bastante larga para certificar que es la principal separación del caso. Esta información no 39 00:03:19,000 --> 00:03:24,000 la llevo directamente, sino que se la enseño a este otro bloque, que es lo que se llama 40 00:03:24,000 --> 00:03:28,000 registro de intercambio de memoria. Este registro de intercambio de memoria es el 41 00:03:28,000 --> 00:03:33,000 que se trata de distribuir esa información, de evaluar nuestra información correcta 42 00:03:33,000 --> 00:03:38,000 y de distribuirla a todo el mundo. En este caso, como esto es una instrucción, el registro 43 00:03:38,000 --> 00:03:43,000 de intercambio de memoria me la entrega y yo lo colocaré en el lugar donde aparecen 44 00:03:43,000 --> 00:03:51,000 las instrucciones. En este caso, el registro de instrucción. Este registro almacena esta 45 00:03:51,000 --> 00:03:55,000 instrucción, y muy bien, es una instrucción de un formato bastante complejo. En realidad, 46 00:03:55,000 --> 00:04:00,000 es una instrucción con información superior. Aquí existe un bloque llamado decodificador, 47 00:04:00,000 --> 00:04:05,000 que se encargará de dividir esa información en sus cuatro partes, puesto que, por su 48 00:04:05,000 --> 00:04:10,000 resultado de dos hits, toda la instrucción tiene cuatro partes principales. Voy rápido 49 00:04:10,000 --> 00:04:15,000 con esto. La primera parte es la parte que me dice qué operación matemática es la 50 00:04:15,000 --> 00:04:20,000 que tengo que hacer. Me vengo aquí y se la entrego dentro de la zona matemática al bloque 51 00:04:20,000 --> 00:04:24,000 llamado circuito operacional, que es el que tiene que saber qué operación matemática 52 00:04:24,000 --> 00:04:31,000 hay acá. El segundo bloque es el primer dato, pero, como siempre, no me da el dato directamente, 53 00:04:31,000 --> 00:04:36,000 sino que me dice a qué zona de la memoria tengo que ir para recoger ese primer dato. 54 00:04:36,000 --> 00:04:42,000 De nuevo, tengo que enseñar a dónde quiero ir. En este caso, a estantería 4, al RBN, 55 00:04:42,000 --> 00:04:48,000 al plantel de entrada. Una vez que me da acceso, yo accedo a estantería 4, le pongo 56 00:04:48,000 --> 00:04:52,000 el número, que en este caso me ha encontrado el número 3, se lo enseño al registro de 57 00:04:52,000 --> 00:04:57,000 intercambio para que se encargue de decirme que es un número válido y no lo entregué. 58 00:04:57,000 --> 00:05:01,000 En este caso, como es un número que yo voy a utilizar para la operación matemática, 59 00:05:01,000 --> 00:05:07,000 lo entrego a la entrada del circuito de realidad de las operaciones matemáticas. Ese circuito 60 00:05:07,000 --> 00:05:11,000 es el circuito operacional, que ya sabe qué tiene que sumar. Ahora, además, sabe que 61 00:05:11,000 --> 00:05:16,000 el número que tiene que sumar es el 3. Para continuar, tengo que mover al registro 62 00:05:16,000 --> 00:05:20,000 de distribución. El registro de distribución me dice que ahora tengo que ir a la estantería 63 00:05:20,000 --> 00:05:24,000 5 para poder recoger el segundo número de la operación. Como vuelvo a tener que ir 64 00:05:24,000 --> 00:05:29,000 a tener la necesidad de entrar en una RAM, le enseño al registro de direccionamiento 65 00:05:29,000 --> 00:05:34,000 que quiero ir a la estantería 5, él me da permiso, accedo a la estantería 5, en este 66 00:05:34,000 --> 00:05:39,000 caso me ha encontrado el número, que es el número 5 para poder operar, se lo entrego 67 00:05:39,000 --> 00:05:43,000 al registro de intercambio de memoria para que diga si este es un número correcto, 68 00:05:43,000 --> 00:05:50,000 yo lo llevo, y este número me invita a mí a marcarlo, en este caso, a la segunda parte 69 00:05:50,000 --> 00:05:57,000 de la operación. Aquí, el circuito que realiza el cálculo ya sabe que tiene que entrar con 70 00:05:57,000 --> 00:06:03,000 el 3 y con el 5. En este caso, tengo que sumarlos. Entonces, internamente, tiene los elementos 71 00:06:03,000 --> 00:06:07,000 que tiene que entender y llega a la conclusión de que el resultado es el número 8. Es el 72 00:06:07,000 --> 00:06:12,000 número, se lo entrego aquí a un bloque, llamado bloque acumulador, y obtengo el resultado. 73 00:06:12,000 --> 00:06:16,000 Si hubiera pasado algo especial, aquí, en el puntito a la derecha, que se llama registro 74 00:06:16,000 --> 00:06:21,000 de estado, se encendería algún tipo de luz indicando que hemos hecho una operación correcta 75 00:06:21,000 --> 00:06:25,000 o que ha ocurrido algo diferente. En este caso, no hay nada que resaltar, hemos hecho 76 00:06:25,000 --> 00:06:31,000 una operación básica, 3 más 5, 8. Llega el momento de guardar este 8 en la memoria, 77 00:06:31,000 --> 00:06:35,000 porque la verdad, chicos, que todo tiene que estar al final en la memoria RAM, en una 78 00:06:35,000 --> 00:06:39,000 parte de almacenaje de información. ¿Vale? ¿Dónde en la memoria, la memoria es la más 79 00:06:39,000 --> 00:06:44,000 abordada? Pues que nunca he olvidado este cuarto elemento. El cuarto elemento del registro 80 00:06:44,000 --> 00:06:49,000 de instrucción me dice que el resultado lo tendría que guardar en la estantería 9. 81 00:06:49,000 --> 00:06:53,000 Por un lado, me dice en donde tengo que guardarlo, por otro lado, el numerador me dice que el 82 00:06:53,000 --> 00:06:58,000 resultado es ese. Me dirijo con estos dos elementos a la entrada de la RAM, y en este 83 00:06:58,000 --> 00:07:04,000 caso, le digo al vigilante que vigila direcciones que quiero ir a la estantería 9, y le digo 84 00:07:04,000 --> 00:07:11,000 al responsable de los datos que quiero meter el dato 8. Ambos me dan el permiso, se coordinan 85 00:07:11,000 --> 00:07:17,000 y me dicen que adelante. Me dejan que escriba la memoria, y la memoria le escribo en el 86 00:07:17,000 --> 00:07:22,000 numerador 8. Finalmente, con este proceso, ya tengo la operación realizada, el resultado 87 00:07:22,000 --> 00:07:27,000 metido en la memoria RAM, y hemos terminado con esta operación. ¿Qué ocurriría ahora? 88 00:07:27,000 --> 00:07:32,000 El contador del programa tendría que indicar cuál es la siguiente instrucción a realizar. 89 00:07:32,000 --> 00:07:37,000 De nuevo, apuntándome a una estantería completa, la memoria es el contendo de la estantería 90 00:07:37,000 --> 00:07:43,000 10. Comenzaría todo el proceso de hoy. Únicamente me quedaba comentar que, como veis, para moverme 91 00:07:43,000 --> 00:07:47,000 entre estos elementos, yo no he dado los saltos por la clase, sino he ido siempre por dos 92 00:07:47,000 --> 00:07:52,000 caminos demasiado o muy concretos. Es decir, siempre he hecho este tipo de proceso. ¿Por 93 00:07:52,000 --> 00:07:56,000 qué? Porque la comunicación entre todos los elementos y el numerador se produce siempre 94 00:07:56,000 --> 00:08:02,000 a través del mismo camino. Este camino se llama Bus de Neumann, y está dividido por 95 00:08:02,000 --> 00:08:07,000 varios caminos, según lo que viajes, sean cómodos, o sean direcciones, en valle hacia 96 00:08:07,000 --> 00:08:11,000 la RAM, o en valle hacia la RAM. Esto es un poquito más complicado, pero ya sabemos que 97 00:08:11,000 --> 00:08:15,000 es un bus de comunicación, sino una línea de comunicación nos basta. Bueno, chicos, 98 00:08:15,000 --> 00:08:19,000 espero que os haya quedado claro con esto. Muchísimas gracias, y ya sabéis que si tenéis 99 00:08:19,000 --> 00:08:23,000 cualquier duda, a través del chat de la web virtual, podéis contactar contigo. Muchas 100 00:08:23,000 --> 00:08:24,000 gracias.