Você está na página 1de 29

INTRODUCCION El procesador es todo un mundo en s mismo; aunque los primeros eran comparativamente simples, actualmente han alcanzado una

notable complejidad. En el presente trabajo dedicaremos algunos comentarios a su estructura lgica, mencionando de paso que su tecnologa fsica ha avanzado paralelamente con la construccin de circuitos integrados, IC's, lo que a la postre ha significado unas dimensiones fsicas cada vez ms pequeas y un menor consumo. La evolucin de ambos parmetros no solo ha permitido incrementar la densidad de integracin, tambin la velocidad (frecuencia de funcionamiento). Si nos referimos a la familia Intel, de los 2.100 transistores del 4004 en 1970, que con solo 46 instrucciones funcionaba a unos 800 KHz, se pas a los 29.000 transistores del 8086 en 1979 a 14 MHz; y en 1999 a los 8.200.000 transistores del Pentium III a 2 GHz Arquitectura de los computadores es el diseo conceptual y la estructura operacional fundamental de un sistema de computadora. 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. Tambin suele definirse como la forma de seleccionar e interconectar componentes de hardware para crear computadoras segn los requerimientos de funcionalidad, rendimiento y costo.

ARQUITECTURA AVANZADA.
Este trmino sirve para identificar aquella arquitectura producida con el apoyo de recursos informticos digitales que permite conseguir objetos arquitectnicos de progresivo grado de complejidad formal y funcional, imposible de alcanzar por medios convencionales, apoyando el proceso de diseo mediante representaciones grficas digitales de naturaleza dinmica e interactiva orientadas a facilitar la visualizacin y la coordinacin integrada y continua del proyecto y de la obra a ser producida Arquitectura Avanzada de Computadores. Tendencias hacia el procesamiento paralelo. Distintos esquemas y niveles de paralelismo. Incremento del rendimiento en sistemas monoprocesador. Trayectoria reciente en arquitectura de procesadores. multithreading (p.ej. Hyperthreading en Pentium IV) multicore (p.ej. Intel Core 2 Duo) EPIC (p.ej. Itanium) Procesadores RISC bsicos. El concepto RISC en arquitectura de procesadores. Arquitectura del repertorio de instrucciones (ISA). Estructura bsica de un procesador RISC. Etapas bsicas en la segmentacin de un procesador RISC. Conflictos y soluciones. Algunos Procesadores RISC comerciales. Procesadores CISC. El concepto CISC en arquitectura de procesadores. Ejecucin desordenada (out-of-order). Planificacin dinmica de instrucciones: Marcador vs Tomasulo Algunos Procesadores CISC comerciales. Procesadores Superescalares y VLIW. El concepto de procesadores de emisin mltiple. Bsqueda de Instrucciones. Prediccin Dinmica de saltos. Especulacin de control. Decodificacin. Emisin de Instrucciones. Renombramiento de registros. Etapas de ejecucin. Finalizacin de la ejecucin. Mantenimiento de la consistencia. Procesadores superescalares comerciales.

Casos de Estudio: Arquitectura Intel P6 (Pentium II,III), Intel Core y Core 2. ltimas tendencias: Cache de Traza, Multithreading, Multicore. Casos de Estudio: Arquitectura Intel Netburst (Pentium IV), Intel Core 2 duo. Procesadores VLIW/EPIC. Caso de Estudio: Itanium. Memoria: Aspectos prcticos sobre rendimiento Tecnologas. Aspectos relacionados con las memorias cache. Cache thrashing Aspectos relacionados con la TLB Aspectos relacionados con el rendimiento de la E/S Mecanismos bsicos de optimizacin de cdigo El compilador. Niveles de optimizacin. Optimizaciones generales. Optimizaciones de bucles. Desenrolle de bucles y segmentacin software. Optimizaciones de bucles anidados. Optimizacin interprocedural.

