Professional Documents
Culture Documents
CONCEPTOS FUNDAMENTALES
Estas causas han hecho que el hombre, desde la antigedad, haya tratado de buscar formas
de automatizar los clculos. Precisamente la palabra Informtica se origina de la fusin de
las palabras Informacin y Automtica, y la podramos denir como el conjunto de tcnicas
tendentes a facilitar el tratamiento automtico de la informacin.
1
2 Conceptos fundamentales
Los computadores electrnicos salvan estos inconvenientes ya que carecen de partes mviles
y la velocidad de transmisin de la informacin por mtodos elctricos no es comparable a la
de ningn elemento mecnico.
El primer elemento electrnico usado para calcular fue la vlvula de vaco y, probablemen-
te, el primer computador electrnico de uso general fue el E.N.I.A.C. (Electronic Numerical
Integrator and Calculator) construido en la Universidad de Pennsylvania (1943-46). El primer
computador de programa almacenado fue el E.D.V.A.C. (Electronic Discrete Variable Com-
puter, 1945-51) basado en la idea de John Von Neumann, que tambin particip en el proyecto
E.N.I.A.C. de que el programa debe almacenarse en la misma memoria que los datos.
Computadores con conjunto reducido de instrucciones (RISC, reduced instruction set com-
puter): en estadsticas sobre el uso de las instrucciones en computadores actuales se ha
visto que un porcentaje muy alto de instrucciones se usan muy poco. Ello lleva como
efecto que un conjunto de instrucciones muy amplio puede retardar innecesariamente las
instrucciones que ms se usan; esto se debe a que un juego de instrucciones amplio re-
quiere el uso de control microprogramado, mientras que la tecnologa actual permite, para
conjuntos de instrucciones reducidos, el uso de unidades de control cableadas ms rpi-
das. Por otra parte, las instrucciones ms simples son ms fciles de ejecutar en cadena,
con la tcnica de segmentacin que se describe a continuacin.
Proceso paralelo: El proceso paralelo trata de hacer funcionar a la vez a varias unidades de
proceso. Existen muchas formas de proceso paralelo siendo una de las ms frecuentes
la segmentacin que consiste en procesar a la vez varias instrucciones aunque cada una
de ellas en diferente fase, de forma similar a una fabricacin en cadena. Otras formas de
proceso paralelo requieren mltiples procesadores. En este caso, para resolver cierto tipo
de problemas, ser necesario dividir el problema en partes para resolver cada una de ellas
en un procesador. Tambin es posible repartir los diversos procesos en diferentes proce-
sadores lo que se conoce como multiproceso simtrico, que es mucho ms sencillo que
lo anterior ya que no hay que dividir el problema en partes. Otra posibilidad es el proce-
samiento multihilo (multithread processing) en que un mismo proceso se desarrolla en
mltiples hilos que pueden ser tratados por diferentes procesadores.
Por otra parte, la Electrnica est evolucionando de forma paralela para conseguir dispo-
sitivos electrnicos cada vez ms rpidos. En esta lnea existen procesadores que funcionan a
varios Gigaciclos.
Instrucciones, es decir, la secuencia de operaciones que hay que efectuar para resolver el pro-
blema (receta).
4 Conceptos fundamentales
Datos: estos datos pueden ser los datos de partida para resolver el problema o tambin resultados
de los clculos intermedios.
los resultados de los clculos que la mquina hiciera. Por otro lado, tambin sern necesarios
unos medios de comunicacin entre las diferentes partes anteriores.
Como consecuencia de lo anterior, podemos decir que cualquier calculador, humano o arti-
cial, necesita, como mnimo, los siguientes componentes:
f = fn fn1 . . . f2 f1
de tal forma que las funciones fi pueden ser especicadas mediante el conjunto de instrucciones
de la mquina, es decir, el conjunto de operaciones elementales que la mquina puede realizar.
La secuencia de funciones
f1 , f2 , . . . , fn1 , fn
puede interpretarse como el programa para evaluar la funcin f (X) y la secuencia de opera-
ciones elementales
Una cuestin que nos podemos plantear es: Qu clculos, o procesos de computacin en el
sentido de la denicin anterior, no es razonable que una mquina pueda realizar? Un modelo
mental para dar respuesta a este tipo de preguntas fue propuesto por Alan Turing (1936). Este
modelo se llama mquina de Turing y en la gura 1.3 se muestran sus componentes:
La memoria es una cinta sin lmites dividida en celdas. Cada una de las celdas puede contener
un smbolo de un conjunto nito de ellos, a este conjunto se le denomina alfabeto de la
mquina.
El procesador es una mquina digital con un nmero nito de conguraciones internas o es-
tados.
sh ti oj sk
oj = H Detiene el proceso.
Fig. 1.5. Programa de una mquina de Turing para sumar dos nmeros.
Para efectuar un clculo Z = f (X), la mquina de Turing opera como sigue: el dato de en-
trada X tiene que codicarse de forma que pueda almacenarse en la cinta, entonces se arranca
el proceso causando la secuencia de operaciones f1 , . . . , fn , cuando concluya la n-sima opera-
cin, la mquina habr escrito en la cinta la codicacin del resultado Z = f (X).
Las mquinas de Turing constituyen un ejemplo de los denominados autmatas.
Problemas no nitos: las mquinas de Turing tienen una suposicin no realizable: la cinta es
innita y, por tanto, puede tener innito nmero de estados. Desde este punto de vista las
mquinas de Turing pueden considerarse computadores de innitos estados. Los compu-
tadores reales son mquinas con un nmero nito de estados puesto que su memoria
es limitada. Existen ciertos problemas que una mquina de Turing puede resolver y un
computador de estados nitos no. Por ejemplo una mquina de estados nitos no puede
multiplicar exactamente dos nmeros binarios de una longitud arbitraria, sin embargo,
una mquina de Turing podra hacerlo. Esta limitacin slo tiene relevancia para algunos
problemas matemticos porque actualmente la memoria de los computadores es nita
pero muy grande.
Por una parte existe una cota superior de velocidad que es la velocidad de la luz, que
tambin es la velocidad de transmisin de los campos elctricos. Este lmite hace,
por ejemplo, que el tiempo de retardo a travs de un conductor de 3 cm. sea
3 102 m
= 1010 sg = 101 nsg
3 108 m/sg
Lo que correspondera a una frecuencia de
1
= 10 GHz
1010 sg
Esto tambin nos da idea de que los dispositivos podrn ser ms rpidos cuanto ms
pequeos sean. Existe otra limitacin asociada a este hecho: los computadores ms
1.5. Limitaciones de los computadores 9
La velocidad con que operan los computadores se mide por el nmero de operaciones b-
sicas que pueden realizar por unidad de tiempo. Una unidad para medir esta velocidad es el
MIPS (1 milln de instrucciones/sg.), sin embargo esta unidad tiene el inconveniente de que
no es homognea porque las instrucciones de un procesador pueden ser mucho ms potentes
que las de otro. Una unidad algo ms able es el MFLOPS (1 milln de instrucciones de punto
otante/sg.) que, aunque en menor medida, tambin adolece del mismo defecto. Otra unidad
que se emplea mucho es el VUP (VAX process unit) que es la velocidad del computador en
cuestin tomando como unidad la del VAX-11/780, pero aqu tambin existe un inconveniente:
Qu tipo de programas usamos para comparar ambas mquinas? Este problema, aparente-
mente sencillo, no tiene solucin fcil ya que programas diferentes pueden causar resultados
muy dispares. Existen varios tipos de programas para evaluar el rendimiento de un compu-
tador (Hennessy & Patterson, 2003):
Aplicaciones reales: Se haran las pruebas con los programas que el usuario vaya a ejecutar en
ese computador. Si el uso no va a ser concreto se pueden utilizar programas variados de
uso frecuente: procesadores de textos, compiladores, programas de CAD, etc.
Aplicaciones modicadas: Se extraera de las aplicaciones reales la parte que se pretende me-
dir, prescindiendo de lo dems. Por ejemplo, si slo se quiere medir la calidad del proce-
sador, se quitaran las partes del programa dedicadas a entrada/salida, etc.
Benchmarks1 reducidos, que son pequeos programas de prueba cuyo resultado es conocido
antes de su ejecucin. Ejemplos muy tradicionales de este grupo de programas son la
inversin de una matriz y el algoritmo de clasicacin rpida (Quicksort).
Benchmarks sintticos: Estos programas son una evolucin de los ncleos e intentan recoger
en un programa de prueba las operaciones ms utilizadas en programas reales de ndole
muy diversa, promediadas en funcin de su uso en esas aplicaciones reales. Programas de
este tipo muy usados son el Whetstone y el Dhrystone.
1
Se denominan benchmarks a los programas destinados a medir la velocidad de los computadores.
10 Conceptos fundamentales
Actualmente existen benchmarks establecidos para medir las prestaciones de los compu-
tadores. La mayora de ellos proceden de SPEC (Standard Performance Evaluation Corpora-
tion) que dispone de programas de prueba para medir diferentes caractersticas de las mquinas.
Concretamente el que se est utilizando para evaluar la velocidad de la CPU en la actualidad es
SPEC CPU2006.
Para comparar mquinas distintas ante un mismo benchmark se puede utilizar la siguiente
frmula que mide su tiempo de ejecucin:
1
Tiempo de ejecucin= I C f
Este proceso continuara indenidamente y de esta forma el procesador podr ejecutar cual-
quier tipo de programas por grande que fuere su complejidad. Evidentemente el mismo proce-
sador deber poseer algn tipo de memoria interna con el n de contener la informacin acerca
de los sucesivos estados por los que tiene que pasar para ejecutar cada una de las instrucciones.
Esa memoria interna tambin deber contener la informacin acerca de la siguiente instruccin
a ejecutar. En la prctica, esa memoria interna, se materializa en los registros, que no son otra
cosa que memorias de muy poca capacidad, y sin embargo muy rpidas, que forman parte del
procesador.
La mayora de los computadores actuales siguen los mismos patrones de la arquitectura de
Von Neumann aunque se haya progresado tanto en los niveles inferiores a este modelo (hardwa-
re, tecnologas de circuitos, etc) como en los niveles superiores (lenguajes de alto nivel, sistemas
operativos, etc.).
1.7. Unidades funcionales 11
const
m = nmero mximo almacenable en una palabra; {2 no de bits-1}
n = tamao de la memoria;
p = nmero de registros del procesador;
type
palabra = 0..m;
dir = 0..n-1;
memoria = array[0..n-1] of palabra;
registros = array[0..p-1] of palabra;
procedure interprete (var mem:memoria; var regs:registros; inicio:dir)
var
pc, dirdato: dir;
ir, dato: palabra;
haydato, fin: boolean;
tipoinstr: integer;
begin
pc := inicio;
fin := false;
while not fin do
begin
ir := mem[pc]; pc := pc + 1;
determinatipo (ir, tipoinstr, haydato);
if haydato then
begin
determinadirdato (dirdato);
dato := mem[dirdato]
end
ejecuta (tipoinstr, dato, mem, regs, pc, fin)
end
end
Fig. 1.8. Intrprete para un procesador con la estructura de la gura 1.7 (Pascal).
Los registros para uso del programador, que hemos situado en la ALU, y que pueden
tener diferentes estructuras segn cul sea la organizacin interna del procesador.
Fig. 1.9. Intrprete para un procesador con la estructura de la gura 1.7 (C).
Cada una de estas fases o ciclos puede descomponerse a su vez en varias etapas ms elementales:
Ciclo de bsqueda:
Extraer de memoria la instruccin y llevarla al registro de instruccin. Para ha-
cerlo se carga el contador de programa (P C) en el registro de direccin de memoria
14 Conceptos fundamentales
Procesadores de pilas: basan su funcionamiento en una pila, en cuya cima se dejan los
operandos y el procesador deposita sus resultados.
1.10. Concepto de arquitectura de un computador 15
Procesadores con un solo acumulador: estas mquinas tienen un registro preferente, lla-
mado precisamente acumulador, donde se deposita obligatoriamente uno de los ope-
randos y queda el resultado de cada operacin. Suelen tener otros registros de propsito
especco para almacenar direcciones, apuntadores, etc.
Procesadores con registros de propsito general: al contrario que las mquinas del grupo
anterior, stas tienen varios registros en que se pueden depositar datos, direcciones, etc.
Si bien esta clasicacin est bien establecida, no hay una frontera muy clara entre estos
tipos, especialmente entre los dos ltimos.
La tendencia actual se dirige hacia procesadores con registros de propsito general. La ra-
zn para ello es que los registros de la CPU son mucho ms rpidos que la memoria y por ello
conviene tener sucientes registros para trasladar todas las informaciones que se usen con fre-
cuencia a esos registros. A su vez, las mquinas con registros de propsito general se pueden
tambin clasicar con arreglo al lugar donde residen los operandos de sus instrucciones en tres
tipos:
Registro-memoria, las instrucciones pueden tener uno de los operandos en memoria pero no
los dos. Estas mquinas suelen tener slo dos operandos por lo que uno de los operandos
fuente sirve tambin para almacenar el resultado, es decir se destruye.
Memoria-memoria, estas mquinas permiten que todos sus operandos residan en memoria,
aunque pueden tambin residir en registros, esto hace que sus operaciones sean muy po-
tentes pero tambin muy lentas. Este tipo de procesadores pueden tener instrucciones de
dos o tres operandos.
A lo largo del curso se irn viendo ejemplos y diferencias entre todos estos tipos de mqui-
nas, aunque la mayora de los ejemplos se reeren a organizaciones de registros de uso general.
capaces de ejecutar se le llama barrera o brecha semntica (semantic gap). Debido a que la
mayora de los lenguajes mquina son demasiado elementales, es difcil y tedioso utilizarlos,
por eso debe saltarse la barrera semntica y utilizar lenguajes ms cercanos al hombre. Dado
que la barrera semntica es demasiado amplia y con el n de que la traduccin entre lenguajes
no sea demasiado complicada, esta barrera no se salta de una sola vez, sino por etapas. Estas
etapas son los llamados niveles del computador. Partiendo del lenguaje mquina, llammosle
L1 , se hace necesario el disear un lenguaje que sea ms fcil de utilizar, L2 . Se har necesaria
la traduccin de las instrucciones del lenguaje L2 al L1 . En vez de hablar de traduccin, se
puede imaginar la existencia de una hipottica mquina, o mquina virtual M2 (gura 1.10),
siendo la mquina real M1 , cuyo lenguaje sea el L2 . Los lenguajes L1 y L2 no deben ser muy
diferentes para que la traduccin sea prctica y rpida. Esto limita al lenguaje L2 y hace ne-
cesario el diseo de lenguajes de niveles superiores. Para una mquina actual, el esquema de
niveles de mquinas virtuales podra ser el que se expone en la gura 1.11, aunque puede variar
de unos modelos a otros. El nivel de lenguaje mquina es el de los programas que es capaz de
interpretar un procesador dado; los niveles inferiores a ste normalmente no son accesibles al
usuario (programador) de la mquina. El usuario nal puede interpretar que el computador es
una mquina virtual que entiende instrucciones del nivel ms alto (lenguaje de aplicacin o len-
guaje de alto nivel) cuando realmente esas instrucciones tienen que ser traducidas hasta llegar
al nivel ejecutable realmente por el hardware.
La traduccin entre dos niveles Li y Li1 se har mediante un compilador o un intrprete.
Es interesante, en este punto, sealar la diferencia entre ambos:
Un compilador toma cada instruccin del lenguaje Li , lo sustituye por un grupo de ins-
trucciones del lenguaje Li1 y contina.
1.13.1. PDP-11
En la gura 1.12 se muestran los registros del PDP-11 (Programmed Data Processor) de
DEC (Digital Equipment Corporation). Esta mquina dispone de 8 registros de uso general de
16 bits (R0 a R7), de los cuales R6 es el apuntador de pila (SP , stack pointer) y R7 es el
1.13. Ejemplos de arquitecturas reales 19
contador de programa (P C, program counter). Como opcin, puede tener 6 registros de punto
otante de 64 bits; esta opcin ampla el juego de instrucciones del procesador original. El
PDP-11 tiene arquitectura de registros generales del tipo memoria-memoria.
El hecho de considerar al P C y al SP como registros generales hace que estos registros,
que en otros procesadores son nicamente de control, se traten como cualquier otro lo que da,
como veremos ms adelante, ms potencia a los modos de direccionamiento. Otro registro muy
importante es la palabra de estado del procesador (P SW , Processor status word) cuyos ltimos
bits se llaman cdigos o bits de condicin (ags) e indican algunas propiedades del resultado
de la ltima operacin efectuada. Estos bits son: Z (cero), N (negativo), V (desbordamiento
u overow) y C (acarreo, llevada o carry). Los cdigos de condicin se usan para tomar las
decisiones en las bifurcaciones condicionales como se ver en el captulo 4.
Una cuestin que hay que mencionar es la organizacin de la memoria. La informacin m-
nima direccionable en la memoria del PDP-11 es el byte, pero se pueden tambin direccionar
palabras (16 bits). La organizacin de la memoria obliga a que las palabras siempre se direc-
cionen en direcciones pares. Este hecho se llama alineacin. En cualquier mquina, se dice que
un acceso a un objeto de s bytes est alineado en la direccin A si A mod s = 0, es decir,
si los ltimos log2 s bits de la direccin A son 0 (suponiendo que s sea potencia de 2). En el
PDP-11, la alineacin afecta especialmente a las instrucciones cuyas longitudes siempre son
mltiplos de una palabra y por tanto siempre deben residir en direcciones pares. Esto hace que
el contenido del contador de programa siempre sea par y se deba incrementar en 2 cada vez que
se lee una palabra de cdigo. Por otra parte, cuando se accede a una palabra, el byte de menor
peso se sita en la direccin ms baja de las dos que ocupa. Esta forma de trabajar se denomina
little-endian, si los bytes se ordenaran de forma inversa se dice que el ordenador funciona en
big-endian (Cohen, 1981).
Es necesario comentar que el error ms grave en el diseo del PDP-11 fue dimensionar sus
20 Conceptos fundamentales
direcciones con 16 bits que, aunque en la poca eran sucientes, se quedaron cortos en muy
poco tiempo.
1.13.2. VAX
Esta mquina (originalmente llamada VAX-11, Virtual Address Extended PDP-11: PDP-11
extendido con direcciones virtuales), tambin de DEC, est basada en la anterior pero es ms
ambiciosa ya que est concebida como una gran computador. Tiene tambin organizacin de
registros generales pero de 32 bits y en mayor nmero. Tambin el P C y el SP se consideran
registros de uso general con las mismas implicaciones que en el PDP-11. Existen otros registros
de control: R12 o AP (argument pointer, apuntador a los argumentos) y R13 o F P (frame
pointer, apuntador de trama), estos registros se usan en las llamadas a procedimientos. La pa-
labra de estado del procesador pasa a ser una doble palabra (P SL: processor status longword:
doble palabra de estado del procesador) y los ltimos cuatro bits tienen el mismo signicado
que en el PDP-11 (bits de condicin). Puede manejar diferentes tamaos de datos: byte, palabra
(word, 2 bytes), doble palabra (longword, 4 bytes) y cudruple palabra (quadword, 8 bytes). La
mnima informacin direccionable es el byte pero, si la informacin direccionada es mayor no
hay restricciones en cuanto a su direccin; sin embargo, si se respeta la alineacin, los accesos
a memoria son ms rpidos. En cuanto a la ordenacin de los bytes de los tipos datos anteriores,
este procesador sigue la losofa little-endian (recurdese el apartado 1.13.1).
El VAX es muy verstil en cuanto a los tipos de datos que puede manejar: enteros de dife-
rentes tamaos (desde un byte hasta ocho), nmeros en punto otante en dos tamaos (simple
precisin, 4 bytes y doble precisin, 8 bytes), caracteres, nmeros en decimal empaquetado
1.13. Ejemplos de arquitecturas reales 21
(BCD), cadenas y otros de menor importancia. Este procesador es el ejemplo ms tpico de una
mquina de registros de uso general con arquitectura memoria-memoria.
La estructura de registros de los procesadores con arquitectura VAX puede verse en la gu-
ra 1.13.
Entre las caractersticas ms importantes de su organizacin cabe destacar la incorporacin
de una memoria cach, para aumentar la velocidad de trabajo, y un acelerador de punto otante
opcional cuya misin es incrementar la velocidad de las instrucciones de punto otante que, a
diferencia del PDP-11, son posibles aunque este acelerador no est presente.
1.13.3. IBM-360/370
En la gura 1.14 puede verse la estructura, desde el punto de vista del programador, de los
computadores IBM de la serie 360, que ms tarde se continu con la 370 (que en realidad emula
a la anterior). Este computador fue el primero en introducir los registros de uso general, tanto
en punto jo (para aritmtica entera) como en punto otante. Otra caracterstica de esta serie de
computadores es la gestin de las operaciones de entrada y salida mediante procesadores dedi-
cados denominados IOP (input-output procesors) o canales). Esta mquina es un computador
con registros de uso general que est a medio camino entre las arquitecturas registro-memoria
y memoria-memoria, aunque son pocas las instrucciones que obedecen al segundo esquema.
1.13.4. HP-3000
Este computador es un mini de 16 bits cuya principal caracterstica es tener una arquitec-
tura basada en pila. La memoria de esta mquina contiene las instrucciones y los datos en
segmentos separados. El esquema de los registros apuntadores y su utilizacin puede verse en
la gura 1.15. El rea de programa (gura 1.15 (a)) est limitado por los contenidos de los
22 Conceptos fundamentales
1.13.5. Z-80
El Z-80 de Zilog es un microprocesador de 8 bits aunque tiene instrucciones que manejan
nmeros de 16 bits (en forma little-endian, recurdese el apartado 1.13.1). Su arquitectura es
compatible en software con el Intel 8080 y tiene sus instrucciones como un subconjunto. Esta
compatibilidad le ha condicionado mucho, aunque el Z-80 ha mejorado al 8080 en muchas cues-
tiones como tecnologa, velocidad, nuevos modos de direccionamiento, juego de instrucciones
ms amplio, banco de registros ms completo, etc.
El Z-80 es una mquina que est entre las arquitecturas de acumulador y de registros
generales. Si se considera en este ltimo grupo, la situaramos en el tipo registro-memoria.
La palabra del Z-80 es de 8 bits aunque puede direccionar datos de 16 sin limitaciones de
alineacin. La estructura de registros del Z-80 se muestra en la gura 1.16. Se observa que
hay dos bancos de registros de datos y un juego de registros especiales (normalmente para
direccionamiento). El n de los dos bancos de registros es ganar tiempo ante la presencia de
interrupciones en que se puede conmutar al banco alternativo. Entre los registros cabe citar: A,
que es el acumulador; B, C, D, E, H y L son registros generales de 8 bits que tambin pueden
tomarse por parejas de 16 bits (BC, DE y HL); IX e IY , son los registros ndices; I que
almacena la parte alta de la direccin de comienzo de la tabla de vectores de interrupcin (ver
apartado 4.4.6), R es el registro que almacena el bloque de memoria que se va a refrescar y
F que es el registro de sealizadores (ags) que contiene los bits de condicin. Cabe destacar
que a los tpicos bits N , Z, V y C, el Z-80 aade dos ms: P , bit de paridad, que indica si el
nmero de unos del resultado ha sido par o impar, y H, semillevada (half-carry) que indica si
ha habido llevada de la mitad baja a la mitad alta del resultado.
24 Conceptos fundamentales
de estado tiene 16 bits entre los que se encuentran los bits de condicin que adems de los bits
ya mencionados N , Z, V y C incluye otro bit ms, X, denominado bit de extensin que sirve
para encadenar operaciones sobre datos de mayor longitud de los soportados por la mquina.
Aunque todos los registros tienen 32 bits, el bus de datos slo tiene 16 y el bus de direcciones
23 (A23 -A1 ), el bit de direccin A0 se manda a la memoria mediante dos lneas de control que
indican si se quiere acceder al byte bajo, al alto o a ambos (acceso a palabras de 16 bits). El byte
es la informacin mnima direccionable, sin embargo, tambin se pueden direccionar palabras
aunque slo en direcciones pares (alineacin obligatoria). Los tamaos de datos con que esta
mquina puede trabajar son byte, palabra (2 bytes) y doble palabra (4 bytes), estos datos se
organizan en memoria segn la pauta big-endian.
Los principales procesadores derivados del MC68000 son: el MC68020, cuya arquitectura
es como la del MC68000 pero con buses de 32 bits; el MC68030, que es similar al anterior
pero con una unidad de manejo de memoria para facilitar el trabajo con memoria virtual, el
MC68040, que es igual que el MC68030 pero con una memoria cach dentro de la pastilla y
un coprocesador de punto otante y, por ltimo, el MC68060, que incorpora dos procesadores
segmentados formando lo que se denomina un procesador superescalar. La tabla 1.1 muestra
la evolucin de esta familia de microprocesadores.
DL). Los registros apuntadores son SI (ndice fuente), DI (ndice destino), SP (apuntador de
pila) y BP (apuntador de base). Los registros de segmento se usan porque el 8086 direcciona la
memoria por segmentacin, es decir, cada acceso a memoria se identica por nmeros: la direc-
cin de comienzo de segmento (S) y el desplazamiento dentro del segmento (d). Los registros
de segmento contienen los 16 bits ms signicativos de la direccin de comienzo de segmento
(que tiene 20 bits). Los ltimos 4 bits se suponen 0 porque la direccin de inicio de segmento
debe ser mltiplo de 16. Para representar una direccin de la memoria del 8086 se escribe S : d
y la forma de calcular la direccin efectiva a partir de esta informacin es:
Direccin efectiva= 16 S + d
La direccin de comienzo de segmento, S, radica en uno de los registros de segmento que son
CS (segmento de cdigo), DS (segmento de datos), SS (segmento de pila) y ES (segmento
extra). Esta forma de segmentacin limita la memoria direccionable por este procesador a 1 Mb.
ya que las direcciones efectivas tienen 20 bits. Los registros de control tambin tienen 16 bits y
son el registro de estado (F LAGS), con los ags de condicin, y el apuntador de instrucciones
(IP , instruction pointer) que hace las funciones de contador de programa referido al segmento
de cdigo, de forma que la direccin de la siguiente instruccin a ejecutar viene dada por:
El 8086 puede trabajar con datos de 8 y 16 bits sin restricciones de alineacin pero la m-
quina es ms eciente si las palabras se encuentran en direccin par. La forma de almacenar los
bytes es little-endian.
Entre los derivados del 8086 se encuentran el 8088, que es internamente igual al 8086 pero
con el bus de datos externo de 8 bits, el 80286 que es una versin del 8086 que tiene incremen-
tada su memoria direccionable a 16 Mb., el 80386 que tiene los registros y el bus de 32 bits, el
80386SX, que es una versin del 80386 con bus de 16 bits compatible con el del 80286, y el
80486 que es una versin ms rpida del 80386 que incluye dentro del mismo chip el copro-
cesador matemtico y una memoria cach. El ltimo elemento de este grupo de procesadores,
el Pentium posee muchos elementos de los grandes computadores como el proceso paralelo,
arquitectura RISC, etc. Un miembro interesante de esta familia de procesadores es el 80386SL
que es una versin del 80386SX pensada para computadores porttiles y que, por tanto, tiene
bajo consumo para prolongar la vida de las bateras. Una caracterstica notable de este proce-
sador es que dispone de un chip de apoyo denominado 82360SL que integra gran parte de los
circuitos exteriores necesarios en una placa base de un computador personal. Otra caracterstica
importante de los chips SL es que disponen de un modo de funcionamiento en que, con el reloj
desactivado, mantienen su estado sin apenas consumo y pueden volver a la tarea anterior sin
perder datos. En la tabla 1.2 se muestra la evolucin de los microprocesadores de esta familia.
Los procesadores 80386 y 80486 tienen registros de 32 bits denominados EAX, EBX,
ECX, EDX, ESP , EBP , ESI, EDI, EIP y EF LAGS cuya parte baja corresponde a los
registros habituales del 8086. La estructura de estas mquinas puede verse en la gura 1.19.
Otra caracterstica importante de los procesadores 80386 y 80486 es la posibilidad de funcio-
namiento en tres modos diferentes: el modo real, compatible totalmente con el 8086, el modo
28 Conceptos fundamentales
protegido, en que tiene una gran capacidad de direccionamiento y realiza muchas funciones
para facilitar el trabajo multitarea y, por ltimo, el modo virtual, en que es compatible con el
8086 pero trabajando en multitarea de forma que cada proceso ve un 8086 para l solo. Este
modo en realidad es un submodo del modo protegido de forma que, estando un proceso en mo-
do virtual, puede funcionar de forma compatible con el 8086. El modo virtual se caracteriza
porque las funciones de E/S, que trabajando en multitarea pueden ocasionar problemas de inter-
bloqueos, provocan llamadas al sistema operativo con lo que ste las puede controlar para que
esos bloqueos no se produzcan.
como registros fuente de transferencias, adoptan el valor 0. Estos registros no deben usarse co-
mo operandos de destino. Otra observacin interesante que se desprende de la gura 1.20 es
que el registro de estado del procesador, con los bits sealizadores, y el apuntador de pila no es-
tn accesibles al programador, sin embargo, los sistemas operativos ms usuales utilizan como
apuntador de pila el registro entero R30.
Una innovacin de esta arquitectura es la incorporacin del denominado cdigo PAL (Pri-
vileged Architecture Library) que es un conjunto de funciones al que se puede llamar mediante
una instruccin especca (CALL_PAL) y que depende del sistema operativo utilizado. Esta
biblioteca de funciones reside en una memoria de slo lectura.
raciones de punto otante existen 4 registros de condicin llamados f cc0, f cc1, f cc2 y f cc3;
cuando se comparan nmeros en punto otante hay que indicar cul de ellos se va a utilizar.
Los procesadores con esta arquitectura manejan enteros de 8, 16, 32 y 64 bits, en la nomen-
clatura SPARC, estos tipo de datos se llaman, respectivamente, byte, semipalabra (halfword),
palabra (word o singleword) y doble palabra (o palabra extendida) (doubleword). Como se
mencion anteriormente, tambin pueden manejar diversos tipos de punto otante (32, 64 y 128
bits).
Una caracterstica importante de la ltima versin de la arquitectura SPARC (SPARC V9)
es que admite que los datos que ocupen ms de un byte se puedan poner en cualquier orden:
de mayor a menor peso (big-endian) o al revs (little-endian). Esto es vlido slo para datos y
depende de la situacin de un bit del registro de estado PSTATE. Los procesadores que permiten
compatibilizar ambos tipos de funcionamiento se dice son bi-endian.
Es preciso sealar que, en la arquitectura SPARC, se exige la alineacin de las direcciones
de memoria de acuerdo al tamao de los datos a que se accede. Esto afecta particularmente
a las instrucciones, que tienen todas 32 bits, por lo que deben residir siempre en direcciones
mltiplos de 4.
Bibliografa y referencias
C OHEN , D. 1981. On Holy Wars and a Plea for Peace. IEEE Computer, 14(10), 4854.
H ENNESSY, J.L., & PATTERSON , D.A. 2003. Computer Architecture. A Quantitative Approach. 3
edn. Morgan Kaufmann Publishers.
S TALLINGS , W. 2006. Computer Organization and Arquitecture: Designing for Performance. 7 edn.
Pearson-Prentice-Hall. Existe traduccin al castellano: Organizacin y arquitectura de computadores,
7a edicin, Pearson Prentice-Hall, 2006.
W EAVER , D.L., & G ERMOND , T. ( EDITORES ). 1994. The SPARC Architecture Manual, version 9.
Prentice-Hall International.
Cuestiones y problemas 33
CUESTIONES Y PROBLEMAS
1.1 Repetir el programa del ejemplo 1.1 para sumar nmeros en una mquina de Turing trans-
formando en blanco el 1 de la derecha en vez del de la izquierda.
1.2 Repetir el programa del ejemplo 1.1 para sumar nmeros en una mquina de Turing su-
poniendo que la cabeza est a la derecha de ambos datos.
1.3 Repetir el programa del ejemplo 1.1 para sumar nmeros en una mquina de Turing con
los dos cambios propuestos en los problemas anteriores.
1.4 Escribir un programa para una mquina de Turing que, dado un nmero natural, d como
resultado la parte entera de su mitad.
Mquina A:
Mquina B:
1.6 Repetir los programas de las guras 1.8 y 1.9 para un procesador que tenga instrucciones
con diferentes nmeros de operandos.