Está en la página 1de 43

Técnicas Digitales II

Datapath de ciclo único

Dr.Ing.Steiner Guillermo

Bibliografía
Harris & Harris. Digital design and computer architecture:
ARM edition. Elsevier, 2015. Capítulo 7.
– Hoja 385 a 397
Introducción

En este capitulo veremos como se construye internamente
un microprocesador.

Una vez estudiado como es la arquitectura ARM, (set de
instrucciones, registros, manejo de memoria,etc).
El paso siguientes es estudiar la microarquitectura, es
decir como esta formado realmente los bloques de registros,
ALU, máquinas de estados, memorias, etc.

Una arquitectura puede tener muchas microarquitecturas,
cada una con su particularidades de rendimientos, costos y
complejidad.

Independientemente de la microarquitectura, todos los
procesadores de la misma arquitectura correrán el mismo
programa.
Arquitectura
La Arquitectura está formada por:

El Set de Instrucciones

El estado arquitectónico del ARM



16 registros de 32 bits

Un registro de estado.

Cualquier microarquitectura debe contener todo esto


Estado Arquitectónico

Partiendo de un Estado Arquitectónico determinado

El microprocesador ejecuta una instrucción particular con un
conjunto particular de datos

Se produce un nuevo Estado Arquitectónico

Algunas microarquitecturas poseen estados no


arquitectónicos adicionales para simplificar la lógica o
mejorar el rendimiento
Desarrollo de una Microarquitectura

A continuación se desarrollará una microarquitectura de
ejemplo

Para mantener sencillo el diseño, utilizaremos un conjunto
reducido de instrucciones.

Instrucciones de Procesamiento de Datos

ADD, SUB, AND, ORR



Con manejo de inmediato y registro pero no shift.

Instrucciones de acceso a memoria Salto (Branch)


LDR y STR B

Con offset inmediato ●
Solo salto incondicional
Diseño
La microarquitectura la dividiremos en dos partes

Datapath, contiene las estructuras como memoria,


registros, ALU y multiplexores, opera en palabras de
datos (para ARM datos de 32 bits).

Unidad de Control, recibe la instrucción actual del


datapath y le dice al datapath como ejecutar esa
instrucción.

Genera las señales para seleccionar los multiplexores,
habilitar registros y señales de escritura a memoria.
Diseño Los elementos de Estado
Para el desarrollo del procesador comenzamos definiendo
todos los elementos de estado que posee el procesador.

Lo requerido para el estado Memorias: para simplificar la


arquitectónico del procesador dividimos en dos

16 Registros (incluyendo el PC) ●
De instrucciones

Registro de Estados o Banderas ●
De datos

Luego incluiremos lógica combinacional para unir estos


elementos y calcular el nuevo estado basado en el
estado actual.
Elementos del estado
Contador de Programa (PC) STATUS
CLK CLK
PC' PC

32 32 4 4

CLK CLK
WE WE 32
4 A1 RD1
A RD A RD 4 32
A2 RD2
32 32 32 32
Memoria de Memoria de 4 A3 Arch. de
Instrucciones Datos 32 Registros
WD WD3
32 32 R15
Elementos del estado
Contador de Programa (PC) El PC perteneceSTATUS
al Archivo de
CLK
Registro pero porCLK
ser leído y
PC' PC escrito en cada ciclo se
presenta como registro aislado
32 32 4 4

CLK CLK
WE WE 32
4 A1 RD1
A RD A RD 4 32
A2 RD2
32 32 32 32
Memoria de Memoria de 4 A3 Arch. de
Instrucciones Datos 32 Registros
WD WD3
32 32 R15
Elementos del estado
Contador de Programa (PC) STATUS
La memoria CLKde instrucciones CLK
solo tendrá un puerto de
direcciónPC' PC de
y un puerto En la memoria de datos,
lectura ambos de 32 bis además se suma el puerto
32 32 de escritura,
4 clock4y señal
para habilitar la escritura

CLK CLK
WE WE 32
4 A1 RD1
A RD A RD 4 32
A2 RD2
32 32 32 32
Memoria de Memoria de 4 A3 Arch. de
Instrucciones Datos 32 Registros
WD WD3
32 32 R15
Elementos del estado
Posee 15 Registros
Contador (R0-R14)
de Programa (PC) STATUS
A1 indica queCLK
registro sale por RD1 CLK
A2 hace lo
PC'propio con
PC RD2
A3 indica en que registro se guarda
lo ingresado
32 por WD3
32 4 4
Para poder tener a R15(PC) como
salida, su valor se inyecta por R15 CLK
CLK
WE WE 32
4 A1 RD1
A RD A RD 4 32
A2 RD2
32 32 32 32
Memoria de Memoria de 4 A3 Arch. de
Instrucciones Datos 32 Registros
WD WD3
32 32 R15
Elementos del estado

