miércoles, 2 de octubre de 2019

Unidad 2. CPU Y BUSES DEL SISTEMA

La CPU
CPU son las siglas en ingles de Central Processing Unit (Unidad de Proceso Central), El CPU es el cerebro del ordenador, referimos a la parte de la computadora en la que se controlan y originan comandos directos que generan las diferentes funciones de la CPU. En el CPU se hacen todos los cálculos del código binario de la computadora. En general, es la parte más importante del sistema.
CPU 1
En el caso de una computadora de escritorio, sencilla, solo necesitan un tablero de circuitos impresos. En este tablero se encuentra el chip llamado microprocesador que representa el corazón de ese CPU que calcula y determina las funciones principales de la computadora (casi todas). El CPU presenta 2 componentes fundamentales: La unidad de lógica/aritmética (ALU)es la calculadora principal de la computadora, ella vincula las operaciones que están relacionadas directamente con el código binario que se maneja en la PC y la unidad de control (CU) es la gran administradora de la memoria y los componentes que agregan las funciones, las descifra y las ejecuta.
La expresión «unidad central de proceso» es, en términos generales, es una descripción de una cierta clase de máquinas de lógica que pueden ejecutar complejos programas de computadora. Esta amplia definición puede fácilmente ser aplicada a muchos de los primeros computadores que existieron mucho antes que el término «CPU» estuviera en amplio uso. Sin embargo, el término en sí mismo y su acrónimo han estado en uso en la industria de la informática por lo menos desde el principio de los años 1960. La forma, el diseño y la implementación de los CPU ha cambiado drásticamente desde los primeros ejemplos, pero su operación fundamental ha permanecido bastante similar.



Memoria

Memoria virtual
La memoria virtual es el uso de la memoria RAM del PC en combinación del disco duro. En algunos casos como cuando por ejemplo tenemos una memoria RAM de reducido tamaño y latencia, la memoria virtual mueve los datos que existen en la memoria RAM a un espacio que se llama archivo de paginación. Estos movimientos crean un espacio extra en la memoria RAM para que así se pueda completar la tarea que se esté realizando con mayor solvencia.


La memoria virtual simula perfectamente una memoria RAM de mayor tamaño, y su utilizad reside en las aplicaciones y sus datos, por eso, el lema “a mayor RAM, mayor capacidad para ejecutar aplicaciones con datos complejos.” Pero tened en cuenta que no es tan solvente y fiable como la RAM por lo que puede provocar puntualmente fallos de ejecución.
Es verdad que no todo es ventajas, al usar una memoria virtual el sistema puede comportase de manera más lenta debido a la carga de los datos, dado que la velocidad de acceso de los datos al disco duro, es más lenta que a la memoria RAM. Ahora bien, si no se tiene una porción de memoria en esta, el sistema necesita tiempo para leer los datos y devolverlos a la memoria principal, puesto que es uno de los lugares donde el procesador puede acceder.
No se debería hablar de la memoria como algo aislado, dado que es un sistema de memoria que se organiza en 4 niveles:
  1. Los registros más alejados.
  2. La caché del micro que se encargan de tener los datos que más usa cerca del procesador.
  3. La memoria RAM.
  4. El disco duro.
Jerarquía de memorias





Registros de la CPU
La CPU tiene 14 registros internos, cada uno de 16 bits. Los primeros cuatro, AX, BX, CX, y DX son registros de uso general y también pueden ser utilizados como registros de 8 bits, para utilizarlos como tales es necesario referirse a ellos como, por ejemplo: AH y AL, que son los bytes alto (high) y bajo (low) del registro AX. Esta nomenclatura es aplicable también a los registros BX, CX y DX.

Los 14 registros son conocidos por sus nombres específicos:

Memoria Cache (L1-L2-L3)
Caché: es una memoria tipo SRAM, basada en transistores y por ello es muy veloz. Es intermedia entre el microprocesador y la memoria RAM, esta memoria guarda los datos utilizados frecuentemente y evita volver a buscarlos en la memoria RAM ya que está es relativamente lenta, por lo que se agilizan los procesos. Su unidad de medida es en Megabytes (MB).

     En el caso de los microprocesadores, estos integran de 1 a 3 tipos de memoria caché denominadas L1, L2 y L3, que significan (“Level X“) ó traducido es nivel 1, nivel 2 y nivel 3.

     + Memoria L1: se encuentra integrada dentro de los circuitos del microprocesador y eso la hace más cara y más complicado en el diseño, pero también mucho más eficiente por su cercanía al microprocesador, ya que funciona a la misma velocidad que él. Esta a su vez se subdivide en 2 partes.

