lunes, 3 de septiembre de 2007

La velocidad de procesamiento de los microprocesadores modernos es bastante mayor que el ancho de banda de las memorias (velocidad de transferencia de los datos por unidad de tiempo). Para evitar cuellos de botella y que el procesador se quede esperando los datos e instruccciones de la memoria se articula lo que viene a llamarse "memoria caché". Una cache es una memoria rápida situada entre la CPU y la RAM, que gracias a los principio de localidad espacial y temporal suele contener los próximos datos e instrucciones a ejecutar.
En la segunda parte de esta entrada, se verán detalles de esta memoria caché.
En principio podemos distinguir dos tipos de memoria principal, la RAM y la ROM.
MEMORIA RAM (Random Access Memory)
Constituye la mayor parte de la memoria principal y es una memoria sobre la cual se puede leer y escribir. Es una memoria volátil es decir, la información que contiene desaparece cuando cesa la alimentación.
La tecnología de RAM se divide en dos variantes: estáticas y dinámicas
Las Memorias Estáticas (SRAM) son más rápidas porque no consumen ciclos de refresco, pero son más caras. Se utilizan en las memorias caché y de vídeo.
Las Memorias Dinámicas (DRAM) son más baratas pero más lentas que las anteriores puesto que consumen ciclos de refresco.
La memoria RAM como dispositivo lo podemos dividir en dos partes:
El área de control: encargada de localizar la posición de memoria que se corresponde con la dirección que se envía por el bus de direcciones.Consta de un Registro de Direcciones de Memoria y un Decodificador que tiene como entrada los n bits del bus de direcciones y 2 elevado a n salidas para cada una de las posiciones de memoria.El área de almacenamiento: está formada por una matriz de celdas básicas de forma que cada fila se corresponde con una posición de memoria. Cada celda básica está formada por un dispositivo de almacenamiento binario que puede mantener un estado lógico (0 ó 1) durante un tiempo limitado y cuyo valor se transmitirá al Registro de Intercambio de Datos cuando la fila se activa para una operación de lectura. Cuando la operación es de escritura, el proceso es inverso, es decir, el contenido del Registro de Intercambio de Datos pasa a la posición de memoria activada. El Registro de Intercambio de Datos es el utilizado por el bus de Datos del ordenador para tomar y dejar los datos que se leen y escriben en memoria.
MEMORIA ROM (Read Only Memory)La ROM es una memoria de sólo lectura. Algunas ROM son programables, es decir, parte de la información que contienen puede cambiarse por el usuario y por tanto, necesita estar alimentada constantemente. Para ello se utiliza una pila que actúe como fuente de alimentación.Esta pila funciona mientras el ordenador está apagado y utiliza la alimentación de la red para recargarse cuando el ordenador está conectado. De esta forma, la pila puede durar indefinidamente (salvo problemas de humedad, cortocircuito, etc). Actualmente los ordenadores no emplean chips de memoria ROM pura, han sido reemplazados por las memorias EEPROM (Memorias ROM eléctricamente borrables y programables).
La Bios
La Bios es el elemento encargado de establecer la conexión entre el hardware y el software. Cuando se enciende el ordenador hay que establecer cuáles son los recursos disponibles y donde se encuentra el software del Sistema Operativo. Estas funciones las realiza la BIOS (Subrutinas Básicas de Entrada/Salida) a partir de cierta información que está almacenada de forma permanente en la placa base. La BIOS está dividida en varios chips que se reparten entre los distintos elementos hardware del ordenador:- La ROM BIOS es la BIOS del sistema. Se trata de un chip que se encuentra en la placa base y que contiene un pequeño programa de arranque que chequea los recursos disponibles. También contiene las rutinas de E/S que permiten al procesador comunicarse con el exterior mediante el mecanismo de las interrupciones.- La RAM CMOS es la parte configurare de la BIOS. Contiene información básica sobre algunos recursos del sistema que son susceptibles de ser modificados como el disco duro el tipo de disco flexible, etc. Esta información es almacenada en una RAM con tecnología CMOS (bajo consumo) alimentación por una pila que se encuentra en la placa base.

Memoria Caché

