Vous êtes sur la page 1sur 36

2.

2 Arquitectura RISC
2.3 Arquitectura CISC
2.4 Clasificación de arquitecturas a nivel de lenguaje maquina
El tipo de almacenamiento proporcionado para que los operandos estén en la CPU,
en contraposición a que estén en memoria, es el factor distintivo más importante
entre las arquitecturas a nivel lenguaje máquina.

• Máquinas de pila.
• Máquinas de acumulador.
• Máquinas de registros de propósito general.
Las máquinas más primitivas utilizaban arquitecturas estilo pila o acumulador, las
máquinas diseñadas en los últimos diez años utilizan una arquitectura de registros
de propósito general.

Arquitectura de acumulador

En una arquitectura de acumulador un operando está implícitamente en el


acumulador. La UCP no contiene registros de propósito general, sino un acumulador
que almacena el resultado de la última operación aritmética realizada.

Operandos en instrucciones aritméticas y lógicas:

• 2 operandos origen, uno está en el acumulador y el otro está en memoria.


• 1 operando destino, que siempre es el acumulador.
• El acumulador es un operando implícito.
Secuencia de código de C=A+B para tres repertorios de instrucciones diferentes.
Se supone que A, B y C están en memoria y los valores de A y B no pueden ser
destruidos.
2.5 Repositorios de instrucciones: características y funciones
Un conjunto de instrucciones, repertorio de instrucciones o juego de instrucciones
es una especificación que detalla las instrucciones que una unidad central de
procesamiento puede entender y ejecutar, o el conjunto de todos los comandos
implementados por un diseño particular de una CPU.

Características de las instrucciones maquinas

El funcionamiento del procesador está determinado por las instrucciones que


ejecutan. Estas instrucciones se denominan instrucciones maquina o instrucciones
del computador. Al conjunto de instrucciones distintas que puede ejecutar el
procesador se denomina repertorio de instrucciones del procesador.

Elementos de una instrucción maquina

Cada instrucción debe contener la información que necita el procesador para su


ejecución. Pasos involucrados en la ejecución de instrucciones, e implícitamente
define los elementos constructivos de una instrucción máquina.

Dichos elementos son:

Código de operación: especifica la operación a realizar (suma, E/S, etc.).

Referencia a operaciones fuente u origen: son entradas para la


instrucción, implicando uno o más operandos de origen.

Referencia al operador de destino o resultado: la operación puede


producir un resultado.

Referencia a la siguiente instrucción: dice al procesador de donde captar


la siguiente instrucción tras completarse la ejecución de la instrucción actual.

Operandos de origen y destino

Pueden estar en algunas de las 3 áreas siguientes:

Memoria principal o virtual.

Registro del procesador.


Dispositivos de E/S.

Representación de las instrucciones

Dentro del computador, cada instrucción se representa por una secuencia de bits.
La instrucción esta dividida en campos correspondientes a los elementos
constructivos de la misma.

Los codops se representan mediante abreviaturas, denominadas nemotécnicos*,


que indica la operación en cuestión.

*Un código mnemotécnico o código nemotécnico es un sistema sencillo utilizado


para recordar una secuencia de datos, nombres, números, y en general para recordar
listas de ítems(articulo) que no pueden recordarse fácilmente.

Ejemplos usuales son:

ADD: Sumar

SUB: Restar

MPY: multiplicar

DIV: Dividir

LOAD: Cargar datos de memoria

STOR: almacenar datos en memoria

Tipos de instrucciones

Se pueden clasificar de la siguiente manera:

De procesamiento de datos: instrucciones aritméticas y lógicas.


De almacenamiento de datos: instrucciones de memoria.
De transferencia de datos: instrucciones de E/S.
De control: instrucciones de comprobación y de bifurcación.

Numero de direcciones
El número de direcciones por instrucciones es una decisión básica de diseño.
Menos direcciones significan instrucciones más primarias, lo que requiere un
procesador menos complejo. También da lugar a instrucciones más cortas.

Un aspecto a considerar es si una dirección hace referencia a una posición de


memoria o a un registro.

Diseño del repertorio de instrucciones

El repertorio de instrucciones define muchas de las funciones realizadas por el


procesador, y tiene un efecto significativo sobre la implementación del mismo.

Los aspectos más importantes y fundamentales son:

Repertorio de operaciones: cuantas y que operaciones considerar y cuan


complejas deben ser.

Tipos de datos: los distintos tipos de datos con los que se efectúan
operaciones.

Formato de instrucciones: longitud de la instrucción(en bits), numero de


direcciones, tamaño de los distintos campos.

Registros: número de registros del procesador que pueden ser


referenciados por las instrucciones y su uso.

Direccionamiento: el modo o modos de direccionamiento mediante los


cuales puede especificarse la dirección de un operando.

Tipos de operandos

Las instrucciones maquina operan con datos. Las categorías generales mas
importantes de los datos:

Direcciones

Números

Caracteres
Datos lógicos

NUMEROS

Todos los lenguajes maquina incluyen tipos de datos numéricos. Incluso en el


procesamiento de datos no numéricos se necesitan números que actúen como
cantadores, longitud de campo, etc. Una distinción importante entre los números
utilizados en las matemáticas ordinales y los almacenados en un computador es
que estos últimos son están limitados.

En los computadores son usuales tres tipos de datos numéricos:

Enteros o en coma fija

En coma flotante

En decimal

Caracteres

Una forma común de datos de texto o secuencia se caracteres. Aunque la


información textual sea mas conveniente para las personas, no puede ser
almacenada o transmitida fácilmente en forma de caracteres por los sistemas de
comunicación y de procesamiento de datos. Tales sistemas están diseñados para
datos binarios. Por lo tanto, se han ideado diversos códigos que permiten
representar caracteres mediante secuencia de bits.

Datos lógicos

Normalmente cada palabra o cualquier otra unidad direccionable es tratada como


una unidad de datos individual. Es útil considerar una unidad de n bits como n
elementos o datos de un bit, donde cada elemento tiene un valor de 1 o 0. cuando
los datos son de esta manera, se consideran datos lógicos.

