Procesadores de 64 bits - Universidad Tecnológica Nacional

Anuncio
Procesadores de 64 bits
Técnicas Digitales III
Ing. Gustavo Nudelman
2013
Universidad Tecnológica Nacional - Facultad Regional Buenos Aires
Introducción
•
Desarrollada por AMD en 2003 con el modelo Opteron, continuando con el
Athlon para ser luego tomado por Intel en los modelos de PIV
•
Al igual que el modo protegido, para trabajar en 64 bits debemos activar
una unidad del procesador a fin de pasar a “modo largo” o modo IA32e
•
Dicho modo se habilita mediante el bit LME (long mode enable) del
registro EFER (Extended Feature Enable Register)
•
El modo largo, posee 2 sub-modos de operación:
• “Compatibility mode”: para ejecutar código compatible de IA32
• “64-bit mode”: para ejecutar código de 64 bits
•
El sub-modo se especifica mediante al bit 5 y 6 (D/B y reservado en IA32)
del 6to byte del descriptor de segmento (00=16; 01=32; 10=64;
11=reservado).
•
Para pasar de sub-modo (Dentro del modo largo) debemos cambiar de
segmento de código
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
AMD64 / IA32e - Modos de operación
Legacy mode
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
AMD64 / IA32e - Modos de operación
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Comportamiento de “Long mode”
•
Se utilizan descriptores en la GDT de 8 bytes similares los de modo Legacy
•
Los segmentos se tratan como FLAT y en el sub modo 64 no se chequea el
campo límite
•
Todos los registros de puntero se extienden a 64 bits aunque todavía se
toman como direcciones lineal solo 48 bits. (En modo compatibilidad, los bits
32..47 deben valer 0)
•
Con direcciones lineales de 48 bits, y un sistema de paginación mediante
PAE de 4 niveles se obtienen direcciones físicas de 52 bits.
•
No se dispone de conmutación de tarea por Hardware
•
Se puede verificar si es posible pasar a modo largo mediante la instrucción
CPUID con la funcionalidad dada por EAX=0x80000001, donde se obtendría
el bit 29 de EDX en 1 si el procesador admite este modo
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Direccionamiento en “long mode” – PAE 4K
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Descriptores para paginación de 4K en long
mode
NX: Non exec
MBZ: Must be zero. If not: General protection
IGN: Ignored
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Descriptores para paginación de 4K en long
mode
NX: Non exec
MBZ: Must be zero. If not: General protection
IGN: Ignored
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Direccionamiento en “long mode” – PAE 2M
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Descriptores para paginación de 2M en long
mode
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Descriptores para paginación de 2M en long
mode
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Modelo de ejecución
Los registros de propósito general se expanden a 64 bits
Se disponen de 8 nuevos registros de propósito general (r8. . r15)
Los registros de puntero pueden ser accedidos por byte
Las instrucciones push y pop trabajan con alineaciones de 64 bits.
Se dispone de 8 registros XMM nuevos
Las extensiones de 64 bits no pueden utilizarse en modo protegido ni
en modo compatibilidad
EFLAGS se extiende a 64 bits como RFLAGS
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Modelo de ejecución
RIP
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Modelo de ejecución (extensión de registros)
64
32
16
RAX
RBX
RCX
RDX
RSI
RDI
RBP
RSP
8
EAX ah AX al
EBX bh BX bl
ECX
ch CX cl
EDX dhDX dl
ESI
SI
EDI
DI dil
EBP
BPbpl
ESP
SP spl
sil
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Modelo de ejecución (nuevos registros)
64
32
16
r8
r9
r10
r11
R12
R13
R14
R15
8
r8d
r8w r8b
r9d
r9w r9b
r10d
r10wr10b
r11d
r11w
r12d
r12w
r13d
r13wr13b
r14d
r14wr14b
r15d
r15w
r11b
r12b
r15b
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Registros de control en 64 bits
CR0
CR2
Registros de control en 64 bits
CR3
CR4
Model-specific registers
A partir del procesador Pentium se incorpora un set de registros llamados
MSRs (Model Specific Regiters) cuya cantidad puede variar en diferentes
modelos.
Es por eso que existen 2 instrucciones privilegiadas para trabajar sobre los
mismos rdmsr y wrmsr
Antes de ejecutar cualquiera de estas 2 instrucciones debemos especificar
cual será el MSR a ser accedido mediante ECX
Si la implementación no existe ocurrirá una excepción de protección general
El registro EFER es uno de los tantos MSRs el cual corresponde a
ECX=0C0000080h
Luego mediante rdmsr obtenemos el registro en EDX:EAX. (por que no en
RAX ?)
Entonces para setear el bit que habilita “long mode” del registro EFER
debemos hacer el OR correspondiente y luego ejecutar la instrucción wrmsr
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Extended Feature Enable Register (EFER)
Activación del modo largo
• Si bien para pasar a modo largo, debemos activar el bit LME (long
mode enable) del registro EFER, este modo funciona solo si está
activada la paginación PAE de 4 niveles. Es decir: con el bit LME
lo habilitamos pero no lo activamos
•
Como regla de “buen comportamiento” es conveniente hacerlo
desde modo protegido “Legacy mode” y desactivar la paginación
de este modo para armar las tablas que corresponden al modo
largo.
•
Cuando el modo largo está efectivamente activado, se lo indica
mediante la activación automática del bit LMA (long mode
activated) del registro EFER
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Activando el modo largo
1. Suponiendo que se encuentra en modo protegido: desactivar la
paginación (si es que está activada)
2. Desactivar interrupciones, ya que la IDT en este modo es
diferente a la utilizada en IA32 y cargar idtr con la IDT
correspondiente
3. Debe estar armado en memoria el esquema de 4 niveles
requerido por “long mode”
4. Activar el bit PAE del registro CR4
5. Cargar CR3 con la base de PML4
6. Setear el bit LME del registro EFER
7. Activar la paginación (CR0.PG) lo que causará la activación del
“long mode” (activándose EFER.LMA)
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Comenzando en modo largo
1. Una vez entrado en modo largo, el procesador se encuentra en
“compatibility mode” debido a que CS estaba apuntando a un
descriptor utilizado en IA32 (Legacy)
2. Si quisiéramos activar el sub-modo 64, debemos realizar un JMP
FAR a fin de apuntar CS a un descriptor acorde a este sub-modo
3. Si tenemos correctamente el registro idtr apuntando a una IDT64
entonces habilitamos interrupciones
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Lab 1
“Hello world” 64
Subtitulo o nombre del
capitulo
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Universidad
Tecnológica
Nacional
Interrupciones en IA32e
•
Tanto para “compatibility mode” como para “64 bit mode”, se
utilizan descriptores de 16 bytes a fin de poder almacenar
vectores lineales de 64 bits (a diferencia de IA32 que utiliza
descriptores de 8 bytes)
•
Si se estaba trabajando con una IDT en IA32, se deberá cargar el
registro IDTR para que apunte a una IDT de 64 bits, antes de
pasar a modo largo y habilitar interrupciones.
•
Otra diferencia con respecto a IA32, es que cuando un handler de
interrupción es invocado, siempre se guarda el selector SS,
independientemente de que exista cambio de nivel de privilegio.
•
Recordar que la pila trabaja con qwords –> Debemos retornar de
la interrupción con iretq.
•
No existe la puerta de tarea
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Descriptor de la IDT en modo largo
•
Se debe apuntar a un selector de código de 64 bits
•
IST (Interrupt stack table): Se incorpora la posibilidad de trabajar con
varios stacks diferentes almacenados en una tabla (Debe ser 0 si no se
desea trabajar con la tabla del TSS)
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Manejo de la pila ante una interrupción en
modo largo
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Lab 2
Interrupciones 64
Comandos de bochs
•
•
page <lineal addr>
show <instrucction>
Subtitulo o nombre del
capitulo
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Universidad
Tecnológica
Nacional
Descargar