Significa memoria temporal; generalmente de existencia oculta y automática para el usuario, que proporciona acceso rápido a los datos de uso más frecuente o previsible. Por ejemplo, el "Caché" de disco es un área de memoria donde el Sistema transfiere los datos que supuestamente serán accedidos de inmediato. Si leemos un "cluster" [1] el sistema puede disponer en esta memoria "cache" los clusters que siguen en la estructura lógica, de forma que, si seguimos efectuando lecturas, lo más probable es que los próximos datos estén ya en memoria y puedan ser accedidos de forma inmediata [2].
La utilización de este tipo de memorias no es sino la generalización de un principio de uso común en la vida diaria; poner más a mano las cosas de uso más frecuente. Se basa en dos suposiciones que generalmente resultan ciertas:
Los ordenadores tienden a utilizar las mismas instrucciones y (en menor medida), los mismos datos repetidamente.
La información necesitada se encuentra almacenada de forma adyacente, o cuando menos muy cercana, en memoria o disco.
§2 Tipos de cache
Desde el punto de vista del hardware, existen dos tipos de memoria cache; interna y externa. La primera, denominada también cache primaria, caché de nivel 1 o simplemente caché L1 (Level one) . La segunda se conoce también como cache secundaria, cache de nivel 2 o cache L2 .
Desde el punto de vista funcional, existen cachés específicas de algunos dispositivos, por ejemplo, de disco. También se distingue entre caché de lectura y de escritura.
§2.1 Caché interna
Es una innovación relativamente reciente [3]; en realidad son dos, cada una con una misión específica: Una para datos y otra para instrucciones. Están incluidas en el procesador junto con su circuitería de control, lo que significa tres cosas: comparativamente es muy cara; extremadamente rápida, y limitada en tamaño (en cada una de las cachés internas, los 386 tenían 8 KB; el 486 DX4 16 KB, y los primeros Pentium 8 KB). Como puede suponerse, su velocidad de acceso es comparable a la de los registros, es decir, centenares de veces más rápida que la RAM.
§2.2 Caché externa
Es más antigua que la interna, dado que hasta fecha "relativamente" reciente estas últimas eran impracticables. Es una memoria de acceso rápido incluida en la placa base, que dispone de su propio bus y controlador independiente que intercepta las llamadas a memoria antes que sean enviadas a la RAM ( H2.2 Buses locales).
La caché externa típica es un banco SRAM ("Static Random Access Memory") de entre 128 y 256 KB. Esta memoria es considerablemente más rápida que la DRAM ("Dynamic Random Access Memory") convencional, aunque también mucho más cara [5] (tenga en cuenta que un aumento de tamaño sobre los valores anteriores no incrementa proporcionalmente la eficacia de la memoria caché). Actualmente (2004) la tendencia es incluir esta caché en el procesador. Los tamaños típicos oscilan entre 256 KB y 1 MB.
Nota: En 1997, con la introducción del procesador Pentium II, Intel abandonó el denominado zócalo 7 utilizado hasta entonces en sus procesadores, en favor del denominado Slot-1. La razón argüida era precisamente la inclusión de la caché L2 en la cápsula del procesador.
§3 Caché de disco
Además de las anteriores, que son de propósito general, existe una caché de funcionalidad específica que se aloja en memoria RAM estándar. Es la caché de disco (nos hemos referido a ella en la introducción de este epígrafe), destinada a contener los datos de disco que probablemente sean necesitados en un futuro próximo y los que deben ser escritos. Si la información requerida está en chaché, se ahorra un acceso a disco, lo que es centenares de veces más rápido (recuerde que los tiempos de acceso a RAM se miden en nanosegundos y los de disco en milisegundos E1.7.1 Unidades de medida).
Nota: Existe un mecanismo parecido al de caché de disco que aquí se describe pero que funciona en sentido inverso. Es decir, aloja en disco los datos que no pueden ser almacenados en la memoria RAM. Es el sistema de memoria virtual, al que nos referiremos al tratar de la memoria.
El funcionamiento de la caché de disco se basa en dos esquemas de operación. La lectura adelantada ("Read-ahead") y la escritura retrasada ("Write-behind"). La primera consiste en anticipar lo que se necesitará de forma inmediata y traerlo a la caché. Por su parte, la escritura retrasada consiste en mantener los datos en caché hasta que se producen momentos de desocupación del sistema de disco. En este caso la caché actúa como memoria tampón o "buffer" intermedio, y no se obliga al subsistema a realizar físicamente ninguna escritura, con lo que las cabezas quedan libres para nuevas lecturas.
Puesto que los cachés de disco de escritura retrasada mantienen los datos en memoria volátil después que "supuestamente" se han escrito en el dispositivo, una caída accidental del sistema, por fallo de energía o apagado intempestivo, puede producir pérdidas de los datos alojados en la caché en ese momento (es esta una de las razones por las que los sistemas Windows y Linux exigen un proceso especial de apagado, que a veces tarda unos segundos, en los que observamos una intensa actividad del sistema de disco).
Nota: La mayoría de los lenguajes disponen de métodos para forzar una escritura "real" de los datos vaciando la caché de disco; suelen ser sentencias del tipo commit, flush etc. Es una práctica de seguridad aconsejable, y señal de programación cuidadosa, realizar un vaciado de "buffers" después de cada transacción importante siempre que las circunstancias lo permitan .
§3.1 Caché de disco en MS DOS y Windows

Arquitectura Risc vs Cisc

