Está en la página 1de 30

Instituto Tecnolgico de Puebla

Divisin de Estudios de Posgrado e Investigacin

Introduccin al Software de Sistemas

Libro que para cumplir en tiempo y forma el compromiso del ao sabtico presenta

Dr. Ral Morales Carrasco

Puebla, Pue., Mxico 2009

1 Introduccin al software de sistemas

1.1

Introduccin

El desarrollo tecnolgico avanza tan rpidamente que los usuarios de las computadoras no imaginaban sera posible, esto ocasiona que el funcionamiento de la computadora vaya cambiando de acuerdo a la evolucin del hardware y del software. Hoy por hoy, la computadora es incapaz de hacer algo para lo que no ha sido programada. Sin embargo, el progreso que representa el que una mquina tenga la capacidad de realizar tareas en diversos campos de aplicacin, implica un avance extraordinario. Es en este contexto en donde el desarrollo y aplicacin del Software de sistemas adquiere una importancia primordial, dada su orientacin hacia la optimizacin de los sistemas de computacin para dar soporte a los diversos programas de aplicacin. Por ello, an cuando el perfil del Licenciado en Informtica no est completamente enfocado hacia el desarrollo de este tipo de software, debe conocer cules son los diferentes tipos que existen y la funcin de cada uno de ellos. Es claro que conforme avanza el diseo de hardware, el software debe ir cambiando para ajustarse de la mejor manera posible a los requerimientos de programacin y optimizacin de recursos.

1.1.1

Qu es el software?

Se puede averiguar, a partir de lo que ya conocemos, utilizando una analoga: En qu se parece una computadora al ser humano? El ser humano siempre ha querido hacer las cosas a su semejanza, ha creado herramientas y mtodos, los cuales facilitan su labor diaria, y una de ellas es precisamente la computadora. Para iniciar sta breve comparacin, es necesario saber dos definiciones esenciales, hardware y software (voces del idioma Ingls). Aunque existen muchas definiciones es preferible partir del origen histrico del trmino, su aceptacin paulatina en el ambiente de computacin y el significado que tiene actualmente. La palabra Software se deriva de soft (suave, placentero) y ware (artesana) y se origina con el diseo de la computadora EDVAC. Antes de ella, las computadoras se programaban por cambio de cables o interruptores de una forma difcil o dura (hard = firme, difcil), como se puede observar en la Figura 1 que muestra a Gloria Ruth Gorden (programando) con Ester Gerston (de pie con las instrucciones) ante la ENIAC. Con el modelo de Von Neumann, que almacena en memoria el programa y los datos, se facilit e hizo flexible (soft) la programacin de las mismas (Levine, 1990:7). Desde entonces, en la organizacin bsica de una computadora se reconocen dos partes indispensables: el hardware o componentes fsicos que la forman y el software o componentes no fsicos que guan el funcionamiento del hardware. Hablando del ser humano su hardware es el cuerpo fsico (huesos, rganos, etc.) y para que ste pueda funcionar necesita del software, en este caso lo que le gua para

realizar alguna actividad. Con la computadora es lo mismo, el hardware es lo fsico, lo visible (el monitor, teclado, etc.) y no podra funcionar sin tener necesariamente un software, que para la computadora puede definirse como, el conjunto de instrucciones necesarias para indicar a cada componente fsico cmo funcionar correctamente.

Figura 1 Programando la ENIAC (cortesa de US Army photo)

1.1.2

Qu es el software de sistemas?

Teniendo una idea de lo que es el software es necesario recordar lo que es un sistema para poder definir al software de sistemas. Como sistema se conoce al "conjunto de

elementos que interactan como una unidad orgnica con un objetivo comn". De acuerdo a lo anterior, el hardware y el software se requieren para formar el Sistema de Computacin con el que se puede obtener un trabajo til; sea ste sistema una computadora personal, un sistema centralizado o un sistema distribuido. Qu tan importante es un sistema de computacin? Vea una opinin:
La revolucin de la informacin se basa en el surgimiento de tecnologa para las mquinas de informacin. Estas mquinas de informacin, generalmente referidas como computadoras porque fueron utilizadas inicialmente para los clculos matemticos, han evolucionado a un ritmo casi increble. Las primeras computadoras no mecnicas se basaron en vlvulas electrnicas que fueron desplazadas por transistores, despus por circuitos integrados y actualmente por microprocesadores. Este ltimo paso hace las mquinas de informacin tan baratas que se podrn acoplar a la mayora de las otras mquinas. (Stonier, 2006:32).

