Fundamentos de los Sistemas Telemáticos.pdf

42
SW HW Fundamentos de los Sistemas Telemáticos Tema 3: Estructura y funcionamiento de procesadores Tema 3: Estructura y funcionamiento de procesadores 1 © DIT-UPM, 2012. Algunos derechos reservados. Este material se distribuye bajo licencia Creative Commons disponible en: http://creativecommons.org/licenses/by-sa/3.0/deed.es Tema 3: Estructura y funcionamiento de procesadores 2

Transcript of Fundamentos de los Sistemas Telemáticos.pdf

Page 1: Fundamentos de los Sistemas Telemáticos.pdf

SW

HW

Fundamentos de los Sistemas TelemáticosTema 3: Estructura y funcionamiento de procesadores

Tema 3: Estructura y funcionamiento de procesadores 1

©

DIT-UPM, 2012. Algunos derechos reservados.Este material se distribuye bajo licencia Creative Commons disponible en:http://creativecommons.org/licenses/by-sa/3.0/deed.es

Tema 3: Estructura y funcionamiento de procesadores 2

Page 2: Fundamentos de los Sistemas Telemáticos.pdf

Estructura y funcionamiento de procesadores

Conceptos previos

La «máquina de von Neumann»

Evolución de los procesadores hardware

El procesador BRM

Procesadores software

Lenguajes de marcas y de script

Material de estudio y trabajo:Documento «Estructura y funcionamiento de procesadores» en el MoodleBibliografía citada en ese documentoEjercicios y prácticas de laboratorio propuestos

Tema 3: Estructura y funcionamiento de procesadores 3

Estructura y funcionamiento de procesadores

Conceptos previosProcesadores hardware y softwareLenguajesSistemas complejos, abstracciones y modelos

La «máquina de von Neumann»

Evolución de los procesadores hardware

El procesador BRM

Procesadores software

Lenguajes de marcas y de script

Page 3: Fundamentos de los Sistemas Telemáticos.pdf

Procesadores hardware y software

Procesador hardwareSistema físico que ejecuta programas previamente almacenados en unamemoria de acceso aleatorio

Procesador sotfwarePrograma que, al ejecutarse en otro procesador (hardware o software),transforma unos datos de entrada en unos datos de salida

SW

HW

Tema 3: Estructura y funcionamiento de procesadores 4

Lenguaje de máquina y lenguaje ensamblador

Lenguaje de máquina:Lenguaje binario que «entiende» el procesador hardware.Está formado por el repertorio de instrucciones (conjunto de códigos de operacióny de formatos de las instrucciones) y los convenios de representación de los datos.

Lenguaje ensamblador (assembly language):Representación simbólica, inteligible para las personas, del lenguaje de máquina.

Ejemplo:Supongamos que «11100000100000001100000000000001» (0xE080C001) esuna instrucción de máquina que le dice al procesador:«Suma los contenidos de los registros R0 y R1 deja el resultado en el R12».En lenguaje ensamblador podría ser: «add r12,r0,r1».

Programa ensamblador (assembler):Traduce programas escritos en lenguaje ensamblador a lenguaje de máquina.Es un procesador software.

Tema 3: Estructura y funcionamiento de procesadores 5

Page 4: Fundamentos de los Sistemas Telemáticos.pdf

Tipos de lenguajes y de procesadores

Nivel Tipos delenguajes

Procesamiento de losprogramas

Características y ejemplos

Bajo

De máquina(binario)

Los interpreta unprocesador hardware

Ligados a la arquitecturade un procesador hardwareGAS/ARM, x86, MIPS...MASM/x86

Ensambladores Se traducen con unprograma ensamblador

«Compilados» Se traducen con unprograma compilador

Independientesdel procesador hardwareCompilados: C, Java...Interpretados: Ruby, Phyton...

Alto

«Interpretados» Se interpretan con unprograma intérprete

De script Se interpretan con unprograma intérprete

Tipo especial de interpretados:controlan a otros programasbash, JavaScript...

De marcas Se interpretan con unprograma intérprete

Tipo especial de interpretados:marcas en un documento sobresu estructura o su presentaciónHTML, XML...

Tema 3: Estructura y funcionamiento de procesadores 6

Sistemas complejos y abstracciones

Los procesadores (hw y sw) son sistemas complejos:sólo pueden describirse haciendo abstracción de detalles.

abstracción(sistema){ modelo del sistema

Dependiendo de qué es lo que interesa estudiar del sistema haydistintos niveles de abstracción y distintos tipos de modelos.

En este Tema estudiaremos1 modelos de procesadores hardware

en el nivel de «máquina convencional»y

2 modelos de procesadores software(nivel de «máquina simbólica»).

Tema 3: Estructura y funcionamiento de procesadores 7

Page 5: Fundamentos de los Sistemas Telemáticos.pdf

Niveles de abstracciónEn procesadores hardware:

Nivel de circuito eléctrico: transistores, resistencias, voltajes, corrientes...(«electrónica analógica»).¡Pero un microprocesador puede contener miles de millones de transistores!Nivel de circuito lógico: puertas lógicas, operaciones («0 OR 1 = 1», etc.)(«electrónica digital»).Abstracción de los circuitos internos de las puertas, de los voltajes...¡Pero un microprocesador puede contener decenas de millones de puertas!

Nivel de máquina convencional: Buses, unidades aritmética, lógica y dedesplazamiento, registros, unidad de control, repertorio de instrucciones...Abstracción de las puertas que componen las unidades.Modelos engorrosos por el lenguaje binario.

Niveles «superiores» (hw+sw):Nivel de máquina operativa: instrucciones de máquina más llamadas alsistema. Abstracción de gestión de procesos, de almacenamiento...Nivel de máquina simbólica: en lugar de instrucciones de máquina, suexpresión en lenguaje ensamblador (o en un lenguaje de alto nivel).Abstracción de «ceros» y «unos».

Tema 3: Estructura y funcionamiento de procesadores 8

ModelosR.A.E.: 11 acepciones de «modelo»:1. m. Arquetipo o punto de referencia para imitarlo o reproducirlo....4. m. Esquema teórico [...] de un sistema o de una realidad compleja

[...] que se elabora para facilitar su comprensión y el estudio desu comportamiento.

...5. m. Objeto, aparato, construcción, etc., o conjunto de ellos realizados

con arreglo a un mismo diseño. Auto modelo 1976. Lavadora últimomodelo....

Modelo estructural: descripción del sistema como conjunto de partes(subsistemas) y sus interrelaciones.Modelo funcional: qué hace el sistema (cómo responde a lasentradas, cómo se usa).Modelo procesal: cómo lo hace (cómo funciona).

Tema 3: Estructura y funcionamiento de procesadores 9

Page 6: Fundamentos de los Sistemas Telemáticos.pdf

Estructura y funcionamiento de procesadores

Conceptos previos

La «máquina de von Neumann»Modelo estructuralModelo funcionalModelo procesal

Evolución de los procesadores hardware

El procesador BRM

Procesadores software

Lenguajes de marcas y de script

La «máquina de von Neumann» (1945)

UCP

señales de control ("microórdenes")

datos

instrucciones

datos

direcciones

direcciones

instrucciones, y datos (operandos y resultados)

direcciones (de MP y de UE/S)

UAL

UC

UE/S

MP

Tema 3: Estructura y funcionamiento de procesadores 10

Page 7: Fundamentos de los Sistemas Telemáticos.pdf

La «máquina de von Neumann»: componentes

Memoria principal(RAM):

dirección

obtenida a grabar

lec esc

microórdenes de la UC

palabra direccionada (40 bits)

palabra

4.096palabras

(12 bits)

palabra

(caso de lectura) (caso de escritura)

Unidad aritmética y lógica:

operando 1 operando 2

resultado

operación 1

operación 2

operación n

...UAL

AC (40 bits)

Unidad de control:

UC

instrucción

microórdenes dirección de la

instrucción

siguiente

(de la MP)

(a la MP)

dirección de dato

(a la UAL, la MP

y/o las UE/S)

(a la MP

o las UE/S)

Tema 3: Estructura y funcionamiento de procesadores 11

La «máquina de von Neumann»:modelo funcional (1)

El contenido de una palabra (40 bits) puede interpretarseI como un número entero entre −(239 − 1) y +239 − 1 (c. a 1),

o como número fraccionario con coma fija, oI como dos instrucciones de 20 bits.

Un programa es una sucesión de instrucciones de máquina.Cada instrucción es un conjunto de bits que especifica una acciónelemental en un subconjunto de bits llamado código de operación.Formato de instrucciones:

8 12 8 12

CO CD CO CD

El programa debe estar almacenado en la memoria principalantes de comenzar su ejecución.

Tema 3: Estructura y funcionamiento de procesadores 12

Page 8: Fundamentos de los Sistemas Telemáticos.pdf

La «máquina de von Neumann»:modelo funcional (2)

Hay instrucciones de procesamiento. Por ejemplo:

CO = «sumar»; CD = 7le dice a la UC: «suma al acumulador el contenido de la palabrade dirección 7 y luego sigue con la instrucción almacenada a acontinuación de ésta»

e instrucciones de transferencia de control. Por ejemplo:

CO = «bifurca si el contenido del acumulador es 0»; CD = 700

le dice a la UC: «si se cumple esa condición, la instrucciónsiguiente a ejecutar es la que está en la dirección 700; si no, es laque está a continuación de ésta».

Tema 3: Estructura y funcionamiento de procesadores 13

La «máquina de von Neumann»: modelo procesal

En cada paso de la ejecución,la unidad de control:

1 Lee (extrae) de la MP lainstrucción cuya dirección dememoria se encuentra en elregistro contador deprograma.

2 Decodifica los bits de lainstrucción

3 Ejecuta la instruccióngenerando las microórdenesoportunas.

0 CP

estadoinicial

(CP)+1 CP

lectura deinstrucción

(M[(CP)]) UC

ejecución decodificación

(Simplificado: en los modelos de von Neumann había dosinstrucciones en cada palabra)

Tema 3: Estructura y funcionamiento de procesadores 14

Page 9: Fundamentos de los Sistemas Telemáticos.pdf

Estructura y funcionamiento de procesadores

Conceptos previos

La «máquina de von Neumann»

Evolución de los procesadores hardwareTecnología y componentesModelos estructuralesModelos funcionalesModelos procesales

El procesador BRM

Procesadores software

Lenguajes de marcas y de script

Evolución: tecnología y componentes

Acorde con lo previsto en la ley de Moore:

Procesadores:I Reloj 5 KHz{ varios GHzI Acumulador{ decenas de registrosI UCP: 1 procesador{ n procesadores

Memoria:I 20 KiB{ varios GiBI Caches

Periféricos:I Terminales electromecánicos{ Ratón, LCD, almacenamiento,

sensores y actuadores, comunicaciones...I Con controladores «inteligentes»

Tema 3: Estructura y funcionamiento de procesadores 15

Page 10: Fundamentos de los Sistemas Telemáticos.pdf

Modelos estructurales: interconexión por buses

BusConjunto de conductores eléctricos (cables, pistas o conexiones en uncircuito integrado) que conectan varias «estaciones» que pueden serunidades funcionales en un ordenador o nodos en una red. Un bus esun canal de difusión, lo que significa que cada estación recibe lastransmisiones de todas las demás, y todas ellas tienen igual acceso albus. (Traducido de http://foldoc.org/bus)

Sólo consideraremos buses paralelo, en los que se transmite un flujode bytes o de n bytes. También hay buses serie, en los que setransmite un flujo de bits serializados (USB),o 2n flujos de bits, si el bus es bidireccional y tiene n enlaces (PCIe).

Tema 3: Estructura y funcionamiento de procesadores 16

Ejemplo de modelo estructural: BRM

UC

UD

UAL

Bus A (bus de direcciones, 32 bits)

R1

bus UAL

bus B

R15 = PC

R14 = LR

R13 = SP

R0

CPSR

R14_SVC

R13_SVC

Bus D (bus de datos e instrucciones, 32 bits)

RA

RIE

RID

RIL

incrementador(+4)

VAddr[31:0]

SPSR

clk

irq

reset

req

r/w

size

wait

operando 1operando 2

RDE RDL

WData[31:0] RData[31:0]

Luego lo estudiaremos con detalle

Tema 3: Estructura y funcionamiento de procesadores 17

Page 11: Fundamentos de los Sistemas Telemáticos.pdf

Procesadores hardware en un PC...

controlador

grafico (GPU)

MP

puerto

puerto

puerto

puerto

puertopuerto

USB

USB

USB

USB

USB audio

bus de memoriabus del sistema(FSB: Front−Side Bus)64b, 8512 MB/s

64b, 8512 MB/s

PCIe x16

controlador super IO

puertos serial,paralelo, PS/2.disquete...

(northbridge, o

2x16b, 2x8000 MB/s

puente sur

puente norte

linea

modem

SATApuerto

SATApuerto

SATApuerto

ethernetgigabit

Controler Hub)

MCH: Memory

L2

VGA HDMIDVI

L1i,L1d L1i,L1d L1i,L1dL1i,L1d

C0 C1 C2 C3

1b,

Controller Hub)ICH: I/O(southbridge, o

puentePCI

switch

4b, 384 MB/s

cámara

escáner

impresora

ratón

smart card

480 Mbps

LPC 4b, 16 MB/s32b, 133MB/sbus PCI

2x500 MB/sPCIe x1

Tema 3: Estructura y funcionamiento de procesadores 18

... en un teléfono móvil...

Samsung Galaxy S II:Fuente: http://forums.guru3d.com/showthread.php?t=349178&page=7

Tema 3: Estructura y funcionamiento de procesadores 19

Page 12: Fundamentos de los Sistemas Telemáticos.pdf

... en un navegador GPS...

Fuente: http://focus.ti.com/docs/solution/folders/print/413.html

Tema 3: Estructura y funcionamiento de procesadores 20

... en un cajero automático...

Fuente: http://commons.wikimedia.org/wiki/File:Atm_blockdiagram.png

Tema 3: Estructura y funcionamiento de procesadores 21

Page 13: Fundamentos de los Sistemas Telemáticos.pdf

Modelos funcionales: CISC vs. RISCCISC (Complex Intruction Set Computer)

Varios cientos de instruccionesInstrucciones para operaciones complejasVarios formatos de instrucciones (uno o varios bytes)

RISC (Reduced Intruction Set Computer)(Procesadores diseñados a partir de los años 1980)

Sólo las instrucciones más frecuentesFormato de instrucciones regularArquitectura «load/store»(instrucciones de procesamiento sobre operandos en registros)Tres tipos de instrucciones:

I De «movimiento» y procesamiento entre registrosI De transferencias de datos con la memoria y los periféricosI De transferencias de control: bifurcaciones, llamadas y retornos de

subprogramas, interrupción de programa

Tema 3: Estructura y funcionamiento de procesadores 22

Direccionamiento de la memoriaEspacio de direccionamiento: si el bus de direcciones tiene n bits,el procesador puede generar 2n direcciones de bytes.

Entre la MP y los registros se pueden transferir bytes o palabras de k bytes.

Convenios:Sobre el almacenamiento de una palabra en varios bytes:Extremista mayor o menor (estudiado en Tema 2).Sobre el direccionamiento de las palabras:En algunos procesadores (p. ej. ARM) es obligatorio que las direccionesde palabra sean múltplos de k : «direcciones de palabra alineadas».

dir. byte

0 01

12

23 3

(b) palabras no alineadas

dir. palabra dir. palabradir. byte

(a) palabras alineadas

5

6

7

0

4

4

0

12

5

6

7

4

Tema 3: Estructura y funcionamiento de procesadores 23

Page 14: Fundamentos de los Sistemas Telemáticos.pdf

Modos de direccionamientoEn las instrucciones que hacen referencia a memoria(las de transferencia de datos y las de transferencia de control)hay varios modos de obtener la dirección efectiva:

Direccionamiento directo: El de von Neumman: la dirección estácontenida en la misma instrucción.Direccionamiento inmediato: La instrucción contiene el operando.Direccionamiento indirecto: La dirección está en otra palabra de lamemoria, o (más frecuente) en un registro del procesador.Direccionamiento indexado: La dirección efectiva se obtienesumando a un registro de base, o registro de índice, un valorinmediato o el contenido de otro registro (veremos algunasvariantes en BRM).Direccionamiento relativo al CP: La dirección efectiva se obtienesumando una distancia (positiva o negativa) (offset) al valor queen ese momento tiene el contador de programa.

Tema 3: Estructura y funcionamiento de procesadores 24

Comunicaciones con periféricos

Puertos de los controladores: registros que contienendatos intercambiados con un registro del procesador, oinformaciones sobre el estado(preparado, fin de transferencia, error...), oórdenes del procesador(localización en disco, iniciar transferencia...)

Cada puerto tiene una dirección de entrada salida

Dos convenios sobre las direcciones:

Espacios de direccionamiento independientes (Intel, AMD...)Espacio de direccionamiento compartido (ARM, Motorola...)

Entrada/salida «memory-mapped»

Tema 3: Estructura y funcionamiento de procesadores 25

Page 15: Fundamentos de los Sistemas Telemáticos.pdf

Modelos procesales: dos innovacionesimportantes

Encadenamiento (pipelining)Realización simultánea de las fases (transparencia 14): mientras seejecuta una instrucción se está descodificando la siguiente y leyendola siguiente a ésta (cadena de profundidad 3; algunos procesadorestienen cadenas de profundidad superior a 10).

InterrupcionesMecanismo (combinación de hardware y de software) para que elprocesador pueda abandonar temporalmente la ejecución de unprograma y pasar a ejecutar una rutina de servicio que depende de lacausa de la interrupción:

petición de un periférico, fallos del hardware...petición del propio programa (llamadas al sistema operativo)

Tema 3: Estructura y funcionamiento de procesadores 26

Estructura y funcionamiento de procesadoresConceptos previos

La «máquina de von Neumann»

Evolución de los procesadores hardware

El procesador BRMModelos estructural y procesalModelo funcional: tipos y formatos de instruccionesInstrucciones de procesamiento y movimientoEl lenguaje ensamblador y la aplicación ARMSim#Instrucciones de transferencia de controlSubprogramasInstrucciones de acceso a MP y periféricosLa pseudoinstrucción LDR

MódulosInterrupciones

Procesadores software

Lenguajes de marcas y de script

Page 16: Fundamentos de los Sistemas Telemáticos.pdf

El procesador BRM

BRM (Basic RISC Machine):Versión simplificada (subconjunto) de una arquitectura(familia de procesadores) real:

ARM (Advanced RISC Machines):La arquitectura de 32 bits más extendida

Simulador «ARMSim#»: http://armsim.cs.uvic.ca/

Tema 3: Estructura y funcionamiento de procesadores 27

BRM: modelo estructural

UC

UD

UAL

Bus A (bus de direcciones, 32 bits)

R1

bus UAL

bus B

R15 = PC

R14 = LR

R13 = SP

R0

CPSR

R14_SVC

R13_SVC

Bus D (bus de datos e instrucciones, 32 bits)

RA

RIE

RID

RIL

incrementador(+4)

VAddr[31:0]

SPSR

clk

irq

reset

req

r/w

size

wait

operando 1operando 2

RDE RDL

WData[31:0] RData[31:0]

Tema 3: Estructura y funcionamiento de procesadores 28

Page 17: Fundamentos de los Sistemas Telemáticos.pdf

BRM: registrosR0 - R15: propósito generalPero hay tres con funciones especiales:

R13 = SP: puntero de pila (stack pointer)R14 = LR: registro de enlace (link register)R15 = PC: contador de programa (program counter)

CPSR/SPSR: registros de estado«Current Program Status Register»: al atender a una interrupción se copiaautomáticamente en SPSR («Saved PSR»)

31 28 27 07 4

N Z C IV 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 Modo

Modo: 10000 = usuario; 10011 = supervisorI: 0 = interrupciones inhibidas; 1 = interrupciones permitidasN, Z, C, V: indicadores de negativo, cero, acarreo y desbordamiento

RA, RDE, RDL, RIL, RID y RIE: «transparentes» en el nivel de máquinaconvencional

Tema 3: Estructura y funcionamiento de procesadores 29

BRM: modelo procesalCadena de profundidad 3 con instrucciones de 4 bytes:

lectura decodificación

lectura

lectura decodificación ejecución

decodificaciónlectura ejecución

lectura decodificación ejecución

d

d+4

d+8

d+12

d+16

las instrucciones

Direcciones detiempo

Cuando se está ejecutando la instrucción d el contador de programacontiene d + 8.Si la instrucción en d es una bifurcación a d1 hay que «vaciar» lacadena:

d

d+4

d+8

las instrucciones

Direcciones de ejec(d)

d1

d1+4

dec(d)

lec(d+4) dec(d+4)

lec(d+8)

lec(d1) dec(d1)

lec(d1+4)

lec(d) bifurca a d1

operaciones inútiles

Tema 3: Estructura y funcionamiento de procesadores 30

Page 18: Fundamentos de los Sistemas Telemáticos.pdf

BRM: formatos de instrucciones31 28 27 0

Cond

26

Tipo

Cuatro tipos de instrucciones:

T Instrucciones de Número00 procesamiento y movimiento de datos 1601 transferencias con MP y periféricos 410 bifurcación 211 interrupción de programa 1

Cond 0 SCop RdRnI0 Op2

Cond 0 RdRnI1 P U B W L Dist

Cond 1 0 1 L Dist

Cond 1 1 1 1 Ignorado por el procesador

Tema 3: Estructura y funcionamiento de procesadores 31

Condiciones de ejecuciónTodas las instrucciones son condicionadas:

Cond Hex. Nem. Condición Significado0000 0 EQ Z = 1 =0001 1 NE Z = 0 ,

0010 2 CS C = 1 ≥ sin signo0011 3 CC C = 0 < sin signo0100 4 MI N = 1 Negativo0101 5 PL N = 0 Positivo0110 6 VS V = 1 Desbordamiento0111 7 VC V = 0 No desbordamiento1000 8 HI C = 1 y Z = 0 > sin signo1001 9 LS C = 0 o Z = 1 ≤ sin signo1010 A GE N = V ≥ con signo1011 B LT N,V < con signo1100 C GT Z = 0 y N = V > con signo1101 D LE Z = 1 o N,V ≤ con signo1110 E [AL] (por defecto) Siempre1111 F NV Nunca

Tema 3: Estructura y funcionamiento de procesadores 32

Page 19: Fundamentos de los Sistemas Telemáticos.pdf

Procesamiento y movimiento: operaciones31 28 0111215161920212425

Cond 0 SCop RdRnI0 Op2

Cop Hex. Nem. Acción0000 0 AND operando1 AND operando2→ Rd0001 1 EOR operando1 OR exclusivo operando2→ Rd0010 2 SUB operando1 – operando2→ Rd0011 3 RSB operando2 – operando1→ Rd0100 4 ADD operando1 + operando2→ Rd0101 5 ADC operando1 + operando2 + C→ Rd0110 6 SBC operando1 – operando2 + C –1→ Rd0111 7 RSC operando2 – operando1 + C –1→ Rd1000 8 TST como AND, pero no se escribe en Rd1001 9 TEQ como EOR, pero no se escribe en Rd1010 A CMP como SUB, pero no se escribe en Rd1011 B CMN como ADD, pero no se escribe en Rd1100 C ORR operando1 OR operando2→ Rd1101 D MOV operando2 (el operando1 se ignora)→ Rd1110 E BIC operando1 AND NOT operando2→ Rd1111 F MVN NOT operando2 (el operando1 se ignora)→ Rd

operando1 = (Rn); operando2 depende de Isi S = 1 (nemónico: ADDS, etc.) se ponen los indicadores;con TST, TEQ, CMP y CMN, S = 1 siempre

Tema 3: Estructura y funcionamiento de procesadores 33

Procesamiento y movimiento: casos sencillos31 28 0111215161920212425

Cond 0 SCop RdRnI0 Op2

Operando1: El contenido del registro codificado en Rn(se ignora para MOV y MVN)

Operando2: si I=0 (modo registro), el contenido del registrocodificado en los 4 bits menos significativossi I=1 (modo inmediato), el número binario en los8 bits menos significativos.

Resultado en Rd (destino)

Ejemplos:

Código fuente Binario (en hex.) OperaciónMOV R6, R0 { 0xE1A06000 (R0)→ R6ADD R0, R0, R1 { 0xE0800001 (R0)+(R1)→ R0ADDS R0, R0, R1 { 0xE0900001 (R0)+(R1)→ R0; pone indic.MOV R6, #3 { 0xE3A06003 3→ R6MOVEQ R6, #3 { 0x03A06003 Si Z=1, 3→ R6SUB R0, R0, #10 { 0xE240000A (R0)-10→ R0

Tema 3: Estructura y funcionamiento de procesadores 34

Page 20: Fundamentos de los Sistemas Telemáticos.pdf

Un programa

Sumar 255 y 1 y dejar el resultado en R0

Pseudocódigo: 255 → R1

1 → R2

(R1)+(R2) → R0

Instrucciones:

(formato

31 28 0111215161920212425

Cond 0 SCop RdRnI0 Op2 )

Nemónico Código binario («código objeto») Hexadec.

MOV R1,#255 1110 00 1 1101 0 0000 0001 000011111111 E3A010FF

MOV R2,#1 1110 00 1 1101 0 0000 0010 000000000001 E3A02001

ADD R0,R1,R2 1110 00 0 0100 0 0001 0000 000000000010 E0810002

Tema 3: Estructura y funcionamiento de procesadores 35

El programa en lenguaje ensamblador

/****************************************************

* *

* Primer ejemplo *

* *

****************************************************/

.equ cte1,255 @ Directivas

.equ cte2,1 @ para el ensamblador

mov r1,#cte1 @ Carga valores en R1

mov r2,#cte2 @ y R2

add r0,r1,r2 @ y hace R1 + R2 → R0

swi 0x11 @ Instrucción para el procesador

@ hardware. 0x11 le indica a

@ ARMSim# el fin de la ejecución

.end @ Directiva para el

@ ensamblador que indica el

@ fin del programa fuente

Tema 3: Estructura y funcionamiento de procesadores 36

Page 21: Fundamentos de los Sistemas Telemáticos.pdf

La aplicación ARMSim#Contiene:

Un ensamblador del lenguaje ensamblador GNUUn simulador del procesador hardware ARM7TDMIOtras cosas (montador, simulador de cache...)

Para empezar a usarlo:1 Se carga el programa fuente («File→ Load»).2 Automáticamente, ARMSim# ensambla y, si no hay errores, presenta

el resultado. El código objeto se carga a partir de la dirección 0x10003 En la vista de memoria (activarla con «View→ Memory») se pueden

ver los contenidos4 Esta vista se puede seleccionar por bytes o por palabras5 Se simula la ejecución con el botón «Run»6 También se puede simular paso a paso («Debug→ Step into», o

poniendo «breakpoints»)7 En todo momento se muestran los contenidos de los registros, en

decimal o en hexadecimal

Tema 3: Estructura y funcionamiento de procesadores 37

El programa en ARMSim#1: File > Load 2: listados fuente y ensamblado5: Run 6: paso a paso

3: contenidos de la memoria 4: presenta bytes o palabras

7:

co

nte

nid

os

de

lo

s r

eg

istr

os

Tema 3: Estructura y funcionamiento de procesadores 38

Page 22: Fundamentos de los Sistemas Telemáticos.pdf

Procesamiento y movimiento: casos generales

31 28 0111215161920212425

Cond 0 SCop RdRnI0 Op2

Recordar los «casos sencillos»:Operando1: El contenido del registro codificado en Rn

(se ignora para MOV y MVN).Operando2:

si I=0 (modo registro), el contenido del registro codificado en los 4bits menos significativos.{ Sobran 8 bits que se puedenaprovechar para indicar operaciones de desplazamiento orotaciones previas sobre este registro.si I=1 (modo inmediato), el número binario en los8 bits menos significativos.{ [0..255]; si se usaran los 12,[0..4095]; con otro convenio, números mayores.

Tema 3: Estructura y funcionamiento de procesadores 39

Procesamiento y movimiento: modo registro31 28 0111215161920212425

Cond 0 SCop RdRnI0 Op2

Operando1: Contenido del registro codificado en Rn

Operando2 cuando I = 0 (modo registro):

Si bits 4 a 11 = 0, Op2 = (Rm)

Si bit 4 = 0, Op2 = despl(n,D,Rm); n = bits 7 a 11D = 00: LSL; D = 01: LSR; D = 10: ASR; D = 11: ROR

Si bit 4 = 1, Op2 = despl(n,D,Rm); n = (Rs)

011 34567

011 345678

D Rm10Rs

D 0 Rmdespl_inmed

Pero no hay que preocuparse: el ensamblador se encarga de calcular.Ejemplos:

Código fuente Hex. OperaciónMOVS R3, R3, LSL #4 { 0xE1B03203 (R3)×16→ R3; pone indicadoresSUB R0, R1, R2, ASR #6 { 0xE0410342 (R1)-(R2)÷64→ R0ADD R0, R0, R1, LSR R2 { 0xE0800231 (R0)+LSR(R1,R2)→ R0

Tema 3: Estructura y funcionamiento de procesadores 40

Page 23: Fundamentos de los Sistemas Telemáticos.pdf

Procesamiento y movimiento: modo inmediato31 28 0111215161920212425

Cond 0 SCop RdRnI0 Op2

Operando1: Contenido del registro codificado en Rn

Operando2 cuando I = 1 (modo inmediato):

Si Operando2 ≤ 255, en los bits 0 a 7,con bits 8 a 11 = 0Si bits 8 a 11 , 0, indican una rotación ala derecha de 2×(rot) bits

011 78

inmed_8rot

operando 2 (32 bits)

x 2

UD

ROR

Ejemplos:

Código fuente Binario (en hex.) OperaciónSUBS R0, R0, #10 { 0xE250000A (R0)-10→ R0; pone pone indicadoresMOV R6, #256 { 0xE3A06C01 256→ R6MOVEQ R6, #4080 { 0x03A06EFF Si Z=1, 4080→ R6MOV R6, #257 { ¡no se puede!

Tema 3: Estructura y funcionamiento de procesadores 41

Necesidad de bifurcaciones

Frecuentemente, el algoritmo implica «tomar un decisión».Ejemplo: cálculo iterativo del factorial.Pseudocódigo: 1 → fact

repetir

{ fact×n → fact

n-1 → n

} hasta que n = 0

Adaptación a BRM:

mov r0,#1 @ (R0) = fact

mov r1,#n @ (R1) = n, n-1...

mul r0,r0,r1 @ BRM no tiene "mul", pero ARM sí

subs r1,r1,#1

/* Si el resultado es 0, terminar;

si no, volver a la instrucción "mul" */

Tema 3: Estructura y funcionamiento de procesadores 42

Page 24: Fundamentos de los Sistemas Telemáticos.pdf

Transferencias de control

Valor→ R15 = PC. Ejemplos:I MOV R15, #0xFFFFFF (direccionamiento directo){ 0xE3E0F4FFI MOVEQ PC, R0 (indirecto: si Z=1 bifurca a DE = (R0)){ 0x01A0F000

Instrucciones de bifurcación (B, BL, BEQ...BLHI...):31 28 27 0

Cond

26

1 0 1 L

25 24 23

Dist

DE = dir. instrucc. + 8 + 4×Dist (± 32 MiB); DE→ R15si L = 1 (instrucción BL), dir. instrucc. + 4→ LR = R14

Instrucción de interrupción de programa (SWI, SWIEQ...):31 28 27 0

Cond

26

1 1 1 1

25 24 23

Ignorado por el procesador

Tema 3: Estructura y funcionamiento de procesadores 43

Programa para el factorial

.equ n,100000 E3A00001 mov r0,#1 @ (R0) = fact0004 E3A0100A mov r1,#n @ (R1) = n, n-1...

bucle:0008 E0000091 mul r0,r1,r0 @ BRM no tiene "mul", pero ARM sí000C E2511001 subs r1,r1,#1

/* Si el resultado es 0, terminar;si no, volver a la instrucción "mul" */

0010 1AFFFFFC bne bucle0014 EF000011 swi 0x11

El ensamblador ha calculado 0xFFC para el campo Dist, que es larepresentación en complemento a 2 de -4. Al ejecutarse resultaráDE = dir. instrucc. + 8 + 4×Dist = 0x0010 + 8 + 4×(-4) = 16 + 8 - 16 = 8,que es la dirección de mul (identificada por la etiqueta bucle en elcódigo fuente).Comprobar con ARMSim# que en R0 resulta 10! = 3628800 = 0x375F00Como el programa se carga a partir de 0x1000, la dirección de mul es0x1008, y la de bne, 0x1010.

Tema 3: Estructura y funcionamiento de procesadores 44

Page 25: Fundamentos de los Sistemas Telemáticos.pdf

Subprogramas

Programa al que pueden «llamar» o «invocar» otros programas pararealizar una función con distintos parámetros cada vez.

Programa

Subprograma

retorno

d1

d2

s

p

llamada 1

llamada 2

Paso de parámetrosI Por registros (paso de valor)I Por zonas de memoria apuntadas por registros

(paso de referencia)Dirección de retorno

I En un registro especial (registro de enlace, LR)F Instrucción de llamada: guarda la dirección de

retorno en LR y bifurca (instrucción BL en BRM)F Instrucción de retorno: copia el contenido de LR

en el contador de programa (MOV PC,LR en BRM)I En una pila en memoria

(necesario para anidamiento)

Tema 3: Estructura y funcionamiento de procesadores 45

Subprograma para el factorial y llamadas.equ n1,7.equ n2,10/* Llamadas al subprograma */

0000 E3A01007 mov r1,#n10004 EB000004 bl fact0008 E1A02000 mov r2,r0 @ (n1)! → R2000C E3A0100A mov r1,#n20010 EB000001 bl fact0014 E1A03000 mov r3,r0 @ (n2)! → R30018 EF000011 swi 0x11

/* Subprograma: (R1)! → R0 */001C E3A00001 fact: mov r0,#1

bucle:0020 E0000091 mul r0,r1,r00024 E2511001 subs r1,r1,#10028 1AFFFFFC bne bucle002C E1A0F00E mov pc,lr @ retorno del subprograma

¿Y si no disponemos de la instrucción mul?Escribimos un subprograma, mult, que haga (R1)×(R0)→ R0Pero al hacer bl mult se guardaría la dirección de retorno a fact en LR,

perdiéndose la de retorno al programa: problema del anidamientoSolución: guardar previamente (LR) en la memoria (en una pila, más adelante)

Tema 3: Estructura y funcionamiento de procesadores 46

Page 26: Fundamentos de los Sistemas Telemáticos.pdf

Transferencias con MP y periféricos31 28 0111619202425

Cond 0 RdRnI1 P U B W L

1215

Dist

22

Cuatro instrucciones:

L B Nemónico Operación0 0 STR (Rd)→ M[DE]0 1 STRB (Rd[0..7])→8 M[DE]1 0 LDR (M[DE])→ Rd1 1 LDRB (M[DE])→8 Rd[0..7]; 0→ Rd[8..31]

M[DE] = una palabra o un byte de la memoria,o un puerto (espacios compartidos)

DE (dirección efectiva) = f(Rn,I,P,U,Dist)

Rn: registro de índice

W: W = 1 para actualizar Rn en los modos preindexados

Cuatro modos de direccionamiento determinados por I y P

Tema 3: Estructura y funcionamiento de procesadores 47

Modo postindexado inmediato (I = 0, P = 0)31 28 0111619202425

Cond 0 RdRnI1 P U B W L

1215

Dist

22

DE = (Rn)(Rn)±(Dist)→ Rn (independientemente de W)Si U = 1, +; si U = 0, –

Ejemplos:Código fuente Binario (en hex.) OperaciónLDR R0, [R7], #4 { 0xE4970004 (M[(R7)])→ R0; (R7) + 4→ R7STR R0, [R7], #-4 { 0xE4070004 (R0)→ M[(R7)]; (R7) - 4→ R7LDRB R0, [R7], #-8 { 0xE4570008 (M[(R7)])→8 R0; (R7) - 8→ R7STRB R0, [R7], #-1 { 0xE4470001 (R0)→8 M[(R7)]; (R7) - 1→ R7STR LR,[SP],#-4 { 0xE40DE004 (R14)→ M[(R13)]; (R13) - 4→ R13STRB R0, [R7] { 0xE5C70000 (R0)→8 M[(R7)]

Utilidad:Acceso a un byte (o una palabra) cuya dirección está en RnCuando Rn es R13 = SP, acceso a la pila

Tema 3: Estructura y funcionamiento de procesadores 48

Page 27: Fundamentos de los Sistemas Telemáticos.pdf

Subprograma para intercambiar dos bytes

Suponiendo que R0 y R1 contienen ya las direcciones de los bytes,

Pseudocódigo: (M[R0])→8 R2(M[R1])→8 R3(R2)→8 M[R1](R3)→8 M[R0]

El modo de direccionamiento es indirecto: R0 y R1 son punteros.En BRM se obtiene este efecto con postindexado inmediato y Dist = 0.

Código:

0000 E5D02000 ldrb r2,[r0] @ Es lo mismo que ldrb r2,[r0],#0

0004 E5D13000 ldrb r3,[r1]

0008 E5C12000 strb r2,[r1]

000C E5C03000 strb r3,[r0]

0010 E1A0F00E mov pc,lr @ Retorno del subprograma

Tema 3: Estructura y funcionamiento de procesadores 49

Intercambio de zonas de bytes

0

d

(R1)+49

Zona A(R0)

(R0)+49

(R1)Zona B

subrogramaPrograma y

¿Escribir 50 veces las instrucciones?

Mejor hacer un bucle:Las instrucciones de intercambio sonsolamente cuatro, pero, con ayuda de unainstrucción de bifurcación condicionada,se pueden ejecutar 50 veces

Conforme se van ejecutando(a cada paso por el bucle)se van incrementado las direcciones:ldrb r2,[r0],#1, etc.

Será necesario un contador paracomprobar el final del bucle

Tema 3: Estructura y funcionamiento de procesadores 50

Page 28: Fundamentos de los Sistemas Telemáticos.pdf

Subprograma para el intercambio de zonasGeneralizado para zonas de longitud L, que se le pasa por R10:

0000 E3A04000 mov r4,#0 @ (R4) es un contador

bucle:

0004 E5D02000 ldrb r2,[r0] @ (R0): puntero a una zona

0008 E5D13000 ldrb r3,[r1] @ (R1): puntero a la otra

000C E4C12001 strb r2,[r1],#1

0010 E4C03001 strb r3,[r0],#1

0014 E2944001 adds r4,r4,#1

0018 E3540032 cmp r4,r10

001C 1AFFFFF8 bne bucle @ FFFF8 = repr(-8); 0x1C+8-4*8 = 4

0020 E1A0F00E mov pc,lr @ (dirección de bucle)

Para comprobarlo tenemos que escribir un programa que:1 rellene dos zonas de memoria con datos: ¿dónde?, ¿cómo?2 inicialice R10 con la longitud y R0 y R1 con las direcciones de

comienzo: ¿cómo?El ensamblador da facilidades para esto.

Tema 3: Estructura y funcionamiento de procesadores 51

Directivas para inclusión de datos: ejemplos.text @ Indica que lo que sigue es código ejecutable

@ Aquí vendrían instrucciones de programa y subprogramas@ Como no hay nada, la dirección del primer dato es 0@ (0x1000 una vez cargado en ARMSim#)

.data @ Indica que lo que sigue son datos.byte 64, 'A', 0b1000010 @ inserta los bytes 0x40, 0x41 y 0x42.align @ inserta de uno a tres bytes 0x00 de modo que la

@ dirección siguiente sea múltiplo de 4.word 0x1AFFFFF8 @ inserta los bytes 0xF8, 0xFF, 0xFF y 0x1A

@ (si el convenio es extremista menor).skip 50 @ deja libres 50 bytes (valores indefinidos).ascii "esta es una cadena" @ inserta los caracteres ASCII (18).asciz "y esta es otra cad" @ añade 0x00 al final (19 bytes).byte 255 @ otro byte, para comprobar lo anterior.end

Mapa de memoria en ARMSim# (con «Word Size 8 bits»):

Pero ¿cómo se accede desde el programa a esos datos?

Tema 3: Estructura y funcionamiento de procesadores 52

Page 29: Fundamentos de los Sistemas Telemáticos.pdf

Modo preindexado inmediato (I = 0, P = 1)31 28 0111619202425

Cond 0 RdRnI1 P U B W L

1215

Dist

22

DE = (Rn)±(Dist)Si U = 1, +; si U = 0, –Si W = 1, (Rn)±(Dist)→ Rn

Ejemplos:Código fuente Binario (en hex.) OperaciónLDR R8, [R0, #4] { 0xE5908004 (M[(R0)+4])→ R8LDR R8, [R0, #4]! { 0xE5B08004 (M[(R0)+4])→ R8; (R0)+4→ R0STRB R8, [R0, #-1] { 0xE5408001 (R8)→8 M[(R0)-1]STRB R8, [R0, #0] { 0xE5C08000 (R8)→8 M[(R0)]STRB R8, [R0] { 0xE5C08000 Igual que la anteriorLDR R8, [PC, #500] { 0xE59F81F4 (M[(R15)+500])→ R8LDR LR,[SP,#4]! { 0xE59DE004 (R14)→ M[(R13)+4]; (R13)+4→ R13

Utilidad:Cuando Rn es R15 = PC, el modo es relativo{ acceso a datosCuando Rn es R13 = SP, acceso a la pila

Tema 3: Estructura y funcionamiento de procesadores 53

Acceso a datos: la pseudoinstrucción LDR

Facilita la programación en ensamblador para el acceso condireccionamiento relativo evitando el cálculo de la distancia:

Si identificamos una directiva de dato con una etiqueta,podemos escribir:

ldr <reg>, =eti

y el ensamblador genera:ldr <reg>, [pc,#<dist>]

calculando la distancia dist de modo queDE = (PC) + dist = dir. de eti

Instrucciones como mov r0,#257, o mov r0,#4095 no se puedencodificar (el ensamblador da error). Escribiendo:

ldr <reg>, =<cte> (−231 ≤ cte ≤ 231 − 1)el ensamblador genera, si es posible, mov <reg>,#cte(o mvn <reg>,#-cte, si es negativa) y si no, genera dos cosas:

I la constante en la sección de datosI ldr <reg>, [pc,#<dist>], calculando la distancia para acceder a ella

Tema 3: Estructura y funcionamiento de procesadores 54

Page 30: Fundamentos de los Sistemas Telemáticos.pdf

Ejemplos de LDR para constantes arbitrarias

00000000 E59F0008 ldr r0,=257 @ igual que ldr r0, [pc, #8]

@ DE = (PC)+8 = 8+8 = 0x10

@ Si se carga a partir de la dirección d, la constante creada,

@ 0x101, estará en d+0x10 y el resultado será el mismo.

@ Comprobar con ARMSim#, en el que d=0x1000

00000004 E3A00C01 ldr r0,=256 @ igual que mov r0, #256

00000008 E3E000FF ldr r0,=-256 @ igual que mvn r0, #0xFF:

@ NOT(0x00...00FF) = 0xFF...FF00

@ = compl. a 2 de 256 → R0

0000000C E59F0000 ldr r0 =4095 @ igual que ldr r0, [pc, #0]

.end @ DE = (PC)+0 = 0x14

00000010 00000101 @ constantes generadas por el ensamblador

00000014 00000FFF @ ("pool de literales")

Tema 3: Estructura y funcionamiento de procesadores 55

Ejemplo de LDR para acceso a zona de datos.global _start @ declaración de _start.textintercambio: @ comienzo del subprograma

0000 E3A04000 mov r4,#0 @ o bien: ldr r4,#00004 E5D02000 bucle: ldrb r2,[r0]

@ ... etc. (instrucciones del subprograma)0020 E1A0F00E mov pc,lr @ retorno del subprograma

_start: @ etiqueta que señala el comienzo de la ejecución0024 E59F000C ldr r0,=zona1 @ 0x24 + 8 + 0x00C = 56 = 0x380028 E59F100C ldr r1,=zona2 @ 0x28 + 8 + 0x00C = 60 = 0x3C002C E3A0A00A mov r10,#10 @ o bien: ldr r10,#10 (las zonas son de 10 bytes)0030 EBFFFFF2 bl intercambio @ llamada al subprograma0034 EF000011 swi 0x11

.data0038 00000040003C 0000004A0040 00010203 zona1: .byte 0,1,2,3,4,5,6,7,8,9

040506070809

004A 0A0B0C0D zona2: .byte 10,11,12,13,14,15,16,17,18,190E0F10111213

.end

El ensamblador ha calculado las direcciones de zona1 y zona2 y las hapuesto en un «pool» de constantes en 0x38 y 0x3C, y ha calculado lasdistancias a poner en las instrucciones que genera para las ldr

Tema 3: Estructura y funcionamiento de procesadores 56

Page 31: Fundamentos de los Sistemas Telemáticos.pdf

Modos indexados con registro

La distancia no se codifica «inmediatamente» en el campo Dist, sinoen otro registro, que puede desplazarse.

Ejemplos:

Código fuente Operaciónpostindexados: STR R0,[R2],R5 (R0)→ M[(R2)]; (R2) + (R5)→ R2

LDR R0,[R2],R5,ASR #4 (M[(R2)])→ R0; (R2) + (R5)÷16→ R2LDREQB R0,[R2],R5,LSL #5 si Z = 0 no hace nada; si Z = 1:

(M[(R2)])→8 R0[0..7]; 0→ R0[8..31];(R2)+(R5)×32→ R2

preindexados: LDR R1,[R2,R4] (M[(R2)+(R4)])→ R1LDR R1,[R2,-R4]! (M[(R2)-(R4)])→ R1; (R2)-(R4)→ R2LDR R1,[R2,R4,LSL #2] (M[(R2)+(R4)×4])→ R1

(Formatos binarios en los apuntes)

Tema 3: Estructura y funcionamiento de procesadores 57

Pila en RAM y anidamiento de subprogramas

Registro puntero de pila, SP = R13 (stack pointer)Operaciones:

I push: (Rx)→ M[(SP)]; (SP)+4→ SP{ STR Rx,[SP],#4I pop: (M[(SP]+4)→ Rx; (SP)-4→ SP{ LDR Rx,[SP,#4]!

fondo

MP

+4(pop)

−4(push)

SP

cimad

(SP) = d

En ARMSim#,0x5400

zonareservadapara la pila

Si un subprograma llama a otro...Instrucciones de llamada:

1 Guardar en la pila la dirección deretorno (push): STR LR,[SP],-#4

2 Bifurcar al subprograma: BL ...

Instrucciones de retorno1 Sacar de la pila la dirección de

retorno (pop): LDR LR,[SP,#4]!2 Introducirla en el contador de

programa: MOV PC,LR

La pila también puede usarse para pasar los parámetros

Tema 3: Estructura y funcionamiento de procesadores 58

Page 32: Fundamentos de los Sistemas Telemáticos.pdf

Subprograma factorial que llama a otroSi en lugar de la instrucción mul utilizamos un subprograma mult que hace(R1)×(R0)→ R0

/* Prueba de fact con llamadas */00000000 E3A01008 mov r1,#800000004 EB000004 bl fact @ (R1)! → R000000008 E1A08000 mov r8, r0 @ para comprobar resultado: 8! en R80000000C E3A0100A mov r1, #1000000010 EB000001 bl fact00000014 E1A0A000 mov r10,r0 @ 10! en R1000000018 EF000011 swi 0x11

/* Subprograma fact con llamada a un mult */0000001C E40DE004 fact: str lr,[sp],#-4 @ push LR00000020 E3A00001 mov r0,#100000024 EB000003 bucle: bl mult00000028 E2511001 subs r1,r1,#10000002C 1AFFFFFC bne bucle00000030 E5BDE004 ldr lr,[sp,#4]! @ pop LR00000034 E1A0F00E mov pc,lr

Tema 3: Estructura y funcionamiento de procesadores 59

MódulosMódulo: programa que

puede ensamblarse, dando como resultado un código objeto(instrucciones de máquina en binario)este código objeto no puede ejecutarse, porque necesita otros módulos.

Todo programa que no sea trivial debe descomponerse en módulos paraFacilitar la depuración: comprobación del buen funcionamiento de cadamódulo y corrección de posibles errores.Reutilizar los módulos para otros programas.

El montador (linker) es un programa que genera un código objeto ejecutablecombinando los códigos objeto de los módulos.

En cada módulo tienen que declararse:los símbolos externos (están definidos en otros módulos) con la directiva«extern» (para que el ensamblador no genere errores), ylos símbolos de acceso (los pueden utilizar otros módulos) con la directiva«global» (para que el montador no genere errores).

Tema 3: Estructura y funcionamiento de procesadores 60

Page 33: Fundamentos de los Sistemas Telemáticos.pdf

Ejemplo de módulos/* Módulo prueba */

.global _start

.extern fact00000000 E3A01008 _start: mov r1,#800000004 EBFFFFFE bl fact

...00000010 EBFFFFFE bl fact

....end

El ensamblador genera elcódigo objeto, una tabla desímbolos de acceso(_start/0) y una tabla desímbolos externos(fact/{0x4, 0x10}))

/* Módulo factorial */.global fact.extern mult

00000000 E40DE004 fact: str lr,[sp],#-400000004 E3A00001 mov r0,#100000008 EBFFFFFE bucle: bl mult

...00000018 E1A0F00E mov pc,lr

.end

El ensamblador genera elcódigo objeto, una tabla desímbolos de acceso(fact/0) y una tabla desímbolos externos (mult/8)

/* Módulo multiplica */.global mult

00000000 E3A0C000 mult: mov r12, #0...mov pc,lr

.end

El ensamblador genera elcódigo objeto y una tabla desímbolos de acceso(mult/0).

Tema 3: Estructura y funcionamiento de procesadores 61

Interrupciones en BRM

Para cada causa de interrupción, una RS (rutina de servicio)Al pasar a atender a una interrupción, el hardware, automáticamente:

(CPSR)→ SPSRPone modo supervisor e inhibe interrupciones en CPSR(R15)→ R14_SVC (para volver de la RS: (R14)→ R15)Dirección comienzo RS→ R15

Vector de interrupción: en BRM, primera instrucción de la RSCausas y vectores de interrupción:

Interrupción Causa Dir. vectorReset Activación de la señal reset 0x00Instruccióndesconocida

El procesador no puededescodificar la instrucción

0x04

de programa Instrucción SWI. 0x08IRQ Activación de la señal irq. 0x18

Tema 3: Estructura y funcionamiento de procesadores 62

Page 34: Fundamentos de los Sistemas Telemáticos.pdf

Retorno del servicio y posible mapa de memoria

Para volver de una RS,

Si es SWI o instruccióndesconocida, MOVS PC, LR

(o MOVS R15, R14)Si es IRQ, SUBS PC, LR, #4

(o SUBS R15, R14, #4)(la instrucción interrumpidaterminó de ejecutarse; el valorde PC salvado fue el de lainstrucción siguiente más 8)En estos casos (destino = PC)S = 1 hace que (SPSR)→CPSRSi es reset ¡no hay que volver aninguna parte!

RS Int. Desc.

RS SWI

RS IRQ

RS Reset

ROM

0x3FFFFFFF

0x00000000

0x00000004

0x00000008

0x00000018

0x00000100

0x00000600

0x00000B00

MOV PC,#0x3F000000

0x3F000000

B 0x00003D

B 0x00017C

B 0x0002B8

Tema 3: Estructura y funcionamiento de procesadores 63

Estructura y funcionamiento de procesadores

Conceptos previos

La «máquina de von Neumann»

Evolución de los procesadores hardware

El procesador BRM

Procesadores softwareProcesadores de lenguajesEnsambladores y montadoresCompiladores e intérpretes

Lenguajes de marcas y de script

Page 35: Fundamentos de los Sistemas Telemáticos.pdf

Procesadores software

La definición de la transparencia 4 («programa que transforma unosdatos de entrada en unos datos de salida») es tan general que...¡todo programa es un «procesador software»!

Nos referimos en particular a procesadores de lenguajes:

Procesador de lenguajePrograma que procesa otros programas escritos en algún lenguaje nobinario para que el resultado pueda ser interpretado por unprocesador hardware (o por otro procesador de lenguaje intermedio).

Ensambladores, compiladores e intérpretes (transparencias 5 y 6)

Tema 3: Estructura y funcionamiento de procesadores 64

El proceso de ensamblajeNormalmente, un ensamblador traduce en dos pasos:

1 Analiza el programa fuente. Si no tiene errores sintácticos construye unatabla de símbolos interna (etiquetas y sus direcciones).

2 Vuelve a explorar las instrucciones del programa fuente y, con ayuda de latabla de símbolos interna, va traduciendo cada una a binario. Genera uncódigo objeto, una tabla de símbolos de acceso, una tabla de símbolosexternos y un diccionario de reubicación.

Diccionario de reubicación:Lista de las direcciones cuyos contenidos deben cambiarse sumándoles dcuando el código objeto se cargue a partir de la dirección d y no de 0.

Ejemplo: En el programa del intercambio de zonas (transp. 56),Dirección Contenido puesto por el ensamblador0x0038 0x0040 (dirección de la zona 1)0x003C 0x004A (dirección de la zona 2)0x0040 a 0x0049 datos de la zona 10x004A a 0x0053 datos de la zona 2

Si el código se carga a partir de la dirección d = 0x1000, 0x0038 y 0x003Cpasarán a ser 0x1038 y 0x103C, y a sus contenidos hay que sumarles 0x1000.

Tema 3: Estructura y funcionamiento de procesadores 65

Page 36: Fundamentos de los Sistemas Telemáticos.pdf

Ejemplo de tablas de símbolos

En los módulos prueba, factorial y multiplica (transparencia 61):/* Módulo prueba */

.global _start

.extern fact00000000 E3A01008 _start: mov r1,#800000004 EBFFFFFE bl fact

...00000010 EBFFFFFE bl fact

.../* Módulo factorial */

.global fact

.extern mult00000000 E40DE004 fact: str lr,[sp],#-400000004 E3A00001 mov r0,#100000008 EBFFFFFE bucle: bl mult

...00000018 E1A0F00E mov pc,lr

/* Módulo multiplica */.global mult

00000000 E3A0C000 mult: mov r12, #0...mov pc,lr

Módulo Símbolo Valorprueba Externos

fact 0x4,0x10Acceso

_start 0factorial Externos

mult 0x8Acceso

fact 0multiplica Externos

— —Acceso

mult 0

Ninguno de los módulos genera diccionariode reubicación

Tema 3: Estructura y funcionamiento de procesadores 66

El proceso de montajeEl montador (linker)

coloca los módulos objeto generados por el ensamblador uno tras otro,pone los valores adecuados de acuerdo con las tablas de símbolosexternos y de acceso, ygenera un código objeto ejecutable y un diccionario de reubicaciónglobal.

Cargadorreubicador

módulode carga

Ensambladormódulofuente

móduloobjeto:

Montador

módulosobjeto

módulode carga:

código objeto

diccionario de reubicación

MP

constante dereubicación

código objeto

tabla de símbolos externos

tabla de símbolos de acceso

diccionario de reubicación

factorial.s factorial.o

factorial.o

prueba.o

multiplica.o

prueba

prueba

(vacío)

(vacío)

códigoejecutable

Tema 3: Estructura y funcionamiento de procesadores 67

Page 37: Fundamentos de los Sistemas Telemáticos.pdf

Lenguajes de alto nivelEjemplo de función en lenguaje C:

Pseudocódigo:1 → fact

mientras que n , 0

{ fact×n → fact

n-1 → n

}

Programa fuente en C:int factorial(int n){ int fact = 1;while (n != 0){ fact = fact * n;

n = n-1;}return fact;

}O bien:

Pseudocódigo:1 → fact

repetir

{ fact×n → fact

n-1 → n

} hasta que n = 0

Programa fuente en C:int factorial(int n){ int fact = 1;do { fact = fact * n;

n = n-1;} while (n != 0);

return fact;}

Tema 3: Estructura y funcionamiento de procesadores 68

El proceso de compilación

Funcionalmente, un compilador hace lo mismo que un ensamblador:

Módulo fuente (nombre.c){ Módulo objeto (nombre.o)

Procesalmente, es bastante más complejo:

módulofuente

móduloobjeto:

código objeto

tabla de símbolos externos

tabla de símbolos de acceso

diccionario de reubicación

factorial.c factorial.oOptimizadorde código

GeneradorAnalizadorsintáctico(parser)

Analizadorléxico

Compilador

Tema 3: Estructura y funcionamiento de procesadores 69

Page 38: Fundamentos de los Sistemas Telemáticos.pdf

El proceso de interpretación

El intérprete no genera ningún «código objeto»

Cada vez que analiza un sentencia genera las órdenes oportunaspara el procesador hardware(o para otro procesador intermedio, como el de gráficos)

programafuente

un_script.js (parser)

Intérprete

Analizadorléxico Ejecutorsintáctico

Analizador

Tema 3: Estructura y funcionamiento de procesadores 70

Estructura y funcionamiento de procesadores

Conceptos previos

La «máquina de von Neumann»

Evolución de los procesadores hardware

El procesador BRM

Procesadores software

Lenguajes de marcas y de scriptHTMLXMLJavaScript

Page 39: Fundamentos de los Sistemas Telemáticos.pdf

HTML (Hypertext Markup Language)Las marcas, o etiquetas, comienzan con «<» y terminan con «>».

ElementosI Con contenido: tienen una marca de apertura y otra de cierre. Ejemplo:

<p>Un párrafo que puede contener otros elementos</p>I Sin contenido. Ejemplo: <img src="URL de la imagen" width="160">

Las marcas de apertura pueden contener atributos con valores: src, width...

El documento debe tener un elemento raíz, <html>, conteniendo dos elementos:I <head>, que contiene elementos con metadatos, yI <body>, que contiene elementos con datos.

Estructura general de un documento HTML:

<html>

<head>

<meta ... >

<title>...</title>

</head>

<body>

<!-- Esto es un comentario -->

<!-- ... ->

</body>

</html>

Tema 3: Estructura y funcionamiento de procesadores 71

Ejemplo de documento HTMLEn rojo: marcado semántico; en azul: marcado de presentación.(Mejor, en un documento CSS aparte)

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>Página de muestra</title>

</head>

<body style="color:darkblue;background:#FFF8DC">

<h1 style="color:magenta">Un encabezado</h1>

<p>El elemento <kbd>&lt;p&gt;</kbd>

contiene texto y otros elementos.

<br> Empieza con la marca <kbd>&lt;p&gt;</kbd>

y termina con la marca <kbd>&lt;/p&gt;</kbd>.</p>

<p><b>Esto es una lista:</b></p>

<ul><li>item 1</li><li>item 2</li><li>item 3</li></ul>

<p><em>Un enlace a otra página:</em>

<a href="http://moodle.upm.es">Moodle de la UPM</a>

</p>

</body></html>

Tema 3: Estructura y funcionamiento de procesadores 72

Page 40: Fundamentos de los Sistemas Telemáticos.pdf

XML (eXtensible Markup Language)Como HTML, es un lenguaje de marcas y tiene una sintaxis parecida, pero...

XML está concebido para el almacenamiento, el transporte y elintercambio de datos entre aplicaciones, no para su presentación.Las marcas (etiquetas) en XML no tienen un significado predefinido.Es un metalenguaje: con documentos adicionales (DTD o XMLSchema)se definen lenguajes específicos.

Ejemplo:<aviso tipo="urgente">

<encabezado>

<para>Paco</para>

<de>Juan</de>

<asunto>Recordatorio</asunto>

</encabezado>

<cuerpo>Recuerda que me debes 20 &euro;</cuerpo>

</aviso>

Éste es un documento XML correcto. Nosotros entendemos lo que significanlas marcas, pero un procesador no, a menos que lo acompañemos de otrodocumento en el que se definen los significados.

Tema 3: Estructura y funcionamiento de procesadores 73

Sintaxis (informal) de XML¿Por qué el documento es «correcto» (o «bien formado»)?

Porque respeta unas reglas gramaticales que definen una sintaxis:

Está formado por elementos (<aviso...>...</aviso>),<encabezado>...</encabezado>...) anidados.Todos los elementos terminan con una etiqueta de cierre(</aviso>).(Pero puede haber elementos vacíos: «para» podría habersedefinido así: <para nombre= "Pedro" />)Los elementos pueden contener atributos con un valor(tipo="urgente")Puede contener entidades, construcciones que se definen aparte(&euro;)

Un analizador sintáctico, o «parser» es un procesador que compruebaque el documento respeta esas reglas.

Tema 3: Estructura y funcionamiento de procesadores 74

Page 41: Fundamentos de los Sistemas Telemáticos.pdf

Semántica (informal) de XMLPara interpretar el contenido de un documento XML particular se utiliza otrodocumento más general que define la semántica para todos los documentosXML de ese tipo (es decir, el significado de las etiquetas, los atributos, etc.)

DTD (Document Type Definition) y XMLSchema permiten definir lenguajesespecíficos mediante reglas que expresan la forma válida de construirdocumentos en esos lenguajes. Por ejemplo: «El elemento <encabezado> debecontener uno o más elementos <para> y exactamente un elemento <de>».

El documento XML es un documento válido si, además de estar bien formado,satisface la especificación de un DTD o un XMLSchema.

Si el documento ha de transformarse a otros formatos (HTML, RTF, PDF, etc.),XSLT (Extensible Stylesheet Language Transformations) permite escribirreglas como:«aviso se interpreta transformándolo a una cadena de caracteres en negritaque dice “Éste es un aviso de [contenido de <de>] a [contenido de <para>]de naturaleza [valor del atributo tipo]”»

Referencia: http://www.w3.org/XML

Tema 3: Estructura y funcionamiento de procesadores 75

JavaScript

No es JavaLenguaje interpretado que se ejecuta en un navegador(o en otra aplicación)Páginas HTML dinámicas:

I Validación de datos antes de su envío al servidorI Apertura de ventanas emergentesI Cambio del contenido de los elementos cuando el cursor pasa por

ellosI Cambios parciales en la presentación respondiendo a mensajes

del servidorI Interacción dinámica con el servidorI ...

Se usa también en otras aplicaciones: Acrobat Reader,libreoffice.org...

Tema 3: Estructura y funcionamiento de procesadores 76

Page 42: Fundamentos de los Sistemas Telemáticos.pdf

JavaScript: Ejemplo<html><head><script type="text/javascript">function factorial(n){fact = 1;while (n != 0){ fact = fact * n;

n = n-1;} return fact;

}function numero(elemento) {return (parseInt(elemento.value));

}function presenta(z) {document.getElementById("F").innerHTML="El factorial de "+z+" es "+factorial(z);}</script></head><body style="background:#FFF8DC"><form>Escribe un número:<input type="text" value="" size="10" onChange="x = numero(this)"><br><input type="button" value="Calcular el factorial" onClick="presenta(x)"></form><p id="F">Aquí aparecerá el resultado</p></body></html>

Antes:

Después:

Tema 3: Estructura y funcionamiento de procesadores 77

AJAX (Asynchronous JavaScript and XML)Interacción dinámica entre el servidor y el cliente:

Internet

1. Se produceun evento

2. Genera un XMLHttpRequest

XMLHttpRequest

3. Envía el

7. Procesa losdatos

la página

8. Actualiza

6. Envía datosen XML

respuesta5. Elabora una

4. Procesa elXMLHttpRequest

Tema 3: Estructura y funcionamiento de procesadores 78