30.01.2015 Views

Ensamblador Solaris sobre SPARC - Ladyada.usach.cl

Ensamblador Solaris sobre SPARC - Ladyada.usach.cl

Ensamblador Solaris sobre SPARC - Ladyada.usach.cl

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

1<br />

<strong>Ensamblador</strong> <strong>Solaris</strong> <strong>sobre</strong> <strong>SPARC</strong><br />

Danilo Riffo C. – danriffo@gmail.com<br />

Sebastián Romero S. – sebaslac1@gmail.com<br />

<br />

Resumen –desde la creación del primer chip hasta los mas<br />

actuales se ha necesitado de programarlos desde su nivel mas<br />

bajo, de ahí es el hecho el que exista Assembler, en este articulo se<br />

hablara del procesador <strong>SPARC</strong>, sistema Operativo <strong>Solaris</strong>,<br />

NetBeans, y su programación de <strong>SPARC</strong> en base Assembler.<br />

Palabras <strong>cl</strong>ave –Assembler, Sistema Operativo, computadores,<br />

programación, Procesadores, Chips.<br />

I. NOMENCLATURA<br />

<strong>SPARC</strong>: Scalable Processor ARChitecture.<br />

NetBeans: procesador y compilador de algoritmos versátil,<br />

usa java, C/C++, ASM, etc.<br />

D<br />

II. INTRODUCTION<br />

ecadas atrás cuando se creo el primer chip, surgió la<br />

necesidad de darle instrucciones, esas pequeñas<br />

instrucciones se ejecutaban mediante pulsos eléctricos, mas<br />

adelante con la tecnología un poco mas avanzada se pudo<br />

programar mediante una consola, pero este dispositivo no se<br />

podía volver a programar, después surgió la problemática de<br />

comandar todos los otros dispositivos con un solo dispositivo<br />

regulador, de ahí comienza el concepto de CPU, después<br />

surgió la problemática que varios ensambladores de placas<br />

tenían diferentes chips para cada dispositivo y surgió la<br />

necesidad de hacerla reprogramable, de ahí que se empezó a<br />

usar lenguaje de bajo nivel para poder programarlos, después<br />

se implemento assembler para procesadores x86 y RISC, el<br />

procesador en cuestión llamado <strong>SPARC</strong> esta basado en RISC,<br />

el cual tiene una alta escalabilidad.<br />

III. DESCRIPCIÓN DEL PROBLEMA<br />

Como problemas se plantean 3 interrogantes las cuales se<br />

desarrollaran en lo siguiente:<br />

A. Como ensamblar en <strong>Solaris</strong> <strong>SPARC</strong><br />

Para poder ensamblar en el sistema operativo <strong>Solaris</strong> y en el<br />

Procesador <strong>SPARC</strong> ambos propiedades de Sun Microsystems,<br />

es necesario la herramienta de programación NetBeans en su<br />

ultima versión ( versión 6.7), para programar en assembler es<br />

necesario hacer el programa en C, después de tenerlo digitado<br />

con el comando –S se puede transformar a lenguaje assembler.<br />

B. Compilador para ensamblador en <strong>Solaris</strong> <strong>SPARC</strong><br />

Como compilador y ensamblador o seudo-ensamblador se<br />

usa NetBeans en su versión más reciente (Versión 6.7), este<br />

funciona como compilador y ensamblador como se dijo<br />

anteriormente.<br />

NetBeans tiene la ventaja de que se puede programar en<br />

distintos lenguajes, ya sea Java, PHP, Python, Ruby, CSS,<br />

etcétera haciéndolo un IDE poderoso y versátil,<br />

C. Similitudes y diferencias con X86<br />

En similitudes y diferencias que existen entre estas 2<br />

familias de procesadores, es que, por un lado, <strong>SPARC</strong> es<br />

escalable, ya que en modelos modernos se subdividen rutinas<br />

entre sus nú<strong>cl</strong>eos haciéndolo mucho mas rendidor que sus<br />

rivales x86, lo cual x86 no puede hacer de forma optima, esto<br />

se llama segmentación.<br />

Su similitud en trabajar en base Assembler, ya que se eligió<br />

en gran parte mantener las mismas rutinas de programación<br />