La definicin de software dada origina dos preguntas, a las que se puede ya dar una respuesta: Cul es el funcionamiento correcto de un componente fsico? y Cmo determinar las instrucciones necesarias? Depende de la funcin que el componente fsico realice dentro del sistema de computacin y se va adaptando de acuerdo a la tecnologa existente al disearlo. As, se tiene un rango de componentes desde muy elementales (un puerto serie o un USB) hasta componentes con alto grado de complejidad (un microprocesador). La alta necesidad de mejores sistemas de computacin que sean cada vez ms tiles a la sociedad dio origen a dos objetivos o enfoques en el desarrollo de software: el diseado a mejorar las computadoras y el diseado a utilizar las computadoras para aplicaciones especficas; as, de acuerdo con su objetivo de diseo el software se clasifica en: Software de Sistemas y Software de Aplicacin.

El software de sistemas, tambin conocido como software base, es el conjunto de programas que deben estar disponibles, y al mismo tiempo regular los recursos de hardware, para que otros programas sean ejecutados eficientemente. Sus objetivos principales son: dar servicio para la operacin y el mejoramiento del sistema de computacin. El software de aplicacin, son programas que realizan tareas particulares, apoyado en las facilidades que ofrece el software de sistemas; utiliza la computadora como instrumento para realizar tareas especficas administrativas, cientficas, etc. Su objetivo es dar servicio al usuario utilizando la computadora como herramienta. Dos de las principales caractersticas del Software de aplicacin son: es de propsito general y se desarrolla con lenguajes de alto nivel.

1.1.3

Razones para Estudiar el Software de Sistemas

El software de sistemas nace de la necesidad de controlar y mejorar el funcionamiento del hardware; las personas que lo desarrollan para que evolucione y brinde mayores facilidades, son los pioneros que se topan con las dificultades en la utilizacin del hardware y necesitan ir a la vanguardia en el desarrollo de tcnicas que lo permitan. El conocimiento del software de sistemas permite a una persona ser competente para: Poder realizar una explotacin ms eficiente de todos los recursos de la computadora; al conocer cmo funcionan internamente los programas de software de sistemas, sus ventajas, desventajas y diferencias entre ellos. Mejorar la capacidad de programacin para la creacin correcta programas, que tomen en cuenta el hardware de la computadora.

Visualizar el traductor ms adecuado para el desarrollo de una aplicacin al poder distinguir sus ventajas y desventajas. Integrar bibliotecas provenientes de diferentes traductores. Desarrollar la habilidad de trabajar en equipos de programacin, con programacin modular (compilacin independiente), aprovechando las herramientas existentes. Aunque el estudiante no est completamente orientado al desarrollo de este tipo de programas, es conveniente que lo conozca, porque existen muchos aspectos compartidos entre los programadores, diseadores e implantadores de un lenguaje; cada uno de ellos debe tratar de comprender en la medida de lo posible las necesidades y requerimientos de los otros. Hoy en da se utilizan lenguajes de alto nivel para el desarrollo de aplicaciones y sistemas, sin embargo, todos los programas escritos en lenguaje de alto nivel deben traducirse finalmente a lenguaje de mquina para ser ejecutados. Por lo anterior, es muy importante comprender la estructura del software de sistemas, ya que dada su fuerte interaccin con el hardware de la computadora, el desarrollo y aplicacin de ste permite explotar al mximo los recursos del sistema.

1.1.4

Diferencias con el software de aplicacin

En la Figura 2 se muestra una clasificacin general del software de sistemas. Algunas caractersticas propias de los programas del Software de sistemas son: Apoyar la operacin, mantenimiento y mejora de los sistemas de computacin. Tienen una fuerte interaccin e interdependencia con hardware. Apoyar la ejecucin del software de aplicacin.

Son independientes de cualquier rea de aplicacin especfica. Estn enfocados para, y son desarrollados por, personas expertas.

Figura 2 Clasificacin general del software de sistemas Como el ejemplo ms claro de software de sistemas se tiene al sistema operativo; es el encargado de administrar el hardware y el software de la computadora, es decir, controla los archivos, dispositivos y secciones de la memoria principal, adems de decidir quin y de qu manera puede utilizar el sistema (Flynn, 2001:3). Se puede observar que el "sistema operativo de una computadora cumple con todas las caractersticas enlistadas, ya que: interpreta los requerimientos de cada programa que ingresa al sistema, pone a su disposicin los recursos de hardware y software que

necesite para producir los resultados esperados y lo hace coordinando su ejecucin para evitar conflictos con otros programas que se encuentren en ejecucin. Sirve como plataforma para correr programas de aplicacin y proporciona las facilidades para que haya una interfaz amigable con el usuario. Cumpliendo con algunas caractersticas, como software de sistemas, se tienen las herramientas de desarrollo del software como traductores (intrpretes, ensambladores y compiladores), cargadores, ligadores, etc., junto con las que apoyan la administracin del sistema operativo y las redes. Por ejemplo, en el diseo de ensambladores y compiladores, para traducir las instrucciones al cdigo mquina es necesario saber el formato de instrucciones, modos de direccionamiento, el nmero y uso de registros, etc., de la mquina en particular. Adems, tambin forman parte del software de sistemas los programas de apoyo, para la administracin de proyectos de desarrollo del software, como son: los verificadores de cdigo, los manejadores de bibliotecas, los de control de cdigo fuente, etc.

