jueves, 5 de diciembre de 2013

MEMORIA CACHÉ

¿Qué es memoria?

Actualmente ha crecido la necesidad de memoria, pero en realidad la memoria es un circuito operacional basados en dispositivos electrónicos generalmente creado con flips – flops o capacitores, los cuales cumplen la función de almacenar de información de datos de manera digital, es decir guardar la información a nivel de bits. Pero la característica principal es que se puede guardar y recuperar la información para poder procesarla. Generalmente la memoria sigue un patrón, el cual se basa en un diseño el cual parte desde la unidad de memoria, registro de memoria y registro de direcciones para poder ingresar o sacar la información requerida. 

¿Qué es la memoria caché?
Es una memoria donde se almacenan una serie de datos para su acceso rápido, básicamente la memoria cache de un procesador es un tipo de memoria volátil del tipo RAM pero de una velocidad mayor. (Gomez, 2012)

Fuente: tecnolowikia.wikisapces.com

Tipos de conexión de las memorias caché.
            La memoria cache se puede conectar al CPU de dos maneras: Paralelo y Serie.

·         Conexión en serie.
      En este tipo de conexión la CPU solo se conecta con la cache por lo que todas las peticiones que hace la CPU al bus del sistema son a través de la memoria cache. Por lo tanto todo lo que necesita la CPU del sistema se lo proporciona a la memoria cache y como es de tamaño y tiempo de acceso reducido cada vez que el dato está almacenado en la cache, el tiempo de acceso es muy reducido y evita manejar el bus del sistema.

·         Conexión en paralelo.
     En este tipo de conexión todo depende del bus de sistema, cada vez que la CPU realiza una petición, la envía simultáneamente a la cache y a la memoria principal. Si se encuentra la información contenida en la cache es entregada al bus en pocos nano segundos avisando a la memoria principal para que esta no continúe con la búsqueda de la información. De esta manera se llega a parar el ciclo.  Si la memoria cache no tiene el dato pedido, la memoria principal sigue trabajando, con lo cual no hay penalización de tiempo, lo que es una gran ventaja.

Principio de funcionamiento de la caché.
El bus de direcciones va a la cache, que tiene dos partes: la de etiquetas y la de datos. Hay “N” posiciones de etiquetas y cada etiqueta tiene 21 bits. Los 21 bits de la etiqueta se corresponden con los 21 bits de más peso de la direcciones, por eso el comparador coge las N etiquetas y las compara con los 21 bits de más peso de la direcciones.
·         Si coincide, el comparador devuelve un uno lo que implica presencia.
·         Si no coincide, el comparador devuelve un cero lo que implica ausencia.
 Una cache está estructurada en tres bloques importantes.

·    Bloque de etiquetas: RAM-CAM: Es una memoria de acceso por contenido. No se accede por dirección de memorias. No se accede por dirección de memoria, sino que, se copara el valor o dato con lo que hay dentro de la memoria y así sabemos si se encuentra o no contenido en ella.

·     Bloque de datos asociados: SRAM: Es un conjunto de datos de forma que a cada dato le corresponde una etiqueta. Por ejemplo:
o   Dato 0 à Etiqueta 0.
§  Si  hay acierto, la etiqueta que coincide con el dato introducido, devuelve el dato asociado a la misma.

·         Lógica de control: Comparadores de “n” bits, tantos como tenga la etiqueta.

Necesidad de la caché.
La Arquitectura de los ordenadores de última generación está orientada a mejorar el rendimiento, de manera que se ejecuten más instrucciones por unidad de tiempo.
Para llevar a cabo la exigencia de los nuevos procesadores se apoyan en tres recursos fundamentales:
Arquitectura superescalar, característica de la arquitectura RISC. Paralelismo explícito. Se compone de instrucciones sencillas.
Supersegmentación, es decir segmentación con elevado número de etapas. Esta técnica precisa de técnicas sofisticadas para eliminar riesgo, especialmente en las instrucciones que contengan saltos condicionales.
Potenciamiento de la memoria cache, para aumentar la velocidad de la memoria. (Patterson, 2001)

Arquitectura de subsistemas de las memorias caché.
Las características fundamentales que determinar un subsistema cache son las siguientes:

1   Tamaño de la cache. 
El tamaño de la caché suele oscilar entre 8KB y 512KB. Esta memoria en ocasiones no se  puede aumentar el rendimiento  mayor de la cache, debido a los algoritmos  de transferencia de la memoria caché.
Según los algoritmos, la mejor capacidad de la cache esta entre 32k y 256k.

2    Tipos de organización
Existe tres tipo de organización de la memorias caché

Totalmente asociativa: se caracteriza porque cualquier posición de la memoria principal puede ubicar en cualquier posición de la memoria cache. Utiliza comparadores de 32 bits. La flexibilidad de guardar en cualquier posición trae un problema grave, puesto que la cache necesita los 32 bits de la dirección para compartir con la etiqueta. Este inconveniente de este tipo de organización de la memoria caché es que tiene que tener apuntadas todas las direcciones en la zona de etiquetas. 
Asociativa de una vía: Suponemos que la memoria principal tiene  256 KB y la caché 256 Bytes. La memoria principal se divide en bloques de 256 bytes. Habrá 1K bloques, es decir, 1024 bloques. Cada  posición de 1 bloque de la memoria principal solo puede ir a la misma posición de la caché. La ventaja es que para conexionar la memoria principal necesitamos que en el  bus de direcciones tenga 18 líneas. La etiqueta necesita solo 10 bits: 210=10K.

Asociación de “n” vías: El funcionamiento es similar a la de una vía, pero la cache se va a descomponer en varias vías. La memoria principal se divide en fragmentos iguales con la cache asociativa de N vías, se ahorra gran cantidad de bits. Esta organización de la memoria ofrece un mayor rendimiento pero las vías son de mayor tamaño.

3    La estructura física de una cache.
Para referirnos a una caché real presentaremos como ejemplo la de un procesador Pentium.
El Pentium tiene 2 memorias cachés  independientes: una para datos y otra para instrucciones, permitiendo el paralelismo entre instrucciones y datos. Cada una de ellas es de 8 KB.
Son cachés asociativas de 2 vías. Las etiquetas contienen los 20 bits de más peso de la dirección además de dos bits de código: el WP protege contraescritura y V predice si es línea válida o no.
Los datos asociados en la etiqueta tiene cada uno32bytes, cada vía tiene 128 etiqueta donde guarda 128 x 32 bytes=4 Kbyte, luego la memoria lo dividimos en 4KB.

       Actualización de la memoria caché
En el Pentium cuando se produce una ausencia en la caché se busca la información de una línea  completa en la memoria principal y se carga en la caché, en una vía que esté libre.
Si fuera totalmente asociativa, cualquier línea se podría almacenar en cualquier posición de la caché. Si es asociativa de una vía sólo hay una posibilidad. Si es de varias vías, como el Pentium, hay varias posibilidades.
Si se necesita introducir una posición y hay alguna vía vacía, esta se ocupa, si están ocupadas, se pueden aplicar los siguientes algoritmos.
  • RANDOM: algoritmo de generación aleatorio, elige y la reemplaza  una de las posiciones ocupadas de una de las cuatro vías.
  • LRU: se elimina la posición de la vía que menos se haya empleado últimamente. Su funcionamiento se basa en dos bits que apuntan la vía menos empleada. Hay dos alternativas de actualizar:

1.       El dato pedido va en último lugar: el dato último es el que se ha direccionado y se traen los 31 bytes que van adelante.
2.       El dato pedido va en primer lugar: la caché desde el primer dato que ha llegado, ya tiene la información que ha solicitado la CPU. (Tanenbaum, 2000)

Protocolo MESI
Puede suceder que la misma posición de la memoria principal la están empleados dos CPU, y como consecuencia las dos caches. Para evitar esta inconsistencia de la cache Intel desarrollo el protocolo MESI.
El protocolo MESI asigna cuatro estados diferentes a cada línea, que define si una línea es válida, si está disponible para otras caches, o ha sido modificada.