que en x86, para no hacer el trabajo de ensamblar en sus<br />

procesadores tan engorrosos y se pudiera tomar una base<br />

conocida.<br />

IV.<br />

OBJETIVO.<br />

A. Resolver la problemática del <strong>Ensamblador</strong> <strong>sobre</strong> <strong>Solaris</strong><br />

<strong>SPARC</strong>.<br />

Explicar a la persona que no conoce acerca ensamblador<br />

<strong>sobre</strong> <strong>Solaris</strong> en <strong>SPARC</strong> entregándole conocimiento acerca de<br />

la plataforma y como ensamblar.<br />

B. Familiarizar <strong>Solaris</strong>.<br />

Entregar el conocimiento necesario para que la persona<br />

pueda comprender el sistema operativo, sus orígenes y su<br />

finalidad.<br />

C. Describir la tecnología <strong>SPARC</strong>.<br />

Describir la complejidad del procesadores en si explicar su<br />

arquitectura, su forma de funcionamiento, sus modelos mas<br />

famosos, además de las ventajas que tiene este <strong>sobre</strong> los<br />

procesadores convencionales basados en x86.


2<br />

V. SOLARIS<br />

5.1 Logo <strong>Solaris</strong><br />

La historia comienza en Silicon Valley en febrero de 1982<br />

fecha en la que nace la empresa Sun Microsystems fundada<br />

por el alemán Andy Bechtolsheim y los norteamericanos<br />

Vinod Khosla, Bill Joy, y Scott McNealy.<br />

En el mismo año de su fundación Sun comercializa su<br />

primera estación y fue bautizada como Sun-1, dicha máquina<br />

estaba gobernada por un microprocesador Motorola a 6 MHz,<br />

tenía un 1 Mbyte de RAM y un disco duro de 60 Mbyte. El<br />

sistema operativo al mando era el SunOS 1 basado en BSD 4.1<br />

(1981) incorporando TCP/IP.<br />

En el año 1984 Sun desarrolla el Sistema de archivos de red<br />

NFS (Network File System) que permite a cualquier máquina<br />

conectada a la red acceder a discos remotos como si estuvieran<br />

en la máquina local. La tecnología NFS fue licenciada<br />

gratuitamente para la industria estableciendo un nuevo<br />

estándar que incorporan en su nueva versión de sistema SunOS<br />

2 en el año 1985.<br />

Un año más tarde con la salida de la versión de SunOS 3<br />

(1986) se introducen utilidades de System V y coincide en el<br />

tiempo con el lanzamiento de la estación Sun-3 que todavía<br />

continúa basándose en un micro Motorola a 25 MHz y 32<br />

Mbyte de RAM.<br />

Ya en 1987 se produce un cambio importante en con el<br />

lanzamiento la serie Sun-4 que adopta por primera vez la<br />

arquitectura <strong>SPARC</strong> V7 RISC.<br />

SunOS 4 (1989) es la primera versión del sistema operativo<br />

que soporta la nueva arquitectura Sparc de la serie Sun-4 que<br />

continua basada en BSD 4.3 pero con cambios hacia la<br />

arquitectura System V. Con la versión SunOS 4.1.1 finaliza<br />

una primera etapa del sistema operativo a la que Sun<br />

Microsystem denomina <strong>Solaris</strong> 1 y utilizara este nombre para<br />

referirse al sistema SunOS desde 1982 a 1990.<br />

A continuación veremos la evolución <strong>Solaris</strong> 1 SunOS de<br />

1982 a 1989:<br />

1982 Febrero SunOS 1.0 basada en BSD<br />

1984 Abril SunOS 1.1 basada en BSD<br />

1985 Enero SunOS 1.2 basada en BSD<br />

1985 Mayo SunOS 2.0 basada en BSD<br />

1986 Febrero SunOS 3.0 Introduce utilidades de System V<br />

1986 Sep SunOS 3.2 Introduce utilidades de System V<br />

1988 SunOS 3.5 Introduce utilidades de System V<br />

1989 SunOS 4.0 Soporte microprocesador Sparc/<br />

arquitectura System V STREAMS I/O<br />

1990 Noviembre <strong>Solaris</strong> 1.0 (SunOS 4.1.1)<br />

<strong>Solaris</strong> 2 (1990-2006)<br />

En Julio de 1991 se produce el lanzamiento de SunOS 5.0<br />

que incorpora importantes cambios:<br />

· Pasa a denominarse <strong>Solaris</strong> 2<br />

· Se basa en System V Release 4<br />

· Se introduce CDE (Common Desktop Environment)<br />

como escritorio estándar aunque conserva OpenWindows.<br />

· Soporte de Multiprocesamiento Simétrico (SMP) que<br />

posibilita el uso de múltiples CPUs.<br />

Desde 1991 se produce un rápido avance de versiones de<br />

<strong>Solaris</strong> hasta la actual <strong>Solaris</strong> 10, la siguiente lista es un breve<br />

resumen de la evolución de <strong>Solaris</strong> y las tecnologías que al<br />

incorporado al sistema:<br />

Versión de <strong>Solaris</strong> Año Tecnologías<br />

<strong>Solaris</strong> 1.0 (SunOS 4.1.1) 1990<br />

<strong>Solaris</strong> 2.3 (SunOS 5.3) 1993 NFS V3 Y CDE<br />

<strong>Solaris</strong> 2.4 (SunOS 5.4) 1994 x86 platform<br />

<strong>Solaris</strong> 2.6 (SunOS 5.6) 1998 Kerberos, PAM,<br />

TrueType 64 bits para plataforma<br />

<strong>Solaris</strong> 7(SunOS 5.7) 1998 Ultra<strong>SPARC</strong><br />

<strong>Solaris</strong> 8 beta 1999 IPv6 support<br />

<strong>Solaris</strong> 9 <strong>SPARC</strong> 2002 <strong>Solaris</strong> Volume Manager<br />

<strong>Solaris</strong> 10 2004 Java Desktop<br />

<strong>Solaris</strong> 10 2006 Java Desktop<br />

<strong>Solaris</strong> Containers<br />

Service Management Facility (SMF)<br />

NFSv4 /ZFS<br />

Durante este tiempo Sun ha desarrollado nuevas tecnologías<br />

para mantener su sistema operativo entre los más potentes y<br />

fiables del mercado. Sun Microsystems también ha integrado<br />

en <strong>Solaris</strong> tecnologías de Software Libre y como ejemplo de<br />

esta sinergia tenemos el escritorio Gnome.<br />

A. Open<strong>Solaris</strong><br />

Open<strong>Solaris</strong> nace en Junio de 2005 y es el resultado de la<br />

liberación de la mayor parte del código fuente de <strong>Solaris</strong><br />

pasando a ser un proyecto de software libre. Desde este nuevo<br />

enfoque nacen nuevas distribuciones que aportan mejoras al<br />

sistema además de enriquecerlas con más software.<br />

B. Distribuciones Open<strong>Solaris</strong><br />

Open<strong>Solaris</strong>.org es el punto de encuentro donde se pueden<br />

ver los proyectos abiertos ya sean para crear nuevas<br />

distribuciones o grupos de trabajo que aportan nuevas<br />

funcionalidades, mejoras, software etc.<br />

De las diferentes aportaciones realizadas por comunidades<br />

de usuarios o desarrolladores nacen las siguientes<br />

distribuciones:


3<br />

<strong>Solaris</strong> 10 y <strong>Solaris</strong> 10 Express<br />

Es la versión oficial de Sun Microsystems disponible para<br />

arquitectura <strong>SPARC</strong> y x86. Es estable y robusta estando<br />

diseñada para entornos de producción donde se necesita<br />

estabilidad. Es gratuita y podemos descargarla del sitio web<br />

oficial de Sun.<br />

<strong>Solaris</strong> 10 Express contiene todas las nuevas<br />

incorporaciones de funcionalidades y software que darán lugar<br />

a la próxima versión estable de <strong>Solaris</strong> por lo tanto está<br />

recomendado para entornos de desarrollo o preproducción.<br />

Es un sistema certificado oficialmente como versión de<br />

Unix.<br />

VI. <strong>SPARC</strong><br />

<strong>SPARC</strong> (del inglés Scalable Processor ARChitecture) es<br />

una arquitectura RISC big-endian. Es decir, una arquitectura<br />

