organizacion del computador
DESCRIPTION
Esto es una introduccion a la Organizacion del Computador.Luis PereraTRANSCRIPT
-
Repblica Bolivariana de Venezuela
Ministerio del Poder Popular para la Educacin
Universidad de Carabobo
Facultad Experimental de Ciencias y Tecnologa
Profesora: Integrante:
Delgado, Desiree Perera, Luis CI: 24.573.170
Naguanagua 04-2015
Introduccin a la
Organizacin del
Computador
-
Historia de la Computadora
Uno de los primeros dispositivos mecnicos para contar fue el baco, cuya historia
se remonta a las antiguas civilizaciones griega y romana. Este dispositivo es muy
sencillo, consta de cuentas ensartadas en varillas que a su vez estn montadas en
un marco rectangular.
Otro de los inventos mecnicos fue la Pascalina inventada por Blaise Pascal (1623 -
1662) de Francia y la de Gottfried Wilhelm von Leibniz (1646 - 1716) de Alemania.
Con estas mquinas, los datos se representaban mediante las posiciones de los
engranajes, y los datos se introducan manualmente estableciendo dichas posiciones
finales de las ruedas, de manera similar a como leemos los nmeros en el
cuentakilmetros de un automvil.
La primera computadora fue la mquina analtica creada por Charles Babbage,
profesor matemtico de la Universidad de Cambridge e Ingeniero Ingles en el siglo
XIX. En 1823 el gobierno Britnico lo apoyo para crear el proyecto de una mquina
de diferencias, un dispositivo mecnico para efectuar sumas repetidas. La idea que
tuvo Charles Babbage sobre un computador naci debido a que la elaboracin de
las tablas matemticas era un proceso tedioso y propenso a errores. Las
caractersticas de est maquina incluye una memora que puede almacenar hasta
1000 nmeros de hasta 50 dgitos cada uno. Las operaciones a ejecutar por la unidad
aritmtica son almacenados en una tarjeta perforadora. Se estima que la maquina
tardara un segundo en realizar una suma y un minuto en una multiplicacin.
La maquina de Hollerith. En la dcada de 1880 , la oficina del Censo de los Estados
Unidos , deseaba agilizar el proceso del censo de 1890. Para llevar a cabo esta labor
, se contrato a Herman Hollerith, un experto en estadstica para que diseara alguna
tcnica que pudiera acelerar el levantamiento y anlisis de los datos obtenidos en el
censo. Entre muchas cosas, Hollerith propuso la utilizacin de tarjetas en las que se
perforaran los datos , segn un formato preestablecido. una vez perforadas las
tarjetas , estas serian tabuladas y clasificadas por maquinas especiales. La idea de
las tarjetas perforadas no fue original de Hollerith. l se baso en el trabajo hecho en
el telar de Joseph Jacquard que ingenio un sistema donde la trama de un diseo de
una tela as como la informacin necesaria para realizar su confeccin era
almacenada en tarjetas perforadas. El telar realizaba el diseo leyendo la
informacin contenida en las tarjetas. De esta forma , se podan obtener varios
diseos , cambiando solamente las tarjetas.
En 1944 se construy en la Universidad de Harvard, la Mark I, diseada por un
equipo encabezado por Howard H. Aiken. Este computador tomaba seis segundos
para efectuar una multiplicacin y doce para una divisin. Computadora basada en
rieles (tena aprox. 3000), con 800 kilmetros de cable, con dimensiones de 17
-
metros de largo, 3 metros de alto y 1 de profundidad. Al Mark I se le hiciern mejoras
sucesivas, obteniendo as el Mark II, Mark III y Mark IV.
En 1947 se construy en la Universidad de Pennsylvania la ENIAC (Electronic
Numerical Integrator And Calculator) que fue la primera computadora electrnica
que funcionaba con tubos al vaco, el equipo de diseo lo encabezaron los ingenieros
John Mauchly y John Eckert. Este computador superaba ampliamente al Mark I, ya
que llego hacer 1500 veces mas potente. En el diseo de este computador fueron
incluidas nuevas tcnicas de la electrnica que permitan minimizar el uso de partes
mecnicas. Esto trajo como consecuencia un incremento significativo en la velocidad
de procesamiento. As , poda efectuar 5000 sumas o 500 multiplicaciones en un
segundo y permita el uso de aplicaciones cientficas en astronoma , meteorologa,
etc.
Durante el desarrollo del proyecto Eniac , el matemtico Von Neumann propuso unas
mejoras que ayudaron a llegar a los modelos actuales de computadoras:
1.- Utilizar un sistema de numeracin de base dos (Binario) en vez del sistema
decimal tradicional.
2.- Hacer que las instrucciones de operacin estn en la memoria , al igual que los
datos. De esta forma , memoria y programa residirn en un mismo sitio.
La EDVAC (Electronic Discrete Variable Automatic Computer), construida en la
Universidad de Manchester, en Connecticut (EE.UU), en 1949 fue el primer equipo
con capacidad de almacenamiento de memoria e hizo desechar a los otros equipos
que tenan que ser intercambios o reconfigurados cada vez que se usaban. Tena
aproximadamente cuatro mil bulbos y usaba un tipo de memoria basado en tubos
llenos de mercurio por donde circulaban seales elctricas sujetas a retardos. EDCAV
pesaba aproximadamente 7850 kg y tena una superficie de 150 m2.
En realidad EDVAC fue la primera verdadera computadora electrnica digital de la
historia, tal como se le concibe en estos tiempos y a partir de ella se empezaron a
fabricar arquitecturas ms completas.
El UNIVAC fue la primera computadora diseada y construida para un prposito no
militar. Desarrollada para la oficina de CENSO en 1951, por los ingenieros John
Mauchly y John Presper Eckert, que empezaron a disearla y construirla en 1946.
La computadora pesaba 7257 kg. aproximadamente, estaba compuesta por 5000
tubos de vaco, y poda ejecutar unos 1000 clculos por segundo. Era una
computadora que procesaba los dgitos en serie. Poda hacer sumas de dos nmeros
de diez dgitos cada uno, unas 100000 por segundo.
As Von Neumann, junto con Babbage se consideran hoy como los padres de la
Computacin.
-
La Mquina de Turing
El trabajo de Alan Turing es considerado precursor de toda la computacin moderna
que hoy determina nuestra sociedad, nuestras maneras de producir, las relaciones,
los medios de transporte, el avances del conocimiento, e incluso nuestra manera de
pensar. Sus desarrollos en la formalizacin de los conceptos de algoritmo y
computacin mediante la llamada mquina de Turing fueron fundamentales para el
avance de las tecnologas de la informacin.
Una mquina de Turing es un dispositivo que manipula smbolos sobre una tira de
cinta de acuerdo a una tabla de reglas. A pesar de su simplicidad, puede ser
adaptada para simular la lgica de cualquier algoritmo de computador y es
particularmente til en la explicacin de las funciones de un CPU dentro de un
ordenador.
En realidad, no est diseada como una tecnologa de computacin prctica, sino
como un dispositivo hipottico que representa una mquina de computacin, pero
sus componentes (la cinta, el cabezal, el movimiento, la lectura) podran ser
implementados.
La mquina de Turing es un dispositivo terico, pero hay reproducciones de modelos
mecnicos concretos
Sobre los nmeros computables
La mquina fue descrita por Turing como una mquina automtica en 1936 en la
revista Proceedings of the London Mathematical Society, en el estudio Sobre los
nmeros computables, con una aplicacin al Entscheidungsproblem.
En este artculo se estudiaba la cuestin planteada por David Hilbert sobre si las
matemticas son decidibles, es decir, si hay un mtodo definido que pueda aplicarse
a cualquier sentencia matemtica y que nos diga si esa sentencia es cierta o no, el
llamado Entscheidungsproblem. Turing ide un modelo formal de computador y
demostr que existan problemas que una mquina no poda resolver, y que
determina los lmites de la ciencia (profundizaremos sobre este tema en una futura
entrada).
La idea bsica de todo el formalismo de Turing es que reduce el concepto de
mtodo a operaciones simples que pueden, de manera incuestionable, ser
efectuadas. Estas operaciones sencillas son la serie de instrucciones lgicas en las
que se basan las acciones del artilugio. En esta idea radican las bases del concepto
moderno de algoritmo.
-
Con su mquina, Turing describi en trminos matemticos precisos cmo un
sistema automtico con reglas extremadamente simples poda efectuar toda clase
de operaciones matemticas expresadas en un lenguaje formal determinado.
Definicin de Turing
Turing defina su creacin como:
una ilimitada capacidad de memoria obtenida en forma de una cinta infinita
marcada con cuadrados, en cada uno de los cuales podra imprimirse un smbolo.
En todo momento hay un smbolo en la mquina, llamado el smbolo ledo, que la
mquina puede alterar. El comportamiento de la maquina est en parte determinado
por el smbolo ledo, pero no por los smbolos en otros lugares de la cinta.
Una de las operaciones elementales de la mquina es el movimiento hacia adelante
y hacia atrs a travs de la mquina de la cinta, por lo que cualquier smbolo en la
cinta puede convertirse en el smbolo ledo. (Turing 1948, p. 61)
La mquina de Turing modela matemticamente un dispositivo que opera
mecnicamente sobre una cinta. En esta cinta hay smbolos que la mquina puede
leer y escribir, uno a la vez, usando un cabezal lector/escritor de cinta.
La operacin est completamente determinada por un conjunto finito de
instrucciones elementales como en el estado 42, si el smbolo visto es 0, escribe un
1; Si el smbolo visto es 1, cambia al estado 17; en el estado 17, si el smbolo visto
es 0, escribe un 1 y cambia al estado 6; etc..
Esto se repite segn se indique en la funcin de transicin, para finalmente
detenerse en un estado final o de aceptacin, si la cuestin planteada es
computable, es decir, realizable por la mquina de Turing actuando sola.
La Arquitectura de Von Neumann
La mquina de Von Neumann tena 5 partes bsicas: La memoria, la unidad
Aritmtica lgica, la unidad de control del programa y los equipos de entrada y
salida. La memoria constaba de 4096 palabras, cada una con 40 bits (0 o 1). Cada
palabra poda contener 2 instrucciones de 20 bits o un nmero entero de 39 bits y
su signo. Las instrucciones tenan 8 bits dedicados a sealar el tiempo de la misma
y 12 bits para especificar alguna de las 4096 palabras de la memoria.
Dentro de la unidad aritmtica - lgica, el antecedente directo actual CPU (Unidad
central de Proceso), haba un registro interno especial de 40 bits llamado en
acumulador. Una instruccin tpica era sumar una palabra de la memoria al
acumulador o almacenar ste en la memoria.
-
La mquina no manejaba la aritmtica de punto flotante, porque Von Neumann
pensaba que cualquier matemtico competente debera ser capaz de llevar la cuenta
del punto decimal (en este caso del punto binario), mentalmente.
Un elemento importante del hardware de la PC es la unidad del sistema, que
contiene una tarjeta de sistema, fuente de poder y ranuras de expansin para
tarjetas opcionales. Los elementos de la tarjeta de sistema son un microprocesador,
memoria de solo lectura (ROM) y memoria de acceso aleatorio (RAM).
El cerebro de la PC y compatibles es un microprocesador basado en la familia 8086
de Intel, que realiza todo el procesamiento de datos e instrucciones. Los
procesadores varan en velocidad y capacidad de memoria, registros y bus de datos.
Un bus de datos transfiere datos entre el procesador, la memoria y los dispositivos
externos.
Aunque existen muchos tipos de computadoras digitales segn se tenga en cuenta
su tamao, velocidad de proceso, complejidad de diseo fsico, etc., los principios
fundamentales bsicos de funcionamiento son esencialmente los mismos en todos
ellos.
Se puede decir que una computadora est formada por tres partes fundamentales,
aunque una de ellas es subdividida en dos partes no menos importantes.
El nombre de cada parte nos indica la funcin que realiza. As, la Unidad Central de
Proceso (CPU) es la que coordina el funcionamiento conjunto de las dems unidades
y realiza los clculos necesarios; por eso la podemos subdividir en una Unidad de
Control (UC) y en una unidad de clculo o Unidad Aritmtico-Lgica (UAL).
La unidad de Memoria Principal (MP) se encarga de almacenar las instrucciones que
realizar la Unidad de Control al ejecutar un programa y los datos que sern
procesados. La Unidad de Entradas y Salidas ser la encargada de la comunicacin
con el exterior a travs de los perifricos. Estos perifricos pueden ser: de entrada,
como los teclados; de salida, como los tubos de rayos catdicos, y de entrada y
salida, como los discos magnticos.
Unidad de Memoria Principal
La memoria principal est formada por un conjunto de unidades llamadas palabras.
Dentro de cada una de estas palabras se guarda la informacin que constituye una
instruccin o parte de ella (puede darse el caso de que una sola instruccin necesite
varia palabras), o un dato o parte de un dato (tambin un dato puede ocupar varias
palabras).
-
A la cantidad de palabras que forman la MP se le denomina capacidad de memoria.
De este modo, cuanto mayor sea el nmero de palabras mayor ser el nmero de
instrucciones y datos que podr almacenar la computadora.
Una palabra esta formada a su vez de unidades mas elementales llamadas bits, del
mismo modo que en el lenguaje natural una palabra esta formada por letras. Cada
bit solo puede guardar dos valores, el valor 0 o el valor 1; por eso se dice que son
elementos binarios.
El nmero de bits que forman una palabra se llama longitud de palabra. Por regla
general, las computadoras potentes tienen memorias con longitud de palabra
grande, mientras que las computadoras pequeas tienen memorias con longitud de
palabra menor.
Ya se ha visto en las secciones precedentes como funcionan la CPU y la MP, pero
puede decirse que es necesaria la comunicacin entre el interior de la computadora
y su entorno o periferia. Esta comunicacin se consigue a travs de dispositivos de
muy diversos tipos, como son: teclados, impresoras, pantallas, discos magnticos,
etc.
A estos dispositivos se les conoce con el nombre genrico de perifricos.
La coordinacin de la comunicacin entre los perifricos y la CPU la realiza la Unidad
de E/S. Obsrvese que esta no es un perifrico sino un dispositivo que gestiona a
los perifricos siguiendo las rdenes de la CPU; es decir, la Unidad de E/S recibe de
la Unidad de Control informacin sobre el tipo de transferencia de datos que debe
realizar (si es de entrada o de salida) y perifrico que debe de utilizar; si es de salida
recibir tambin el dato que debe enviar y el momento de la operacin.
Entonces, la Unidad de E/S seleccionara el perifrico y ejecutara la operacin
teniendo en cuanta las caractersticas propias de cada perifrico. Una vez ejecutada
la orden avisara a la UC de la terminacin de la transferencia.
Cada perifrico o parte de un perifrico tendr asignado un numero o direccin que
servir para identificarlo. Cuando la UC quiera seleccionarlo enviara dicho nmero a
la Unidad de E/S.
Partes de una PC
Las PC forman parte de una de las muchas categoras de computadoras que hay, en
nuestra actualidad este tipo de computadora es la que mejor tendremos acceso. Las
principales partes de un PC son:
Monitor: Los monitores los podemos clasificar por tamao o por tipo de monitor. Si
es por tamao depender de el largo de la diagonal de la pantalla, es decir 14, 15,
-
17, 19, 21 pulgadas, etc. Hay que tomar en cuenta que esta distancia no es real, es
la diagonal del tubo pero por los plsticos que lo cubren se reduce hasta 1 pulgada
o un poco mas, por eso es que vemos que al comprar nuestro monitor de 17" en las
especificaciones indica "viewable" que es la distancia que se puede ver es de 16".
Por otra parte, si es por el tipo de monitor es un poco ms tcnico, se diferencian
en los monitores de tubo sencillo, los de tubo de pantalla plana y los flat panel. La
diferencia principal entre los de tubo es que los de pantalla plana poseen mejor
tecnologa y ofrecen mejor imagen (colores ms vivos) y resolucin (ms detalle)
que los de tuvo sencillo curvos. Ahora el ltimo grito de la moda son los flat panel
como el de las computadoras porttiles ya que no ocupan casi espacio y ofrecen
altas resoluciones y tamaos adecuados, la nica desventaja es que son sumamente
caros, cuestan hasta diez veces lo que cuesta uno de tubo del mismo tamao de
diagonal, muy pronto profundizar un poco ms en el tema, no se preocupen.
Ratn: los ratones se diferencian principalmente en dos bandos. Los que se
conectan al puerto serial. Los PS2 son el estndar hoy da pero tienes que tomar en
cuenta si tu computadora tiene el puerto PS2 o no, aunque todas tienen puerto
serial, son los que estn reemplazando a los seriales ya que en las computadoras se
cre este puerto especialmente para el mouse
Sabes que el puerto PS2 fue creado por la IBM especialmente para el mouse y el
teclado, ya que al tener un purto (conector) dedicado a los perifricos principales
como teclado y mouse se puede liberar el puerto serial para conectar otros
dispositivos como por ejemplo un MODEM.
Los mouse existen en distintas formas, unas ms sencillas que otras, una de las
variantes de mouse son los track ball, estos son un mouse pero invertido, en vez de
mover el ratn entero, se mueve directamente la bola en direccin a la cual se quiere
dirigir el cursor, o los touchpad como en las computadoras porttiles.
Teclado: hay dos tipos de ellos si los diferencias por el conector, AT y PS2, como
podemos ver (mostrar figura comparatoria), la diferencia principal es el tamao del
conector. El conector del mouse PS2 es idntico al del teclado PS2, tengan cuidado
al invertirlos, no va a pasar nada, simplemente no les va a funcionar. Los teclados
han evolucionado bastante tambin, hoy da poseen botones especiales para
navegar en Internet o para abrir programas especficos con solo oprimirlos, tambin
los tienen ergonmicos (adecuados a la fisonoma del hombre) y sencillos,
inalmbricos, con bocinas, diferentes colores, etc.. En fin hay teclados para cada
usuario.
-
CPU: Unidad de procesamiento central, esta es la parte ms importante ya que es
el cerebro de la computadora, dentro de ella se realizan todas las tareas comandadas
por el usuario, ella consta de partes especificas internas que sern explicadas ms
adelante.
Gabinete: El gabinete es la parte externa de la computadora y hay dos tipos
principales, torre y de escritorio. En la clase de torre, las hay mini torre, media torre
y torre completa que son los que se utiliza para servidores. Dentro del gabinete se
encuentran todos los dispositivos principales. Fuente de poder, microprocesador,
memorias, tarjeta de video, tarjeta de sonido, motherboard, ventiladores. Hoy da
encontramos gabinetes mucho ms elaborados en donde no slo se toma en cuenta
el diseo futurstico fuera del gabinete sino mucho mas importante, el diseo por
dentro, el cual permite mejor flujo de aire y distribucin correcta de los dispositivos
internos.
Microprocesador: El microprocesador es la pieza principal en una computadora,
es el cerebro en donde se realizan todos los clculos y tomas de desicin. Los
microprocesadores los podemos encontrar tambin en casi todos los dispositivos
digitales, desde relojes hasta en los sistemas de inyeccin en los autos.
Sus caractersticas principales son: su ancho de banda y su velocidad del reloj.
El ancho de banda define el numero de bits que puede procesar por cada instruccin.
Esto es lo que se refiere a 8 bits, 16 bits, 32 bits, 64 bits. (recordar lo de los video
juegos)
La velocidad del reloj, dada en Hz que define cuantas instrucciones por segundo
puede ejecutar. Esto es lo que escuchamos decir cuando un microprocesador de X
marca es de 600MHz , 800 MHz, 1.5 GHz, donde MHz (Mega Hertz es millones de
intrucciones y GHz (Mil millones de instrucciones)
La combinacin de los dos (ancho de banda y velocidad de reloj) es lo que define el
poder del microprocesador siendo ms poderoso mientras mayor sean ambas.
Algunas marcas de los principales microprocesadores son: AMD, Cyrix, Intel y
Motorola.
EQUIPO MULTIMEDIA: Equipo necesario para capturar video, reproducir y grabar
sonidos.
-
Ciclos de Fetch
Los procesadores son mquinas secuenciales, es decir, su funcionamiento se basa
en ejecutar una tras otra las instrucciones contenidas en memoria.
Estas instrucciones, como ya coment, se encuentran contenidas en memoria como
una ristra de 0 y 1 (para que resulte ms fcil su manejo los veremos cmo dgitos
hexadecimales).
El ciclo de instruccin podemos dividirlo en tres partes:
1. Tomar la siguiente instruccin (fetch).
2. Decodificar la instruccin.
3. Ejecutar la instruccin.
1. Tomar la siguiente instruccin (fetch).
El procesador siempre tiene su registro PC (Contador de Programa) apuntando a la
direccin de memoria de la siguiente instruccin a ejecutar. Durante esta fase el
procesador extrae la instruccin de la memoria apuntada por el PC volcando el
contenido de este registro al bus de direcciones y pidiendo una operacin de lectura
a la memoria. Simultneamente a esta peticin, el PC se incrementar en una unidad
para apuntar a la siguiente instruccin o bien al primer operando de la instruccin
extrada si esta lo tuviera.
Cuando la memoria est preparada para atender la peticin, vuelca el contenido de
la direccin pedida al bus de datos de donde el procesador recoge el cdigo de
operacin y lo coloca en un registro especial llamado Registro de Instruccin (IR).
2. Decodificar la instruccin.
Una vez tiene el cdigo de operacin alojado en el IR, el procesador decodifica ste
para saber de qu instruccin se trata y obtiene los parmetros de la memoria (si
los tuviera), incrementando el PC en una unidad por cada parmetro extrado.
3. Ejecutar la instruccin
Llegado a este paso, el procesador ya sabe de qu instruccin se trata y los
parmetros que necesita, luego simplemente la ejecuta de la forma apropiada.
Al finalizar este paso finaliza una iteracin del ciclo de instruccin, volveremos al
fetch de la siguiente instruccin y as sucesivamente.
-
IMPLEMENTACIN
Hay mltiples formas de implementar esto, una por cada programador, as que voy
a comentar cmo lo he hecho yo, con una aproximacin entre lo didctico y lo
eficiente, pero desde luego sin esperar que sea la mejor solucin.
Como ya coment, mi proyecto se basa en una implementacin orientada a objetos,
en este caso tengo un objeto de la clase Z80 y otro objeto de la clase Memoria
relacionados entre s de forma que desde el Z80 haya visibilidad hacia la Memoria,
pero no al revs.
Por otro lado, tengo un programa principal que tiene instancias de estas dos clases
y ser el encargado de controlar la emulacin (aunque de momento estoy usndolas
desde el simulador del Z80 implementado para el testing).
Bien, desde este programa principal se pedir al Z80 que ejecute x ciclos de reloj,
llevando a cabo las instrucciones que den tiempo en esos ciclos (cada instruccin
consume unos determinados ciclos).
Esto lo he implementado de forma similar a:
UINT32 Z80::ejecutaZ80(UINT32 ciclos)
{
z80.ciclosRestantes += ciclos;
do
{
ejecutaInst(mem->readMem(_PC++));
} while (z80.ciclosRestantes > 0);
return z80.ciclosEjecutados;
}
Como vemos, se le pasa la cantidad de ciclos a ejecutar y nos devolver los que
realmente se han ejecutado.
Las instrucciones se ejecutan ntegramante (no se puede ejecutar media instruccin
o tres cuartos), as que es muy posible que se ejecuten ms ciclos de los que se han
pedido. Por ejemplo, si pedimos ejecutar 5 ciclos y en el programa tenemos una
instruccin de 3 y otra de 6 ciclos realmente ejecutar 9. Por este motivo se guarda
-
en ciclosRestantes los ciclos a ejecutar sumados a los que quedaban de la anterior
ejecucin (estos sern un nmero negativo) de modo que si en la anterior ejecucin
nos pasamos en 4 ciclos y en esta le pedimos ejecutar 7 pues realmente intente
ejecutar solo la diferencia, es decir, 3 ciclos.
Como vemos, la fase de fetch se resuelve en
mem->readMem(_PC++)
pues tomamos la instruccin de la direccin de memoria apuntada por el PC e
incrementamos ste.
Pararemos de ejecutar instrucciones cuando ciclosRestantes sea igual o menor que
0 (como veremos esta variable se decrementa en cada ejecucin de instruccin).
La rutina ejecutaInst es la que se encarga de decodificar y ejecutar la instruccin.
Quiz el modo ms eficiente de hacerlo fuera creando una funcin para cada cdigo
de operacin y luego una tabla con punteros a estas funciones, pero mi
implementacin ha sido otra.
Al hacerlo en C++, si no me equivoco (soy bastante novato en C++), cada funcin
de la clase debe estar declarada en la parte pblica o privada de la misma. Meter
ah 1268 funciones (una por cada cdigo de operacin) me parece aberrante, por
otro lado, aun agrupndolas en funcionalidades similares me saldran ms de 70, lo
cual me sigue pareciendo excesivo. Debido a esto he tomado la determinacin de
hacer un switch gigante con todos los cdigos de operacin (esperando que el
compilador sea lo suficientemente inteligente para codificarlo como una tabla y no
como miles de ifs) e introducir en cada uno de estos el cdigo de las instrucciones.
Escribir a pelo todo el cdigo aparte de tedioso es muy poco elegante, as que ah
entran en juego las macros del preprocesador de C.
La funcin ejecutaInst quedara algo as:
void Z80::ejecutaInst(UINT8 co)
{
z80.ciclosRestantes -= cc[co];
switch (co)
{
case 0x00: NOP; break;
-
case 0x01: LD16_R_I(_BC); break;
case 0x02: LD_D_R(_BC,_A); break;
.
.
.
.
}
}
Como vemos, resta una cantidad de ciclos especfica de cada instruccin (contenido
su valor en la tabla cc a la que se accede por el cdigo de operacin) y, dependiendo
del cdigo de operacin, ejecutar una macro. Como vemos, en esta rutina se
realizan las fases de decodificacin y ejecucin.
Aqu van un par de estas macros de ejemplo:
/************************************************
* LD (dir), r - 8 bits
***********************************************/
#define LD_D_R(dir,origen) \
{ \
WM(dir, origen); \
}
/************************************************
* LD dd, nn - 16 bits
***********************************************/
#define LD16_R_I(destino) \
{ \
destino = RM(_PC++) | (RM(_PC++)
-
}
Cabe mencionar que en esta entrada no he tenido en cuenta el tema de las
interrupciones (tampoco las tengo implementadas todava), as que no os extrais
si vis que no se chequean al ejecutar instrucciones.
Organizacin Bsica del Computador
Cdigo de instrucciones:
El cdigo de instrucciones es un grupo de bits que instruye a la computadora como
ejecutar una operacin especfica siendo su parte ms bsica la parte de operacin,
el cual es un grupo de bits que define operaciones como sumar, restar, multiplicar,
desplazar y complementar.
Un cdigo de operacin se denomina Macrooperacin, porque especifica un conjunto
de microoperaciones.
Las instrucciones mquina o instrucciones del computador:
Las instrucciones de computadora son las que comprueban el funcionamiento de la
CPU que las ejecuta y es un cdigo binario que especifica una secuencia de
microoperaciones para la computadora.
Ciclo de instruccin:
Un ciclo de instruccin es el perodo de tiempo durante el cual un ordenador lee y
procesa una instruccin de lenguaje mquina de su memoria o la secuencia de
acciones que la unidad central (CPU) funciona para ejecutar cada instruccin de
cdigo de mquina en un programa.
Control y sincronizacin de tiempo:
Existen dos tipos principales de organizaciones de control:
Control por cableado
Control microprogramado
En la organizacin por cableado, la lgica de control se logra mediante compuertas,
Flip-Flops y otros circuitos digitales. Esto tiene la ventaja de que puede utilizarse
para producir un modo de operacin ms rpido.
-
En la organizacin microprogramada, la informacin de control esta almacenada en
una memoria de control. La memoria de control est programada para iniciar la
secuencia de microoperaciones requerida.
Las instrucciones bsicas en los lenguajes se pueden considerar en cuatro
grupos:
Instrucciones de entrada salida: son instrucciones de transferencia de
informacin y datos entre dispositivos perifricos (teclado, impresora, unidad de
disco, entre otras.).
Instrucciones aritmticas lgicas: son instrucciones que ejecutan operaciones
aritmticas (suma, resta, multiplicacin, divisin, potencializacin) y lgicas
(operaciones and, or, not, entre otras.).
Instrucciones selectivas: son instrucciones que permiten la seleccin de tareas
alternativas en funcin de los resultados de diferentes expresiones condicionales.
Instrucciones repetitivas: son instrucciones que permiten la repeticin de
secuencias de instrucciones un nmero determinado o indeterminado de veces.
Los registro: es cierta informacin guardada para luego ejecutarse ms rpido y
es una pequea unidad de almacenamiento destinada a contener cierto tipo de
datos. Puede estar en la propia memoria central o en unidades de memoria de
acceso rpido.
Registros de la computadora.
DR: (Registro de datos) Contiene el operando en la memoria.
AR: (Registro de direccin) Contiene la direccin para la memoria.
AC: (Acumulador) Contiene el registro del procesador.
IR: (Registro de instruccin) Contiene el cdigo de instruccin.
PC: (Contador de programa) Contiene el cdigo de la siguiente instruccin.
TR: (Registro temporal) Contiene datos temporales.
INPR: (Registro de entrada) Contiene el carcter de entrada.
OUPR: (Registro de salida) Contiene el carcter de salida.