1.2

Revisin del modelo de von Neumann

La mayora de las computadoras, se basan en el modelo de Von Neumann, llamado as por su creador quien propuso el concepto de programa almacenado que fue descrito en el libro First Draft of a report on the EDVAC, en el ao de 1945 (Kempf, 1991). El modelo se refiere a la arquitectura de las computadoras que utilizan el mismo dispositivo de almacenamiento para las instrucciones y los datos, y adems describe la ejecucin secuencial de cada lnea de instruccin.

El modelo, que se muestra en la Figura 3, est formado por dos secciones principales, y por un procedimiento repetitivo de 4 instrucciones, las cuales sirven para llevar a cabo la ejecucin del programa; las dos secciones son: la Unidad Central de Procesamiento central (UCP) y la Unidad de Memoria (UM). Dentro de UCP, mostrada a la izquierda de la Figura 3, se encuentra el bloque de la trayectoria de datos y la unidad de control. La unidad de control, es capaz de realizar diversas operaciones lgicas, tiles para implementar cada instruccin, y almacena la instruccin actual en ejecucin en el Registro de Instruccin. Adems, enva seales a la unidad de trayectoria de datos para intercambiar con la memoria los datos o instrucciones requeridos para realizar las diferentes operaciones.

Figura 3 Modelo de Von Neumann La UM, mostrada a la derecha de la Figura 3, se divide en dos partes; la primera de ellas se utiliza para almacenar los programas y la segunda para almacenar los datos; el programa es el conjunto de instrucciones secuenciales, y los datos contienen los valores de la informacin que est siendo procesada.

Como se mencion, el modelo de Von Neumann necesita de un procedimiento de cuatro instrucciones en un ciclo repetitivo para la ejecucin de un programa: 1. Obtener la Instruccin (fetch). La Unidad Central de Procesamiento (UCP), enva una seal para traer una instruccin de la unidad de memoria. 2. Decodificar la instruccin (decode). Se realiza el proceso de interpretacin de la instruccin binaria. 3. Ejecutar la Instruccin (execute). Ejecuta la operacin correspondiente. 4. Salvar los resultados (save).

1.3
1.3.1

La Organizacin de la Computadora
Introduccin

Debido a la gran dependencia del software de sistemas con el hardware es necesario seleccionar una arquitectura para analizar cada una de las caractersticas en el uso y diseo de intrpretes, ensambladores, compiladores, ligadores y cargadores. Primero se recordarn los conceptos principales en el desarrollo histrico de los procesadores hasta llegar a la complejidad de los actuales; dentro del proceso se recordar la arquitectura de una computadora en general, despus se explicarn los cambios que llevaron a las arquitecturas CISC y RISC. Finalmente se tratar, la arquitectura seleccionada como base de este texto, la arquitectura IA-32 de los microprocesadores de INTEL, utilizada en las computadoras personales (PCs) porque es la ms asequible para los estudiantes y adems se utiliza para aprender a programar en ensamblador en la mayora de los programas de estudios del Sistema Nacional de Educacin Superior Tecnolgica (SNEST).

10

1.3.2

La arquitectura de una computadora

En el modelo de Von Neumann la UCP controla el proceso de ejecucin de los programas del usuario pero Quin programa la UCP? En dnde se guardan las instrucciones que guan su funcionamiento? Aqu necesitamos hablar del software fijo o que no va a cambiar y se inserta en el hardware o que se desarrolla alambrado (hardwired). Actualmente, existen sistemas que son totalmente alambrados

denominados sistemas incrustados o embebidos (del ingls embebed systems); tambin tenemos sistemas cuyo alambrado puede cambiarse gracias a la microprogramacin y a este tipo de software se le denomina firmware (del ingls firm = fijo o firme). Cada componente de hardware se disea tomando en cuenta un protocolo de hardware y uno de software o si se le quiere ver desde la ptica orientada a objetos con una interfaz bien definida. El protocolo de hardware establece todas y cada una de las conexiones con los niveles de voltaje, corriente, etc. necesarios para el correcto funcionamiento. El protocolo de software establece el comportamiento esperado al comunicarse con los otros componentes del sistema de computacin. Ambos deben documentarse ampliamente en las especificaciones del producto. Dnde se debe almacenar el software (las instrucciones) del sistema de computacin va a depender de la frecuencia de utilizacin, el tiempo de respuesta, el costo del hardware, la tecnologa existente, etc. As, se puede observar que la arquitectura de las primeras computadoras era muy simple y con un sistema operativo muy mono debido a que era monoprocesador, monoprogramacin, monousuario, etc. y el procesador se encargaba de todas las tareas, de cmputo y comunicacin, entre los dispositivos. Slo

11

como ilustracin, en la EDVAC para los clculos de balstica el procesador tena: 16 instrucciones; contaba con una memoria de 1024 palabras de 44 bits; la instruccin de suma tardaba 864 microsegundos; sin embargo slo le tomaba 20 segundos resolver problemas que se resolvan manualmente en dos das (Kempf, 1991). Por esta razn la base de la arquitectura del sistema es el procesador y los dems componentes del sistema de computacin se disean para apoyar sus tareas.

1.3.3

Arquitecturas CISC

Los logros alcanzados con las primeras computadoras generaron una competencia vertiginosa para mejorarlas que an continua. Cada nueva aplicacin tena diferentes requerimientos y el desarrollo de los procesadores necesitaba mayor nmero de instrucciones. Algunos proveedores optaron por construir computadoras especializadas mientras que otros buscaban construirlas de propsito ms general. Por ejemplo, una minicomputadora especializada para el monitoreo y control de procesos, que tuve la oportunidad de utilizar en 1978, fue la HP2100A. Era una mquina basada en acumulador; con instrucciones que operaban los datos en memoria y que se ejecutaban en un ciclo de 1.6 microsegundos; tena slo 80 instrucciones de 16 bits; su arquitectura de E/S (I/O en ingls) tena la prioridad de interrupciones alambradas con un vector de interrupciones en memoria que le permita ejecutar la rutina de servicio en microsegundos, mientras otras computadoras de la poca utilizaban el mtodo de consulta (polled en ingls) que requera milisegundos. Se programaba en Ensamblador o con un compilador FORTRAN IV y contaba con una biblioteca de alrededor de 500 subrutinas. Este procesador era la base con la que se

12

poda trabajar: el sistema de tiempo real RTE-II, que era tambin un sistema de tiempo compartido basado en disco, y permita manejar los subsistemas de adquisicin de datos. En las computadoras de propsito general la tendencia adoptada haba sido el incremento, en nmero y complejidad de las instrucciones, denominada CISC (Complex Instruction Set Computer = computadora con conjunto de instrucciones complejas). Entendiendo aqu la complejidad como la capacidad manejar tipos de datos complejos con el fin de reducir el nmero de instrucciones que el programador debe escribir; para ello, cada instruccin compleja puede ejecutar varias operaciones simples como la carga desde memoria, una operacin aritmtica y el almacenamiento en memoria. De acuerdo a ello, las caractersticas de las computadoras CISC pueden resumirse en: 1) nfasis en la utilizacin del hardware para facilitar el desarrollo del software 2) Incluye instrucciones complejas que demandan varios ciclos de reloj 3) Utilizan microprogramacin para implantar las instrucciones complejas 4) Las instrucciones manejan tipos de datos complejos en hardware: manejo de cadenas, nmeros complejos, etc. 5) El tamao del cdigo generado es menor (respecto a las RISC que se vern ms adelante) Con la tcnica de microprogramacin cada instruccin de mquina es interpretada por un microprograma, localizado en una memoria ROM interna del procesador, requiriendo varios ciclos de reloj. En la dcada de los sesentas, era la tcnica ms utilizada y permita desarrollar procesadores con compatibilidad ascendente, sin embargo no

13

permite la ejecucin en ciclos nicos, ya que requiere que el hardware se dedique a su interpretacin dinmica. Lo anterior fue incrementando paulatinamente el costo de las computadoras, para los usuarios que requeran aplicaciones simples, por lo que los proveedores enfocaron sus esfuerzos a lograr que las computadoras, adems de ms rpidas y eficientes, fuesen ms econmicas.

1.3.4

Arquitecturas RISC

En la poca de los 70s se hicieron estudios de seguimiento de la ejecucin de programas, con respecto a la frecuencia de utilizacin de cada instruccin y el tiempo necesario para su ejecucin, encontrando que en la mayora de las aplicaciones: el 80% del tiempo de ejecucin lo utilizaban instrucciones simples como carga, almacenamiento y bifurcacin; las instrucciones complejas se ocupaban poco y existan secuencias de instrucciones simples que obtenan el mismo resultado, pero con tiempos de ejecucin ms cortos; observe los comentarios de esa poca:
las mediciones sobre un compilador de una IBM 360 en particular encontraron que 10 instrucciones representaban el 80% de todas las instrucciones ejecutadas, 16 el 90%, 21 el 95% y 30 el 99% [Alexander75]. Otro estudio de varios programas ensambladores y compiladores concluyeron que muy poca flexibilidad se perdera si el conjunto de instrucciones en la CDC-3600 se redujera a o de las instrucciones existentes [Foster71] Shustek remarcaba para la IBM 370 que como se ha observado muchas veces, muy pocos cdigos de operacin se requieren para la ejecucin del programa. El programa COBOL, por ejemplo, se ejecuta con 84 de las 183 instrucciones disponibles; slo 48 de ellas representan el 99.08% de todas las instrucciones ejecutadas, y 26 representan el 90.28% [Shustek78] (Patterson, 1980)

Definitivamente, era un rea de oportunidad el construir computadoras que lograsen los objetivos de ser: ms rpidas, ms eficientes y ms econmicas. Los principios del diseo, que se buscaba lograr, eran:

14

1) Reducir el conjunto de instrucciones a un conjunto mnimo de instrucciones bsicas simples con las que pudieran implantarse todas las operaciones complejas. Por ello se denominan RISC (Reduced Instruction Set Computer = computadora con conjunto reducido de instrucciones). 2) Las instrucciones simples deberan ejecutarse en un slo ciclo. 3) El ciclo propuesto por Von Neumman se dividi en canales (pipelined) para cada etapa, donde el resultado de una etapa se convierte en la entrada de la siguiente, lo que permite que se pueda tener una operacin traslapada. 4) Se aumenta el nmero de registros del procesador para disminuir los accesos a memoria, porque son ms lentos que los accesos a registros. El comportamiento ideal de la ejecucin en canales tomando el ciclo propuesto por Von Neumann se ilustra en la Figura 4. Se puede observar que la instruccin 1 inicia en el ciclo 1 y termina en el ciclo 5 (sealados por las flechas) utilizando en total 4 ciclos de reloj. Si las etapas no se ejecutaran en canales las instrucciones 2, 3 y 4 tendran que esperar hasta que la anterior instruccin terminara y se requeriran 4*4 = 16 ciclos de reloj. Sin embargo, la ejecucin en canales traslapados permite, como se muestra, que las primeras cuatro instrucciones se ejecuten en slo 8 ciclos de reloj. El principio de la canalizacin puede compararse a una lnea de ensamble en una armadora de automviles. El auto se mueve de una estacin de trabajo a la otra a lo largo de la lnea de ensamble, en cada una se va integrando componente por componente hasta que termina completamente terminado cuando llega al final de la

15

lnea de produccin. Se necesitan horas para producir cada vehculo pero en la ltima estacin se ve salir uno cada pocos minutos. Debe notarse que existen muchos tipos diferentes de canalizaciones, con cantidades que varan entre 2 y 40 pasos, pero el principio de trabajo es el mismo.

Ciclos de reloj 0 Instrucciones en espera 4 3 2 1 Etapas Obtener en Decodificar serie o pipelined Ejecutar Salvar Instrucciones ejecutadas

1 5 4 3 2 1

2 6 5 4 3 2 1

3 7 6 5 4 3 2 1

4 8 7 6 5 4 3 2 1

5 9 8 7 6 5 4 3 2 1

6 10 9 8 7 6 5 4 3 2 1

7 11 10 9 8 7 6 5 4 3 2 1

8 12 11 10 9 8 7 6 5 4 3 2 1

inicio

fin

Figura 4 Ejecucin en canales (pipelined) Estos principios de diseo han llevado desarrollar procesadores RISC (Palet, 1995; Murdocca, 2007) que tienen las siguientes caractersticas comunes: 1) Obtener anticipadamente (prefetch) una cola de instrucciones para que estn disponibles cuando la UCP las necesite. Esto reduce el tiempo de acceso a la memoria.

16

2) Un conjunto de instrucciones Cargar/Almacenar (Load/Store). Son las nicas instrucciones que acceden a memoria; las dems operaciones se llevan a cabo en los registros. Esto permite: simplificar el direccionamiento y acortar los tiempos de ciclo de la UCP; facilitar la gestin de los fallos de pgina en ambientes de memoria virtual; y un elevado nivel de concurrencia al independizar la ejecucin de las operaciones de acceso a memoria. 3) Una arquitectura de tres direcciones. Los procesadores CISC generalmente reutilizan los registros, destruyendo informacin, conforme se ejecutan las operaciones al sobrescribir el registro que contiene un operando para almacenar el resultado. En cambio, los procesadores RISC mantienen los valores, de los dos operandos y el resultado, en registros al terminar la operacin. Esta arquitectura ha permitido mejorar la etapa de optimizacin de los compiladores, los cuales organizan las instrucciones para reutilizar los operandos y los resultados parciales. 4) Instrucciones simples y de formato fijo. Las instrucciones simples reducen el esfuerzo de decodificacin. El formato fijo permite que los campos, del cdigo de operacin (opcode) y de los operandos, se codifiquen en las mismas posiciones facilitando el acceso simultneo a los registros y al cdigo de operacin. 5) Todas las funciones y el control estn "alambrados" para lograr la mxima velocidad y la mayor eficiencia. 6) La ejecucin en canales permite que las diferentes etapas, del ciclo de ejecucin, se puedan realizar ms eficiente y eficazmente.

17

7) La ejecucin en un slo ciclo ayuda a simplificar la gestin de los canales y las interrupciones.

1.3.5
1.3.5.1

Arquitectura INTEL
Introduccin