Los posibles estados de la línea son:
  •     M: Modificado: M esta modificada por 1 escritura del procesador, actualizar memoria si es preciso.
  •     E: Exclusiva: la línea solo tiene una cache, y esta sin modificar. La memoria principal tiene una copia.
  •     S: Simultaneo: esta línea esta repetida en otras caches
  •      I: Invalido: esta línea esta invalidada.

Niveles de jerarquía en la caché.
Una de las técnicas de aumentar el rendimiento, es disminuir el tiempo de acceso a las cache y otra aumentar la tasa de aciertos.
Para mejorar4el tiempo de acceso a las caches resulta complicado ya que el acceso a las caches es una característica tecnológica.
Para realizar dicho aumento de aciertos debemos:
·         Mejorar los algoritmos de cargar en la cache
·         Aumentar el tamaño del cache. (Stallings, 2000)
Fuente: informatica.hsw.uol.com.br

Biografía:

  • Gomez, J. B. (2012). Arquitectura de Computadoras I. Mexico: Red Tercer Milenio.
  • Patterson, D. (2001). Arquitectura de Computadores. Madrid: McGraw - Hill.
  •  Stallings, W. (2000). Organización y Arquitectura de Computadores. Madrid: Pretince Hall.
  • Tanenbaum, A. (2000). Organización de Computadoras. Mexico: Prentice Hall - Pearson.





jueves, 21 de noviembre de 2013

Arquitectura en Pipeline

La arquitectura en pipeline consiste en transformar un flujo de datos comprendido en varias en etapas secuenciales. Esta arquitectura durante el desarrollo de programas es muy común para el programador, ya que pueden concatenar comandos fácilmente. También es una arquitectura natural en la programación funcional, equivale a la composición de funciones matemáticas.


Fuente: http://sistemas-distribuidos.wikispaces.com

Pipe quiere decir en español “tuberías”, básicamente el sistema es como el agua que fluye por las tuberías, en este caso el agua llegaría a ser la información o los procesos.

Fuente: http://xnafactory.blogspot.com

Este tipo de arquitecturas es muy común verlo en sistemas operativos multitarea ya que los procesos que se ejecutan son de manera simultánea, luego son ejecutados de manera secuencial mediante un administrador de tareas asignándoles diferente prioridad y capacidad de procesamiento.
Aplicaciones de pipelines.
1.    Los pipelines gráficos, se encuentran en la mayoría de las tarjetas de video, consiste en múltiples unidades aritméticas o CPU completas, implementan varias operaciones típicas.
2.    Los pipelines de software, consiste en multiples procesos ordenados de forma que el flujo de salida alimenta la entrada del siguiente proceso. (Alonso, 2013)
El pipeline o segmentación, es una técnica de implementación, el cual se puede traslapar la ejecución de instrucciones. Hoy en día el pipeline es un de las tecnologías más utilizadas para hacer procesadores más rápidos.
La segmentación no solo ayuda a realizar una sola tarea, sino la característica principal es la de ayudar a realizar un carga de trabajo. La velocidad se incremente si aumenta el número de segmentos.
El speedup es el desbalance en el largo de los segmentos, esto hace que reduzca la velocidad.
Dentro esta arquitectura tenemos los 5 estados de las instrucciones MIPS:
·         IF: Búsqueda de una instrucción en la memoria de instrucciones
·         ID: Búsqueda de registros y decodificación de instrucciones.
·         EXE: Ejecución o cálculo de dirección
·         MEM: Acceso a la memoria de datos.
·         WB: Escribir datos en el archivo de registros.

Ventajas y Desventajas.

Ventajas:
·         Todas las instrucciones son del mismo tamaño
·         Pocos formatos de instrucciones
·         Las operaciones con memoria solo aparecen en las instrucciones de carga y almacenamiento

Desventajas:
·         Existen situaciones cuando la siguiente instrucción no se puede ejecutar en el próximo ciclo de reloj.
·         Existen 3 tipos de riesgos: Riesgos Estructurales, Riesgos de Control y Riesgos de Datos.