Tipos de datos en el Pentium y el powerpc

Tipos de datos en el Pentium

General
Entero

Ordinal

Decimal decodificado en binario (BCD) desempaquetado

BCD empaquetado

Puntero de proximidad

Campo de bits

Cadena de bytes

Coma flotante

Tipos de datos en el powerpc

El procesador de coma fija reconoce los siguientes de tipos de datos:

Byte sin signo


Media palabra sin signo
Media palabra con signo
Palabra sin signo
Palabra con signo
Palabra doble sin signo
Cadena de bytes

Tipo de operaciones

El número de códigos de operación diferentes varían ampliamente de una maquina


a otra. Sin embargo en todas las maquinas podemos encontrar los mismos tipos
generales de operaciones.

Clasificación

• Transferencia de archivos
 Move(transferir): Transfiere una palabra o bloque desde un origen a un
destino.
 Store(memorizar): transferir una palabra desde el procesador a memoria.
 Load(cargar o capta): transfiere una palabra desde memoria a procesador.
 Exchange(intercambiar): intercambia los contenidos de origen y destino.
 Push(introduce a la pila): transfiere una palabra desde el origen hasta la
cabecera de la pila.
• Aritmética
 Add(suma): calcula la suma de dos operadores.
 Substract(restar): calcula la diferencia de dos operadores.
 Multiply(multiplicación): calcula producto de dos operadores.
 Divide(división): calcula cociente de dos operadores.
 Absolute(valor absoluto): sustituye el operando por su valor absoluto.
 Negate(opuesto): cambia el signo del operador
• Lógicas
 AND(Y): Realiza una operación lógica Y.
 OR(O): Realiza una operación lógica O.
 NOT(COMPLEMENTO):realiza el complemento.
 TEST(COMPROBAR):comprueba la condición especificada.
 SHIFT(DESPLAZAMIENTO): desplaza el operando a la izquierda(derecha),
introduciendo valores constantes por el otro extremo.
 ROTATE(ROTAMIENTO): desplaza el operando a la izquierda(derecha) de
forma cíclica.
• De conversión
 Traslate(traducir): traducción de los valores de una sección de memoria
basada en una tabla de correspondencia.
 Convert(Convertir): convierte el contenido de una palabra de un formato a
otro(de decimal empaquetado a binario).
• De E/S
 INPUT(Entrada): transfiere datos desde un puerto o dispositivo de E/S al
destino.
 OUTPUT(salir): transfiere datos desde el origen especificado a un puerto o
dispositivo de E/S.
 START(iniciar E/S): transfiere instrucciones al procesador de E/S para
iniciar operaciones de E/S
 TEST: transfiere información de estado desde el sistema de E/S al destino
especificado.
• De control de flujo
 Jump(bufircacion o salto): carga el PC con la dirección especificada
 Jump condicional(salto condicional): dependiendo de la condición, o carga
el pc con la dirección indicada, o no hace nada.
 Jump to subrutina: guarda la información de control de programa en una
posición conocida y salta a la dirección indicada.
 Execute(ejecutar): capta el operando de la dirección indicada y lo ejecuta
como una instrucción; no modifica el PC.
 Skip(salto implicado): incrementa el PC de manera que se salte la
instrucción siguiente.
 Halt(parar): detiene la ejecución del programa.

Tipo de operaciones del Pentium

El Pentium ofrece un amplio abanico de tipos de operaciones, incluyendo diversas


instrucciones especializadas.

Transferencia de datos
• Mov
• Push
• Pusha
• Movsx
• Lea
Aritméticas

ADD

SUB

MUL

IDIV

Logicas

• AND
• BTS
• BST
• BSF
• SHL/SHR
• SAL/SAR
Control de flujos

• JMP
• CALL
• JEL/JZ
• LOOPE/LOOPZ
• INT/INTO

Operaciones del powerpc


• Ofrece una gran variedad de tipos de operaciones.
• DEDICADAS A BIFURCACIONES
• CARGA/MEMORIZACION
• ARITMETICA DE ENTEROS
• LOGICA Y DESPLAZAMIENTO
• COMA FLOTANTE
• GESTION DE CACHE
LENGUAJE ENSAMBLADOR

• Un procesador puede interpretar y ejecutar instrucciones maquina. estas


instrucciones son simplemente números binarios almacenados en el
computador.

2.6 Repositorios de instrucciones: modos de almacenamiento y formatos


Repositorio de Instrucciones: Modos de Almacenamiento y Formatos

Direccionamiento inmediato

En este modo los operandos se encuentran en los bytes inmediatamente posteriores


al código de operación. Por tanto, forman parte del programa y no pueden ser
tratados como variables; serán siempre constantes.

Características: Se
acepta cualquier base numérica El
símbolo de numeral (#) se utiliza para indicar en el operando que se trata de un
modo de direccionamiento inmediato. El
rango del operando podrá ser de 8bits (-256 a 255) y de 16bits (-32,768 a 65,535).
Tenga precaución pues existen casos especiales de inmediatos que no llevan
operando

Direccionamiento Directo

En el modo directo, el campo de dirección contiene la dirección del operando. Se


requiere una única referencia de memoria para leer el operando de la localización
dada. Sin embargo, sólo proporciona un espacio de direcciones limitado.
Direccionamiento indirecto

En el modo indirecto, la celda de memoria a la que apunta el campo de dirección


contiene la dirección del operando (puntero), que a su vez contiene la dirección de
longitud completa del operando. Este modo tiene un espacio de direcciones grande,
a diferencia del direccionamiento inmediata y el directo, pero debido a que se
requieren múltiples accesos de memoria para encontrar el operando es más lento.

Direccionamiento de registro

El modo de registro es similar al modo directo. La diferencia clave entre los dos
modos es que el campo de dirección de la instrucción se refiere a un registro en
lugar de una posición de memoria. El direccionamiento de registro no tiene una
dirección eficaz. Tres o cuatro bits son utilizados como campo de dirección para
hacer referencia a los registros.

Direccionamiento indirecto de registro

Este modo es similar al direccionamiento indirecto. El operando se encuentra en


una celda de memoria apuntada por contenido de un registro. El registro contiene
la dirección efectiva del operando. Este modo utiliza menos acceso de memoria que
el direccionamiento indirecto. Este modo tiene un espacio de direcciones grande,
pero es limitado al ancho de los registros disponibles para almacenar la dirección
efectiva.

Direccionamiento de desplazamiento

El modo de desplazamiento consiste en tres variaciones:

1) Direccionamiento relativo

2) Direccionamiento de registro base

3) Direccionamiento de índice

Este modo puede considerarse una combinación del modo de direccionamiento


indirecto y de registro. La dirección tiene dos valores: el valor base y un registro que
contiene un desplazamiento entero que es sumado o restado de la base para formar
la dirección efectiva de la memoria.

Formatos de Instrucción

Los Formato de instrucción es una representación en binario de la misma


, el formato de instrucción especifica el significado de cada uno de los bits
que constituyen la instrucción, la Longitud del formato de instrucción es el
número de bits que lo componen.

La información contenida en el formato de la instrucción es:

• Código de operación.
• Dirección de los operandos.
• Dirección del resultado.
• Dirección de la siguiente instrucción (casi siempre implícita).
• Tipos de representación de los operandos (casi siempre implícitos en el
código de operación).
Para simplificar su codificación y decodificación, el formato se divide en
campos:

* Código de operación (CO).

*Modificador (MD): suele completar al CO, y sirve para especificar ciertas


particularidades de la instrucción:

*Tamaño y tipo de los operandos.

*A veces se usa para distinguir entre operaciones similares.

• Operandos (OPi) y resultado (RES).

Una computadora contendrá instrucciones con diferentes formatos (= no


todas las instrucciones del repertorio de un computador tienen el mismo
formato), una computadora dispone de pocos formatos de instrucción
diferentes para simplificar su decodificación, los formatos son sistemáticos:
campos del mismo tipo suelen ocupar la misma longitud y la misma posición.

• El código de operación permite distinguir entre los distintos formatos de


instrucción de un computador además Indica la longitud y formato de los
operandos (a veces en campos modificadores asociados al mismo), las
longitudes de los formatos son fracción o múltiplo del tamaño de la palabra
del computador. Para acortar la longitud de los formatos se utiliza
direccionamiento implícito: ninguna instrucción, salvo las de salto o
bifurcación, contiene la dirección de la siguiente instrucción que se va a
ejecutar.

2.7 Lenguaje maquina


El lenguaje máquina es el único lenguaje que puede ejecutar una computadora, es
específico en cada arquitectura, es un código que es interpretado directamente por
el microprocesador, está compuesto por un conjunto de instrucciones ejecutadas en
secuencia que representan acciones que la máquina podrá tomar.

El lenguaje máquina es el único que entiende directamente la computadora, utiliza


el alfabeto binario que consta de los dos únicos símbolos 0 y 1, denominados bits;
físicamente, se materializan con tensiones comprendidas entre 0 y 4.0 voltios y
entre 4 y 5 voltios, respectivamente. Para representar datos que contengan una
información se utilizan una serie de unos y ceros cuyo conjunto indica dicha
información.

Todo código fuente en última instancia debe llevarse a un lenguaje máquina


mediante el proceso de compilación o interpretación para que la computadora pueda
ejecutarlo.

El código máquina, o lenguaje de máquina, está formado por instrucciones sencillas,


que dependiendo de la estructura del procesador pueden especificar:

 Registros específicos para operaciones aritméticas, direccionamiento o


control de funciones.
 Posiciones de memoria específicas (offset).
 Modos de direccionamiento usados para interpretar operando.
Las instrucciones de máquina o instrucciones del computador son las que
determinan el funcionamiento de la CPU que las ejecuta, la CPU puede realizar una
diversidad de funciones que son el reflejo de la variedad de las instrucciones
definidas para dicha CPU, el programador tiene un repertorio de instrucciones como
medio para controlar la CPU.

Las operaciones más complejas se realizan combinando estas instrucciones


sencillas, que pueden ser ejecutadas secuencialmente o mediante instrucciones de
control de flujo.

Ventajas del Lenguaje Máquina.

 Posibilidad de cargar (transferir un programa a la memoria) sin necesidad de


traducción posterior, lo que supone una velocidad de ejecución superior a
cualquier otro lenguaje de programación.
Desventajas del Lenguaje Máquina.

 Dificultad y lentitud en la codificación.


 Poca fiabilidad.
 Gran dificultad para verificar y poner a punto los programas.
 Los programas solo son ejecutables en el mismo procesador (CPU).

INSTRUCCIONES.

Se denomina instrucción en informática al conjunto de datos insertados en una


secuencia estructurada o específica que el procesador interpreta y ejecuta.

Los tipos de instrucción permitidos están definidos y determinados dentro de


cada plataforma en el conjunto de instrucciones (en inglés ISA, instruction set
architecture), que también determina los registros de origen y destino de la CPU, y
en ocasiones un dato inmediato (aquellos que son especificados explícitamente en
la instrucción).

Estas instrucciones del computador son las que determinan el funcionamiento de


la CPU que las ejecuta. La CPU puede realizar una diversidad de funciones, que
son el reflejo de la variedad de las instrucciones definidas para dicha CPU.
El programador tiene un repertorio de instrucciones como medio para controlar la
CPU.

Normalmente una instrucción se divide en dos campos:

 Código de operación: Designa la operación que va a ser realizada.


En lenguaje ensamblador, se asigna a su valor numérico un mnemónico. Por
ejemplo, en el MIPS tenemos una instrucción con el código de operación
0224x en lenguaje ensamblador es la operación add.
 Datos de la operación: Dependiendo del tipo de instrucción, este campo
puede estar dividido en otros o ser único, incluso no existir. En él se suelen
indicar los registros y datos con los que trabajar.
CICLO DE UNA INSTRUCCIÓN

El procesamiento que requiere una instrucción se denomina ciclo de instrucción.

Un ciclo de instrucción es el período que tarda la unidad central de proceso (CPU)


en ejecutar una instrucción de lenguaje máquina. Comprende una secuencia de
acciones determinada que debe llevar a cabo la CPU para ejecutar cada instrucción
en un programa. Cada instrucción del juego de instrucciones de una CPU, puede
requerir diferente número de ciclos de instrucción para su ejecución. Un ciclo de
instrucción está formado por uno o más ciclos máquina.

La instrucción captada se almacena en un registro de la CPU conocido como


registro de instrucción. La instrucción se escribe utilizando un código binario que
especifica la acción que debe realizar la CPU.

 La CPU interpreta la instrucción y lleva a cabo la acción requerida. Pueden


ser de cuatro tipos:
 procesador-memoria.
 Procesador-E/S.
 Procesamiento de datos.
 Control
 CICLO DE CAPTACIÓN
Es la acción de leer una instrucción en la CPU y prepararla para su ejecución. Al
comienzo de cada ciclo de instrucción, la CPU capta una instrucción de memoria, la
CPU siempre incrementa el pc después de captar cada instrucción.

1. Buscar la instrucción en la memoria principal: Se vuelca el valor del


contador de programa sobre el bus de direcciones. Entonces la CPU pasa la
instrucción de la memoria principal a través del bus de datos al Registro de
Datos de Memoria (MDR). A continuación el valor del MDR es colocado en
el Registro de Instrucción Actual (CIR), un circuito que guarda la instrucción
temporalmente de manera que pueda ser decodificada y ejecutado.
2. Decodificar la instrucción: El decodificador de instrucción interpreta e
implementa la instrucción. El registro de instrucción (IR) mantiene la
instrucción en curso mientras el contador de programa (PC,program counter)
guarda la dirección de memoria de la siguiente instrucción a ser ejecutada

 CICLO DE EJECUCIÓN
Es el período de tiempo durante el cual un ordenador lee y procesa una instrucción
de lenguaje máquina de su memoria o la secuencia de acciones que la unidad
central (CPU) funciona para ejecutar cada instrucción de código de máquina en un
programa.

3. Ejecutar la instrucción: A partir del registro de instrucción, los datos que


forman la instrucción son decodificados por la unidad de control. Ésta
interpreta la información como una secuencia de señales de control que son
enviadas a las unidades funcionales relevantes de la CPU para realizar la
operación requerida por la instrucción.
4. Almacenar o guardar resultados: El resultado generado por la operación
es almacenado en la memoria principal o enviado a un dispositivo de salida
dependiendo de la instrucción. Basándose en los resultados de la operación,
el contador de programa se incrementa para apuntar a la siguiente
instrucción o se actualiza con una dirección diferente donde la próxima
instrucción será recogida.

CICLO DE UNA INSTRUCCIÓN BASICA


 CICLO DE INTERRUPCIÓN
Para permitir el uso de interrupciones se añade un ciclo de interrupciones al ciclo
de instrucción. En el ciclo de interrupción, el procesador comprueba si se ha
generado alguna interrupción, indicada por la presencia de una señal de
interrupciones.

 Suspende la ejecución del programa en curso y guarda su contexto. Esto


significa almacenar la dirección de la siguiente instrucción.
 Carga el contador del programa con la dirección de comienzo de una rutina
de gestión de interrupción.

CICLO DE UNA INSTRUCCIÓN CON INTERRUPCIONES


Unidad 3: memoria interna
3.1 Jerarquía de memoria
La jerarquía de memoria es la organización piramidal de la memoria en niveles que
tienen las computadoras.

El objetivo es conseguir el rendimiento de una memoria de gran velocidad al coste


de una memoria de baja velocidad, basándose en el principio de cercanía de
referencias.

Nivel Jerárquico.

Los niveles que componen la jerarquía de memoria habitualmente son:


Nivel 0: Registros del microprocesador o CPU
Nivel 1: Memoria caché
Nivel 2: Memoria primaria (RAM)
Nivel 3: Memorias flash
Nivel 4: Disco duro (con el mecanismo de memoria virtual)
Nivel 5: Cintas magnéticas (consideradas las más lentas, con mayor capacidad, de
acceso secuencial)
Nivel 6: Redes (actualmente se considera un nivel más de la jerarquía de
memorias).

Nivel 0: Registros del microprocesador o CPU

En arquitectura de ordenadores, un registro es una memoria de alta velocidad y


poca capacidad, integrada en el microprocesador, que permite guardar
transitoriamente y acceder a valores muy usados, generalmente en operaciones
matemáticas.

Tipos de registros:
 Registros de propósito general
 Registros de segmentos
 Registros de bandera
 Registros apuntadores

Nivel 1: Memoria caché

La memoria caché de un procesador, es un tipo de memoria volátil (como la


memoria RAM), pero muy rápida. Su función es almacenar instrucciones y datos a
los que el procesador debe acceder continuamente. ¿Cuál es su finalidad? Pues
que este tipo de datos sean de acceso instantáneo para el procesador, ya que se
trata de información relevante y que debe estar a la mano de manera muy fluida. Los
sistemas de hardware y software llamados caché, almacenan este tipo de datos
de manera duplicada y por esta razón su acceso es tan veloz.

Nivel 2: Memoria primaria (RAM)

La memoria de acceso aleatorio (Random Access Memory, RAM) se utiliza como


memoria de trabajo de computadoras y otros dispositivos para el sistema operativo,
los programas y la mayor parte del software. En la RAM se cargan todas las
instrucciones que ejecuta la unidad central de procesamiento (procesador) y otras
unidades del computador, además de contener los datos que manipulan los distintos
programas.
Se denominan «de acceso aleatorio» porque se puede leer o escribir en una
posición de memoria con un tiempo de espera igual para cualquier posición, no
siendo necesario seguir un orden para acceder (acceso secuencial) a la información
de la manera más rápida posible.
Durante el encendido de la computadora, la rutina POST verifica que los módulos
de RAM estén conectados de manera correcta. En el caso que no existan o no se
detecten los módulos, la mayoría de tarjetas madres emiten una serie de sonidos
que indican la ausencia de memoria principal. Terminado ese proceso, la
memoria BIOS puede realizar un test básico sobre la memoria RAM indicando fallos
mayores en la misma.

Nivel 3: Memorias flash


La memoria flash derivada de las siglas EEPROM permite la lectura y escritura de
múltiples posiciones de memoria en la misma operación. Gracias a ello, la
tecnología flash, mediante impulsos eléctricos, permite velocidades de
funcionamiento muy superiores frente a la tecnología EEPROM primigenia, que sólo
permitía actuar sobre una única celda de memoria en cada operación de
programación. Se trata de la tecnología empleada en los dispositivos
denominados memoria USB.

Nivel 4: Disco duro (con el mecanismo de memoria virtual)

La unidad de disco duro o unidad de disco rígido (en inglés: hard disk
drive, HDD) es el dispositivo de almacenamiento de datos que emplea un sistema
de grabación magnética para almacenar archivos digitales. Se compone de uno o
más platos o discos rígidos, unidos por un mismo eje que gira a gran velocidad
dentro de una caja metálica sellada. Sobre cada plato, y en cada una de sus caras,
se sitúa un cabezal de lectura/escritura que flota sobre una delgada lámina de aire
generada por la rotación de los discos. Es memoria no volátil.

Nivel 5: Cintas magnéticas (consideradas las más lentas, con mayor


capacidad, de acceso secuencial)

La cinta magnética es un tipo de medio o soporte de almacenamiento de datos que


se graba en pistas sobre una banda plástica con un material magnetizado,
generalmente óxido de hierro o algún cromato. El tipo de información que se puede
almacenar en las cintas magnéticas es variado, como vídeo, audio y datos.
Hay diferentes tipos de cintas, tanto en sus medidas físicas como en su constitución
química, así como diferentes formatos de grabación, especializados en el tipo de
información que se quiere grabar.
Nivel 6: Redes (actualmente se considera un nivel más de la jerarquía de
memorias).

Una red de computadoras (también llamada red de ordenadores o red informática)


es un conjunto equipos (computadoras y dispositivos), conectados por medio de
cables, señales, ondas o cualquier otro método de transporte de datos, para
compartir información (archivos), recursos (discos, impresoras, programas, etc.) y
servicios (acceso a una base de datos, internet, correo electrónico, chat, juegos,
etc.). A cada una de las computadoras conectadas a la red se le denomina un nodo.

3.2 Memoria cache


El objetivo de la memoria cache es lograr que la velocidad de la memoria sea lo más
rápido posible, consiguiendo al mismo tiempo un tamaño grande al precio de
memoria semiconductora menos costosas.

Transferen Transferen
cia de cia de
palabras bloques
Memoria
CPU Cache principal

La cache contiene una copia de partes de la memoria principal. Cuando el


procesador intenta leer una palabra de memoria, se hace una comprobación para
determinar si la palabra está en la cache. Si es así, se entrega dicha palabra al
procesador. Si no, un bloque de memoria principal, consiste en un cierto numero de
palabras, se transfiere a la cache y después la palabra es entregada al procesador.

Describe la estructura de un sistema de memoria cache/principal. La memoria


principal consta de hasta 2n palabra direccionales, teniendo cada palabra una única
dirección de n bits. Esta memoria se considera dividida en un numero de bloques
de longitud fija, de K palabras por bloque, la cache consta de C líneas, cada línea
contiene L palabras, mas una etiqueta de unos cuantos bits: denominándose
tamaño de línea al numero de palabras que hay en la línea. El número de líneas es
considerablemente menor que el numero de bloques de memoria principal.
Ilustra una operación de lectura. El procesador genera la dirección RA, de una
palabra a leer. Si la palabra esta en la cache, es entragada al procesador. Si no, el
boque que contiene dicha palabra se carga en la cache, y la palabra después es
llevada al procesador. Indica como estas dos ultimas operaciones se realizan en
paralelo y refleja la organización mostrada, que es típica en las organizaciones de
cache actuales. En ella , la cache conecta con el procesador mediante líneas de
datos, de control y de direcciones que las comunican con un bus del sistema a través
del cual se accede a la memoria principal. Cuando ocurre un fallo en la cache, la
dirección deseada se carga en el bus del sistema y el dato es llevado, a través del
buffer de datos, tanto a la cache como el procesador. En otras formas de
organización, la cache se interpone físicamente entre el procesador y la memoria.
INICIO

Recibe la
dirección RA
de la CPU

Acceso a la memoria
¿esta en la no
principal para obtener el
cache el
bloque que contiene a
bloque que
RA
contiene a RA
si Asignar línea de cache
Captar la para el bloque de
palabra RA y memoria principal
entregarla a la
CPU
Cargar el bloqueo Proporcionar la
de memoria palabra RA a la
principal en la CPU
línea de cache

hecho
Organización típica de la cache

ELEMENTOS DE DISEÑO DE LA CACHE

En esta sección se revisan los parámetros de diseño de la cache y se muestran


algunos resultados típicos. A veces nos referimos al uso de cache en el contexto de
la computación de altas prestaciones (HPC, high performance computing). La HPC
trata los supercomputadores y su programación, especialmente para aplicaciones
científicas que implican grandes cantidades de datos, cálculos con vectores y
matrices, y el uso de algoritmos paralelos.

TAMAÑO DE LA CACHE

Cuanto mas grande es, mayor es el numero de puertas implicadas en direccionar la


cache. El resultado es que caches grandes tienden a ser ligeramente lentas que las
pequeñas. El tamaño de la cache esta también limitado por las superficies
disponibles de chip y de tarjeta. Como las prestaciones de la cache son muy
sensibles al tipo de tarea, es imposible predecir un tamaño “optimo”.
FUNCIÓN DE CORRESPONDECIA

La elección de la función de correspondencia determina como se organiza la cache.


Pueden utilizarse 3 técnicas: directa, asociativa y asociativa por conjuntos:

 Correspondencia directa: consiste en hacer corresponder cada bloque de


memoria principal a solo una línea posible de cache. La correspondencia se
expresa como:

I=j modulo m

Donde

I= número de línea de cache

J = numero de bloque de memoria principal

M = número de líneas en la cache

 Correspondencia asociativa: supera la desventaja de la directa,


permitiendo que cada bloque de memoria principal puede cargarse en
cualquier línea de la cache.
 Correspondencia asociativa por conjuntos: es una solución de
compromiso que recoge lo positivo de las correspondencias directa y
asociativa, sin presentar desventajas. En este caso la cache se divide en V
conjuntos, cada uno en K líneas. Las relaciones que se tienen son:

M=vxk

I = j modulo v

Donde

I = numero de conjunto de cache

J = numero de bloque de memoria principal

M = número de líneas de la cache

ALGORITMOS DE SUSTITUCION
Una vez llenado la cache, para introducir un nuevo bloque debe sustituirse uno
de los bloques existentes. Para el caso de correspondecia directa, solo hay una
posible línea para cada bloque particular y no hay elección posible. Para las
tecnicas asociativas se requieren algoritmos de sustitución. Para conseguir alta
velocidad, tales algoritmos deben implementarse en hardware. Se han probado
diversos algoritmos: el mas efectivo es probablemente el denominado
(LRU:utilizado menos recientemente): se sustituye el bloque que se ha
mantenido en la cache por mas tiempo sin haber sido referenciado. Otra
posibilidad es (FIFO: primero en entrar y primero en salir): se sustituye aquel
bloque del conjunto que ha estado mas tiempo en la cache. Otra posibilidad es
(LFU: utilizado menos frecuentemente): se sustituye aquel bloque del conjunto
que ha experimentado menos referencias.

POLÍTICA DE ESCRITURA

Hay 2 casos a considerar cuando se ha de reemplazar un bloque de la cache.


Si el bloque antiguo de la cache no debe ser modificado, puede sobrescribirse
con el nuevo bloque sin necesidad de actualizar el antiguo. Si se ha realizado al
menos una operación de escritura sobre una palabra de la línea correspondiente
de la cache, entonces la memoria principal debe actualizarse, rescribiendo la
línea de cache en el bloque de la memoria antes de transferir el nuevo bloque

La técnica más sencilla se denomina escritura inmediata, utilizando esta


técnica, todas las operaciones de escritura se hacen tanto en cache como en
memoria principal, asegurando que el contenido de la memoria principal siempre
es válido. Una técnica alternativa, conocida como postescritura, minimiza las
escrituras en memoria. Con la postescritura, las actualizaciones se hacen solo
en la cache.

TAMAÑO DE LINEA

Otro elemento de diseño es el tamaño de línea. Cuando se recupera y ubica en


cache un bloque de datos, se recuperan no solo la palabra deseada sino además
algunas palabras adyacentes. A medida que aumenta el tamaño de bloque, la
tasa de aciertos primero aumenta debido al principio de localidad. Dos efectos
concretos entran en juego:

--bloques mas grandes reducen el numero de bloques que caben en la cache.


Dado que cada bloque captado se escribe sobre contenidos anteriores de la
cache, un numero reducido de bloques da lugar a que se sobrescriban datos
poco después de haber sido captados.

--a medida que un bloque se hace mas grande, cada palabra adicional esta mas
lejos de la requerida y por tanto es mas improbable que se necesario a corto
plazo.

NUMERO DE CACHES

Cuando se introdujeron originalmente las caches, un sistema tenia normalmente


solo una cache. Mas recientemente, se ha convertido en una norma el uso de
multiples caches. Hay 2 aspectos de diseño relacionados con este tema que son
el numero de niveles de cache, y el uso de cache unificada frente al de caches
separadas.

CACHES MULTINIVEL: con el aumento de densidad de integración, ha


sido posible tener una cache en el mismo chip del procesador: cache on-
chip. Reduce la actividad del bus externo del procesador y por tanto reduce
los tiempos de ejecución e incrementa las prestaciones globales del
sistema. Cuando la instrucción o el dato requeridos se encuentran en la
cache on-chip, se elimina el acceso al bus.
CACHE UNIFICADA FRENTE A CACHES SEPARADAS: cuando hicieron
su aparición las caches on-chip, muchos de los diseños contenían una sola
cache para almacenar las referencias tanto a datos como a instrucciones.

Una cache unificada tiene varias ventajas potenciales:

--para un tamaño dado de cache, una unificada tiene una tasa de aciertos mayor
que una cache partida, ya que nivela automáticamente la carga entre captación
de instrucciones y de datos.

NIVELES DE LA CACHE
 Nivel 1: Esta memoria cache es extremadamente rápida pero relativamente
pequeña y hoy día se encuentra integrada en el CPU (años atrás podía o no
estar integrada en el CPU). Todas las instrucciones se buscan primero aquí, si
no están presentes entonces se procede al siguiente nivel.
 Nivel 2: Esta memoria cache es considerablemente más grande que L1 y
también está dentro del CPU (años atrás no lo estaba). Si las instrucciones no
fueron encontradas en el Nivel L1 entonces se buscan en este Nivel L2, este
tipo de memoria no es tan rápida como la usada en L1 por tanto es de esperar
un poco de latencia (demora).
 Nivel 3: Este es un nivel de memoria especializada que ayuda a mejorar el
rendimiento de los Niveles de Cache L1 y L2. Es mucho más lenta que la
memoria L1 o L2, pero mucho más rápida que la memoria RAM del Sistema.
En el caso de los Procesadores con muchos Cores, cada uno de ellos tiene su
propio Cache L1 y Cache L2, pero, todos comparten el mismo Cache L3.
Cuando una instrucción es buscada en L3 se eleva a un cache de un nivel más
alto
3.3 Memoria primaria

La memoria interna hace referencia a aquella memoria que es fundamental para el


funcionamiento de la computadora y que se encuentra alojada en la placa madre.
La memoria interna está constituida por la memoria RAM y la memoria ROM.

Suele llamarse "memoria interna" porque, a diferencia de la memoria secundaria o


externa, estas memorias no pueden extraerse fácilmente por usuarios no técnicos;
además están ubicadas en los componentes más "internos" de una computadora.
Además son las únicas memorias que son accedidas de forma directa por la CPU a
través de buses de memoria.

Memorias de semiconductores

Desde 1972 el tipo de memoria universalmente empleada


como memoria principal es la memoria de semiconductores.
Las memorias de semiconductores almacenan la información
en forma electrónica, mediante circuitos simples, que pueden
ser construidos automáticamente y en forma masiva con la
cada vez más sofisticada tecnología de integración de gran
escala. Lamentablemente, éstas memorias son volátiles. Dado que almacenan
la información electrónicamente, al quitarse la alimentación la misma se pierde.

Todas las memorias que se considerarán son de direccionamiento cableado y, por


lo tanto, son de acceso aleatorio.
Se puede establecer la siguiente clasificación:

 De lectura y escritura o RAM


o Estáticas (SRAM)
o Dinámicas o con refresco (DRAM)
 De sólo lectura ROM

3.3.1 Memoria ROM


Las memorias ROM almacenan habitualmente información pregrabada por el
fabricante y que no puede ser modificada por el usuario. (Ejemplos típicos son los
intérpretes Basic, los juegos de los family game, las rutinas del iocs, etc.)

Este tipo de memorias tiene dos ventajas fundamentales:

a) su gran velocidad de acceso


b) su no volatilidad (no se "borra" al apagar la computadora)

Es muy simple imaginarse la estructura de una memoria ROM. Supongamos tener


que generar la siguiente secuencia de valores:
Que aunque es un simple contador de 0 a 9 (FIG. 1), puede ser considerada (con
un poco de imaginación), una serie de instrucciones de un programa.
Supongamos además que disponemos de una malla de conductores eléctricos como
la de la FIG. 2: donde los puntos de cada intersección indican que los conductores
horizontales y verticales están físicamente conectados.
Si por algún procedimiento eliminamos adecuadamente "algunas" de estas
conexiones físicas, podemos obtener la malla siguiente.

PROM:(Programable Read Only Memory):

Se puede advertir que, si alimentamos un "1" (por ej. 5 volts) en las "salidas" S0 S1
S2 S3 obtendremos la secuencia de "1" de nuestro contador (programa).

Este es el principio de generación de una memoria ROM; basándonos en una matriz


(malla original de conductores), como lo nuestra la figura de la página anterior, el
programador "quema" o elimina los enlaces no necesarios, con el fin de obtener a
la salida una secuencia predeterminada con el simple método de alimentar
sucesivamente cada una de las entradas.
Existen equipos simples para la programación de memorias ROM, normalmente
asociados a un microprocesador que facilita la operación.

Son ROMs programables, es decir suministradas vírgenes (todas las posiciones en 0


o en 1). Son grabadas por el usuario mediante un equipo especial, convirtiéndose
en ROMs, ya que sólo pueden grabarse una sola vez. Son unitariamente más caras
que las ROMs pero dan una flexibilidad que estas no tienen.

EPROM: (Erasable Programable Read Only Memory)

Son ROMs programables y borrables. Son más caras que las PROM, pero pueden
borrarse y volver a grabarse. El borrado se hace sacando los chips de sus zócalos
en las plaquetas de memoria y exponiéndolos a luz ultravioleta de alta intensidad
durante 15 o 20 minutos. Son muy útiles cuando el software que se carga en ella
está en etapa de desarrollo. Desde el punto de vista de la computadoras son ROMs
ya que esta solo puede leer y no escribir en ellas.

EEPROM: (Electricaly Erasable Programable Read Only Memory).

Similar a la EPROM pero pueden ser borradas mediante elevadas


corrientes y reprogramadas en milisegundos.

Organización avanzada de memoria DRAM

1.- DRAM Asíncrona.


En un principio, las DRAM Asíncronas fueron el soporte de
almacenamiento temporal de la mayoría de los ordenadores modernos. Tal
y como su nombre lo indica, este tipo de memoria es asíncrono, lo que no
implica que no tenga reloj, sino que la relación con el reloj del sistema no
es “1:1”, y en consecuencia, existen estados de espera por parte del
procesador, así como divisores de frecuencia, etc. para la memoria.
Actualmente se usan muy poco las DRAM Asíncronas, aun así tenemos la
siguiente clasificación:

o DRAM Convencional. Este tipo de memoria obsoleta hoy en día,


fue la precursora de la memoria DRAM en modo ráfaga, y su
direccionamiento es estándar, ya que primero envían la parte de la
dirección a la fila, y luego de cierto tiempo la parte correspondiente
a la columna, actualmente es usada con fines didácticos por su
simplicidad.

o FPM DRAM. Es el acrónimo de “Fast Page Mode DRAM”, y se


trata de un estándar más rápido que la DRAM convencional.
Básicamente, mejora el tiempo de acceso al trabajar con páginas, es
decir, con datos que están en la misma fila, ya que primero se fija la
fila donde estén los datos que se desean, y después en el mínimo
tiempo posible se hace variar el valor de las columnas para que la
memoria vaya entregando los datos de la página, destacar que en la
actualidad este tipo de memoria no es usada, dado que su frecuencia
máxima de funcionamiento esta alrededor de los 66 MHz.

2. DRAM Síncrona.
Las altas frecuencias de trabajo de los actuales procesadores han obligado a
las memorias a dar un salto importante en cuanto a velocidad se refiere, ya
que de nada sirve tener procesadores tan rápidos si se generan ciclos de
espera en la memoria, lo que da origen a los conocidos “cuellos de botella”.
Como respuesta a esta situación se han desarrollado las memorias SDRAM
cuya característica distintiva es soportar en factores de multiplicación la
frecuencia de los procesadores, proveyéndoles de un bus rápido y fiable.
Entre las distintas tecnologías desarrolladas siguiendo este principio
tenemos:

o DDR SDRAM. Acrónimo de Double Data Rate DRAM. Conocida


también como SDRAM II, es una de las memorias SDRAM más
rápida. Ya que su funcionamiento está basado en aprovechar de
forma síncrona tanto el flaco de subida como el de bajada de un
mismo impulso de reloj, para ejecutar las operaciones solicitadas.

o DDR DRDRAM. Siglas cuyo significado es DDR Direct


Rambus DRAM. Se trata de un nuevo sistema de memoria
desarrollado por las compañías INTEL y RAMBUS, que incorpora
un bus de direcciones, datos y control propio, de alta velocidad que
le permite funcionar en un rango de velocidad superior a los 800
MHz. Destacar que este sistema resulta incompatible con la logica
convencional y al igual que la memoria DDR DRAM aprovecha los
flancos de subida y de bajada de un pulso de reloj para mejorar su
eficacia.

o DDR SLDRAM. Estas siglas son empleadas para


DDR Asynchronous Link DRAM. Sistema de memoria desarrollado
por un consorcio internacional de 12 empresas, cuya tecnología se
basa en ampliar la arquitectura de la SDRAM de 4 a 16 módulos, y
que al igual que la DDR DRDRAM cuenta con su propio bus de
direcciones, datos y control para mejorar sus prestaciones. Dado
que sus características son similares a la tecnología desarrollada por
INTEL y RAMBUS la guerra por ganar el mercado de las memoria
principal está servida, y de momento el consorcio que ha
desarrollado la DDR SLDRAM no exige el pago de “royalties” por
el uso de esta tecnología, mientras que por el uso de la DDR
DRDRAM si hay que pagar “derechos de uso”.

3.3.2 Memoria RAM

I) RAM ESTÁTICAS (SRAM). MEMORIAS BIESTABLES

El componente elemental de las memorias biestables (capaz de almacenar un bit)


es el Flip-Flop (FF), un dispositivo electrónico que es a su vez un elemento
ampliamente utilizado en las computadoras en su conjunto, especialmente en
los registros.

Si bien existen varios tipos de FF, consideraremos solo uno de ellos, que utilizaremos
en nuestras futuras descripciones: el Flip-Flop R-S.

El diagrama básico de un FF de este tipo es el que muestra la figura.


Este circuito tiene, como observamos, dos entradas y dos salidas, aunque como
veremos, estas últimas son sólo distintas expresiones de una misma cosa.
En efecto, la salida, en realidad, es solo a; la otra salida b es su negación (o
complemento lógico); o sea: cuando b vale 1, a vale 0, y viceversa.
Aunque parezca a priori absurdo contar con estas salidas redundantes, su
importancia en el diseño es fundamental.
La tabla de funcionamiento de este tipo de Flip-Flop se muestra en la figura.

Los valores de a y b en (1) indican que mientras no exista un pulso en algunas de


las entradas, el FF mantendrá su estado.
Los asteriscos en (2) indican que esta es una situación prohibida, cuyo resultado es
impredecible.
La entrada S se denomina así por la palabra inglesa Set. Un 1 lógico en esta entrada
(identificado por un pulso normalmente positivo) hace que la salida a tome el valor
1, consecuentemente b = 0. Utilizando un divulgado anglicanismo, diremos que
hemos sesteado el bit; en la práctica hemos grabado un 1 en dicho bit, el cual no se
borrará al desaparecer la entrada de Set (pero sí en caso de quitarse alimentación
al circuito).
La entrada R se denomina así por la palabra inglesa Reset. Un 1 lógico en esta
entrada hace que la salida b tome el valor 1 (y a = 0). Diremos entonces que hemos
reseteado el bit, o sea hemos grabado un cero.
En el momento de producirse una entrada (S o R) en el FF, su salida adopta su
estado en forma prácticamente instantánea. Las memorias biestables son las más
rápidas que consideramos.

Para el siguiente gráfico ingrese los posibles valores (0 y 1) en los casilleros S y R y


luego presione el botón ingresar y se observará los resultados en las casillas
correspondientes en a y b.

II) RAM Dinámicas. (DRAM)

El componente elemental (capaz de almacenar un bit de información) es un


condensador (capacitor) que denominaremos celda capacitiva o celda.
El contenido de información de cada celda queda determinado por la carga del
capacitor: una tensión de 0 a 6 volts representa un cero, mientras que 6 a 12 volts
indicará un uno lógico.

Una de las características fundamentales de los capacitores es que pierden su carga


con el tiempo. Si no se tomara en cuenta este fenómeno, la información almacenada
iría "borrándose", haciéndola por lo tanto absolutamente no confiable. El proceso
destinado a mantener en un nivel adecuado el nivel de carga de celda se denomina
refresco.

Cada vez que se efectúa un acceso a una celda (para lectura o grabación) se realiza
el refresco de esa posición. Pero no es suficiente, dado que ciertas posiciones de
memoria pueden no ser accedidas por largo tiempo y, por lo tanto se necesita un
proceso adicional de refresco. Mediante este proceso, cada celda es refrescada a
breves intervalos de tiempo.
La figura muestra las curvas características de carga (grabación de un 1) y de
descarga (grabación de un 0) en una celda.

Una celda de memoria RAM dinámica es más simple que una estática y por lo tanto
más pequeña. Por lo tanto, la RAM dinámica es más densa (más celdas por unidad
de superficie) y más barata que la correspondiente SRAM. Por otra parte una DRAM
requiere de una circuitería para el refresco. En memorias grandes, el coste fijo de la
circuitería de refresco se ve más que compensado por el menor costo de las celdas
DRAM. Así, las DRAM son preferidas para memorias grandes. Un último detalle es
que las SRAM son generalmente algo más rápidas que las DRAM.

3.4 Memoria secundaria

Vous aimerez peut-être aussi