Publicado el 30 de Diciembre del 2019
372 visualizaciones desde el 30 de Diciembre del 2019
575,7 KB
18 paginas
Introducción al simulador
Mapa de memoria
Procesador
Ciclo de ejecución
Ejercicios propuestos
Introducción al simulador
Departamento de Automática
Sistemas Operativos
Introducción al simulador
1 / 17
Introducción al simulador
Mapa de memoria
Procesador
Ciclo de ejecución
Ejercicios propuestos
Índice
● Introducción al simulador
● Mapa de memoria
●
Proyecciones de dispositivos de entrada/salida
● Procesador
● Registros
●
Instrucciones
● Ciclo de ejecución
● Ejercicios propuestos
Sistemas Operativos
Introducción al simulador
2 / 17
Introducción al simulador
Mapa de memoria
Procesador
Ciclo de ejecución
Ejercicios propuestos
Descripción general
Arquitectura del simulador
Descripción general
Sitio web
https://parraman.github.io/asm-simulator/
Proyecto github (código fuente)
https://github.com/parraman/asm-simulator
●
Simulador de una arquitectura de 16 bits
○
○
○
Angular 2+ (Typescript)
Bootstrap 3
CodeMirror
Sistemas Operativos
Introducción al simulador
3 / 17
Introducción al simulador
Mapa de memoria
Procesador
Ciclo de ejecución
Ejercicios propuestos
Descripción general
Arquitectura del simulador
Descripción general
Editor de código
Visor de eventos
Dispositivos E/S
CPU (Registros)
Mapa de memoria
Mapa de E/S
Sistemas Operativos
Introducción al simulador
4 / 17
Introducción al simulador
Mapa de memoria
Procesador
Ciclo de ejecución
Ejercicios propuestos
Descripción general
Arquitectura del simulador
Arquitectura del simulador
Controlador de
Interrupciones
RAM
Display
Visual
Temporizador
(timer)
Teclado
numérico
Procesador
Bus de direcciones
Bus de entrada/salida
Display
Textual
Sistemas Operativos
Introducción al simulador
5 / 17
Descripción básica de los componentes básicos del sistema simulado:
Procesador
-
- Memoria: espacio de direcciones de 16 bits. Solo se usan los primeros 1024
bytes
Controlador de interrupciones: centraliza las distintas fuentes de
interrupción. Se explica en la siguiente práctica
Timer: permite programar interrupciones (alarma). Se explica en la siguiente
práctica
Dispositivos de E/S: display visual, display textual y teclado numérico
-
-
-
Introducción al simulador
Mapa de memoria
Procesador
Ciclo de ejecución
Ejercicios propuestos
Descripción general
Proyecciones de dispositivos de E/S
Mapa de memoria
Descripción general
● Mapa de memoria de 1024
bytes
● Permite la edición manual de
celdas:
(Ctrl + click)
ó
(Cmd + click)
● Los valores de
las celdas
tienen formato hexadecimal
Sistemas Operativos
Introducción al simulador
6 / 17
Ejemplos: edición manual de una o varias celdas
Introducción al simulador
Mapa de memoria
Procesador
Ciclo de ejecución
Ejercicios propuestos
Descripción general
Proyecciones de dispositivos de E/S
Mapa de memoria
Proyecciones de dispositivos de E/S
El mapa de memoria está dividido en tres
zonas:
Mapa de memoria
0x0000
●
●
●
de
RAM: memoria
Zona
de
lectura/escritura donde almacenar datos
y código
Zona del display textual: cada celda se
corresponde con una letra. El valor será el
carácter ASCII a mostrar
Zona del display visual: cada celda se
corresponde con un píxel. El valor será el
color del píxel
0x02EF
0x02F0
0x0300
0x03FF
RAM
Display textual
Display visual
Sistemas Operativos
Introducción al simulador
7 / 17
Ejemplos: edición manual de una o varias celdas de las proyecciones del display
textual y del display visual
Introducción al simulador
Mapa de memoria
Procesador
Ciclo de ejecución
Ejercicios propuestos
Descripción general
Registros
Juego de instrucciones
Procesador (CPU)
Descripción general
Procesador
Bus de direcciones
Control Unit
Bus de entrada/salida
ALU
El procesador consta de:
● Unidad de control (Control Unit): se encarga de obtener de
memoria, interpretar y ejecutar las instrucciones
● Unidad Aritmético-Lógica (ALU): realiza funciones aritméticas y
lógicas a nivel de bit
Sistemas Operativos
Introducción al simulador
8 / 17
Introducción al simulador
Mapa de memoria
Procesador
Ciclo de ejecución
Ejercicios propuestos
Descripción general
Registros
Juego de instrucciones
Procesador (CPU)
Registros
El procesador incluye tres tipos de registros:
● Registros de propósito general
● Registros de direcciones
● Registro de Estado (Status Register)
Sistemas Operativos
Introducción al simulador
9 / 17
Introducción al simulador
Mapa de memoria
Procesador
Ciclo de ejecución
Ejercicios propuestos
Descripción general
Registros
Juego de instrucciones
Procesador (CPU)
Registros de propósito general
A
C
16 bits
16 bits
AH
CH
AL
8 bits
CL
8 bits
B
D
16 bits
16 bits
BH
DH
BL
8 bits
DL
8 bits
El procesador incluye cuatro registros de propósito general:
●
●
Tienen un tamaño de 16 bits
Pueden ser accedidos en modo palabra o modo byte
Sistemas Operativos
Introducción al simulador
10 / 17
Introducción al simulador
Mapa de memoria
Procesador
Ciclo de ejecución
Ejercicios propuestos
Descripción general
Registros
Juego de instrucciones
Procesador (CPU)
Registros de direcciones
Instruction
Pointer
IP
16 bits
Stack
Pointer
SP
SSP
16 bits
USP
16 bits
El procesador mantiene dos punteros de pila:
●
●
Pila de modo supervisor (SSP)
Pila de modo usuario (USP)
Sistemas Operativos
Introducción al simulador
11 / 17
La selección de pila se hace de forma automática. Si la CPU está en modo
supervisor, el registro SP es el SSP. Si está en modo usuario, el registro es el USP.
Todas las instrucciones que direccionan el registro de pila de forma explícita, siempre
se refieren al SP genérico. Ese SP es, por tanto, como un “alias” del verdadero
registro puntero de pila.
Introducción al simulador
Mapa de memoria
Procesador
Ciclo de ejecución
Ejercicios propuestos
Descripción general
Registros
Juego de instrucciones
Procesador (CPU)
Registro de estado
Status
Register
S
1
0
0
0
0
0
0
0
0
0
0
0
0
M C
Z
0
HF
0
0
El registro de estado define los siguientes flags:
16 bits
●
S: Supervisor Mode
● M: Interrupt Mask
● C: Carry flag
●
Z: Zero flag
●
F: Fault mode
● H: Halt mode
Sistemas Operativos
Introducción al simulador
12 / 17
-
-
-
-
-
-
Supervisor Mode Flag. Activado si la CPU está en modo supervisor y
desactivado si está en modo usuario. La CPU arranca en modo supervisor.
Los modos de operación se explican más en detalle prácticas posteriores.
Interrupt Mask Flag. Activado si la CPU permite interrupciones y desactivado
si las interrupciones están deshabilitadas. Se explica más en detalle en
prácticas posteriores.
Carry Flag. Se activa si la última operación aritmético-lógica ha producido
acarreo. Por ejemplo, si la suma de dos enteros produce un desbordamiento
o si la resta de dos enteros produce un número negativo.
Zero flag. Se activa si la última operación aritmético-lógica ha dado un
resultado de cero. Si el resultado último fue distinto de cero, el bit estará
desactivado.
Fault mode flag. Activado si la CPU se encuentra en modo fallo (error
irrecuperable que requiere un reinicio).
Halt mode flag. Activado si la CPU se encuentra en modo bloqueo. En este
modo, la CPU sigue activada pero deja de ejecutar instrucciones hasta que se
produce una interrupción. Se explica más en detalle en prácticas posteriores.
Introducción al simulador
Mapa de memoria
Procesador
Ciclo de ejecución
Ejercicios propuestos
Descripción general
Registros
Juego de instrucciones
Juego de instrucciones
Formato de instrucción
opcode
(obligatorio)
operando 1
(si presente)
operando 2
(si presente)
8 bits
8 o 16 bits
8 o 16 bits
● Una instrucción está formada por:
○ Un código de operación (opcode) de 8 bits
○ Niguno, uno o dos operandos de 8 o 16 bits
● El código de operación determina el tipo de instrucción a
ejecutar y los operandos que puedan necesitarse
● Cada instrucción está identificada por un mnemónico (e.g.
MOV, ADD, etc)
Sistemas Operativos
Introducción al simulador
13 / 17
Un mismo mnemónico (e.g. MOV) se puede utilizar para identificar una o varias
instrucciones dependiendo de los distintos tipos de operandos. En ese caso el
procesador define un opcode distinto para cada uno de los distintos conjuntos de
operandos.
Introducción al simulador
Mapa de memoria
Procesador
Ciclo de ejecución
Ejercicios propuestos
Descripción general
Registros
Juego de instrucciones
Juego de instrucciones
Tipos de operandos
Nombre
Descripción
Tamaño
BYTE
WORD
Valor inmediato de 8 bits
Valor inmediato de 16 bits
ADDRESS
Dirección de 16 bits
REGISTER_8BITS
Registro de 8 bits
REGISTER_16BITS
Registro de 16 bits
1 byte
2 bytes
2 bytes
1 byte
1 byte
REGADDRESS
Direccionamiento por registro + offset
2 bytes
Sistemas Operativos
Introducción al simulador
14 / 17
REGISTER_16BITS: este operando codifica el número de referencia o índice de uno
de los registros de 16 bits que implementa la CPU. Los índices de cada registro son
los siguientes:
A - Registro de propósito general A:
B - Registro de propósito general B:
C - Registro de propósito general C:
D - Registro de propósito general D:
SP - Registro puntero de pila:
0 (0x00)
1 (0x01)
2 (0x02)
3 (0x03)
4 (0x04)
REGISTER_8BITS: este operando codifica el número de referencia o índice de uno
de los registros de 8 bits que implementa la CPU. Los índices de cada registro son
los siguientes:
AH - MSB del Registro A: 9 (0x09)
AL - LSB del Registro A:
10 (0x0A)
BH - MSB del Registro B: 11 (0x0B)
BL - LSB del Registro B:
12 (0x0C)
CH - MSB del Registro C:
13 (0x0D)
CL - LSB del Registro C:
14 (0x0E)
DH - MSB del Registro D:
15 (0x0F)
DL - LSB del Registro D:
16 (0x10)
REGADDRESS: este operando codifica con 1 byte el número de referencia de un
registro de 16 bits y, con el otro byte, el offset a añadir al valor del parámetro para
formar la dirección efectiva. El offset se codifica empleando complemente a dos
[-128, 127].
Introd
Comentarios de: (SSOO) introducción al simulador (0)
No hay comentarios