Lectura, todas las lecturas son combinacionales, una


modificación en la dirección cambia la salida (no hay
reloj).

Escritura, son guardadas en el flanco ascendente del


reloj (si la señal de habilitación está activa).
Los datos deberán estar estable antes de ese instante.
El estado del micro cambia en el instante que se
produce el flanco.
Análisis de Rendimiento

Una arquitectura puede estar implementada con varias
microarquitecturas cada una de diferente costo y
rendimiento.

Costo: el costo depende de la tecnología utilizada y de la
complejidad del hardware.

A mayor cantidad de hardware o mejor tecnología
mayor costo.

Rendimiento: el rendimiento es mas complejo

Medir reloj, cantidad de núcleos o hasta operaciones
por segundo no es suficiente.

Solución ideal pero no real: medir el rendimiento del
programa de interés en cada micro
Análisis de Rendimiento

Una alternativa a esto, es medir el rendimiento con una serie
de programas denominados benchmarks

Benchmarks conjuntos de programas que simulan


procesos comunes en aplicaciones, para medir el
rendimiento de un microprocesador a una determinada
tarea.
Permiten determinar el comportamiento de un
microprocesador y compararlos con otros antes de
adquirirlo.
Dhrystone, CoreMark, SPEC son algunos de los
benchmarks mas conocidos.
Análisis de Rendimiento

El tiempo de ejecución de un programa está dado por:
ciclos segundos
Tiempo de Ejecución=(instrucciones)( )( )
instrucciones ciclos

Instrucciones:

La cantidad de instrucciones depende de la
arquitectura

Una instrucción en una arquitectura puede requerir
varias en otra.

Depende también del programador o del compilador

Se asume arquitectura ARM donde el número de
instrucciones de cada programa no cambia.
Análisis de Rendimiento

El tiempo de ejecución de un programa está dado por:
ciclos segundos
Tiempo de Ejecución=(instrucciones)( )( )
instrucciones ciclos

Ciclos por instrucción o CPI



Es la cantidad de ciclos de reloj (promedio) para
ejecutar una instrucción.

Es la inversa de instrucciones por ciclo (IPC)

Diferentes arquitecturas tienen diferente CPI

El acceso a memoria puede afectar el CPI, en este
ejemplo no se considera.
Análisis de Rendimiento

El tiempo de ejecución de un programa está dado por:
ciclos segundos
Tiempo de Ejecución=(instrucciones)( )( )
instrucciones ciclos

Tiempo de cada ciclo o período del reloj (TC)



Determinado por el camino critico a través del
procesador, (el camino mas lento)

Esto depende la microarquitectura, diseño de la lógica,
etc.

históricamente se duplica la velocidad de los transistores
cada 4 o 6 años. (con el mismo diseño, un procesador
corre mas rápido que otro fabricado 4 o 6 años antes)
Análisis de Rendimiento

ciclos segundos
Tiempo de Ejecución=(instrucciones)( )( )
instrucciones ciclos

Finalmente el desafío será encontrar un diseño que:



Minimice los tiempos de ejecución

Cumpla con las restricciones de costo y consumo
Microarquitectura
Se desarrolla a continuación un microprocesador de 1
solo ciclo.

El datapath se construirá conectando con lógica los
elementos de estado

Esta lógica permitirá ejecutar las diferentes
instrucciones a través de sus lineas de control.

La Unidad de Control tendrá la lógica combinacional
necesaria para que dada la instrucción de entrada
genere las apropiadas lineas de control al datapath.
DATAPATH P,U,B,W no se utilizan, se asume 1,1,0,0

Comenzamos con la instrucción LDR

I=0 11:0
31:28 25:20 19:16 15:12 11:00 imm12
cond 01 I PUBW L Rn Rd src2 11:7 6:5 4 3:0
shamt5 sh 0 Rm
I=1


Modo de Direccionamiento: Inmediato (I=0)

Registro base + offset (U=1 add )

Tipo de Direcc.: Pre-Indexado sin modificar (PW=10)

