tarea 2 mapa mental int,mod dir,mem and reg

79
Tarea 2 INVESTIGA QUE SON LOS REGISTROS INTERNOS, LA MEMORIA, INTERRUPCIONES Y MODOS DE DIRECCIONAMIENTO EN UNA COMPUTADORA Y ELABORA UN MAPA MENTAL. Punt os Criterio Indicador Nivel excelente 4 Nivel bueno 3 Nivel regular 2 Ideas principales y secundarias Contiene el tema central y todas las ideas primarias y secundarias relevantes. Contiene el tema central y la mayoría de las ideas primarias y secundarias relevantes. Contiene el tema central, la mayoría de las ideas primarias y solamente algunas Secundarias. F p s Ortografía y redacción No tiene errores de ortografía, y la redacción es clara, precisa y pertinente. Tiene menos de tres errores de ortografía, y la redacción es clara, precisa y pertinente. Tiene menos de cuatro errores de ortografía, y la redacción es clara, precisa y pertinente. T s o r p e c Relaciona ideas principales y secundarias Identifica todas las ideas primarias y secundarias importantes y establece de manera correcta las relaciones entre éstas. Identifica las ideas primarias y secundarias importantes, pero tiene pocos errores en las relaciones entre éstas. Identifica las ideas primarias y secundarias importantes, pero realiza algunas relaciones entre éstas de manera incorrecta. E r l p s m

Upload: emmanuellobo

Post on 28-Jul-2015

469 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Tarea 2 mapa mental int,mod dir,mem and reg

Tarea 2

INVESTIGA QUE SON LOS REGISTROS INTERNOS, LA MEMORIA, INTERRUPCIONES Y MODOS DE DIRECCIONAMIENTO EN UNA COMPUTADORA Y ELABORA UN MAPA MENTAL.

Puntos

Criterio Indicador

Nivel excelente

4

Nivel bueno

3

Nivel regular

2

Ideas principales y secundarias

Contiene el tema central y todas las ideas primarias y secundarias relevantes.

Contiene el tema central y la mayoría de las ideas primarias y secundarias relevantes.

Contiene el tema

central, la mayoría de

las ideas primarias y

solamente algunas

Secundarias.

Faltan ideas

primarias y

secundarias

Ortografía y redacción

No tiene errores de ortografía, y la redacción es clara, precisa y pertinente.

Tiene menos de tres errores de ortografía, y la redacción es clara, precisa y pertinente.

Tiene menos de cuatro errores de ortografía, y la redacción es clara, precisa y pertinente.

Tiene menos de seis errores de ortografía y la redacción es pertinente, sin embargo no es clara.

Relaciona ideas principales y secundarias

Identifica todas las

ideas primarias y

secundarias

importantes y

establece de manera correcta las relaciones entre éstas.

Identifica las ideas primarias y secundarias importantes, pero tiene pocos errores en las relaciones entre éstas.

Identifica las ideas primarias y secundarias importantes, pero realiza algunas relaciones entre éstas de manera incorrecta.

Establece muchas relaciones entre las ideas primarias y secundarias de

manera incorrecta.

ImágenesUtiliza imágenes acordes al tema, las cuales ejemplifican claramente y son acordes al tema

Utiliza imágenes acordes al tema, las cuales ejemplifican claramente y son acordes al tema

Presenta un mapa mental el cual no contiene imágenes,

Disponible en: Wednesday, 29 de August de 2012, 14:15Fecha de entrega:

Thursday, 6 de September de 2012, 14:15

Page 2: Tarea 2 mapa mental int,mod dir,mem and reg

Fundamentos de Lógica DigitalL U N E S , 1 9 D E N O V I E M B R E D E 2 0 0 7

Suplemento # 4a: Las instrucciones del µP 8086

Todo microprocesador, desde el primero que hizo su aparición hasta los más

complejos en la actualidad, desde el momento en que es puesto a la venta es

entregado con un conjunto de instrucciones en lenguaje de máquina en las cuales se

detallan las operaciones que el microprocesador es capaz de hacer. En cada versión

nueva de microprocesador la primera prioridad es aumentar el número de

instrucciones disponibles para ofrecer más opciones de programación al programador.

Aunque pudiera parecerle a muchos un ejercicio inútil la familiarización con el

conjunto de instrucciones de las operaciones que puede llevar a cabo cualquier

microprocesador, es de enorme interés el estar familiarizados con el conjunto

"primitivo" de las instrucciones de los primeros microprocesadores que aparecieron

en el mercado por una razón muy sencilla:todas las instrucciones de cada

microprocesador se han ido incorporando dentro del conjunto de instrucciones del

nuevo modelo que lo reemplaza. Esto se debe a una característica impuesta por los

consumidores: la demanda de algo conocido como upward compatibility.

Esencialmente, esto consiste en el hecho de que una de las grandes inversiones en

cualquier computadora personal de escritorio son los programas que se van a ejecutar

en ella. A nadie le gusta invertir mucho dinero en la adquisición de programas para

utilizar procesadores de palabras como Microsoft Word o hacer diseños gráficos como

Page 3: Tarea 2 mapa mental int,mod dir,mem and reg

AutoCAD si dichos programas no se podrán correr en las nuevas computadoras que

vayan saliendo al mercado. Esto prácticamente exige a los fabricantes de los

microprocesadores continuar incorporando dentro de sus nuevos modelos la

capacidad para poder "entender" las instrucciones que podían ser "entendidas" por los

modelos previos, ya que de no ser así basta una sola instrucción ausente para poder

inutilizar potencialmente una inversión de cientos o quizá miles de dólares en

"software". Es por esto que es de enorme interés el lograr una familiarización con los

conjuntos de instrucciones de los microprocesadores más sencillos, puesto quien no

logra tal cosa menos podrá comprender los nuevos conjuntos de instrucciones mucho

más amplios y mucho más complejos de los microprocesadores de la actualidad.

Para poder entender el significado del conjunto de instrucciones del microprocesador

8086 es necesario tomar conocimiento de algunos detalles internos a la arquitectura

de este microprocesador. Lo más importante es que el 8086 posee varios registros de

almacenamiento, construídos cada uno de ellos con 16 flip-flops:

Estos registros pueden ser clasificados en cuatro categorías: el registro de las

Page 4: Tarea 2 mapa mental int,mod dir,mem and reg

banderas(flags), los ocho registros de propósito

general (AX, BX, CX, DX, SI, DI, BP y SP, cada uno de 16 bits), el puntero de

instrucciones IP, y los registros de segmentos (CS,DS, ES y SS).

El problema principal en utilizar únicamente 16 bits para "domiciliar" cada dato

contenido en una memoria RAM es que con 16 bits solo se pueden especificar 65,536 (

= 2n = 216 ) localidades diferentes de memoria RAM con todas las combinaciones

posibles de "unos" y "ceros" que permite una palabra de 16 bits. Los registros de

segmentos son utilizados para un ingenioso esquema de adición de "segmentos" de

bits al domicilio básico de 16 bits mediante estos registros especiales, esquema

manejado por el microprocesador 8086 con el propósito de poder "domiciliar" más de

65,536 bytes cuando se cuenta únicamente con registros de 16 bits para ello, esto es,

cuando se requiere "domiciliar" para la ejecución de cualquier programa decente una

cantidad de memoria RAM mucho mayor que la que normalmente podría "domiciliar"

un microprocesador limitado al uso de palabras binarias con una extensión de 16 bits.

El proceso de ampliación del espacio de memoria "domiciliable" se puede bosquejar

en su esencia más sencilla de la siguiente manera:

Es así como en las primeras computadoras personales de escritorio no hubo ninguna

dificultad para que el microprocesador 8086 pudiese manejar memorias RAM con una

capacidad de un millón de localidades diferentes (1 millón 48 mil 576 para ser

Page 5: Tarea 2 mapa mental int,mod dir,mem and reg

exactos) ó 1 Megabytes, con cada localidad almacenando un byte (8 bits) de

información:

Generalmente hablando, el registro de las banderas no tiene como objetivo el ser

accesado directamente por el programador del microprocesador; estas "banderas" son

"izadas" (puestas en "1") cuando ocurre alguna condición especial, por ejemplo

cuando el resultado de alguna operación aritmética es cero, lo cual iza la "bandera de

cero" o zero flagponiéndo dicho registro en el estado "1". La posición relativa de cada

una de las "banderas" en este registro es la siguiente:

Las "banderas" guardadas por el registro son las siguientes:

O = Overflow flag (bandera de sobreflujo)

D = Direction flag (bandera de dirección)

T = Trap flag (bandera de trampa)

S = Sign flag (bandera de signo aritmético)

Page 6: Tarea 2 mapa mental int,mod dir,mem and reg

Z = Zero flag (bandera de cero)

A = Auxiliary Carry flag (bandera de "llevar" auxiliar)

C = Carry flag (bandera de "llevar")

El registro AX en el microprocesador es el registro mejor conocido en las

computadoras convencionales como el acumulador. Siempre está involucrado cuando

se llevan a cabo las operaciones de multiplicación y división, y también es el registro

más eficiente de utilizar cuando se llevan a cabo ciertas operaciones aritméticas,

lógicas, y de movimiento de datos.

El registro BX puede ser utilizado como puntero hacia localidades de la memoria

RAM.

La especialidad del registro CX es contar.

El registro DX es el único registro en el microprocesador 8086 que puede ser

utilizado como un puntero hacia domicilios relacionados con las unidades

de Entrada/Salida(Input/Output) con las instrucciones IN y OUT.

El registro SP es el conocido como el puntero hacia la pila (stack pointer).

A continuación se presenta el conjunto de instrucciones disponibles dentro de dos de

los primeros grandes microprocesadores "abuelos", el microprocesador 8086 y el

microprocesador 8088, junto con las descripciones que les fueron dadas

originalmente. Es importante señalar que este conjunto de instrucciones está dado en

las mnemónicas(abreviaturas de fácil memorización) que fueron dadas por los

fabricantes, porque a fin de cuentas todas estas instrucciones en realidad son

instrucciones en lenguaje de "unos" y "ceros", y para poder convertir un programa

escrito con estas mnemónicas a un programabinario que la máquina pueda correr

directamente es necesario utilizar la ayuda de un lenguaje ensamblador (assembler):

aaa

ASCCI adjust after addition

Page 7: Tarea 2 mapa mental int,mod dir,mem and reg

aad

ASCII adjust before division

aam

ASCII adjust after multiplication

aas

ASCII adjust after subtraction

adc

add with carry

add

add without carry

and

logical AND

call target

call procedure

cbw

convert byte to word

clc

clear carry flag

cld

clear direction flag

cli

clear interrupt flag

cmc

complement carry flag

cmp destination, source

compare

cmps source, destination

Page 8: Tarea 2 mapa mental int,mod dir,mem and reg

compare strings

cmpsb

compare string bytes

cmpsw

compare string words

cwd

convert word to doubleword

daa

decimal adjust after addition

das

decimal adjust after subtraction

dec destination

decrement

div source

unsigned divide

esc immediate, source

escape

hit

halt

idiv source

signed integer divide

imul source

signed integer multiply

in accumulator, port

input from port

inc destination

increment

Page 9: Tarea 2 mapa mental int,mod dir,mem and reg

ins destination, port

input from port to string

insb

input from port to string byte

insw

input from port to string word

int immediate

call interrupt service routine

into

interrupt on overflow

iret

interrupt return

ja

jump if above; (carry flag = 0) and (zero flag = 0)

jae

jump if above or equal; (carry flag = 0)

jb

jump if below (carry flag = 1)

jbe

jump if below or equal; (carry flag = 1) or (zero flag = 1)

jc

jump if carry; (carry flag = 1)

jcxz

jump if register cx equals 0

je

jump if equal; (zero flag = 1)

jg

jump if greater; (sign flag = overflow flag) and (zero flag = 0)

Page 10: Tarea 2 mapa mental int,mod dir,mem and reg

jge

jump if greater or equal; (sign flag = overflow flag)

jl

jump if less; (sign flag less than or greater than overflow flag)

jle

jump if less or equal; (sign flag less than or greater than overflow flag) or (zero flag =

1)

jna

jump if not above (carry flag = 1) or (zero flag = 1)

jnae

jump if not above or equal (carry flag = 1)

jnb

jump if not below; (carry flag = 0)

jnbe

jump if not below or equal; (carry flag = 0) and (zero flag = 0)

jnc

jump if not carry; (carry flag = 0)

jne

jump if not equal; (zero flag = 0)

jng

jump if not greater; (sign flag less than or greater than overflow flag) or (zero flag =

1)

jnge

jump if not greater or equal; (sign flag less than or greater than overflow flag)

jnl

jump if not less; (sign flag = overflow flag)

jnle

jump if not less or equal; (sign flag = overflow flag) and (zero flag = 0)

Page 11: Tarea 2 mapa mental int,mod dir,mem and reg

jno

jump if not overflow; (overflow flag = 0)

jnp