Riesgos Estructurales: Es cuando el hardware no puede manejar combinaciones de instrucciones que deben ejecutarse en un mismo ciclo.

Riesgos de Control: Ocurren porque el procesador no “sabe” lo suficiente. Cuando se producen saltos condicionales y/o saltos incondicionales.

Riesgos de Datos: Ocurren porque una instrucción depende del resultado de una instrucción previa en el segmento. Algo muy importante, las instrucciones “add” o “sub” no muestran el resultado hasta el estado WB. (García, 2013)

Bibliografía

Alonso, M. D. (20 de Noviembre de 2013). http://www.slideshare.net/rehoscript/arquitectura-pipeline.
García, I. J. (20 de Noviembre de 2013). http://www.ie.itcr.ac.cr/jdiaz/licenciatura/estructura%20de%20microprocesadores/PRESENTACIONES/pipeline-intro.pdf.




jueves, 7 de noviembre de 2013

Unidades de Almacenamiento
“Disco Duro”
¿Qué es un disco duro?
Un disco duro es un dispositivo de almacenamiento de información permanente (almacenamiento no volátil), a diferencia de las memorias RAM no necesita de un aporte constante de energía para conservar la información. Antes de la aparición de errores, un disco duro posee miles de ciclos que nos permite alterar la información almacenada, es decir que podemos borra o aumentar información.  (Enrique, 2006)

Estructura Física

El disco duro es una caja herméticamente cerrada, en su interior se encuentre una variedad de componentes electrónicos, capaces de sincronizar dos motores y las funciones de las cabezas de lectura y escritura.


Figura 1: Componentes de un Disco Duro
Fuente: riobambainfogroup11.blogspot.com

Funcionamiento
En realidad el disco duro es una pila de platos donde se almacena la información magnéticamente. Cada plato que forma el disco duro gira a una velocidad constante y no descansa hasta que el ordenador se apague. Cada cara del plato tiene asignado uno de los cabezales de lectura y escritura.

Para la opción de lectura, ejecuta una serie de acciones, que son:
·         Desplazar los cabezales de lectura /escritura hasta el lugar donde empiezan los datos.
·         Esperar a que el primer dato llegue donde están los cabezales.
·         Leer el dato con el cabezal.
La operación de escritura es similar. En teoría el funcionamiento es sencillo, pero en la realidad es muy complejo, ya que entra en juego el procesador, el BIOS, el sistema operativo, la memoria RAM y el mismo disco duro.

Características de un disco duro
Dependiendo a la función de varios factores, podemos determinar la capacidad y el rendimiento de los discos duros, como ser: el modo de transferencia, tiempo de acceso, tiempo de búsqueda, velocidad de rotación, latencia, capacidad de almacenamiento y la caché del disco.

Modo de transferencia
Existen varias técnicas para la transferencia de datos desde el disco duro hacia la memoria RAM:

·         PIO: Entrada/salida programada. Para el intercambio de datos utiliza al microprocesador del sistema, es el método más antiguo de transferencia, algunos modos son:
Ø  PIO modo 1: 5.2 Mb/s
Ø  PIO modo 2: 8.3 Mb/s
Ø  PIO modo 3: 11.1 Mb/s
Ø  PIO modo 4: 16.6 Mb/s

·         DMA: Tiene un transferencia full dúplex para transferir datos entre la memoria RAM y el disco duro, sin que el procesador intervenga en esta tarea, lo cual libera a la CPU para realizar otras tareas. Actualmente se utiliza el sistema UDMA, existen varias versiones que se conocen que permiten la máxima velocidad de transferencia:
Ø  DMA16 o UDMA: 16.6 Mb/s
Ø  DMA33 o UDMA modo 2, o Ultra ATA/33: 33.3 Mb/s
Ø  UDMA66 modo 4, o Ultra ATA/66: 66.6 Mb/s
Ø  UDM100 modo 5, o Ultra ATA/100: 100 Mb/s
Ø  UDMA133 modo 6, o Ultra ATA/133: 133 Mb/s 

