Apuntes Arquitectura de Computadoras Unla

download Apuntes Arquitectura de Computadoras Unla

of 63

Transcript of Apuntes Arquitectura de Computadoras Unla

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    1/63

     

     ARQUITECTURA DE COMPUTADORAS

    Docentes:

    Prof. Oscar Montes

    Prof. Obadiah Oghoerore Alegbe

    Prof. Roberto García

    Tema:

    Apuntes de la asignaturaAño:

    2011 

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    2/63

     2

    Procesos

    En el modelo de procesos todo software ejecutable de la computadora, inclusive el sistema opera-tivo, se organiza en varios procesos secuenciales que de aquí en adelante llamaremos PROCE-SOS. Un proceso es en general parte de un programa con determinadas características: incluye elestado propio del proceso, además del estado del registro de la CPU y tiene la intención de serejecutado por el SO (está cargado en RAM). Las antiguas CPUs sólo podían ejecutar un procesoa la vez, pero como lo ejecutaban muy rápidamente, el operador podía tener la sensación de quehabía muchos procesos ejecutándose a la vez. En este momento existen CPUs capaces de ejecutardos, tres y hasta cuatro procesos juntos, dependiendo de su estructura interna.

    La diferencia entre un proceso y un programa es sutil pero crucial. Podríamos utilizar la siguienteanalogía para aclarar este punto. Consideremos un científico de la computación con una menteculinaria, que está cocinando el pastel de cumpleaños de su hija. Él tiene una receta para un pastel

    de cumpleaños y una cocina bien abastecida con los ingredientes necesarios. En esta analogía lareceta es el programa (un algoritmo expresado en cierta notación adecuada), el científico es el procesador (CPU) y los ingredientes necesarios para el pastel son los datos de entrada. El procesoes la actividad en la que el cocinero lee la receta, busca los ingredientes, y cocina el pastel (listo, bloqueado, en ejecución).

    Imaginemos ahora que un hijo del científico entra corriendo, llorando y diciendo que lo picó unaabeja. El científico registra el punto de la receta donde se quedó (el estado del proceso activo seresguarda, se memoriza), busca un libro de primeros auxilios, comienza a leer las instruccionesde éste y busca los elementos en el botiquín. El científico atiende la picadura de su hijo y luegode que éste se calma, regresa al punto de elaboración del pastel.

    El proceso entonces se puede entender como una actividad especial de cierto tipo, en donde hayun programa, entradas y salidas de datos y tiene un estado determinado.

    Estados de un proceso

    Aunque cada proceso se debe considerar como una entidad independiente (contador de programa,estado interno, uso de memoria, etc.) es frecuente que los procesos deban interactuar unos conotros. Un proceso podría generar cierta salida que fuera la entrada necesaria para otro proceso.

    Desde este modelo, se utilizan tres estados fundamentales:

    a)  Listo: el programa (o parte de él) se carga en la memoria de trabajo (RAM). La caracterís-tica de estar cargado en RAM, es decir, la intención cierta del SO de ejecutar esas instruc-ciones, convierten al programa en un proceso.

     b)  Ejecución: en este estado la CPU tiene el control de las operaciones de ese proceso y lasva cumpliendo en un orden determinado. Este estado es propio del núcleo de la CPU, ycada uno de ellos (si es que tuviera varios) puede tener a un proceso en este estado en untiempo muy breve que tomaremos como menor al tiempo de instrucción.

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    3/63

      3

    c)  Bloqueado: cuando el proceso requiere de datos que se deban buscar en periféricos de en-trada lentos (cuyo acceso involucre una cantidad razonablemente grande de tiempos deinstrucción) el SO pone al proceso en este estado de espera y conmuta a la CPU a otro proceso.

    Planificación de procesos

    Cuando hay más de un proceso ejecutable, el SO debe decidir el orden de ejecución. Esta partedel SO se denomina PLANIFICADOR, y la lógica para esas decisiones están implícitas en elalgoritmo de planificación.

    En los tiempos pasados, los sistemas de procesamiento eran por lotes (batch), porque eran gruposo lotes de tarjetas perforadas que se debían procesar desde el comienzo hasta el fin. Cuando se pensó en multiprocesamiento, el planificador ya no era un operador, sino que debía ser algo quetomara decisiones más rápidamente. El planificador debe poder atender a ciertas características para su operación:

    a)  Equidad: garantizar que cada proceso obtiene un tiempo de CPU. b)  Eficacia: mantener a la CPU ocupada el 100 % del tiempo.

    c)  Tiempo de respuesta: minimizar el plazo de ejecución entre varios procesos.

    d)  Tiempo de regreso: minimizar el tiempo que deben esperar otros procesos para entrar enejecución.

    e)  Rendimiento: maximizar el número de tareas procesadas en la unidad de tiempo.

    Un poco de reflexión muestra que algunas de estas condiciones se excluyen mutuamente. Se pue-de demostrar (Kleinrock 1975) que cualquier algoritmo de planificación que favorezca algún tipode tarea afecta a otra. Por ejemplo: para darle más tiempo de CPU a un usuario (proceso), hay

    que darle menos a otro, ya que el tiempo de CPU es finito.Una primera aproximación a un algoritmo de planificación será la elección entre dos modos deasignación de la CPU: El modo apropiativo y el modo no apropiativo, vistos desde el SO, esdecir: si el SO va a poder conmutar la CPU en cualquier instante de la ejecución de un proceso(apropiativa) o el proceso se va a ejecutar de principio a fin sin ceder el uso de la CPU (no apro- piativa).

    Algunos de los tipos más comunes de planificación son:

    a)  FCFS: (First Come First Served) es una cola de espera tradicional en la que los procesosse van ejecutando en el orden de llegada. Esta cola se puede considerar aleatoria (al azar)y por lo tanto no implica planificación alguna. Es en general el peor algoritmo de planifi-cación para cualquier recurso, aunque también el más fácil de implementar.

     b)  Round Robin: este método es apropiativo y básicamente es el otorgamiento de la CPUdurante tiempos definidos denominados Quantum.

    c)  Por Prioridades: la hipótesis implícita en la planificación anterior es que todos los proce-sos tienen igual importancia. Esto no es cierto en la realidad, ya que el proceso de actuali-zación del reloj no puede esperar. Un defecto propio de la ejecución por prioridades esque procesos de muy baja prioridad lleguen a no ejecutarse jamás; este jamás es literal, ya

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    4/63

     4

    que en una universidad de EEUU se encontró por casualidad un proceso que llevaba me-ses esperando la ejecución. Esta “deficiencia” de este tipo de planificaciones se solucionahabitualmente incorporando la variable “tiempo de espera” haciendo que la prioridad del proceso se incremente automáticamente con el transcurso del tiempo.

    d)  Colas Múltiples: trata de solucionar algunos problemas de la planificación por priorida-des, teniendo en cuenta una característica de los procesos que lleva a considerar el tiempo

    necesario de ejecución dado por el uso de la CPU en operaciones matemáticas o la pre- ponderancia del trabajo con datos externos. Estas clasificaciones se conocen con el nom- bre de “limitado por CPU” y “limitado por E/S”. 

    e)  SJF (Shortest Job First): esta planificación tiende a mejorar el tiempo de respuesta, po-niendo en ejecución primero los trabajos más cortos y luego los más largos; el tiempo deregreso también se acorta, aunque el tiempo total es el mismo. Una desventaja importantede este tipo de planificaciones es que el SO debería conocer con anticipación cuántotiempo de CPU requiere cada proceso, y el sistema no cuenta con capacidad de adivina-ción.

    Interrupciones

    En la analogía del científico computador pastelero, se hizo referencia a un cambio de procesos. Siusamos una planificación del tipo de prioridades, que se considera apropiativa, el SO dependien-do de los procesos, deberá conmutar a la CPU en el instante en que un proceso de mayor priori-dad necesite ejecutarse. En la figura de arriba, el servicio del disco es un proceso que tiene priori-dad sobre el servicio de comunicaciones, éste es más prioritario que el servicio de impresora, yéste es más prioritario que el programa en ejecución.

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    5/63

      5

    En una interrupción se debe guardar el estado de la CPU (los registros más importantes) y luegocomenzar la ejecución del proceso siguiente.

    El Bloque de control del proceso o en inglés PCB (Process Control Block) es un registro especialdonde el sistema operativo agrupa toda la información que necesita conocer respecto a un proce-so particular. Cada vez que se crea un proceso el sistema operativo crea el PCB correspondiente para que sirva como descripción en tiempo de ejecución durante toda la vida del proceso.

    Cuando el proceso termina, su PCB es borrado y el registro puede ser utilizado para otros proce-sos. Un proceso resulta conocido para el sistema operativo y por tanto elegible para competir porlos recursos del sistema sólo cuando existe un PCB activo asociado a él. El bloque de control de proceso es una estructura de datos con campos para registrar los diferentes aspectos de la ejecu-ción del proceso y de la utilización de recursos. La información almacenada en un PCB incluyetípicamente algunos o todos los campos siguientes:

      Identificador del proceso (Process Identificator -PID-, de sus siglas en Inglés).

      Estado del proceso. Por ej. listo, en espera, bloqueado.

      Contador de Programa: Dirección de la próxima instrucción a ejecutar.

      Valores de registro de CPU. Se utilizan también en el cambio de contexto.  Espacio de direcciones de memoria (registro base, registro límite). (Ver “Paginación”) 

      Prioridad, en caso de utilizarse dicho algoritmo para planificación de CPU.

      Lista de recursos asignados (incluyendo descriptores de archivos y sockets abiertos).

      Estadísticas del proceso (tiempos de ejecución históricos, limitación de la CPU).

      Datos del propietario (owner), habitualmente denominado “padre/hijos”.

      Permisos asignados.

    Comunicación entre periféricos

    Habitualmente se suelen denominar periféricos a elementos agregados fuera del gabinete de lacomputadora, en nuestro caso nos centraremos en la CPU y usaremos ese vocablo para denomi-nar elementos que se comunican con la CPU.

    En la arquitectura Harvard, existen líneas de comunicación (buses) diferentes para los datos y el programa, este tipo de arquitectura es el que usa el µC PIC; en el caso habitual de las PCs se usala arquitectura Von Neumann, cuya característica es que datos y programa están ubicados en laRAM y por lo tanto comparten el bus de datos.

    En las PCs existen tres buses diferenciados por su utilidad: el ya mencionado de datos, el de di-

    recciones y el de control. Los de datos y direcciones quedan definidos por su nombre, el de con-trol son todas las líneas de comunicación que no puedan ser definidas ni como datos ni como di-recciones.

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    6/63

     6

    En la figura anterior se esquematiza el modelo de Harvard, siendo cada uno de los bloques un periférico y uno de ellos la CPU.

    El bus de datos puede incluir entre 32 y cientos de líneas, cuyo número se conoce como anchuradel bus de datos. Puesto que cada línea solo puede transportar un bit en cada instante, el númerode líneas determina cuántos bits se pueden transferir al mismo tiempo. La anchura del bus es unfactor clave a la hora de determinar las prestaciones del conjunto. Por ejemplo, si el bus de datostiene una anchura de 8 bits (1 byte) y las instrucciones son de 16 bits, entonces el procesador de- be acceder al módulo de memoria dos veces por cada ciclo de instrucción y si busca un dato nu-mérico tipo doble precisión, deberá acceder 4 veces.

    Las líneas de dirección se utilizan para designar el emisor y el receptor de la comunicación y/o laubicación del dato o instrucción buscado (RAM). Claramente, la anchura del bus de direccionesdetermina la máxima capacidad de memoria direccionable en forma directa del sistema. En algu-nos casos de esta estructura se posiciona el programa en la parte baja de la memoria y los datosen la parte alta de la memoria, como la manera de hacer sencillo el cambio entre instrucciones y

    datos, cambiando el bit más significativo (MSB).Las líneas de control se utilizan como procedimientos pre y post comunicacionales (Handsha-king).

    Las señales de control transmiten tanto órdenes como información entre los módulos del sistema.Entre las más comunes están las señales de: Memory Write; Memory Read; I/O Read; I/O Write;diferentes señales tipo ACK (Aknowledge); Bus Request; Bus Grant; Interrupt Req; InterruptACK; etc.

    Temporización de los buses

    Las comunicaciones se pueden clasificar en Síncronas o Sincrónicas y Asincrónicas. Las prime-ras están relacionadas directamente a un reloj (clock). Las comunicaciones en los buses son sin-crónicas, aunque la frecuencia del reloj que las rige es diferente del reloj que comanda la CPU.En la actualidad se pueden encontrar buses de 400 MHz y 800 MHz, cuando el de la CPU estácerca de los 2000 MHz (2 GHz).

    La figura siguiente representa en forma simplificada un ciclo de lectura/escritura de la RAM.

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    7/63

      7

    En el gráfico aparecen los datos del reloj, el bus de direcciones, el bus de control y el de datos.Generalmente se utilizan los flancos de bajada de la señal para efectuar la operación indicada porel nombre de la señal en cuestión.

    La comunicación comienza en el bus de control con las líneas de estado y después de un brevelapso aparecen la dirección del periférico (en un gran porcentaje de casos, las comunicacionesinvolucran como emisor o receptor a la CPU). Los periféricos leen esta dirección en el flanco de bajada de la señal “validación de dirección” y tienen un tiempo para compararla con su propiadirección. Esta comparación resulta válida sólo para el periférico que debe intercambiar con laCPU, en este caso, suponemos que es la RAM. Lo que sigue es la activación de la RAM en elmodo de lectura (desde el punto de vista de la CPU lectura implica requerir de la RAM un datoespecífico), a partir de allí la RAM coloca el dato en el bus de datos “línea de datos” y con elflanco descendente de la señal de lectura, la RAM le avisa a la CPU que puede copiar ese dato asus registros. En la operación de escritura es la CPU la que avisa a la RAM a través de la señal“escritura” que el dato que está en el bus es el que se debe guardar. 

    Las señales de control involucradas en esta comunicación son las de: líneas de estado, validaciónde la dirección, lectura y escritura.

    Una vez completado este ciclo que, según la figura, ocuparía tres ciclos del reloj (7,5 nseg), los buses de datos y direcciones se deberán ocupar de otras comunicaciones. Dado que el tiempo esno-humano, un humano supondría que el bus lleva una cantidad de datos muy grande; este proce-so se denomina “multiplexión”, en este caso, de tiempo. Debido a la complejidad cada vez mayor del uso del bus de datos, se incorporó al sistema unÁRBITRO DE BUS.

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    8/63

     8

    Esta figura representa el método antiguo de arbitraje a través de un terminador de bus, en dondecada periférico o bloque solicitaba el uso del bus a través de un contacto eléctrico. La ubicaciónfísica de los bloques determinaba su prioridad, lograda por el tipo de conexión, denominadoDaisy Chain.

    En la actualidad, el árbitro del bus es un periférico más al que acceden cada uno de los bloquessolicitando el bus de datos con una línea (control), para identificarse pueden utilizar una línea

    cada periférico o el bus de direcciones. El árbitro compara esa dirección para otorgarle un nivelde prioridad, y ésta a su vez, indicará cuándo puede usar el bus de datos para la comunicación(ver esquema de Modelo Harvard).

    Como estudio de caso, daremos algunas características del bus tipo PCI (Peripheral ComponentInterconnect), patentado inicialmente por la empresa Intel en 1990 para su procesador Pentium, posteriormente la patente fue cedida por Intel al dominio público, lo que motivó a muchos fabri-cantes de hardware a incorporar esas especificaciones a sus componentes. Como resulta de apli-cación electrónica sencilla, y por lo tanto es barato, ha ganado popularidad rápidamente, suplan-tando a los anteriores (ISA, EISA, Local bus, etc.).

    El Standard PCI es un bus de 64 bits de datos, con una frecuencia de reloj de 66 MHz y transfe-

    rencias múltiples de datos (hasta 528 MB/seg o 4,224 Gb/seg.). Esto es decir que el árbitro (tam- bién centralizado) puede otorgar el bus a un periférico para que éste transmita un tren de datosseguidos, dependiendo del tráfico de datos en cada instante. Este tipo de transferencia hace a laeficiencia y rapidez de transmisión, características necesarias para adaptarse mejor a las frecuen-cias de la CPU.

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    9/63

      9

    A este bus se le pueden acoplar adaptadores para conectar periféricos más lentos o más rápidosque las velocidades normalizadas.

    El arbitraje es centralizado y sincrónico, utiliza un esquema maestro-esclavo (master-slave) y prioridades para la cesión del bus. Cada dispositivo del bus PCI se conecta al árbitro a través deuna línea de petición identificada con un número que por simplificación supondremos relaciona-do al orden de prioridad de ese dispositivo; el árbitro contesta con una línea también numerada para que el dispositivo reconozca su posibilidad de uso del bus.

    Ciclos de instrucción

    Cuando hablamos de los procesos los relacionamos con un programa. Habitualmente estamosacostumbrados a programar en lo que denominamos lenguajes de alto nivel (el nivel se corres-

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    10/63

     10

     ponde con el grado de abstracción y, por lo tanto, el nivel más alto es el del programador y elnivel más bajo la CPU); como esas instrucciones las debe entender la CPU lo que denominamoscompilador es el encargado de traducir las estructuras de alto nivel a niveles compatibles con laCPU.

    En los párrafos siguientes trataremos de conceptualizar cómo es una instrucción de bajo nivelsuponiendo una sentencia de asignación del tipo

    A=B+A

    Esta sentencia debe entenderse como: tomar el contenido de la dirección B de memoria e ingre-sarlo a uno de los registros de la CPU; tomar el contenido de la dirección A, ubicarlo en otro re-gistro de la CPU; sumar los valores de los datos obtenidos y, por último, ubicar el resultado en ladirección A (el dato previo de la dirección A se pierde).

    El método que vamos a ejemplificar supone un direccionamiento directo de la memoria RAM(más adelante veremos que hay otros modos de direccionamiento de la RAM).

    Proponemos considerar que las primitivas del procesador usado son 16, lo cual implica códigosde operación para la CPU de cuatro bits. En la actualidad se usa combinar en una instrucción los

    códigos de operación y las direcciones de memoria. Para este esquema, si queremos direccionarhasta 2.048 Bytes de RAM necesitaremos un formato de instrucción de 16 bits, como indica lasiguiente figura.

    En la figura, los códigos de operación a usar se limitan a cargar la instrucción de bajo nivel alregistro acumulador desde la memoria; sumar a ese acumulador un dato desde la memoria y al-macenar el resultado del acumulador en una posición de memoria.

    En la figura siguiente se esquematiza la operación A=B+A simplificando el formato de instruc-ción a números decimales y suponiendo que A=941 y B=940, siendo éstas las direcciones quecontendrán los datos a sumar.

    AC representa el registro Acumulador (o de trabajo para el PIC)

    IR representa el registro del decodificador de instrucciones

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    11/63

      11

    Las posiciones de RAM están identificadas por su dirección y el contenido (en este caso se respe-ta el orden bajo para el programa y el alto para datos).

    En el caso particular del µC PIC el formato de instrucciones es de 14 bits; 8 corresponden a lasdirecciones y 6 a los códigos de operación.

    Los pasos del esquema anterior involucran las siguientes operaciones:

    Paso 1: el PC (Program Counter) tiene la dirección 300. En esa dirección existe la instruccióncompuesta de 1 (cargar AC desde la memoria) y 940, que es la dirección de memoria. Este dato

    (1 940) se copia en el registro de instrucción y se decodifica: código de operación y dirección dememoria.

    Paso 2: se efectúa un ciclo de lectura de la RAM a la posicición 940 y se copia el dato de esadirección (valor 3) al acumulador.

    Paso 3: el PC tiene la dirección 301. En esa dirección existe la instrucción compuesta de 5 941,que se copia en el registro de instrucción y se decodifica: código de operación y dirección dememoria (código de operación 5 es sumar al acumulador un dato de memoria)

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    12/63

     12

    Paso 4: ejecuta la suma entre el acumulador y el dato de la posición de memoria 941.

    Paso 5: el PC (Program Counter) tiene la dirección 302. En esa dirección existe la instruccióncompuesta de 2 (almacenar el acumulador en una posición de memoria) y 941, que es la direcciónde memoria. Este dato (2 941) se copia en el registro de instrucción y se decodifica.

    Paso 6: se ejecuta la instrucción 302, con lo cual se copia el contenido del acumulador a la posi-ción de memoria 941.

    Modos de direccionamiento

    Ya sea por las operaciones a realizar o para lograr direccionamientos más amplios, existen variasformas de que en una instrucción se haga referencia al dato de memoria. Algunos de esos modosestán graficados a continuación.

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    13/63

      13

    Direccionamiento Inmediato

    Es la forma más sencilla de direccionamiento porque en realidad no es un direccionamiento. Enla instrucción (codop+operando) el código de operación siempre indica la operación matemáticao lógica a realizar. En el resto del código de la instrucción en este modo simplemente está el valor para usar en la operación, es decir, no hay acceso adicional a memoria para tener el valor.

    Direccionamiento Directo 

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    14/63

     14

    Los bits que en la instrucción anterior contenían el operando ahora contienen una dirección físicade la memoria donde reside el dato a utilizar. La limitación de este direccionamiento está en lacantidad de bits destinada a las direcciones.

    Direccionamiento Indirecto 

    En este caso los bits contienen una dirección de memoria cuyo contenido es la dirección de me-moria que contiene el dato. Con este esquema podríamos usar, por ejemplo, 4 bits en el campo dedirecciones de la instrucción (16 posibilidades) y a través de una tabla residente en RAM de 16 posiciones de 1 byte, accederíamos en realidad a 256 posiciones por cada una de las entradas dela tabla, en total, 16x256=4096 posiciones. Dependiendo del microprocesador esta tabla puedeestar dentro de alguna zona de memoria interna con lo cual se ahorraría uno de los accesos a me-moria externa.

    Direccionamiento con Desplazamiento 

    Dentro de estos los más conocidos son el relativo y el indexado.

    Relativo: Este direccionamiento requiere que las instrucciones tengan dos campos de direccio-nes; el valor contenido en uno de los campos es utilizado directamente y el otro campo de direc-ciones contiene habitualmente una referencia implícita. La dirección efectiva se consigue suman-do la dirección explícita al contenido de la dirección implícita. Esto si bien es complicado de en-tender mediante texto, es fácilmente entendible si pensamos en una tabla de conversiones de do- ble entrada. La tabla estará ubicada en forma secuencial en memoria a partir de la dirección ex- plícita de la instrucción. El desplazamiento a los otros renglones de la tabla se guarda en una po-sición de memoria referenciada indirectamente. Variando el valor de esta última posición de me-moria, obtenemos el acceso a cada uno de los renglones de la tabla.

    Indexado: En este caso la primera porción de la dirección es también relativa, es decir, referen-

    cia a una posición de la memoria externa.

    Memoria

    Cuando nos referimos a “Memoria”, estamos hablando, específicamente, de la RAM. Es uno de

    los recursos más importantes de una máquina, ya que interviene en una relación muy estrecha conel microprocesador. En forma básica podemos pensar la memoria física como un estante con mu-chos cajones y dentro de cada cajón lo que llamamos un dato; cada cajón se podrá abrir mediante

    una dirección específica.

    Administración de la Memoria

    El esquema más sencillo es el direccionamiento directo, lineal, de la memoria física. Para estetipo de direccionamiento no hay otra planificación más que comprobar si el espacio físico libre dememoria permite cargar el programa y los datos que queremos ejecutar. Este tipo de esquema fueel utilizado en las primeras computadoras para el modo monoprocesamiento.

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    15/63

      15

    Cuando se comenzó a pensar en mejorar la eficiencia de la CPU, esto llevó a considerar lo que sellama multiprocesamiento. En este contexto la CPU se conmuta entre varios procesos (cada pro-ceso podría pertenecer a un programa diferente); la RAM debe contener a los procesos y, por lotanto, la RAM va a estar compartida. Los algoritmos de administración de la memoria tienen sen-tido en el contexto de multiprogramación.

    Multiprogramación lineal 

    Éste es el esquema más sencillo de la administración y se basa en usar la memoria para cargar lamayor cantidad de procesos posibles. El SO no utiliza otro algoritmo que no sea el de buscar unespacio lo suficientemente grande como para que quepa el proceso.

    En la primera carga de la memoria se puede llegar a aprovechar valores muy cercanos al 100 %de la memoria, pero a medida que el SO debe cambiar los procesos para su futura ejecución, y yaque los procesos no ocupan todos el mismo lugar, van quedando huecos cada vez más pequeños ydistribuidos, lo que los convierte en inútiles (los procesos deben cargarse en posiciones contiguasde la memoria). A este problema se lo llama Fragmentación Externa y puede dejar espacios muygrandes de la memoria inutilizables.

    La forma de solucionar esto es efectuando la compactación de la memoria. En este modelo el SOdebe analizar todo el espacio de memoria e ir reubicando procesos de manera de ir acumulandoesos huecos de manera de volverlos útiles. Este procedimiento ocupa mucho tiempo de CPU,haciendo que el rendimiento del sistema disminuya notablemente.

    Multiprogramación por páginas 

    La primera forma de solucionar la fragmentación externa es dividiendo el espacio de memoriaRAM en subespacios (frames), todos de la misma capacidad. Se suele denominar Frames a losmarcos de página, es decir, al espacio físico sin datos que conformará la página (datos). Este es-

    quema tiene, como todos, sus ventajas y sus desventajas. Como ventajas principales están:a)  Un direccionamiento jerarquizado, tipo Árbol

     b)  La posibilidad de extender la memoria RAM a través de un concepto denominado Memo-ria Virtual, en el que se usa el disco como extensión de la RAM disponible.

    Como desventajas se pueden citar:

    a)  Que el direccionamiento es más complejo y requiere apoyo de la arquitectura de la CPU

     b)  Dependiendo del tamaño de las páginas, aparecen en la última página de un proceso zonaslibres (a menos que el proceso ocupe exactamente un múltiplo entero de la capacidad delas páginas), que se denomina fragmentación interna, y que, estadísticamente, podría es-

    timarse en la mitad de la capacidad de una página.c)  Aparece el concepto de Dirección Lógica, que debe ser transformada a una dirección físi-

    ca, como vemos en el siguiente ejemplo:

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    16/63

     16

    En este esquema, los procesos pueden cargarse en zonas de memoria que no sean contiguas, laque sí debe ser secuencial es la tabla de páginas. Dentro del programa, cada dirección lógica estáconstituida por un número de página y una dirección relativa dentro de la página (desplazamien-to).

    La tabla de páginas está implícita en los PCB, en la forma de registro Base y registro Límite.Existen mecanismos dentro de la arquitectura del procesador que verifican que las direccionesfísicas obtenidas sean congruentes con esta tabla de página, para evitar que el Program Counteresté direccionado a una dirección de memoria errada.

    El esquema siguiente representa el modo de direccionamiento del Pentium con un poco más de precisión.

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    17/63

      17

    Algoritmos de Reemplazo de Páginas

    Utilizando el concepto posible dentro de paginación que era la memoria virtual, se presenta el problema de una memoria RAM escasa extendida por las páginas ubicadas en el disco. El pro- blema implica saber qué páginas de la RAM puedo borrar cuando necesito cargar páginas deldisco.

    El SO, cuando termina de ejecutar las instrucciones de una página, necesita continuar con la si-guiente en forma secuencial. Ahora bien, una vez que termine de ejecutar las instrucciones de

    esta nueva página, las preguntas son: qué página va a necesitar, y si esta página ya está cargadaen la RAM o hace falta borrar una de las páginas usadas para cargar la necesaria del disco (Fallode Página).

    Detallaremos a continuación algunos algoritmos útiles para los fallos de página:

    a)  Reemplazo sencillo tipo FIFO (First In First Out). Es el algoritmo más sencillo y baratode implementar, ya que sólo lleva una cola de las páginas a reemplazar, cuyo orden en principio es aleatorio. Este esquema es el que, en general, produce más fallos de página, y por lo tanto el menos eficiente.

     b)  Reemplazo óptimo. Es el mejor algoritmo en cuanto a la cantidad de fallos de página, pe-ro es muy difícil de implementar. Se etiqueta cada página con un número equivalente a lacantidad de instrucciones del programa en el que se hace referencia por primera vez a esa página. El algoritmo implica cambiar las páginas de acuerdo al menor número, es decir, la página a la que se hace referencia en la menor cantidad de instrucciones del programa. Pa-ra que este algoritmo pudiera ser implementado, el programa no debería tener saltos, o lossaltos ocurrir dentro de páginas contiguas a la actual, lo cual es irrealizable en programasconvencionales.

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    18/63

     18

    c)  La menos recientemente usada (variable tiempo)(LRU: Least Recently Used). Es unalgoritmo que se basa en tiempo que ha pasado desde que esa página se usó. Es probableque las páginas que han sido usadas recientemente, no se usen enseguida. La implementa-ción de este algoritmo implica mantener una lista histórica de cuándo fueron usadas las páginas solicitadas por cada proceso.

    d)  La que más recientemente se usó (variable tiempo)(Most Recently Used) El algoritmo

    es el contrario al anterior y, a pesar de ello, es mejor que el de reemplazo sencillo.e)  Menos frecuentemente usada (variable frecuencia)(LFU: Least Frequently Used). El al-

    goritmo anterior se basaba directamente en el tiempo transcurrido desde el último uso deuna página en particular. En este algoritmo, lo que se verifica es la cantidad de veces quefue solicitada históricamente esta página. Ante un fallo de página, la que se reemplaza esla que menos veces fue utilizada por el programa.

    f)  Más frecuentemente usada (variable tiempo)(Most Frequently Used) Como en el casode tiempos, este algoritmo implica considerar el cambio de la página que más se hayausado. Teniendo en cuenta la localidad de las referencias, este algoritmo debería ser peorque el anterior.

    Existen otros métodos de intercambio de páginas más o menos eficientes que suponemos se trata-rán con más detalle en la materia destinada a SO.

    Caso práctico del uso de los algoritmos vistos

    Tomaremos el caso de un proceso que utiliza secuencialmente las páginas siguientes:

    7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 0, 1, 7, 0, 1Supondremos además que sólo disponemos de tres marcos para completarlos con los datos deesos números de página.

    FIFO

    Hay 19 pedidos de páginas, a continuación se grafican los fallos de página.

    Con este algoritmo, de 19 pedidos hubo 12 fallos. Tener en cuenta que esto es una cola en dondelos nuevos datos entran por la parte superior y los últimos datos se pierden.

    ÓPTIMO

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    19/63

      19

    En este algoritmo se reemplaza la página que no se usará durante el mayor período de tiempo quesigue, es decir, el SO debe “adivinar” la secuencia de páginas que usará el programa. 

    LRU

    Este algoritmo se podría llevar a cabo asociando cada posición de la tabla de páginas a un conta-dor que se vaya incrementando con unidades de tiempo predefinidas. La página que se cambia esla que tiene el mayor número asociado. En el caso de no haber fallo de página, el contador aso-ciado a ella se vuelve a 0.

    LFU 

    En el ejemplo, al querer aplicar el algoritmo, nos encontramos con que dos de las páginas hansido usadas igual número de veces, en este caso adoptamos cambiar la que más lejana en el tiem- po estuvo, o sea que, en realidad, hemos hecho una mezcla de dos algoritmos.

    Multiprogramación por segmentos 

    Conceptualmente se puede entender como un conjunto de espacios de longitud variable. La ven-taja de esta imagen sobre el enfoque de paginación estriba en que se puede proporcionar protec-ción a nivel de byte si fuera necesario. Para el Pentium existe una referencia al segmento de 16 bits y un desplazamiento de 32 bits. Dos de los bits de la referencia al segmento se utilizan para protección y los 14 restantes para especificar el segmento. En total se dispone entonces de 246, o

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    20/63

     20

    sea 64 TeraBytes; el espacio de direcciones físicas utiliza 32 bits, lo que da una memoria de tra- bajo de 4 GigaBytes (límite de los SO actuales).

    Algoritmos para el manejo de la memoria secundaria o virtual

    Para mejorar la eficiencia de la transferencia de datos en el disco, se pueden usar 3 algoritmos básicos:

    a)  FCFS (First Come First Served). El archiconocido método de que el primero que llega esel primero que se atiende.

     b)  SSTF (Shortest Seek Time First). Con este algoritmo se organiza la cola de pedidos aldisco de manera que estén ordenadas por cercanía a la posición que se toma como inicial.

    c)  SCAN (Barrido). Este método trata de mantener la dirección (ascendente o descendente)que llevaban las cabezas al momento que consideramos como inicial y lee sólo en esa di-rección, cuando vuelve al principio no lee ni escribe.

    d)  C-SCAN (Barrido circular) Este algoritmo lee tanto en el camino de pistas ascendentecomo descendente

    Estos algoritmos tratan de minimizar las traslaciones entre pistas de las cabezas que era un tiem- po relativamente largo y que afectaba fundamentalmente a la velocidad de transferencia de datos.

    En el siguiente gráfico vamos a sacar los tiempos de respuesta suponiendo que un proceso haya pedido datos de las siguientes pistas:

    50, 98, 183, 37, 122, 14, 124, 65, 67

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    21/63

      21

    Memoria Caché

    Glosario

    Capacidad: normalmente se expresa en términos de Bytes, aunque dependiendo de la jerarquíade memoria se puede expresar en palabras. Lamentablemente nunca se pusieron de acuerdo en

    cuanto a la definición de cantidad de bits de una palabra. En general se toma como la unidad “na-tural” de la jerarquía de memoria de la que se está hablando, y de la CPU asociada. Hay palabrasde 32, 64, 128 bits.

    Tiempo de acceso: es el tiempo que tarda en realizarse una operación de lectura/escritura com- pleto, es decir: el tiempo que transcurre desde el instante en que se presenta una dirección a lamemoria hasta que el dato (Byte o palabra) está disponible para su uso en el bus de datos.

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    22/63

     22

    Tiempo de ciclo de memoria: es el tiempo de acceso más los tiempos de las señales de controlinvolucradas.

    Ubicación: indica si la memoria es interna o externa al computador. La memoria interna sueleidentificarse con la memoria principal (RAM). El punto de vista para determinar la ubicación podría ser también la CPU; en este caso la memoria interna estará constituida por los registros yla memoria caché, y la memoria externa pasaría a ser la RAM.

    Unidad de transferencia: indica cuántos bits o Bytes se transfieren en un ciclo de lectu-ra/escritura. Algunas veces coincide con la palabra, pero en otros casos es mayor (256 bits omás).

    Unidades direccionables: en la mayoría de los casos, coincide con la palabra; en algunos, espe-cialmente los registros, se permite direccionar a nivel de bits. En cualquier caso, la relación entrelas unidades direccionables A y el número de unidades direccionables es 2 A=N.

    Velocidad de transferencia: es la velocidad a la que se pueden transferir datos (actualmente sehabla de bits por el tipo de transmisión usado). Se puede utilizar la siguiente relación:

     R

     N T T  A N 

       

    TN = tiempo medio de lectura/escritura de N bits.TA = tiempo de acceso medio por bitN = número de bits

    R  = velocidad de transferencia en seg 

    bits 

    Jerarquía de memoria

    Memoria entarjetas/CPU

    Registros Alto costo por bit

    Muy bajacapacidad

    Muy rápida AccesosCPU a L2

    CachéRAM

    Almacenamientofuera de tarjetas

    Discos

    Almacenamientofuera de línea

    WORMMuy bajocosto por bit

    Alta capaci-dad

    LentaAccesosCPU a L1

    Existe un compromiso entre las tres características clave (costo, capacidad y tiempo de acceso).A menor tiempo de acceso, mayor costo; a mayor capacidad, menos costo por bit; a mayor capa-

    cidad, mayor tiempo de acceso.Existe una solución de compromiso que implica tener memorias en diferentes “niveles” (Levels),estos se enumeran con valores en incremento de acuerdo a la lejanía relativa a la CPU; así el L1es la memoria más cercana a la CPU y la L3 la más lejana. Este esquema implica tener variosniveles ordenados por capacidad-velocidad; en este caso, L1 es la más veloz, aunque de menorcapacidad.

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    23/63

      23

    La última columna de la tabla de jerarquías supone que los acccesos a memoria lenta son cadavez menos frecuentes. Esto es moderadamente verdad, siempre que se cumpla la condición deque la ejecución de un proceso sea efectuado genéricamente en pocas páginas de instrucción (odatos); con la disminución de los costos de caché al ser integrados al chip de la CPU esta condi-ción es mucho más frecuente y por lo tanto la eficiencia del uso de caché se nota mucho más.Esta característica de los programas o procesos fue denominada localidad de las referencias (temporal y espacial) y establece que durante períodos de tiempo largos (tiempos de CPU), lasagrupaciones de memoria en uso cambian, pero considerando períodos cortos, el proceso tiende ausar las mismas referencias a memoria. Estudios realizados sobre programas realizados en C de-muestran que con 8 bloques de caché por proceso, sólo hay fallos de página en menos del 1% delos accesos a caché.

    En el cálculo de los tiempos de acceso para memorias de dos niveles, debemos considerar el con-cepto de tasa de aciertos. En una configuración de dos niveles, la tasa de aciertos de un nivelcorresponderá a la inversa (Tasa de fallos) del otro nivel.

    )1(*

    )(*)1(*

    21

    121

     H T T T 

    T T  H T  H T 

     M 

     M 

     

    H= tasa de aciertos del nivel 1

    T1= tiempo de acceso medio al nivel 1

    (1-H)= tasa de fallos del nivel 1 (certeza –  aciertosL1 = fallosL1)

    T2= tiempo medio de acceso al nivel 2

    TM= tiempo medio de acceso a los dos niveles

    Si H fuera el 100%, el tiempo medio sería T1; si H fuera 0, el tiempo medio sería T1+T2

    Supongamos que el procesador tiene que acceder a dos niveles de memoria: L1 contiene 1K pa-labras y un T1 = 10 nseg.; L2 contiene 100K palabras y T2 = 100nseg. y H = 0,95. El método deescritura de la caché es WT (write through), lo que lleva a considerar que si debe acceder al L2debe haber efectuado un ciclo de lectura de L1 para buscar la página y, al no encontrarla, buscaen L2; cuando la encuentra debe grabarla en L1 para que la CPU pueda acceder al dato (o ins-trucción en V.Neumann). Despreciando los tiempos de handshaking, el tiempo medio de accesoserá:

    Lo que justifica usar diferentes niveles son las condiciones implícitas en el gráfico de jerarquías:L1 pequeña pero extremadamente veloz, L2 más grande y más lenta y L3 mucho más grande yaún más lenta que L2. Una relación posible es un orden de magnitud (10 veces) entre niveles.

    PrestacionesPara evaluar la cantidad de caché a utilizar se deben considerar el costo y el rendimiento final delconjunto. El costo se calcula como:

    C es el costo por palabraM es la cantidad de palabras a adquirir

    nseg nseg nseg nseg    15)10010)(95,01(10*95,0  

    21

    2211

     M  M 

     M C  M C C 

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    24/63

     24

    El nivel 2 es más barato, de modo que interesa conseguir que Ct sea muy próximo a C 2. Esto seconsigue haciendo que M1 

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    25/63

      25

    Para que no oficie de antena, la longitud de la línea debe ser alrededor del 10% de   , o sea 1,5cm. Resumiendo lo anterior: no se deben mover señales eléctricas con frecuencias cercanas a los2GHz a distancias mayores de 1,5cm.

    La figura siguiente describe la estructura de un sistema de memoria caché/principal. La memoria principal consta de hasta 2n unidades direccionables y cada palabra tiene una única dirección dem bits. La memoria está dividida en bloques (podrían ser páginas) de K  palabras por bloque, es

    decir que hay M bloques (páginas), siendo M = 2n/K . La caché consta de C filas, cada fila con-tiene K  palabras, es decir que en cada fila de la caché entra un bloque de los considerados para lamemoria; tiene además unos bits de más como etiqueta, que habitualmente es parte de la direc-ción del bloque e información sobre modificaciones en el bloque (si fue modificado por el proce-so hay que grabarlo a disco antes de eliminarla de la caché, en caso contrario sólo se elimina). Secumple la condición de que C

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    26/63

     26

    c)  Algunos pocos periféricos pueden tener velocidades que superen a la del bus

    d)  Los periféricos usan datos con formatos y tamaños de palabra diferentes a los del compu-tador.

    Como interfase entre el bus y el dispositivo genéricamente aparece un módulo de entrada/salida.Este módulo, como función, debería compensar la lógica del dispositivo de entrada/salida, losformatos y las velocidades. Las funciones de un módulo suelen incluir, además de las antedichas,el almacenamiento temporal de datos y la detección de errores.

    El control de la transferencia de datos desde un dispositivo externo hasta el procesador podríainvolucrar los siguientes pasos:

    a)  El procesador interroga al módulo de entrada/salida para comprobar el estado del disposi-tivo.

     b)  El módulo devuelve el estado.

    c)  Suponiendo que el dispositivo está preparado para transmitir o recibir datos, el procesadorsolicita al módulo la transferencia del dato.

    d)  El módulo de entrada/salida obtiene o transmite el dato del dispositivo externo.

    e)  El dato se transfiere desde el módulo al procesador.

    Con referencia al gabinete, los dispositivos pueden dividirse en internos y externos. Genérica-mente, los externos interaccionan con el operador y, a excepción del monitor (video), se puedenconsiderar como muy lentos. Los internos están más relacionados a los datos y sus velocidades detransferencia, comparados con los de la CPU, también son lentos (pero mucho más rápidos quelos externos).

    Como ejemplo, citaremos el módulo (chip) identificado como 8255, destinado a controlar interfa-ses que manejan datos en forma paralela (8 bits). Este chip es bastante parecido a un microcontro-lador: tiene tres puertos de 1 Byte, configurables como entradas o salidas, una salida/entrada dedatos de 1 Byte, algunas señales de control y dos líneas para direcciones.

    El uso más difundido fue el concepto de “mapeado en memoria”. Este concepto implica que losregistros internos del módulo (en este caso, el 8255) se hacen coincidir con direcciones físicas dela RAM. Con este método, las diferencias de velocidad se solucionan porque esas posiciones de

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    27/63

      27

    memoria RAM actúan como un almacenamiento de datos temporal (buffer) que compensa lasdiferencias de velocidad.

    En el modo de transmisión, la CPU coloca el dato a transferir en la posición de RAM asignada,habilita al módulo con una señal de control denominada Chip Select (CS) y, a continuación, otraseñal de control denominada Write. En el ciclo de lectura, el chip coloca al dato en otra posiciónde memoria, solicita una interrupción y, cuando ésta es aceptada, la CPU le indica al módulo que

    está lista a leer el dato con la señal Read; esta última aparentaría no ser necesaria, ya que la CPU puede leer el dato estrictamente con un acceso a memoria, esta señal, en realidad, le sirve al mó-dulo para saber que el dato fue leído y que, eventualmente, puede colocar otro dato en la memo-ria.

    Este módulo, en particular, es programable en una cantidad de modos de funcionamiento. Esosdiferentes modos se eligen a través de un dato denominado “Palabra de control”, al que se leasigna otra posición de memoria, efectuándose la programación a través de un ciclo de escritura yel conocimiento del estado del chip a través de uno de lectura.

    El método anterior, denominado E/S programada tiene como ventaja la sencillez de la implemen-tación, pero la desventaja de emplear mucho tiempo en ciclos de lectura/escritura de RAM para

    obtener el/los datos necesarios. Como ejemplo, supongamos que el proceso en ejecución requierecomo operando a un valor codificado en PuntoFlotanteDoblePrecisión; esto requiere leer 64 bits(8Bytes) y también 8 ciclos de lectura del módulo de E/S.

    Mientras la CPU carga el/los datos necesarios no puede hacer otra cosa que esperar respuesta delmódulo. Como las velocidades de E/S son considerablemente menores que la RAM y la CPU, lasolicitud y carga del dato requiere mucho tiempo de inactividad de la CPU. En computadoras personales, esto es un inconveniente menor ya que se resume a que el operador obtenga una baja

    velocidad y use el tiempo deinactividad de su CPU en pen-sar cómo puede hacer paracomprarse una PC más rápida.

    Si cambiamos nuestro punto devista a los negocios, ese tiemporepresenta dinero quieto en fun-ción de dinero moviéndose y, por supuesto, el dinero movién-dose genera ganancias así quehay que hacer más eficiente alsistema.

    Para mejorar este rendimiento,se pensó en agregar un contro-lador llamado de interrupcionesy hacer los pedidos a través deél. En este esquema, cuando laCPU necesita un dato ejecutauna orden de lectura a una di-rección. La línea de lectura puede ir directamente al contro-lador de interrupciones o al

    IRQ 0

    IRQ 1

    IRQ 2IRQ 3

    IRQ 4

    IRQ 5

    IRQ 6

    IRQ 7

    INT

    IRQ 0

    IRQ 1

    IRQ 2

    IRQ 3

    IRQ 4

    IRQ 5

    IRQ 6

    IRQ 7

    INT

    IRQ 0

    IRQ 1

    IRQ 2

    IRQ 3

    IRQ 4

    IRQ 5

    IRQ 6

    IRQ 7

    INT

    IRQ 0

    IRQ 1

    IRQ 2

    IRQ 3

    IRQ 4

    IRQ 5

    IRQ 6

    IRQ 7

    INT

    Dispositivo externo 00

    Dispositivo externo 01

    Dispositivo externo 02

    Dispositivo externo 07

    Dispositivo externo 08

    Dispositivo externo 15

    Dispositivo externo 56

    Dispositivo externo 63

    CPU

    INTR 

    Controlador de interrupcionesmaestro

    Controladoresde interrupcionesesclavos

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    28/63

     28

    controlador y a la RAM. La CPU sigue con otras tareas mientras el controlador de interrupciones prepara al módulo de E/S correspondiente a la dirección suministrada por la CPU. Cuando el sis-tema de E/S (módulo + hardware correspondiente) está listo, lo comunica al controlador de inte-rrupciones (CI) por una línea de control de las 8 que dispone el CI. Dependiendo de la línea soli-citante, el CI las ordena por prioridades y solicita a la CPU la interrupción por la línea IntR, juntocon la identificación del periférico que requiere atención. El SO determina si se va a atender o noesa interrupción a través de “máscaras” de comparación. Las “máscaras” no son otra cosa quedatos contra los cuales se compara la identificación del periférico que requiere atención con algúnorden de prioridad preestablecido.

    El 8259 de Intel (CI) se puede cablear en modo árbol para manejar hasta 64 dispositivos de E/S.La programación normal determina que la línea IRQ 0 es más prioritaria que la INT 7, por lo tan-to en la figura tienen prioridades relacionadas en forma inversa a la identificación del dispositivo.

    En el caso de que la interrupción sea aceptada, el SO entra en un ciclo de cambio de procesoguardando los registros de la CPU y los datos necesarios para retomar el proceso actual y cuandoestán preservados, solicita al CI la dirección correspondiente del vector de interrupciones paraseguir el proceso de lectura/escritura del dato.

    Aparentemente todo este proceso es más largo que el anterior y es cierto, pero usando interrup-ciones, la CPU puede hacer otras cosas entre el pedido del dato y la lectura del mismo. El resul-tado es un aumento en la eficiencia de la CPU y por ello de todo el conjunto.

    El manejo de E/S por interrupciones no soluciona el problema de tener varios ciclos para leer undato compuesto de varios Bytes, una alternativa más moderna es usar una CPU ayudante deno-minada Direct Memory Access (DMA). Este chip se interpone en la comunicación de los datoscon periféricos que habitualmente requieren datos largos y tiempos de respuesta menores a sustransferencias a la memoria RAM, como por ejemplo la placa de red, la controladora de sonido yel disco rígido, entre otros posibles.

    La ventaja de agregar esta CPU ayudante es que la CPU principal le comunica el tipo de dato que

    necesita y la dirección inicial de memoria en que hay que ubicarlo. El DMA se encarga de la ta-rea rutinaria de ir cargando las posiciones consecutivas de memoria hasta completar el dato yavisarle a la CPU la disponibilidad del mismo a través de una interrupción. En este procedimien-to, la CPU sólo actúa para pedir el dato y para obtenerlo.

    En el caso de existir un solo Bus de Datos, van a tener que compartirlo entre la CPU y el DMA,lo cual hace que la eficiencia del sistema se incremente comparado al uso sin DMA, pero no lodeseable. La alternativa más costosa es construir otro Bus que se llamará de E/S conectado direc-tamente al DMA, con lo cual los procesamientos de E/S se delegan al DMA y los procesos másrápidos a la CPU, cada una de ellas con su propio canal de comunicaciones.

    El último concepto relacionado con las operaciones de E/S es el denominado “Canal de E/S”. El

    módulo de E/S tiene una zona de memoria propia, Buses propios y maneja un repertorio reducidode instrucciones (es capaz de ejecutar procesos) tendientes a las comunicaciones con los disposi-tivos de E/S, desde un punto de vista es otra computadora cuya tarea es comunicar datos a unacomputadora más rápida (esquema de cliente-servidor). El rendimiento, la amplitud de datos y laseguridad obtenida en el uso de la WideWorldWeb (internet) hizo que se pensara en esquemasdistribuidos aún dentro del mismo gabinete y ahora existen configuraciones de E/S (FireWire,Infiniband, USB) que usan protocolos de comunicaciones similares a los usados en Internet, aun-que con menos capas y mucho más rápidos, llegándose en algunos casos de uso de fibra óptica a

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    29/63

      29

    velocidades de transferencia de 30 Gb/seg y a 300m de distancia, cuando por cobre el PCI llega a1Gb/seg a distancias de pocos centímetros.

    Interrupciones en el Pentium

    Hay dos tipos de eventos que hacen que el Pentium suspenda la ejecución del flujo de instruccio-

    nes en curso y responda al evento: las interrupciones y excepciones. Una interrupción se genera por una señal del hardware y puede ocurrir en cualquier momento. Una excepción se genera des-de el software y es provocada por la ejecución de una instrucción. Hay dos fuentes de interrup-ciones y dos fuentes de excepciones.

      Interrupciones enmascarables: las recibe el procesador por el pin INTR. El procesador noatiende una interrupción enmascarable a no ser que un indicador especial lo habilite.

      Interrupciones no enmascarables: el pin se denomina NMI. El procesador no tiene formade evitar atender a tales interrupciones (por ejemplo: RESET).

      Excepciones detectadas por la CPU: se producen cuando el procesador encuentra un errormientras intenta ejecutar una instrucción.

      Excepciones programadas: hay instrucciones que generan una excepción (por ejemplo: fa-llo de página, depuración, etc.)

    El procesamiento de las interrupciones usa una tabla de vectores, cada tipo de interrupción tieneasignado un número que se usa para identificarla. Este número se usa como entrada a la tabla devectores de interrupción. La tabla contiene 256 datos de 32 bits cada uno, que representan la di-rección (segmento y desplazamiento) de la rutina de servicio a ejecutar. Si se generan más de unainterrupción o excepción, la CPU las atiende en un orden determinado por el SO.

    ID DESCRIPCIÓN0 Error al dividir; desbordamiento de división o división por cero

    1 Excepción de depuración. Incluye fallos e interceptaciones relacionadas con la de- puración de procesos.3 Punto de parada causado por la instrucción INT34 Desbordamiento detectado por INT05 Instrucción fuera de límites de la memoria6 No definido7 Dispositivo no disponible8 Doble fallo: dos interrupciones ocurres durante la misma instrucción9 Reservado10 Segmento en estado de tarea no válido11 Segmento no presente

    12 Error en la pila13 Violación de protección general14 Fallo de página15 Reservado16 Error de coma flotante17 Acceso a una palabra almacenada en dirección de Byte impar o doble palabra en

    una dirección que no sea múltiplo de 418 Verificación de la CPU (Watchdog)

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    30/63

     30

    19-31 Reservados2 Interrupción no enmascarable

    32-255 Vectores de interrupción del usuario (señal INTR)

    Las dos últimas son interrupciones y el resto excepciones. Cuando se produce una interrupción y

    es atendida tiene lugar la siguiente secuencia de eventos:1)  Si la transferencia supone un cambio de nivel de privilegio, los contenidos del re-

    gistro del segmento de pila y puntero de pila ampliado se introducen en la pila.

    2)  El valor actual del bit EFLAGS se introduce en la pila.

    3)  Los indicadores de interrupciones y de trampa se ponen a cero. Ello inhabilitaotras interrupciones y la interceptación o modo paso a paso.

    4)  Los contenidos actuales del puntero del segmento de código y del puntero de ins-trucciones se guardan en la pila.

    5)  Si la interrupción viene acompañada de un código de error se guarda también en la

     pila.6)  Se captan los contenidos del vector de interrupción y se cargan los registros nece-

    sarios para la ejecución de la interrupción.

    7)  La instrucción IRED vuelve a cargar los registros desde la pila para continuar laejecución anterior a la interrupción.

    Paralelismo en las instrucciones  –  procesadores superescalares

    El término “superescalar” fue usado en 1987 para mencionar a una máquina diseñada para mejo-rar la velocidad de ejecución de instrucciones escalares y estuvo muy relacionado con los proce-sadores pensados en esa época, en donde había más limitaciones en la construcción de grandesmemorias RAM (internas y externas). Esta limitación llevó a diseñar procesadores que tenían pocas instrucciones diferentes, pero cuya ejecución se podía decodificar y ejecutar en tiemposmuy cortos, dándoles el nombre de RISC (conjunto de instrucciones reducido).

    En la actualidad, un procesador superescalar es aquel que usa múltiples cauces de instruccionesindependientes. Cada cauce consta de múltiples etapas, de modo que puede tratar varias instruc-ciones a la vez (típicamente un programa de computadora debe considerar que tiene sus instruc-ciones ordenadas en una serie cuya lógica resuelve el problema). El hecho de que haya varios

    cauces introduce un nuevo nivel de complejidad al permitir varios flujos de instrucciones que se procesan simultáneamente. El procesador superescalar saca provecho de lo que se conoce como “ paralelismo en las instrucciones”, que hace referencia al grado en que las instrucciones puedenejecutarse en paralelo (independencia de las instrucciones).

    El procesador capta varias instrucciones a la vez y trata de encontrar instrucciones cercanas quesean independientes entre sí y puedan, por ello, ejecutarse en paralelo (multiplexión de recursos,no del tiempo). Si la entrada de una instrucción no es independiente, esto es que su entrada dedatos depende de la salida de otra (precedente), esta instrucción no puede ejecutarse al mismo

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    31/63

      31

    tiempo o antes de aquella. Una vez que se han identificado tales dependencias, el procesador puede emitir y completar la ejecución de instrucciones en un orden diferente al código original.El procesador puede eliminar algunas dependencias innecesarias a través del uso y renombra-miento de algunos de su gran cantidad de registros internos.

    Para mejorar el valor del “paralelismo de las instrucciones” se puede usar una combinación entresoftware (el compilador) y hardware. Algunas de las limitaciones que se encuentran para mejorar

    ese valor son:  Dependencia de datos verdadera

      Dependencia relativa al procedimiento

      Conflicto de recursos

    Dependencia de datos verdadera: 

    Supongamos el ejemplo

    A = A + B

    C = A

    La segunda instrucción no puede ejecutarse antes (o durante) la ejecución de la primera porquenecesita datos de ella. Los procesadores superescalares pueden atrasar un ciclo de reloj a la ins-trucción dependiente para poder ejecutarla. Esto, de alguna manera es una multiplexión en tiem- po, es decir que una instrucción se ejecuta después que la otra.

    Dependencia relativa al procedimiento

    El caso de una bifurcación condicional es una dependencia relativa al procedimiento, mientras nose sepa el valor de la condición no se puede ejecutar la instrucción de salto.

    Conflicto de recursos

    Uno de los recursos que aparenta ser poco importante son las comunicaciones a través del bus dedatos, si la máquina tiene uno solo, las comunicaciones terminan siendo un cuello de botella parael requerido paralelismo. Este conflicto se resuelve parcialmente disponiendo de varias compu-tadoras virtuales (o reales) en una configuración de red, siempre y cuando la comunicación deesta red sea mucho más veloz que las comunicaciones internas de datos de cada nodo.

    Implementación superescalar

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    32/63

     32

    La figura representa gráficamente el proceso de ejecución de instrucciones en una CPU de estetipo.

    El programa a ejecutar consiste de una secuencia de instrucciones, tal como sale del compilador.

    El proceso de captación de instrucciones tiene una lógica para predecir saltos y genera un flujodinámico de instrucciones que envía a una ventana de ejecución. En esta ventana, las instruccio-nes no forman un flujo secuencial sino que están estructuradas de acuerdo a sus dependencias dedatos verdaderas. Aquí podrían aparecer instrucciones “fantasma”, necesarias para completar unalógica de programación crítica (PERT). Las instrucciones se ejecutan y se desechan los resultadosirrelevantes o de tareas fantasma y se reordena secuencialmente el flujo de salida.

    Los procesadores de Intel han ido modificando su estructura de escalar (80486), modesta arqui-tectura superescalar (Pentium: dos unidades independientes ALU para enteros), hasta ser comple-tamente superescalares (Pentium Pro).

    Arquitectura IA-64

    Esta soporta desde el hardware el paralelismo de instrucciones y es bastante diferente a las apro-ximaciones seguidas por la historia de lo superescalar. Como siempre, está acompañada de latecnología que permite grandes cantidades de registros y caché de hasta tres niveles integradasdentro del chip. Tiene múltiples unidades de ejecución completas, siendo hasta ahora cuatro, se piensa que es posible llegar a ocho.

    Un resumen que no expresa todo su potencial es que ahora las instrucciones se ejecutan con pre-dicado, esto es que los ciclos de saltos condicionales se ejecutan completos: ambas ramas llegan asus resultados y luego se comprueba cuál de las ramas ejecutadas sirve como dato, la otra se

    desecha.La teoría de hacer y luego comprobar se aplica también en el caso de instrucciones de control ydatos.

    Referencias bibliográficas:

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    33/63

      33

    Sistemas Operativos Modernos, Adrew S. Tanenbaum. Editorial Prentis Hall.

    Organización y Arquitectura de Computadores, William Stallings. Editorial Prentis Hall.

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    34/63

     34

    Programación con assembler de un PIC 16F628/872

    Los genéricamente llamados procesadores tienen dos ramas que difieren en el modo en que secomunican con el exterior: los procesadores propiamente dichos tienen patas definidas para en-trada, salida, datos, direcciones y alimentación conocidas y fijas en cuanto a sus funciones. Lascomunicaciones con el exterior son síncronas y permanecen en un estado lógico tiempos muycortos, en algunos casos la duración de una instrucción (en el orden de algunos nanosegundos),

    debido a la gran cantidad de información que se espera que manejen.Los procesadores que llamaremos “controladores” se diferencian por tener patas de comun icaciónque pueden variar sus funciones durante la ejecución de un programa. Pueden ser durante unosciclos de reloj entradas, luego pasar a ser salidas e incluso permanecer en un estado lógico ina-movible durante mucho tiempo. El procesador al cual nos dedicaremos pertenece a esta últimaclase, lo fabrica la firma Microchip y llevan genéricamente el nombre de PIC y el núnero de mo-delo del que se trate, en este caso el 16F628.

    El primer número hace referencia al grupo dentro de la clase: existen los 12, 14, 16 y 18, cuantomayor el número, mayor la potencia de procesamiento. A excepción de los de alta gama, todostienen un grupo reducido de instrucciones (RISC), que ejecutan en lo que se deno mina “ciclo de

    instrucción” y que lleva cuatro ciclos del reloj. Con estos controladores se han fabricado desde boyas hasta la lógica de un automóvil. Son muyversátiles en cuanto a la frecuencia de reloj y la cantidad de patas de comunicación con el exte-rior, además de las funciones internas que son capaces de manejar que cubren desde comunica-ciones seriales, paralelas, conversores analógico-digitales, conversores de frecuencia, modula-ción, etc. etc.

    Todos tienen la esctructura de una máquina de Harvard, es decir una memoria (más el bus corres- pondiente) para instrucciones y una memoria para datos, esto le permite instrucciones de 14 bitscontra 8 bits de la memoria de datos.

    El modelo elegido tiene capacidad de almacenar programas de hasta 2000 líneas en una memoria

    tipo Flash (de allí la F del nombre), una RAM organizada en cuatro bancos de 128 posicionescada uno en donde residen los registros de control y algunas posiciones para ocupar con variablesdel programa y una zona de memoria EEPROM (64 Bytes) en donde colocar datos cuyos valoresse quiere preservar ante una falta de energía eléctrica (valores de configuración o promedios,etc.). El chip tiene 28 patitas, 24 son de entradas/salidas organizadas como tres grupos (PORTS)de 1 Byte y las restantes son para la alimentación y reloj externo. Cada pata tiene la posibilidadde ser entrada o salida digital o analógica, entrada de eventos exteriores que se pueden contar,entrada del programa, interrupción, etc. Como promedio cada pata puede tener dos funciones programables desde el programa a ejecutar (cambiables en tiempo de ejecución). Está dotado detres contadores identificados como TMR0, TMR1 y TMR2, hasta ocho interrupciones concatena-das, 10 eventos diferentes para provocar inerrupciones, conversor A/D de 10 bits, comunicación

    tipo Master o Master/Slave y un circuito de detección de fallos en la alimentación eléctrica que permite pasarlo al modo “sleep”, de bajo consumo y conservación de los datos (debe tener unaalimentación extra por batería tipo litio).

    Sobre la familia de controladores PIC existe una infinidad de documentación, programas, ensam- bladores y simuladores que dejan a cualquier apunte como el presente como una simplísima in-troducción al tema. Es justamente eso lo que pretende este apunte: hacer una introducción al len-guaje ensamblador de programación.

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    35/63

      35

    Los lenguajes de programación tratan de simplificar la vida del programador a medida que in-crementan su nivel. El nivel de máquina, donde hay que escribir cada instrucción con los códigosde operación y los argumentos en secuencias de unos y ceros, resulta ser el más complicado; aeste nivel le sucede el assembler, en donde cada instrucción se identifica por una cantidad de le-tras (tres o cuatro) y los argumentos escritos en numeración decimal o hexadecimal; a estos lesuceden los de mayor nivel, en donde la programación ya acepta lenguajes matemáticos y sintác-ticos simples, cuyo parecido al lenguaje convencional es cada vez mayor.

    El reloj

    Tiene un circuito interno que puede oficiar de reloj con sólo dos componentes externos que pue-den oscilar entre 100KHz y 1MHz aproximadamente, este reloj sencillo es poco preciso, variandocon la tensión de alimentación, la temperatura, la variación de valor de los componentes, etc. Paraosciladores más precisos se deben usar cristales y se pierden dos patas del controlador. Este con-trolador puede funcionar con frecuencias de reloj desde 0Hz (parado) hasta 20 MHz. Estos ex-tremos de frecuencias darían tiempos de instrucción entre infinito y 200 nanosegundos.

    Como reloj interno para contar tiempos se usa el tiempo de instrucción que equivale a cuatro ci-clos del reloj.

    Timer cero (TMR0)Como habíamos dicho antes, los temporizadores son, en realidad, contadores de eventos. Si estoseventos se realizan en tiempos iguales, la cuenta de estos implicaría un tiempo conocido.

    Este timer en particular se puede configurar como contador de eventos externos, que entrarían por una de las patas, o contador de eventos internos, provenientes de los tiempos de instrucción.También puede programarse lo que se denomina “prescaler”, que es en realidad un divisor pr o-gramable en 8 etapas que van desde 1:2 a 1:256. El registro usado para poder configurar lostiempos es el TMR0, de 8 bits, lo que permite divisiones de hasta 256 en pasos de a 1. La máximadivisión que obtendríamos usando el prescaler y el registro es de 1:65536.

    La salida es un bit (flag) del registro INTCON, denominado TMR01F (bit 2 del INTCON). Esteflag, que habitualmente está en 0, cambia a 1 cuando el registro TMR0 pasa del valor FFh a 00h(OVERFLOW). Si se configuran las interrupciones, este temporizador puede generar en el over-flow una interrupción.

    Timer uno (TMR1)

    Las diferencias con el timer 0 son las siguientes: el prescaler tiene 4 rangos configurables de 1:1 a1:8, el registro TMR1 pasa a ser de 16 bits, pudiendo cargarse en 2 partes como TMR1L yTMR1H. El timer este no genera interrupciones y su cuenta máxima será de 524288

    Timer dos (TMR2)

    Muy parecido a los otros dos, salvo por la estructura, que en este caso tiene un prescaler configu-

    rable entre 1 y 16 en tres pasos, el registro TMR2 de 8 bits y un postscaler configurable entre 1 y3, también en tres pasos. Este Timer puede generar interrupciones y su cuenta máxima será por12288.

    PORTA

    Tiene 6 patitas configurables como entradas digitales o analógicas o salidas digitales, esto se rea-liza a través del registro TRISA (bits 0 al 5) y se configuran con el ADCON1 en lo referente adigitales/analógicas.

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    36/63

     36

    PORTB

    Tiene 8 patitas configurables como entradas/salidas en ambos casos digitales. Se pueden habilitarunas resistencias de “pull up” internas, con lo cual el estado lógico sin conexión al exterior serán1’s. Otra característica muy interesante de este puerto es que las patitas RB7:RB4 se comparan en

    cada instrucción con el valor anterior y, de haber cambios, puede generar una interrupción.

    PORTC

    Compuesto de 8 patitas bidireccionales configurables. Este, a diferencia del anterior, no puedegenerar interrupciones y a diferencia del PORTA las entradas/salidas son siempre digitales.

    INTERRUPCIONES

    Todos estos controladores tienen la capacidad de manejar interrupciones, si bien mucho más sim- ples que lo explicado para microprocesadores. El modelo que estamos estudiando acepta diezcausas de interrupción, de las cuales sólo nos dedicaremos a tres:

    a)  Cambios en las entradas de mayor peso en el puerto B (bits 7 a 4)

     b)  Overflow en el registro del Timer 0c)  Oiverflow en el registro del Timer 1

    d)  Overflow en el registro del Timer 2

    El bit 7 del registro INTCON, denominado GIE (Global Interrupts Enable), habilita (en 1) lasinterrupciones o las inhabilita (en 0), más allá de que estén habilitadas por los bits correspondien-tes a cada una de ellas. El controlador, cuando acepta una interrupción, guarda el contenido delPC (program counter) en una zona de memoria RAM e inhabilita las interrupciones cambiandode valor a GIE; es decir que sólo puede atender a una interrupción por vez. Al volver del progra-ma de atención a la interrupción con RETFIE, habilita nuevamente las interrupciones y carga elPC con el valor guardado en memoria, así puede continuar con la ejecución del programa princi-

     pal.Hay que tener presente que el controlador no guarda otros valores de registros que no sea el PC,si el procesador necesita otros valores de configuración o registros (sobre todo el W) que pudie-ron ser modificados por la subrutina de interrupción, corresponde al programador incluir en esasubrutina de atención, loos pasos necesarios para guardar valores importantes del programa prin-cipal. Un ejemplo de las instrucciones necesarias para esta operación está explicitada en el ejem- plo de Tips & Tricks, más adelante en este apunte.

    Además del GIE deben estar habilitados los flags correspondientes a cada una de las interrupcio-nes que queramos atender:

    a)  Se habilita con el flag RBIE (bit 3 del INTCON)

     b)  Se habilita con TMR0IE (bit 5 del INTCON)

    c)  Se habilita con TMR2IF (bit 1 del PIR1)

    Como el controlador tiene un solo vector de inte-rrupciones (ubicado en 04h), desde esta direccióndebemos ir a una primera subrutina en la que de-terminaremos cuál es el flag que nos indica la

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    37/63

      37

    causa de la interrrupción y desde allí redireccionar a la subrutina de atención de esa interrupciónen particular. La primera instrucción debe cambiar el flag de la interrupción para evitar recursivi-dad en la misma.

    Alguien podría suponer que la rutina a ser atendida puede seguir a la dirección 04h y es cierto, loque sucede es que si por algún motivo hay que modificar esa rtuina, debe correrse todo el pro-grama principal para hacer lugar a las instrucciones nuevas. Como la compilación se hace con

    direcciones absolutas hay que recompilar todo nuevamente.Como regla general, para programar en assembler conviene dividir el problema en partes e ir im- plementando cada una con una subrutina de pocas instrucciones que probaremos y repararemosmás fácil que encontrar el problema en un programa extenso. No siempre se puede, pero convienetratar de hacerlo. Una vez que se tienen las subrutinas probadas, el programa principal va llaman-do en el orden previsto a cada una de ellas para obtener un resultado (función) o para trabajarvariables o tiempos sin necesitar un resultado numérico (subrutinas).

    SET DE INSTRUCCIONES Y ENSAMBLADOR (MicrochipASseM bler )

    ***En el Apéndice A se puede ver la configuración paso a paso del MPLab.  Un programa para este controlador tiene habitualmente tres partes.

      La primera, que es la configuración del ensamblador, tiene las siguientes instrucciones:

    a)  RADIX: le indica al ensamblador en qué tipo de numeración se va a trabajar por defecto,y pueden ser DEC, numeración decimal, HEX, numeración hexadecimal, o BIN, numera-ción binaria. Lo normal es que el ensamblador entienda numeración hexadecimal, si du-rante el transcurso del programa queremos poner valores en otra numeración bastará ante- ponerle al valor las letras d, h o b, y el valor entre comillas simples.

     b)  ORG: le indica al ensamblador el número de la línea en la que debe comenzar el progra-ma. En estos controladores es común encontrar la instrucción ORG 5, que significa que la primera línea de programa va a estar en la dirección 5, y esto a su vez, indica que el pro-grama no va a usar las interrupciones cuyo vector está en la dirección 4 de memoria de programa.

    c)  EQU: asigna a una etiqueta un valor que se tomará como la dirección de esa etiqueta. Escómodo asignarle a los registros más usados la dirección que efectivamente tienen enmemoria para recordar solamente el nombre del registro en operaciones de lectura o escri-tura.

    d)  LIST: permite leer un archivo de texto cuya extensión debe ser .inc y que contiene todaslas asignaciones de registros y memoria libre para evitarnos el cometer errores de progra-mación.

    e)  START / END: es la instrucción de comienzo/finalización de una compilación. Habitual-mente ubicada antes/después de las instrucciones del programa y subrutinas asociadas.Debe aparecer una vez cada una en el programa fuente.

      La segunda es el listado de instrucciones en el orden que se supone resolverá el proble-ma.

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    38/63

     38

      La tercera son las subrutinas o funciones asociadas al programa, las cuales empiezan conuna etiqueta que las identifica y terminan con algunas de las variantes de RETURN.

    SET DE INSTRUCCIONES

    Todas las instrucciones pueden tener una etiqueta (Label) que las identifique.

    Las líneas del programa no necesitan numerarse.

    f  identifica una dirección de RAM (registro).

    k  se usa para denotar un valor explícito (literal).

    b se usa para identificar un bit en particular.

    d se usa para direccionar el resultado de una operación. Por defecto, es 1, lo que indica que elresultado se guardará en la dirección marcada por f (en el mismo registro que se usa para laoperación); en el caso de ser 0, el resultado de la operación se guardará en el registro de traba- jo que denominaremos W.

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    39/63

      39

    ADDLW Sumar literal con w ADDWF Sumar w con fSintaxis Addlw k Sintaxis Addwf f,dOperandos 0

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    40/63

     40

    de k en el PC

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    41/63

      41

    CLRW Borrar el contenido de w COMF Complementa el conteni-do de f

    Sintaxis Clrw Sintaxis Comf f,dOperandos Operandos 0 destino

    Flags Z Flags ZDescripción El contenido del registro

    señalado por w pasa 00hDescripción Decrementa en 1 el con-

    tenido de f

    DECFSZ Decrementa f, salta si es 0 GOTO Salto incondicionalSintaxis Decfsz f,d Sintaxis Goto k [label]Operandos 0

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    42/63

     42

    Operación (f)->(destino) Operación k-> (w)Flags Z FlagsDescripción El contenido del registro f

    se mueve a otro destinoDescripción El literal k se mueve al

    registro w

    MOVWF Mueve el contenido de w ala dirección f  NOP No opera

    Sintaxis Movwf f Sintaxis NopOperandos 0 pc k -> (w)Flags FlagsDescripción Retorna desde una interrup-

    ción, habilitando las inte-rrupciones globales.

    Descripción Retorna desde una inte-rrupción con un literal enel registro w

    RLF Girar a izquierda a través

    del acarreo (carry)

    RRF Girar a derecha a través

    del acarreo (carry)Sintaxis Rlf f,d Sintaxis Rrf f,dOperandos 0

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    43/63

      43

    tado en w

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    44/63

     44

    SUBWF Resta el contenido de w delregistro f

    XORLW O exclusivo entre w y elliteral

    Sintaxis Subwf f,d Sintaxis Xorlw kOperandos 0

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    45/63

      45

    Ejemplo de un archivo de texto cuya denominación debe ser p16F628.inc  para configurar elensamblado.

    LIST; P16F628.INC Standard Header File, Version 1.01 Microchip Technology,Inc.

    NOLIST

    ; This header file defines configurations, registers, and other useful bits of; information for the PIC16F628 microcontroller. These names are taken tomatch; the data sheets as closely as possible.

    ; Note that the processor must be selected before this file is; included. The processor may be selected the following ways:

    ; 1. Command line switch:; C:\ MPASM MYFILE.ASM /PIC16F628; 2. LIST directive in the source file; LIST P=PIC16F628; 3. Processor Type entry in the MPASM full-screen interface

    ;==========================================================================;; Revision History;;==========================================================================

    ;Rev: Date: Reason:;1.01 13 Sept 2001 Added _DATA_CP_ON and _DATA_CP_OFF;1.00 10 Feb 1999 Initial Release

    ;==========================================================================;

    ; Verify Processor;;==========================================================================

    IFNDEF __16F628MESSG "Processor-header file mismatch. Verify selected processor."

    ENDIF

    ;==========================================================================;; Register Definitions;

    ;==========================================================================

    W EQU H'0000'F EQU H'0001'

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    46/63

     46

    ;----- Register Files------------------------------------------------------

    INDF EQU H'0000'TMR0 EQU H'0001'PCL EQU H'0002'

    STATUS EQU H'0003'FSR EQU H'0004'PORTA EQU H'0005'PORTB EQU H'0006'PCLATH EQU H'000A'INTCON EQU H'000B'PIR1 EQU H'000C'TMR1L EQU H'000E'TMR1H EQU H'000F'T1CON EQU H'0010'TMR2 EQU H'0011'T2CON EQU H'0012'CCPR1L EQU H'0015'

    CCPR1H EQU H'0016'CCP1CON EQU H'0017'RCSTA EQU H'0018'TXREG EQU H'0019'RCREG EQU H'001A'CMCON EQU H'001F'

    OPTION_REG EQU H'0081'TRISA EQU H'0085'TRISB EQU H'0086'PIE1 EQU H'008C'PCON EQU H'008E'PR2 EQU H'0092'TXSTA EQU H'0098'

    SPBRG EQU H'0099'EEDATA EQU H'009A'EEADR EQU H'009B'EECON1 EQU H'009C'EECON2 EQU H'009D'VRCON EQU H'009F'

    ;----- STATUS Bits --------------------------------------------------------

    IRP EQU H'0007'RP1 EQU H'0006'RP0 EQU H'0005'

    NOT_TO EQU H'0004'NOT_PD EQU H'0003'Z EQU H'0002'DC EQU H'0001'C EQU H'0000'

    ;----- INTCON Bits --------------------------------------------------------

    GIE EQU H'0007'

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    47/63

      47

    PEIE EQU H'0006'T0IE EQU H'0005'INTE EQU H'0004'RBIE EQU H'0003'T0IF EQU H'0002'INTF EQU H'0001'RBIF EQU H'0000'

    ;----- PIR1 Bits ----------------------------------------------------------

    EEIF EQU H'0007'CMIF EQU H'0006'RCIF EQU H'0005'TXIF EQU H'0004'CCP1IF EQU H'0002'TMR2IF EQU H'0001'TMR1IF EQU H'0000'

    ;----- T1CON Bits ---------------------------------------------------------

    T1CKPS1 EQU H'0005'T1CKPS0 EQU H'0004'T1OSCEN EQU H'0003'NOT_T1SYNC EQU H'0002'TMR1CS EQU H'0001'TMR1ON EQU H'0000'

    ;----- T2CON Bits ---------------------------------------------------------

    TOUTPS3 EQU H'0006'TOUTPS2 EQU H'0005'TOUTPS1 EQU H'0004'TOUTPS0 EQU H'0003'

    TMR2ON EQU H'0002'T2CKPS1 EQU H'0001'T2CKPS0 EQU H'0000'

    ;----- CCP1CON Bits -------------------------------------------------------

    CCP1X EQU H'0005'CCP1Y EQU H'0004'CCP1M3 EQU H'0003'CCP1M2 EQU H'0002'CCP1M1 EQU H'0001'CCP1M0 EQU H'0000'

    ;----- RCSTA Bits ---------------------------------------------------------

    SPEN EQU H'0007'RX9 EQU H'0006'SREN EQU H'0005'CREN EQU H'0004'ADEN EQU H'0003'FERR EQU H'0002'OERR EQU H'0001'RX9D EQU H'0000'

    ;----- CMCON Bits ---------------------------------------------------------

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    48/63

     48

    C2OUT EQU H'0007'C1OUT EQU H'0006'C2INV EQU H'0005'C1INV EQU H'0004'CIS EQU H'0003'CM2 EQU H'0002'

    CM1 EQU H'0001'CM0 EQU H'0000'

    ;----- OPTION Bits --------------------------------------------------------

    NOT_RBPU EQU H'0007'INTEDG EQU H'0006'T0CS EQU H'0005'T0SE EQU H'0004'PSA EQU H'0003'

    PS2 EQU H'0002'PS1 EQU H'0001'PS0 EQU H'0000'

    ;----- PIE1 Bits ----------------------------------------------------------

    EEIE EQU H'0007'CMIE EQU H'0006'RCIE EQU H'0005'TXIE EQU H'0004'CCP1IE EQU H'0002'TMR2IE EQU H'0001'TMR1IE EQU H'0000'

    ;----- PCON Bits ----------------------------------------------------------

    OSCF EQU H'0003'NOT_POR EQU H'0001'NOT_BO EQU H'0000'NOT_BOR EQU H'0000'NOT_BOD EQU H'0000'

    ;----- TXSTA Bits ---------------------------------------------------------

    CSRC EQU H'0007'TX9 EQU H'0006'TXEN EQU H'0005'

    SYNC EQU H'0004'BRGH EQU H'0002'TRMT EQU H'0001'TX9D EQU H'0000'

    ;----- EECON1 Bits --------------------------------------------------------

    WRERR EQU H'0003'WREN EQU H'0002'

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    49/63

      49

    WR EQU H'0001'RD EQU H'0000'

    ;----- VRCON Bits --------------------------------------------------------

    VREN EQU H'0007'VROE EQU H'0006'VRR EQU H'0005'

    VR3 EQU H'0003'VR2 EQU H'0002'VR1 EQU H'0001'VR0 EQU H'0000'

    ;==========================================================================

    ;

    ; RAM Definition

    ;

    ;==========================================================================

    __MAXRAM H'01FF'__BADRAM H'07'-H'09', H'0D', H'13'-H'14', H'1B'-H'1E'__BADRAM H'87'-H'89', H'8D', H'8F'-H'91', H'93'-H'97', H'9E'__BADRAM H'105', H'107'-H'109', H'10C'-H'11F', H'150'-H'16F'__BADRAM H'185', H'187'-H'189', H'18C'-H'1EF'

    ;==========================================================================

    ;

    ; Configuration Bits

    ;

    ;==========================================================================

    _BODEN_ON EQU H'3FFF'_BODEN_OFF EQU H'3FBF'_CP_ALL EQU H'03FF'_CP_75 EQU H'17FF'_CP_50 EQU H'2BFF'_CP_OFF EQU H'3FFF'

    _DATA_CP_ON EQU H'3EFF'_DATA_CP_OFF EQU H'3FFF'_PWRTE_OFF EQU H'3FFF'_PWRTE_ON EQU H'3FF7'_WDT_ON EQU H'3FFF'_WDT_OFF EQU H'3FFB'_LVP_ON EQU H'3FFF'_LVP_OFF EQU H'3F7F'_MCLRE_ON EQU H'3FFF'_MCLRE_OFF EQU H'3FDF'

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    50/63

     50

    _ER_OSC_CLKOUT EQU H'3FFF'_ER_OSC_NOCLKOUT EQU H'3FFE'_INTRC_OSC_CLKOUT EQU H'3FFD'_INTRC_OSC_NOCLKOUT EQU H'3FFC'_EXTCLK_OSC EQU H'3FEF'_LP_OSC EQU H'3FEC'_XT_OSC EQU H'3FED'_HS_OSC EQU H'3FEE'

    LIST

  • 8/18/2019 Apuntes Arquitectura de Computadoras Unla

    51/63

      51

    Tips & Tricks

    Transcribo a continuación algunas subrutinas descriptas en las hojas de datos. Se supone que,como están escritas por el fabricante del controlador, funcionan bien y son eficientes en el uso delos recursos.

    El PC (program counter) de este controlador es de 13 bits y, como debe poder guardarse en RAM

    (de 8 bits), se compone de dos partes: los 8 bits de menor peso se denominan PCL y los 5 restan-tes PCLATH. En programas cortos, alcanza con guardar sólo el PCL y eso lo hace automática-mente con el llamado a una subrutina. Si el programa es largo y existe la posibilidad de que este-mos ubicados más allá de la posición 128 de la memoria de programa (Flash en este caso), hayque tomar el recaudo de guardar por nuestra cuenta los cinco bits adicionales. Esta subrutina tieneen cuenta esta restricción.

    Guarda registros importantes cuando atiende a una interrupción:

    MOVWF W_TEMP Copia W al registro TEMPSWAPF STATUS, W Transpone nibbles del reg. STATUS para guardar en WCLRF STATUS Borra los bits de dirección de bancos. Se posiciona en B0

    MOVWF STATUS_TEMP Copia el reg. STATUS en un registro STATUS_TEMPMOVF PCLATH, W Sólo se requiere si el programa usa más de un banco de mMOVWF PCLATH_TEMP Copia PCLATH en WCLRF PCLATH Banco de memoria 0………….. ………….  Instrucciones de la subrutina de atención a la interrupción…………. MOVF PCLATH_TEMP, W Copia PCLATH en WMOVWF PCLAT