PDF de programación - 3 - Arquitectura interna de un uP

Imágen de pdf 3 - Arquitectura interna de un uP

3 - Arquitectura interna de un uPgráfica de visualizaciones

Actualizado el 12 de Julio del 2020 (Publicado el 21 de Junio del 2019)
364 visualizaciones desde el 21 de Junio del 2019
1,5 MB
10 paginas
Creado hace 5a (17/11/2015)
UPMDIE
INDUSTRIALES

3 - Arquitectura interna de un uP

Componentes básicos

Lenguaje ensamblador y código máquina

Ciclo básico de ejecución de una instrucción

Algunos ejemplos

©Universidad Politécnica de Madrid

s
e
.
m
p
u
@
e
c

i

Componentes básicos de la CPU: Registros, ALU y CU

▪ CPU: Es la encargada de todas las operaciones y movimiento de datos.

 Banco de registros: almacena datos y resultados de operaciones con la ALU. El tamaño de los

registros suele coincidir con el de la memoria de datos, y define el tipo de CPU (8 bits, 32 bits,…)

 Unidad Aritmético Lógica (ALU): Realiza operaciones entre registros (+, -, and, or…)

 Unidad de control (CU): Secuencia las acciones en función de la instrucción a ejecutar

Señales de control
generadas por la CU

Bus de datos de

la memoria de prog.

Memoria

de

programa

R/W

CS0

CS1

Reset

Clock

R/W

CS0

Unidad de

Control

R15
R14
R13
...
...
R1
R0

ALU

Bus de datos de

la memoria de datos

Memoria
de datos

Banco de
registros

R/W

CS1

Unidad
Aritmético
Lógica

Bus de direcciones de
la memoria de programa

Bus de direcciones de
la memoria de datos

UPMDIE
INDUSTRIALES

Fundamentos de Electrónica: Microprocesadores

2

Lenguaje ensamblador y código máquina (I)
 ¿Qué tipo de instrucciones ejecuta una CPU?

En principio son instrucciones muy básicas:

 Respecto a los datos, puede:

• Cargar un registro con un dato de la memoria o una constante

– Ejemplos:

LD R0, 1000 == R0 M(1000)

LDI R0, 5 == R0 5

• Operar dos registros con la ALU (guardando el resultado el uno de ellos)

– Ejemplos:

ADD R0, R3 == R0 R0 + R3

NOT R4 == R4 R4

• Guardar el contenido de un registro en la memoria o en otro registro

– Ejemplos:

ST R3, FC00 == M(FC00) R3

MOV R5, R4 == R4 R5

 Respecto a las instrucciones, puede:

• Ejecutar secuencialmente una instrucción detrás de otra (según están en la

memoria)

• Saltar de una parte a otra del programa de forma incondicional

– Ejemplo:

JMP 2000 == saltar a la instrucción que está en la posición 2000
y continuar la ejecución desde allí

• Saltar unas cuantas instrucciones de forma condicional en función de los

resultados de la última operación que hizo la ALU

– Ejemplo:

BREQ 100 == Salta 100 instrucciones más adelante
si el resultado de la última operación con la ALU fue 0

• Saltar a una parte del programa en función de alguna señal externa (se verá)

UPMDIE
INDUSTRIALES

Fundamentos de Electrónica: Microprocesadores

3

Lenguaje ensamblador y código máquina (II)
▪ ¿Cómo se ejecutaría un programa escrito, por ejemplo, en C?

• El compilador transforma el código en C para realizar la funcionalidad descrita a

través de ese conjunto de instrucciones básicas

• Ejemplo: (versión algo simplificada respecto a cómo resultaría en la realidad):

Código en C
// Declaración variables
byte a = 0;
byte i = 0;

// Bucle for
for(i = 0; i < 20; i++) {

a = a + i;

}

...
...

Código en «ensamblador»

LDI r0, 0
ST r0, 200

LDI r0, 0
ST r0, 204

; cargamos r0 con 0, y lo almacenamos en la
; posición de memoria 200, que albergaría el valor
; de la variable ‘a’ (lo decide el compilador)
; idem con la posición 204,
; que albergaría la variable ‘i’

LDI r0, 0
ST r0, 204

; inicializamos la variable ‘i’ con 0
; lo guardo en su sitio