Tipos de arquitectura
Una de las primeras decisiones a la hora de disear un procesador es decidir cual ser su juego de instrucciones. Este conjunto de instrucciones (rdenes) es el lenguaje que realmente entiende el procesador, y constituye lo que se conoce como lenguaje ensamblador o lenguaje-mquina [1]. La decisin es trascendente, por dos razones. Primero: el juego de instrucciones decide el diseo fsico del conjunto. Segundo: cualquier operacin que deba ejecutarse con el procesador deber poder ser descrita en trminos de este "lenguaje" elemental (recuerde que los compiladores e intrpretes son en realidad traductores desde el lenguaje de alto nivel (fuente) a este lenguaje-mquina. Sin entrar en detalles, podemos decir que frente a esta cuestin caben dos filosofas de diseo. La primera conduce a mquinas denominadas CISC ("Complex Instruction Set Computer"); las mquinas construidas segn el otro criterio se denominan RISC ("Reduced Instruction Set Computer").

Como puede deducirse de sus propios nombres, las mquinas CISC utilizan instrucciones muy complejas, diramos que muy descriptivas y especficas, lo que necesariamente se traduce en varias consecuencias:

El lenguaje debe contener un amplio surtido de ellas (una para cada circunstancia distinta). Son instrucciones complejas, por tanto de ejecucin lenta. circuitera del procesador tambin es compleja. La

Para un trabajo especfico se requieren pocas instrucciones (siempre hay una que resuelve el problema).

Las mquinas RISC representan el enfoque opuesto. Utilizan instrucciones muy simples, que deben ser cuidadosamente escogidas, porque cualquier operacin debe ser expresada como una secuencia de estas pocas instrucciones. Las consecuencias son justamente opuestas a las anteriores:

El lenguaje contiene un conjunto pequeo de instrucciones. Las instrucciones son muy simples, por tanto de ejecucin rpida. La circuitera es ms simple que en los procesadores CISC. Para cualquier elementales. operacin se requieren varias instrucciones

Naturalmente cada criterio tiene sus pros y sus contra en lo que a rendimiento se refiere. En las mquinas CISC, lentitud de cada instruccin frente a poca cantidad de ellas; en las RISC, rapidez individual aunque hay que ejecutar un mayor nmero

CISC (complex instruction set computer) Computadoras con un conjunto de instrucciones complejo. RISC (reduced instruction set computer) Computadoras con un conjunto de instrucciones reducido.

Los atributos complejo y reducido describen las diferencias entre los dos modelos de arquitectura para microprocesadores solo de forma superficial. Se requiere de muchas otras caractersticas esenciales para definir los RISC y los CISC tpicos. Aun ms, existen diversos procesadores que no se pueden asignar con facilidad a ninguna categora determinada.

As, los trminos complejo y reducido, expresan muy bien una importante caracterstica definitiva, siempre que no se tomen solo como referencia las instrucciones, sino que se considere tambin la complejidad del hardware del procesador. Con tecnologas de semiconductores comparables e igual frecuencia de reloj, un procesador RISC tpico tiene una capacidad de procesamiento de dos a cuatro veces mayor que la de un CISC, pero su estructura de hardware es tan simple, que se puede realizar en una fraccin de la superficie ocupada por el circuito integrado de un procesador CISC. Esto hace suponer que RISC reemplazar al CISC, pero la respuesta a esta cuestin no es tan simple ya que:

Para aplicar una determinada arquitectura de microprocesador son decisivas las condiciones de realizacin tcnica y sobre todo la rentabilidad, incluyendo los costos de software. Existan y existen razones de compatibilidad para desarrollar y utilizar procesadores de estructura compleja as como un extenso conjunto de instrucciones.

La meta principal es incrementar el rendimiento del procesador, ya sea optimizando alguno existente o se desee crear uno nuevo. Para esto se deben considerar tres reas principales a cubrir en el diseo del procesador y estas son:

La arquitectura. La tecnologa de proceso. El encapsulado.

La tecnologa de proceso, se refiere a los materiales y tcnicas utilizadas en la fabricacin del circuito integrado, el encapsulado se refiere a cmo se integra un procesador con lo que lo rodea en un sistema funcional, que de alguna manera determina la velocidad total del sistema. Aunque la tecnologa de proceso y de encapsulado son vitales en la elaboracin de procesadores ms rpidos, es la arquitectura del procesador lo que hace la diferencia entre el rendimiento de una CPU (Control Process Unit) y otra. Y es en la evaluacin de las arqutecturas RISC y CISC donde centraremos nuestra atencin. Dependiendo de cmo el procesador almacena los operandos de las instrucciones de la CPU, existen tres tipos de juegos de instrucciones:

1. Juego de instrucciones para arquitecturas basadas en pilas. 2. Juego de instrucciones para arquitecturas basadas en acumulador. 3. Juego de instrucciones para arquitecturas basadas en registros. Las arqutecturas RISC y CISC son ejemplos de CPU con un conjunto de instrucciones para arqutecturas basadas en registros.

ARQUITECTURAS CISC La microprogramacin es una caracterstica importante y esencial de casi todas las arqutecturas CISC. Como por ejemplo: Intel 8086, 8088, 80286, 80386, 80486. Motorola 68000, 68010, 68020, 68030, 6840. La microprogramacin significa que cada instruccin de mquina es interpretada por un microprograma localizado en una memoria en el circuito integrado del procesador. En la dcada de los sesentas la micropramacin, por sus caractersticas, era la tcnica ms apropiada para las tecnologas de memorias existentes en esa poca y permita desarrollar tambin procesadores con compatibilidad ascendente. En consecuencia, los procesadores se dotaron de poderosos conjuntos de instrucciones. Las instrucciones compuestas son decodificadas internamente y ejecutadas con una serie de microinstrucciones almacenadas en una ROM interna. Para esto se requieren de varios ciclos de reloj (al menos uno por microinstruccin).

ARQUITECTURAS RISC
Buscando aumentar la velocidad del procesamiento se descubri en base a experimentos que, con una determinada arquitectura de base, la ejecucin de programas compilados directamente con microinstrucciones y residentes en memoria externa al circuito integrado resultaban ser mas eficientes,

gracias a que el tiempo de acceso de las memorias se fue decrementando conforme se mejoraba su tecnologa de encapsulado. Debido a que se tiene un conjunto de instrucciones simplificado, stas se pueden implantar por hardware directamente en la CPU, lo cual elimina el microcdigo y la necesidad de decodificar instrucciones complejas. En investigaciones hechas a mediados de la dcada de los setentas, con respecto a la frecuencia de utilizacin de una instruccin en un CISC y al tiempo para su ejecucin, se observ lo siguiente: - Alrededor del 20% de las instrucciones ocupa el 80% del tiempo total de ejecucin de un programa. - Existen secuencias de instrucciones simples que obtienen el mismo resultado que secuencias complejas predeterminadas, pero requieren tiempos de ejecucin ms cortos. Las caractersticas esenciales de una arquitectura RISC pueden resumirse como sigue:

Estos microprocesadores siguen tomando como base el esquema moderno de Von Neumann. Las instrucciones, aunque con otras caractersticas, siguen divididas en tres grupos: 1. Transferencia. 2. Operaciones. 3. Control de flujo.

Reduccin del conjunto de instrucciones a instrucciones bsicas simples, con la que pueden implantarse todas las operaciones complejas. Arquitectura del tipo load-store (carga y almacena). Las nicas instrucciones que tienen acceso a la memoria son 'load' y 'store'; registro a registro, con un menor nmero de acceso a memoria. Casi todas las instrucciones pueden ejecutarse dentro de un ciclo de reloj. Con un control implantado por hardware (con un diseo del tipo load-store), casi todas las instrucciones se pueden ejecutar cada ciclo de reloj, base importante para la reorganizacin de la ejecucin de instrucciones por medio de un compilador. Pipeline (ejecucin simultnea de varias instrucciones). Posibilidad de reducir el nmero de ciclos de mquina necesarios para la ejecucin

de la instruccin, ya que esta tcnica permite que una instruccin puede empezar a ejecutarse antes de que haya terminado la anterior. El hecho de que la estructura simple de un procesador RISC conduzca a una notable reduccin de la superficie del circuito integrado, se aprovecha con frecuencia para ubicar en el mismo, funciones adicionales:

Unidad para el procesamiento aritmtico de punto flotante. Unidad de administracin de memoria. Funciones de control de memoria cache. Implantacin de un conjunto de registros mltiples.

La relativa sencillez de la arquitectura de los procesadores RISC conduce a ciclos de diseo ms cortos cuando se desarrollan nuevas versiones, lo que posibilita siempre la aplicacin de las ms recientes tecnologas de semiconductores. Por ello, los procesadores RISC no solo tienden a ofrecer una capacidad de procesamiento del sistema de 2 a 4 veces mayor, sino que los saltos de capacidad que se producen de generacin en generacin son mucho mayores que en los CISC. Por otra parte, es necesario considerar tambin que:

La disponibilidad de memorias grandes, baratas y con tiempos de acceso menores de 60 ns en tecnologas CMOS. Mdulos SRAM (Memoria de acceso aleatorio esttica) para memorias cache con tiempos de acceso menores a los 15 ns. Tecnologas de encapsulado que permiten realizar ms de 120 terminales.

Esto ha hecho cambiar, en la segunda mitad de la dcada de los ochentas, esencialmente las condiciones tcnicas para arqutecturas RISC.

Procesadores Superescalares y VLIW


Los procesadores con arquitecturas VLIW se caracterizan, como su nombre indica, por tener juegos de instrucciones muy simples en cuanto a nmero de instrucciones diferentes, pero muy grandes en cuanto al tamao de cada instruccin. Esto es as porque en cada instruccin se especifica el estado de todas y cada una de las unidades funcionales del sistema, con el objetivo de simplificar el diseo del hardware al dejar todo el trabajo de planificar el cdigo en manos del programador/compilador, en oposicin a un procesador superescalar, en el que es el hardware en tiempo de ejecucin el que planifica las instrucciones. Un microprocesador tpico VLIW es el IA-64.

Caractersticas de los Procesadores VLIW (Very Long Instruction Word)


Son procesadores con un formato de instruccin muy largo capaz de codificar varias operaciones (p) sobre una misma instruccin Paso adelante en la filosofa RISC El hardware no aplica gestin dinmica de instrucciones Hardware mucho ms simple y rpido. El compilador extrae el paralelismo a nivel de instrucciones, empaquetando varias operaciones independientes (o NOPs si no las encuentra) en una misma instruccin Si el ILP es bajo o el compilador es malo, el tamao delcdigo generado es mucho mayor Problemas de saltos: instrucciones condicionadas Ventajas

Simplificacin de la arquitectura hardware al no tener que planificar el cdigo. Reduccin del nmero de instrucciones de los programas.

Inconvenientes

Requiere compiladores mucho ms complejos. Cualquier mejora en la arquitectura hardware implica un cambio en el juego de instrucciones (compatibilidad hacia atrs nula).

A da de hoy, las mquinas VLIW prcticamente han desaparecido, ya que los inconvenientes pesan bastante ms que las ventajas. La imposibilidad de tener compatibilidad hacia atrs, los excesivos cambios requeridos en los compiladores, y el hecho de que la simplificacin del hardware respecto a las mquinas superescalares convencionales no sea tampoco excesiva han hecho que se abandonen este tipo de diseos. Evolucin relacin compilador-microprocesador

Complejo

Simple

Complejo

Simple

Simple

Simple

Complejo

Simple

Complejo
Aplicacin

1970

1990

Actual
Programacin
Lenguaje de alto nivel

Compilacin
Cdigo en ensamblador

Ensamblado
Cdigo binario

Ejecucin instrucciones
Microcdigo

Memoria: Aspectos prcticos sobre rendimiento Memoria: Aspectos prcticos sobre rendimiento

Memoria: Aspectos prcticos sobre rendimiento


La memoria es el lugar en el que el ordenador almacena los datos e instrucciones instrucciones . Podemos considerar la memoria como un conjunto de registros o palabras, cada uno de ellos identificado por un nmero, llamado direccin. Cada registro est compuesto por un nmero determinado de bits (8, 16 32). Al conjunto de 8 bits se le denomina byte. La memoria es el lugar en el que el ordenador almacena los datos e instrucciones.

Memoria ROM:
Es memoria no voltil de solo lectura. Igualmente, tambin hay dos caractersticas a destacar en esta definicin. 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 inmodificables. 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.

Memoria RAM:
La memoria RAM es uno de los componentes ms importantes del ordenador junto con el procesador. Ambos trabajan en colaboracin muy estrecha. Era

uno de los componentes ms caros en los primeros ordenadores (por eso slo incluan 640 Kb). En los ltimos aos se han desarrollado nuevos modelos ms rpidos, con mayor capacidad y tambin ms baratos. Este es uno de los componentes que mejoraran notablemente el rendimiento global de tu ordenador.

Memoria Cache
Es un tipo de memoria donde se guardan datos que la PC necesita para trabajar. La memoria principal de la PC (RAM) y la memoria cach son iguales en muchos aspectos; la diferencia est en el uso que se le da a la cach. Debido a la gran velocidad alcanzada por los microprocesadores, la RAM de la computadora no es lo suficientemente rpida para almacenar y transmitir los datos que el microprocesador necesita, por lo que tendra que esperar a que la memoria estuviera disponible y el trabajo se atrasara. Para evitarlo, se usa una memoria muy rpida, estratgicamente situada entre el micro y la RAM: la memoria cach. La memoria cache es unas 5 o 6 veces ms que la RAM. Esto la encarece bastante, y se es uno de los motivos por los cuales su capacidad es mucho menor que el de la RAM: un mximo cercano a 512 kilobytes (512 Kb), es decir, medio "mega", frente a 16 32 megas de RAM. Adems, este precio elevado la hace candidata a falsificaciones y engaos. Pero la cach no slo es rpida; adems, se usa con una finalidad especfica. Cuando una computadora trabaja, el microprocesador opera en ocasiones con un nmero reducido de datos, pero que tiene que traer y llevar a la memoria en cada operacin. Si situamos en medio del camino de los datos una memoria intermedia que almacene los datos ms usados, los que casi seguro necesitar el microprocesador en la prxima operacin que realice, por lo tanto ahorrar mucho tiempo del trnsito y acceso a la lenta memoria RAM; esta es la segunda utilidad de la cach. MEMORIA CACH La memoria cach es una cantidad relativamente pequea (normalmente menos de 1MB) de memoria de alta velocidad que reside muy cerca del CPU. La memoria cach est diseada para proporcionar a la CPU los datos e instrucciones que se solicitan con ms frecuencia. Debido a que la recuperacin de los datos en la memoria cach toma una fraccin del tiempo que toma el accesarla desde la memoria principal, el tener una memoria

cach puede ahorrar mucho tiempo. Si la informacin no est en la memoria cach, todava se debe recuperar la memoria principal, pero la verificacin de memoria cach toma tan poco tiempo que lo vale. Esto es parecido a verificar que en el refrigerador haya la comida que se necesita antes de correr a la tienda y comprarla: es probable que lo que necesite est ah; si no, slo toma un momento en verificarlo. La memoria cach es como una lista rpida de instrucciones necesarias para el CPU. El controlador de memoria guarda en la memoria cach cada instruccin que solicita el CPU; cada vez que el CPU obtenga una instruccin que necesita de la memoria cach (llamada un uso de cach), esa instruccin se mueve a la parte superior de la lista rpida. Cuando la memoria cach est llena y el CPU necesita una nueva instruccin, el sistema sobrescribe en la memoria cach los datos que no se han utilizado durante el periodo ms largo de tiempo. De esta forma, la informacin prioritaria que se utiliza continuamente se queda en la memoria cach, mientras que la informacin que se utiliza con menor frecuencia se elimina. NIVELES DE MEMORIA CACH Actualmente, la mayora de la memoria cach esta incorporada al chip del procesador mismo; sin embargo, son posibles otras configuraciones. En algunos caso, un sistema puede tener una memoria cach localizada dentro del procesador, justo fuera del procesador en la tarjeta madre y/o puede tener un socket de memoria cach cerca del CPU, que puede contener un mdulo de memoria cach. Sin importar la configuracin, cualquier memoria cach tiene un nivel asignado de acuerdo con su proximidad al procesador. Por ejemplo, la memoria cach que est ms cercana al procesador se llama memoria cach de nivel uno (L1), el siguiente nivel de memoria cach se enumera L2, despus L3, y as sucesivamente. Las computadoras con frecuencia tienen otros tipos de memoria cach adems de esta memoria. Por ejemplo, algunas veces el sistema utiliza una memoria principal como memoria cach para la unidad de disco duro. Aunque no hablaremos sobre esto en este manual, es importante hacer notar que el trmino memoria cach se puede referir especialmente a la memoria y tambin a otros tipos de tecnologas de almacenamiento.

Cache thrashing
En ciencias de la computacin , paliza es una situacin donde una gran cantidad de recursos de la computadora se utilizan para hacer una cantidad mnima de trabajo, con el sistema en un estado continuo de contencin de

recursos . Una vez iniciado, paliza suele ser autosuficiente hasta que algo ocurre para eliminar la situacin original que llev a la conducta inicial paliza. Por lo general paliza se refiere a dos o ms procesos de acceso a un recurso compartido en repetidas ocasiones tales que el sistema de degradacin de rendimiento grave se produce porque el sistema est gastando una cantidad desproporcionada de tiempo slo el acceso al recurso compartido. Recursos de tiempo de acceso en general, se puede considerar como un desperdicio, ya que no contribuye al avance de cualquier proceso. Esto es a menudo el caso cuando una CPU puede procesar ms informacin que puede ser celebrada en disposicin de RAM ; en consecuencia, el sistema pasa ms tiempo en la preparacin para ejecutar las instrucciones, que en realidad ellos de ejecucin. ventana de sndrome de Silly es un tipo de sistema de comunicaciones por paliza. Informacin general En las computadoras modernas, paliza puede ocurrir en la paginacin del sistema (si no hay "suficiente" memoria fsica o el tiempo de acceso a disco es demasiado largo), o en el sistema de comunicacin (especialmente en conflictos por el acceso de autobuses internos), etc Dependiendo la configuracin y algoritmos involucrados, el rendimiento y la latencia de un sistema se puede degradar por mltiples rdenes de magnitud . En la memoria virtual de sistemas, paliza puede ser causada por los programas o cargas de trabajo que actualmente son insuficientes localidad de referencia : si el conjunto de trabajo de un programa o carga de trabajo de una no pueden ser efectivamente realizadas en la memoria fsica, a continuacin, datos constantes de intercambio, es decir, paliza, se puede producir. El trmino fue utilizado por primera vez en la grabacin de los das de funcionamiento del sistema para describir el sonido de las cintas hechas cuando los datos estaba siendo rpidamente escribir y leer de ellos. Muchos de los antiguos ordenadores de gama baja tienen suficiente RAM (memoria) para los patrones de uso actual y el aumento de la cantidad de memoria a menudo puede hacer que el ordenador funcione mucho ms rpido. Este aumento de velocidad se debe a la reducida cantidad de intercambio es necesario. Un ejemplo de este tipo de situaciones se produce en la IBM System/370 serie de la computadora central , en el que una instruccin particular, puede consistir en la ejecucin de una instruccin, que atraviesa una pgina de lmites, que los puntos de instruccin a una instruccin de movimiento, que

se cruza tambin un lmite de la pgina, apuntando a un movimiento de datos de una fuente que cruza un lmite de pgina, a un objetivo de los datos que tambin cruza un lmite de pgina. El nmero total de pginas por lo tanto siendo utilizado por esta instruccin particular, es de ocho y las ocho pginas deben estar presentes en la memoria al mismo tiempo. Si el sistema operativo asigna menos de ocho pginas de la memoria real en este ejemplo, cuando se trata de intercambiar alguna parte de la instruccin o los datos para que en el resto, la instruccin de nuevo la pgina culpa , y se thrash en cada intento de reinicie la instruccin no. Para resolver paliza debido a la paginacin excesiva, un usuario puede hacer cualquiera de las siguientes. 1. Aumente la cantidad de RAM en el equipo (por lo general la mejor solucin a largo plazo). 2. Reducir el nmero de programas que se ejecutan en el equipo. 3. Vuelva a colocar los programas que estn cargados de memoriaequivalentes que utilizan menos memoria. El trmino tambin se usa cuando un pequeo conjunto de espacio de almacenamiento ms rpido, destinado a ser utilizado para acelerar el acceso a un conjunto ms grande de espacio de almacenamiento ms lento, se accede de una manera que anula los beneficios del almacenamiento ms rpido. Un ejemplo de esto es cach paliza, donde se accede es la memoria principal en un patrn que lleva a mltiples lugares de la memoria principal competencia para las lneas de cach misma, dando lugar a exceso de fallos de cach . Esto es ms problemtico para los depsitos que tienen bajos asociatividad

Aspectos relacionados con la TLB


Buffer de traduccin anticipada o TLB (IV) TLB y cache Cuando se combinan caches y memoria virtual, la direccin virtual debe ser traducida a una direccin fsica mediante la TLB antes de que pueda acceder a la cache (elevado tiempo de acierto) Una forma de reducir el tiempo de acierto es: 1. acceder a la cache nicamente con el desplazamiento de pgina (no necesita ser traducido) y mientras se estn leyendo las etiquetas de direccin de la cache, el nmero de pgina virtual es enviado a la TLB para ser traducido 2. como la TLB es habitualmente ms pequea y rpida que la memoria de etiquetas de la cache, la lectura de la TLB puede hacerse de forma simultnea a la lectura de la memoria de etiquetas sin ralentizar los tiempos de acierto de la cache

3. despus la comparacin de direcciones se realiza entre la direccin fsica de la TLB y la etiqueta de la cache Inconveniente: una cache de correspondencia directa no puede ser mayor que una pgina Otra alternativa es utilizar caches virtuales

Aspectos relacionados con el rendimiento de la E/S


La misin principal del subsistema de E/S es adaptar los dispositivos externos antes de conectarlos al bus del sistema. La velocidad de transmisin de datos de los perifricos es siempre menor que la de la memoria y la CPU. Es necesario amortiguar esa diferencia de velocidades. Debido a la gran diversidad de perifricos no es posible incorporar toda la lgica necesaria en el computador para manejar cada uno de stos. Los tamaos y formatos de datos de los perifricos son diferentes a los del resto del computador.

Funciones bsicas el sistema de E/S


Direccionamiento: Seleccin del dispositivo correspondiente de entre todos los


dispositivos presentes en el sistema.

Sincronizacin: Permitir que la CPU y la memoria (alta velocidad transferencia de datos)


se puedan comunicar con losdispositivos de E/S (baja velocidad) sincronizando los envos de datos entre ambos. (Inicio de la transferencia).

Transferencia: El sistema de E/S debe tener toda la circuitera yseales de comunicacin


apropiadas para llevar a cabo la comunicacin con cada uno de los dispositivos del sistema. (Mtodo de transferencia).

Mdulo de E/S Funciones


Elemento que permite la conexin de un dispositivo externo al bus del sistema. 1. Control y Temporizacin: Coordina el trfico entre dispositivos internos (memoria, CPU) y externos (impresora, monitor,). 2. Comunicacin con la CPU: Reconocer la direccin de la CPU que identifica al dispositivo externo Recepcin y decodificacin de mandatos (comandos) desde la CPU Transferencia de datos entre la CPU y el dispositivo externo Informacin sobre el estado del perifrico 3. Comunicacin con el/los dispositivo/s (rdenes, estado, datos). 4. Almacenamiento temporal de datos.

5. Deteccin de errores.

MAPA DE E/S:
E/S comn y separada Segn el modo de seleccionar el perifrico y el acceso a sus registros de control, datos y estado: E/S comn o asignada/mapeada en memoria El acceso a estos mdulos se realiza de igual modo a como se accede a un dato de memoria principal. Los perifricos se integran en el computador como si fueran parte de la memoria Comunicarse con un mdulo de E/S es leer y escribir en memoria. Ej: 68000. VENTAJA: Se aprovecha la potencia del juego de instrucciones. INCONVENIENTE: Se desperdicia parte del espacio de direcciones.

BUSES DE MEMORIA

CPU E/S n

Memoria

Unidad de E/S 1

Unidad de

Mtodos de programacin de E/S.


E/S Programada (Encuesta o pooling). E/S por interrupciones. Acceso directo a memoria (DMA).

E/S POR INTERRUPCIONES


La E/S le indica a la CPU cuando est preparada para transferir datos (genera una interrupcin a la CPU), activando una lnea especial conectada a la CPU (lnea de interrupcin).

Lnea de Interrupcin CPU Mem Mod E/S

CLASIFICACIN DE INTERRUPCIONES
Segn FUENTE que produce la interrupcin: Interrupciones HARDWARE 1. INTERNAS (producidas por la CPU) 2. EXTERNAS (producidas por los dispositivos de E/S) 3. Vectorizadas 4. No vectorizadas Interrupciones SOFTWARE (producidas por la ejecucin de instrucciones de la CPU). Segn MODO DE CONOCER el VECTOR DE INTERRUPCIN (la direccin donde se encuentra la rutina de servicio de la interrupcin): Interrupciones AUTOVECTORIZADAS: el vector de interrupcin es FIJO. Interrupciones VECTORIZADAS: el vector de interrupcin lo suministra el propio perifrico

Conexin de varios perifricos


Generalmente existen VARIOS PERIFRICOS conectados (y no uno slo) que pueden realizar interrupciones. Es necesario: Decidir cmo se conectan los perifricos a la CPU. 1. Una sola lnea de interrupcin. 2. Varias lneas de interrupcin. Establecer prioridades. Determinar para cada perifrico su vector de interrupciones.

VARIAS LINEAS DE INTERRUPCION


Cada perifrico tiene su lnea de interrupcin. Cada lnea tiene su propio vector de interrupcin asociado. La CPU determina la prioridad.

Controlador de interrupciones (PIC, programmable interrupt controller)


Permite conectar varios perifricos a una interrupciones. 1. Enmascarar interrupciones por software misma lnea de

2. Definir vectores de interrupcin 3. Gestionar prioridades.

interrupciones

asociados

cada

Caractersticas de los canales de E/S


Los canales representan una extensin al concepto DMA. Tienen la habilidad de ejecutar instrucciones de E/S. Completo control de la transferencia de datos, por lo tanto, la CPU no ejecuta instrucciones de E/S. Instrucciones almacenadas en memoria principal que sern ejecutadas por un procesador especial en el canal. La CPU inicia la transferencia de E/S instruyendo al canal para ejecutar el programa que est en memoria. Este programa especifica dispositivos reas de memoria a usar, prioridades y acciones ante errores. El canal siguiendo las instrucciones controla la transferencia de datos.

Funcionamiento
Para realizar una transferencia de E/S, la CPU primero ha de indicar qu canal de E/S ejecuta un determinado programa. La CPU tambin debe definir el rea de almacenamiento temporal, establecer una prioridad y establecer las correspondientes acciones en caso de error. El programa a ejecutar est cargado en memoria principal y puede contener instrucciones propias slo procesables por el canal de E/S. Despus de terminar la operacin de E/S, el canal de E/S deja el resultado en un rea de memoria y a continuacin genera una interrupcin para indicar que ha acabado.

Mecanismos bsicos de optimizacin de cdigo

El compilador. Niveles de optimizacin


Un compilador es un programa informtico que traduce un programa escrito en un lenguaje de programacin a otro lenguaje de programacin, generando un programa equivalente que la mquina ser capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de mquina, pero tambin puede ser simplemente texto. Este proceso de traduccin se conoce como compilacin.1 Un compilador es un programa que permite traducir el cdigo fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (tpicamente lenguaje de mquina). De esta manera un programador puede disear un programa en un lenguaje mucho ms cercano a como piensa un ser humano, para luego compilarlo a un programa ms manejable por una computadora.

Partes del compilador


La construccin de un compilador involucra la divisin del proceso en una serie de fases que variar con su complejidad. Generalmente estas fases se agrupan en dos tareas: el anlisis del programa fuente y la sntesis del programa objeto.

Anlisis: Se trata de la comprobacin de la correccin del programa fuente, e incluye las fases correspondientes al Anlisis Lxico (que consiste en la descomposicin del programa fuente en componentes lxicos), Anlisis Sintctico (agrupacin de los componentes lxicos en frases gramaticales ) y Anlisis Semntico (comprobacin de la validez semntica de las sentencias aceptadas en la fase de Anlisis Sintctico). Sntesis: Su objetivo es la generacin de la salida expresada en el lenguaje objeto y suele estar formado por una o varias combinaciones de fases de Generacin de Cdigo (normalmente se trata de cdigo intermedio o de cdigo objeto) y de Optimizacin de Cdigo (en las que se busca obtener un cdigo lo ms eficiente posible).

Alternativamente, las fases descritas para las tareas de anlisis y sntesis se pueden agrupar en Front-end y Back-end:

Front-end: es la parte que analiza el cdigo fuente, comprueba su validez, genera el rbol de derivacin y rellena los valores de la tabla de smbolos. Esta parte suele ser independiente de la plataforma o sistema para el cual se vaya a compilar, y est compuesta por las

fases comprendidas entre el Anlisis Lxico y la Generacin de Cdigo Intermedio. Back-end: es la parte que genera el cdigo mquina, especfico de una plataforma, a partir de los resultados de la fase de anlisis, realizada por el Front End.

Esta divisin permite que el mismo Back End se utilice para generar el cdigo mquina de varios lenguajes de programacin distintos y que el mismo Front End que sirve para analizar el cdigo fuente de un lenguaje de programacin concreto sirva para generar cdigo mquina en varias plataformas distintas. Suele incluir la generacin y optimizacin del cdigo dependiente de la mquina. El cdigo que genera el Back End normalmente no se puede ejecutar directamente, sino que necesita ser enlazado por un programa enlazador (linker).

TIPOS DE COMPILADORES
Esta taxonoma de los tipos de compiladores no es excluyente, por lo que puede haber compiladores que se adscriban a varias categoras: Compiladores cruzados: generan cdigo para un sistema distinto del que estn funcionando. Compiladores optimizadores: realizan cambios en el cdigo para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original. Compiladores de una sola pasada: generan el cdigo mquina a partir de una nica lectura del cdigo fuente. Compiladores de varias pasadas: necesitan leer el cdigo fuente varias veces antes de poder producir el cdigo mquina. Compiladores JIT (Just In Time): forman parte de un intrprete y compilan partes del cdigo segn se necesitan. Pauta de creacin de un compilador: En las primeras pocas de la informtica, el software de los compiladores era considerado como uno de los ms complejos existentes. Los primeros compiladores se realizaron programndolos directamente en lenguaje mquina o en ensamblador. Una vez que se dispone de un compilador, se pueden escribir nuevas versiones del compilador (u otros compiladores distintos) en el lenguaje que compila ese compilador.

Actualmente existen herramientas que facilitan la tarea de escribir compiladores intrpretes informticos. Estas herramientas permiten generar el esqueleto del analizador sintctico a partir de una definicin formal del lenguaje de partida, especificada normalmente mediante una gramtica formal y barata, dejando nicamente al programador del compilador la tarea de programar las acciones semnticas asociadas.

Optimizacin de Ciclos (Bucles)


Los ciclos son una de las partes ms esenciales en el rendimiento de un programa dado que realizan acciones repetitivas, y si dichas acciones estn mal realizadas, el problema se hace N veces ms grandes. La mayora de las optimizaciones sobre ciclos tratan de encontrar elementos que no deben repetirse en un ciclo. Ciclos while(a == b) { int c = a; c = 5; ; } En este caso es mejor pasar el int c =a; fuera del ciclo de ser posible. El problema de la optimizacin en ciclos y en general radica es que muy difcil saber el uso exacto de algunas instrucciones. As que no todo cdigo de proceso puede ser optimizado. Otros uso de la optimizacin pueden ser el mejoramiento de consultas en SQL o en aplicaciones remotas (sockets, E/S, )

OPTIMIZACION DE BUCLES ANIDADOS


La combinacin de bucles anidados, tambin denominada iteracin anidada, utiliza una entrada de combinacin como tabla de entrada externa (mostrada como la entrada superior en el plan de ejecucin grfico) y otra como tabla de entrada interna (inferior). El bucle externo procesa la tabla de entrada externa fila a fila. El bucle interno, que se ejecuta para cada fila externa, busca filas coincidentes en la tabla de entrada interna.

En el caso ms sencillo, la bsqueda recorre una tabla o ndice completo, lo cual recibe el nombre de combinacin nativa de bucles anidados. Si la bsqueda utiliza un ndice, se denomina combinacin de bucles anidados de ndice. Si se gener el ndice como parte del plan de la consulta (y se destruy al finalizar la consulta), se denomina combinacin de bucles anidados de ndice temporal. El optimizador de consultas tiene en cuenta todas estas variantes. Una combinacin de bucles anidados resulta particularmente eficaz si la entrada externa es pequea y la entrada interna est indizada previamente y es grande. En muchas transacciones pequeas, como las que afectan slo a un pequeo conjunto de filas, las combinaciones de bucles anidados de ndice son superiores a las combinaciones de mezcla y a las combinaciones hash. Sin embargo, en las consultas grandes, las combinaciones de bucles anidados a menudo no son la opcin ptima.

DESENROOLLE DE BUCLES Y SEGMENTACION SOFTWARE

El desarrolle de bucles es una tcnica que explota el paralelismo a nivel de instrucciones, pero aumenta en exceso el tamao de nuestro cdigo ejecutable final. Por este motivo se han desarrollado otra tcnica mas generales como es la segmentacin del software. Es una tcnica para reorganizar bucles; de forma que el nuevo bucle contendr instrucciones de varios bucles diferentes del bucle inicial. Un bucle segmentado por software intercala instrucciones de diferentes iteraciones sin desenrollar el bucle, Un bucle debe tener primero unas instrucciones de carga de datos, despus otras con operaciones aritmticas y al final operaciones de almacenamiento de datos., pues bien un bucle segmentado por software tendr instrucciones de carga del bucle anterior, operaciones aritmticas del bucle actual y operaciones de carga del bucle posterior, De esta forma eliminamos la dependencia de datos entre instrucciones de carga y aritmticas y entre las aritmticas y las de almacenamiento en memorias.

Optimizacin interprocedural
Interprocedural Optimization (IPO) mejora considerablemente el rendimiento de las pequeas y medianas funciones, especialmente en los programas que contienen las llamadas dentro de bucles. El anlisis de las OPI ofrece informacin sobre las vulnerabilidades y errores de codificacin, como las variables no inicializadas o OpenMP problemas API, que no puede ser detectado tambin por otros compiladores. optimizacin guiada por perfiles (PGO) mejora el rendimiento de las aplicaciones mediante la reduccin de la instruccin-la cache, la reorganizacin de la disposicin del cdigo, la reduccin de tamao del cdigo, y la reduccin de mispredictions rama. Intel templa sus recopiladores para optimizar para que sus plataformas de hardware reduzcan al mnimo paradas y produzcan el cdigo que se ejecuta en el nmero ms pequeo de ciclos. Las ayudas del recopilador de Intel C++ tres tcnicas de alto nivel separadas para optimizar el programa compilado optimizacin interprocedural (IPO), optimizacin Perfil-Dirigida (PGO), y optimizaciones de alto nivel (HLO). La optimizacin Perfil-Dirigida refiere a un modo de la optimizacin donde est capaz el recopilador de tener acceso a datos de un funcionamiento de la muestra del programa a travs de un sistema representativo de la entrada. Los datos indicaran qu reas del programa se ejecutan ms con frecuencia, y qu reas se ejecutan menos con frecuencia. Todas las optimizaciones benefician de la regeneracin perfil-dirigida porque son menos confiadas en la heurstica al tomar decisiones de la compilacin. Las optimizaciones de alto nivel son optimizaciones realizadas en una versin del programa que representa ms de cerca el cdigo de fuente. Las optimizaciones de alto nivel incluyen intercambio del lazo, la fusin del lazo, desenrollarse del lazo, la distribucin del lazo, el prefetch de los datos, y

ms. Las optimizaciones de alto nivel son generalmente muy agresivas y pueden tomar tiempo de compilacin considerable. La optimizacin de Interprocedural aplica optimizaciones tpicas del recopilador (tales como propagacin constante) solamente usar un alcance ms amplio que pueda incluir procedimientos mltiples, archivos mltiples, o el programa entero

ARQUITECTURA COMERCIAL

Las computadoras estn presentes en todas nuestras actividades cotidianas, permitindonos hacer ms rpido las tareas e inclusive incorporando una mayor cantidad de datos. Sin embargo, para la mayora de nosotros pasan desapercibidas muchas otras actividades que demandan una velocidad y capacidad de manejo de datos mucho muy por arriba de lo necesitamos para nuestras labores diarias. Actividades que pertenecen a disciplinas acadmicas, a labores industriales, econmicas o de la milicia requieren manejar grandes volmenes de datos, procesarlos a travs de innumerables o complejos clculos y obtener resultados en razonables lapsos de tiempo. Por ejemplo, podemos mencionar el anlisis estructural, prediccin meteorolgica, investigaciones nucleares y de alta energa, diagnstico mdico, simulaciones para fluidos (aerodinmica o hidrodinmica), inteligencia artificial y sistemas expertos, navegacin y deteccin, defensa, ingeniera qumica y gentica, socio economa, y muchas otras ms. En todos estos casos, la creciente demanda por manejar volmenes de datos cada vez mayores, con mayor precisin o ms rpidamente llega a sobrepasar pronto las capacidades de los computadores disponibles. Se busca entonces que la construccin de mejores computadores logren avances substanciales en su rendimiento. El logro de un elevado rendimiento no depende solamente de hacer que el computador funcione cada vez ms rpido. Principalmente, la mejora en el rendimiento del computador se obtendr de mejoras en la "arquitectura" de ste y en el desarrollo de nuevas tcnicas de procesamiento. El concepto de arquitectura de un computador se refiere a la integracin de su estructura fsica con su estructura lgica. Se utiliza el trmino "arquitectura" para enfatizar la sntesis de elementos de ingeniera y ciencias exctas con elementos estticos y de funcionalidad prctica, de la misma manera en que un arquitecto combinar las tcnicas y conocimientos de la ingeniera con la apreciacin artstica e integracin de su obra con su entorno. Lo que el arquitecto realiza no slo debe mantenerse en pie durante el tiempo sino que tambin debe permitir cumplir el objetivo para el cual fue construido y resultar del agrado para quien lo use. As la disciplina dedicada a la construccin, estudio y aplicacin de los computadores recibe el nombre de Arquitectura de Computadores y puede ser dividida en cinco partes fundamentales: entrada y salida, comunicaciones, control, procesamiento y almacenamiento. Esta es de inters tanto para los ingenieros en electrnica y computacin, dedicados al

diseo de hardware, como para los cientficos en computacin e ingenieros de software, dedicados al diseo de programas. Asimismo, la arquitectura de computadores es un concepto que integra software, hardware, algoritmos y lenguajes de programacin para el procesamiento de datos y la generacin de informacin. El diseo y construccin de computadores es frecuentemente visto como labor de un ingeniero ms que de un cientfico. Sin embargo, las demandantes necesidades de equipos de cmputo cada vez ms veloces y poderosos requiere de la aplicacin prctica de diversos conceptos tericos. Tales necesidades, involucran computadores individuales (uniprocesadores), computadores compuestos (multiprocesadores) y supercomputadores. Por la complejidad con la que se encuentran interrelacionados los elementos fsicos y lgicos que integran a un computador es imposible considerar nicamente a los de un tipo durante la fase de diseo. Tan importante es el hardware que permite realizar lo que deseamos como el software que nos permite expresarlo y controlarlo. En la arquitectura de computadores una computadora es vista como un sistema de cmputo y como tal se requiere de un amplio conocimiento de las estructuras de hardware y software junto con las estrechas interacciones con los algoritmos usados (para el clculo o asignacin de recursos). En el diseo de una computadora existen varios elementos que se toman en cuenta, medidos principalmente en trminos de desempeo y costo. Mtricas secundarias son la tolerancia a fallas, funcionalidad, y factores ambientales (tamao, enfriamiento y ruido). Por supuesto, esto sin perder de vista el objetivos principales como son el diseo de computadores potentes y de costo razonable, permitir la realizacin de programas eficientes que resulevan un problema computacional, y ofrecer las interfaces adecuadas para el usuario. Da con da las computadoras ganan terreno en las actividades humanas, ya sea como una herramienta para quien las realiza o como un substituto de ste. La capacidad de un computador para realizar clculos, procesar datos, generar informacin e inlcusive simular procesos y eventos naturales o artificiales las convierten en herramientas universales nicamente limitadas por su propia capacidad. Este lmite es el principal impulsor de la creciente demanda sobre computadores cada vez ms poderosos y de mayores prestaciones. Canonical trabaja en un cambio en la arquitectura y acuerdos comerciales que permitan que Ubuntu, su distribucin Linux, pueda

incorporarse en ms sistemas embebidos y se le pueda ver en un coche o una cocina. Curiosamente, los smartphones, que tienen encandilados a la industria, no se contemplan. Canonical quiere ver a Ubuntu en coches, tablets, set-top boxes o codificadores de televisin, y lo que Chris Kenyon, director de desarrollo de negocio, ha denominado el hogar digital o algo que poder llevar a cuestas, recogen en The Register. La clave de esta nueva estrategia es Ubuntu Core, que es Ubuntu sin su familiar interfaz pero al que se aade el kernel, middleware y un marco de interfaz de usuarios que permitir a los que creen aplicaciones ofrecer sus propias pantallas. Un paso importante para conseguir la ubiquidad de Ubuntu Core ha sido la incorporacin del soporte para Open Multimedia Application Platform (OMAP) 3 en Ubuntu 10.04, que sali al mercado el mes pasado. OMAP 3 es la plataforma de Texas Instruments utilizada, por ejemplo, en los dispositivos de Nokia o Samsung. Adems Canonical espera que en los prximos doce meses se ample el soporte para otras arquitecturas y variantes de ARM. Otro paso importante en la expansin de Ubuntu Core es la incorporacin del soporte tctil en Ubuntu 10.04 que, segn Canonical permitir que los fabricantes de hardware trabajen mejor con esta distribucin de Linux. A esto hay que aadir el interfaz Unity, presentada durante el ltimo Ubuntu Developer Summit y que es la base para Ubuntu Light.

BIBLIOGRAFIA
Fuente Original GEEKS ZONE: Canonical quiere llevar a Ubuntu mas alla del computador http://www.taringa.net/posts/downloads/4242737/Intel-C-Plus-Plus-Compilerv11_1_054.html

http://translate.google.co.ve/translate?hl=es&langpair=en%7Ces&u=http://ww w.cs.ucr.edu/~bhuyan/cs203A/Lecture1-2.ppt

http://espanol.answers.yahoo.com/question/index?qid=20060828161933AAd MXlj http://www.fdi.ucm.es/profesor/sdelpino/ETC/historia.pdf

http://www.ual.es/~jjfdez/IC/#DESCRIPCI http://www.kingston.com/latam/tools/umg/spanish_pdfumg.pdf

icaro.eii.us.es/descargas/GM5.pdf

http://www.uv.es/varnau/AIC_P05.pdf http://www.worldlingo.com/ma/enwiki/es/Intel_C%252B%252B_Compiler

Você também pode gostar