jump if not parity; (parity flag = 0)

jns

jump if not sign; (sign flag = 0)

jnz

jump if not zero; (zero flag = 0)

jo

jump if overflow; (oveflow flag = 1)

jp

jump if parity; (parity flag =1)

jpe

jump if parity even; (parity flag = 1)

jpo

jump if parity odd; (parity flag = 0)

js

jump if sign; (sign flag = 1)

jz

jump if zero; (zero flag = 1)

jump target

jump unconditionally

lahf

load (some) flags into register ah

lds register, source

load pointer and register ds

lea register, source

Page 12: Tarea 2 mapa mental int,mod dir,mem and reg

load effective address

les register, source

load pointer and register es

lock

lock the bus

lod source

load string

lodsb

load string byte

lodsw

load string word

loop target

loop on register cx

loope target

loop on register cx while equal

loopz target

loop on register cx while zero flag = 1

loopne target

loop on register cx while not equal

loopnz target

loop on register cx while zero flag = 0

mov destination, source

move data

mov destination, source

move string

movsb

move string byte

Page 13: Tarea 2 mapa mental int,mod dir,mem and reg

movsw

move string word

mul source

unsigned multiplication

neg destination

two's complemente negation

nop

no operation

not destination

one's complement negation

or destination, source

logical OR

out port, accumulator

output to port

outs port, source

output from string to port

outsb

output from string byte to port

outsw

ountput from string word to port

pop destination

pop from stack

popf

pop flags

push source

push onto stack

pushf

push flags

Page 14: Tarea 2 mapa mental int,mod dir,mem and reg

rcl destination, count

rotate through carry-left

rcr destination, count

rotate through carry-right

rep string instruction

repeat

repe string instruction

repeat while equal

repz string instruction

repeat while zero flag = 1

repne string instruction

repeat while not equal

repnz string instruction

repeat while zero flag = 0

ret immediate

return

retf immediate

return far

retn immediate

return near

rol destination, count

rotate left

ror destination, count

rotate right

sahf

store ah register to flags register

sal destination, count

Page 15: Tarea 2 mapa mental int,mod dir,mem and reg

shift arithmetic left

sar destination, count

shift arithmetic right

sbb destination, source

subtract integers with borrow

scasb destination

scan string

scasw

scan string word

shl destination, count

shift left

shr destination, count

shift right

stc

set carry flag

std

set direction flag

sti

set interrupt-enable flag

stos destination

store string

stosb

store string byte

stosw

store string word

sub destination, source

subtract

Page 16: Tarea 2 mapa mental int,mod dir,mem and reg

test destination, source

test bits

wait

wait until not busy

xchg destination, source

exchange

xlat source

translate from table

xlatb

translate from table

xor destination, source

exclusive OR

Varias de estas instrucciones prácticamente delatan la arquitectura del

microprocesador. Las instrucciones shl (shift left) y shr (shift right) delatan la

presencia de un registro de desplazamiento en ambas vías, que puede ser capaz de ir

desplazando una palabra binaria bit-por-bit ya sea hacia la izquierda o hacia la

derecha. Por otro lado, las instrucciones popy push revelan que se puede operar una

pila de datos desde del microprocesador.

A manera de ejemplo de cómo se usan estas instrucciones para ir forjando un

programa elaborado para este microprocesador 8086 de Intel, tenemos el siguiente

fragmento escrito en algún lenguaje ensamblador como Turbo Assembler:

...

mov ah,0

mov al,ah

inc al

...

en donde la primera instrucción mov "carga" el registro AH con el valor de 0 (o mejor

dicho, con el byte de cero, "00000000"), con la segunda instrucción mov se copia el

valor almacenado en el registro AH al registro AL, y tras esto incrementa en una

unidad el contenido del registro AL con la instrucción inc. El resultado final nos deja

Page 17: Tarea 2 mapa mental int,mod dir,mem and reg

ambos registrosAL y AH "cargados" con el valor 00000000, "limpiando" ambos

registros a cero. (La instrucción mov en realidad debería haberse llamado copy,

porque el contenido tomado del registro original no es removido de dicho registro.)

Aquí tenemos otro ejemplo:

...

mov ax,5

mov dx,9

add ax,dx

...

Este pequeño fragmento "carga" el registro AX con el número 5 (o mejor dicho, con el

número binario 00000101), tras lo cual "carga" el registro DX con el número 9 (o

mejor dicho, con el número binario 00001001), y en la tercera instrucción suma los

contenidos en ambos registros dejando el resultado en el registro AX. En castellano,

esto ser resumiría como "poner al acumulador en el estado 5 (cargar sus flip-flops con

el equivalente binario del número 5), "poner al registro dx en el estado 9", "y sumar el

contenido del registro DX al contenido del acumulador dejando el resultado en el

acumulador".

REGISTROS DEL PROCESADOR

Los registros del procesador se emplean para controlar instrucciones en ejecución, manejar direccionamiento de memoria y proporcionar capacidad aritmética. Los registros son direccionables por medio de un nombre. Los bits por convención, se numeran de derecha a izquierda, como en:

... 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Los registros internos del procesador se puede clasificar en 6 tipos diferentes 

Page 18: Tarea 2 mapa mental int,mod dir,mem and reg

1. Registros de segmento2. Registros de propósito general3. Registros de apuntadores4. Registros de banderas5. Registros de Puntero de instrucción6. Registros de Pila

Registros de segmento 

Un registro de segmento tiene 16 bits de longitud y facilita un área de memoria para direccionamiento conocida como el segmento actual.

Registro CS. El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección de segmento, mas un valor de desplazamiento en el registro apuntador de instrucción (IP), indica la dirección de una instrucción que es buscada para su ejecución.

Registro DS. La dirección inicial de un segmento de datos de programa es almacenada en el registro DS. En términos sencillos, esta dirección, mas un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un byte especifico en el segmento de datos.

Registro SS. El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de inicio del segmento de pila de un programa en le registro SS. Esta dirección de segmento, mas un valor de desplazamiento en el registro del apuntador de pila (SP), indica la palabra actual en la pila que esta siendo direccionada.

Page 19: Tarea 2 mapa mental int,mod dir,mem and reg

Registros ES. Alguna operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro extra de segmento para manejar el direccionamiento de memoria. En este contexto, el registro ES esta asociado con el registro DI (índice). Un programa que requiere el uso del registro ES puede inicializarlo con una dirección de segmento apropiada.

Registros FS y GS. Son registros extra de segmento en los procesadores 80386 y posteriores. 

Regresar Arriba

Registros de propósito general. 

Los registros de propósito general AX, BX, CX y DX son los caballos de batalla del sistema. Son únicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un byte. El ultimo byte de la izquierda es la parte "alta", y el ultimo byte de la derecha es la parte "baja". Por ejemplo, el registro CX consta de una parte CH (alta) y una parte Cl (baja), y usted puede referirse a cualquier parte por su nombre.

Registro AX. El registro AX, el acumulador principal, es utilizado para operaciones que implican entrada/salida y la mayor parte de la aritmética. Por ejemplo, las instrucciones para multiplicar , dividir y traducir suponen el uso del AX. También, algunas operaciones generan código mas eficiente si se refieren al AX en lugar de a los otros registros.

Registro BX. El BX es conocido como el registro base ya que es el único registro de propósito general que puede ser índice para direccionamiento indexado. También es común emplear el BX para cálculos.

Page 20: Tarea 2 mapa mental int,mod dir,mem and reg

Registro DX. El DX es conocido como l registro de datos. Alguna operaciones de entrada/salida requieren uso, y las operaciones de multiplicación y división con cifras grandes suponen al DX y al AX trabajando juntos.

Regresar Arriba

Registro de Apuntador de Instrucciones. 

El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de dirección de la siguiente instrucción que se ejecuta. El IP esta asociado con el registro CS en el sentido de que el IP indica la instrucción actual dentro del segmento de código que se esta ejecutando actualmente. Los procesadores 80386 y posteriores tienen un IP ampliado de 32 bits, llamado EIP.

En el ejemplo siguiente, el registro CS contiene 25A4[0]H y el IP contiene 412H. Para encontrar la siguiente instrucción que será ejecutada, el procesador combina las direcciones en el CS y el IP:

Segmento de dirección en el registro CS: 25A40H Desplazamiento de dirección en el registro IP: + 412H Dirección de la siguiente instrucción: 25E52H 

Regresar Arriba

Registros Apuntadores. 

Page 21: Tarea 2 mapa mental int,mod dir,mem and reg

Los registros SP (apuntador de la pila) Y BP (apuntador de base) están asociados con el registro SS y permiten al sistema accesar datos en el segmento de la pila.

Registro SP. El apuntador de la pila de 16 bits esta asociado con el registro SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que esta siendo procesada en la pila. Los procesadores 80386 y posteriores tienen un apuntador de pila de 32 bits, el registro ESP. El sistema maneja de forma automática estos registros.

En el ejemplo siguiente, el registro SS contiene la dirección de segmento 27B3[0]H y el SP el desplazamiento 312H. Para encontrar la palabra actual que esta siendo procesada en la pila, la computadora combina las direcciones en el SS y el SP:

Registro BP. El BP de 16 bits facilita la referencia de parámetros, los cuales son datos y direcciones transmitidos vía pila. Los procesadores 80386 y posteriores tienen un BP ampliado de 32 bits llamado el registro EBP.

Regresar Arriba

Registros Indice. 

Los registros SI y DI están disponibles para direccionamiento indexado y para sumas y restas.

Page 22: Tarea 2 mapa mental int,mod dir,mem and reg

Registro SI. El registro índice fuente de 16 bits es requerido por algunas operaciones con cadenas (de caracteres). En este contexto, el SI esta asociado con el registro DS. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits, el ESI.

Registro DI. El registro índice destino también es requerido por algunas operaciones con cadenas de caracteres. En este contexto, el DI esta asociado con el registro ES. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits, el EDI.

Regresar Arriba

Registro de Banderas. 

De los 16 bits del registro de banderas, nueve son comunes a toda la familia de procesadores 8086, y sirven para indicar el estado actual de la maquina y el resultado del procesamiento. Muchas instrucciones que piden comparaciones y aritmética cambian el estado de las banderas, algunas cuyas instrucciones pueden realizar pruebas para determinar la acción subsecuente. En resumen, los bits de las banderas comunes son como sigue:

OF (Overflow, desbordamiento). Indica desbordamiento de un bit

de orden alto (mas a la izquierda) después de una operación aritmética.

DF (dirección). Designa la dirección hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteres.

Page 23: Tarea 2 mapa mental int,mod dir,mem and reg

IF (interrupción). Indica que una interrupción externa, como la entrada desde el teclado, sea procesada o ignorada.

TF (trampa). Permite la operación del procesador en modo de un paso. Los programas depuradores, como el DEBUG, activan esta bandera de manera que usted pueda avanzar en la ejecución de una sola instrucción a un tiempo, para examinar el efecto de esa instrucción sobre los registros de memoria.

SF (signo). Contiene el signo resultante de una operación aritmética (0 = positivo y 1 = negativo).

ZF (cero). Indica el resultado de una operación aritmética o de comparación (0 = resultado diferente de cero y 1 = resultado igual a cero).

AF (acarreo auxiliar). Contiene un acarreo externo del bit 3 en un dato de 8 bits para aritmética especializada.

PF (paridad). Indica paridad par o impar de una operación en datos de 8 bits de bajo orden (mas a la derecha).

CF (acarreo). Contiene el acarreo de orden mas alto (mas a la izquierda) después de una operación aritmética; también lleva el contenido del ultimo bit en una operación de corrimiento o de rotación. Las banderas están en el registro de banderas en las siguientes posiciones:

Las banderas mas importantes para la programación en ensamblador son O, S, Z y C, para operaciones de comparación y aritméticas, y D para operaciones de

Page 24: Tarea 2 mapa mental int,mod dir,mem and reg

cadenas de caracteres. Los procesadores 80286 y posteriores tienen algunas banderas usadas para propósitos internos, en especial las que afectan al modo protegido. Los procesadores 80286 y posteriores tienen un registro extendido de banderas conocido como Eflags.

Regresar Arriba

Registros de PILA 

La pila es un área de memoria importante y por ello tiene, en vez de uno, dos registros que se usan como desplazamiento (offset) para apuntar a su contenido. Se usan como complemento al registro y son:

-SP- Stack Pointer: Se traduce como puntero de pila y es el que se reserva el procesador para uso propio en instrucciones de manipulado de pila. Por lo general , el programador no debe alterar su contenido.

-BP- Base pointer: Se usa como registro auxiliar. El programador puede usarlo para su provecho.

Claro que estos nombres y tipos de registros son estándar, ya que cada fabricante puede utilizar otros registro que reemplacen a estos o los auxilien, aun así, los fabricantes que usan otros registro tienen la misma función que los anteriormente mencionados

Ejemplo 

Page 25: Tarea 2 mapa mental int,mod dir,mem and reg

Registros de uso general del 8086/8088: 

Tienen 16 bits cada uno y son ocho: 

1. AX = Registro acumulador, dividido en AH y AL (8 bits cada uno). Usándolo se produce (en general) una instrucción que ocupa un byte menos que si se utilizaran otros registros de uso general. Su parte más baja, AL, también tiene esta propiedad. El último registro mencionado es el equivalente al acumulador de los procesadores anteriores (8080 y 8085). Además hay instrucciones como DAA; DAS; AAA; AAS; AAM; AAD; LAHF; SAHF; CBW; IN y OUT que trabajan con AX o con uno de sus dos bytes (AH o AL). También se utiliza este registro (junto con DX a veces) en multiplicaciones y divisiones.

2. BX = Registro base, dividido en BH y BL. Es el registro base de propósito similar (se usa para direccionamiento indirecto) y es una versión más potente del par de registros HL de los procesadores anteriores.

3. CX = Registro contador, dividido en CH y CL. Se utiliza como contador en bucles (instrucción LOOP), en operaciones con cadenas (usando el prefijo REP) y en desplazamientos y rotaciones (usando el registro CL en los dos últimos casos).

4. DX = Registro de datos, dividido en DH y DL. Se utiliza junto con el registro AX en multiplicaciones y divisiones, en la instrucción CWD y en IN y OUT para direccionamiento indirecto de puertos (el registro DX indica el número de puerto de entrada/salida).

5. SP = Puntero de pila (no se puede subdividir). Aunque es un registro de uso general, debe utilizarse sólo como puntero de pila, la cual sirve para almacenar las direcciones de retorno de subrutinas y los datos temporarios (mediante las instrucciones PUSH y POP). Al introducir (push)

Page 26: Tarea 2 mapa mental int,mod dir,mem and reg

un valor en la pila a este registro se le resta dos, mientras que al extraer (pop) un valor de la pila este a registro se le suma dos.

6. BP = Puntero base (no se puede subdividir). Generalmente se utiliza para realizar direccionamiento indirecto dentro de la pila.

7. SI = Puntero índice (no se puede subdividir). Sirve como puntero fuente para las operaciones con cadenas. También sirve para realizar direccionamiento indirecto.

8. DI = Puntero destino (no se puede subdividir). Sirve como puntero destino para las operaciones con cadenas. También sirve para realizar direccionamiento indirecto.

Cualquiera de estos registros puede utilizarse como fuente o destino en operaciones aritméticas y lógicas 

Regresar Arriba

Indicadores (flags) 

Hay nueve indicadores de un bit en este registro de 16 bits. Los cuatro bits más significativos están indefinidos, mientras que hay tres bits con valores determinados: los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno (esto también ocurría en los procesadores anteriores).

Page 27: Tarea 2 mapa mental int,mod dir,mem and reg

CF (Carry Flag, bit 0): Si vale 1, indica que hubo "arrastre" (en caso de suma) hacia, o "préstamo" (en caso de resta) desde el bit de orden más significativo del resultado. Este indicador es usado por instrucciones que suman o restan números que ocupan varios bytes. Las instrucciones de rotación pueden aislar un bit de la memoria o de un registro poniéndolo en el CF.

PF (Parity Flag, bit 2): Si vale uno, el resultado tiene paridad par, es decir, un número par de bits a 1. Este indicador se puede utilizar para detectar errores en transmisiones.

AF (Auxiliary carry Flag, bit 4): Si vale 1, indica que hubo "arrastre" o "préstamo" del nibble (cuatro bits) menos significativo al nibble más significativo. Este indicador se usa con las instrucciones de ajuste decimal.

ZF (Zero Flag, bit 6): Si este indicador vale 1, el resultado de la operación es cero. 

SF (Sign Flag, bit 7): Refleja el bit más significativo del resultado. Como los números negativos se representan en la notación de complemento a dos, este bit representa el signo: 0 si es positivo, 1 si es negativo.

TF (Trap Flag, bit 8): Si vale 1, el procesador está en modo paso a paso. En este modo, la CPU automáticamente genera una interrupción interna después de cada instrucción, permitiendo inspeccionar los resultados del programa a medida que se ejecuta instrucción por instrucción.

IF (Interrupt Flag, bit 9): Si vale 1, la CPU reconoce pedidos de interrupción externas enmascarables (por el pin INTR). Si vale 0, no se reconocen tales interrupciones. Las interrupciones no enmascarables y las internas siempre se reconocen independientemente del valor de IF. DF (Direction Flag, bit 10): Si vale 1, las instrucciones con cadenas sufrirán "auto-decremento", esto es, se

Page 28: Tarea 2 mapa mental int,mod dir,mem and reg

procesarán las cadenas desde las direcciones más altas de memoria hacia las más bajas. Si vale 0, habrá "auto-incremento", lo que quiere decir que las cadenas se procesarán de "izquierda a derecha".

OF (Overflow flag, bit 11): Si vale 1, hubo un desborde en una operación aritmética con signo, esto es, un dígito significativo se perdió debido a que tamaño del resultado es mayor que el tamaño del destino.

Regresar Arriba

El procesador Z80 

Registros de propósito general 

El Z80 posee 14 registros de propósito general de 8 bits denominados A, B, C, D, H, L y A', B', C', D', H' , L'. Solamente un set de siete registros y el correspondiente registro de Flags F pueden estar activos al mismo tiempo. Una instrucción especial selecciona A y F o A' y F' mientras que otra instrucción selecciona B, C, D, E, H, L o C', D', E' ,H' L'.

El programador puede cambiar rápidamente de un conjunto de registros de propósito general a otro. Esto proporciona una mayor capacidad de almacenamiento en registros. El acceso a datos presentes en registros de la CPU es mucho más rápido que el acceso a datos en memoria.

Los registros pueden agruparse de a pares formando registros de 16 bits. Estos son los pares BC, DE y HL (sus equivalentes primas también pueden agruparse).

Page 29: Tarea 2 mapa mental int,mod dir,mem and reg

Flags 

Aunque los Flags existen físicamente dentro de la CPU están agrupados lógicamente formando un registro. Los Flags del Z80 son los siguientes: 

Flag de Cero(Z): Toma el valor 1 si el resultado de una operación es cero. Es el bit seis. 

Flag de signo(S): Toma el valor 1 si el resultado de una operación es negativo. Es el bit siete. 

Flag de Carry(C): Este flag es afectado por las instrucciones de desplazamiento y es puesto en 1 ó 0 según el valor del bit desplazado. También es afectado por las operaciones aritméticas. Este flag es el bit cero.

Flag de Paridad y overflow(P/V): En el caso de paridad, se pone en 1 si el resultado de una operación posee un número par de unos. Cuando el flag P/V se usa para representar overflow, el flag se pone en 1 si ocurre un overflow después de una operación aritmética. Este flag es el bit 2.

Flag H y N: Son dos Flip Flop que no pueden ser examinados por las instrucciones de salto condicional. El Z80 los usa para las operaciones BCD. H representa el rebalse que genera considerando los cuatro bits menos significativos del resultado y N es el flag de resta, el cual se activa para indicar si la última instrucción ejecutada fue suma o resta. En el caso general, una instrucción de resta coloca en 1 el flag N y una instrucción de suma lo coloca en 0. Los Flags H y N son los bits 4 y 1 respectivamente.

Registros de propósito especial 

Program Counter: 

Page 30: Tarea 2 mapa mental int,mod dir,mem and reg

Es un registro de 16 bits que indica la dirección de la próxima instrucción ejecutar. Las instrucciones del Z80 pueden contar de uno, dos, tres o cuatro bytes. 

Stack-Pointer: 

Es un registro de 16 bits que indica la dirección de una memoria RAM externa denominada Stack. El objetivo de esta área de memoria es proporcionar un medio de almacenamiento temporal de los registros del usuario, registro de Flags y del program Counter. La provisión de Stack es fundamental para operaciones tales como los llamados a sub-rutinas e interrupciones.

Registros índices IX e IY: Estos registros son de 16 bits, diseñados para permitir un direccionamiento indexado en los programas del Z80. Cuando se ejecuta una instrucción en un modo de direccionamiento indexado, se usa uno de los dos registros índices para calcular la dirección del operando.

Registro de interrupciones I: Es un registro de 8 bits que puede ser cargado para especificar el byte más significativo de una dirección de memoria. El byte menos significativo es proporcionado por el dispositivo que solicita la interrupción.

Registro de refresh de memoria R: Es un registro especial diseñado para proporcionar un refresh automático de las memorias RAM dinámicas. 

Registro de instrucciones: 

El registro de instrucciones tiene por misión almacenar el código de operación de la instrucción leída desde memoria. Este código es descodificado y con esta información se dirigen todos los micro-pasos. 

Page 31: Tarea 2 mapa mental int,mod dir,mem and reg

Memoria de acceso aleatorioPara otros usos de este término, véase RAM (desambiguación).

DIMM normal y corriente de memoria RAM tipo DDR3 de 240 contactos.

La memoria de acceso aleatorio (en inglés: random-access memory),se utiliza como memoria de

trabajo para el sistema operativo, los programas y la mayoría del software. Es allí donde se cargan

todas las instrucciones que ejecutan el procesador y otras unidades de cómputo. 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 a la información de la

manera más rápida posible. Durante el encendido del computador, la rutina POST verifica que los

módulos de memoria 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 pitidos 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.

Contenido

  [ocultar]

1 Nomenclatura

2 Historia

3 Tecnologías de memoria

o 3.1 SDR SDRAM

o 3.2 RIMM RDRAM

o 3.3 DDR SDRAM

o 3.4 DDR2 SDRAM

o 3.5 DDR3 SDRAM

4 Módulos de la memoria RAM

5 Relación con el resto del sistema

6 Detección y corrección de errores

Page 32: Tarea 2 mapa mental int,mod dir,mem and reg

7 Memoria RAM registrada

8 Véase también

9 Referencias

10 Enlaces externos

[editar]Nomenclatura

La expresión memoria RAM se utiliza frecuentemente para describir a los módulos de

memoria utilizados en los computadores personales y servidores. En el sentido estricto, esta memoria

es solo una variedad de la memoria de acceso aleatorio: las ROM, memorias Flash, caché (SRAM),

los registros en procesadores y otras unidades de procesamiento también poseen la cualidad de

presentar retardos de acceso iguales para cualquier posición. Los módulos de RAM son la presentación

comercial de este tipo de memoria, que se compone de circuitos integrados soldados sobre un circuito

impreso independiente, en otros dispositivos como las consolas de videojuegos, la RAM va soldada

directamente sobre la placa principal.

[editar]Historia

Integrado de silicio de 64 bits sobre un sector de memoria de núcleo magnético (finales de los 60).

Page 33: Tarea 2 mapa mental int,mod dir,mem and reg

4MiB de memoria RAM para un computador VAX de finales de los 70. Los integrados de memoria DRAM están agrupados

arriba a derecha e izquierda.

Módulos de memoria tipo SIPP instalados directamente sobre la placa base.

Uno de los primeros tipos de memoria RAM fue la memoria denúcleo magnético, desarrollada entre

1949 y 1952 y usada en muchos computadores hasta el desarrollo de circuitos integrados a finales de

los años 60 y principios de los 70. Esa memoria requería que cada bit estuviera almacenado en

untoroide de material ferromágnetico de algunos milímetros de diámetro, lo que resultaba en dispositivos

con una capacidad de memoria muy pequeña. Antes que eso, las computadoras usaban relés y líneas

de retardo de varios tipos construidas para implementar las funciones de memoria principal con o sin

acceso aleatorio.

En 1969 fueron lanzadas una de las primeras memorias RAM basadas en semiconductores de silicio por

parte de Intel con el integrado 3101 de 64 bits de memoria y para el siguiente año se presentó una

memoria DRAM de 1024 bytes, referencia 1103 que se constituyó en un hito, ya que fue la primera en

ser comercializada con éxito, lo que significó el principio del fin para las memorias de núcleo magnético.

En comparación con los integrados de memoria DRAM actuales, la 1103 es primitiva en varios aspectos,

pero tenía un desempeño mayor que la memoria de núcleos.

En 1973 se presentó una innovación que permitió otra miniaturización y se convirtió en estándar para las

memorias DRAM: la multiplexación en tiempo de la direcciones de memoria. MOSTEK lanzó la

referencia MK4096 de 4096 bytes en un empaque de 16 pines,1 mientras sus competidores las

fabricaban en el empaque DIP de 22 pines. El esquema de direccionamiento2 se convirtió en un

estándar de facto debido a la gran popularidad que logró esta referencia de DRAM. Para finales de los

70 los integrados eran usados en la mayoría de computadores nuevos, se soldaban directamente a las

placas base o se instalaban en zócalos, de manera que ocupaban un área extensa de circuito impreso.

Con el tiempo se hizo obvio que la instalación de RAM sobre el impreso principal, impedía la

miniaturización , entonces se idearon los primeros módulos de memoria como el SIPP, aprovechando

las ventajas de la construcción modular. El formato SIMM fue una mejora al anterior, eliminando los

pines metálicos y dejando unas áreas de cobre en uno de los bordes del impreso, muy similares a los de

Page 34: Tarea 2 mapa mental int,mod dir,mem and reg

las tarjetas de expansión, de hecho los módulos SIPP y los primeros SIMM tienen la misma distribución

de pines.

A finales de los 80 el aumento en la velocidad de los procesadores y el aumento en el ancho de banda

requerido, dejaron rezagadas a las memorias DRAM con el esquema original MOSTEK, de manera que

se realizaron una serie de mejoras en el direccionamiento como las siguientes:

Módulos formato SIMM de 30 y 72 pines, los últimos fueron utilizados con integrados tipo EDO-RAM.

FPM-RAM (Fast Page Mode RAM)

Inspirado en técnicas como el "Burst Mode" usado en procesadores como el Intel 486,3 se implantó un

modo direccionamiento en el que el controlador de memoria envía una sola dirección y recibe a cambio

esa y varias consecutivas sin necesidad de generar todas las direcciones. Esto supone un ahorro de

tiempos ya que ciertas operaciones son repetitivas cuando se desea acceder a muchas posiciones

consecutivas. Funciona como si deseáramos visitar todas las casas en una calle: después de la primera

vez no seria necesario decir el número de la calle únicamente seguir la misma. Se fabricaban con

tiempos de acceso de 70 ó 60 ns y fueron muy populares en sistemas basados en el 486 y los primeros

Pentium.

EDO-RAM (Extended Data Output RAM)

Lanzada en 1995 y con tiempos de accesos de 40 o 30 ns suponía una mejora sobre su antecesora la

FPM. La EDO, también es capaz de enviar direcciones contiguas pero direcciona la columna que va

utilizar mientras que se lee la información de la columna anterior, dando como resultado una eliminación

de estados de espera, manteniendo activo el búffer de salida hasta que comienza el próximo ciclo de

lectura.

BEDO-RAM (Burst Extended Data Output RAM)

Page 35: Tarea 2 mapa mental int,mod dir,mem and reg

Fue la evolución de la EDO RAM y competidora de la SDRAM, fue presentada en 1997. Era un tipo de

memoria que usaba generadores internos de direcciones y accedía a más de una posición de memoria

en cada ciclo de reloj, de manera que lograba un desempeño un 50% mejor que la EDO. Nunca salió al

mercado, dado que Intel y otros fabricantes se decidieron por esquemas de memoria sincrónicos que si

bien tenían mucho del direccionamiento MOSTEK, agregan funcionalidades distintas como señales de

reloj.

[editar]Tecnologías de memoria

La tecnología de memoria actual usa una señal de sincronización para realizar las funciones de lectura-

escritura de manera que siempre esta sincronizada con un reloj delbus de memoria, a diferencia de las

antiguas memorias FPM y EDO que eran asíncronas. Hace más de una década toda la industria se

decantó por las tecnologías síncronas, ya que permiten construir integrados que funcionen a una

frecuencia superior a 66 MHz.

Tipos de DIMMs según su cantidad de Contactos o Pines:

72-pin SO-DIMM (not the same as a 72-pin SIMM), usados por FPM DRAM y EDO DRAM

100-pin DIMM, usados por printer SDRAM

144-pin SO-DIMM, usados por SDR SDRAM

168-pin DIMM, usados por SDR SDRAM (less frequently for FPM/EDO DRAM in

workstations/servers)

172-pin MicroDIMM, usados por DDR SDRAM

184-pin DIMM, usados por DDR SDRAM

200-pin SO-DIMM, usados por DDR SDRAM y DDR2 SDRAM

204-pin SO-DIMM, usados por DDR3 SDRAM

240-pin DIMM, usados por DDR2 SDRAM, DDR3 SDRAM y FB-DIMM DRAM

244-pin MiniDIMM, usados por DDR2 SDRAM

Page 36: Tarea 2 mapa mental int,mod dir,mem and reg

Memorias RAM con tecnologías usadas en la actualidad.

[editar]SDR SDRAM

Artículo principal: SDRAM.

Memoria síncrona, con tiempos de acceso de entre 25 y 10 ns y que se presentan en módulos DIMM de

168 contactos. Fue utilizada en los Pentium II y en los Pentium III , así como en los AMD K6, AMD

Athlon K7 y Duron. Está muy extendida la creencia de que se llama SDRAM a secas, y que la

denominación SDR SDRAM es para diferenciarla de la memoria DDR, pero no es así, simplemente se

extendió muy rápido la denominación incorrecta. El nombre correcto es SDR SDRAM ya que ambas

(tanto la SDR como la DDR) son memorias síncronas dinámicas. Los tipos disponibles son:

PC66: SDR SDRAM, funciona a un máx de 66,6 MHz.

PC100: SDR SDRAM, funciona a un máx de 100 MHz.

PC133: SDR SDRAM, funciona a un máx de 133,3 MHz.

[editar]RIMM RDRAM

Artículo principal: RIMM RDRAM.

Se presentan en módulos RIMM de 184 contactos. Fue utilizada en los Pentium IV . Era la memoria mas

rapida en su tiempo pero por su elevado costo fue rapidamente cambiada por la economica DDR. Los

tipos disponibles son:

PC600: RIMM RDRAM, funciona a un máx de 300 MHz.

PC700: RIMM RDRAM, funciona a un máx de 356 MHz.

PC800: RIMM RDRAM, funciona a un máx de 400 MHz.

PC1066: RIMM RDRAM, funciona a un máx de 533 MHz.

[editar]DDR SDRAM

Artículo principal: DDR SDRAM.

Memoria síncrona, envía los datos dos veces por cada ciclo de reloj. De este modo trabaja al doble de

velocidad del bus del sistema, sin necesidad de aumentar la frecuencia de reloj. Se presenta en

módulos DIMM de 184 contactos en el caso de ordenador de escritorio y en módulos de 144 contactos

para los ordenadores portátiles. Los tipos disponibles son:

PC1600 o DDR 200: funciona a un máx de 200 MHz.

PC2100 o DDR 266: funciona a un máx de 266,6 MHz.

PC2700 o DDR 333: funciona a un máx de 333,3 MHz.

PC3200 o DDR 400: funciona a un máx de 400 MHz.

Page 37: Tarea 2 mapa mental int,mod dir,mem and reg

PC4500 o DR4 400: funciona a una máx de 500 MHz

[editar]DDR2 SDRAM

Módulos de memoria instalados de 256 MiB cada uno en un sistema con doble canal.

Artículo principal: DDR2.

Las memorias DDR 2 son una mejora de las memorias DDR (Double Data Rate), que permiten que los

búferes de entrada/salida trabajen al doble de la frecuencia del núcleo, permitiendo que durante cada

ciclo de reloj se realicen cuatro transferencias. Se presentan en módulos DIMM de 240 contactos. Los

tipos disponibles son:

PC2-4200 o DDR2-533: funciona a un máx de 533,3 MHz.

PC2-5300 o DDR2-667: funciona a un máx de 666,6 MHz.

PC2-6400 o DDR2-800: funciona a un máx de 800 MHz.

PC2-8600 o DDR2-1066: funciona a un máx de 1066,6 MHz.

PC2-9000 o DDR2-1200: funciona a un máx de 1200 MHz

[editar]DDR3 SDRAM

Artículo principal: DDR3.

Las memorias DDR 3 son una mejora de las memorias DDR 2, proporcionan significantes mejoras en el

rendimiento en niveles de bajo voltaje, lo que lleva consigo una disminución del gasto global de

consumo. Los módulos DIMM DDR 3 tienen 240 pines, el mismo número que DDR 2; sin embargo, los

DIMMs son físicamente incompatibles, debido a una ubicación diferente de la muesca. Los tipos

disponibles son:

PC3-6400 o DDR3-800: funciona a un máx de 800 MHz.

PC3-8500 o DDR3-1066: funciona a un máx de 1066,6 MHz.

Page 38: Tarea 2 mapa mental int,mod dir,mem and reg

PC3-10600 o DDR3-1333: funciona a un máx de 1333,3 MHz.

PC3-12800 o DDR3-1600: funciona a un máx de 1600 MHz.

PC3-14900 o DDR3-1866: funciona a un máx de 1866,6 MHz.

PC3-17000 o DDR3-2133: funciona a un máx de 2133,3 MHz.

[editar]Módulos de la memoria RAM

Formato SO-DIMM.

Los módulos de memoria RAM son tarjetas de circuito impreso que tienen soldados integrados de

memoria DRAM por una o ambas caras. La implementación DRAM se basa en una topología de Circuito

eléctrico que permite alcanzar densidades altas de memoria por cantidad de transistores, logrando

integrados de cientos o miles de megabits. Además de DRAM, los módulos poseen un integrado que

permiten la identificación de los mismos ante el computador por medio del protocolo de

comunicación SPD.

La conexión con los demás componentes se realiza por medio de un área de pines en uno de los filos

del circuito impreso, que permiten que el modulo al ser instalado en un zócalo apropiado de la placa

base, tenga buen contacto eléctrico con los controladores de memoria y las fuentes de alimentación. Los

primeros módulos comerciales de memoria eran SIPP de formato propietario, es decir no había un

estándar entre distintas marcas. Otros módulos propietarios bastante conocidos fueron los RIMM,

ideados por la empresa RAMBUS.

La necesidad de hacer intercambiable los módulos y de utilizar integrados de distintos fabricantes

condujo al establecimiento de estándares de la industria como los JEDEC.

Módulos SIMM: Formato usado en computadores antiguos. Tenían un bus de datos de 16 o 32 bits

Módulos DIMM: Usado en computadores de escritorio. Se caracterizan por tener un bus de datos de

64 bits.

Módulos SO-DIMM: Usado en computadores portátiles. Formato miniaturizado de DIMM.

Page 39: Tarea 2 mapa mental int,mod dir,mem and reg

[editar]Relación con el resto del sistema

Diagrama de la arquitectura de un ordenador.

Dentro de la jerarquía de memoria la RAM se encuentra en un nivel después de los registros del

procesador y de las cachés en cuanto a velocidad. Los módulos de memoria se conectan eléctricamente

a un controlador de memoria que gestiona las señales entrantes y salientes de los integrados DRAM.

Las señales son de tres tipos: direccionamiento, datos y señales de control. En el módulo de memoria

esas señales están divididas en dos buses y un conjunto misceláneo de líneas de control y alimentación,

Entre todas forman el bus de memoria que conecta la RAM con su controlador:

Bus de datos: Son las líneas que llevan información entre los integrados y el controlador. Por lo

general están agrupados en octetos siendo de 8,16,32 y 64 bits, cantidad que debe igualar el ancho

del bus de datos del procesador. En el pasado, algunos formatos de modulo, no tenían un ancho de

bus igual al del procesador.En ese caso había que montar módulos en pares o en situaciones

extremas, de a 4 módulos, para completar lo que se denominaba banco de memoria, de otro modo

el sistema no funciona. Esa fue la principal razón para aumentar el número de pines en los

módulos, igualando al ancho de bus de procesadores como el Pentium a 64 bits, a principios de los

90.

Bus de direcciones: Es un bus en el cual se colocan las direcciones de memoria a las que se

requiere acceder. No es igual al bus de direcciones del resto del sistema, ya que está multiplexado

de manera que la dirección se envía en dos etapas.Para ello el controlador realiza temporizaciones

y usa las líneas de control. En cada estándar de módulo se establece un tamaño máximo en bits de

este bus, estableciendo un límite teórico de la capacidad máxima por módulo.

Señales misceláneas: Entre las que están las de la alimentación (Vdd, Vss) que se encargan de

entregar potencia a los integrados. Están las líneas de comunicación para el integrado

de presencia que sirve para identificar cada módulo. Están las líneas de control entre las que se

Page 40: Tarea 2 mapa mental int,mod dir,mem and reg

encuentran las llamadas RAS (row address strobe) y CAS (column address strobe) que controlan el

bus de direcciones, por último están las señales de reloj en las memorias sincrónicas SDRAM.

Algunos controladores de memoria en sistemas como PC y servidores se encuentran embebidos en el

llamado "North Bridge" o "Puente Norte" de la placa base. Otros sistemas incluyen el controlador dentro

del mismo procesador (en el caso de los procesadores desde AMD Athlon 64 e Intel Core i7 y

posteriores). En la mayoría de los casos el tipo de memoria que puede manejar el sistema está limitado

por los sockets para RAM instalados en la placa base, a pesar que los controladores de memoria en

muchos casos son capaces de conectarse con tecnologías de memoria distintas.

Una característica especial de algunos controladores de memoria, es el manejo de la tecnología canal

doble (Dual Channel), donde el controlador maneja bancos de memoria de 128 bits, siendo capaz de

entregar los datos de manera intercalada, optando por uno u otro canal, reduciendo las latencias vistas