Tiempo de acceso
Es el tiempo utilizado por las cabezas de lectura/escritura para colocarse encima del sector que se va a leer o escribir. Este tiempo está comprendido entre los 9 y 12 milisegundos.

Tiempo de búsqueda
Es le tiempo que necesita para desplazar las cabezas desde una pista a otra, este tiempo está comprendido entre los 8 y 12 milisegundos.

Velocidad de rotación
Se refiere a la velocidad de giro del disco,  los valores típicos se encuentran entre las 5400 rpm en discos duros portátiles, en discos duros de sobremesa su velocidad de giro se encuentra entre las 7200 rpm. En discos con interfaz SCSI, sus velocidades de giro es mayor, están entre las 10000 a 15000 rpm, además que estos son más ruidosos y consumen más energía.

Latencia
En los discos duros se conoce como latencia, al tiempo de espera del desplazamiento de las cabezas hasta el cilindro adecuado. También se define como el tiempo necesario para que gire el disco y el sector alcance la posición correcta. Cuanto mayor es la velocidad de rotación del disco, menor será la latencia.

Capacidad de almacenamiento
Una de sus principales características es la capacidad de almacenamiento. Hoy en día se mide en gigabytes (Gb), aunque cada esa capacidad está quedando pequeña es por eso que se está empezando a utilizar el terabyte (Tb).
Según el fabricante suelen redondear la capacidad de un gigabyte con 1000 Mb, lo que hace que haya discrepancias al momento de saber el tamaño total, ya que un gigabyte son 1024 Mb.
Caché del disco
            Se encarga de almacenar las lecturas, de forma que cuando se solicite datos del disco ya los tenga disponibles y no haya que esperar a que los cabezales cambien de posición.
Otras características
            Hay que tomar en cuenta otras características:
  •  El tipo de conexión o interfaz entre el disco duro y la PC. Las computadoras de escritorio o sobremesa y las portátiles usan ATA/IDE y SATA, los servidores SATA y SCSI; sin embargo los discos externos suelen usar USB, Fire Wire o eSATA.
  • El tamaño de los discos duros es de 3.5” para computadoras de escritorio, para las portátiles están entre 2.5 o 1.8 pulgadas.
  • Temperatura máxima de funcionamiento
  • Tolerancia a golpes y vibraciones


(Hill, 2013)

Tipos de discos duros
Para una mejor explicación sobre los tipos de discos duros, vean el siguiente video:

Fuente: www.youtube.com

            Ahora veremos la comparación entre un HDD y un SDD:
Fuente: www.youtube.com

Bibliografía
Enrique, H. R. (2006). Hardware y Componentes. Anaya Multimedia.
Hill, M. (11 de 10 de 2013). http://www.mcgraw-hill.es/bcv/guide/capitulo/8448180364.pdf.

Referencias de los videos 




















sábado, 24 de agosto de 2013

Arquitecturas Comerciales

Arquitectura Harvard.-

Este tipo de arquitectura es utilizada por los microprocesadores PIC, la unidad central de proceso (CPU) está conectada a dos memorias por medio de buses diferentes. 


Una memoria es para almacenar los datos (Memoria de Datos) y la otra memoria almacena las instrucciones del programa (Memoria de Programa).
Al estar conectado por buses diferentes, permite al CPU conectarse independientemente con la Memoria de Datos y con la Memoria de Programa.

Para un procesador RISC (Reduced Instrucción Set Computer), el set de instrucciones y el bus de memoria de programa pueden diseñarse de tal manera que todas las instrucciones tengan una sola posición de memoria de programa.

Ventajas de esta arquitectura:

  •       El tamaño de las instrucciones no está relacionado con el de los datos, y por lo tanto puede ser optimizado para que cualquier instrucción ocupe una sola posición de memoria de programa, logrando así mayor velocidad y menor longitud de programa.
  •    El tiempo de acceso a las instrucciones puede superponerse con el de los datos, logrando una mayor velocidad en cada operación. [1]


A continuación se mostrara una serie de arquitecturas comerciales no muy conocidas:
16C74 Microchip
Fuente: [2]

8051 Intel
Fuente: [2]

Bibliografía: