Story Transcript
ESTRUCTURA DE MICROPROCESADORES La arquitectura IA32 Profesor Ing. Johan Carvajal Godínez
JCG-2009
AGENDA DE LA CLASE 1. Conceptos básicos 2. La arquitectura IA32 3. Evolución de los microprocesadores Intel 4. Administración de la memoria en IA32 5. Componentes de una microcomputadora IA32 6. Niveles de programación para IA32 JCG-2009
Diseño básico de un microcomputador • El reloj sincroniza la operación del sistema • Una unidad de control (CU) coordina la secuencia de ejecución de instrucciones. • Una unidad aritmético-lógica (ALU) realiza los cálculos y operaciones lógicas data bus
registers Central Processor Unit (CPU) ALU
CU
Memory Storage Unit
clock control bus
address bus JCG-2009
I/O Device #1
I/O Device #2
Importancia del reloj • Sincroniza los elementos del sistema (CPU-BUS-componentes) • Establece la base del tiempo para medir el rendimiento del sistema. • Se utiliza para disparar eventos que determinan la operación del sistema one cycle 1 0 JCG-2009
Ciclo de ejecución de una instrucción PC I-1 memory op1 op2
program I-2 I-3 I-4 fetch
read registers
registers
write
write
I-1 decode
• Búsqueda de la instrucción (Fetch) • Decodificacion (Decode) • Búsqueda de operandos • Ejecución • Almacenamiento del resultado
flags
ALU execute
(output)
JCG-2009
instruction register
Implementación multimulti-etapa • La implementación multi-etapa (pipelining) posibilita la ejecución de instrucciones en paralelo. • La instrucción se divide en etapas discretas con una función específica Stages
Etapas usadas comúnmente: S1
1. Bus Interface Unit (S1)
1
5. Segment Unit (S5)
Cycles
4. Execution Unit (S4)
7
10 11 12
JCG-2009
S6
I-1 I-1
6
9
La figura muestra el flujo de un procesador sin ¨PIPELINING¨
S5
I-1
5
8
6. Paging Unit (S6)
S4
I-1
3 4
3. Instruction Decode Unit (S3)
S3
I-1
2
2. Code Pre-fetch Unit (S2)
S2
I-1 I-2 I-2 I-2 I-2 I-2 I-2
Ejecución PIPELINED Hace un uso eficiente de las estructuras del microprocesador y logra mejor rendimiento a nivel de cantidad de instrucciones procesadas
Cycles
Stages S2
1
S1 I-1
2
I-2
I-1
3 4 5 6 7
I-2
S3
S4
S5
S6 Para k estados y n instrucciones se requieren un número de ciclos:
I-1 I-2
I-1 I-2
k + (n – 1)
I-1 I-2
JCG-2009
I-1 I-2
Riesgos del ¨Pipelining¨ Pipelining¨ Cuando una etapa requiere dos ciclos de reloj o más, esos ciclos adicionales se pierden en ¨ las otras etapas del ¨PIPE¨ Stages
Cycles
S1
S2
S3
exe S4
1
I-1
2
I-2
I-1
3
I-3
I-2
I-1
I-3
I-2
I-1
I-3
I-1
4 5
S5
k + (2n – 1)
6 7
I-2 I-2
I-1
8
I-3
I-2
9
I-3
10 11
S6
Para k estados y n instrucciones se requieren un número de ciclos:
I-1 I-2 I-3 I-3 JCG-2009
burbujas
Procesador Superescalar Un procesador superescalar tiene múltiples etapas de ejecución. Por ejemplo en el siguiente diagrama la unidad de ejecución posee dos flujos (u y v) Stages
Cycles
S4 S2
1
S1 I-1
2
I-2
I-1
3 4
I-3 I-4
I-2 I-3
I-1 I-2
I-1
I-4
I-3 I-4
I-1 I-3
I-2 I-2
I-1
I-3
I-4
I-2
I-1
I-4
I-3 I-4
I-2 I-3
5 6 7 8 9
S3
u
v
S5
S6
Para k estados y n instrucciones se requieren un número de ciclos: k +n
10
I-4 JCG-2009
Lectura de Memoria Normalmente el ciclo de lectura de memoria en un sistema basado en microprocesador requiere la introducción de ciclos de espera puesto que la memorias de almacenamiento masivo son lentas. Cycle 1
Cycle 2
Cycle 3
CLK
Address ADDR
RD
Data DATA
JCG-2009
Cycle 4
Memoria caché • La caché es una memoria SRAM de alta velocidad que se encuentra en el CPU – Level-1 caché: Acceso ultra-rápido por el núcleo (datos para unidades de ejecución) – Level-2 caché: Acceso rápido por el núcleo (instrucciones precargadas al núcleo) – Level-3 caché: Acceso rápido por todos los núcleos
• Cache hit: cuando el dato a leer se encuentra en la memoria caché • Cache miss: cuando el dato a leer NO se encuentra en la memoria caché JCG-2009
Como se ejecuta un programa
JCG-2009
Ambiente multitarea • Actualmente los sistemas operativos pueden ejecutar múltiples programas simultáneamente • Un mismo programa puede generar múltiples ¨hilos¨ ¨ en su ejecución • El sistema operativo administra los recursos del sistema asignando un tiempo especifico a cada programa en ejecución. • El sistema debe tener habilidad para cambiar de tareas rápidamente de forma que el usuario perciba ejecución en tiempo real
JCG-2009
Arquitectura IA32 • • • •
Modos de operación Ambiente básico de ejecución Unidad de punto flotante Evolución de los microprocesadores Intel
JCG-2009
Modos de operación • Modo Protegido: – Modo Nativo (Windows, Linux)
• Modo Real – Nativo MS-DOS
• Modo de manejo del Sistema – Diagnostico, recuperación, debug Virtual-8086 • Híbrido protegido-real • Cada aplicación tiene su sistema 8086
JCG-2009
Ambiente básico de ejecución Permite conocer para cada aplicación:
• Administración de la memoria • Utilización de los registros – Registros de propósito general – Registros de uso específico
• Banderas de estado (FLAGS) • Manejo de operaciones específicas – MMX – FPU – SSE
JCG-2009
Administración de la memoria En ambiente de diseño con microprocesadores se habla de • Memoria Física • Memoria lógica Administración del acceso a memoria • Segmentación • Paginación
JCG-2009
Utilización de los registros 32-bit General-Purpose Registers EAX
EBP
EBX
ESP
ECX
ESI
EDX
EDI 16-bit Segment Registers
EFLAGS EIP
JCG-2009
CS
ES
SS
FS
DS
GS
Acceso de los Registros • Se pueden utilizar con su nombre de 8,16 y 32 bits • Aplica para EAX, EBX, ECX, y EDX 8
8
AH
AL
AX
EAX
8 bits + 8 bits
16 bits
32 bits
JCG-2009
Registros Base e índice A continuación se muestra como se accede a los registros Base e índice:
JCG-2009
Utilización especifica de los registros • Registros de propósito general – EAX – Acumulador – ECX – Contador – ESP – Puntero de pila – ESI, EDI – Índices – EBP – Puntero de base
• Segmento – CS – Segmento de código – DS – segmento de datos – SS – segmento de pila – ES, FS, GS – segmentos adicionales JCG-2009
Utilización especifica de los registros Control de ejecución • EIP – Apuntador de Instrucción (PC) • EFLAGS – Banderas de control y estado
JCG-2009
Banderas de estado (FLAGS) • Carry – Desbordamiento en una operación aritmética sin signo
• Overflow – Desbordamiento en una operación aritmética con signo
• Sign – El resultado es negativo
• Zero – El resultado es cero
• Auxiliary Carry – Acarreo entre los bits 3 y 4
• Parity – La suma de unos es un numero par JCG-2009
FPU, MMX, SSE • Ocho registros de 80 bits para datos de FPU
• ST(0), ST(1), . . . , ST(7) – Ordenados en una pila – Accesibles por todas las operaciones del FPU • Ocho registros de 64 bits para operaciones MMX • Ocho registros de 128 bits para operaciones SIMD (Single Instruction, Multiple Data ) JCG-2009
ST(0) ST(1) ST(2) ST(3) ST(4) ST(5) ST(6) ST(7)
Evolución de los microprocesadores INTEL • • • • •
Intel 8086, 80286 Familia de procesadores IA32 Familia de Procesadores P6 Core I7 Evolución de CISC a RISC
JCG-2009
Los Clásicos Intel • Intel 8080 – – – – –
Espacio de memoria direccionable hasta 64KB Registros de 8 bits Sistema operativo CP/M Arquitectura de bus S-100 Unidad de disco magnético de 8 pulgadas!!!
• Intel 8086/8088 – – – – –
Núcleo de la IBM-PC (8088) Espacio de memoria direccionable hasta 1MB Registros de 16 bits Bus de datos de 16 bits (8 bits para 8088) Unidad de punto flotante(8087) por separado JCG-2009
La microcomputadora IBM-AT • Intel 80286 – Hasta 16 MB de memoria RAM – Memoria protegida – Más rápido que 8086 – Introdujo la arquitectura de interconexión IDE – Unidad de punto flotante(80287)
JCG-2009
Familia de procesadores IA32 • Intel386 – Hasta 4 GB RAM, Registros de 32 bits, paginación y manejo de memoria virtual
• Intel486 – Se implementó ¨pipelining¨ ¨ de instrucciones
• Pentium – Superescalar, bus de direcciones de 32 bits, bus interno de 64 bits. JCG-2009
La familia Intel P6 • Pentium Pro – Optimización del manejo de los microcódigos
• Pentium II – Mejorado para multimedia con set MMX
• Pentium III – Implementa set de instrucciones SSE (SIMD)
• Pentium 4 – Microarquitectura Intel NetBurst, optimizado para aplicaciones multimedia
• Core2 – Mejora el manejo de caché y el consumo de potencia. Elimina HT. Virtualización nativa JCG-2009
La microarquitectura P6
JCG-2009
La arquitectura Corei7 • Primer Quadcore nativo de INTEL • Implementa tecnología Simultaneous Multi-Threading (SMT) • Mejoras en la memoria caché con una nueva arquitectura de tres niveles • Tecnología de interfaz Intel QuickPath Interconnect • Nuevo Conjunto de Instrucciones SSE 4.2
JCG-2009
Set de Instrucciones • CISC – complex instruction set – – – –
Gran variedad de instrucciones Operaciones de alto nivel Se requiere de un interprete de microcódigo ejemplo: Intel 8086
• RISC – reduced instruction set – – – –
Instrucciones simples y compactas Set de instrucciones reducido Ejecutadas directamente por hardware ejemplos: • ARM (Advanced RISC Machines) • DEC Alpha (de HP)
JCG-2009
Manejo de la memoria en IA32 • Arquitectura administración de la memoria • Modo Real • Cálculo de una dirección lineal • Modo Protegido • Modo multi-segmento • Paginación
JCG-2009
Arquitectura de acceso de la memoria
IA32
JCG-2009
Modo Real • Máximo 1MB de memoria direccionable • La aplicación puede acceder cualquier localización de memoria • Monotarea • Ambiente de operación MS-DOS • Esquema de direccionamiento segmentado – Segmento (16 bits) – Desplazamiento (16 bits)
JCG-2009
Memoria segmentada El calculo de la dirección física (linear address) es la combinación de del segmento y del desplazamiento a partir de la dirección de segmento F0000 E0000
8000:FFFF
D0000
Un segmento
C0000 B0000 A0000 90000 80000
Dir. Física= Seg*16+Offset
70000 60000 8000:0250
50000 0250
40000 30000
8000:0000
20000 10000 00000
seg
ofs
JCG-2009
Cálculo de una dirección física Ejemplo: A que valor de dirección física corresponde el siguiente conjunto de segmento : desplazamiento? • 08F1:0100
Valor del segmento ajustado: 0 8 F 1 0 Valor del desplazamiento: Dirección Física:
+
0 1 0 0 0 9 0 1 0
JCG-2009
Modo Protegido(1/2) • Memoria mapeable hasta 4GB (00000000 hasta FFFFFFFFh)
• A cada programa se le asigna una partición de memoria que solo es accesible por dicho programa, lo cual lo protege • Diseñado para ambiente multi-tarea • La asignación de monto de memoria está a cargo del OS
JCG-2009
Modo Protegido(2/2) • Se administra una tabla de descriptores de segmento • Cada programa obtiene: – Área para CS, DS, SS – Un descriptor de segmento – Un descriptor global asociado a GDT
• Utiliza un modelo de segmentación plano (flat)
JCG-2009
Modelo de segmentación plano
• Tabla de descriptores globales única (GDT) • Todos los segmentos se mapean en un área de 32 bits not used
Segment descriptor, in the Global Descriptor Table
FFFFFFFF (4GB)
00040000 limit
access
00000000
00040
----
physical RAM
base address
00000000 JCG-2009
Modelo multimulti-segmento
• Cada programa tiene tabla de descriptores locales – Esa tabla administra cada segmento utilizado por el programa RAM
Local Descriptor Table
26000 base
limit
00026000
0010
00008000
000A
00003000
0002
access
8000
3000 JCG-2009
Paginación • Administrado directamente por el CPU • Se divide cada segmento en paginas de 4K las cuales se denominan paginas • La suma de la memoria utilizada por todos los programas no puede exceder a la memoria física • Los programas que se están ejecutando pueden estar activos pero no estar cargados en memoria RAM física, sino Virtual • El Virtual memory manager (VMM) – OS es el encargado de administrar la carga y descarga de las páginas. • El CPU envía dispara un evento llamado ¨page fault¨ ¨ cuando una pagina requiere ser cargada del disco
JCG-2009
Componentes de una microcomputadora IA32 • • • •
Tarjeta Madre Salida de Video Memoria Puertos de E/S
JCG-2009
Tarjeta Madre • Permite la infraestructura de operación entre los siguientes componentes: – CPU – Caché externo – Memoria del sistema – BIOS – Tarjeta de sonido (opcional) – Tarjeta de video (opcional) – Controlador de disco duro, USB, VIDEO, ETC – Tarjetas de expansión (PCI) JCG-2009
Tarjeta Madre Intel D850MD
Puertos de E/S
Video Tarjeta de Sonido Chipset
Ranuras PCI Microprocesador
Ranuras AGP
DRAM BIOS Controlador IDE Speaker Batería
Fuente alimentación Conector CD/DVD Conector IDE Fuente: Intel® Desktop Board D850MD/D850MV Technical Product Specification JCG-2009
Administración del Video • Existe un controlador de video que puede ser – Integrado en el chipset – Discreto en una tarjeta (AGP, PCI)
• El controlador administra una sección de memoria RAM especializada en video (VRAM) • Normalmente se tienen dos formatos de salida de Video: – Pantallas de tubos de rayos catódicos (CRT) – Monitores de LCD
JCG-2009
Tipos de memoria • ROM – read-only memory • EPROM – erasable programmable read-only memory • Dynamic RAM (DRAM) – Almacenamiento masivo, requiere una lógica de refrescamiento • Static RAM (SRAM) – Alta velocidad, caras, no requieren refrescamiento • Video RAM (VRAM) – Optimizadas para alto refrescamiento • CMOS RAM – complimentary metal-oxide semiconductor – BIOS JCG-2009
Puertos de entrada/Salida • USB (universal serial bus) – Conexión flexible de alta velocidad – Hasta 12 Mbps – Un HUB puede administrar múltiples dispositivos usando un esquema de numeración – Permite conexión OTG
• Paralelo (PPI) – Corto alcance, alta velocidad – Usado en impresoras – Bidireccional – Controlador Intel 8255 JCG-2009
Puertos de entrada/Salida • Serie – Estándar RS-232C – Se transmiten tramas – Soporta mas distancia que paralelo – 16550 UART (universal asynchronous receiver transmitter) – Se puede programar desde ensamblador
JCG-2009
Niveles de programación • Nivel 3: Bibliotecas o funciones en C, C++, Java – Fáciles de implementar; Transparentes para el hardware; bajo rendimiento
• Nivel 2: Llamadas a funciones del sistema operativo – Específicos a un sistema operativo, sistema – Rendimiento medio
• Nivel 1: Llamada funciones de BIOS (basic inputoutput system) – Puede producir variaciones de rendimiento de sistema a sistema – Varía dependiendo de la versión del BIOS – Buen rendimiento
• Nivel 0: Programación directa del HW – Muy eficiente, algunos sistemas operativos lo restringen JCG-2009
Flujo de ejecución de un programa
El siguiente diagrama muestra el flujo de ejecución ejecuci n de un programa
JCG-2009
Application Program
Level 3
OS Function
Level 2
BIOS Function
Level 1
Hardware
Level 0
Niveles de programación en ensamblador Las funciones de entrada/salida de un programas pueden realizar usando cualquiera de las siguientes estratégicas
ASM Program
JCG-2009
OS Function
Level 2
BIOS Function
Level 1
Hardware
Level 0
Tarea • Investigar sobre la estructura del descriptor del sistema que se utilizan para administrar la memoria para los siguientes procesadores: – 80286 – 80386 – 486 – Pentium
• Como se distribuye el mapa de memoria para el modo protegido JCG-2009
Bibliografía • Irvine, Kip; Assembly Language for IntelBased Computers. 5th Edition. Pearson Education. 2007
JCG-2009