– L1 DC: (“Level 1 date cache“): se encarga de almacenar datos usados frecuentemente y cuando sea necesario volver a utilizarlos, inmediatamente los utiliza, por lo que se agilizan los procesos.

– L1 IC: (“Level 1 instruction cache“): se encarga de almacenar instrucciones usadas frecuentemente y cuando sea necesario volver a utilizarlas, inmediatamente las recupera, por lo que se agilizan los procesos.

     + Memoria L2: esta anteriormente se encontraba en tarjetas de memoria, para ser insertada en una ranura especial de la tarjeta principal (Motherboard) y funciona a la velocidad de trabajo de la misma. Actualmente la memoria L2 viene integrada en el microprocesador, se encarga de almacenar datos de uso frecuente y agilizar los procesos; determina por mucho si un microprocesador es la versión completa ó un modelo austero. Pueden contar con una capacidad de almacenamiento Caché de 8 MB, 9 MB en procesadores AMD® e Intel® y hasta 12 MB en procesadores Intel®.

     + Memoria L3: esta memoria es un tercer nivel que utilizaron primero los procesadores de la firma AMD® y posteriormente Intel®. Con este nivel de memoria se agiliza el acceso a datos e instrucciones que no fueron localizadas en L1 ó L2. Si no se encuentra el dato en ninguna de las 3, entonces se accederá a buscarlo en la memoria RAM. Pueden contar con una capacidad de almacenamiento Caché de hasta 8 Mb y 9 Mb sumando L2+L3 en el caso de la nomenclatura AMD®.


Memoria Principal
La Memoria Principal está formada por circuitos integrados (chips), en ellos la información se almacena en estados de tensión (+5 V) al que hacemos corresponder un uno, y no tensión (0 V) al que le corresponde un cero, por tanto, el sistema de almacenamiento sólo posee dos posibles valores y por ello se denomina binario. Ésta es por lo tanto la menor cantidad de información que podemos almacenar en un ordenador, y se denomina bit (o cero o uno), y al conjunto de ocho bits se le denomina Byte u Octeto.

Podemos imaginar la memoria como un conjunto de casillas, cada una con una dirección que la identifica, donde se almacenan los datos y las instrucciones correspondientes a los programas.

Para conocer la ubicación de cada dato estas casillas deben estar convenientemente numeradas, es lo que se denomina dirección de memoria. En cada casilla podremos almacenar una determinada cantidad de bits según el ordenador, 8bits (1 Byte), 16 bits, 32 bits.... El número de bits que almacena un ordenador en cada casilla de la memoria y que puede manipular en cada ciclo se la denomina longitud de palabra ("word" en inglés).

La cantidad de Bytes que se pueden almacenar en la memoria de un ordenador es bastante elevada y por ello se utilizan prefijos, así 1 KiloByte o KB corresponde a 210 = 1024 Bytes (y no 1000 KB), 1 MegaByte o MB = 1024 KB, 1 GigaByte o GB = 1024 MB, 1 TeraByte o TB = 1024 GB.

La memoria se comunica con el resto de la CPU mediante unos canales denominados "Buses". Existen tres, el Bus de datos por donde circulan los datos, el Bus de direcciones encargado de indicar la posición de un dato concreto almacenado en memoria, y el Bus de control por donde circulan las instrucciones de los procesos que lleva a cabo el ordenador.

Por tanto, para localizar un dato en la memoria principal, la dirección que ocupa éste debe circular por el bus de direcciones. Según cual sea la amplitud del bus de direcciones y la longitud de palabra, así será el tamaño de la memoria que puede gestionar el ordenador. Es decir, el número de casillas o direcciones de memoria que pueden ser indicadas y el tamaño de la información que contienen. Para un bus de direcciones de 8 bits el ordenador podrá gestionar 28 = 256 posiciones de memoria y en cada una de ellas podremos almacenar 8 bits si esta es la longitud de palabra de ese ordenador.

Existen dos tipos de memoria en el ordenador, una de ellas es la denominada RAM (Random Access Memory, Memoria de Acceso Aleatorio) que es la encargada de almacenar los datos y los programas que la CPU está procesando. El término acceso aleatorio significa que no es necesario leer una serie de datos para acceder al que nos interesa, sino que podemos acceder directamente al dato deseado. Esta memoria depende del suministro de tensión eléctrica para mantener la información y por tanto al apagar el ordenador los datos almacenados en ella se perderán.

