Está en la página 1de 27

5

Arquitectura y programacin de ordenadores

1 INTRODUCCION

Existe una gran variedad de sistemas que pueden recibir correctamente el nombre de
computador, desde microprocesadores de un solo chip, y de bajo coste, a computadores que
cuestan decenas de millones de euros. Esta variedad es patente no slo en costes, sino tambin
en tamao, prestaciones y aplicaciones. La rapidez de los cambios, que ha caracterizado
siempre a la tecnologa de computadores, contina sin pausa. Estos cambios cubren todo los
aspectos de la tecnologa de computadores, desde la tecnologa subyacente de circuitos
integrados, usados para construir componentes de computadores, hasta el creciente uso de
conceptos de organizacin paralela para combinan esos componentes.

A pesar de la variedad y rapidez de los cambios en el campo de los computadores, se aplican


sistemticamente ciertos conceptos fundamentales. La aplicacin de estos conceptos depende
del desarrollo dual de la tecnologa y de los objetivos, en cuanto a precio y aplicaciones, de
diseador. La intencin es ofrecer un concienzudo anlisis de los fundamentos de arquitectura
y organizacin de los computadores y relacionar estos, con materias de diseos actuales.
6

Arquitectura y programacin de ordenadores

1.1 ORGANIZACIN Y ARQUITECTURA

Cuando se describe un computador, frecuentemente se distingue entre arquitectura y


organizacin del computador. Aunque es difcil dar una definicin precisa para estos trminos
existe un consenso sobre las reas generales cubiertas por cada uno.

La arquitectura de computadores se refiere a los atributos de un sistema visibles para un


programador, que tienen un impacto directo en la ejecucin lgica de un programa. La
organizacin de computadores se refiere a las unidades funcionales y sus interconexiones, que
dan lugar a especificaciones arquitectnicas. Entre los ejemplos de atributos arquitectnicos se
encuentran el conjunto de instrucciones, el nmero de bits utilizados para representar varios
tipos de datos (por ejemplo, nmeros y caracteres), los mecanismos de entrada y salida y las
tcnicas para direccionamiento de memoria. Entre los atributos de organizacin se incluye en
aquellos detalles de hardware transparentes al programador, tales como seales de control,
interfaces entre computador y los perifricos y la tecnologa de memoria usada.

Para poner un ejemplo, una cuestin de diseo arquitectnico es si el computador tendr la


instruccin de multiplicar. Una cuestin de organizacin es si esa instruccin ser
implementada por una unidad especializada en multiplicar, o por el mecanismo que haga un
uso iterativo de la unidad de suma del sistema. La decisin de organizacin puede estar basada
en la frecuencia prevista del uso de la instruccin de multiplicar, la velocidad relativa de las
dos aproximaciones, y el coste y el tamao fsico de una unidad especializada en multiplicar.

Histricamente, y an hoy en da, la distincin entre arquitectura y organizacin ha sido


importante. Muchos fabricantes de computadores ofrecen una familia modelos, todos con la
misma arquitectura, pero con diferencias en cuanto a la organizacin. Consecuentemente, los
diferentes modelos de la familia tienen precios y prestaciones distintas. Ms an, una
arquitectura puede sobrevivir muchos aos, pero su organizacin cambia con la evolucin de
la tecnologa. Un ejemplo destacado de ambos fenmenos es la arquitectura IBM Sistema/370.
Esta arquitectura apareci por primera vez en 1970 e inclua varios modelos. Un cliente con
7

Arquitectura y programacin de ordenadores

necesidades modestas poda comprar un modelo ms barato y lento, y si la demanda se


incrementaba, cambiarse ms tarde a un modelo ms caro y rpido sin tener que abandonar el
software que ya haba sido desarrollado. A travs de los aos, IBM ha introducido muchos
modelos nuevos con tecnologa mejorada para reemplazar modelos ms viejos, ofreciendo al
consumidor mayor velocidad, precios ms bajos o ambas cosas a la vez. Estos modelos ms
nuevos conservaban la misma arquitectura, para proteger as la inversin en software del
consumidor. Podemos destacar que la arquitectura del Sistema/370, con unas pocas mejoras,
ha sobrevivido hasta hoy en da, como la arquitectura de la lnea de grandes productos de
computacin IBM.

En una clase de sistemas, los llamados microcomputador es, la relacin entre arquitectura y
organizacin es muy estrecha. Los cambios en la tecnologa no slo influyen en la
organizacin, lo que tambin dan lugar a la introduccin de arquitecturas ms ricas y potentes.
Generalmente, hay menos requisitos de compatibilidad, generacin generacin, para estas
pequeas mquinas. As, hay ms interaccin entre las decisiones de diseo arquitectnicas y
de organizacin. Un ejemplo interesante de stos a los computadores de repertorio reducido de
instrucciones (RISC, Reduced Instrution Set Computer).

1.2 ESTRUCTURA Y FUNCIONAMIENTO

Un computador es un sistema complejo; los computadores de hoy en da contienen millones


de componentes electrnicos bsicos. Cmo podramos describir los claramente?. La clave
est en reconocer la naturaleza jerrquica de la mayora de los sistemas complejos, incluyendo
el computador. Un sistema jerrquico es un conjunto de sus sistemas interrelacionados, cada
uno de los cuales, a su vez, se organiza en una estructura jerrquica, hasta que se alcanza el
nivel ms bajo del su sistema elemental.

La naturaleza jerrquica de los sistemas complejos es esencial, tanto para su diseo como para
su descripcin. El diseador necesita tratar solamente con un nivel particular del sistema a la
vez. En cada nivel, el sistema consta de un conjunto de componentes y sus interrelaciones. El
8

Arquitectura y programacin de ordenadores

comportamiento en cada nivel depende slo de una caracterizacin abstracta y simplificada


del sistema que hay en el siguiente nivel ms bajo. De cada nivel, al diseador importa la
estructura y funcionamiento:

Estructura: el modo en que los componentes estn interrelacionados.

Funcionamiento: la operacin de cada componente individual como parte de la


estructura.

En trminos de descripcin tenemos dos opciones: empezar por lo ms bajo y construir una
descripcin completa, o comenzar con una visin desde arriba y descomponer el sistema en
sus partes. La experiencia a partir de muchos campos nos ha enseado que la descripcin de
arriba a abajo es la ms clara y efectiva. Comenzaremos con los componentes principales del
sistema, describiendo su estructura y funcionamiento, y seguimos, sucesivamente, hace capas
ms bajas de la jerarqua.

Funcionamiento

Tanto la estructura como el funcionamiento de un computador son, en esencia, sencillos. En


trminos generales, slo hay cuatro funciones bsicas que un computador pueda llevar a cabo:

Procesamiento de datos

Almacenamiento de datos

Transferencia de datos

Control

El computador, por supuesto, tiene que ser capaz de procesar datos. Los datos pueden adoptar
una gran variedad de formas, y el rango de los requisitos de procesador es amplio. Sin
9

Arquitectura y programacin de ordenadores

embargo, veremos que hay slo unos pocos mtodos o tipos fundamentales de procesado de
datos.

Tambin es esencial que un computador almacene datos. Incluso si el computador esta


procesando datos al vuelo (es decir, si los datos se introducen y se procesan, y los resultados
se obtienen inmediatamente), el computador tiene que guardar temporalmente, al menos
aquellos datos con los que est trabajando en un momento dado. As, hay al menos una
funcin de almacenamiento de datos a corto plazo. Con igual importancia, el computador lleva
a cabo una funcin de almacenamiento de datos a largo plazo. El computador almacena
ficheros de datos para que se recuperen y actualicen en un futuro.

El computador tiene que ser capaz de transferir datos entre el mismo y el mundo exterior. El
entorno de operacin del computador se compone de dispositivos que sirven bien como fuente
o como destino de datos. Cuando se reciben o se llevan datos a un dispositivo que est
directamente conectado con el computador, el proceso se conoce como entrada-salida (E/S), y
este dispositivo de recibe el nombre de perifrico. El proceso de transferir datos a largas
distancias, desde o haca un dispositivo remoto, recibe el nombre de comunicacin de datos.

Finalmente, se debe haber un control de estas tres funciones. Este control es ejercido por el/los
ente(s) que proporciona(n) al computador instrucciones. Dentro del computador, una unidad
de control gestiona los recursos del computador y dirige las prestaciones de sus partes
funcionales en respuesta a estas instrucciones

A este nivel general de discusin, el nmero de operaciones posibles que pueden ser
realizadas es pequeo. El computador puede funcionar como un dispositivo de transferencia
de datos, simplemente transfiriendo datos de un perifrico o lnea de comunicaciones a otro.
Tambin puede funcionar como un dispositivo de almacenamiento de datos, contactos
transferidos desde un entorno externo al almacn de datos del computador (leer) y viceversa
(escribir).
10

Arquitectura y programacin de ordenadores

Estructura

El computador es una entidad que y entre acta de alguna manera con sus entorno externo. En
general, todas sus conexiones con el entorno externo puede ser clasificadas como dispositivos
perifricos o de comunicacin. Diremos algo sobre ambos tipos de conexiones.

En su nivel ms alto hay cuatro componentes estructurales principales :

Unidad de procesamiento (CPU, Central Procesing Unit): controla el


funcionamiento del computador y acab sus funciones de procesamiento de
datos. Frecuentemente se le llama simplemente procesador.

memoria principal: almacena datos.

E/S: transfiere datos entre computador y entorno externo.

Sistema de interconexin: es un mecanismo que proporciona la comunicacin entre


la CPU, la memoria principal y la E/S.
11

Arquitectura y programacin de ordenadores

COMPUTADOR

E/S M.P.
Interco-
nexin
interna
CPU

CPU

Puede que haya uno o ms de cada uno de estos componentes. Tradicionalmente, ha habido
slo una CPU. En los ltimos aos, ha habido un uso creciente de varios procesadores en un
solo sistema.

El componente ms interesante y, de algn modo, el ms complejo es la CPU; sus principales


componentes estructurales son:

Unidad de control: controla el funcionamiento de la CPU y, por tanto, del


computador.

Unidad Aritmtico-Lgica (ALU, Arithmetic Logic Unit): lleva a cabo las


funciones de procesamiento de datos del computador.

Registros: proporcionan almacenamiento interno a la CPU.

Interconexiones CPU: son mecanismos que proporcionan comunicacin entre la


unidad de control, la habl y los registros.
12

Arquitectura y programacin de ordenadores

CPU

Registros ALU

Bus interno

UC

1.3 EVOLUCIN Y PRESTACIONES DE LOS COMPUTADORES

1.3.1 La primera generacin: Los tubos de vaco

ENIAC
El ENIAC (Electronic Numerical Integrator And Computer), diseado y construido bajo la
supervisin de
John Mauchly y John tres Presper Eckert en la Universidad de Pennsyvania, fue el primer
computador electrnico de propsito general del mundo.

El proyecto fue una respuesta al necesidades militares en tiempo de guerra de los Estados
Unidos. El laboratorio de investigacin de balstica del ejrcito, una agencia responsable del
desarrollo de tablas de tiro y de trayectoria de nuevas armas, tena dificultades para elaborarlas
con exactitud y dentro de un plazo de tiempo razonable. Sin estas tablas de tiro, las nuevas
armas y piezas de artillera eran intiles para los artilleros.
13

Arquitectura y programacin de ordenadores

El laboratorio empleo a ms de 200 personas, la mayora mujeres, las cuales, utilizando


calculadoras de mesa, resolvan es ecuaciones balsticas necesarias. La preparacin de las
tablas para una sola arma le habra llevado a una persona muchas horas, incluso das.

Mauchly, un catedrtico de ingeniera elctrica de la universidad de Pennsylvania, y Eckert,


uno de sus alumnos del licenciatura, propusieron construir un computador de propsito
general, usando tubos de vaco, para utilizarlo en las aplicaciones de la BRL (Ballistics
Research Laboratory). El 1943, esta proposicin fue aceptada por el ejrcito, y se comenz a
trabajar en el ENIAC. La la mquina que construyeron era enorme, pesaba treinta toneladas,
ocupaba 15.000 pies cuadrados y contena ms de 18.000 tubos de vaco. Cuando funcionaba,
consuma 140 kw de potencia. Tambin era bastante ms rpida que cualquier computador
electrodomsticos, ya que era capaz de actuar 5000 sumas por segundo.

El ENIAC era una mquina de final, y no binario. Es decir, los hombres estaban representados
en forma decimal y aritmtica se realizaba tambin el sistema decimal. Su memoria consista
en 20 acumuladores, cada uno capaz de contener un nmero decimal de diez dgitos. Cada
dgito estaba representado por un anillo de diez tubos de vaco. En un momento dado, slo
uno de los tubos de vaco estaba en estado ON, representando uno de los diez dgitos. Uno de
los mayores inconvenientes del ENIAC era que tena que ser programado en los manualmente
mediante computadores y conectando y las conectando cables.

El ENIAC se termin en 1946, demasiado tarde para ser utilizado durante la guerra. En lugar
de eso, su primera misin fue realizar una serie de clculos complejos, que se usaron para
ayudar a determinar la viabilidad de la bomba H. En uso del ENIAC para una funcin distinta
de aquella para la que fue construido ,mostr su naturaleza de propsito general. As,1946
marc el comienzo de la nueva era de los computadores electrnicos, culminando aos de
esfuerzos. El ENIAC sigui funcionando bajo la direccin del BRL hasta 1955, cuando fue
desmontado.
14

Arquitectura y programacin de ordenadores

La mquina de von Neumann: IAS


La tarea de cargar y modificar programas para el ENIAC era extremadamente tediosa. El
proceso de programacin podra ser ms fcil si el programa se representaba en una forma
adecuada para ser guardado en la memoria junto con los datos. Entonces, un ordenador podra
conseguir sus instrucciones leyndolas de la memoria, y se podra hacer a modificar un
programa colocando los valores en una zona de memoria.

Esta idea, conocida como concepto de programa-almacenado, se atribuye a los diseadores del
ENIAC, sobre todo al matemtico John von Neumann, que era asesor del proyecto ENIAC. La
idea fue tambin desarrollada, aproximadamente el mismo tiempo, por Turing. la primera
publicacin de la idea fue en una propuesta de von Neumann para un nuevo computador en
1945 ,el EDVAC (Electronic Discrete Variable Computer).

En 1946, von Neumann y sus colegas empezaron, en el instituto para estudios avanzados de
Princeton, el diseo de un nuevo computador de programa-almacenado, que llamaron IAS. No
completado hasta 1952, es el prototipo de todo una serie computadores de propsito general.

La siguiente figura muestra la estructura general del computador IAS.

ALU

Memoria Equipos de

Principal E/S

Unidad de

Control
15

Arquitectura y programacin de ordenadores

Este consta de:

Una memoria principal, que almacene tanto datos como instrucciones.

Una unidad aritmtico-lgica (ALU), capaz de hacer operaciones con datos binarios.

Una unidad de control, que interpreta las instrucciones de memoria y provoca su ejecucin.

Un equipo de entrada-salida (E/S) dirigido por la unidad de control .

Brevemente, a continuacin se describen los elementos bsicos citados previamente:

CPU: es la parte del ordenador encargada de ejecutar las operaciones. Operaciones que
incluye fundamentalmente movimiento de datos, operaciones aritmticas y lgicas, y de
control del flujo de la ejecucin. En la mayor parte de los ordenadores actuales, la CPU se
construye en un nico circuito integrado, denominado tambin microprocesador.

Memoria: permite el almacenamiento de los datos y las instrucciones con las que trabaja el
procesador. El trmino de memoria se suele utilizar para hacer referencia la memoria principal
de la ordenador, frente a lo que sera una memoria secundaria, que es como se suele
denominar a los sistemas de almacenamiento masivo como como los discos, cintas, CD-ROM,
DVD, etc.. En un ordenador, prcticamente siempre aparecen espacios asociados a memoria
ROM (Read Only Memory), cuya informacin no puede modificar la CPU, y es informacin
que se conserva entr el apagado y el encendido del ordenador, y memorias RAM (Random
Accsee Memory), cuyo contenido lo puede consultar y actualizar la CPU, pero su informacin
se pierde cuando no se las alimenta elctricamente.

Dispositivos de entrada/salida: la comunicacin del ordenador con el exterior se realiza


mediante dispositivos de entrada/salida. Mediante estos dispositivos, la CPU autnoma y
ofrece informacin del exterior. Cada dispositivo fsicos (pantalla, discos, impresoras, etc..) se
comunica con la CPU a travs de un controlador especfico para ese dispositivos.
16

Arquitectura y programacin de ordenadores

Estos componentes se conectan mediante lneas elctricas, denominadas buses, y se clasifican


como bus de datos, bus de direcciones y bus de control y aparte CPU, memoria se
controladores se construyen a partir de circuitos digitales (puertas lgicas, codificadores,
decodificadores, desplazadores, contadores, etc.). Su construccin suele hacerse empleando un
nico circuito integrado para almacenarlos a todos (por ejemplo, un microprocesador) o
empleando un conjunto de circuitos digitales bsicos, y a menudo algunos ms complejos,
interconectados en un circuito impreso.

Salvo raras excepciones, todos los computadores de hoy en da tienen la misma estructura
general y funcionamiento que la indicada en las mquinas de von Neumann. Por tanto, merece
la pena describir brevemente la manera de operar del computador IAS.

La memoria del IAS consiste en 1000 posiciones de almacenamiento, llamadas palabras, de 40


dgitos binarios (bits) cada una. Tanto los datos como las instrucciones se almacena ah por
tanto, los nmeros se puede representar en forma binaria y cada instruccin tiene tambin un
cdigo binario. La figura 2.2 muestra estos formatos. Cada nmero se representa con un bit
de signo y 39 bits de valor. Una palabra puede contener tambin dos instrucciones de 20 bits,
donde cada instruccin consiste en un cdigo de operacin de 8 bits (codop) especfica la
operacin que se va a realizar, y una direccin de 12 bits, que indica una de las palabras de la
memoria (numeradas de 0 a 999).
17

Arquitectura y programacin de ordenadores

01 39

a) Palabra nmero
Bit de signo

0 8 19 20 28 39

Codop Direccin Codop Direccin

b) Palabra Instruccin

La unidad de control dirige el IAS captando instrucciones de la memoria y ejecutndolas una a


una. Tanto la unidad de control como la ALU, contiene posiciones de almacenamiento,
llamadas registros, definidos de la siguiente manera:

Registro temporal de memoria (MBR , Memory Buffer Register): contiene una palabra
que debe ser almacenada en la memoria, o es usada para recibir una palabra procedente de la
memoria.

Registro de direccin de memoria (MAR ,Memory Address Register): especfica la


direccin en memoria de la palabra que va a ser escrita o leda en MBR.

Registro de instruccin (IR, Instruction Register): contiene los 8 bits del cdigo de
operacin de la instruccin que se va a ejecutar.

Registro temporal de instruccin ( IBR, Instruction y Buffer Register): empleado para


almacenar temporalmente la instruccin contenida en la parte derecha de una palabra en
memoria.

Contador de programa (PC ,Program Counter): contiene la direccin de la prxima pareja


de instrucciones que va a ser captada de la memoria.
18

Arquitectura y programacin de ordenadores

Acumulador (AC) y multiplicador cociente (MQ, Multiplier Quotient): se emplean para


almacenar operndos y resultados de operaciones de la ALU temporalmente. Por ejemplo, el
resultado de multiplicar dos nmeros de 40 bits es un nmero de 80 bits; los 40 bits ms
significativos se almacenan en el AC y los menos significativos en el MQ.

CPU

Unidad aritmtico-lgica

AC MQ
Equipo
de
Circuitos aritmtico-lgicos E/S

MBR

Instrucciones
y datos

IBR PC

Memoria
IR MAR principal

Circuitos Seales de
de control Direcciones
control
Unidad de control de programa

Estructura expandida del computador IAS

El IAS, opera ejecutando repetidamente un ciclo instruccin. Cada ciclo constar de dos
subciclos. Durante el ciclo de captacin, el codop de la siguiente instruccin es cargado en el
IR, y la parte que contiene la direccin se almacena en el MAR.

Esta instruccin puede ser captada desde el IBR, o puede de ser obtenida de la memoria
cargando una palabra en el MBR, y luego en IBR, IR y MAR.
19

Arquitectura y programacin de ordenadores

Una vez que el codop est en el IR, se lleva a cabo el ciclo de ejecucin. Los circuitos de
control interpretan el codop y ejecutan las instrucciones, enviando las seales de control
adecuadas para provocar que los datos se transfieran o que la ALU realice una operacin. El
computador IAS tiene un total de 21 instrucciones, algunas de las cuales se indican en la
Tabla1. El tipo de instrucciones del IAS se muestra en esta tabla, sin embargo aprovechamos
aqu para nombrar las instrucciones tpicas que incluye cualquier CPU, que se pueden dividir
en los siguientes grupos:

Transferencia de datos: se emplea para mover informacin entre los diferentes espacios
(registros, memoria, registros de controladores de entrada/salida). Aunque algunas CPU
restringen los movimientos (8086 y los procesadores RISC no permiten movimientos de
memoria a memoria), otros permiten cualquier combinacin (ortogonalidad). Tambin se
incluyen operaciones especficas de entrada/salida o de acceso a los espacios de pila.

Aritmticas: instrucciones que realizan operaciones aritmticas, negaciones de signo,sumas,


restas, multiplicaciones, divisiones de operndose enteros (con y sin signo), en coma flotante,
etc.. Tambin aparecen a veces instrucciones de comparacin, que se suele utilizar con las de
salto condicional.

Lgicas y de desplazamientos: estas instrucciones implementan operaciones lgicas bit a bit


entre los operandos, incluyndose operaciones como AND, OR, XOR, NOT, desplazamientos
izquierda o derecha y rotaciones a izquierda o derecha.

Manejo de bits: estas son instrucciones que permite modificar o consultar bits de un operando
de forma individual.

Control del programa: estas son instrucciones que permite modificar el flujo de ejecucin de
un programa. Entr ellas se incluyen los saltos condicionales o incondicionales, las llamadas y
retornos de subrutina, las comprobaciones de errores y los desvos al sistema operativo.
20

Arquitectura y programacin de ordenadores

Control de el procesador: as se incluyen instrucciones especficas del procesador, como


instrucciones que dejan parado el procesador, lo dejan bloqueado hasta que aparezca una
interrupcin; instrucciones que no hacen nada, o instrucciones que consultan o modifican
registro de propsito especfico dentro del procesador (por ejemplo, palabras de estado).

Miscelnea: aparecen tambin instrucciones que facilitan el manejo de cadenas de caracteres


o instrucciones que facilitan la comparticin de memoria entre varios procesadores.

Tabla1
Tipo de Codop Representacin Descripcin
Instruccin simblica
Transferencia de datos 00001010 LOAD MQ Transferir el contenido del registro
MQ al acumulador AC
00001001 LOAD MQ,M(X) Transferir el contenido de la
posicin de memoria X a MQ
Salto incondicional 00001101 JUMP M(X,0:19) Captar la siguiente instruccin de la
mitad izquierda de M(X)
00001110 JUMP M(X,20:39) Captar la siguiente instruccin de la
mitad derecha de M(X)
Salto condicional 00001111 JUMP + M(X,0:19) Si el nmero en el acumulador no
es negativo, captar la siguiente
instruccin de la mitad izquierda de
M(X)
00001000 JUMP + M(X,20:39) . de la mitad derecha de M(X)

Aritmtica 00000101 ADD M(X) Sumar M(X) a AC; colocar el


resultado en AC
00000110 SUB M(X) Restar M(X) a AC; colocar el
resultado en AC
Modificacin de direcciones 00010010 STOR M(X,8:19) Reemplazar el campo de direccin
de la izquierda de M(X) por los
doce bits de la derecha de AC
00010011 STOR M(X,28:39) Reemplazar el campo de direccin
de la derecha de M(X)
Microinstrucciones del ordenador IAS
21

Arquitectura y programacin de ordenadores

1.4 LENGUAJE MQUINA: OPERANDOS Y DIRECCIONAMIENTO

Las instrucciones ejecuta la CPU se almacenan en la memoria del ordenador, de donde las
extrae el procesador y las ejecuta de forma secuencial, a menos que se produzca algn salto.
En una memoria slo se pueden almacenarse secuencias de bytes cuyos contenidos son ceros
o unos, esas combinaciones y secuencias deben estar organizadas de forma que tengan algn
sentido para la CPU y sean reconocidas por esta. El conjunto de las posibles combinacin de
que reconoce la CPU es lo que se denomina lenguaje mquina, y suelen ser diferentes para
cada familia de CPU.

Las instrucciones que ejecuta la CPU son, en general, operaciones aritmticas (sumas, restas,
multiplicaciones, etc.), lgicas (AND, OR, NOT, etc), movimiento de datos de unos espacios
a otros y control de flujo (saltos condicionales, incondicionales, comparaciones...). Esas
instrucciones suelen trabajar con unos operndos que la CPU pueda tomar de sus registros
(espacios para almacenar datos dentro de la propia CPU) o de la memoria. La forma en que se
especifica de donde se deben tomar los datos es lo que se llama el modo de direccionamiento.

Programas en lenguaje mquina

Como se ha dicho, el lenguaje mquinas es aquel que la CPU es capaz de reconocer y ejecutar.
Una secuencia de instrucciones de este lenguaje mquina, almacenado en la memoria del
ordenador, podr representar un programa en lenguaje mquina. Un programa es una
secuencia de ceros y unos que, en funcin de las instrucciones que incluya y el orden en que
stas aparezcan, a la que la CPU vaya obteniendo unos resultados, que pueden parecerse o no
a los que el programador pretenda conseguir.

Un ejemplo de programa en lenguaje mquina almacenado en la memoria de un ordenador


con un procesador hipottico podra ser el de la siguiente figura. En el se lleva una constante
con valor 6 a la posicin 5 de memoria, y a continuacin se introducen en un bucle en el que
restara uno al contenido de la posicin 5 hasta que sta se haga 0.
22

Arquitectura y programacin de ordenadores

