La CPU es la unidad central de procesamiento responsable de interpretar y ejecutar las instrucciones almacenadas en la memoria de programa usando la ALU para operar sobre la memoria de datos. La ALU realiza todas las operaciones aritméticas y lógicas indicadas en las instrucciones usando registros y literales como operandos. El procesador ejecuta las instrucciones de forma segmentada usando relojes internos para la sincronización.
2. CPU: Unidad Central de Proceso
Es la responsable de la interpretación y ejecución de
las instrucciones guardadas en la memoria de
programa.
Muchas de las instrucciones operan sobre la memoria de
datos, para lo que se usa además la ALU (Unidad
Aritmético-Lógica)
La CPU controla el bus de direcciones de la
memoria de programa, el bus de direcciones de la
memoria de datos y el acceso a la pila.
Para la sincronización del funcionamiento de la CPU
(y con ello de todo el µcontrolador) se utiliza un
circuito oscilador.
http://paginaspersonales.deusto.es/jonathan.garibay/
3. CPU: Unidad Central de Proceso (continuación…)
Ejecución segmentada de instrucciones:
En la mayoría de los procesadores, las instrucciones se
buscan en la memoria y ejecutan de forma secuencial.
En la ejecución Pipe-Line ambas fases se solapan de forma
que, una instrucción se ejecuta al tiempo que se busca la
siguiente, en un mismo ciclo.
Cualquier instrucción de salto emplea dos ciclos para su
búsqueda y ejecución.
Se inserta una instrucción NOP automáticamente.
Busca 1ª Ejecuta 1ª En las instrucciones de
salto se inserta NOP
Busca 2ª Ejecuta 2ª
1 movlw 0x55 Busca 3ª Ejecuta 3ª
2 movwf PORTB
Busca 4ª NOP
3 call subr
Busca 1ª
4 bsf PORTA,RA3 subr
http://paginaspersonales.deusto.es/jonathan.garibay/
4. CPU: Unidad Central de Proceso (continuación…)
La entrada de reloj está “dividida” internamente
entre cuatro (Q1, Q2, Q3 y Q4), creando relojes
internos utilizados para la decodificación de las
instrucciones
El contador de programa se incrementa a cada pulso del
primero (Q1) de los cuatro relojes internos.
La ejecución de una instrucción y la lectura de la
siguiente se realiza en paralelo y se finalizan en el pulso
del cuarto reloj (Q4).
FOSC = 4MHz TOSC = 250nS TINST = 1µS 1MIPS
FOSC = 20MHz TOSC = 50nS TINST = 200nS 5MIPS
…
MIPS = Millones de instrucciones por segundo
http://paginaspersonales.deusto.es/jonathan.garibay/
5. CPU: Unidad Central de Proceso (continuación…)
Cada ciclo Q provee la sincronización para los siguientes
eventos:
Q1 decodificación de la instrucción.
Q2 lectura del dato (si lo hay)
Q3 procesa el dato Realiza la lectura de la
siguiente instrucción a ejecutar
Q4 escribe el dato
PC = PC + 2
¿Y cuando se produce un reset?
¿Y cuando se produce un salto?
http://paginaspersonales.deusto.es/jonathan.garibay/
6. ALU: Unidad Aritmético-Lógica
Realizatodas las operaciones aritméticas y lógicas
indicadas en las instrucciones.
Instrucciones con un solo operando
Se trabaja siempre con un registro de la memoria de datos
Instrucciones con dos operandos
El registro de trabajo W es siempre uno de los operandos
El otro operando puede ser un literal o un registro de la
memoria de datos
La ALU genera una serie de señales o códigos de
condición para indicar casos como acarreo saliente,
overflow, resultado cero, etc.
http://paginaspersonales.deusto.es/jonathan.garibay/
7. ALU: Unidad Aritmético-Lógica (continuación…)
Bus de datos
Resultado del
multiplicador
Multiplicador de 8 bits
Registro de trabajo
Unidad Aritmético-Lógica
http://paginaspersonales.deusto.es/jonathan.garibay/
9. ALU: Unidad Aritmético-Lógica (continuación…)
Instrucciones de operación orientada a un registro
addwf f,d,a: suma “f” y WREG
addwfc f,d,a: suma “f”, WREG y el bit carry
andwf f,d,a: operación AND entre “f” y WREG
decf f,d,a: decremento de “f”
clrf f,a: registro “f” igual a cero
movwf f,d,a: mueve “f” a WREG
mulwf f,d,a: multiplica “f” con WREG
rlcf f,d,a: rota “f” a la izquierda pasando por carry
rlncf f,d,a: rota “f” a la izquierda sin pasar por carry
…
Instrucciones de operación orientada a un registro con salto
decfsz f,d,a: decrementa “f”, salta si “f” es igual a cero
dcfsnz f,d,a: decrementa “f”, salta si “f” no es igual a cero
...
http://paginaspersonales.deusto.es/jonathan.garibay/
10. ALU: Unidad Aritmético-Lógica (continuación…)
Instrucciones de operación orientada a un bit
bcf f,b,a: bit “b” del registro “f” igual a cero
bsf f,b,a: bit “b” del registro “f” igual a uno
btg f,b,a: cambia el estado del bit “b” del registro “f”
Instrucciones de operación orientada a un bit con
salto
btfsc f,b,a: verifica el bit “b” del resguitro “f”, salta si es
cero
btfss f,b,a: verifica el bit “b” del resguitro “f”, salta si es
uno
http://paginaspersonales.deusto.es/jonathan.garibay/
11. ALU: Unidad Aritmético-Lógica (continuación…)
Instrucciones de operación orientada a un literal
addlw k: suma “k” y WREG
andlw k: operación AND entre “k” y WREG
movlw k: mueve “k” a WREG
mullw k: multiplica “k” con WREG
…
Instrucciones de control con bits de estado
bc n: ve a la dirección “n” si hay carry
bn n: ve a la dirección “n” si hay negative
bnc n: ve a la dirección “n” si no hay carry
…
http://paginaspersonales.deusto.es/jonathan.garibay/