La otra parte de la memoria se denomina ROM (Read Only Memory, Memoria de Solo Lectura), en la que se encuentran el test de fiabilidad del ordenador (POST: Power on Self Test), las rutinas de inicialización y arranque, y la BIOS que proporciona los servicios fundamentales para que el ordenador sea operativo, en su mayor parte controla periféricos del ordenador como la pantalla, el teclado y las unidades de disco. El término Memoria de Solo Lectura, significa que esta memoria no puede ser modificada y aun cuando apaguemos el ordenador la información permanecerá inalterada en la ROM.


Existe otra porción de memoria denominada CMOS que contiene datos básicos de éste, como pueden ser el número de unidades de disquetes y su tipo, de discos duros y su tipo, la fecha, la hora y otros datos respecto al comportamiento fundamental del ordenador. Esta memoria no es de tipo permanente, ya que podemos variar la configuración de nuestro equipo y para ser mantenida necesita de la tensión que le suministra una pequeña pila o batería.

Además, en los ordenadores modernos se ha incorporado una memoria muy rápida denominada caché, que hace de memoria intermedia entre el microprocesador y la memoria RAM. Normalmente los datos no se leen aleatoriamente, sino que los procesos de ordenador suelen requerir el uso de datos que están almacenados en memoria de manera contigua. Por ello, en lugar de leer de uno en uno los datos, se lee un bloque completo que se lleva a la memoria caché, esta memoria es mucho más rápida (y cara) que la memoria RAM, por lo que los accesos se hacen entre el microprocesador y la caché siempre que sea posible. Cuando un dato no esté en la caché, se leerá otro bloque de la RAM. De esta manera los ordenadores aumentan su velocidad de trabajo de forma considerable.

Memoria secundaria
Memoria secundaria es un componente importante de los modernos sistemas de computadoras personales, y hace que un porcentaje considerable de su costo. Todos los sistemas informáticos modernos casa (además de ciertos dispositivos especializados, como consolas de video juegos) vienen con una unidad de disco duro como una característica estándar, por lo general uno muy importante, y la mayoría también incluyen una forma de masa de medios de almacenamiento extraíbles, como una unidad de CD o uno de sus variantes modernos .Unidades de disco, a pesar de ser menos útil de lo que originalmente fueron, ya que tienen menos datos, todavía están incluidos en muchos equipos.

Memoria auxiliar

Si se habla de memoria auxiliar, puede hacerse referencia a los antiguos diskettes, un disco o CD-ROM, DVDs, unidades de memoria flash, discos Zip y otras alternativas. Cada una de ellas presenta diversas características que la adecuan a uno u otro propósito. Además, en la mayoría de los casos pueden adquirirse con distintos tamaños, de acuerdo con las necesidades del usuario.
memoria-auxiliar
Memoria en la red
El empleo de dispositivos de almacenamiento como CD y memorias USB, están perdiendo terreno con la llamada Nube (cloud computing).

Los datos se almacenan en Internet y son accedidos desde cualquier lugar.
Resultado de imagen para la nube



Buses del sistema
Estructura del bus del sistema

Los buses son el mecanismo más común para la comunicación entre los dispositivos del computador. Físicamente son conductores por donde viajan señales eléctricas. Algunos ejemplos de buses se muestran en las figuras:

El bus es un dispositivo en común entre dos o más dispositivos, si dos dispositivos transmiten al mismo tiempo señales las señales pueden distorsionarse y consecuentemente perder información.  Por dicho motivo existe un arbitraje para decidir quién hace uso del bus. 
Por cada línea se pueden trasmitir señales que representan unos y ceros, en secuencia, de a una señal por unidad de tiempo. Si se desea por ejemplo transmitir 1 byte, se deberán mandar 8 señales, una detrás de otra, en consecuencia, se tardaría 8 unidades de tiempo. Para poder transmitir 1 byte en 1 sola unidad de tiempo tendríamos que usar 8 líneas al mismo tiempo.
Existen varios tipos de buses que realizan la tarea de interconexión entre las distintas partes del computador, al bus que comunica al procesador, memoria y E/S se lo denomina bus del sistema.

La cantidad de líneas del bus a medida que pasa el tiempo se va incrementando como uno de los métodos para incrementar la velocidad de transferencia de señales en el computador, y así incrementar el desempeño.  Cada línea tiene un uso específico, y hay una gran diversidad de implementaciones, pero en general podemos distinguir 3 grandes grupos de buses:

A)   Bus de datos: Por estas líneas se transfieren los datos, pueden ser de 8, 16, 32 o más líneas, lo cual nos indica cuantos datos podemos transferir al mismo tiempo, y es muy influyente en el rendimiento del sistema. Por ejemplo, si el bus es de 8 líneas y las instrucciones son de 16 bits, el sistema va a tener que acceder 2 veces a memoria para poder leer la instrucción, el doble de tiempo en leer instrucciones comparando con un bus de datos de 16 líneas. 
Resultado de imagen para bus de datos
B)   Bus de direcciones: Por estas líneas se envía la dirección a la cual se requiere hacer referencia para una lectura o escritura, si el bus es de 8 líneas, por ejemplo, las combinaciones posibles para identificar una dirección irían del 00000000 al 11111111, son 256 combinaciones posibles, en consecuencia, el ancho del bus de datos nos indica la cantidad de direcciones de memoria a la que podemos hacer referencia.  Dentro de las direcciones posibles, en general el sistema no usa todas para hacer referencia a la memoria principal, una parte las usa para hacer referencia a los puertos de E/S. 

Resultado de imagen para bus de direcciones

C)   Bus de control: Estas líneas son utilizadas para controlar el uso del bus de control y del bus de datos. Se transmiten órdenes y señales de temporización. Las órdenes son muy diversas, las más comunes son:

·         Escritura en memoria. 

·         Lectura de memoria. 

·         Escritura de E/S. 

·         Lectura de E/S. 

·         Transferencia reconocida. 

·         Petición del bus. 

·         Sesión del bus. 

·         Petición de interrupción. 

·         Interrupción reconocida. 

·         Señal de reloj.

·         Inicio. 

Jerarquía de bus del sistema

Para mejorar el rendimiento del bus, las jerarquías de buses fueron implementadas cada vez más, una primera aproximación a una jerarquía de bus básica seria como la que se muestra en el siguiente esquema:



Primero tenemos un bus local, de alta velocidad que conecta el procesador a la cache, el controlador de la cache también puede acceder al bus del sistema, con esta implementación, la mayor parte de los datos a los que va a acceder el procesador, que están en la cache, serán entregados a una alta velocidad, otro punto a destacar de esta parte es que los accesos a memoria por parte de la cache no van a interrumpir el flujo de datos entre procesador y cache.  También se ve la posibilidad de conectar un dispositivo de entrada salida al bus local.  Luego tenemos el bus del sistema, al cual está conectada la memoria y por debajo el bus de expansión, al cual se pueden conectar una amplia diversidad de dispositivos, entre el bus del sistema y el bus de expansión se encuentra una interface, que entre las principales tareas está la de adaptar las velocidades de transmisión, por ejemplo para un dispositivo muy lento conectado al bus de expansión la interface podría acumular una cierta cantidad de datos y luego transmitirla a través del bus del sistema.


El hecho de que cada vez más salgan al mercado dispositivos que requieren más velocidad de transmisión en los buses, hizo que los fabricantes implementaran los buses de alta velocidad, el cual está muy estrechamente ligado al bus local, solo hay un adaptador que los une. Debajo de este bus tenemos el bus de expansión, más lento conectado mediante otro adaptador. La figura muestra detalladamente el sistema de bus y periféricos que se interconectan.

Existen varios parámetros y elementos en los buses con los cuales podemos clasificarlos.

*Tipos de buses
Un ejemplo común de dedicados es el bus de datos y el bus de direcciones, cada uno se utiliza solo para una función específica. Esta situación de bus de datos y de direcciones dedicados es lo más común, pero podría llegar a implementarse con un solo bus multiplexado el tiempo. Esto funcionaria a grandes rasgos de la siguiente forma:

Al comienzo de la transferencia se sitúa en el bus la dirección de donde se quiere leer o a donde se desea escribir, luego se emite por el bus de datos una señal indicando que en el bus se encuentra una dirección valida.

A partir de ese momento se dispone de una unidad de tiempo para que los dispositivos identifiquen si es su dirección, luego de esto se pone en el mismo bus los datos y se realiza la transferencia en el sentido que lo indique una orden emitida por el bus de control. La Ventaja de este método es la reducción de la cantidad de líneas, lo cual ahorra espacio y costos, la desventaja son que para poder implementar la forma de operar la circuitería en cada modulo tiene que ser más compleja, y que el rendimiento del sistema será menor por no poder transmitir los datos simultáneamente, en paralelo (datos y dirección).

Otro tipo de clarificación podría ser según su dedicación física: Podríamos poner como ejemplo el bus de E/S, el cual se encarga de conectar solo los dispositivos de E/S, este bus se conecta al bus principal mediante algún adaptador, la ventaja está en que al ser dedicado solo a E/S, el rendimiento de este va a ser mejor, ya que solo van a operar con él los módulos de E/S, y no va a haber tanta competencia por el bus.