ARQUITECTURAS CISC
La microprogramación es una característica importante y esencial de casi todas las arquítecturas CISC.
Como por ejemplo:
Intel 8086, 8088, 80286, 80386, 80486.Motorola 68000, 68010, 68020, 68030, 6840.
La microprogramación significa que cada instrucción de máquina es interpretada por un microprograma localizado en una memoria en el circuito integrado del procesador.
En la década de los sesentas la micropramación, por sus características, era la técnica más apropiada para las tecnologías de memorias existentes en esa época y permitía desarrollar también procesadores con compatibilidad ascendente. En consecuencia, los procesadores se dotaron de poderosos conjuntos de instrucciones.
Las instrucciones compuestas son decodificadas internamente y ejecutadas con una serie de microinstrucciones almacenadas en una ROM interna. Para esto se requieren de varios ciclos de reloj (al menos uno por microinstrucción).
ARQUITECTURAS RISC
Buscando aumentar la velocidad del procesamiento se descubrió en base a experimentos que, con una determinada arquitectura de base, la ejecución de programas compilados directamente con microinstrucciones y residentes en memoria externa al circuito integrado resultaban ser mas eficientes, gracias a que el tiempo de acceso de las memorias se fue decrementando conforme se mejoraba su tecnología de encapsulado.
Debido a que se tiene un conjunto de instrucciones simplificado, éstas se pueden implantar por hardware directamente en la CPU, lo cual elimina el microcódigo y la necesidad de decodificar instrucciones complejas.
En investigaciones hechas a mediados de la década de los setentas, con respecto a la frecuencia de utilización de una instrucción en un CISC y al tiempo para su ejecución, se observó lo siguiente:
- Alrededor del 20% de las instrucciones ocupa el 80% del tiempo total de ejecución de un programa.
- Existen secuencias de instrucciones simples que obtienen el mismo resultado que secuencias complejas predeterminadas, pero requieren tiempos de ejecución más cortos.
Las características esenciales de una arquitectura RISC pueden resumirse como sigue:
Estos microprocesadores siguen tomando como base el esquema moderno de Von Neumann.
Las instrucciones, aunque con otras características, siguen divididas en tres grupos:
a) Transferencia.b) Operaciones.c) Control de flujo.
Reducción del conjunto de instrucciones a instrucciones básicas simples, con la que pueden implantarse todas las operaciones complejas.
Arquitectura del tipo load-store (carga y almacena). Las únicas instrucciones que tienen acceso a la memoria son 'load' y 'store'; registro a registro, con un menor número de acceso a memoria.
Casi todas las instrucciones pueden ejecutarse dentro de un ciclo de reloj. Con un control implantado por hardware (con un diseño del tipo load-store), casi todas las instrucciones se pueden ejecutar cada ciclo de reloj, base importante para la reorganización de la ejecución de instrucciones por medio de un compilador.
Pipeline (ejecución simultánea de varias instrucciones). Posibilidad de reducir el número de ciclos de máquina necesarios para la ejecución de la instrucción, ya que esta técnica permite que una instrucción puede empezar a ejecutarse antes de que haya terminado la anterior. El hecho de que la estructura simple de un procesador RISC conduzca a una notable reducción de la superficie del circuito integrado, se aprovecha con frecuencia para ubicar en el mismo, funciones adicionales:
Unidad para el procesamiento aritmético de punto flotante.
Unidad de administración de memoria.
Funciones de control de memoria cache.
Implantación de un conjunto de registros múltiples. La relativa sencillez de la arquitectura de los procesadores RISC conduce a ciclos de diseño más cortos cuando se desarrollan nuevas versiones, lo que posibilita siempre la aplicación de las más recientes tecnologías de semiconductores. Por ello, los procesadores RISC no solo tienden a ofrecer una capacidad de procesamiento del sistema de 2 a 4 veces mayor, sino que los saltos de capacidad que se producen de generación en generación son mucho mayores que en los CISC.
Por otra parte, es necesario considerar también que:
La disponibilidad de memorias grandes, baratas y con tiempos de acceso menores de 60 ns en tecnologías CMOS.
Módulos SRAM (Memoria de acceso aleatorio estática) para memorias cache con tiempos de acceso menores a los 15 ns.
Tecnologías de encapsulado que permiten realizar más de 120 terminales. Esto ha hecho cambiar, en la segunda mitad de la década de los ochentas, esencialmente las condiciones técnicas para arquítecturas RISC.
La siguiente tabla esquematiza algunas de las principales características de las arquítecturas RISC Y CISC.

Arquitectura Risc vs Cisc

CISC (complex instruction set computer) Computadoras con un conjunto de instrucciones complejo.
RISC (reduced instruction set computer) Computadoras con un conjunto de instrucciones reducido.
Los atributos complejo y reducido describen las diferencias entre los dos modelos de arquitectura para microprocesadores solo de forma superficial. Se requiere de muchas otras características esenciales para definir los RISC y los CISC típicos. Aun más, existen diversos procesadores que no se pueden asignar con facilidad a ninguna categoría determinada.
Así, los términos complejo y reducido, expresan muy bien una importante característica definitiva, siempre que no se tomen solo como referencia las instrucciones, sino que se considere también la complejidad del hardware del procesador.