con un conjunto reducido de instrucciones.<br />

Fue originalmente diseñada por Sun Microsystems y<br />

dirigido por el ingeniero Kaa en 1985, se basa en los diseños<br />

RISC I y II de la Universidad de California en Berkeley que<br />

fueron definidos entre los años 1980 y 1982.<br />

La empresa Sun Microsystems diseñó esta arquitectura y la<br />

licenció a otros fabricantes como Texas Instruments, Cypress<br />

Semiconductor, Fujitsu, LSI Logic entre otros.<br />

<strong>SPARC</strong> es la primera arquitectura RISC abierta y como tal,<br />

las especificaciones de diseño están publicadas, así otros<br />

fabricantes de microprocesadores pueden desarrollar su propio<br />

diseño.<br />

Una de las ideas innovadoras de esta arquitectura es la<br />

ventana de registros que permite hacer fácilmente<br />

compiladores de alto rendimiento y una significativa reducción<br />

de memoria en las instrucciones load/store en relación con<br />

otras arquitecturas RISC. Las ventajas se aprecian <strong>sobre</strong> todo<br />

en programas grandes.<br />

La cpu <strong>SPARC</strong> esta compuesta de una unidad entera, UI<br />

(Integer Unit) que procesa la ejecución básica y una FPU<br />

(Floating-Point Unit) que ejecuta las operaciones y cálculos<br />

de reales. La IU y la FPU pueden o no estar integradas en el<br />

mismo chip.<br />

Aunque no es una parte formal de la arquitectura, las<br />

computadoras basadas en sistemas <strong>SPARC</strong> de Sun<br />

Microsystems tienen una unidad de manejo de memoria<br />

(MMU) y un gran caché de direcciones virtuales (para<br />

instrucciones y datos) que están dispuestos periféricamente<br />

<strong>sobre</strong> un bus de datos y direcciones de 32 bits.<br />

6.1 Procesador <strong>SPARC</strong><br />

6.2 Procesador Ultra <strong>SPARC</strong>.<br />

A. Principales características<br />

- Su característica distintiva es utilizar ventanas de registros.<br />

- 32 registros de enteros de 32 bits.<br />

- 16 registros de punto flotante de 64 bits (para el caso de<br />

doble precisión) que se pueden utilizar como 32 registros de<br />

32 bits (para precisión simple).<br />

- Modos de direccionamiento:<br />

· Inmediato, (constantes de 13 bits).<br />

· Directo, (offset de 13 bits).<br />

· Indirecto, (registro + offset de 13 bits o registro + registro).<br />

- Utiliza instrucciones retardadas (saltos, load y store).<br />

- Manejo de memoria:<br />

· Espacio virtual de 4 Gigabytes.<br />

· Unidad de manejo de memoria (MMU) que trabaja con<br />

páginas de tamaño configurable.


4<br />

B. Categorías de Instrucciones<br />

La arquitectura <strong>SPARC</strong> tiene cerca de 50 instrucciones<br />

enteras, unas pocas más que el anterior diseño RISC, pero<br />

menos de la mitad del número de instrucciones enteras del<br />

6800 de Motorola.<br />

Las instrucciones de <strong>SPARC</strong> se pueden <strong>cl</strong>asificar en cinco<br />

categorías:<br />

· LOAD y STORE (La única manera de acceder a la<br />

memoria). Estas instrucciones usan dos registros o un registro<br />

y una constante para calcular la dirección de memoria a<br />

direccionar.<br />

· Instrucciones Aritméticas/Lógicas/Shift. Ejecutan<br />

operaciones aritméticas, lógicas y de desplazamiento de bits.<br />

Estas instrucciones calculan el resultado si es una función de 2<br />

operándos y guardan el resultado en un registro.<br />

· Operaciones del Coprocesador. La IU extrae las<br />

operaciones de punto flotante desde las instrucciones del bus<br />

de datos y los coloca en la cola para la FPU. La FPU ejecuta<br />

los cálculos de punto flotante con un número fijo en unidad<br />

aritmética de punto flotante, (el número es dependiente de la<br />

aplicación). Las operaciones de punto flotante son ejecutadas<br />

concurrentemente con las instrucciones de la IU y con otras<br />