por el procesador. La mejora en el desempeño es variable y depende de la configuración y uso del

equipo. Esta característica ha promovido la modificación de los controladores de memoria, resultando en

la aparición de nuevos chipsets (la serie 865 y 875 de Intel) o de nuevos zócalos de procesador en los

AMD (el 939 con canal doble , reemplazo el 754 de canal sencillo). Los equipos de gama media y alta

por lo general se fabrican basados en chipsets o zócalos que soportan doble canal o superior, como en

el caso del zócalo (o socket, en inglés) 1366 de Intel, que usaba un triple canal de memoria, o su nuevo

LGA 2011 que usa cuádruple canal.

[editar]Detección y corrección de errores

Existen dos clases de errores en los sistemas de memoria, las fallas (Hard fails) que son daños en el

hardware y los errores (soft errors) provocados por causas fortuitas. Los primeros son relativamente

fáciles de detectar (en algunas condiciones el diagnóstico es equivocado), los segundos al ser resultado

de eventos aleatorios, son más difíciles de hallar. En la actualidad la confiabilidad de las memorias RAM

frente a los errores, es suficientemente alta como para no realizar verificación sobre los datos

almacenados, por lo menos para aplicaciones de oficina y caseras. En los usos más críticos, se aplican

técnicas de corrección y detección de errores basadas en diferentes estrategias:

La técnica del bit de paridad consiste en guardar un bit adicional por cada byte de datos, y en la

lectura se comprueba si el número de unos es par (paridad par) o impar(paridad impar),

detectándose así el error.

Una técnica mejor es la que usa ECC, que permite detectar errores de 1 a 4 bits y corregir errores

que afecten a un sólo bit. Esta técnica se usa sólo en sistemas que requieren alta fiabilidad.

Por lo general los sistemas con cualquier tipo de protección contra errores tiene un costo más alto, y

sufren de pequeñas penalizaciones en desempeño, con respecto a los sistemas sin protección. Para

Page 41: Tarea 2 mapa mental int,mod dir,mem and reg

tener un sistema con ECC o paridad, el chipset y las memorias deben tener soporte para esas

tecnologías. La mayoría de placas base no poseen dicho soporte.

Para los fallos de memoria se pueden utilizar herramientas de software especializadas que realizan

pruebas sobre los módulos de memoria RAM. Entre estos programas uno de los más conocidos es la

aplicación Memtest86+ que detecta fallos de memoria.

[editar]Memoria RAM registrada

Es un tipo de módulo usado frecuentemente en servidores, posee circuitos integrados que se encargan

de repetir las señales de control y direcciones: las señales de reloj son reconstruidas con ayuda del PLL

que está ubicado en el módulo mismo. Las señales de datos se conectan de la misma forma que en los

módulos no registrados: de manera directa entre los integrados de memoria y el controlador. Los

sistemas con memoria registrada permiten conectar más módulos de memoria y de una capacidad más

alta, sin que haya perturbaciones en las señales del controlador de memoria, permitiendo el manejo de

grandes cantidades de memoria RAM. Entre las desventajas de los sistemas de memoria registrada

están el hecho de que se agrega un ciclo de retardo para cada solicitud de acceso a una posición no

consecutiva y un precio más alto que los módulos no registrados. La memoria registrada es incompatible

con los controladores de memoria que no soportan el modo registrado, a pesar de que se pueden

instalar físicamente en el zócalo. Se pueden reconocer visualmente porque tienen un integrado

mediano, cerca del centro geométrico del circuito impreso, además de que estos módulos suelen ser

algo más altos.4

Durante el año 2006 varias marcas lanzaron al mercado sistemas con memoria FB-DIMM que en su

momento se pensaron como los sucesores de la memoria registrada, pero se abandono esa tecnología

en 2007 dado que ofrecía pocas ventajas sobre el diseño tradicional de memoria registrada y los nuevos

modelos con memoria DDR3.5

InterrupciónEste artículo o sección necesita referencias que aparezcan en una publicación acreditada, como revistas especializadas, monografías, prensa diaria o páginas de Internet fidedignas.Puedes añadirlas así o avisar al autor principal del artículo en su página de discusión pegando: {{subst:Aviso referencias|Interrupción}} ~~~~

Interrupción (también conocida como interrupción de hardware o petición de interrupción) es una

señal recibida por el procesador de un ordenador, indicando que debe "interrumpir" el curso de

ejecución actual y pasar a ejecutar código específico para tratar esta situación.

Page 42: Tarea 2 mapa mental int,mod dir,mem and reg

Una interrupción es una suspensión temporal de la ejecución de un proceso, para pasar a ejecutar una

subrutina de servicio de interrupción, la cual, por lo general, no forma parte del programa (generalmente

perteneciente al sistema operativo, o al BIOS). Luego de finalizada dicha subrutina, se reanuda la

ejecución del programa.

Las interrupciones surgen de las necesidades que tienen los dispositivos periféricos de enviar

información al procesador principal de un sistema de computación. La primera técnica que se empleó

fue que el propio procesador se encargara de sondear (polling) los dispositivos cada cierto tiempo para

averiguar si tenía pendiente alguna comunicación para él. Este método presentaba el inconveniente de

ser muy ineficiente, ya que el procesador constantemente consumía tiempo en realizar todas las

instrucciones de sondeo.

El mecanismo de interrupciones fue la solución que permitió al procesador desentenderse de esta

problemática, y delegar en el dispositivo la responsabilidad de comunicarse con el procesador cuando lo

necesitara. El procesador, en este caso, no sondea a ningún dispositivo, sino que queda a la espera de

que estos le avisen (le "interrumpan") cuando tengan algo que comunicarle (ya sea un evento, una

transferencia de información, una condición de error, etc.).

Contenido

  [ocultar]

1 Funcionamiento del mecanismo de interrupciones

2 Líneas de petición de interrupción

3 Mecanismo de interrupciones en un PC

4 Tipos de interrupciones

5 Usos de las interrupciones

o 5.1 Interrupciones de hardware

o 5.2 Trampas

o 5.3 Interrupciones por software

6 Determinación de la dirección de la rutina de servicio de interrupción

7 Direcciones variables

8 Determinación de la fuente que genera la interrupción

9 Sistemas de prioridad

o 9.1 Interrupciones simultáneas

o 9.2 Interrupciones anidadas

o 9.3 Inhibición de interrupciones

10 Tormenta de interrupciones

Page 43: Tarea 2 mapa mental int,mod dir,mem and reg

11 Véase también

[editar]Funcionamiento del mecanismo de interrupciones

Cada dispositivo que desea comunicarse con el procesador por medio de interrupciones debe tener

asignada una línea única capaz de avisar al CPU que le requiere para una operación. Esta línea es la

llamada IRQ ("Interrupt ReQuest", petición de interrupción).

Las IRQ son líneas que llegan al controlador de interrupciones un componente de hardware dedicado a

la gestión de las interrupciones, y que puede estar integrado en el procesador principal o ser un circuito

separado conectado al procesador principal. El controlador de interrupciones debe ser capaz de habilitar

o inhibir líneas de interrupción (operación llamada comúnmente enmascarar por la utilización de

una máscara), y establecer prioridades entre las distintas interrupciones habilitadas. Cuando varias

líneas de petición de interrupción se activan a la vez, el controlador de interrupciones utilizará estas

prioridades para escoger la interrupción sobre la que informará al procesador principal. También puede

darse el caso de que una rutina de tratamiento de interrupción sea interrumpida para realizar otra rutina

de tratamiento de una interrupción de mayor prioridad a la que se estaba ejecutando.Sin embargo hay

interrupciones que no se pueden enmascarar o deshabilitar, las conocidas como interrupciones no

enmascarables o NMI.

Un procesador principal que no tenga un controlador de interrupciones integrado, suele tener una única

línea de interrupción llamada habitualmente INT. Esta línea es activada por el controlador de

interrupciones cuando tiene una interrupción que servir. Al activarse esta línea, el procesador consulta

los registros del controlador de interrupciones para averiguar cual IRQ hay que atender. A partir del

número del IRQ busca en la tabla de vectores de interrupción la dirección de la rutina que debe llamar

para atender una petición del dispositivo asociado a dicha IRQ.

Las rutinas de interrupción generalmente toman un pequeño y orejon tiempo de ejecución.

Pasos para el procesamiento de una IRQ:

1. Terminar la ejecución de la instrucción de máquina en curso.

2. Salva el valor de contador de programa, IP, en la pila, de manera que en la CPU, al terminar el

proceso, pueda seguir ejecutando el programa a partir de la última instrucción.

3. La CPU salta a la dirección donde está almacenada la rutina de servicio de

interrupción (Interrupt Service Routine (ISR)) y ejecuta esa rutina que tiene como objetivo

atender al dispositivo que generó la interrupción.

4. Una vez que la rutina de la interrupción termina, el procesador restaura el estado que había

guardado en la pila en el paso 2 y retorna al programa que se estaba usando anteriormente.

Page 44: Tarea 2 mapa mental int,mod dir,mem and reg

[editar]Líneas de petición de interrupción

El bus de control dispone de líneas específicas para el sistema de interrupciones. En el IBM

PC y XT existen 8 líneas de petición de interrupción manejadas por el controlador de interrupciones Intel

8259. Estas líneas están numeradas del 0 al 7, las dos primeras están asignadas al timer

tick del temporizador Intel 8253, y al teclado. Solo quedaban 6 líneas para otros dispositivos, que

aparecen como tales en el bus de control (IRQ2 - IRQ7). A partir del modelo AT se añadieron otras 8

líneas, numeradas del 8 al 15, mediante un segundo controlador de interrupciones (PIC), aunque la

tecnología empleada exigió colgarlo de la línea IRQ2 del primero, de forma que esta línea se dedica a

atender las interrupciones del segundo controlador a través de la línea 9 de este último, y la línea 8 se

dedicó al reloj de tiempo real, un dispositivo que no existía en los modelos XT.

Aunque internamente se manejan 16 líneas, no todas tienen contacto en los zócalos del bus externo

(son las marcadas con asterisco en la tabla que sigue). La razón de esta ausencia en los zócalos de

conexión es que son de asignación fija, y solo son usadas por ciertos dispositivos instalados en la

propia placa base. En concreto la línea NMI está asignada al mecanismo de control de paridad de la

memoria, la línea 0 está asignada al cronómetro del sistema y la línea 1 al chip que controla el teclado

(dispositivos que pueden requerir atención urgente por parte del procesador). Es costumbre denominar

IRQx a las que tienen prolongación en el bus.

Teóricamente las restantes líneas podrían ser asignadas a cualquier nuevo dispositivo, pero en la

práctica algunas están reservadas a dispositivos estándar. Por ejemplo, IRQ3 está casi siempre

asignado al puerto serie COM2 y el IRQ4 al COM1; IRQ6 al controlador estándar de disquetes y IRQ7

al puerto de impresora LPT1. La tabla 1 muestra las asignaciones clásicas para el XT y el AT

En sistemas más modernos utilizan la arqitectura APIC de Intel con 24 líneas y 8 extra para enrutar las

interrupciones PCI.

NombreInt

(hex)XT: Descripción AT: Descripción

NMI --- Paridad* Paridad*

0 08 Temporizador* Temporizador*

1 09 Teclado* Teclado*

IRQ2 0A Reservado Interrupciones 8 a 15 (PIC#2)

Page 45: Tarea 2 mapa mental int,mod dir,mem and reg

IRQ3 0BPuertos serie COM2/COM4

Puerto serie COM2/COM4

IRQ4 0CPuertos serie COM1/COM3

Puertos serie COM1/COM3

IRQ5 0D Disco duro Impresora secundaria LPT2

IRQ6 0E Disquete Disquete

IRQ7 0F Impresora primaria LPT1 Impresora primaria LPT1

8 70 No aplicable Reloj de tiempo real*

9 71 No aplicable Redirigido a IRQ2*

IRQ10 72 No aplicable no asignado

IRQ11 73 No aplicable no asignado

IRQ12 74 No aplicable Ratón PS2

13 75 No aplicable Coprocesador 80287*

IRQ14 76 No aplicable Contr. disco IDE primario

IRQ15 77 No aplicable Contr. disco IDE secundario

Cuando se instala un dispositivo de E/S que puede necesitar atención del procesador, debe asignársele

una IRQ adecuada. Dicho en otras palabras, cuando requiera atención debe enviar una señal en la línea

Page 46: Tarea 2 mapa mental int,mod dir,mem and reg

IRQ especificada. Inicialmente esta asignación se efectuaba de forma manual, por medio de puentes

(jumpers) en la placa o dispositivo, pero actualmente esta selección puede hacerse por software.

[editar]Mecanismo de interrupciones en un PC

Un ordenador PC típico dispone en su placa base de un controlador de interrupciones 8259 de Intel o de

un circuito integrado análogo. Este dispositivo electrónico dispone de hasta 16 líneas IRQ, numeradas

desde el 00 hasta el 15. En las nuevas placas base este circuito está integrado junto con el resto

del chipset y permite hasta 24 interrupciones.

[editar]Tipos de interrupciones

En este subapartado vamos a hacer una clasificación de las distintas clases de interrupciones que nos

podemos encontrar atendiendo a la fuente que las produce. Por un lado distinguiremos si se producen

por causas internas o externas al procesador y remarcaremos que este hecho está íntimamente ligado

con que las interrupciones sean síncronas o asíncronas:

Interrupciones de hardware. Estas son asíncronas a la ejecución del procesador, es decir, se

pueden producir en cualquier momento independientemente de lo que esté haciendo el CPU en ese

momento. Las causas que lo producen son externas al procesador y a menudo suelen estar ligadas

con distintos dispositivos de E/S.

Traps. Normalmente son causadas al realizarse operaciones no permitidas tales como la división

por 0, el desbordamiento, el acceso a una posición de memoria no permitida, etc.

Interrupciones por software. Las interrupciones por software son generadas por el programa en

ejecución. Para generarla, existen distintas instrucciones en el código máquina que permiten al

programador producir una interrupción, suelen tener nemotécnicos tales como INT. Suelen ser de

vital importancia ya que a partir de estas interrupciones se solicita al sistema operativo realizar

determinadas funciones, para ello. Por ejemplo, en DOS se realiza la instrucción INT 0x21 y

en Unix se utiliza INT 0x80 para hacer llamadas de sistema.

[editar]Usos de las interrupciones

Se utilizan las interrupciones generalmente para dos motivos:

Permitir una comunicación sin bloqueo con los periféricos externos.

Conmutar las tareas dentro de un planificador

[editar]Interrupciones de hardware

Son interrupciones que se producen como resultado de, normalmente, una operación de E/S. No son

producidas por ninguna instrucción de un programa sino por señales que producen los dispositivos para

Page 47: Tarea 2 mapa mental int,mod dir,mem and reg

indicarle al procesador que necesitan ser atendidos. Las interrupciones de hardware son interesantes en

cuanto a que permiten mejorar la productividad del procesador ya que este último puede ordenar una

operación de E/S y en lugar de tener que esperar realizando una espera activa, a que el dispositivo

termine, es decir, sin hacer ningún trabajo útil, se puede dedicar a atender a otro proceso o aplicaciones

y cuando el dispositivo esté de nuevo disponible será el encargado de notificarle al procesador mediante

la línea de interrupción que ya está preparado para continuar/terminar la operación de E/S.

Entradas/salidas:

Cuando un microprocesador accesa un periférico (disco duro, puerto de comunicación...), puede

transcurrir algún tiempo antes de que los datos puedan ser obtenidos o bien transmitidos. La solución

más simple es esperar hasta recibir un dato o bien hasta que se efectúa una transmisión (espera

ocupado, o polling), pero esta solución bloquea todos los programas en ejecución, y eso no puede

admitirse bajo un sistema multitarea. En los sistemas modernos se prefiere un funcionamiento mediante

interrupciones:

El periférico señala una eventualidad mediante una interrupción, como por ejemplo que ha acabado la

transmisión de los datos, y una rutina trata esta interrupción. Para que la transferencia sea más eficiente

suele usarse el acceso directo a memoria (DMA), mediante el cual los bloques son leídos o bien escritos

en memoria sin la intervención del CPU.

[editar]Trampas

Es un tipo de interrupción sincrónica típicamente causada por una condición de error, por ej. una división

por 0 o un acceso inválido a memoria en un proceso de usuario. Normalmente genera un cambio de

contexto a modo supervisor para que el sistema operativo atienda el error. De manera que podemos ver

como las excepciones son un mecanismo de protección que permite garantizar la integridad de los datos

tanto en el espacio de usuario como en el espacio kernel. El SO cuando detecta una excepción intenta

solucionarla pero en caso de no poder simplemente notificará la condición de error a la aplicación y

abortará la misma.

[editar]Interrupciones por software

Este artículo o sección tiene un estilo difícil de entender para los lectores interesados en el tema.Si puedes, por favor edítalo y contribuye a hacerlo más accesible para el público general, sin eliminar los detalles técnicos que interesan a los especialistas.

A las interrupciones por software, se las denomina excepciones. En este apartado se consideran las

llamadas al sistema operativo mediante una instrucción, normalmente de Entrada/Salida, por ejemplo

una división por 0.

Page 48: Tarea 2 mapa mental int,mod dir,mem and reg

Una interrupción por software, se generará por un programa mientras está ejecutándose. En general

actúa de la siguiente manera:

1. Un programa que se venía ejecutando luego de su instrucción I5 , llama al Sistema Operativo,

por ejemplo para leer un archivo de disco.(cuando un programa necesita un dato exterior , se

detiene y pasa a cumplir con las tareas de recojer ese dato)

1. A tal efecto, luego de I5 existe en el programa, la instrucción de código de máquina CD21,

simbolizada INT 21 en Assembler, que realiza el requerimiento del paso 1. Puesto que no

puede seguir le ejecución de la instrucción I6 y siguientes del programa hasta que no se haya

leído el disco y esté en memoria principal dicho archivo, virtualmente el programa se ha

interrumpido, siendo, además, que luego de INT 21, las instrucciones que se ejecutarán no

serán del programa, sino del Sistema Operativo. ( se detiene el programa y ordena en este

caso mediante INT21 ( interrupcion predefinida ) que recoge el dato solicitado, para poder

sequir el programa que la ordeno )

1. La ejecución de INT 21 permite hallar la subrutina del Sistema Operativo.

1. Se ejecuta la subrutina del Sistema Operativo que prepara la lectura del disco.

1. Luego de ejecutarse la subrutina del Sistema Operativo, y una vez que se haya leído el disco y

verificado que la lectura es correcta, el Sistema Operativo ordenará reanudar la ejecución del

programa autointerrumpido en espera.

1. La ejecución del programa se reanuda.

[editar]Determinación de la dirección de la rutina de servicio de interrupción

Hay dos alternativas para determinar la dirección de la rutina de servicio de interrupción que debe

ejecutarse al recibir una interrupción determinada:

Direcciones fijas. Se hallan cableadas en el procesador y por tanto nunca pueden ser cambiadas.

Esto implica que las RSI siempre estarán en una determinada posición de la memoria.

Direcciones variables (por interrupciones vectorizadas). En este grupo se incluyen aquellas que

presentan una dirección variable y que, por tanto, no se halla cableada en el procesador. De esta

Page 49: Tarea 2 mapa mental int,mod dir,mem and reg

manera el dispositivo debe dar información acerca de la localización de la dirección de comienzo de

la RSI asociada a dicho periférico.

[editar]Direcciones variables

Hay distintas metodologías de diseño para las interrupciones con direcciones variables. En la actualidad,

las alternativas que son implementadas de manera habitual son las siguientes:

Direccionamiento absoluto. En este caso es el dispositivo o la interfaz del dispositivo la encargada

de conocer la dirección de la RSI y de enviarla al procesador para que éste pueda localizar dicha

subrutina y ejecutarla.

Direccionamiento relativo. El dispositivo solo suministra parte de la dirección de comienzo y es el

procesador el encargado de completarla (añadiendo bits o sumando una determinada cantidad, que

siempre será fija). Esta alternativa tiene una ventaja sobre la anterior y es que permite especificar la

dirección de comienzo con menos bits y por tanto simplifica el diseño. Ahora bien tiene una

desventaja principal y es que limita el número de dispositivos que podemos conectar y además

ciertos bits de la dirección quedan fijados de forma permanente por la CPU lo que reduce la

capacidad de reubicabilidad de la RSI. Una alternativa que utilizan ciertos procesadores como

el 8080 o el 8085 es que en vez de enviar solamente la dirección de comienzo de la RSI se envía

también el código de la operación de salto (por ejemplo CALL).

Direccionamiento indirecto. También conocida como direccionamiento por interrupciones

vectorizadas. Se mantiene una tabla de vectores de interrupción (direcciones de comienzo de las

distintas RSI) y a cada interrupción se le asocia un número que será el índice por el cual se

accederá a la tabla y se recuperará la información de la dirección de comienzo. Necesita señales de

conformidad o handshaking para sincronizar al procesador con la interfaz, ya que esta última tiene

que indicarle al procesador cuando va a enviarle el índice que necesita para buscar el vector de

interrupción (INT) y el procesador deberá enviar otra señal para indicar que se ha reconocido la

interrupción (INTA#).

[editar]Determinación de la fuente que genera la interrupción

Hay distintas formas de identificar la fuente de una determinada interrupción. La primera alternativa que

se consideró fue asignar una línea (un bit) para cada interrupción pero esto suponía un gran costo en

cuanto a la relación de número de dispositivos y número de bits usados y a menudo fijaba el límite de

dispositivos que se podían conectar. Por tanto, se pensó con posterioridad que en cada patilla de

interrupción deberían poder conectarse más de un dispositivo, pero entonces tendríamos que imponer

una metodología que permitiese identificar de forma unívoca de qué dispositivo se trataba. Para ello hay

varias directrices:

Page 50: Tarea 2 mapa mental int,mod dir,mem and reg

Polling. Se trata de que la CPU comprueba de manera sistemática todos los dispositivos de manera

que "busca" cuál de ellos fue el que solicitó la interrupción. Esto tiene una ventaja y es que es

barato a nivel de coste hardware ya que el "polling" se implementa en software, no obstante tiene

otras desventajas que no podemos olvidar y es que suele ser lento porque tiene que comprobar en

serie todos los dispositivos y establece una prioridad en los dispositivos (el orden de sondeo) y por

tanto puede provocar inanición.

Interrupciones vectorizadas. Este concepto fue ya tratado en el apartado anterior y como ventajas

podemos destacar que suele ser rápido pero implica un alto costo en el hardware.

Hardware paralelo. Se utiliza un registro de interrupción cuyos bits se controlan de forma

independiente por las señales de petición de interrupción   de cada periférico. Según la

posición de cada bit en el registro, se establece la prioridad.

[editar]Sistemas de prioridad

Se necesita un mecanismo para priorizar las interrupciones y tratar primero las más urgentes. Existen

varias alternativas:

Interrupciones simultáneas. No tienen por qué ocurrir de manera simultánea sino que se refiere a

que en un momento dado pueden haber varias interrupciones activas.

Interrupciones anidadas. Mientras se está procesando una determinada rutina de servicio de

interrupción sucede otra señal de interrupción.

Inhibición de interrupciones. Se deshabilitan las demás interrupciones mientras se está tratando

una.

[editar]Interrupciones simultáneas

En este método tenemos dos alternativas, una de ellas es que exista algún hardware que tenga como

entradas las señales de interrupción y de como salida la interrupción más prioritaria que está activa en

ese momento. Otra alternativa es tener un método de identificación de prioridades distribuida y no

generalizada como en el caso anterior, en este caso tenemos que destacar dos técnicas distintas que se

pueden implementar en la práctica:

Polling. Como ya vimos es el CPU el que chequea los dispositivos y el orden de sondeo determina

la prioridad.

Daisy-chain. (conexión en cadena) Podemos conectar los distintos dispositivos en cadena, en orden

decreciente de prioridad y por tanto la señal de reconocimiento de interrupción (INTA#) solo será

pasada al siguiente dispositivo en caso de que el anterior (más prioritario) no haya solicitado los

servicios del procesador. Sin embargo, algo importante es que las señales de interrupción que van

al procesador están conectadas todas a un mismo cable, por tanto, deberemos utilizar alguna

Page 51: Tarea 2 mapa mental int,mod dir,mem and reg

técnica especial para que no se produzca un cortocircuito. Para evitar precisamente que la pista se

cortocircuite se utiliza la técnica del "open-collector" o "colector abierto" y consiste en conectar el

colector de un transistor a la pista común (un transistor por cada dispositivo) y por tanto estarán

tantos colectores conectados como dispositivos tengamos (se entiende que son dispositivos que

mandan petición de interrupción al procesador).

Híbrida. Mezcla las dos técnicas explicadas anteriormente.

[editar]Interrupciones anidadas

Existen dos métodos para tratar las interrupciones anidadas. El primero se basa en inhabilitar las

interrupciones mientras se está ejecutando una determinada RSI. Esto puede realizarlo el hardware de

manera automática en algunos procesadores, pero en otros será el usuario el encargado de

deshabilitarlas en caso de que no desee que ninguna otra interrupción pueda interrumpir el transcurso

normal de la rutina de servicio de interrupción. No es aconsejable deshabilitar las interrupciones durante

mucho tiempo ya que esto puede provocar errores y pérdida de información.

La otra alternativa es permitir que solo las interrupciones más prioritarias puedan suspender la ejecución

de la RSI actual. Para esto tendremos que definir qué líneas son más prioritarias que otras. Otra

consideración de esta segunda alternativa es que al anidar distintas llamadas a rutinas tendremos que

contar con una pila suficientemente grande para que esta no se desborde.

[editar]Inhibición de interrupciones

Hay distintas alternativas de inhibición de interrupciones. Como ya hemos visto estas se pueden hacer

de manera automática por el hardware en algunos casos mientras que en otros será el usuario el

encargado de realizarlo por software y esto depende de la arquitectura del procesador que

consideremos. Las distintas opciones son:

Deshabilitar todas las interrupciones. Para esto basta con inhibir el bit del registro de flag dedicado

a las interrupciones.

Deshabilitar al principio de la RSI y activarlas de nuevo al finalizar la misma. Puede ser de manera

automática o por el usuario.

Desactivar solo las interrupciones que tengan menor prioridad que la asociada a la RSI que se está

ejecutando en ese momento.

Deshabilitar de forma selectiva distintos niveles de prioridad de interrupción. Para lo cual se

emplean registros especiales denominados máscaras en el que cada uno de sus bits identifican a

un nivel distinto y modificando su contenido se puede establecer que niveles están activos en ese

momento. Se puede cambiar por el programador.

[editar]Tormenta de interrupciones

Page 52: Tarea 2 mapa mental int,mod dir,mem and reg

Este evento se puede producir cuando un procesador recibe un número demasiado grande de

interrupciones, las cuales consumen la mayor parte del tiempo del procesador. Las tormentas de

interrupciones suelen ser causadas por dispositivos de hardware que no son compatibles con una tasa

de interrupción limitante.

Como curiosidad, se conjetura que la primera tormenta de interrupciones pudo ocurrir durante el

descenso lunar del Apollo 11 en 1969.

[editar]Véase también

Modos de direccionamientoLos llamados modos de direccionamiento son las diferentes maneras de especificar en informática un

operando dentro de una instrucción en lenguaje ensamblador.

Un modo de direccionamiento especifica la forma de calcular la dirección de memoria efectiva de un

operando mediante el uso de la información contenida en registros y / o constantes, contenida dentro de

una instrucción de la máquina o en otra parte.

Contenido

  [ocultar]

1 ¿Cuántos modos de direccionamiento existen?

2 Advertencia

3 Tipos de Direccionamiento

o 3.1 Implícito

o 3.2 Inmediato

o 3.3 Directo

o 3.4 Indirecto

o 3.5 Absoluto

o 3.6 De registro

o 3.7 Indirecto mediante registros

o 3.8 De desplazamiento

o 3.9 De pila

o 3.10 Respecto a un registro base

o 3.11 Respecto a un registro índice

o 3.12 Respecto al contador de programa

o 3.13 Indexado con autoincremento/autodecremento

Page 53: Tarea 2 mapa mental int,mod dir,mem and reg

o 3.14 Instrucción de salto con direccionamiento absoluto

o 3.15 Instrucción de salto con direccionamiento relativo

4 Direccionamiento paginado y direccionamiento segmentado

5 Algunos modos de direccionamiento obsoletos

6 Direccionamiento absoluto vs Direccionamiento relativo

7 Modos de direccionamiento secuencial

o 7.1 Ejecución secuencial

o 7.2 CPU'S que no utilizan la ejecución secuencial

o 7.3 Ejecución condicional

o 7.4 Salto

8 Modos simples de direccionamiento de datos

o 8.1 Registro

o 8.2 Base más desplazamiento y variaciones

[editar]¿Cuántos modos de direccionamiento existen?

Diferentes arquitecturas de computadores varían mucho en cuanto al número de modos de

direccionamiento que ofrecen desde el hardware. Eliminar los modos de direccionamiento más

complejos podría presentar una serie de beneficios, aunque podría requerir de instrucciones adicionales,

e incluso de otro registro. Se ha comprobado que el diseño de CPUs segmentadas es mucho más fácil

si los únicos modos de direccionamiento que proporcionan son simples.

La mayoría de las máquinas RISC disponen de apenas cinco modos de direccionamiento simple,

mientras que otras máquinas CISC tales como el DEC VAX tienen más de una docena de modos de

direccionamiento, algunos de ellos demasiado complejos. El mainframe IBM System/360 disponía

únicamente de tres modos de direccionamiento; algunos más fueron añadidos posteriormente para

el System/390.

Cuando existen solo unos cuantos modos, estos van codificados directamente dentro de la propia

instrucción (Un ejemplo lo podemos encontrar en el IBM/390, y en la mayoría de los RISC). Sin

embargo, cuando hay demasiados modos, a menudo suele reservarse un campo específico en la propia

instrucción, para especificar dicho modo de direccionamiento. El DEC VAX permitía múltiples operandos

en memoria en la mayoría de sus instrucciones, y reservaba los primeros bits de cada operando para

indicar el modo de direccionamiento de ese operando en particular.

Incluso en computadores con muchos modos de direccionamiento, algunas medidas realizadas a

programas indican que los modos más simples representan cerca del 90% o más de todos los modos de

direccionamiento utilizados. Dado que la mayoría de estas medidas son obtenidas a partir de códigos de

Page 54: Tarea 2 mapa mental int,mod dir,mem and reg

alto nivel generados a partir de compiladores, nos da una idea de las limitaciones que presentan los

compiladores que se utilizan.

[editar]Advertencia

Tenga en cuenta que no existe una forma generalmente aceptada de nombrar a los distintos modos de

direccionamiento. En particular, los distintos autores y fabricantes de equipos pueden dar nombres

diferentes para el modo de hacer frente al mismo, o los mismos nombres, a los diferentes modos de

direccionamiento. Además, un modo de direccionamiento que en una determinada arquitectura se trata

como un modo de direccionamiento, puede representar la funcionalidad que en otra arquitectura está

cubierto por dos o más modos de direccionamiento.

El término "modo de direccionamiento" está sujeta a interpretaciones diferentes: o bien "dirección de

memoria de modo de cálculo" o "modo de acceso operando". Bajo las instrucciones de la primera

interpretación, que no puede leer o escribir de la memoria a la memoria (como "añadir literal de

registro"), se considerará que no tienen un "modo de direccionamiento". La segunda interpretación

permite para las máquinas tales como VAX, que utilizan bits de modo operando para permitir un

operando literal.Sólo la primera interpretación se aplica a las instrucciones tales como "carga efectiva de

dirección".

Las instrucciones que aparecen a continuación son meramente representativas a fin de ilustrar los

modos de direccionamiento, y no necesariamente reflejan los mnemónicos utilizado por cualquier equipo

en particular.

[editar]Tipos de Direccionamiento

[editar]Implícito

En este modo de direccionamiento no es necesario poner ninguna dirección de forma explícita, ya que

en el propio código de operación se conoce la dirección del (de los) operando(s) al (a los) que se desea

acceder o con el (los) que se quiere operar.

Supongamos una arquitectura de pila, las operaciones aritméticas no requieren direccionamiento

explícito por lo que se ponen como:

- add

- sub

...

¿Por qué? Porque cuando se opera con dos datos en esta arquitectura se sabe que son los dos

elementos del tope de la pila:

Page 55: Tarea 2 mapa mental int,mod dir,mem and reg

Ejemplo de una pila

1 2 3 4 5 6 <- pila

top() es 1

ntop() es 2

donde top() representa el tope de la pila y ntop() el siguiente al tope de la pila y son estos argumentos

con los que se opera al llamar a una orden en concreto.

Otro ejemplo de este tipo de direccionamiento lo podemos encontrar en la arquitectura de acumulador

(AC) donde siempre hay un parámetro implícito y este es el AC.

Para finalizar y dejar este modo de direccionamiento generalizado para las arquitecturas más usuales,

remarcamos que también podemos encontrarlo en la arquitectura con registros de propósito general, por

ejemplo con órdenes como setc, que pone a 1 el registro c (acarreo).

[editar]Inmediato

En la instrucción está incluido directamente el operando.

En este modo el operando es especificado en la instrucción misma. En otras palabras, una instrucción

de modo inmediato tiene un campo de operando en vez de un campo de dirección. El campo del

operando contiene el operando actual que se debe utilizar en conjunto con la operación especificada en

la instrucción. Las instrucciones de modo inmediato son útiles para inicializar los registros en un valor

constante.

Cuando el campo de dirección especifica un registro del procesador, la instrucción se dice que está en

el modo de registro.

ejemplo:MOV A,#17H

[editar]Directo

El campo de operando en la instrucción contiene la dirección en memoria donde se encuentra el

operando.

Page 56: Tarea 2 mapa mental int,mod dir,mem and reg

En este modo la dirección efectiva es igual a la parte de dirección de la instrucción. El operando reside

en la memoria y su dirección es dada directamente por el campo de dirección de la instrucción. En una

instrucción de tipo ramificación el campo de dirección especifica la dirección de la rama actual.

Con este tipo de direccionamiento, la dirección efectiva es contenida en la misma instrucción, tal como

los valores de datos inmediatos que son contenidos en la instrucción. Un procesador de 16 bits suma la

dirección efectiva al contenido del segmento de datos previamente desplazado en 4 bits para producir la

dirección física del operando.

Ejemplo: MOV A,17H

[editar]Indirecto

El campo de operando contiene una dirección de memoria, en la que se encuentra la dirección efectiva

del operando.

Page 57: Tarea 2 mapa mental int,mod dir,mem and reg

Ejemplo: MOV A,@17H

[editar]Absoluto

El campo de operando contiene una dirección en memoria, en la que se encuentra la instrucción.

[editar]De registro

Sirve para especificar operandos que están en registros.

Page 58: Tarea 2 mapa mental int,mod dir,mem and reg

Ejemplo: MOV A,R0

[editar]Indirecto mediante registros

El campo de operando de la instrucción contiene un identificador de

registro en el que se encuentra la dirección efectiva del operando.

En este modo el campo de la dirección de la instrucción da la dirección en donde la dirección efectiva se

almacena en la memoria. El control localiza la instrucción de la memoria y utiliza su parte de dirección

para accesar la memoria de nuevo para leer una dirección efectiva. Unos pocos modos de

direccionamiento requieren que el campo de dirección de la instrucción sea sumado al control de un

registro especificado en el procesador. La dirección efectiva en este modo se obtiene del siguiente

cálculo:

Dir. efectiva = Dir. de la parte de la instrucción + Contenido del registro del procesador

Page 59: Tarea 2 mapa mental int,mod dir,mem and reg

Ejemplo: MOV A,@R0

[editar]De desplazamiento

Combina el modo directo e indirecto mediante registros

[editar]De pila

Se utiliza cuando el operando está en memoria y en la cabecera de la pila.

Este direccionamiento se basa en las estructuras denominadas Pila(tipo LIFO), las cuales están

marcados por el fondo de la pila y el puntero de pila (*SP), El puntero de pila apunta a la última posición

ocupada. Así, como puntero de direccionamiento usaremos el SP. El desplazamiento más el valor del

SP nos dará la dirección del objeto al que queramos hacer referencia. En ocasiones, si no existe C. de

desplazamiento solo se trabajara con la cima de la pila. Este tipo de direccionamiento nos aporta

flexibilidad pero por el contrario, es mucho más complejo que otros tipos estudiados más arriba.

[editar]Respecto a un registro base

Este modo de direccionamiento es muy usado por los ensambladores cuando se llaman a las funciones

(para acceder a los parámetros apilados en la pila, valga la redundancia). Consiste, al igual que el

indirecto a través de registro, en calcular la EA (Effective Address) como la suma del contenido del

registro base y un cierto desplazamiento (u offset) que siempre será positivo. Esta técnica permite

códigos reentrantes y acceder de forma fácil y rápida a posiciones cercanas de memoria.

Page 60: Tarea 2 mapa mental int,mod dir,mem and reg

EA = RB+offset RB = registro base offset = desplazamiento -> RB se

comporta como una dirección de memoria a la que se le sumará el

desplazamiento

[editar]Respecto a un registro índice

Es similar al anterior, lo único que es el contenido del registro índice el que indica el desplazamiento que

se produce a partir de una dirección de memoria que se pasa también como argumento a la orden que

utiliza este modo de direccionamiento. Aunque en esencia son dos modos equivalentes. La EA se

calcula como la suma del contenido del registro índice y una dirección de memoria:

EA = RI+DM RI = registro índice DM = dirección de memoria -> RI se

comporta como un offset

=== Indexado respecto a una base === Se trata de una combinación de los dos anteriores y consiste en

calcular la dirección efectiva como:

EA = RI+RB+DM

-> Las siglas significan lo mismo que en el caso anterior

[editar]Respecto al contador de programa

Consiste en dirección una posición de memoria usando como registro base al contador de programa

(PC), el funcionamiento es análogo al direccionamiento respecto a registro base con la salvedad de que,

en este caso, el offset puede ser también negativo.

[editar]Indexado con autoincremento/autodecremento

Es un modo de direccionamiento análogo al indexado, explicado

anteriormente.

La única diferencia es que permite un incremento o decremento de la

dirección final o el registro índice según

los siguientes casos:

-> Indexado con autopreincremento: Incrementa el registro índice primero (se incrementa un valor,

según el tamaño del objeto direccionado) y luego calcula la EA al igual que el direccionamiento

indexado.

-> Indexado con autoposincremento: Calcula la dirección efectiva y después incrementa esta.

-> Indexado con autopredecremento: Decrementa el registro índice y después calcula la dirección

efectiva.

-> Indexado con autoposdecremento: Calcula la dirección efectica y después decrementa esta.

Page 61: Tarea 2 mapa mental int,mod dir,mem and reg

[editar]Instrucción de salto con direccionamiento absoluto

Consiste en cargar en el PC el valor que se especifica en la orden de

salto, p.e:

jmp 0xAB ----> Carga 0xAB en PC

[editar]Instrucción de salto con direccionamiento relativo

Es parecida a la especificada anteriormente la diferencia es que el salto es relativo al PC, pongamos un

ejemplo:

Supongamos que PC vale = 0x0A, si nosotros interpretamos la instrucción jr +03, saltaremos tres

posiciones posteriores a PC (también podría ser -03 y serían posiciones anteriores). Pero, ¡cuidado! si

esa instrucción estaba en la posición 0x0A la dirección de PC a incrementar será la inmediatamente

posterior (ya que PC se incrementa automáticamente después de leer la instrucción), por lo que

quedaría:

PC = 0x0B ---> nuevo PC = 0x0B+0x03 = 0x0E, con lo que el PC quedaría como 0x0E.

[editar]Direccionamiento paginado y direccionamiento segmentado

Paginado: La memoria se encuentra actualmente dividida en páginas(bloques de igual longitud).

Para obtener las direcciones necesitamos:

Indicador de página (IP): en un registro específico o de propósito general de la máquina.

Dirección de la palabra (DP): en el campo CD de la instrucción.

Así, concatenando ambas partes obtenemos la dirección completa.

Page 62: Tarea 2 mapa mental int,mod dir,mem and reg

Segmentado: La memoria se divide en porciones cuyos tamaños son variables. Así, para acceder a

ellos se tiene una tabla de segmentos que contiene la dirección del comienzo y del final de cada

segmento en memoria.

Usar este tipo de direccionamiento tiene como ventajas que se puede definir segmentos de tamaño

arbitrario. Por otro lado, esta misma ventaja, el fraccionamiento de memoria es uno de sus problemas.

Ambos modos de direccionamiento facilitan la multiprogramación gracias a la técnica de la memoria

virtual que permite que un proceso no tenga que estar cargado íntegramente en memoria, si no que se

cargan distintas páginas del mismo (o segmentos). Si se intenta cargar una página o segmento que no

se encuentra en la memoria principal se produce una excepción de falta de página o segmento y se

accede a la memoria para cargar la información requerida en la memoria principal.

[editar]Algunos modos de direccionamiento obsoletos

Estos modos fueron usados durante 1950-1980 y ya no están disponibles en los computadores

modernos. Esta lista no es completa, puesto que hubo otros muchos modos de direccionamiento más,

algunos más interesantes y peculiares.

Indirecto de multinivel de memoria

Page 63: Tarea 2 mapa mental int,mod dir,mem and reg

Si la longitd de palabra era mayor que la dirección, la palabra era referenciada por este direccionamiento

indirecto de multinivel, que podía tener una "bandera" para indicar un ciclo indirecto de memoria. Es

necesario tener cuidado para asegurar que una cadena de direcciones indirectas no se refiera a ella

misma , si lo hiciera, se llegaría a un bucle infinito mientras trata de encontrar la dirección.

El DEC PDP-10 con 18 bits de direccionamiento y palabras de 36 bits permitían este modo de

direccionamiento con la posibilidad de usar un registro principal para cada fase.

Indirecto de memoria con autoincremento

En algunos minicomputadores había normalmente 16 localizaciones especiales de memoria. Cuando se

accedía a memoria, la dirección era automáticamente incrementada y decrementada después de su

uso. Esto hacía muy fácil acceder a memoria en bucles sin usar ningún registro.

"Página cero

La familia Motorola 6800 y la MOS Technology 6502 fueron unas familias de pobres microprocesadores

CISC. Las instrucciones aritméticas y lógicas estaban casi todas hechas en contra de los valores de

memoria. Como resultado, las instrucciones necesitaban incluir una localización de dos bytes en

memoria.

Los diseñadores de estos procesadores incluían un "remedio" llamado direccionamiento "página cero".

Los 256 bytes iniciales de memoria podían ser accedidos usando un byte o una dirección de memoria

indexada. Esto reducía el tiempo de ejecución de las instrucciones un ciclo de reloj. Almacenando datos

en esta "region" los programas podían ser más pequeños y más rápidos.

Como resultado, la "página cero" fue usada de forma parecía a un archivo de registro. En muchos

sistemas, sin embargo, provocó una gran utilización del área de memoria de la página cero por el

sistema operativo y por los usuarios de programas. Esto limitó su uso desde que el espacio libre fue

limitado.

Índice Siguiente Instrucción

El Elliott 503, el Elliott 803, y el Apollo Guidance Computer sólo se utiliza direccionamiento absoluto, y

no tenía ningún registro de índice. Por lo tanto, saltos indirectos, o salta a través de registros, no se

admiten en el conjunto de instrucciones. En su lugar, puede ser instruido para agregar el contenido de la

palabra de la memoria actual a la siguiente instrucción. Adición de un valor pequeño a la siguiente

instrucción a ejecutar podría, por ejemplo, cambiar un JUMP 0 en un JUMP 20, creando así el efecto de

un salto indexado. Tenga en cuenta que la instrucción se modifica sobre la marcha y se mantiene sin

cambios en la memoria, es decir, no es auto-modificar el código.

Page 64: Tarea 2 mapa mental int,mod dir,mem and reg

[editar]Direccionamiento absoluto vs Direccionamiento relativo

En esta sección vamos a resaltar las diferencias de estos dos técnicas de direccionamiento y aclarar las

ventajas y desventajas que cada una de ellas conlleva.

Direccionamiento absoluto: Consiste en direccionar una posición de memoria de forma directa,

esto es, que la dirección hace referencia directamente a dicha posición sin tener que realizar

cálculos adicionales para la EA.

Direccionamiento relativo: Cuando para direccionar una posición de memoria se hace referencia

a otra sobre la cual se especifica un incremento o decremento, es decir, se requiere otro dato para

el cálculo de la dirección efectiva.

Generalmente se usan los direccionamientos relativos ya que, al ejecutar un cierto programa se cumple

la proximidad espacial y temporal, lo que implica que datos que ya han sido usados o que se encuentran

en posiciones cercanas al PC tendrán una alta probabilidad de ser referenciados próximamente. Otras

de las ventajas del direccionamiento relativo es que permite los códigos reentrantes y cambiar ciertas

direcciones sin tener que volver a compilar el programa. Es también útil porque nunca se sabe en qué

posición de memoria se cargará un determinado programa. Por último reduce el número de bits para

especificar las direcciones y se facilita la referencia a datos del programa a través de los registros base.

El problema viene cuando queremos referenciar un dato al que no podemos acceder de forma relativa

(p.e porque los registros base no puedan alcanzar dicha posición aun con el incremento más grande

que podamos darle), en este caso se requiere el direccionamiento absoluto que sí es capaz de acceder,

por lo general, a cualquier dirección de memoria.

[editar]Modos de direccionamiento secuencial

[editar]Ejecución secuencial

+------+

| nop | ejecuta la siguiente instrucción

+------+

(Dirección Efectiva PC = dirección de la instrucción siguiente)

El CPU, después de ejecutar una instrucción secuencial, inmediatamente ejecuta la instrución siguiente.

La ejecución secuencial no esta considerada un modo de direccionamiento en algunos computadores.

La mayoría de instrucciones en la mayoría de las arquitecturas de CPU son instrucciones secuenciales.

Debido a que la mayoría de las instrucciones son de tipo secuencial, los diseñadores de la CPU a

Page 65: Tarea 2 mapa mental int,mod dir,mem and reg

menudo añaden características que deliberadamente sacrifican el rendimiento por un lado, y por otro las

instrucciones de la rama de instrucciones a fin de que estas instrucciones secuenciales corran más

rápido.

Las ramas condicionales cargan en el PC varios resultados posibles, muchas de las arquitecturas CPU

usan algún otro modo de direccionamiento para la "toma" de rama, y la ejecución secuencial para la "no

toma" de rama.

Muchas características de las CPU's modernas mantienen la ilusión de que cada instrucción termina

antes de que la siguiente comienze, dando resultados finales iguales, a pesar de que no es exactamente

lo que sucede internamente.

[editar]CPU'S que no utilizan la ejecución secuencial

Las CPU's que no utilizan la ejecución secuencial con un contador de programa son extremadamente

raras. En algunos procesadores, en cada instrucción siempre se especifica la dirección de la instrucción

siguiente. Esta CPU tiene un puntero de instrucción que sostiene la dirección especificada, pero no tiene

un programa completo mostrado. Las CPU's incluyen algunas cajas de ritmos de la memoria, la máquina

SECD, y el RTX 32P.

Otras arquitecturas de computación van mucho más allá, trantando de evitar el cuello de botella de von

Neumann, usando una variedad de alternativas para el contador de programa.

[editar]Ejecución condicional

Algunas arquitecturas de ordenador (por ejemplo, ARM) tienen instrucciones condicionales que en

algunos casos puede obviar la nacesidad de saltos condicionales y evitar el lavado de la tubería de la

instrucción. Una instrucción tal como "comparar" see utiliza para establecer un código de condición, y las

instrucciones posteriores incluyen una prueba de que el código de condición para ver si se cumplen o se

ignoran.

[editar]Salto

+------+-----+-----+

|skipEQ| reg1| reg2| Salta a la siguiente instrucción si

reg1=reg2

+------+-----+-----+

(EA PC = dirección de la instrucción siguiente + 1)

Saltar abordar puede ser considerado como un tipo especial de modo de direccionamiento relativo al PC

con un fijo "una" compensación. Al igual que en PC direccionamiento relativo, algunas CPU's tienen

versiones de este modo de direccionamiento que sólo se refieren a un registro ( "saltar si REG1==0") o

Page 66: Tarea 2 mapa mental int,mod dir,mem and reg

no hay registros, de manera implícita, referente a algunos bits previamente establecidos en el registro

del estado. Otras CPU's tienen una versión que selecciona un byte específico de prueba ("saltar si el bit

7 de reg12 es 0").

A diferencia de todas las ramas condicinales, un "salto" no necesita instrucciones para vaciar la tubería

de la instrucción, a pesar de que puede necesitarlas para hacer que la siguiente instrucción sea

ignorada.

[editar]Modos simples de direccionamiento de datos

[editar]Registro

+------+-----+-----+-----+

| mul | reg1| reg2| reg3| reg1 := reg2 * reg3;

+------+-----+-----+-----+

Este "modo de direccionamiento" no tiene una dirección efectiva y no se considera como un modo de

dirección en algunas computadoras.

En este ejemplo, todos los operandos están en registros, y el resultado se coloca en un registro.

[editar]Base más desplazamiento y variaciones

Muchas veces nos referimos a él como "base más desplazamiento"

+------+-----+-----+----------------+

| load | reg | base| offset | reg := RAM[base + offset]

+------+-----+-----+----------------+

(La dirección efectiva = desplazamiento + contenidos de la base

especificada del registro)

El desplazamiento suele ser un valor con signo de 16 bits (aunque la 80386 se expandió a 32 bits).

Si el desplazamiento es cero, esto se convierte en un ejemplo de registro indirecto frente, la dirección

efectiva es sólo el valor en el registro de base.

En muchas máquinas RISC, el registro 0 se fija en el valor cero. Si el registro 0 se utiliza como el

registro de base, esto se convierte en un ejemplo de direccionamiento absoluto. Sin embargo, sólo una

pequeña parte de la memoria se puede acceder (64 kilobytes, si el desplazamiento es de 16 bits).

El desplazamiento de 16 bits puede parecer muy pequeño en relación con el tamaño de la memoria de

los equipos actuales (esta es la razón por la 80386 se expandió a 32 bits). Podría ser peor ya que: los

sevidores IBM System/360 sólo tienen un signo de 12 bits de desplazamiento. Sin embargo, el principio

Page 67: Tarea 2 mapa mental int,mod dir,mem and reg

de localización se aplica en un corto espacio de tiempo, la mayoría de los elementos de datos que un

programa quiere acceder están bastante cerca uno del otro.

Este modo de direccionamiento está estrechamente relacionado con el modo de direccionamiento

absoluto.

Ejemplo 1: Dentro de una subrutina, un programador estará principalmente interesados en los

parámetros y las variables locales, que rara vez superan 64 KB, para lo que un registro base es

suficiente. Si esta rutina es un método de clase en un lenguaje orientado a objetos, entonces se

necesita un segundo registro base con punteros en los atributos del objeto actual.