Tipo de Dato: Word (B=0)
Ejemplo LDR R1,[R2,#5]
LDR Rd, [Rn, imm12]
Instrucción LDR – Paso 1
Se obtiene la instrucción

El PC entra como dirección en la mem de instrucciones

Se obtiene la instrucción
Instrucción

CLK
CLK CLK
WE
PC' PC A1 RD1 WE
A RD
RD2 A
Mem. A2 RD
de Arch.
A3 de Mem.
Instrucc.
WD3 Reg. de
WD
R15 Datos
Instrucción LDR - Paso 2
Leer el registro base del Archivo de Registros.

El nro del registro ( bit 19 a 16) entra en A1

El Archivo de Registro (AR) dispone el valor del reg en
RD1 Instrucción

CLK
CLK CLK
WE
PC' PC 19:16
A1 RD1 WE
A RD
RD2 A
Mem. A2 RD
de Arch.
A3 de Mem.
Instrucc.
WD3 Reg. de
WD
R15 Datos

31:28 25:20 19:16 15:12 11:00


LDR Rd, [Rn, imm12] cond 01 I PUBW L Rn Rd src2
imm12
Instrucción LDR – Paso 3
El corrimiento u offset es un valor inmediato, se toma
de los últimos 12 bits y se extiende a 32 bits.

Instrucción

CLK
CLK CLK
WE
PC' PC 19:16
A1 RD1 WE
A RD
RD2 A
Mem. A2 RD
de Arch.
A3 de Mem.
Instrucc.
WD3 Reg. de
WD
R15 Datos

11:0 Extender Inmediato expandido

31:28 25:20 19:16 15:12 11:00


LDR Rd, [Rn, imm12] cond 01 I PUBW L Rn Rd src2
imm12
Instrucción LDR – Paso 4

Se calcula la dirección de memoria (Rd + imm12)
utilizando la ALU como sumador (AluCtr = 00).

El Resultado es la dirección de la memoria de variables
Instrucción AluCtr
00
CLK (+)
CLK CLK
WE Dato
PC' PC 19:16 A
A1 RD1 WE a
A RD AluResul Leer
RD2 A
Mem. A2 ALU RD
Arch. B
de
A3 de Mem.
Instrucc.
WD3 Reg. de
WD
R15 Datos

11:0 Extender Inmediato expandido

31:28 25:20 19:16 15:12 11:00


LDR Rd, [Rn, imm12] cond 01 I PUBW L Rn Rd src2
imm12
Instrucción LDR – Paso 5

El dato devuelto por la memoria es guardado en el
registro destino.

RegWr = 1 habilita la escritura de WD3 en el AR
Instrucción RegWr AluCtr
1 00
CLK (+)
CLK CLK
WE Dato
PC' PC 19:16 A
A1 RD1 WE a
A RD AluResul Leer
RD2 A
Mem. A2 ALU RD
Arch. B
de
Mem.
Instrucc. 15:12 A3 de
WD3 Reg. de
WD
R15 Datos

11:0 Extender Inmediato expandido

31:28 25:20 19:16 15:12 11:00


LDR Rd, [Rn, imm12] cond 01 I PUBW L Rn Rd src2
imm12
Instrucción LDR – Paso 6

Se determina la dirección de la próxima instrucción
sumando 4 al PC

Instrucción RegWr AluCtr


1 00
PC’=PC+4 (+)
CLK
CLK CLK
WE Dato
PC' PC 19:16 A
A1 RD1 WE a
A RD AluResul Leer
RD2 A
Mem. A2 ALU RD
Arch. B
de
Mem.
Instrucc. 15:12 A3 de
WD3 Reg. de
WD
R15 Datos
++ PC+4
4
11:0 Extender Inmediato expandido
Resultado
Instrucción LDR

Finalmente, la actualización de los registros se realiza
en el flanco ascendente del reloj

PC’= PC + 4 →Instrucción
PC RegWr AluCtr
1 00
CLK (+)
CLK CLK
WE Dato
A
PC' PC WD3→ Rd
19:16
A1 RD1 WE a
A RD AluResul Leer
RD2 A
Mem. A2 ALU RD
Arch. B
de
Mem.
Instrucc. 15:12 A3 de
WD3 Reg. de
WD
R15 Datos
++ PC+4
4
11:0 Extender Inmediato expandido
Resultado
Instrucción usando R15
Para utilizar el PC como fuente o destino, hacemos:

Como Fuente: se incorpora mediante una entrada
especial (R15) en el AR, se utiliza PC+8 como entrada.
PCSrc RegWr AluCtr
Instrucción
0 1 00
CLK (+)
CLK
15
WE CLK Dato
PC' PC 19:16 A
1 A1 RD1 WE a
A RD AluResul Leer
0 RD2 A
Mem. A2 ALU RD
Arch. B
de
Mem.
Instrucc. 15:12 A3 de
4 WD3 Reg. de
++ PC+8 WD
R15 Datos
++ PC+4
4
11:0 Extender Inmediato expandido
Resultado

31:28 25:20 19:16 15:12 11:00


LDR Rd, [PC, imm12] cond 01 I PUBW L PC
Rn Rd src2
imm12
Instrucción usando R15
Para utilizar el PC como fuente o destino, hacemos:

Como Destino: se incorpora un mux y cuando
PCSrc=1 entonces PC’= Resultado
PCSrc RegWr AluCtr
Instrucción
1 0 00
CLK (+)
CLK CLK
WE Dato
PC' PC 19:16 A
1 A1 RD1 WE a
A RD AluResul Leer
0 RD2 A
Mem. A2 ALU RD
Arch. B
de
Mem.
Instrucc. 15:12 A3 de
4 WD3 Reg. de
++ PC+8 WD
R15 Datos
++ PC+4
4
11:0 Extender Inmediato expandido
Resultado

31:28 25:20 19:16 15:12 11:00


LDR PC, [Rn, imm12] cond 01 I PUBW L Rn PC
Rd src2
imm12
DATAPATH
Ahora se expande con el manejo de la instrucción STR

I=0 11:0
31:28 25:20 19:16 15:12 11:00 imm12
cond 01 I PUBW L Rn Rd src2 11:7 6:5 4 3:0
shamt5 sh 0 Rm
I=1

Se continua con el uso de inmediato, pero ahora en el


STR

Ejemplo STR R1,[R2,#5]


STR Rd, [Rn, imm12]
Instrucción STR

Al igual que el LDR, se utiliza un registro como base y el
valor inmediato extendido

La ALU se utiliza como sumador y el resultado entra a la
PCSrc
memoria
Instrucción RegWr AluCtr
0 0 00
CLK (+)
CLK CLK
WE Dato
PC' PC 19:16 A
1 A1 RD1 WE a
A RD AluResul Leer
0 RD2 A
Mem. A2 ALU RD
Arch. B
de
Mem.
Instrucc. 15:12 A3 de
4 WD3 Reg. de
++ PC+8 WD
R15 Datos
++ PC+4
4
11:0 Extender Inmediato expandido
Resultado

31:28 25:20 19:16 15:12 11:00


STR Rd, [Rn, imm12] cond 01 I PUBW L Rn Rd src2
imm12
Instrucción STR

Rd ahora guardar su valor en la memoria

MemWr = 1 para habilitar la escritura en la memoria
RegWR = 0 deshabilitando la escritura en AR
PCSrc RegWr AluCtr MemWr
Instrucción
0 0 00 1
CLK (+)
CLK CLK
WE Dato
PC' PC 19:16 A
1 A1 RD1 WE a
A RD AluResul Leer
0 RD2 A
Mem. A2 ALU RD
Arch. B
de
Mem.
Instrucc. 15:12 A3 de
4 WD3 Reg. Dato a Escribir de
++ PC+8 WD
R15 Datos
++ PC+4
4
11:0 Extender Inmediato expandido
Resultado

31:28 25:20 19:16 15:12 11:00


STR Rd, [Rn, imm12] cond 01 I PUBW L Rn Rd src2
imm12
DATAPATH
Instrucciones de Procesamientos de Datos (ADD, SUB,
AND y ORR) 11:8 7:0
I=1 rot imm8
31:28 25 26:21 20 19:16 15:12 11:00
cond 00 I cmd S Rn Rd op2
11:7 6:5 4 3:0
I=0 shamt5 sh 0 Rm

Al igual que LDR y STR comenzamos con inmediato



Lee un registro Rn, un inmediato imm8 y opera

El resultado de la ALU se guarda en el registro Rd y las
banderas se transfieren por AluFlags

Ejemplo ADD R1,R2,#100


ADD Rd, Rn, imm8
Instrucción de Procesamiento de Datos (Inm)

MemtoR = 0, nuevo mux selec. el resultado de ALU

ImmSrc = 0, la nueva linea, configura el modulo
extender para tomar un inm de 8 en lugar de 12
PCSrc ImmSrc AluFlags MemToR
Instrucción RegWr AluCtr MemWr
0/1 0(in8) 1/0 0 0
CLK
CLK CLK
WE Dato
PC' PC 19:16 A
1 A1 RD1 WE a
A RD AluResul Leer
0 RD2 A
Mem. A2 ALU RD 1
Arch. B
de
Mem.
Instrucc. 15:12 A3 de 0
4 WD3 Reg. Dato a Escribir de
++ PC+8 WD
R15 Datos
++ PC+4
4
23:0 Extender Inmediato expandido
Resultado

31:28 25 26:21 20 19:16 15:12 11:8 7:0


ADD Rd, Rn, imm8 cond 00 I cmd S Rn Rd rot op2
imm8
Instrucción de Procesamiento de Datos (Inm)

AluCtr configura a la ALU con el tipo de operación

Finalmente AluFlags, posee las banderas del resultado

PCSrc ImmSrc AluFlags MemToR


Instrucción RegWr AluCtr MemWr
0/1 0(in8) 1/0 nn 0 0
CLK
CLK CLK
WE Dato
PC' PC 19:16 A
1 A1 RD1 WE a
A RD AluResul Leer
0 RD2 A
Mem. A2 ALU RD 1
Arch. B
de
Mem.
Instrucc. 15:12 A3 de 0
4 WD3 Reg. Dato a Escribir de
++ PC+8 WD
R15 Datos
++ PC+4
4
23:0 Extender Inmediato expandido
Resultado

31:28 25 26:21 20 19:16 15:12 11:8 7:0


ADD Rd, Rn, imm8 cond 00 I cmd S Rn Rd rot op2
imm8
DATAPATH

Instrucciones de Procesamientos de Datos


11:8 7:0
I=1 rot imm8
31:28 25 26:21 20 19:16 15:12 11:00
cond 00 I cmd S Rn Rd op2
11:7 6:5 4 3:0
I=0 shamt5 sh 0 Rm

Ahora reemplazamos el inmediato por el Rm, sin


desplazamiento

Ejemplo ADD R1,R2,R3


ADD Rd, Rn, Rm
Instrucción de Procesamiento de Datos (Reg)
● Ahora el operador B de la ALU es un registro, para esa función se
incorporan 2 mux y dos señales
Src = 0 y AluSrc = 0

PCSrc ImmSrc AluSrc AluRegs MemToR


Instrucción Src RegWr AluCtr MemWr
0/1 0 x 1/0 0 nn 0 0
CLK
CLK CLK
WE Dato
PC' PC 19:16 A
1 A1 RD1 WE a
A RD 1 AluResul Leer
0 RD2 A
Mem. A2 1 ALU RD 1
3:0 0 Arch. B
de
Mem.
Instrucc. 15:12 A3 de 0 0
4 WD3 Reg. Dato a Escribir de
++ PC+8 WD
R15 Datos
++ PC+4
4
11:0 Extender Inmediato expandido
Resultado

31:28 25 26:21 20 19:16 15:12 11:7 6:5 4 3:0


ADD Rd, Rn, Rm cond 00 I cmd S Rn Rd shamt5 op2
sh 0 Rm
DATAPATH L=0 no se implementa la op de link

Instrucciones de Salto (Branch)

31:28 25 24 23:0
cond 10 1 L imm24

El Cálculo del BTA (Branch Target Adress) es:


BTA = ExtImm + (PC + 8)
ExtImm = imm24 << 2 y extendido con signo a 32 bits

Ejemplo B etiqueta
Instrucción de Salto

Un mux permite seleccionar como entrada A del source
al R15

PCSrc R15 ImmSrc AluSrc AluRegs MemToR


Instrucción Src RegWr AluCtr MemWr
1 10
15 1 CLK
CLK CLK
WE Dato
PC' PC 19:16 0 A
1 A1 RD1 WE a
A RD 1 AluResul Leer
0 RD2 A
Mem. A2 1 ALU RD 1
3:0 0 Arch. B
de
Mem.
Instrucc. 15:12 A3 de 0 0
4 WD3 Reg. Dato a Escribir de
++ PC+8 WD
R15 Datos
++ PC+4
4
23:0 Extender Inmediato expandido
Resultado
31:28 25 24 23:0
B etiqueta cond 10 1 L imm24
Instrucción de Salto

El modulo que extiende los nros inmediatos, posee una
nueva función, extender nro de 24 bits con signo y
desplazarlo dos lugares (x 4)

PCSrc R15 ImmSrc AluSrc AluRegs MemToR


Instrucción Src RegWr AluCtr MemWr
1 1 X 10 0 1 00 0 0
15 1 CLK (+)
CLK CLK
WE Dato
PC' PC 19:16 0 A
1 A1 RD1 WE a
A RD 1 AluResul Leer
0 RD2 A
Mem. A2 1 ALU RD 1
3:0 0 Arch. B
de
Mem.
Instrucc. 15:12 A3 de 0 0
4 WD3 Reg. Dato a Escribir de
++ PC+8 WD
R15 Datos
++ PC+4
4
23:0 Extender Inmediato expandido
Resultado
31:28 25 24 23:0
B etiqueta cond 10 1 L imm24

Bibliografía
Harris & Harris. Digital design and computer architecture:
ARM edition. Elsevier, 2015. Capítulo 7.
¿ Preguntas ?

También podría gustarte