operaciones de punto flotante cuando es necesario. La<br />

arquitectura <strong>SPARC</strong> también especifica una interfaz para la<br />

conexión de un coprocesador adicional.<br />

· Instrucciones de Control de Transferencia. Estas in<strong>cl</strong>uyen<br />

jumps, calls, traps y branches. El control de transferencia es<br />

retardado usualmente hasta después de la ejecución de la<br />

próxima instrucción, así el pipeline no es vaciado porque<br />

ocurre un control de tiempo. De este modo, los compiladores<br />

pueden ser optimizados por ramas retardadas.<br />

· Instrucciones de control de registros Read/Write. Estas<br />

instrucciones se in<strong>cl</strong>uyen para leer y grabar el contenido de<br />

varios registros de control. Generalmente la fuente o destino<br />

está implícito en la instrucción.<br />

VII. <strong>SPARC</strong> VS X86<br />

Como comparativa entre estos 2 tipos de familias de<br />

procesadores podemos tener varias cosas en cuenta, apartando<br />

de lado su diferente arquitectura.<br />

Primeramente la similitud en ensamblar en ambos<br />

procesadores, a primera vista podemos ver que su forma de<br />

ensamblar y su línea de código es sumamente parecida a el<br />

tipo de código que corre <strong>sobre</strong> un x86, tan solo difiere en<br />

casos puntuales, pero en forma medular es prácticamente igual<br />

su código que un x86.<br />

Como Pro que tiene <strong>SPARC</strong> es su alta escalabilidad y su<br />

aprovechamiento de segmentación de datos que se reparten<br />

entre los sub-procesadores que se encuentran dentro de el<br />

(actualmente un ULTRA-<strong>SPARC</strong> contiene 4 procesadores con<br />

2 threads cada uno, eso da un total de 8 nú<strong>cl</strong>eos, 4 Físicos y 4<br />

virtuales). Optimizando la carga de trabajo, no por nada son<br />

los procesadores preferidos por empresas que necesita gastar<br />

poco dinero y tener potencia suficiente para mover gran<br />

cantidad de datos.<br />

Y su diferenciación mas notoria es el no pago de licencia<br />

<strong>sobre</strong> su arquitectura, ya que su ingeniería es totalmente<br />

abierta, esto quiere decir que cada empresa de<br />

semiconductores puede hacer su propia versión basándose en<br />

<strong>SPARC</strong>, dando una gran probabilidad de ir mejorando errores<br />

y mejorar cada vez más su capacidad, son los opensource de<br />

los procesadores.<br />

VIII. ENSAMBLADOR SOLARIS SOBRE <strong>SPARC</strong><br />

C. Roadmap <strong>SPARC</strong><br />

8.1 Logo NetBeans<br />

1.3 avance y futuras arquitecturas basadas en <strong>SPARC</strong><br />

NetBeans se refiere a una plataforma para el desarrollo de<br />

aplicaciones de escritorio usando Java y a un entorno de<br />

desarrollo integrado (IDE) desarrollado usando la Plataforma<br />

NetBeans.<br />

La plataforma NetBeans permite que las aplicaciones sean<br />

desarrolladas a partir de un conjunto de componentes de<br />

software llamados módulos. Un módulo es un archivo Java que<br />

contiene <strong>cl</strong>ases de java escritas para interactuar con las APIs<br />

de NetBeans y un archivo especial (manifest file) que lo<br />

identifica como módulo. Las aplicaciones construidas a partir<br />

de módulos pueden ser extendidas agregándole nuevos<br />

módulos. Debido a que los módulos pueden ser desarrollados<br />

independientemente, las aplicaciones basadas en la plataforma<br />

NetBeans pueden ser extendidas fácilmente por otros<br />

desarrolladores de software.


5<br />

NetBeans es un proyecto de código abierto de gran éxito<br />

con una gran base de usuarios, una comunidad en constante<br />

crecimiento, y con cerca de 100 socios en todo el mundo. Sun<br />

MicroSystems fundó el proyecto de código abierto NetBeans<br />

en junio 2000 y continúa siendo el patrocinador principal de<br />

los proyectos.<br />

Lenguajes Soportados por NetBeans:<br />

- C/C++.<br />

