Publicado el 3 de Junio del 2019
1.490 visualizaciones desde el 3 de Junio del 2019
6,4 MB
55 paginas
Creado hace 8a (12/02/2016)
12/02/2016
1
2
1
ARM
fc2
fc2
Architecture: programmer’s view
of computer
– Defined by instructions
& operand locations
Microarchitecture: how to
implement an architecture in
hardware
12/02/2016
Fue un matemático húngaro‐estadounidense
Realizó contribuciones importantes en física cuántica, análisis
funcional, teoría de conjuntos, informática, economía, análisis
numérico, estadística …
Fue pionero de la computadora digital moderna
introduciendo el concepto de programa almacenado en
memoria.
– Los programas almacenados dieron
a las computadoras flexibilidad y
confiabilidad, haciéndolas más
rápidas y menos sujetas a errores
que los programas mecánicos.
– Además se podían crear programas
que escribieran en la memoria otros
programas.
program simple;
var
integer
begin
a, b, p:
a := 5;
b := 3;
p := a * b;
end
fc2
fc2
3
simple:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
subl $16, %esp
movl $5, -16(%ebp)
movl $3, -
12(%ebp)……….
457f 464c 0101 0001 0000 0000 0000 0000
0002 0003 0001 0000 8280 0804 0034 0000
0df0 0000 0000 0000 0034 0020 0007 0028
0022 001f 0006 0000 0034 0000 8034 0804
8034 0804 00e0 0000 00e0 0000 0005 0000
0004 0000 0003 0000 0114 0000 8114 0804
8114 0804 0013 0000 0013 0000 0004 0000
0001 0000 0001 0000 0000 0000 8000 0804
8000 0804 046c 0000 046c 0000 0005 0000
1000 0000 0001 0000 046c 0000 946c 0804
946c 0804 0100 0000 0104 0000 0006 0000
1000 0000 0002 0000 0480 0000 9480 0804
9480 0804 00c8 0000 00c8 0000 0006 0000
0004 0000 0004 0000 0128 0000 8128 0804
8128 0804 0020 0000 0020 0000 0004 0000
Memoria
4
2
i) El usuario hace doble
click sobre el icono del
programa que quiere
ejecutar
DATOS
PROGRAMA
ii) El sistema operativo
busca el programa en las
unidades de
almacenamiento
RAM
DIRECCIÓN DE
INICIO DEL
PROGRAMA
DATOS
PROGRAMA
iii) El sistema operativo
almacena el programa y
sus datos en memoria
RAM
CPU
PC:
DIRECCIÓN INICIO PROGRAMA
DATOS
PROGRAMA
RA
RB
RW
busW
e
d
o
c
n
a
B
s
o
r
t
s
i
g
e
r
busA
busB
U
L
A
iv) El sistema operativo indica a la CPU dónde se encuentra la
dirección de la primera instrucción del programa que tiene
que ejecutar
fc2
fc2
5
6
12/02/2016
3
12/02/2016
CPU
DIRECCIÓN INICIO PROGRAMA
INSTRUCCIÓN A EJECUTAR
e
d
o
c
n
a
B
s
o
r
t
s
i
g
e
r
busA
busB
U
L
A
DATOS
PROGRAMA
PC:
IR:
RA
RB
RW
busW
v) La CPU busca la instrucción que tiene que ejecutar
Qué tiene que hacer
Dónde están los datos
Dónde se escribe el resultado
DATOS
PROGRAMA
PC:
IR:
RA
RB
RW
busW
CPU
DIRECCIÓN INICIO PROGRAMA
INSTRUCCIÓN A EJECUTAR
e
d
o
c
n
a
B
s
o
r
t
s
i
g
e
r
busA
busB
U
L
A
vi) La CPU ejecuta la instrucción
Leer los datos de entrada
Realizar la operación
Escribir el resultado
fc2
fc2
7
8
4
CPU
PC: DIRECCIÓN SIGUIENTE INSTRUCC
DATOS
PROGRAMA
RA
RB
RW
busW
e
d
o
c
n
a
B
s
o
r
t
s
i
g
e
r
busA
busB
U
L
A
vii) La CPU calcula automáticamente dónde se encuentra la
siguiente instrucción del programa
■ Depende de la década donde se estudie:
■ Los 50:
El código máquina era la única forma de
programar los computadores.
■ Los 60 y 70: Para recodificar partes críticas del código.
En 1972, sobre un PDP–9, se podía escribir código
ensamblador que se ejecutaba el doble de rápido que
código FORTRAN compilado.
■ Los 80:
Para mantener gran cantidad de código
heredado (legacy code), escrito en ensamblador.
■ Hoy: Ya hay poco “Legacy code” que mantener.
Desarrollo de Sistemas Operativos y Compiladores.
Aprender la capa de abstracción de Arquitectura.
Partiendo de esta capa comprenderemos la conexión
entre programa y hardware.
fc2
fc2
12/02/2016
9
10
5
12/02/2016
Un computador NO entiende código ensamblador.
– Sólo entiende ceros y unos (código máquina)
Cada instrucción escrita en código ensamblador y
cada etiqueta, son traducidos a código máquina:
OPCODE
OPERANDO DESTINO OPERANDO FUENTE 1 OPERANDO FUENTE 2
Instr. ensamblador
ADD
R3, R4,
R5
E
n
s
a
m
b
a
d
o
l
D
e
s
e
n
s
a
m
b
a
d
o
l
Desensamblado:
Es una Interpretación
del código máquina
Instr. máquina
0010
0011
0100
0101
fc2
fc2
Ejemplo:
Traducir a ensamblador de ARM la sentencia en C:
f=(g+h)*(i+j)
Suponemos que inicialmente g,h,i,j están en los
registros r1,r2,r3,r4 respectivamente.
add r5,r2,r1
add r6,r3,r4
mul r7,r5,r6
11
12
6
Conjunto de instrucciones, símbolos y reglas sintácticas y
semánticas con el que se puede programar un ordenador
para que resuelva un problema, realice una
tarea/algoritmo, etc.
Analogía con una lengua:
Verbo
Verbos del diccionario Repertorio de instrucciones
Lenguaje completo
Lenguaje ensamblador
Instrucción
Podemos decir que el código ensamblador es un conjunto
de expresiones fácilmente recordables por el
programador, en las que además se tiene en cuenta la
arquitectura del procesador:
– No se puede utilizar cualquier expresión
– Hay que considerar donde se encuentran físicamente los datos
13
Comentarios
@Constant
@Data
.global start
.equ ONE, 0x01
.data
MYVAR: .word 0x02 @Variable
.bss
RES:
.text
start:
@Program
.space 4
MOV R0, #ONE
LDR R1, =MYVAR
LDR R2, [R1]
ADD R3, R0, R2
LDR R4, =RES
STR R3, [R4]
B .
END:
.end
Cada línea del programa puede tener los campos:
Etiqueta
Etiqueta: Referencias simbólicas de
Instrucción/Directiva Operandos
posiciones de memoria (texto + datos)
.Directiva: acciones auxiliares durante el
ensamblado (reserva de memoria)
Instrucción: del repertorio del ARM
Operandos:
– Registros
– Constantes: Decimales, hexadecimal (0x)
– Etiquetas
Comentarios: caracteres seguidos de @.
Pueden aparecer solos en una línea.
fc2
fc2
12/02/2016
7
■ Siglas de la compañía Advanced Risc Machines Ltd.
■ Fundada en 1990 por Acorn, Apple y VLSI Tech.
■ En 1993, se unió Nippon Investment and Finance
■ Desarrollan procesadores RISC y SW relacionado
■ NO fabrica circuitos
■ Sus ingresos provienen de los “royalties” de:
■ licencias,
■ herramientas de desarrollo (HW y SW)
■ servicios de soporte
fc2
fc2
■ Unos de los más vendidos/empleados en el mundo
■ 75% del mercado de CPU empotrados de 32-bits
■ Usados especialmente en dispositivos portátiles
debido a su bajo consumo y razonable rendimiento
(MIPS/Watt)
■ Disponibles como hard/soft core
■ Fácil integración en Systems-On-Chip (SoC)
■ Ofrecen diversas extensiones:
■ Thumb (código compacto)
■ Jazelle (implementación HW de Java VM). No
disponible en la versión que usaremos.
12/02/2016
15
16
8
■ Familia: Procesadores con la misma arquitectura
(compatibilidad binaria), pero distinta implementación
fc2
fc2
Repertorio de instrucciones
– Operaciones que se pueden realizar
– Formato de instrucción
adoptan las instrucciones máquina
Registros de la arquitectura
• Descripción de las diferentes configuraciones de bits que
– Conjunto de registros visibles al programador
(datos, direcciones, estado, PC)
Modos de direccionamiento
– Forma de especificar la ubicación de los datos dentro
de la instrucción y modos para acceder a ellos
Formato de los datos
– Tipos de datos que puede manipular el computador
12/02/2016
17
18
9
12/02/2016
■ 32-bits de longitud
■ 15 registros de propósito general (R0-R14)
■ R13=SP suele usarse como puntero de pila
■ R14=LR se usa como enlace o dirección de retorno
User
Mode
■ Un registro contador de programa (PC=R15)
■ Un registro estado actual del programa (CPSR)
■ Permite acceder a la vez a tres registros:
■ 2 registros fuente
■ 1 registro destino
add r5,r2,r1
■ ¡Poca capacidad pero muy rápidos!
fc2
r0
r1
r2
r3
r4
r5
r6
r7
r8
r9
r10
r11
r12
r13 (sp)
r14 (lr)
r15 (pc)
cpsr
19
Queremos contar el número de ceros que
contiene un vector de 1000 elementos .
ceros=0;
for(i=0;i<1000;i++){
if(A[i]==0){
}
}
ceros=ceros+1;
Necesitamos una memoria para manejar
1000 elementos.
¿Qué debe hacer el computador en cada
iteración del bucle?
fc2
20
10
12/02/2016
Una secuencia (tabla) de bytes
– Cada byte tiene asignada una dirección de memoria
– Profundidad: Si disponemos de k bits para la
dirección podremos acceder a 2k bytes
• Si k=10 ‐> Tamaño= 210 bytes = 1024 bytes = 1Kbyte
• Si k=6 ‐> Tamaño= 26 bytes = 64 bytes
– Anchura: Una palabra es una cadena finita de bits,
típicamente 8, 16, 32 o 64 bits, que son manejados
como un conjunto por la máquina, es un parámetro
arquitectónico.
fc2
fc2
Palabra de 32 bits (4 bytes)
– En este curso accederemos casi siempre a nivel de palabra
Memoria ARM direccionable por bytes.
Pero con accesos alineados
– Palabra de 4 bytes (instrucciones, int, float)
‐> Dirección múltiplo de 4
– Dato de tamaño 2 bytes (short int)
‐> Direcciones múltiplos de 2
– Data de tamaño byte (char)
‐> Cualquier dirección
Las restricciones de alineamiento :
– Desaprovechan memoria,
– pero aceleran notablemente el acceso.
– Lo utilizan la mayoría de las arquitecturas
21
22
11
Es habitual en entornos de desarrollo visualizar la
memoria a nivel de palabra.
– Ejemplo: palabras AABBCCDDHEX y 9070FFAAHEX
a partir de la dirección 16.
Dirección
16
20
+0
AA
90
+1
BB
70
+2
CC
FF
+3
DD
AA
Dirección
16
20
+0
+1
DD CC
AA
FF
+2
BB
70
+3
AA
90
BIG‐ENDIAN: lectura de
izquierda a derecha
ARM es MIDDLE‐ENDIAN
– admite ambas organizaciones
LITTLE‐ENDIAN: lectura de
derecha a izquierda
Pensemos un poco más a fondo qué tareas tiene que
realizar el procesador cuando ejecuta una instrucción:
1. Detectar tipo de instrucción a ejecutar P.ej. ADD
2.
3. Realizar la suma de los dos operandos con algún HW
4. Guardar el resultado en algún lugar
Leer de algún lugar los ops. fuente
¿Dónde estarán los operandos? (datos)
– TODOS los datos e instrucciones que manipula un
programa se almacenan en la memoria
– Temporalmente se pueden almacenar datos en los
registros de la CPU (banco de registros)
– Eve
Comentarios de: Módulo 8: Lenguaje Máquina y Ensamblador - ARM (0)
No hay comentarios