organizacion del computador

15
República Bolivariana de Venezuela Ministerio del Poder Popular para la Educación Universidad de Carabobo Facultad Experimental de Ciencias y Tecnología Profesora: Integrante: Delgado, Desiree Perera, Luis CI: 24.573.170 Naguanagua 04-2015 Introducción a la Organización del Computador

Upload: luis-perera

Post on 11-Nov-2015

5 views

Category:

Documents


2 download

DESCRIPTION

Esto es una introduccion a la Organizacion del Computador.Luis Perera

TRANSCRIPT

  • 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.