LD r3, 200
ADD r3, r0
ST r3, 200

; cargo r3 con el valor de la variable ‘a’
; le sumo el valor de ‘i’
; y guardo el valor en su lugar (o sea, a = a + i)

INC r0
ST r0, 204

LDI r1, 20
SUB r1, r0
BRGT -7

...

; incremento el valor de ‘i’
; lo guardo en su sitio para que el valor en
; la memoria y en los registros sea coherente
; cargamos r1 con 20 (el valor del final del bucle)
; le restamos r0 (‘i’), para comparar si i < 20
; si el resultado es mayor que 0 entonces i < 20 y
; (BRanch if Greater Than) salto 7 posiciones
; hacia atrás. Si no, continuaría con la siguiente
; instrucción que hubiese después

UPMDIE
INDUSTRIALES

Fundamentos de Electrónica: Microprocesadores

4

Lenguaje ensamblador y código máquina (III)



¿Cómo se codifican y almacenan las instrucciones en la memoria?

– Las instrucciones en «lenguaje ensamblador» se codifican en un código binario. Según el micro, esta

codificación podría hacerse en una o varias palabras por instrucción.

– Para realizar la codificación, se usa un «programa ensamblador», que se encarga de traducir las

instrucciones en «lenguaje ensamblador» a «código máquina»

– Normalmente se utiliza una codificación por «campos»

Ejemplo: Cómo quedarían algunas instrucciones del anterior programa en la memoria

Código
ensamblador

...
...
3FF
400
401
403
404
406
408
40A
40B
40D
40E
410
411
412
413
...

...
...
...
LDI r0, 0
ST r0, 200
LDI r0, 0
ST r0, 204
LD r0, 204
LD r3, 200
ADD r3, r0
ST r3, 200
INC r0
ST r0, 204
LDI r1, 20
SUB r1, r0
BRGT -7
...
...

ADD r3, r0

Cod. op.

Reg dest.

Reg orig.

Type

Operación
con la ALU

3

0

Suma

1001

0011 0000

0001

LDI r1, 20

Cod. op.

Reg dest.

Cargar

constante

1

val

20

0001

0001 00010100

ST r3, 200

Cod. op.

Reg dest.

El código ensamblador es una
representación «legible» del
código máquina

Guardar en
memoria

3

val

200

no importa el valor

UPMDIE
INDUSTRIALES

0010

0011 00000000

0000000011001000

Fundamentos de Electrónica: Microprocesadores

...
...
3FF
400
401

403
404

406

408

40A
40B

40D
40E
410
...
...
...

...
...
...
0001000000000000
0010000000000000
0000000011001000
0001000100000001
0010000000000000
0000000011001100
0011000000000000
0000000011001100
0011001100000000
0000000011001000
1001001100000001
0010001100000000
0000000011001000
etc
etc
...

Código
máquina

5

Ciclo básico de ejecución de una instrucción (III)
▪ ¿Cómo se ejecutan las instrucciones?

 La CPU va leyendo cíclicamente instrucciones de la memoria de programa, las

interpreta (en función de su codificación en binario), y la unidad de control (máquina de
estados compleja) activa las señales de control correspondientes para ejecutarlas.

Memoria
de
instrucciones

...
3FF
400
401
402
403
404
405
406
407
408
409
40A
40B
...

...
LDI r0, 0
ST r0, 200
LDI r0, 0
ST r0, 204
LD r0, 204
LD r3, 200
ADD r3, r0
ST r3, 200
INC r0
ST r0, 204
LDI r1, 20
SUB r1, r0
BRGT -7
...

UPMDIE
INDUSTRIALES

--

Memoria
de datos

2

ADD r3, r0

4

Registro de instrucciones

0000000011001000

Unidad

de

Control
Contador

de programa

0405

R/W

CS

Reset

Clock

R15
R14
R13

R3

R1
R0

3

--
--
--
...
6

20
4

ALU

5

...
...
1FD
1FE
200
201
202
203
204
205
206
207
...
...

405

1

--

5

1 – Búsqueda de la instrucción
2 – Decodificación de la instrucción
3 – Operación/Ejecución
4 – Carga/Almacenamiento en registros/memoria
5 – Incremento del contador de programa

Fundamentos de Electrónica: Microprocesadores

