Está en la página 1de 24

Unidad 1 Modelo de arquitecturas de cmputo

Jesus Abadia Espinosa jes_abadia_es@hotmail.com October 14, 2012

Contents
1 1.1 Modelos de arquitecturas de cmputo 1.1 Arquitecturas Clsicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1 Arquitecturas Segmentadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Arquitecturas de multiprocesamiento 2.1 Anlisis de los componentes . . . . . . . . . . . . 2.1.1 Arquitecturas. . . . . . . . . . . . . . . . 2.2 Tipos . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Caractersticas . . . . . . . . . . . . . . . . . . . 2.3.1 Funcionamiento. . . . . . . . . . . . . . . 2.4 Memoria . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 Conceptos bsicos del manejo de memoria 2.4.2 Aapuntadores . . . . . . . . . . . . . . . 2.5 Declaracion y Usos . . . . . . . . . . . . . . . . . 2.5.1 Apuntadores Y Argumentos de funciones 2.5.2 Apuntadores Y Arreglos . . . . . . . . . . 2.5.3 Uso de prototipos . . . . . . . . . . . . . 2.5.4 Pasaje de Parmetros . . . . . . . . . . . 2.5.5 PRE y POST condicin: . . . . . . . . . . 2.5.6 Memorias semiconductoras . . . . . . . . 2.6 Memoria Cach . . . . . . . . . . . . . . . . . . . 2.6.1 Memoria cach en Explorer . . . . . . . . 2.7 Manejo de la entrada/salida . . . . . . . . . . . . 2.7.1 Entrada/salida programada . . . . . . . . 2.7.2 Entrada/salida mediante interrupciones . 2.8 Canales y procesadores de entrada/salida . . . . 2.8.1 DMA . . . . . . . . . . . . . . . . . . . . 2.8.2 Canales . . . . . . . . . . . . . . . . . . . 2.8.3 Instrucciones . . . . . . . . . . . . . . . . 2.8.4 Instrucciones del 4004 . . . . . . . . . . . 2.9 Buses . . . . . . . . . . . . . . . . . . . . . . . . 2.9.1 Clases de buses: . . . . . . . . . . . . . . 2.10 Tipos de buses . . . . . . . . . . . . . . . . . . . 2.11 1.2.4.2 Estructura de los buses . . . . . . . . . . 2.11.1 Jerarquas de buses . . . . . . . . . . . . . 2.12 Interrupciones . . . . . . . . . . . . . . . . . . . . 2.12.1 Interrupciones . . . . . . . . . . . . . . . 2.12.2 Interrupciones software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 4 5 5 5 5 6 8 8 8 9 10 11 11 11 12 12 13 13 14 15 15 17 17 17 18 18 19 19 20 21 22 23 23 24

1.1 Modelos de arquitecturas de cmputo

La arquitectura de una computadora explica la situacin de sus componentes y permite determinar las posibilidades de que un sistema informtico, con una determinada conguracin, pueda realizar las operaciones para las que se va a utilizar. La arquitectura de computadoras se reere a los atributos de un sistema que son visibles a un programador, es decir aquellos atributos que tienen un impacto directo en la ejecucin lgica de un programa. Es decir, es un modelo y una descripcin funcional de los requerimientos y las implementaciones de diseo para varias partes de una computadora, con especial inters en la forma en que la unidad central de proceso (CPU) trabaja internamente y accede a las direcciones de memoria. [3]

1.1

Arquitecturas Clsicas

Estas arquitecturas se desarrollaron en las primeras computadoras electromecnicas y de tubos de vaco. Aun son usadas en procesadores empotrados de gama baja y son la base de la mayora de las arquitecturas modernas Arquitectura Mauchly-Eckert (Von Newman) Esta arquitectura fue utilizada en la computadora ENIAC. Consiste en una unidad central de proceso que se comunica a travs de un solo bus con un banco de memoria en donde se almacenan tanto los cdigos de instruccin del programa, como los datos que sern procesados por este. Esta arquitectura es la ms empleada en la actualidad ya, que es muy verstil. Ejemplo de esta versatilidad es el funcionamiento de los compiladores, los cuales son programas que toman como entrada un archivo de texto conteniendo cdigo fuente y generan como datos de salida, el cdigo maquina que corresponde a dicho cdigo fuente (Son programas que crean o modican otros programas). Estos datos de salida pueden ejecutarse como un programa posteriormente ya que se usa la misma memoria para datos y para el cdigo del programa.

La principal desventaja de esta arquitectura, es que el bus de datos y direcciones nico se convierte en un cuello de botella por el cual debe pasar toda la informacin que se lee de o se escribe a la memoria, obligando a que todos los accesos a esta sean secuenciales. Esto limita el grado de paralelismo (acciones que se pueden realizar al mismo tiempo) y por lo tanto, el desempeo de la computadora. Este efecto se conoce como el cuello de botella de Von Newman. En esta arquitectura apareci por primera vez el concepto de programa almacenado. Anteriormente la secuencia de las operaciones era dictada por el alambrado de la unidad de control, e cambiarla implicaba un proceso de recableado laborioso, lento (hasta tres semanas) y propenso a errores. En esta arquitectura se asigna un cdigo numrico a cada instruccin. Dichos cdigos se almacenan en la misma unidad de memoria que los datos que van a procesarse, para ser ejecutados en el orden en que se encuentran almacenados en memoria. Esto permite cambiar rpidamente la aplicacin de la computadora y dio origen a las computadoras de propsito general Mas a detalle, el procesador se subdivide en una unidad de control (C.U.), una unidad lgica aritmtica (A.L.U.) y una serie de registros. Los registros sirven para almacenar internamente datos y estado del procesador. La unidad aritmtica lgica proporciona la capacidad de realizar operaciones aritmticas y lgicas. La unidad de control genera las seales de control para leer el cdigo de las instrucciones, decodicarlas y hacer que la ALU las ejecute. Arquitectura Harvard Esta arquitectura surgi en la universidad del mismo nombre, poco despus de que la arquitectura Von Newman apareciera en la universidad de Princeton. Al igual que en la arquitectura Von Newman, el programa se almacena como un cdigo numrico en la memoria, pero no en el mismo espacio de memoria ni en el mismo formato que los datos. Por ejemplo, se pueden

almacenar las instrucciones en doce bits en la memoria de programa, mientras los datos de almacenan en 8 bits en una memoria aparte.

El hecho de tener un bus separado para el programa y otro para los datos permite que se lea el cdigo de operacin de una instruccin, al mismo tiempo se lee de la memoria de datos los operados de la instruccin previa. As se evita el problema del cuello de botella de Von Newman y se obtiene un mejor desempeo. En la actualidad la mayora de los procesadores modernos se conectan al exterior de manera similar a a la arquitectura Von Newman, con un banco de memoria masivo nico, pero internamente incluyen varios niveles de memoria cache con bancos separados en cache de programa y cache de datos, buscando un mejor desempeo sin perder la versatilidad.[1] 1.1.1 Arquitecturas Segmentadas

Las arquitecturas segmentadas o con segmentacin del cauce buscan mejorar el desempeo realizando paralelamente varias etapas del ciclo de instruccin al mismo tiempo. El procesador se divide en varias unidades funcionales independientes y se dividen entre ellas el procesamiento de las instrucciones. Para comprender mejor esto, supongamos que un procesador simple tiene un ciclo de instruccin sencillo consistente solamente en una etapa de bsqueda del cdigo de instruccin y en otra etapa de ejecucin de la instruccin. En un procesador sin segmentacin del cauce, las dos etapas se realizaran de manera secuencial para cada una de las instrucciones, como lo muestra la siguiente gura.

En un procesador con segmentacin del cauce, cada una de estas etapas se asigna a una unidad funcional diferente, la bsqueda a la unidad de bsqueda y la ejecucin a la unidad de ejecucin. Estas unidades pueden trabajar en forma paralela en instrucciones diferentes. Estas unidades se comunican por medio de una cola de instrucciones en la que la unidad de bsqueda coloca los cdigos de instruccin que ley para que la unidad de ejecucin los tome de la cola y los ejecute. Esta cola se parece a un tubo donde las instrucciones entran por un extremo y salen por el otro. De esta analoga proviene el nombre en ingles: Pipelining o entubamiento. En general se divide al procesador segmentado en una unidad independiente por cada etapa del ciclo de instruccin.

Completando el ejemplo anterior, en un procesador con segmentacin, la unidad de bsqueda comenzara buscando el cdigo de la primera instruccin en el primer ciclo de reloj. Durante el segundo ciclo de reloj, la unidad de bsqueda obtendra el cdigo de la instruccin 2, mientras que la unidad de ejecucin ejecuta la instruccin 1 y as sucesivamente. La siguiente gura muestra este proceso.

En este esquema sigue tomando el mismo nmero de ciclos de reloj (el mismo tiempo), pero como se trabaja en varias instrucciones al mismo tiempo, el nmero promedio de instrucciones por segundo se multiplica. En teora, el rendimiento de un procesador segmentado mejora con respecto a uno no segmentado en un factor igual al nmero de etapas independientes. Sin embargo, la mejora en el rendimiento no es proporcional al nmero de segmentos en el cauce debido a que cada etapa no toma el mismo tiempo en realizarse, adems de que se puede presentar competencia por el uso de algunos recursos como la memoria principal. Otra razn por la que las ventajas de este esquema se pierden es cuando se encuentra un salto en el programa y todas las instrucciones que ya se buscaron y se encuentran en la cola, deben descartarse y comenzar a buscar las instrucciones desde cero a partir de la direccin a la que se salto. Esto reduce el desempeo del procesador y an se investigan maneras de predecir los saltos para evitar este problema.[4]

Arquitecturas de multiprocesamiento

Cuando se desea incrementar el desempeo ms aya de lo que permite la tcnica de segmentacin del cauce (limite terico de una instruccin por ciclo de reloj), se requiere utilizar ms de un procesador para la ejecucin del programa de aplicacin. Las CPU de multiprocesamiento se clasican de la siguiente manera: 1. SISO (Single Instruction, Single Operand ) computadoras independientes 2. SIMO (Single Instruction, Multiple Operand ) procesadores vectoriales 3. MISO (Multiple Instruction, Single Operand ) No implementado 4. MIMO (Multiple Instruction, Multiple Operand ) sistemas SMP, Clusters Procesadores vectoriales Son computadoras pensadas para aplicar un mismo algoritmo numrico a una serie de datos matriciales, en especial en la simulacin de sistemas fsicos complejos, tales como simuladores para predecir el clima, explosiones atmicas, reacciones qumicas complejas, etc., donde los datos son representados como grandes nmeros de datos en forma matricial sobre los que se deben se aplicar el mismo algoritmo numrico. En los sistemas SMP (Simetric Multiprocesesors), varios procesadores comparten la misma memoria principal y perifricos de I/O, Normalmente conectados por un bus comn. Se conocen como simtricos, ya que ningn procesador toma el papel de maestro y los dems de esclavos, sino que todos tienen derechos similares en cuanto al acceso a la memoria y perifricos y ambos son administrados por el sistema operativo. Los Clusters son conjuntos de computadoras independientes conectadas en una red de rea local o por un bis de interconexin y que trabajan cooperativamente para resolver un problema. Es clave en su funcionamiento contar con un sistema operativo y programas de aplicacin capaces de distribuir el trabajo entre las computadoras de la red.

2.1
2.1.1

Anlisis de los componentes


Arquitecturas.

Adems de las arquitecturas clsicas mencionadas anteriormente, en la actualidad han aparecido arquitecturas hbridas entre la Von Newman y la Harvard, buscando conservar la exibilidad, pero mejorando el rendimiento. El cambio ms importante de los ltimos aos en diseo de las computadoras de los ltimos aos se dio durante los aos 1980, con la aparicin de la corriente de diseo conocida como computadoras de conjunto reducido de instrucciones (RISC, por sus siglas en ingles). Esta escuela pretende aplicar un enfoque totalmente distinto al tradicional hasta entonces, que paso a conocerse como computadoras de conjunto complejo de instrucciones (CISC) para diferenciarla de la nueva tendencia. La tendencia tradional, representada por las arquitecturas CISC (Complex Instruction Set Computers) se caracteriza por tener un nmero amplio de instrucciones y modos de direccionamiento. Se implementan instrucciones especiales que realizan funciones complejas, de manera que un programador puede encontrar con seguridad, una instruccin especial que realiza en hardware la funcin que el necesita. El nmero de registros del CPU es limitado, ya que las compuertas lgicas del circuito integrado se emplean para implementar las secuencias de control de estas instrucciones especiales. Al investigar las tendencias en la escritura de software cientco y comercial al inicio de los 80, ya se pudo observar que en general ya no se programaba mucho en ensamblador, sino en lenguajes de alto nivel, tales como C. Los compiladores de lenguajes de alto nivel no hacan uso de las instrucciones especiales implementadas en los procesadores CISC, por lo que resultaba un desperdicio de recursos emplear las compuertas del circuito de esta forma. Por lo anterior, se decidi que era mejor emplear estos recursos en hacer que las pocas instrucciones que realmente empleaban los compiladores se ejecutaran lo ms rpidamente posible. As surgi la escuela de diseo RISC (Reduced Instruction Set Computers) donde solo se cuenta con unas pocas instrucciones y modos de direccionamiento, pero se busca implementarlos de forma muy eciente y que todas las instrucciones trabajen con todos los modos de direccionamiento. Ademas, se observo que una de las tareas que tomaban ms tiempo en ejecutarse en lenguajes de alto nivel, era el pasar los parmetros a las subrutinas a travs de la pila. Como la forma ms rpida de hacer este paso es por medio de registros del CPU, se busco dotarlo con un amplio nmero de registros, a travs de los cuales se pueden pasar dichos parmetros. [1]

2.2

Tipos

Los CPUs modernos pueden clasicarse de acuerdo a varias caractersticas, tales como: el tamao del ALU o del Bus de conexin al exterior (8, 16, 32, 64 bits),si tienen cauce segmentado o no segmentado, si con tipo CISC o RISC, Von Newan o Harvard y si solo tienen instrucciones enteras o implementan tambin instrucciones de punto otante

2.3

Caractersticas

Las caractersticas ms importantes a considerar al escoger un CPU para usarlo en una aplicacin, son: 1. Modelo del programador (Conjunto de registros que el programador puede utilizar), forman el modelo mental del CPU que el programador utiliza al programar en ensamblador. 2. Conjunto de instrucciones que puede ejecutar el CPU 3. Modos de direccionamiento que pueden usarse para obtener los operandos de las instrucciones. 4. Ciclo de instruccin (el conjunto de pasos que realiza el CPU para procesar cada instruccin) 5. Buses de interconexin, usados para que el CPU lea y escriba a la memoria y a los dispositivos de entrada y salida.[5]

2.3.1

Funcionamiento.

Debido a la gran variedad de CPU disponibles comercialmente, se explicara el funcionamiento de un unidad central de proceso imaginaria muy simple, pero que resume el funcionamiento bsico de la mayora de los CPUs. Este CPU es similar a las primeras computadoras existentes en los aos 1950s. Esta computadora contara con una memoria de 4096 palabras de 16 bits cada una. Esto corresponde a un bus de direcciones de 12 bits y un bus de datos de 16 bits). En cada localidad de memoria se podr almacenar un entero de 16 bits o el cdigo de una instruccin, tambin de 16 bits. Todos los CPU tienen como funcin principal la ejecucin de un programa acorde a la aplicacin del mismo. Un programa es un conjunto de instrucciones almacenadas de acuerdo al orden en que deben ejecutarse. Por lo tanto, toda computadora debe ser capaz de procesar las instrucciones de su programa en un ciclo de instruccin, consistente en un nmero de etapas que varia con cada CPU, pero que tradicionalmente han sido tres: 1. Bsqueda del cdigo de Instruccin. Esta consiste en leer de la memoria cual ser la siguiente instruccin a ejecutar, la cual esta almacenada en forma de un cdigo numrico que indica cual de todas las operaciones que puede realizar el CPU ser la siguiente y con que operandos se ejecutara. 2. Decodicacin. Consiste en tomar el cdigo numrico e identicar a cul de las operaciones que puede realizar el CPU corresponde dicho cdigo. El proceso contrario, la codicacin, consiste en conociendo la instruccin, determinar el nmero que la va a representar. Esta etapa usualmente se realiza con un decodicador binario. 3. Ejecucin. En esta etapa se lleva a cabo la operacin sobre los datos que se vallan a procesar. En general, la unidad de control (CU) genera las seales de control necesarias para llevar los datos a las entradas de la Unidad Aritmtica Lgica, la cual efectuar las operaciones aritmticas y lgicas. Posteriormente, la unidad de control generara las seales de control necesarias para transferir la salida de la Unidad Aritmtica Lgica al registro donde sern almacenados los resultados para su uso posterior.

Es importante recordar que cada instruccin del programa se almacena en memoria como un nmero binario. Este nmero se conoce como cdigo de instruccin, y usualmente se divide en al menos dos campos: un cdigo de operacin (Opcode) y un nmero que representa al operando u operandos de la instruccin. En el caso de la computadora imaginaria que estamos estudiando, se almacena cada instruccin en una de las 4096 palabras de memoria de 16 bits cada una. Se utiliza un formato de un solo operando, con un segundo operando en el acumulador cuando es necesario. Los cuatro bits ms signicativos de los diecisis bits de la palabra se dedican a almacenar el cdigo de operacin. Los doce bits menos signicativos se dedican a almacenar la direccin del operando.

Las partes del CPU de la computadora imaginaria son:

ACC Acumulador, se usar para almacenar uno de los operandos y el resultado de varias de las instrucciones MAR (Memory Address Register) Registro de direccin de memoria, selecciona a que localidad de memoria se va a leer o a escribir. MBR (Memory Bus Register) Registro de bus de memoria. A travs de l se lee y se escriben los datos. PC (Program Counter) El contador de programa almacena la direccin de la siguiente instruccin a buscar. Por esta razn tambin es conocido como apuntador de instrucciones. IR - Registro de instruccin, guarda el cdigo de la instruccin que se esta ejecutando. Flags Registro de Banderas, agrupa a todas las banderas de la ALU en un registro, en el caso de nuestra computadora imaginaria, las banderas disponibles sern: Z Bandera de Cero, se pone en uno cuando todos los bits del resultado son cero; O Sobre ujo, se pone en uno cuando el resultado de la ltima operacin se sale de el rango de los nmeros de 16 bits con signo; C Acarreo, se enciende cuando el resultado de la ultima operacin se sale del rengo de los nmeros de 16 bits sin signo.

Como se explico anteriormente, el funcionamiento del CPU se basa en los pasos del ciclo de instruccin, consistentes en bsqueda, decodicacin y ejecucin de la instruccin. Comenzaremos revisando los pasos correspondientes a la bsqueda de la instruccin. El registro PC contiene la direccin de la localidad de memoria que contiene el cdigo de instruccin de la siguiente instruccin a ejecutar. Como la etapa de bsqueda consistir bsicamente en leer este cdigo y almacenarlo en el registro IR para su posterior uso en las etapas de decodicacin y ejecucin, el contenido de PC se copia al MAR para poder leer esa localidad de memoria. Se lee la memoria y el resultado de dicha lectura se copia del MBR al IR. Finalmente, se incrementa el PC para que en el siguiente ciclo de instruccin se lea la instruccin de la localidad de memoria consecutiva. Resumiendo estas operaciones en lenguaje de transferencia de registros: MAR<-PC IR<-[MAR] IR<-[MAR] En la etapa de decodicacin simplemente se separan los cdigos de operacin de los operandos. Por ejemplo, la instruccin LOAD 023h se codicara como 0023h, siendo 0h el cdigo de operacin y 023h el operando. Adems, la unidad de control deber identicar que al opcode 0 corresponde a la instruccin LOAD para que en la siguiente etapa se realicen las operaciones correspondientes a esta instruccin. En cuanto a la etapa de ejecucin, los pasos realizados en esta etapa varan dependiendo del cdigo de operacin ledo en la etapa de bsqueda. Por ejemplo, si el cdigo ledo es un 0, que corresponde con una instruccin LOAD, la etapa de ejecucin consistir en copiar la parte de la direccin del operando en el registro MAR para poder leer la localidad en donde se encuentra el operando. Se lee el operando de memoria y el dato ledo se copia del MBR al acumulador. Resumiendo dichas operaciones en lenguaje de transferencia de registros se tiene: 7

MAR<-IR(M) //IR(M) representa los bits del registro IR que almacenan la direccin del operando ACC<-MBR Para el cdigo de operacin 2, correspondiente a la instruccin ADD, tambin se transere la direccin del operando al MAR y se lee el contenido de la memoria, pero en vez de enviarse directamente del MBR al acumulador, se enva al ALU para que se sume con el contenido del acumulador y posteriormente se almacene el resultado de la suma en el acumulador. Resumiendo en lenguaje de transferencia de registros: MAR<-IR(M) //IR(M) representa los bits del registro IR que almacenan la direccin del operando ACC<-ACC+MBR.[]

2.4

Memoria

Una memoria es un dispositivo que puede mantenerse en por lo menos dos estados estables por un cierto periodo de tiempo. Cada uno de estos estados estables puede utilizarse para representar un bit. A un dispositivo con la capacidad de almacenar por lo menos un bit se le conoce como celda bsica de memoria. Un dispositivo de memoria completo se forma con varias celdas bsicas y los circuitos asociados para poder leer y escribir dichas celdas bsicas, agrupadas como localidades de memoria que permitan almacenar un grupo de N bits. El nmero de bits que puede almacenar cada localidad de memoria es conocido como el ancho de palabra de la memoria. Coincide con el ancho del bus de datos. Uno de los circuitos auxiliares que integran la memoria es el decodicador de direcciones. Su funcin es la de activar a las celdas bsicas que van a ser ledas o escritas a partir de la direccin presente en el bus de direcciones. Tiene como entradas las n lineas del bus de direcciones y 2N lineas de habilitacin de localidad, cada una correspondiente a una combinacin binaria distinta de los bits de direcciones. Por lo tanto, el nmero de localidades de memoria disponibles en un dispositivo (T) se relaciona con el nmero de lineas de direccin N por T= 2N . 2.4.1 Conceptos bsicos del manejo de memoria

Podemos imaginarnos la memoria del computador como un gran arreglo formado por casillas o palabras; como se ilustra en la gura 2.1. Cada casilla est constituida por su contenido y su denicin fsica. El contenido de una casilla puede ser datos o instrucciones de programas. 2.4.2 Aapuntadores

Entre los datos que pueden almacenarse dentro de la memoria estn las direcciones a otros datos. A estos se les conoce como apuntadores. Cuando se almacenan datos en la memoria, a stos se les asigna un ESPACIO DE MEMORIA segn el tamao dependiendo de la denicin del dato. Por ejemplo (gura 2.2), si tenemos: int long char X; / * X ocupar 2 bytes de memoria.*/ Y; / * Y ocupar 4 bytes de memoria.*/ C; / * C ocupar 1 bytes de memoria.*/

En el caso de los apuntadores, generalmente ocupan una casilla o palabra de memoria y el contenido indica la direccin de otro dato (ver gura 2.3) C:/Users/Jess/Desktop/17.JPG Los apuntadores poseen dos operaciones bsicas: 1. a) Operador de direccionamiento (&): Operador unario que devuelve la direccin de un objeto. ApX = &X; /* asigna la direccin de X a ApX */ /* Ahora ApX "apunta a X" */ Este operador es solo aplicable a variables y elementos de un arreglo. Vemos ejemplos de su uso. ILEGALES &(X+1) &3 LEGALES &X &a[4]

Tambin es ilegal obtener la direccin de una variable Register. 1. b) Operador de indireccionamiento (*) Operador unario que toma un operando como una direccin y acerca esa direccin para obtener su contenido. int y y; = *Apx; /*asigna a y el contenido de Apx*/

2.5

Declaracion y Usos
*<nombre>;

Para declarar un apuntador se coloca la siguiente instruccin <tipo>

Por ejemplo, int *ApX;

indica que el contenido de ApX es de tipo int, o *ApX es equivalente a una variable de tipo entero, por lo tanto puede estar en una expresin donde aparezcan valores enteros. Veamos el ejemplo de usos vlidos del apuntador ApX con el operador *. if ((*ApX) + Y == 8) ... Y *ApX (*ApX) int ApY = *ApX + 1; = 0; + = 1; /* Para incrementar, el contenido se necesitan los parntesis, de lo contrario incrementa la direccin*/ *ApY; = ApX; /* ApY apuntan al mismo contenido */

2.5.1

Apuntadores Y Argumentos de funciones

Todo argumento de una funcin en C es "por valor". Al invocar la funcin se hace una copia del valor del parmetro real (el de la invocacin) en el parmetro formal. Esto quiere decir que el argumento conserva su valor despus que se regresa de la invocacin. Por ejemplo, veamos el siguiente programa principal que contiene una llamada a una funcin que intercambia los dos valores a y b main() { int a,b; a=4; b=7; Swap(a,b); } En este caso necesito que se modique los argumentos. Si la funcin esta denida como: void Swap (int x , int y) { int temp; temp = x; x = y; y = temp; } Al ejecutar el programa con los valores a=4 y b=7, el efecto de Swap(a,b) es ninguno aunque dentro de la denicin de la funcin se escribe explcitamente que cambiaron. La forma de hacer que los valores de a y b salgan intercambiados es a travs de apuntadores, es decir haciendo la siguiente invocacin, donde se dice explcitamente que lo que se pasa es la direccin de las variables a y b. Swap(&a,&b); Ahora, lo que no se modica es la direccin de a, y la b; pero si puede modicarse su contenido. La denicin de la funcin quedara: void Swap(int *Apx, int *Apy) { int temp; temp = *Apx; Apx = *Apy; *Apy = Temp; } Los apuntadores como argumentos suelen usarse cuando la funcin devuelve ms de un resultado.

10

2.5.2

Apuntadores Y Arreglos

Los nombres de los arreglos son apuntadores constantes (ver gura 2.4) a la primera casilla del arreglo. Por eso cuando se pasan como parmetro no debe colocarse el operador & para modicar el contenido de sus casillas, basta con pasar el nombre. Para asignar a un apuntador la direccin de un arreglo, basta con asignarle el nombre, como se observa en la gura 2.4. Lo cual es equivalente a colocarle la direccin a la primera casilla. Despus de esta primera asignacin se puede trabajar sobre el arreglo a travs del apuntador, con lo que se conoce como aritmtica de apuntadores.

Es decir, podemos escribir instrucciones como Apa++; Apa; /*Para ubicar el apuntador sobre la segunda casilla del arreglo */ /*Para regresarlo a la primera casilla*/

Apa+=5; /*Para ubicarlo cinco casilla despus*/ En algunos casos estas expresiones son tiles, pero si tenemos que elegir entre el manejo cotidiano de los arreglos y el trabajo a travs de apuntadores, debemos preferir la sencillez y claridad de la primera alternativa. 2.5.3 Uso de prototipos

Toda denicin debe aparecer antes de ser usada. Esto incluye las deniciones de funciones. Para solventar esto se usan los prototipos. Son los encabezados de las funciones que le indican al precompilador que posteriormente encontrar la denicin de la funcin. Los prototipos se conocen antes del main y pueden ir en un archivo header *.h . Ejemplo, En el programa donde aparece el procedimiento swap debe haber un prototipo del procedimiento antes del main como se muestra a continuacin: #include <stdio.h>

void Swap (int *apx; int *apy); main() { int a,b; a=4; b=7; Swap(&a,&b); } Colocar los prototipos con la descripcin de la funcin y de sus argumentos en un archivo header es un buen estilo de programacin. 2.5.4 Pasaje de Parmetros

Los parmetros que van en la denicin de la funcin o en un prototipo son los parmetros formales, estos son como variables locales a la funcin que sirven de comunicacin con el exterior. Los parmetros reales son los que se colocan en la invocacin a la funcin y pueden ser expresiones del mismo tipo del parmetro formal. Los parmetros deben colocarse en la misma posicin del parmetro formal correspondiente.

11

2.5.5

PRE y POST condicin:

Si asumimos que un programa necesita que la entrada tenga un valor especico, se dice que esa es la precondicin del programa la poscondicin se reere al estado despus de la ejecucin del programa. Por ejemplo: f = /* raz(X); /* PRE: X>=0 */ POST: Y = sqrt x */

La pre y post condicin se colocan junto con el prototipo de la funcin en el archivo header. Pues estas sirven de informacin al programador que usa la funcin. 2.5.6 Memorias semiconductoras

RAM (Random Acces Memory, memoria de acceso aleatorio): Memoria de almacenamiento primario. Almacena temporalmente instrucciones de programa y datos. El computador divide un chip de RAM en varias localidades de igual tamao. Estas localidades de memoria tienen una direccin nica, de manera que el computador puede distinguirlas cuando se le ordena que guarde o recupere informacin. Puede almacenarce un trozo de informacin en cualquier localidad de la RAM tomada al azar y el computador puede recuperarlo rpidamente si se le indica hacerlo. De ah proviene el nombre de memoria de acceso aleatorio. La informacin almacenada en la RAM no es ms que un patrn de corriente elctrica que uye por circuitos microscpicos en chips de silicio. La memoria ROM Es memoria no voltil de solo lectura. Igualmente, tambin hay dos caractersticas a destacar en esta denicin. La memoria ROM es memoria no voltil: Los programas almacenados en ROM no se pierden al apagar el ordenador, sino que se mantienen impresos en los chips ROM durante toda su existencia adems la memoria ROM es, como su nombre indica, memoria de solo lectura; es decir los programas almacenados en los chips ROM son inmodicables. El usuario puede leer (y ejecutar) los programas de la memoria ROM, pero nunca puede escribir en la memoria ROM otros programas de los ya existentes. La memoria ROM es ideal para almacenar las rutinas bsicas a nivel de hardware, por ejemplo, el programa de inicializacin de arranque el ordenador y realiza el chequeo de la memoria y los dispositivos. La memoria ROM suele estar ya integrada en el ordenador y en varios perifricos que se instalan ya en el ordenador. Por ejemplo, en la placa madre del ordenador se encuentran los chips de la ROM BIOS, que es el conjunto de rutinas mas importantes para comunicarse con los dispositivos. O, tambin, las tarjetas de vdeo, las tarjetas controladoras de discos y las tarjetas de red tienen un chip de ROM con rutinas especiales para gestionar dichos perifricos. Las memorias Flash se han convertido en algo importante para aquellos productos que necesitan una pequea cantidad de almacenamiento no voltil para datos y programas. La mayora de las aplicaciones actuales de memoria Flash en ordenadores, se centran en sustituir las EPROM y EEPROM (almacenamiento de cdigo) en vez de almacenar datos. Las memorias Flash quizs continen utilizndose como almacn de BIOS, pero es muy probable que el empujn tan esperado de dichas memorias como almacenamiento de datos no provenga de los ordenadores. Afortunadamente para los fabricantes de memoria Flash, la demanda ha superado a la oferta y todos han dispuesto un mercado seguro, con absoluta independencia de la tecnologa empleada.

La celda de memoria es el elemento bsico de la memoria semiconductora. Normalmente tiene 3 terminales: Terminal de seleccin: selecciona la celda para la operacion de lectura o escritura Terminal de control: Tipo de operacin 12

Tercer terminal: Introduccin de la seal que ja el estado a 0 o 1 (en una escritura) o por el que se lee el estado (en una lectura)

Un chip contiene una matriz de celdas de memoria. Los diferentes tamaos tpicos encapsulados en un chip son 4M-bits, 16M-bits Dos vertientes: Disposicin fsica de las celdas coincide con la disposicin lgica (la que percibe el procesador) de las palabras. La matriz se organiza en W palabras de B bits cada una. Estructura de un-bit-por-chip: Los datos se leen o escriben por bits

2.6

Memoria Cach

Funcionalmente, la memoria cach es igual a la memoria principal. Sin embargo, fsicamente en la computadora es un componente distinto. Se puede denir como una memoria rapida y pequea, situada entre la memoria principal y el procesador, especialmente diseada para contener informacin que se utiliza con frecuencia en un proceso con el n de evitar accesos a otras memorias (principal), reduciendo considerablemente el tiempo de acceso al ser ms rpida que el resto de la memoria principal. Cuando el procesador lee datos o las almacenas en la memoria principal, los datos tambin se almacenan en la memoria cach. Si el microprocesador los necesita de nuevo, los lee de la cach y no de la principal. Al ser sta muy rpida la velocidad se incrementa considerablemente. La cantidad de memoria cach en una computadora que disponga de esta memoria es bastante menor que la cantidad de memoria principal (no cach), y adems la cach es bastante ms cara. 2.6.1 Memoria cach en Explorer

La Memoria cach es una parte del disco duro donde el navegador almacena las pginas Web que hemos visitado. Esto tiene sus ventajas e inconvenientes. Por un lado acelera el acceso a cualquiera de esas pginas, ya que cuando intentemos volver a abrirlas, como los datos estn en el disco, se visualizarn rpidamente al no tener que volver a cargarla. El inconveniente surge que al visualizar esa pgina se est viendo la versin vigente cuando se carg por ltima vez. Esto impide la visualizacin de pginas que se actualizan frecuentemente, ya que al acceder a la pgina del disco entramos en una versin que no es la ms reciente. De todas formas siempre podremos forzar al navegador a refrescar el contenido pulsando sobre el botn Actualizar. Debemos congurar el tamao de esta memoria segn nuestras necesidades, determinadas por el tipo de pginas que visitemos. Siempre es recomendable vaciar la memoria de vez en cuando para que podamos actualizar su contenido.

13

2.7

Manejo de la entrada/salida

Los mdulos de entrada/salida (E/S) tienen las siguientes funciones bsicas: Conectar con la CPU y memoria va bus del sistema. Conectar con los perifricos mediante conexiones de datos particularizadas. Las funciones o requerimientos principales de los mdulos de E/S se agrupan en las siguientes categoras: Control y temporizacin. Comunicacin con la CPU. Comunicacin con los perifricos. Buer de datos. Deteccin de errores. Los recursos internos del sistema, tales como memoria o bus, estn compartidos por distintas actividades, entre las que est E/S. Por ello, los mdulos E/S tienen requerimientos de control y temporizacin. Por ejemplo, el control de transferencia de datos entre un perifrico y la CPU debe seguir la siguiente secuencia: 1. La CPU pide al mdulo E/S el estado del perifrico deseado. 2. El mdulo E/S proporciona el estado. 3. Si el perifrico est listo, la CPU solicita la transferencia de datos por medio de un comando al mdulo E/S. 4. El mdulo E/S obtiene el dato del perifrico. 5. El dato se transere desde el mdulo a la CPU. Si el sistema emplea un bus, cada interaccin entre CPU y E/S implica uno o ms arbitrajes de bus. Una tarea esencial del mdulo E/S es servir de buer de datos. Mientras la transferencia es muy rpida entre ste y la CPU, con los perifricos es mucho ms lenta. El E/S realiza as la conversin de velocidades de transmisin. Finalmente, el mdulo E/S es frecuentemente responsable de realizar una deteccin de errores, que pueden ser avisados por el perifrico (por ejemplo, falta de papel en una impresora) o producirse por fallos de transmisin (error de paridad de un carcter transmitido).

En la gura 2.1 se muestra el diagrama general de un mdulo E/S. Los datos transferidos desde o hacia el mdulo se almacenan en uno o ms registros de datos. Puede haber tambin uno o ms registros de estados que proporcionan informacin sobre el estado actual. Un registro de estado puede actuar tambin como un registro de control, aceptando informacin de control de la CPU. La lgica del mdulo interacta con la CPU mediante un conjunto de lneas de control, que utiliza la CPU para ordenar funciones al mdulo (lectura/escritura), o por ste mismo (lneas de arbitraje y estado). El mdulo puede tambin reconocer y generar direcciones asociadas con los dispositivos que controla cada mdulo. 14

2.7.1

Entrada/salida programada

Los datos se intercambian entre el CPU y el mdulo de E/S. El CPU ejecuta un programa que controla directamente la operacin de E/S, incluyendo la comprobacin del estado del dispositivo, el envo de la orden de lectura o escritura y la transferencia del dato. Cuando el CPU enva la orden debe esperar hasta que la operacin de E/S concluya. Si el CPU es ms rpido, ste estar ocioso. El CPU es el responsable de comprobar peridicamente el estado del mdulo de E/S hasta que encuentre que la operacin ha nalizado. Normalmente habr muchos dispositivos de E/S conectados al sistema a travs de los mdulos de E/S. Cada dispositivo tiene asociado un identicador o direccin. Cuando el CPU enva una orden de E/S, la orden contiene la direccin del dispositivo deseado. 2.7.2 Entrada/salida mediante interrupciones

En el caso de la entrada/salida por interrupciones, es el dispositivo quien establece el momento en que se realiza la transferencia de los datos, avisando a la CPU de que ha ocurrido un evento (por ejemplo, que el usuario haya presionado una tecla). En este punto, debemos aclarar que en la familia 80x86 existen tres tipos de interrupciones, que a veces producen confusin por la nomenclatura empleada en diversos textos: 1. Las traps o interrupciones software son interrupciones invocadas por el usuario desde programa. En este caso, la CPU pasa a ejecutar el manejador de trap asociado (su rutina de atencin a la interrupcin o ISR2). 2. Las excepciones son traps generadas automticamente en respuesta a alguna condicin excepcional producida al intentar ejecutar una instruccin: divisin por cero, cdigo de operacin ilegal. . . Tambin en este caso se ejecuta la ISR asociada, decidiendo, en su caso, que hacer con la situacin anmala. 3. Las interrupciones hardware, a las que llamaremos simplemente interrupciones, se basan en un evento hardware externo a la CPU y no relacionado con la secuencia de instrucciones que se est ejecutando en ese momento. Son las que un ingeniero electrnico ms intuitivamente relacionara con el termin interrupcin, y con las que vamos a tratar en este proyecto. Para cada tipo de interrupcin, por tanto, se puede instalar una rutina de atencin o servicio de interrupcin. Cuando la CPU recibe noticacin de la interrupcin detiene el programa en ejecucin, ejecuta la ISR (es decir, sirve al dispositivo haciendo que cese su peticin de interrupcin (si es necesario, se accede al controlador de interrupciones para hacer lo mismo)) y nalmente devuelve el control al programa, restaurando su estado anterior. Por tanto, una condicin importante a cumplir es que una ISR debe preservar el estado del procesador (el contenido de todos sus registros) para poder volver al estado anterior a la llamada. Existe una diferencia entre las interrupciones hardware y las dems: cuando se entra en una ISR de una interrupcin hardware, el procesador 80x86 deshabilita posteriores interrupciones hardware poniendo a 0 el ag de interrupcin. Esto no ocurre con las traps ni con las excepciones. Por tanto, si queremos inhabilitar las interrupciones en medio de una ISR de trap o excepcin, hay que hacerlo explcitamente, con la instruccin cli en ensamblador o con los medios que proporcione el sistema operativo. De la misma forma, para permitir nuevas interrupciones hardware en medio de una ISR hardware, hay que usar una instruccin sti. Las fuentes primarias de interrupcin en el PC son variadas: timer chip del PC teclado puertos series y paralelos discos reloj de tiempo real CMOS ratn tarjetas de sonido otros dispositivos 15

En la tabla 1 pueden consultarse las fuentes de interrupcin ms frecuentes en el PC, junto con su nmero de interrupcin asociado. Todos estos dispositivos se conectan al controlador programable de interrupciones o PIC (Programmable Interrupt Controller) Intel 8259A, que establece prioridad entre las interrupciones y se conecta con la CPU. Este controlador de interrupciones (que se denomina genricamente 8259) acepta interrupciones de hasta 8 dispositivos. Si cualquier dispositivo pide servicio, el 8259 se conectara con la CPU y le pasara un vector de interrupcin programable. En un principio, el PC IBM original solo soportaba ocho interrupciones diferentes ya que usaba un solo chip 8259. Ms tarde IBM (y todos los fabricantes de PCs) aadieron un segundo PIC en el PC/AT y posteriores maquinas. De hecho, podran encadenarse hasta nueve chips del 8259 para soportar un total de 64 dispositivos que generen interrupciones. Lo normal, sin embargo, es tener solamente dos, tal como se muestra en la gura 5, y soportar un total de 15 interrupciones.

Sin entrar en demasiados detalles sobre la programacin del PIC, que puede resultar compleja, entonces diremos que tiene un registro de mascara de interrupcin (mask register). Este registro de 8 bits permite habilitar o inhabilitar las interrupciones de los dispositivos del sistema (un 0 habilita la interrupcin del dispositivo y un 1 la inhabilita), como puede verse en la gura 6. Cuando ocurre una cierta interrupcin, el 8259 enmascara las posteriores interrupciones de ese dispositivo hasta que recibe n de interrupcin de la ISR.

El PIC proporciona varios esquemas de prioridad, pero el BIOS lo inicializa para usar prioridad ja. En este caso, el dispositivo con IRQ 0 (el timer) tiene la prioridad ms alta y el IRQ 7 la ms baja. Si tenemos una tarea que queremos que sea de mxima prioridad (como por ejemplo el control de un reactor nuclear) seguramente usaramos la interrupcin no enmascarable (int 2), no conectada con el 8259, que no puede desactivarse mediante software y es de mayor prioridad que cualquiera que venga del PIC. Esto es as porque en realidad los chips de la familia 80x86 presentan dos posibles entradas de interrupcin. La primera es la interrupcin enmascarable, a la que se conecta el 8259, que como su nombre indica se puede enmascarar o desenmascarar con las instrucciones cli y sti. La segunda es para la interrupcin no enmascarable, que siempre est activada por defecto. 16

Acceso directo a memoria Tanto los subsistemas de entrada/salida mapeada en memoria como los que usan puertos de entrada/salida necesitan que sea la CPU la que realice la transferencia de los datos entre el dispositivo y la memoria. Para algunos dispositivos de alta velocidad, esta forma de procesar los datos puede resultar demasiado lenta. En el caso del DMA, el dispositivo puede operar directamente sobre la memoria, siempre que la CPU le haya concedido el permiso para hacerlo. De esta manera, slo se avisa a la CPU al comienzo o al nal de una operacin sobre memoria y se consigue una tasa de transferencia de datos superior a la de los otros mtodos. Adems esto a menudo permite que las operaciones de entrada/salida se realicen en paralelo a otras operaciones de la CPU, aumentando as el rendimiento global del sistema. Sin embargo, ntese que no es posible que la CPU y el dispositivo utilicen a la vez el bus de direcciones y de datos, por lo que el procesamiento paralelo se dar slo cuando la CPU est operando sobre datos contenidos en una memoria cache. [3]

2.8

Canales y procesadores de entrada/salida

En las entradas y salidas que se ejecutan desde el procesador entran tres conceptos que se deben conocer. 1. El DMA 2. Los Canales 3. Y las instrucciones 2.8.1 DMA

Con un incremento moderado de la lgica asociada con el perifrico se puede lograr transferir un bloque de informacin a o desde la memoria principal sin la intervencin directa de la UCP. Esto requiere que los perifricos o los controladores de E/S sean capaces de generar direcciones de memoria y transferir datos a o desde el bus del sistema. La UCP es todava la responsable de iniciar la transferencia de cada bloque. A partir de este punto el controlador de E/S realiza toda la operacin sin que la UCP tenga que ejecutar ningn otro programa. La UCP y el controlador de E/S interaccionan slo cuando la UCP debe dar el control del bus del sistema al controlador de E/S, como respuesta a una peticin de este ltimo. Este tipo de capacidad es lo que se conoce como Acceso Directo a Memoria (DMA). La mayora de los computadores de hoy da tienen la posibilidad de interrupcin y de DMA. Un controlador de DMA posee un control parcial de la operacin de E/S. La UCP puede liberarse totalmente si se introduce en el computador un Procesador de E/S (PE/S) o canal. Anlogamente al DMA, el PE/S tiene acceso a la memoria principal y puede interrumpir a la UCP, sin embargo puede emplear un repertorio de instrucciones diferentes del de la UCP (ya que est orientado a operaciones de E/S). [5] 2.8.2 Canales

El canal de E/S es una extensin del concepto de DMA. Un canal de E/S tiene la capacidad de ejecutar instrucciones de E/S, lo que da un control total sobre las operaciones de E/S. Las instrucciones de E/S se almacenan en la memoria principal y sern ejecutadas por un procesador de propsito especco en el mismo canal de E/S. Hay dos tipos comunes de canales de E/S, como se ilustra en la gura:

17

2.8.3

Instrucciones

Las instrucciones que se ejecutan en los procesadores, varia mucho de uno a otro, incluso en los modelos variantes de cada uno de ellos, algunas instrucciones cambian, para mejorar (a veces para empeorar) el rendimiento, o se aaden nuevas instrucciones. Las instrucciones tambin se pueden clasicar por el tipo de operacin que realiza, como por ejemplo. El control de cadenas de caracteres, el control de la memoria cache, Instrucciones aritmticas, instrucciones de transferencia de datos, instrucciones de comparacin. En forma general las instrucciones del procesador, le permiten realizar tareas, esto ejecutndose a un tiempo una o varias de estas instrucciones, en algunos procesadores las instrucciones se dividan de acuerdo al rea del procesador en la cual tuvieran accin. A continuacin se presentan instrucciones de varios procesadores, algunos son ya viejas y no se usan en la actualidad, como se vera en algunos, que pertenecen a una misma familia, las instrucciones varan o se han aadido otras. 2.8.4 Instrucciones del 4004

Hay instrucciones de uno o dos bytes. Los primeros tardan 8 perodos de reloj (un ciclo de instruccin). Los segundos tardan 16 perodos de reloj (dos ciclos de instruccin). Shift dest,inmed. Se puede especicar directamente (sin cargar primero el valor en el registro CL) la cantidad de bits del desplazamiento. Shift es una de las siguientes instrucciones: ROL, ROR, RCL, RCR, SHL, SAL, SHR, SAR. BOUND reg16,mem32. Verica que el valor contenido en el registro se encuentre entre los dos valores indicados en la memoria (un valor est dado por los dos primeros bytes, y el otro por los dos ltimos). Si est fuera de rango se ejecuta una interrupcin interna de tipo 5. De esta manera se puede observar que BOUND es una instruccin de interrupcin condicional, como INTO. ENTER local_variables_size, nesting_level y LEAVE son instrucciones que sirven para facilitar a los compiladores de alto nivel la codicacin de subrutinas o procedimientos. Para ello utilizan la pila para almacenar los parmetros y las variables locales. Estos valores se acceden mediante direccionamiento indirecto usando el registro BP. Al principio de la subrutina se deber indicar, me-

18

diante la instruccin ENTER, el tamao total (en bytes) de las variables locales de la subrutina (local_variables_size) y cuntos punteros a variables locales (estos se accedern usando [BP-xxxx] donde xxxx es la posicin relativa de la variable local) y parmetros (los valores que se almacenaban en el registro BP) de subrutinas de nivel superior se necesitan ver (nesting_level) (en general, este valor debe ser cero) (en [BP] est almacenado el puntero a las variables locales y parmetros de la subrutina que llam a la actual, en [BP+2] se obtienen los de la subrutina que llam a la anterior (esto slo si nesting_level > 0), y as sucesivamente. Al nal de la subrutina, antes de la instruccin RET deber haber una instruccin LEAVE. Cuando se usan estas instrucciones, el programa no debe manejar el registro BP .[1]

2.9

Buses

La comunicacin del microprocesador con los perifricos tiene lugar a travs de cables especiales denominados buses. Los buses son los caminos por los que uye la informacin; podran compararse con las autopistas por las que circulan los coches. Utilizando este smil, se pueden considerar dos factores importantes que determinan la calidad: el nmero de carriles y la velocidad a la que circular por ella. Del mismo modo la calidad de los buses depende del nmero de bits que pueden uir al mismo tiempo y de la velocidad con la que stos lo hacen.

2.9.1

Clases de buses:

Bus de datos Mueve los datos entre los dispositivos del hardware de Entrada como el teclado, el ratn, etc.; de salida como la Impresora, el Monitor; y de Almacenamiento como el Disco Duro, el Disquete o la Memoria-Flash. Estas transferencias que se dan a travs del Bus de Datos son gobernadas por varios dispositivos y mtodos, de los cuales el Controlador PCI, "Peripheral Component Interconnect", Interconexin de componentes Perifricos, es uno de los principales. Su trabajo equivale, simplicando mucho el asunto, a una central de semforos para el trco en las calles de una ciudad. Bus de direcciones El Bus de Direcciones, por otra parte, est vinculado al bloque de Control de la CPU para tomar y colocar datos en el Sub-sistema de Memoria durante la ejecucin de los procesos de cmputo. Para el Bus de Direcciones, el "ancho de canal" explica as mismo la cantidad de ubicaciones o Direcciones diferentes que el microprocesador puede alcanzar. Esa cantidad de ubicaciones resulta de elevar el 2 a la 32 potencia. "2" porque son dos las seales binarias, los bits 1 y 0; y "32 potencia" porque las 32 pistas del Bus de Direcciones son, en un instante dado, un conjunto de 32 bits. Nos sirve para calcular la capacidad de memoria en el CPU. Bus de control Este bus transporta seales de estado de las operaciones efectuadas por la CPU. El mtodo utilizado por el ordenador para sincronizar las distintas operaciones es por medio de un reloj interno que posee el ordenador y facilita la sincronizacin y evita las colisiones de operaciones (unidad de control). Estas

19

operaciones se transmiten en un modo bidireccional y unidireccional.

2.10

Tipos de buses

PCI: (Peripheral Component Interconnect). Estndar que especica un tipo de bus de una computadora para adjuntar dispositivos perifricos a la placa madre. Esos dispositivos pueden ser: 1. Un circuito integrado incorporado dentro de la placa madre. 2. Una tarjeta de expansin que encaja en un socket (ranura) de la placa madre. El bus PCI es comn en PCs modernas, y ha desplazado al bus ISA y al bus VESA (VLB) como buses estndares de expansin. El PCI ser eventualmente reemplazado por el PCI Express, que ya es estndar en la mayora de las nuevas computadoras. Las especicaciones PCI incluyen tamaos fsicos del bus (incluso del cableado), caractersticas elctricas, cronmetros del bus y protocolos. El PCI fue creado a mediados de 1993 por Intel, no soporta conexin en caliente, funciona a una velocidad mxima de 133 MB/s, y transmite datos en paralelo. A diferencia del ISA, PCI permite una conguracin dinmica de un dispositivo, pues al arrancar el sistema, el BIOS y las tarjetas PCI, "negocian" los recursos, permitiendo la asignacin automtica de IRQs y direcciones del puerto. En cambio en ISA tena que ser congurado manualmente. PCI 1.0 era para 1992 simplemente una especicacin a nivel componente. PCI 2.0, fue el primer estndar establecido para los conectores y las ranuras de las placas madres, fue lanzado el 30 de abril de 1993. PCI 2.1 se lanz el 1ero de junio de 1995. PCI fue inmediatamente puesto en servidores, reemplazando el MCA y ELISA como buses de expansin. En tanto en la mayora de las PCs, PCI fue lentamente reemplazando al VLB (VESA Local Bus), y recin logr una penetracin en el mercado a nales de 1994, en la segunda generacin de PCs con Pentium. Para 1996 VBL ya no se inclua, y los fabricantes ya haban adoptado PCI para las computadoras 486. En tanto EISA seguira siendo usado en conjunto con el PCI hasta el ao 2000. Las computadoras Apple adoptaron el PCI para las computadoras profesionales Power Macintosh (reemplazando NuBus) a mediados de 1995. Luego hubo ms revisiones al estndar PCI para agregar nuevas caractersticas y mejoras de rendimiento Con la introduccin del estndar PCI Express serial en 2004, los fabricantes de placas madres fueron incluyendo progresivamente este estndar. Como se mencion anteriormente, la tendencia es que el estndar PCI vaya desapareciendo.

PCI EXPRESS (PCIe, PCI-E). Estndar de bus que permite tarjetas de expansin. Es un sistema exible que reemplazar al PCI, al PCI-X y al AGP. PCI Express tiene el mismo interfaz de software que el PCI, pero las tarjetas son fsica y electrnicamente incompatibles. Mientras estaba en desarrollo, PCI Express era conocido como Arapaho o 3GIO. Fue desarrollado por Intel en 2004, y transmite datos en forma serial (a diferencia del PCI que es paralelo). PCIe 1.1 puede transferir datos a 250 MB/s en cada direccin por carril. Con un mximo de 32 carriles, PCIe permite una velocidad combinada de transferencia de 8 GB/s en cada direccin. Para poner esto en perspectiva, un slo carril permite una transferencia del doble de datos que un PCI normal, cuatro carriles permiten la misma velocidad que la versin ms rpida del PCI-X 1.0, y ocho

20

carriles permiten una transferencia comparable a versin ms rpida de AGP. De todas maneras PCI Express no es todava lo sucientemente rpido como para funcionar como bus de memoria (desventaja que no tiene el sistema HyperTransport), ni tampoco puede ser usado como bus interno externo (como el InniBand).

IDE El puerto IDE (Integrated device Electronics) o ATA (Advanced Technology Attachment) controla los dispositivos de almacenamiento masivo de datos, como los discos duros y ATAPI (Advanced Technology Attachment Packet Interface) y adems aade dispositivos como las unidades CD-ROM. En el sistema IDE el controlador del dispositivo se encuentra integrado en la electrnica del dispositivo. Las diversas versiones de sistemas ATA son: Parallel ATA (algunos estn utilizando la sigla PATA) ATA-1 ATA-2, soporta transferencias rpidas en bloque y multiword DMA. ATA-3, es el ATA2 revisado y mejorado. ATA-4, conocido como Ultra-DMA o ATA-33 que soporta transferencias en 33 MB/s. ATA-5 o Ultra ATA/66, originalmente propuesta por Quantum para transferencias en 66 MB/s. ATA-6 o Ultra ATA/100, soporte para velocidades de 100 MB/s. ATA-7 o Ultra ATA/133, soporte para velocidades de 133 MB/s. Serial ATA, remodelacin de ATA con nuevos conectores (alimentacin y datos), cables, tensin de alimentacin y conocida por algunos como SATA. Ata over ethernet implementacin sobre Ethernet de comandos ATA para montar una red SAN. Se presenta como alternativa a iSCSI En un primer momento, las controladoras IDE iban como tarjetas de ampliacin, mayoritariamente ISA, y slo se integraban en la placa madre de equipos de marca como IBM, Dell o Commodore. Su versin ms extendida eran las tarjetas multi I/O, que agrupaban las controladores IDE y de disquete, as como los puertos RS-232 y el puerto paralelo, y slo modelos de gama alta incorporaban zcalos y conectores SIMM para cachear el disco. La integracin de dispositivos trajo consigo que un solo chip fuera capaz de desempear todo el trabajo. Con la aparicin del bus PCI, las controladoras IDE casi siempre estn incluidas en la placa base, inicialmente como un chip, para pasar a formar parte del chipset. Suele presentarse como dos conectores para dos dispositivos cada uno. De los dos discos duros, uno tiene que estar como esclavo y el otro como maestro para que la controladora sepa a/de qu dispositivo mandar/recibir los datos. La conguracin se realiza mediante jumpers. Habitualmente, un disco duro puede estar congurado de una de estas tres formas: Como Maestro (Master). Si es el nico dispositivo en el cable, debe tener esta conguracin, aunque a veces tambin funciona si est como esclavo. Si hay otro dispositivo, el otro debe estar como esclavo. Como Esclavo (slave). Debe haber otro dispositivo que sea maestro. Seleccin por cable (cable select). El dispositivo ser maestro o esclavo en funcin de su posicin en el cable. Si hay otro dispositivo, tambin debe estar congurado como cable select. Si el dispositivo es el nico en el cable, debe estar situado en la posicin de maestro. Para distinguir el conector en el que se conectar el primerbus Ide (Ide 1) se utilizan colores distintos. Este diseo (dos dispositivos a un bus) tiene el inconveniente de que mientras se accede a un dispositivo el otro dispositivo del mismo conector IDE no se puede usar. En algunos chipset (Intel FX triton) no se podra usar siquiera el otro IDE a la vez.[1]

2.11

1.2.4.2 Estructura de los buses

Las lneas que componen un bus se pueden clasicar en tres grupos funcionales: 21

Las lneas de datos del bus proporcionan el camino para transmitir datos entre los mdulos del sistema. El nmero de lneas del bus de datos determina el nmero mximo de bits que es posible transmitir al mismo tiempo. Las lneas de direccin se utilizan para designar (direccionar) la fuente o el destino de los datos situados en el bus de datos. La anchura del bus de direcciones determina la cantidad mxima de memoria (y de dispositivos de E/S) direccionable en el sistema. Las lneas de control se emplean para gestionar el acceso y el uso de las lneas de datos y direccin, sealizando peticiones y reconocimientos e indicando qu tipo de informacin pasa por las lneas de datos.[2] Clasicacin segn las caractersticas elctricas: Unidireccionales con un transmisor y mltiples receptores Unidireccionales con mltiples transmisores y un nico receptor Bidireccionales. Algunas lneas de control tpicas son: Escritura en memoria (Memory Write) Lectura de memoria (Memory Read) Escritura de E/S (I/O Write) Lectura de E/S (I/O Read) Transferencia reconocida (Transfer ACK) Peticin de bus (Bus Request) Cesin de bus (Bus Grant) Peticin de interrupcin (Interrupt Request Interrupcin reconocida(Interrupt ACK) Reloj (Clock) Inicio (Reset) 2.11.1 Jerarquas de buses

Bus Procesador-memoria Bus E/S Bus Backplane o Mezzanine (Literalmente: entresuelo. Ejemplo, PCI) Las prestaciones del bus disminuyen con la conexin de un gran nmero de dispositivos (cuello de botella). Solucin: conguraciones con mltiples buses, normalmente organizadas jerrquicamente.Ejemplos: BM PC

22

Apple Macintosh II

IBM RS-6000

Ms conguraciones

2.12
2.12.1

Interrupciones
Interrupciones

Las interrupciones son un metodo del que disponen los dispositivos e incluso los procesos para hacer notar a la CPU la aparicin de alguna circunstancia que requiera su intervencin. De este modo, los dispositivos pueden provocar que la CPU deje por el momento la tarea que estaba realizando y atienda la interrupcin. Una vez atendida, seguira con su labor anterior. Cuando no existan interrupciones, era el procesador el que tena que estar continuamente comprobando el estado del dispositivo cuando lo necesitaba. Todo ese tiempo que el procesador estaba sondeando el estado de los dispositivos era tiempo que no se poda dedicar a otros procesos, con lo que signica esto en cuanto a rendimiento. Por todo ello se. pens que lo mejor era que existiera una lnea especial entre el procesador y los dispositivos, por la que los dispositivos indicaban al procesador que ya estaban listos. Cuando al procesador le llega una interrupcin, la atiende inmediatamente dejando de hacer lo que estuviera haciendo. Para poder atenderla de la forma correcta, debe saber con anterioridad cmo tratarla. Por ello, las computadoras tienen en un sitio. conocido de memoria las distintas rutinas de tratamiento para las diferentes interrupciones. El procesador reconoce la interrupcin de la que se trata y busca en memoria la rutina correspondiente. Una vez terminado el tratamiento de la interrupcin, es muy 23

importante que el procesador siga con lo que estaba haciendo. Por eso es muy importante que antes de tratar la interrupcin se guarde de alguna forma el estado del computador, y al terminar la rutina de tratamiento se restaure el estado. Se pueden distinguir dos tipos de interrupciones: interrupciones software e interrupciones hardware.[1] 2.12.2 Interrupciones software

Las interrupciones software son provocadas por los programas usando una funcin especial del lenguaje. Tienen como objetivo el que la CPU ejecute algn tipo de funcin. Al terminar de ejecutarse esta funcin, se seguir ejecutando el programa que provoc la interrupcin. Este tipo de interrupciones es la forma ms importante que tendrn los programas de ejecutar funciones especiales del DOS (Disk Operating System) o del BIOS (Basic Input Output System). Estas funciones tienen un nmero de interrupcin software asociada. Cuando un programa lanza una interrupcin de este tipo, la CPU ejecuta su funcin de tratamiento asociada. Por debemos saber que es lo que hace cada interrupcin para conseguir el efecto deseado Las funciones que se ejecutan con cada interrupcin software son un estndar en el mundo PC. En nuestro caso, algunas de las interrupciones que nos van a ser mas tiles sern: Interrupcin 14h: Acceso al puerto serie por la BIOS. Interrupcin 21h: Funciones del DOS. 1.2.5. Interrupciones Interrupcin 17h: Servicios de acceso a la impresora de la BIOS. Cada interrupcin tiene asociadas varias funciones. Para usar cada una de las funciones de la interrupcin que nos interese se debe: Escribir en un registro el nmero de interrupcin. Escribir en otro registro en nmero de funcin deseada. Escribir en otro/s registro/s los parmetros asociados con la funcin. Lanzar la interrupcin. [1]

References
[1] Organizacin y Arquitectura de computadoras -5 edicion Autor: William Stallings Editorial: Prentice Hall Paginas 10/73 [2] http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r86715.PDF [3] Arquitectura de Computadoras Autor: Patricia Quiroga Editorial: Alfaomega Paginas: 1/276 [4] http://lia.unet.edu.ve/Dai/Ddain/Ciclos.html [5] http://www.fdi.ucm.es/profesor/hidalgo/Estructura/Tema10.pdf

24

También podría gustarte