Poner 6 En dir 5

Direccin de memoria 0001 0110 0101 xxxx

15 0
Binario Decimal Restar 1 De dir 5
0000 0 0100 0001 0101 xxxx
0001 1
Si ltima op. 0 Salta 4
0010 2
0011 xxxx xxxx 0100
0011 3 Programa
0100 4 Salta a Dir 1

1001 xxxx xxxx 0001


0101 5 Dato

Parar

0000 xxxx xxxx xxxx

Formato deInstruccin: Cog. Dato Direc. Direc.


opera inme. opera. salto

En este programa aparece una secuencia de instrucciones (no hay nada almacenado entre estas
instrucciones) El procesador ir ejecutando una tras otra. Son instrucciones en general
sencillas (comparndolas con las de los lenguajes de alto nivel como Fortran, C, VisualBasic,
etc...).
23

Arquitectura y programacin de ordenadores

En general, las instrucciones suelen organizarse en campos, normalmente de tamao variable


y que no siempre aparecen en todas las instrucciones. El ejemplo planteado es muy regular y
ortogonal, algo deseable, pero que no es la norma.

Otra caracterstica comn a todos los lenguajes mquina es que cada instruccin contiene todo
lo que la CPU necesita para poder ejecutarla, estando muy claro el lmite entre ellas. La CPU
siempre puede ejecutar cualquier instruccin en un momento dado. Cualquier secuencia de
instrucciones podr ser ejecutada por el procesado (salvo caso muy excepcionales), aunque los
resultados pueden ser impredecibles. Esta caracterstica hace que la ejecucin de las CPU sea
bastante sistemtica y lleve asociado un ciclo de ejecucin parecido en todas ellas:

1. Extraer instruccin de la memoria.

2. Decodificarlas, de terminar la operacin a realizar y extraer los operando.

3. Ejecutarla instruccin y almacenar resultados.

4. Volver a uno.

A pesar de que es el lenguaje mquinas el que realmente se ejecuta en la CPU, espera


qumicamente imposible representar un programa de cierta complejidad en este lenguajes.

Para poder escribir los programas, nos apoyamos en herramientas como los compiladores,
intrpretes o en sembradores, cuya funcin es producir los programas escritos en lenguaje de
alto nivel, o ensamblador, a lenguajes mquina, siendo estas traducciones las que realmente
ejecuta el procesador.

Para poder ejercer un programa en un caso general, adems de editarlo, se deben seguir estos
pasos:
24

Arquitectura y programacin de ordenadores

1. Compilar cada una de las unidades que lo compongan (pudiendo estar cada unidad escrita
en diferentes lenguajes de alto nivel o ensamblador). Los compiladores o ensambladores
generaran ficheros objetos, en los que se incluyen instrucciones en lenguaje mquina que
ejecutan operaciones equivalentes a las sentencias de los ficheros fuente, adems de otra
informacin que se empleara en la siguientes fases.

2. Enlazar el conjunto de ficheros objeto que componen un programa. El enlanzador general


un fichero (fichero ejecutable) que contendr un programa en lenguaje mquina, con
informacin adicional que permita cargarlo en memoria (datos sobre el espacio que ocupan los
datos del programa y el cdigo, partes del cdigo que hay que retocar cuando se carga el
cdigo o informacin que emplean los depuradores de programas).

3. Cargar el programa ejecutable (el lenguaje mquina) en memoria y hacer que la CPU no
ejecute la carga de el programa La suele realizar el sistema operativo de la mquina, llevando
las instrucciones mquina contiene el fichero ejecutable a memoria. Una vez cargado, le
ceder control, ejecutando una instruccin de salt a la direccin donde se ha cargado el
programa. Hasta ese momento, la CPU estaba ejecutando instrucciones de los programas que
componen el sistema operativo. A partir de ahora ejecutar las del programa.

Como se ve, para poder ejecutar un programa se deben ejecutar otros programas (compilador,
enlanzador, sistema operativo), que, a su vez, habrn sido escritos en lenguaje este alto nivel y
compilados y enlazados, a menudo con tcnicas de programacin cruzada (en una mquina
diferente y con otros compiladores y enlanzadores) o similares.

Un programa en ensamblador es bsicamente un conjunto de instrucciones de un lenguaje


simblico, en el que en general cada instruccin se hace corresponder con una instruccin de
las que es capaz de reconocer el procesador (salvo algunas instrucciones o directivas dirigidas
al ensamblador para que realice la traduccin de una forma determinada).

Adems de poder emplear nemotcnicos para representar las operaciones, los espacios de
datos se presentarn de forma simblica (de forma parecida a como se declaran variables en
25

Arquitectura y programacin de ordenadores

un lenguaje de alto nivel), con lo que se evita tener que trabajar directamente con direcciones
de memoria. Esos espacios se representan mediante etiquetas, que tambin se emplean para
representar direcciones donde se tienen almacenadas instrucciones.

Es importante resaltar que una instruccin ensamblador se corresponde con la instruccin en


lenguaje mquina, emplendose el lenguaje ensamblado como una forma ms amigable de
representar el lenguaje mquina.

Al representar de forma ms clara la misma idea, se facilita la escritura de programas de cierta


complejidad. Sin embargo, las instrucciones siguen siendo tan sencillas como las del lenguaje
mquina y, sobre todo, poco estructuradas, lo que hace que sea poco el software que se escriba
en ensamblador, y se limite en general a operaciones muy dependientes de la mquina con la
que se trabaja, dejando el resto a los lenguajes de alto nivel. Otro problema ms de estos
programas es la poca portabilidad entre mquinas con procesadores de diferente tipo.

1.4.1 Operandos

En este apartado se comentarn los operandos empleados por instrucciones mquina y la


forma que emplean las instrucciones para representarlos.

La mayor parte de las instrucciones de un ordenador manipulan datos, esos datos residen en
los operandos, que aparecen descritos en las instrucciones que procesa la CPU. En general los
operandos con los que trabajan las instrucciones son de 3 clases, en funcin de su ubicacin:
espacios de memoria, registros de la CPU y registros de controladores de entrada/salida.
Desde un punto de vista ms particular, se pueden clasificar por el tipo de informacin que
almacenan: Direcciones, nmeros, caracteres y datos lgicos.
normalmente, cada palabra o cualquier otra unidad direccionable (byte, media palabra, etc.) es
tratada como una unidad de datos individual. Sin embargo, a veces es til considerar una
unidad de n bits, elemento elementos o datos de 1 bit, donde cada elemento tiene un valor 1
0. Cuando los datos son vistos de esta manera, se consideran datos lgicos.
26

Arquitectura y programacin de ordenadores

Tipos de datos en Pentium II

El Pentium II puede tratar tipos de datos de 8 (byte),32 (palabra doble) y 64 (palabra


cudruple) bits de longitud. Para posibilitar una flexibilidad mxima en las estructuras de
datos, y una utilizacin eficiente de la memoria, las palabras no tienen por qu estar alineadas
con las direcciones pares de memoria, ni las palabras dobles alineadas con las direcciones
divisibles por cuatro, y las cuatro pares con direcciones divisibles por ocho. Sin embargo,
cuando se accede a los datos a travs de un bus de 32 bits, su transferencia tiene lugar en
unidades de palabras dobles, empezando en direcciones divisibles por cuatro. El procesador
convierte las peticiones, valores no alineados, en una secuencia de peticiones adaptada a la
forma de transparencia en el bus. Como en todas las mquinas Intel 80X86, el Pentium II
emplea el estilo "litte-endian"; es decir: el byte menos significativo es almacenado en la
direccin ms bajas.

El byte, la palabra, la palabra doble y la cudruple, son referidas como tipos generales de
datos. Adems, el Pentium II admite una variedad impresionante de tipos de datos especficos,
que son reconocidos y procesados mediante instrucciones concretas. La Tabla II resume estos
tipos.

El tipo coma flotante se refiere realmente a un conjunto de tipos utilizados por la unidad de
coma flotante, y que son procesados mediante instrucciones de coma flotante. Los enteros
estn en representacin de complemento a dos y puede ser de 16,32 64 bits. Los enteros
decimales empaquetados se almacenan en representacin signo-magnitud con 18 dgitos en el
rango de 0 a 9. Las tres representaciones en coma flotante se ajustan al estndar IEEE 754.

Tipos de datos en el PowerPC

El PowerPC puede manejar tipos de datos de 8 (byte),16 (media palabra),32 (palabra) y 64


(palabra doble)bits de longitud. Algunas instrucciones requieren que los operandos de
memoria estn alineados con una frontera de 32 bits. Sin embargo, en general no es necesario
27

Arquitectura y programacin de ordenadores

el alineamiento. Una caracterstica interesante del PowerPC es que puede utilizar bien estilo
"litte-endian" o el "big-endian"; es decir, el byte menos significativo puede estar almacenado,
bien en la direccin ms baja, o bien en la ms alta.

El byte, la media palabra, la palabra y la palabra doble, son tipos de datos generales. El
procesador interpreta el contenido de un elemento de datos dado dependiendo de la
instruccin. El procesador de coma flotante cifra reconoce los siguientes tipos de datos:

Byte sin signo: puede utilizarse para operaciones lgicas o para aritmticas con enteros. Se
carga de memoria en un registro general, completando con ceros hacia la izquierda hasta la
longitud total del registro.

Media palabra con signo: como antes, pero para cantidades de 16.

Media palabra con signo: utilizados para operaciones aritmticas; cargardo en memoria
completando el signo hacia la izquierda hasta la longitud total del registro (es decir, se repite
el bit de signo en todas las posiciones vacantes).

Palabra sin signo: utilizado para operaciones lgicas y como puntero de direcciones.

Palabra con signo: utilizado para operaciones aritmticas.

Palabra doble sin signo: utilizado como puntero de direcciones.

Cadena de bytes: de este 0 hasta 128 bytes de longitud.

Adems, el por PowerPC admite tipos de datos en coma flotante de pretensin simple y doble
definidos en el estndar IEEE .
28

Arquitectura y programacin de ordenadores

Tabla II
Tipo de datos Descripcin
General Posiciones de byte, de palabra( 16 bits), de palabra
doble y cudruple, con contenido binario arbitrario
Entero Un valor binario con signo contenido en un byte, una
palabra o una palabra doble, representado en
complemanto a dos
Ordinal Un entero con signo contenido en un byte, una
palabra o una palabra doble
Decimal codificado en binario (BCD) Representacin de un dgito BCD en el rango de 0 a
desempaquetado 9, con un dgito en cada byte
BCD empaquetado Representacin empaquetada de dos dgitos BCD en
un byte; valor en el rango de 0 a 99
Puntero de proximidad Una direccin efectiva de 32 bits que representa el
(Puntero cercano) desplazamiento dentro de un segmento. Utilizado
para todos los punteros en una memoria no
segmentado y para referencias dentro de un
segmento en una memoria segmentado.
Campo de bits Una secuencia contigua de bits en la que cada
posicin de bit se considera como unidad
independiente. Una cadena de bits puede comenzar
en cualquier posicin de cualquier byte y puede
contener hasta 232-1 bits
Cadena de bytes Una secuencia contigua de bytes, de palabras, o de
palabras dobles, que contiene de 0 hasta 232-1 bytes
Coma flotante Enteros de una palabra con 16 bits de precisin,
enteros cortos con precisin de 32 bits, enteros
largos con precisin de 64 bits, BCD empaquetado
de dieciocho dgitos de precisin, precisin simples
de 24 bits de precisin doble precisin de 3 bits y
precisin ampliada con precisin de 64 bits

Tipos de datos en el Pentium II


29

Arquitectura y programacin de ordenadores

1.4.2 Direccionamiento

Se suelen utilizar 12 modos de direccionamiento bsicos, clasificados en 5 grupos:

1.4.2.1. Direccionamientos de acceso directo a registro .


1.4.2.2. Direccionamiento de acceso directo a memoria
1.4.2.4. Direccionamiento relativo
1.4.2.5. Direccionamiento implcito.

1.4.2.1. Direccionamientos de acceso directo a registro


A Direccionamiento de registro

Especifica el operando fuente y el operando destino. Los registros deben ser del mismo tamao.
ej. MOV DX, CX
MOV CL, DL.

B Direccionamiento inmediato

Un dato de 8 o 16 bits se especifica como parte de la instruccin. p.ej. MOV CL, 03H. Aqu el
operando fuente est en modo inmediato y el destino en modo registro.

1.4.2.2. Direccionamientos de acceso directo a memoria.

A Direccionamiento directo

La direccin efectiva (EA) de 16 bits se toma directamente del campo de desplazamiento de la


instruccin. El desplazamiento se coloca en la localidad siguiente al cdigo de operacin. Esta
EA o desplazamiento es la distancia de la localidad de memoria al valor actual en el segmento de
datos (DS) en el cual el dato est colocado. Ej. MOV CX, START. START puede definirse
como una localidad de memoria usando las pseudoinstrucciones DB o DW.
30

Arquitectura y programacin de ordenadores

B Direccionamiento de registro indirecto.

La direccin efectiva EA est especificada en un registro apuntador o un registro ndice. El


apuntador puede ser el registro base BX o el apuntador base BP; el registro ndice puede ser el
Indice Fuente (SI) o el Indice Destino (DI).
Ej. MOV (DI),BX.

C Direccionamiento base

EA se obtiene sumando un desplazamiento (8 bits con signo o 16 bits sin signo) a los contenidos
de BX o BP. Los segmentos usados son DS y SS. Cuando la memoria es accesada, la direccin
fsica de 20 bits es calculada de BX y DS, por otra parte, cuando la pila es Accesada, la direccin
es calculada de BP y SS.
Ej. MOV AL, START (BX). el operando fuente est en modo base, y la EA se obtiene sumando
los valores de START y BX.

D Direccionamiento indexado.

EA se calcula sumando un desplazamiento (8 o 16 bits) a los contenidos de SI o DI. Ej. MOV


BH,START (SI).

E Direccionamento base indexado.

EA se calcula sumando un registro base (BX o BP), un registro ndice (DI o SI), y un
desplazamiento (8 o 16 bits).
Ej. MOV ALPHA (SI)(BX),CL.
Este direccionamiento proporciona una forma conveniente para direccionar un arreglo localizado
en la pila.
31

Arquitectura y programacin de ordenadores

F Direccionamiento con registros ndice

Este modo usa registros ndice. La cadena de instrucciones automticamente asume que SI
apunta al primer byte o palabra del operando destino. Los contenidos de SI y DI son
incrementados automticamente (poniendo a 0 DF mediante la instruccin CLD) o
decrementados (poniendo a 1 DF mediante la instruccin STD) para apuntar al siguiente byte o
palabra. El segmento del operando fuente es DS y puede ser encimado.
El segmento del operando destino debe ser ES y no puede ser encimado. Ej. MOVS BYTE.

1.4.2.3. Direccionamiento de acceso a puertos E/S


Hay dos tipos de direccionamiento usando puertos: directo e indirecto.
En el modo directo, el nmero de puerto es el operando inmediato de 8 bits, lo cual permite
accesar puertos numerados del 0 al 255. Ej. OUT 05H,AL.
En el modo indirecto, el nmero de puerto se toma de DX, permitiendo as 64K puertos de 8 bits
o 32K puertos de 16 bits.
Las transferencias E/S de 8 y 16 bits deben hacerse va AX y AL, respectivamente.

1.4.2.4. Direccionamiento relativo


En este modo el operando se especifica como un desplazamiento de 8 bits con signo, relativo al
PC. Ej. JNC START. Si C=0, entonces el PC se carga con PC+el valor de START.

1.4.2.5. Direccionamiento implcito


Las instrucciones que usan esta modo no tienen operandos. Ej. CLC.

También podría gustarte