6

Ciclo básico de ejecución de una instrucción (III)
▪ ¿Cómo se ejecutan las instrucciones?

 La CPU va leyendo cíclicamente instrucciones de la memoria de programa, las

interpreta (en función de su codificación en binario), y la unidad de control (máquina de
estados compleja) activa las señales de control correspondientes para ejecutarlas.

2

ADD r3, r0

1001001100000001

4

Registro de instrucciones

1001001100000001

Unidad

de

Control
Contador

de programa

0405

R/W

CS

Reset

Clock

Memoria
de
instrucciones

...
3FF
400
401
402
403
404
405
406
407
408
409
40A
40B
...

...
LDI r0, 0
ST r0, 200
LDI r0, 0
ST r0, 204
LD r0, 204
LD r3, 200
ADD r3, r0
ST r3, 200
INC r0
ST r0, 204
LDI r1, 20
SUB r1, r0
BRGT -7
...

--

Memoria
de datos

R15
R14
R13

R3

R1
R0

3

--
--
--
...
6

20
4

ALU

5

...
...
1FD
1FE
200
201
202
203
204
205
206
207
...
...

405

1

--

5

1 – Búsqueda de la instrucción
2 – Decodificación de la instrucción
3 – Operación/Ejecución
4 – Carga/Almacenamiento en registros/memoria
5 – Incremento del contador de programa

Fundamentos de Electrónica: Microprocesadores

7

UPMDIE
INDUSTRIALES

Ciclo básico de ejecución de una instrucción (IV)
▪ ¿Cómo se ejecutan las instrucciones?

 Terminada una instrucción, se repite el ciclo con la siguiente (o con la que corresponda

si es que ha habido algún salto a otra parte del código)

2

ST r3, 200

R/W

CS

Reset

Clock

Unidad

de

Control

Contador

de programa

0406

4

10

Memoria
de datos

10

...
...
1FD
1FE
200
201
202
203
204
205
206
207
...
...

R15
R14
R13

R3

R1
R0

--
--
--
...
10

20
4

ALU

406

1

200

3

5

1 – Búsqueda de la instrucción
2 – Decodificación de la instrucción
3 – Operación/Ejecución
4 – Carga/Almacenamiento en registros/memoria
5 – Incremento del contador de programa

Fundamentos de Electrónica: Microprocesadores

8

Memoria
de
instrucciones

...
3FF
400
401
402
403
404
405
406
407
408
409
40A
40B
...

...
LDI r0, 0
ST r0, 200
LDI r0, 0
ST r0, 204
LD r0, 204
LD r3, 200
ADD r3, r0
ST r3, 200
INC r0
ST r0, 204
LDI r1, 20
SUB r1, r0
BRGT -7
...

UPMDIE
INDUSTRIALES

Ejemplo: arquitectura AVR

Memoria de programa

Banco de registros

Elementos de la Unidad de
Control

Unidad Aritmético Lógica

CPU

Memoria de datos

Dispositivos de E/S

Extraído de la hoja de características de los

microcontroladores AtMega de Atmel

UPMDIE
INDUSTRIALES

Fundamentos de Electrónica: Microprocesadores

9

Comparando: Un Intel I7 frente a un AtMega168

Cracterística

Ancho de bus

AtMega168

Intel Core I7 (Quad)

Ratio (aprox)

8

64

Nº de transistores

< 100.000

~731.000.000

Nº de pines

28

Frecuencia de trabajo

16MHz

~1155

~3.2GHz

x8

x10.000

x40

x200

Memoria de trabajo típica

16KB prog. / 1KB datos ~4-8GBytes

x1.000.000

MIPS/MFLOPS

Consumo

Precio

16/0,5

20mW

< 2$

~75.000/60.000

x5.000/x120.000

~100W

~350$

x5.000

x200

Intel Core i7 - 263 mm2

AtMega - 24 mm2

UPMDIE
INDUSTRIALES

http://blog.ioactive.com/2008_01_01_archive.html

http://blog.sina.com.cn/s/blog_54f48a4b01009bdf.html

Fundamentos de Electrónica: Microprocesadores

10
  • Links de descarga
http://lwp-l.com/pdf16160

Comentarios de: 3 - Arquitectura interna de un uP (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad