Arquitectura Alfa
Enviado por senyi0 • 9 de Abril de 2013 • 4.041 Palabras (17 Páginas) • 341 Visitas
1 ARQUITECTURA DEL ALPHA
Para comprender con posterioridad el porqué del funcionamiento del simulador es necesario conocer la
arquitectura del microprocesador en la que nos hemos basado. Ese es el objetivo de este segundo
apartado en el que se explicarán las principales características de la arquitectura del Alpha 21164PC.
En los sucesivos subapartados se explicaran los tipos de datos que soporta el Alpha, el conjunto de
registros que maneja, los formatos de instrucciones, como accede a memoria, su
microarquitectura(lanzamiento de múltiples instrucciones) y PALcode(tratamiento de las excepciones).
A continuación se detallan una serie de puntos que diferencian al Alpha de cualquier otro
microprocesador y que nos servirán a modo de introducción:
Arquitectura real de 64 bits. Todos los registros son de 64 bits y todas las operaciones se
realizan entre registros de 64 bits. No es una arquitectura de 32 bits que más tarde fue ampliada a una
de 64 bits.
Manipulación de bytes y words. La arquitectura del Alpha lee y escribe bytes y words entre
registros y memoria mediante las instrucciones LDBU y STB(bytes) y LDWU y STW(words).
Memoria compartida multiprocesador. La secuencia de interbloqueo básica que se emplea en
un sistema multiprocesador en el que se quiere acceder a la memoria compartida consiste en: cargabloqueo,
modificación y almacenamiento-condicional. Si la secuencia se ejecuta sin interrupciones,
excepciones o una escritura por parte de otro procesador, entonces el almacenamiento condicionado
tiene éxito. En otro caso el almacenamiento fracasa y el programa debe retroceder de forma eventual y
reintentar la secuencia.
PALcode. Es una librería de arquitectura privilegiada, que consiste en un juego de subrutinas que
son específicas de una implementación de sistema operativo Alpha particular. Estas subrutinas
proporcionan al sistema operativo primitivas para facilitar el cambio de contexto, interrupciones,
excepciones y manejo de memoria. PALcode es similar a las librerías de la BIOS que son
proporcionadas en los ordenadores personales. Las subrutinas se pueden invocar por hardware o por
software(mediante las instrucciones CALL_PAL).
Direccionamiento. La unidad básica direccionable es el byte. Las direcciones virtuales son de 64
bits. Una implementación puede soportar un espacio de direcciones virtuales más pequeño. Las
direcciones virtuales vistas por el programa son traducidas a direcciones de memoria física por un
mecanismo de manejo de memoria. Una implementación debe incluir soporte tanto para el
direccionamiento little–endian como para el big-endian.
2. MODELO DE PROGRAMACIÓN
2.1 TIPOS DE DATOS
2.1.1 BYTE
Un byte son 8 bits contiguos de memoria que comienzan en el límite de un byte direccionable. Los bits
son numerados de derecha a izquierda, de 0 a 7, como se muestra en la figura:
Un byte se especifica por su dirección A. Un byte es un valor de 8 bits. El byte esta soportado en el
Alpha sólo por las instrucciones de carga, almacenamiento, extensión de signo, extracción,
enmascaramiento, inserción y zap.
2.1.2 WORD
Una palabra(word) son dos bytes contiguos que empiezan en el límite de un byte arbitrario. Los bits son
numerados de derecha a izquierda, de 0 a 15, como se muestra en la figura:
Una palabra se especifica por su dirección, la dirección del byte que contiene el bit 0.
Una palabra es un valor de 16 bits. La palabra se soporta en la arquitectura Alpha sólo por las
instrucciones de carga, almacenamiento, extensión de signo, extracción, enmascaramiento e inserción.
2.1.3 LONGWORD
Una palabra larga(longword) son cuatro bytes contiguos que comienzan en el límite de un byte
arbitrario. Los bits se numeran de derecha a izquierda, de 0 a 31, como se muestra en la figura:
Una longword se especifica por su dirección A, la dirección del byte que contiene el bit 0. Una longword
es un valor de 32 bits.
Cuando se interpreta de forma aritmética, una longword es un entero en complemento a dos en el cual
el bit más significativo es el 0 y el 31 es el de signo. La palabra larga sólo es soportada en el Alpha por
las instrucciones de carga y almacenamiento con extensión de signo y por las aritméticas que operan
sobre longwords.
2.1.4 QUADWORD
Una cuádruple palabra(quadword) son ocho bytes contiguos que comienzan en el límite de un byte
arbitrario. Los bits son numerados de derecha a izquierda, de 0 a 63, como se muestra en la figura:
Una quadword se especifica por su dirección A, la dirección del byte que contiene el bit 0. Es un valor
de 64 bits. Cuando se interpreta aritméticamente, una quadword puede ser un entero en complemento
a dos, siendo el bit 0 el menos significativo y el 63 el de signo, o como un entero sin signo, en cuyo
caso el bit más significativo sería el 63.
2.1.5 FORMATOS VAX EN COMA FLOTANTE
Los números VAX en coma flotante se almacenan en memoria según un juego de formatos y en los
registros de coma flotante según un segundo juego de formatos. Las instrucciones de carga y
almacenamiento en coma flotante pasan de un formato a otro realojando los bits, no se realiza ningún
tipo de redondeo ni de chequeo de rango por dichas instrucciones.
F_floating. Son cuatro bytes contiguos en memoria. Los bits se etiquetan del 0 al 31 como se ve
en la figura:
En un registro flotante de 64 bits se justifica a la izquierda como se aprecia en la figura:
G_floating. Ocupa ocho bytes contiguos de memoria que comienzan en el límite de un byte
arbitrario. Los bits se etiquetan de 0 a 63 como se ve en la figura:
En un registro de coma flotante se almacena según el siguiente formato:
D_floating. Ocupa ocho bytes contiguos de memoria, ver figura:
En un registro de coma flotante se almacena según muestra la figura:
2.1.6 FORMATOS IEEE EN COMA FLOTANTE
El estándar IEEE para aritmética binaria en coma flotante, ANSI/IEEE 754-1985, define cuatro formatos
en coma flotante en dos grupos, básico y extendido, cada uno tiene dos anchos, simple y doble. La
arquitectura del Alpha soporta los formatos simple y doble básicos, con el formato básico doble como si
fuera el formato extendido simple.
S_Floating. Un dato IEEE en simple precisión, o S_Floating, ocupa cuatro bytes contiguos de
memoria empezando
...