- Python.<br />

- Ruby.<br />

- PHP.<br />

- AJAX<br />

- Java<br />

IX. EJEMPLOS DE PROGRAMACIÓN ASM SOBRE SOLARIS-<br />

<strong>SPARC</strong><br />

.seg "data1"<br />

.align 4<br />

L16:<br />

.ascii "hello world\n"<br />

.seg "text"<br />

.proc 04<br />

.global _main<br />

.align 4<br />

_main:<br />

!#PROLOGUE# 0<br />

sethi %hi(LF12),%g1<br />

add %g1,%lo(LF12),%g1<br />

save %sp,%g1,%sp<br />

!#PROLOGUE# 1<br />

L14:<br />

.seg "text"<br />

set L16,%o0<br />

call _printf,1<br />

nop<br />

LE12:<br />

ret<br />

restore<br />

.optim "-O~Q~R~S"<br />

LF12 = -96<br />

LP12 = 96<br />

LST12 = 96<br />

LT12 = 96<br />

X. CONCLUSIONES Y AGRADECIMIENTOS<br />

Con<strong>cl</strong>uyendo con el informe podemos darnos cuenta de lo<br />

poderosa que son estas herramientas, vienen potenciadas para<br />

sacarle su máximo provecho además son amigables con el<br />

programador, no poniéndolo en aprietos <strong>sobre</strong> como debería<br />

programar en una nueva plataforma.<br />

Agradecemos al equipo de Sun Microsystems por su<br />

material que nos fue de bastante ayuda a las personas que nos<br />

apoyaron y a nuestros compañeros.<br />

XI. REFERENCIAS<br />

http://developers.sun.com/solaris/arti<strong>cl</strong>es/x86_assembly_lang.<br />

html<br />

http://docs.sun.com/app/docs/doc/817-5477/eqbuia=view<br />

http://en.wikibooks.org/wiki/<strong>SPARC</strong>_Assembly<br />

http://docs.sun.com/app/docs/doc/816-1681<br />

http://www.cs.<strong>cl</strong>emson.edu/~mark/sparc_assembly.html<br />

http://es.wikipedia.org/wiki/Sun_<strong>SPARC</strong><br />

http://www.dcc.uchile.<strong>cl</strong>/~rbaeza/cursos/proyarq/maraya/nod<br />

e9.html<br />

http://www.geocities.com/fuentes_d/sparc.html<br />

http://www.content4reprint.com/view/spanish-83913.htm<br />

http://sistemasoperativossun.wikiole.com/HISTORIA+Y+EV<br />

OLUCION+DEL+SISTEMA+OPERATIVO+SOLARIS<br />

http://es.wikipedia.org/wiki/<strong>Solaris</strong>_(sistema_operativo)<br />

http://www.content4reprint.com/view/spanish-83841.htm<br />

http://developers.sun.com<br />

XII. BIOGRAFIA<br />

Andreas von Bechtolsheim<br />

(nacido en Alemania en 1955)<br />

es uno de los fundadores de<br />

Sun Microsystems junto a<br />

Vinod Khosla, Hill Joy, y Scott<br />

McNeally.<br />

Bechtolsheim se graduó en<br />

la Universidad Técnica de Múnich (Alemania) y recibió su<br />

posgrado en ingeniería electrónica en la Universidad Carnegie<br />

Mellon.<br />

En la Universidad de Stanford, Bechtolsheim diseñó una<br />

computadora de gran alcance que llamó workstation (estación<br />

de trabajo en inglés) con establecimiento de red incorporado<br />

que ejecutaba el sistema operativo Unix. Desarrolló esta<br />

estación de trabajo harto de esperar los tiempos de proceso del<br />

sistema central de la universidad.<br />

Khosla le ayudó, con intención de crear un negocio que se<br />

dedicara a vender esa estación de trabajo. También se unió a<br />

McNealy que estaba en otra compañía tras terminar su MBA<br />

en la Stanford Graduate School of Business en 1980.<br />

Llamaron a la compañía Sun como acrónimo de "Stanford<br />

University Network." Bechtolsheim dejó Stanford, donde se<br />

había apuntado en en un programa de Doctor en Filosofía, para<br />

fundar la compañía.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!