La familia de procesadores Intel han tenido una evolucin acorde con las necesidades del mercado y son considerados procesadores CISC; sin embargo, los diseadores han adoptado tcnicas tpicas de los procesadores RISC en las nuevas versiones de procesadores a partir del 486, observe la Figura 5, como medio de encontrar nuevas rutas para el incremento de la capacidad de esta familia de procesadores. Mientras tanto los procesadores RISC han tenido que incluir instrucciones complejas (que requieren varios ciclos de reloj para su ejecucin). Lo anterior, permite visualizar que en la comunidad de computacin se aprende rpidamente de los competidores para brindar mejores productos a los compradores. La tabla que se muestra en la Figura 5 se ha elaborado mostrando slo los cambios ms significativos en la evolucin de esta familia de procesadores. As, por ejemplo, en la columna Tamao de Registro se observa el cambio paulatino del tamao de registro; en la columna Nmero de Instrucciones, el incremento paulatino a travs del tiempo. Adems, las abreviaturas utilizadas que permiten interpretar la figura y en general la documentacin de los procesadores INTEL, se muestran en la Tabla 1. Estos microprocesadores han evolucionado desde 1971 hasta la actualidad; en la Figura 6 se muestra el sistema bsico para el 8088 y en la Figura 7 el del 8086,

18

ilustrando los canales de comunicacin: direccionamiento de memoria, el canal de datos y el de control.

Nmero de Ao 1979 Modelo 8088 Instrucciones Aprox. 110 FP=82 registros GP=8 SR=4 FP=8 transistores 29,000 Registro GP=16 SR=16 FP=80

Tamao de Bus 8 Memoria 1 MB Mejora o cambio Segmentacin (4 registros)

1978 1982

8086 286 +7 (80186) +17(80286) FP+1 +73 SR=6 134,000

16 16 MB Modo protegido y gestin de memoria virtual con segmentos Modo virtual 8086 y gestin de memoria virtual paginada 4KB Conductos de cinco etapas. Cach L1 de 8 KB. Coprocesador FP integrado Doble lnea de conductos. Doble cach. Instrucciones SIMD MMX Triple lnea de conductos. Cach L2 de 1 MB Doble cach de 128 KB Instrucciones SIMD SSE XMM=4 42 M MMX=64 XMM=128 64 GB Instrucciones SIMD extendidas (SSE2, SSE3)

1985

386

275,000

GP=32 SR=32

32

4 GB

1989

486

+6

1.2 M

1993

Pentium

+7 MMX=56 +35 +8 (SSE) SSE=70 +8(SSE2) +3(SSE3) SSE2=144 SSE3= 13

MMX=8

3.1 M

1995 1998 2000

Pentium Pro Celeron Pentium 4

5.5 M

2002

Pentium 4 HT

55 M

64 GB

Hyperthreading (dos procesadores lgicos)

Figura 5 Familia de procesadores Intel para PCs de escritorio Abreviatura FP GP SR Del Ingls Floating Point General Purpose Segment Register Descripcin Instrucciones que sirven para manejar punto flotante. Registros de propsito general Registros con la direccin inicial de un segmento.

19

Abreviatura MMX

Del Ingls MultiMedia eXtended

Descripcin Instrucciones para procesamiento de Multimedia

XMM

eXtended MultiMedia

Registros para el procesamiento MultiMedia

SIMD

Single Instruction Multiple Data

Instruccin nica para manejar un conjunto de datos

SSE

Streaming SIMD eXtensions

Extensin para un flujo de instrucciones tipo SIMD

L1

Level 1 cache

El primer nivel de memoria cach; la ms rpida y cercana al procesador

L2

Level 2 cache

El segundo nivel de memoria en la jerarqua de memoria cach

Tabla 1 Abreviaturas de la Figura 5 1.3.5.2 Memoria

El direccionamiento de memoria en los microprocesadores INTEL, puede visualizarse en dos formas: como memoria lgica o como memoria fsica. La memoria lgica es el sistema de memoria desde el punto de vista del programador, mientras que la memoria fsica es la estructura real en el hardware del sistema de memoria. El espacio bsico de la memoria lgica es el mismo en todos los microprocesadores INTEL. Para acceder a la memoria lgica sta se enumera por bytes, por ejemplo para

20

el 8086, 8088, 80186, al tener un canal de direcciones de 20 bits se pueden direccionar 1,048,576 (220)bytes. La memoria lgica empieza en la localidad 00000H y finaliza en la localidad FFFFFH. En la Figura 8 se muestra la evolucin del mapeo de memoria lgica para los microprocesadores de INTEL hasta el 80486. En esta arquitectura una palabra est constituida por 2 bytes (16 bits). Para almacenar una palabra, el byte menos significativo se almacena siempre en la localidad de memoria que tenga el nmero ms bajo y el byte ms significativo, en la ms alta.

A19 Canal de direccin


.

Ao D15 Sistema 8088 Canal de datos (8 bits) D0 Canal de control RD WR

Figura 6 Sistema bsico del 8088

Figura 7 Sistema bsico del 8086

21

Figura 8 Evolucin del direccionamiento de memoria Tambin existen las dobles palabras, equivalentes a 32 bits (4 bytes), que sirven para almacenar el producto despus de una multiplicacin o el dividendo antes de una divisin. Las dobles palabras tambin se utilizan en los 80386 y 80486 para la mayor parte de las operaciones, porque estos microprocesadores funcionan con datos de 32 bits as como con datos de 8 y 16 bits. Las memorias fsicas de los miembros de la familia INTEL difieren en lo ancho. La memoria del 8088 es de 8 bits de ancho, las memorias del 8086, 80186, 80286 y 80386SX tienen 16 bits de ancho, las memorias del 80386DX y 80486 son de 32 bits de ancho. Desde el punto de vista del programador, no hay diferencia en el ancho de la memoria porque la memoria lgica siempre es de 8 bits de ancho.

22

La memoria est organizada en bancos de memoria en todas las versiones del microprocesador, excepto el 8088 que tiene un solo banco de memoria. Un banco de memoria es una seccin de 8 bits de ancho. Los microprocesadores de 16 bits tienen dos bancos de memoria para formar una seccin de memoria de 16 bits de ancho, la cual se direcciona por bytes o por palabras. Los microprocesadores de 32 bits tienen cuatro de bancos memoria, y se les puede direccionar como bytes, palabras o palabras dobles.

1.3.5.3

Registros

Los registros internos de los microprocesadores de INTEL se dividen en grupos de registros de acuerdo a su funcin. En la Tabla 2 se muestran para el procesador 8086. AX BX CX DX SP BP SI DI CS DS SS ES Registros de Segmentos IP (Instruction Pointer) Banderas y apuntador a Instruccin Flags

Propsito Apuntadores general de pila e ndices

Tabla 2 Registros del procesador 8086 1.3.5.4 Registros de propsito general

Los registros de propsito general, pueden ser de 8 bits (AH, AL, BH, BL, CH, CL, DH y DL), 16 bits (AX, BX, CX, DX) y 32 bits (EAX, EBX, ECX y EDX). Los registros de 32 bits slo estn en los microprocesadores a partir del 80386 (Barry, 1994). A continuacin se resumen las funciones de estos registros.

23

AX (Acumulador).- Guarda el resultado (16 bits) despus de una operacin aritmtica o lgica en forma temporal. Tienen la misma funcin los registros AL, AH (8bits) y EAX (32 bits). BX (Base).- Contiene la direccin base (desplazamiento) de los datos que hay en la memoria. Tienen la misma funcin los registros BL, BH y EBX. CX (Contador).- Contiene el conteo de ciertas de ciertas instrucciones para corrimientos de bits y rotaciones del nmero de bytes; se utiliza para la repeticin de operaciones de cadena y como un contador (CX o ECX) en la instruccin LOOP. Tienen la misma funcin los registros CL, CH y ECX. DX (Datos).- Contiene la parte ms significativa de un producto despus de una multiplicacin de 16 o de 32 bits; la parte ms significativa del dividendo antes de la divisin y el nmero de puerto para una instruccin de E/S. Tienen la misma funcin los registros DL, DH y EDX.

1.3.5.5

Registros de apuntadores de pila e ndices

Los registros de apuntadores de pila e ndices pueden ser de 16 bits (SP, BP, DI, SI, IP) y de 32 bits (ESP, EBP, EDI, ESI, EIP). Los registros de 32 bits slo estn en los microprocesadores a partir del 80386 (Barry, 1994). A continuacin se resumen las funciones de estos registros. SP (Apuntador a la pila). Se emplea para acceder a los datos en una pila de memoria tipo LIFO (ltimo en entrar, primero en salir). Esto ocurre cuando se ejecutan las instrucciones insertar y extraer (PUSH y POP); cuando se llama a una rutina (CALL) o

24

cuando se regresa de una rutina (RET) desde un programa principal. Tiene la misma funcin el registro ESP de 32 bits. BP (Apuntador a la base). Es un apuntador de uso general que se utiliza a menudo para acceder a los datos de una matriz en memoria. Tiene la misma funcin el registro EBP de 32 bits. SI (ndice fuente). Se emplea para acceder a los datos en una fuente de tipo cadena o arreglo en forma indirecta. Tiene la misma funcin el registro ESI de 32 bits. DI (ndice destino). Se emplea para enviar datos a un destino de tipo cadena o arreglo en forma indirecta. Tiene la misma funcin el registro EDI de 32 bits. IP (Apuntador de instrucciones). Se utiliza siempre para direccionar la siguiente instruccin que va ejecutar el microprocesador. Tiene la misma funcin el registro EIP de 32 bits.

1.3.5.6

Registros de segmentos

Los registros de segmentos son de 16 bits (CS, DS, ES, SS, FS, GS); los registros FS y GS solo se encuentran en los microprocesadores a partir del 80386. A continuacin se describen las funciones de estos registros. CS (Cdigo).- El segmento de cdigo apunta al segmento de la memoria que contiene las instrucciones del programa actual en ejecucin. El registro de segmento de cdigo define la direccin inicial de la seccin de memoria que tiene el cdigo. En el funcionamiento en modo real, define el inicio de una seccin de memoria de 64K bytes y en el modo protegido selecciona un descriptor que describe la direccin inicial y la

25

longitud de la seccin de memoria que tiene el cdigo. El segmento de cdigo est limitado a 64 K bytes de longitud en el 8088-80286 y a 4G bytes a parir del 80386. DS (Datos). El segmento de datos apunta al segmento de la memoria que contiene los datos del programa actual en ejecucin. Se accede a los datos con un desplazamiento o con el contenido de otros registros que tienen la direccin del desplazamiento. ES (extra o adicional). El segmento extra o adicional de datos lo utilizan algunas instrucciones para la manipulacin de cadenas. SS (Pila). El segmento de pila apunta al segmento de la memoria que contiene la pila actual del programa en ejecucin. La ubicacin del punto inicial de entrada a la pila, se determina por el registro apuntador de la pila. El registro BP tambin direcciona los datos que hay dentro del segmento de pila. FS y GS. Estos registros de segmentos estn disponibles en los microprocesadores a partir del 80386 a fin de contar con dos segmentos adicionales de memoria para la ejecucin de los programas.

1.3.6

Otros cambios en el sistema de computacin

Como ya se ha mencionado el procesador es el componente ms rpido, importante e inicialmente el responsable de gestionar todas las actividades del sistema de computacin. Los primeros sistemas se vieron obligados a trabajar al ritmo del perifrico ms lento; as, si se lea una cinta perforada o se imprima un reporte la UCP, el bus de datos y los dems dispositivos permanecan ociosos esperando hasta completar la tarea. Como ejemplo, en 1970 se tena la impresora DEC modelo LA30

26

que imprima a 30 cps (caracteres por segundo); con una densidad de 10 cpi (caracteres por pulgada) se tienen 80 caracteres por lnea y aproximadamente 60 lneas por pgina significa 4800 caracteres por pgina lo que nos da un tiempo de impresin de 160 segundos! Recordando que a la EDVAC, para los clculos de balstica, slo le tomaba 20 segundos resolver problemas que se resolvan manualmente en dos das se puede apreciar la diferencia o no? Esto llev a los diseadores a trabajar para acoplar las diferentes velocidades de trabajo de acuerdo a la interaccin requerida por cada uno de los componentes del sistema y disear el sistema tomando en cuenta conceptos importantes, de los cuales se mostrarn como muestra tres.

1.3.6.1

El tampn o almacenamiento temporal (del ingls buffer)

Tomando como analoga, la distribucin de artculos para el consumo diario, por ejemplo jabones, que se producen en grandes cantidades; la fabrica lo distribuye a almacenes mayoristas, estos a almacenes minoristas, los cuales a su vez surten a la tienda de la esquina donde cada persona compra su jabn; de esta forma se acoplan la produccin rpida con el consumo lento de bienes. En el sistema de computacin, cuando un dispositivo de salida es lento (por ejemplo, una impresora) se le agrega un tampn para que all se depositen los datos que deba procesar y avise por medio de una interrupcin (como se ver despus) cuando haya terminado su tarea. As el dispositivo rpido (UCP) puede continuar su tarea mientras el dispositivo lento termina de dar salida a los datos recibidos.

27

1.3.6.2

La memoria cach

Un caso diferente se presenta cuando un dispositivo de entrada lento suministra los datos a un dispositivo rpido, por ejemplo, la memoria RAM a la UCP. Se puede utilizar un tampn para preparar, analizando y adquiriendo anticipadamente, los datos que va a requerir; esto lleva a disear un tampn inteligente con un microprocesador dedicado a esta tarea que recibe el nombre de memoria cach.

1.3.6.3

Acceso directo a memoria (del ingls DMA)

Cuando los sistemas de computacin tuvieron que manipular grandes cantidades de datos se observ: que la UCP inverta ms tiempo en el transporte de datos que en las actividades de clculo; que haba datos que se podan transportar en bloque desde el disco duro a la memoria RAM y viceversa. Lo anterior llev a disear controladores inteligentes, ayudantes de la UCP, para realizar esta tarea utilizando coordinadamente con la UCP el bus de datos. De esta forma la UCP se puede dedicar a otras tareas mientras el DMA transporta los datos de/hacia la memoria RAM. Los cambios descritos tienen que ver con la arquitectura del sistema, otros que se tratarn en su momento apropiado tienen que ver con la ejecucin de los programas.

28

También podría gustarte