ARQUITECTURA DEL
  COMPUTADOR
  Juan Rafael Álvarez Correa
  jalvarez at debian dot org


                               1
CAPITULOS

■   0 – Arquitectura del computador
■   1 – Introducción a los sistemas operativos
■   2 – Procesos e hilos
■  ...
CONTENIDO
■   Arquitecturas de computador
       Von Neumann - Arquitectura Harvard
■   Bus
■   CPU
       ALU, CU, FPU,...
ANTES

■   Los dispositivos “electronicos” eran
    diseñados para un proposito especifico
       Para resolver el proble...
ARQUITECTURA VON NEUMANN

■   Especifica el diseño de un dispositivo de
    proposito general (problemas diferentes)
■   I...
ARQUITECTURA VON NEUMANN

■   Ventajas y desventajas
       Permite codigo automodificable
       Arquitectura electroni...
ARQUITECTURA HARVARD

■   Componentes
       Memoria de datos
       Buses de datos, control y direcciones para la
     ...
ARQUITECTURA HARVARD

■   Ventajas y desventajas
       Facilita la realización del pipelining
         ➔   Completación ...
APLICACION DE ARQUITECTURAS

■   Arquitectura Von Neumann
       Computadores actuales en el acceso de la CPU
        a l...
CPU: UNIDADES

■   CU: Unidad de Control
       Unidad de obtención
       Unidad de decodificación
       Unidad funci...
CPU: REGISTROS
■   Architectural registers (Arquitectonicos)
       Registros de proposito general
         ➔   Registros...
CPU: REGISTROS
■   Non-Architectural Registers a.k.a
■   Machine/Model Specific Registers (MSR)
       MAR: Memory Addres...
BUS

■   Jerarquia de bus (Cercania a la CPU)
       Back Side Bus:    CPU <-> Cache L2
       Front Side Bus:   CPU <->...
BUS




  14
BUS

■   Front Side Bus
       EV6 (Athlon y Alpha), GTL+/AGTL+ (Intel)
■   Internal bus – Paralelos
       ISA, EISA, V...
INSTRUCTION SET ARCHITECTURE
■   Aspectos de la arquitectura visibles al
    programador
       Instrucciones
       Reg...
INSTRUCTION SET ARCHITECTURE
■   Segun la complejidad de las instrucciones:
       CISC: Complex Instruction Set Computer...
INSTRUCTION SET ARCHITECTURE
■   Segun la complejidad de las instrucciones:
       RISC: Reduced Instruction Set Computer...
INSTRUCTION SET ARCHITECTURE
■   Segun la tecnica de implementación
       “Cablear” la ISA en un circuito integrado
    ...
INSTRUCTION SET ARCHITECTURE
■   Problemas que pudieron ser solucionados
    rapidamente con ISAs microprogramadas
      ...
INSTRUCTION SET ARCHITECTURE
■   Implementaciones concretas de ISA
       x86                    Varios            CISC
 ...
INSTRUCTION SET ARCHITECTURE

// a = b + c
■    load            r3, b
■    load            r4, c
■    add             r3, ...
HISTORIA DE UN PROGRAMA

■   Compilador
       Entrada: Lenguaje de alto nivel (codigo fuente)
       Salida:    Lenguaj...
SINTAXIS DE ASM PARA X86
■   Intel
       Prefijos                 mov eax,1
       Dirección de operandos   mov dest,fu...
CPU: CICLO LECTURA-EJECUCIÓN

PC = <dirección inicio maquina>;
indicadorParada = limpiar;
while (indicadorParada no activa...
MEMORIA
■   Interfaz de memoria
       MAR: Memory Address Register
       MDR: Memory Data Register
       CMD: Comman...
MEMORIA

■   Jerarquia de memoria
       Registros                  1 ciclo de reloj
       Cache (L1, L2)             1...
PROXIMIDAD REFERENCIAL

■   Todos los datos de un programa no tienen
    la misma probabilidad de ser accedidos
■   Tipos
...
PROXIMIDAD REFERENCIAL

■   Proximidad temporal
       Los ciclos hacen que las instrucciones vuelvan a
        ser utili...
CACHE: ACTORES

■   Backing storage
       Puede ser la memoria prinicipal u otro cache
■   Cache
       Memoria de alta...
CACHE: COMPONENTES

■   Index
■   Tag
■   Cache line (Proximidad espacial)
       Xeon 512bits = Bus de datos 64bits x 8 ...
CPU: CICLO LECTURA DE CACHE
recibir dirección de memoria de la CPU
if (dirección esta en el cache) {
    referenciar el by...
CACHE: POLITICA DE UBICACIÓN

■   Direct mapped
       Cada bloque de memoria solo puede estar en
        una posición es...
CACHE: POLITICA DE UBICACIÓN

■   En un cache set associative, una vez ha
    sido seleccionado la posición se puede
    u...
CACHE: POLITICA DE UBICACIÓN




                      Tomado de Wikipedia




                                        35
CACHE: POLITICA DE REMPLAZO

■   Criterio que indica cual cache line de un
    cache set associative con n>1 debe
    remp...
CACHE: POLITICA DE ESCRITURA

■   En un write hit
       Write through: Cache y memoria-backing storage
         ➔   Los ...
CACHE: POLITICA DE ESCRITURA

■   En un write miss
       Write allocate
         ➔   El bloque es ubicado en un cache li...
CACHE: COHERENCIA
■   Si un cache write-back tiene un cache-line
    sucio y un DMA desea acceder esos datos,
    el cache...
CACHE: COHERENCIA
■   Modified
       Cache line incosistente y unica copia
■   Owned
       Cache line consistente, mul...
CACHE: MULTINIVEL
■   Caches inclusivos (Intel)
       Cache L[X+1] contiene L[X]
         ➔   L1=32KB, L2=512KB, L3=4MB ...
DISPOSITIVOS

■   Recolectar o presentar datos




                                        42
DISPOSITIVOS: DIRECCIONAMIENTO
■   MMIO: Memory Mapped I/O
       En el espacio de direcciones de memoria esta
        di...
DISPOSITIVOS: DIRECCIONAMIENTO
■   MMIO: Memory Mapped I/O
       Instrucciones en x86
         ➔   movb /   movw     /  ...
DISPOSITIVOS: INTERFAZ




                     45
DISPOSITIVOS: INTERFAZ

■   Registro de estado [ocupado][hecho][error]
       Ocioso                   [     0      ][   ...
DISPOSITIVOS: POLLING-(SONDEO)

        ¿Como saber que la operación termino?
■   Polling
       La CPU lee permanentemen...
INTERRUPCIONES Y EXCEPCIONES

■   Eventos que indican que una condición
    existe en el sistema y requiere atención del
 ...
INTERRUPCIONES (RECIBIDAS)
■   Generadas por hardware externo a la CPU.
    Se “reciben” y son asincronicas.
■   Tipos de ...
EXCEPCIONES (DETECTADAS)
■   Tipos de excepciones
       Faults: Posiblemente recuperable (Page fault)
         ➔   Se ej...
CICLO CON INTERRUPCION (HW)

... (igual que en el ciclo básico de la CPU)
while (indicadorParada no activado) {
    IR = m...
INTERRUPT SERVICE ROUTINE (SW)
■   Interrupt Service Routine o Interrupt Handler
       FLIH: First Level Interrupt Handl...
VECTOR DE INTERRUPCIONES

■   Vector en la memoria que contiene las
    direcciones de memoria donde se alojan los
    FLI...
DISPOSITIVOS: PIC
■   Programmable Interrupt Controller
       Dispositivo normalmente alojado en el
        southbridge ...
DISPOSITIVOS: CICLO I/O


■   Ciclo de I/O a memoria (I/O-to-memory)


        load   R2, =LONGITUD
ciclo: load    R1, [me...
DISPOSITIVOS: DMA

■   Direct Memory Access
       Evita que la CPU pierda tiempo realizando
        escrituras entre los...
ESQUEMATICO DE DMA




                 57
FUNCIONAMIENTO DE DMA
■   Controlador solicita DMA: DRQ#=1
■   8237 solicita el bus a la CPU: HQR=1
■   La CPU libera el b...
INSTRUCCIONES DE I/O

■   Categorias
       Instrucciones de control
         ➔   Indican a un dispositivos las funciones...
ESTRATEGIAS DE ENTRADA/SALIDA
■   ¿La CPU es responsable de ...?
       Estado: Determinar si la operación de E/S
       ...
PROTECCIÓN POR HARDWARE

■   Otorgar mayores o menores privilegios de
    acceso a recursos criticos a partir de la
    co...
ANILLOS DE PROTECCIÓN

■   aka Niveles de privilegio
■   Nivel 0 (Software + critico + confiable)
       Kernel mode (Ker...
PROTECCIÓN

■   Protección de I/O
       Las instrucciones de entrada y salida son
        instrucciones privilegiadas
■ ...
Próxima SlideShare
Cargando en…5
×

Curso Sistemas Operativos - Unidad Arquitectura del Computador

2.560 visualizaciones

Publicado el

Publicado en: Educación
0 comentarios
2 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

Sin descargas
Visualizaciones
Visualizaciones totales
2.560
En SlideShare
0
De insertados
0
Número de insertados
93
Acciones
Compartido
0
Descargas
0
Comentarios
0
Recomendaciones
2
Insertados 0
No insertados

No hay notas en la diapositiva.

Curso Sistemas Operativos - Unidad Arquitectura del Computador

  1. 1. ARQUITECTURA DEL COMPUTADOR Juan Rafael Álvarez Correa jalvarez at debian dot org 1
  2. 2. CAPITULOS ■ 0 – Arquitectura del computador ■ 1 – Introducción a los sistemas operativos ■ 2 – Procesos e hilos ■ 3 – Comunicación, concurrencia y bloqueos ■ 4 – Gestión de memoria ■ 5 – Entrada y salida ■ 6 – Gestión de archivos y directorios ■ 7 – Seguridad y protección ■ 8 – Sistemas distribuidos 2
  3. 3. CONTENIDO ■ Arquitecturas de computador  Von Neumann - Arquitectura Harvard ■ Bus ■ CPU  ALU, CU, FPU, Registros, ISA, Ciclo Fetch-Execute ■ Memoria  Interfaz de acceso, Jerarquia, Cache ■ Entrada y salida (Dispositivos)  Interfaz de acceso, Estrategias de I/O ■ Protección por hardware  Modo dual, I/O, Memoria, CPU 3
  4. 4. ANTES ■ Los dispositivos “electronicos” eran diseñados para un proposito especifico  Para resolver el problema de la suma, se diseñaban dispositivos para sumar  Este dispositivo no podia ser utilizado para otros fines: resta, multiplicación, división  La corrección de errores en estos dispositivos se realizaba mediante el rediseño de los mismos 4
  5. 5. ARQUITECTURA VON NEUMANN ■ Especifica el diseño de un dispositivo de proposito general (problemas diferentes) ■ Introduce el concepto de programa almacenado ■ Componentes  Memoria (utilizada para datos y codigo)  CPU = ALU + CU ➔ Instruction Set Architecture  Dispositivos: Entrada, salida, almacenamiento y comunicación  Bus: Datos, control y direcciones 5
  6. 6. ARQUITECTURA VON NEUMANN ■ Ventajas y desventajas  Permite codigo automodificable  Arquitectura electronica “facil” de diseñar  Instrucciones y datos recuperados de forma secuencial (Von Neumann Bottleneck) Tomado de Universidad de Canterbury 6
  7. 7. ARQUITECTURA HARVARD ■ Componentes  Memoria de datos  Buses de datos, control y direcciones para la memoria de datos  Memoria de instrucciones  Buses de datos (instrucciones), control y direcciones para la memoria de instrucciones  CPU = ALU + CU 7
  8. 8. ARQUITECTURA HARVARD ■ Ventajas y desventajas  Facilita la realización del pipelining ➔ Completación de la instruccion actual (operadores) ➔ Recuperación de la siguiente instrucción Tomado de Universidad de Canterbury 8
  9. 9. APLICACION DE ARQUITECTURAS ■ Arquitectura Von Neumann  Computadores actuales en el acceso de la CPU a la memoria principal (RAM) ■ Arquitectura Harvard  Computadores actuales en el acceso de la CPU a la memoria cache (dentro del procesador) ➔ Existen caches separados de instrucciones y datos  Microcontroladores ➔ PIC de Microchip 9
  10. 10. CPU: UNIDADES ■ CU: Unidad de Control  Unidad de obtención  Unidad de decodificación  Unidad funcional ➔ Selecciona y dirige el componente adecuado de la ALU para el procesamiento ■ ALU: Unidad Aritmetico Logica  Realiza operaciones aritmeticas (+, -, *, /)  Realiza operaciones logicas (&&, ||, !) ■ FPU: Unidad de punto flotante 10
  11. 11. CPU: REGISTROS ■ Architectural registers (Arquitectonicos)  Registros de proposito general ➔ Registros de datos -enteros- (EAX, EBX, ECX, EDX) ➔ Registros de dirección (ESI, EDI, ESP, EBP) ➔ Registros de punto flotante (ST0 - ST7) ➔ Registros constantes (MIPS $0 – Motorola 88100 r0) ➔ Registros vectoriales (MMX0 - MMX7, SSE?, SSE2?)  Registros de proposito especifico ➔ Registros de segmento (CS, DS, SS, ES, FS, GS) ➔ Registro de estado (EFLAGS) ➔ Registro de puntero a instrucción (EIP -PC-) 11
  12. 12. CPU: REGISTROS ■ Non-Architectural Registers a.k.a ■ Machine/Model Specific Registers (MSR)  MAR: Memory Address Register  MDA: Memory Data Register  IR: Instruction Register (!= EIP)  IA32_BIOS_UPDT_TRIG (Actualizar microcodigo)  MSR_BPU_COUNTER0 (Registro de conteo) ➔ INSTRUCTIONS_EXECUTED (Evento de conteo) ■ Acceso y modificación de los MSR  Ver RDMSR y WRMSR 12
  13. 13. BUS ■ Jerarquia de bus (Cercania a la CPU)  Back Side Bus: CPU <-> Cache L2  Front Side Bus: CPU <-> Northbridge  Local bus: Southbridge <-> Controlador  External bus: Controlador <-> Dispositivo ■ Diseño  Seriales: Un unico hilo  Paralelos: Multiples hilos electricos ■ Información que transporta  Control – Datos - Direcciones 13
  14. 14. BUS 14
  15. 15. BUS ■ Front Side Bus  EV6 (Athlon y Alpha), GTL+/AGTL+ (Intel) ■ Internal bus – Paralelos  ISA, EISA, VESA, MCA, PCI, AGP ■ Internal bus – Seriales  PCI Express (PCIe), I2C, HyperTransport ■ External bus – Paralelos  ATA (aka IDE, EIDE, ATAPI), SCSI, PCMCIA ■ External bus – Seriales  SATA, USB, IEEE 1394 (FireWire) 15
  16. 16. INSTRUCTION SET ARCHITECTURE ■ Aspectos de la arquitectura visibles al programador  Instrucciones  Registros  Modos de direccionamiento  Arquitectura de memoria  Manejo de interrupciones y excepciones ■ Tiene un conjunto de codigos de operación que representan las instrucciones que puede procesar la CPU  Cada opcode tiene asociado un mnemonico 16
  17. 17. INSTRUCTION SET ARCHITECTURE ■ Segun la complejidad de las instrucciones:  CISC: Complex Instruction Set Computer ➔ Sin compiladores, las instrucciones hacen demasiado ➔ Instrucciones complejas implican programas pequeños ➔ Ejecución en mas de un ciclo de reloj ➔ Menos operaciones de fetch a memoria ➔ Alta sobrecarga en el proceso de decodificación ➔ Diseño altamente complejo 17
  18. 18. INSTRUCTION SET ARCHITECTURE ■ Segun la complejidad de las instrucciones:  RISC: Reduced Instruction Set Computer ➔ Instrucciones pequeñas implican programas grandes ➔ Ejecución en un ciclo de reloj ➔ Compiladores no usan frecuentemente instrucciones complejas ➔ Instrucciones complejas tienden a ser mas lentas que instrucciones pequeñas que hacen lo mismo (INDEX) ➔ Para el diseñador de un procesador es dificil optimizar todas las instrucciones de una ISA ➔ 98% de las constantes de un programa caben en 13b. ➔ Menos modos de direccionamiento, solo load-store. 18
  19. 19. INSTRUCTION SET ARCHITECTURE ■ Segun la tecnica de implementación  “Cablear” la ISA en un circuito integrado ➔ Mayor rapidez al estar implementado en hardware ➔ El diseño y las modificaciones son complejas  Microprogramar la ISA (CISC~=RISC) [SIMH] ➔ Cada macroinstrucción (mnemonico y opcode -CISC-) se encuentra implementada con microinstrucciones almacenadas en el Control Store. ➔ Las microinstrucciones -RISC- son cableadas en el CI ➔ Los procesadores son faciles de diseñar ➔ Se logra mayor flexibilidad ➔ Ejemplo de microasemblers: Meta29, Micro2, MIC1 19
  20. 20. INSTRUCTION SET ARCHITECTURE ■ Problemas que pudieron ser solucionados rapidamente con ISAs microprogramadas  f00f bug en Intel Pentium (0xf00fc7c8) cmpxchg8b {64bits} -> cmpxchg8b %eax cmpxchg8b %eax ➔ ➔ Compara el ECX+EBX con el operador si iguales cargar en el operador, si diferentes cargar en registros  FDIV bug en Intel Pentium ➔ La división de punto flotante no funcionaba adecuadamente con ciertos operadores 20
  21. 21. INSTRUCTION SET ARCHITECTURE ■ Implementaciones concretas de ISA  x86 Varios CISC  IA-64 Intel CISC  68k Motorola CISC  Alpha DEC RISC  SPARC Sun RISC  PowerPC Apple-IBM-Motorola RISC  MIPS MIPS RISC  ARM ARM Ltd RISC  TIMI over SLIC IBM  Java Virtual Machine Sun 21
  22. 22. INSTRUCTION SET ARCHITECTURE // a = b + c ■ load r3, b ■ load r4, c ■ add r3, r4 ■ store r3, a // d = a - 100 ■ load r4, =100 ■ subs r3, r4 ■ store r3, d Tomado de Sistemas Operativos de Gary Nutt 22
  23. 23. HISTORIA DE UN PROGRAMA ■ Compilador  Entrada: Lenguaje de alto nivel (codigo fuente)  Salida: Lenguaje ensamblador (mnemonicos) ■ Ensamblador  Entrada: Lenguaje ensamblador (mnemonicos)  Salida: Codigo binario (codigos de operación) ■ Microprograma  Entrada: Codigo binario (codigos de operación)  Salida: Control fisico de las señales (HW) 23
  24. 24. SINTAXIS DE ASM PARA X86 ■ Intel  Prefijos mov eax,1  Dirección de operandos mov dest,fuente  Operandos de memoria mov eax,[ebx+3]  Sufijos mov al,bl ■ AT&T  Prefijos movl %eax,$1  Dirección de operandos movl fuente,dest  Operandos de memoria movl 3(%ebx),%eax  Sufijos movb %bl,%al 24
  25. 25. CPU: CICLO LECTURA-EJECUCIÓN PC = <dirección inicio maquina>; indicadorParada = limpiar; while (indicadorParada no activado) { IR = memoria [PC]; PC = PC + 1; ejecutar (IR); } Tomado de Sistemas Operativos de Gary Nutt 25
  26. 26. MEMORIA ■ Interfaz de memoria  MAR: Memory Address Register  MDR: Memory Data Register  CMD: Command Register ■ Alineación  Restricción de la dirección de memoria que puede tener un objeto en la misma ➔ Un objeto debe estar alojado en una dirección multiplo de su tamaño ➔ byte (8), word (16), doubleword (32), quadword (64) ➔ Restricciones del bus de direcciones - Cada byte de una palabra se almacena en un banco de memoria diferente (bus tiene realmente 2 bits menos) 26
  27. 27. MEMORIA ■ Jerarquia de memoria  Registros 1 ciclo de reloj  Cache (L1, L2) 1,10 ciclos de reloj  Memoria principal (RAM) 100 ciclos de reloj  Almacenamiento en disco 10000 ciclos de reloj ■ Arriba en la jerarquia de memoria  + velocidad (+ frecuencia de uso), - capacidad ■ Abajo en la jerarquia de memoria  - velocidad (- frecuencia de uso), + capacidad 27
  28. 28. PROXIMIDAD REFERENCIAL ■ Todos los datos de un programa no tienen la misma probabilidad de ser accedidos ■ Tipos  Proximidad temporal (Cache) ➔ Si un dato es accedido, existe una alta probabilidad de que este sea accedido de nuevo en el futuro ➔ Replacement Policy = Least Recent Used (LRU) - El mas viejo  Proximidad espacial (Cache line) ➔ Si un dato es accedido, existe una alta probabilidad de que los datos cercanos sean accedidos en el futuro 28
  29. 29. PROXIMIDAD REFERENCIAL ■ Proximidad temporal  Los ciclos hacen que las instrucciones vuelvan a ser utilizadas  El uso de variables de forma repetitiva  La invocación de subrutinas de forma reiterada ■ Proximidad espacial  Los programas son secuenciales a excepción de los saltos.  Las estructuras de datos son generalmente consecutivas en memoria. 29
  30. 30. CACHE: ACTORES ■ Backing storage  Puede ser la memoria prinicipal u otro cache ■ Cache  Memoria de alta velocidad que busca disminuir el efecto del memory bound ➔ Cache hit: Hit rate/ratio ➔ Cache miss: Miss rate/ratio ■ Cliente del cache  Puede ser la CPU u otro cache 30
  31. 31. CACHE: COMPONENTES ■ Index ■ Tag ■ Cache line (Proximidad espacial)  Xeon 512bits = Bus de datos 64bits x 8 lecturas Tomado de Wikipedia 31
  32. 32. CPU: CICLO LECTURA DE CACHE recibir dirección de memoria de la CPU if (dirección esta en el cache) { referenciar el byte en el cache line } else { traer de memoria el bloque que lo contiene ubicar un cache line para el bloque referenciar el byte en el cache line } entregar el byte a la CPU 32
  33. 33. CACHE: POLITICA DE UBICACIÓN ■ Direct mapped  Cada bloque de memoria solo puede estar en una posición especifica del cache ➔ (Dirección del bloque) % (# de cache lines del cache) ■ Fully associative  Cada bloque de memoria puede estar en cualquier posición del cache ■ Set associative  Cada bloque de memoria solo puede estar en un conjunto especifico de posiciones del cache ➔ (Dirección del bloque) % (# de conjuntos en el cache) 33
  34. 34. CACHE: POLITICA DE UBICACIÓN ■ En un cache set associative, una vez ha sido seleccionado la posición se puede ubicar en cualquier posición del conjunto ■ Un cache direct mapped es un cache set associative con conjuntos de tamaño 1  Cache direct cache = 1-way set associative ■ Un cache fully associative es un cache set associative con 1 solo conjunto  Fully associative = m-way set associative 34
  35. 35. CACHE: POLITICA DE UBICACIÓN Tomado de Wikipedia 35
  36. 36. CACHE: POLITICA DE REMPLAZO ■ Criterio que indica cual cache line de un cache set associative con n>1 debe remplazarse ■ Aleatoria  Ignora la proximidad referecial (temporal) ■ LRU: Least Recent Used (Proximidad tempo) ■ LFU: Least Frecuently Used  Consideran la proximidad referencial (temporal) ■ ARC: Adaptive Replacement Cache  Inventado por IBM en el 2003 combina LRU y LFU 36
  37. 37. CACHE: POLITICA DE ESCRITURA ■ En un write hit  Write through: Cache y memoria-backing storage ➔ Los datos son consistentes entre ambos ➔ Perdida de velocidad durante la escritura ➔ Facil implementación  Write back: Cache y a memoria solo remplazo ➔ Multiples escrituras son una sola escritura a memoria ➔ Es necesario marcar los cache lines con el flag dirty ➔ Mayor velocidad ➔ Dificil de implementar ➔ Inconsistencia entre la memoria y el cache 37
  38. 38. CACHE: POLITICA DE ESCRITURA ■ En un write miss  Write allocate ➔ El bloque es ubicado en un cache line para luego ser modificado ➔ Utilizado con la politica de write back, esperando que las modificaciones siguientes queden en el cache  No write allocate ➔ La modificación ocurre en memoria sin ingresar el nuevo valor en el cache ➔ Utilizado con la politica de write through, ya que de igual forma igual forma la modificación ocurrira en memoria 38
  39. 39. CACHE: COHERENCIA ■ Si un cache write-back tiene un cache-line sucio y un DMA desea acceder esos datos, el cache proporciona esa información en vez de la memoria. Si no esta sucio es marcado como invalido. ■ Mecanismos  Snooping: Leer el bus de direcciones  Snarfing: Leer el bus de direcciones y datos ■ Protocolos de coherencia de cache  MSI, MOSI, MESI, MOESI  Modified, Owned, Exclusive, Shared, Invalid 39
  40. 40. CACHE: COHERENCIA ■ Modified  Cache line incosistente y unica copia ■ Owned  Cache line consistente, multiples copias y con derecho a actualizar las demas copias ■ Exclusive  Cache line consistente y unica copia ■ Shared  Cache line consistente y multiples copias ■ Invalid  Cache line invalida (stale) 40
  41. 41. CACHE: MULTINIVEL ■ Caches inclusivos (Intel)  Cache L[X+1] contiene L[X] ➔ L1=32KB, L2=512KB, L3=4MB == 4MB ➔ Solo el cache mas lento hace snoop. Luego se sincronizan los demas caches. (Coherencia simple) ➔ Los accesos de coherencia acceden al cache de mayor nivel que esta menos ocupado por la CPU que el de menor nivel. ■ Caches exclusivos (AMD)  Cache L[X+1] no contiene L[X] ➔ L1=32KB, L2=512KB, L3=4MB == 4.53MB ➔ Todos los niveles deben hacer snoop 41
  42. 42. DISPOSITIVOS ■ Recolectar o presentar datos 42
  43. 43. DISPOSITIVOS: DIRECCIONAMIENTO ■ MMIO: Memory Mapped I/O  En el espacio de direcciones de memoria esta direccionada la memoria de los dispositivos  Se usan las mismas instrucciones de acceso a memoria para acceder a la memoria de los disp. ➔ Se simplifica el diseño de la ISA ■ PMIO: Port Mapped I/O  Existe un espacio de direcciones separado para la memoria y para los dispositivos (I/O port)  Se requieren instrucciones diferentes de la ISA para acceder este espacio de direcciones ➔ Toda la memoria esta disponible 43
  44. 44. DISPOSITIVOS: DIRECCIONAMIENTO ■ MMIO: Memory Mapped I/O  Instrucciones en x86 ➔ movb / movw / movd / cpuid ➔ Serialización de instrucciones (no especulación) ■ PMIO: Port Mapped I/O  Instrucciones de I/O en x86 ISA ➔ insb / insw / insd ➔ outb / outw / outd  Espacio de direcciones de I/O en x86 ISA ➔ 16 bits direccionables por bytes ➔ 65536 bytes 44
  45. 45. DISPOSITIVOS: INTERFAZ 45
  46. 46. DISPOSITIVOS: INTERFAZ ■ Registro de estado [ocupado][hecho][error]  Ocioso [ 0 ][ 0 ] ➔ Se pueden colocar ordenes en el registro de ordenes ➔ Se han leido datos de los registros de datos  Finalizado [ 0 ][ 1 ] ➔ Se ha completado una operación de I/O  Trabajando [ 1 ][ 0 ] ➔ Se ha dado una orden ➔ Se ha iniciado la operación y aun no ha terminado  No definido [ 1 ][ 1 ] 46
  47. 47. DISPOSITIVOS: POLLING-(SONDEO) ¿Como saber que la operación termino? ■ Polling  La CPU lee permanentemente el registro de estado de la memoria del dispositivo, para determinar que el trabajo ha finalizado (espera- activa o busy-wait) ➔ ocupado = 0 y hecho = 1 ■ Desventajas  Sin DMA la CPU estaba ocupada transfiriendo datos  Con polling la CPU esta ocupada verificando si una operación termino 47
  48. 48. INTERRUPCIONES Y EXCEPCIONES ■ Eventos que indican que una condición existe en el sistema y requiere atención del procesador ■ Ventajas  Elimina las esperas activas  Permite utilizar la CPU para otras labores ■ El ciclo de lectura ejecución debe ser modificado para verificar la existencia de interrupciones 48
  49. 49. INTERRUPCIONES (RECIBIDAS) ■ Generadas por hardware externo a la CPU. Se “reciben” y son asincronicas. ■ Tipos de interrupciones  Maskable Hardware Interrupt (IF en EFLAGS) ➔ Pin INTR (En x86) ➔ Operaciones de I/O finalizadas  Non-Maskable Interrupt ➔ Pin NMI (En x86) ➔ Errores irrecuperables (paridad en la RAM) ■ Origen  Hardware externo a la CPU 49
  50. 50. EXCEPCIONES (DETECTADAS) ■ Tipos de excepciones  Faults: Posiblemente recuperable (Page fault) ➔ Se ejecuta de nuevo la instrucción generadora  Traps: Depuración (EFLAGS – Trap Flag – Bit 8) ➔ Se continua ejecutando la siguiente instrucción  Aborts: Double fault excepcion (8) ➔ No se puede continuar con la ejecución ■ Origen de la excepción  Detectadas por el procesador  Programadas (INT, INTO)  Verificaciones de maquina 50
  51. 51. CICLO CON INTERRUPCION (HW) ... (igual que en el ciclo básico de la CPU) while (indicadorParada no activado) { IR = memoria [PC]; PC = PC + 1; ejecutar (IR); if (solicitudInterrupción activado) { memoria [x] = PC; PC = memoria [y]; } } Tomado de Sistemas Operativos de Gary Nutt 51
  52. 52. INTERRUPT SERVICE ROUTINE (SW) ■ Interrupt Service Routine o Interrupt Handler  FLIH: First Level Interrupt Handler ➔ Almacenar el estado del procesador (en control stack) ➔ Deshabilitar interrupciones iguales (evitar race condition) o de menor prioridad (no expropiación) ➔ Almacenar la información solo disponible durante la interrupción ➔ Planificar el manejo de la interrupción SLIH ➔ Restaurar el estado del procesador (en control stack) ➔ Retornar el control (x86 = IRET)  SLIH: Second Level Interrupt Handler ➔ Manejar la interrupción de forma planificada 52
  53. 53. VECTOR DE INTERRUPCIONES ■ Vector en la memoria que contiene las direcciones de memoria donde se alojan los FLIH de cada interrupción o excepción ■ El numero de la interrupción es el indice o desplazamiento en el vector ■ Ubicación del vector de interrupciones  En x86 es indicado por el registro IDTR  Durante la inicialización de un x86 es = a la dirección de memoria fisica 0x00000000  En Linux el vector de interrupciones se mueve a otra posición de memoria (remplaza el del BIOS) 53
  54. 54. DISPOSITIVOS: PIC ■ Programmable Interrupt Controller  Dispositivo normalmente alojado en el southbridge (x86 = Intel 8259A x 2)  Canaliza las interrupciones a una unica linea de interrupción al procesador (x86 = INTR)  Encola interrupciones de menor prioridad o iguales a la atendida actualmente por el FLIH  Se gestiona como un dispositivo, pues tiene I/O (0x20-0x21) ports para recuperar la interrupcion ➔ Indicar cual fue la interrupción que ocurrio ➔ Indicar que ya fue manejada la interrupción ➔ Deshabilitar especificamente alguna interrupción 54
  55. 55. DISPOSITIVOS: CICLO I/O ■ Ciclo de I/O a memoria (I/O-to-memory) load R2, =LONGITUD ciclo: load R1, [memoria_cont, R2] store R1, [memoria_ppal, R2] dec R2 jnz ciclo 55
  56. 56. DISPOSITIVOS: DMA ■ Direct Memory Access  Evita que la CPU pierda tiempo realizando escrituras entre los dispositivos y la memoria  Normalmente incluido en el Southbridge  Es un dispositivo (Intel 8237 / 82374) ➔ Controlador DMA 1 (4) canales: I/O ports 0x00–0x1f ➔ Controlador DMA 2 (4) canales: I/O ports 0xc0–0xdf  Interfaz para cada canal (programado x driver) ➔ Registro de orden (dirección de la transferencia) ➔ Registro de dirección de memoria principal (src o dst) ➔ Registro contador (cantidad de bytes a transferir) 56
  57. 57. ESQUEMATICO DE DMA 57
  58. 58. FUNCIONAMIENTO DE DMA ■ Controlador solicita DMA: DRQ#=1 ■ 8237 solicita el bus a la CPU: HQR=1 ■ La CPU libera el bus: HLDA=1 ■ El 8237 señala lo siguiente:  Bus direcciones = Direccion memoria principal  MEMW=1, MEMR=0, IOR=1, IOW=0  DMA confirma al controlador: ACK#=1 ■ Controlador pone datos en el bus de datos  El I/O port origen esta cableado en el controlador ■ Si la transferencia termina: DRQ#=0 58
  59. 59. INSTRUCCIONES DE I/O ■ Categorias  Instrucciones de control ➔ Indican a un dispositivos las funciones que debe realizar  Instrucciones de estado ➔ Verifica las condiciones de estado de un controlador de dispositivo  Instrucciones de transferencia ➔ Leen o escriben los datos entre la memoria del dispositivo y la memoria principal o los registros 59
  60. 60. ESTRATEGIAS DE ENTRADA/SALIDA ■ ¿La CPU es responsable de ...?  Estado: Determinar si la operación de E/S finalizo  Transferencia: Transferir datos de la memoria del dispositivo a la memoria principal ■ Tipos  I/O Directa con sondeo  I/O Por DMA con sondeo ➔ No aplica. Si tiene DMA debe tener interrupciones.  I/O Directa con interrupciones  I/O Por DMA con interrupciones 60
  61. 61. PROTECCIÓN POR HARDWARE ■ Otorgar mayores o menores privilegios de acceso a recursos criticos a partir de la confiabilidad del software  Sistema operativo ➔ Solo el sistema operativo esta habilitado para realizar las operaciones criticas  Aplicaciones ➔ Las aplicaciones no deben modificar el sistema operativo ➔ Las aplicaciones deben permitir que otras aplicaciones se ejecuten 61
  62. 62. ANILLOS DE PROTECCIÓN ■ aka Niveles de privilegio ■ Nivel 0 (Software + critico + confiable)  Kernel mode (Kernel)  Mas privilegios de acceso ➔ Acceder a memoria de todos los anillos de protección ➔ Ejecutar todas las instrucciones de la ISA ■ Nivel 3 (Software – critico – confiable)  User mode (Aplicaciones)  Menos privilegios de acceso 62
  63. 63. PROTECCIÓN ■ Protección de I/O  Las instrucciones de entrada y salida son instrucciones privilegiadas ■ Protección de memoria  Las aplicaciones no deben modificar ni código ni estructuras de datos del sistema operativo ➔ Vector de interrupciones ➔ Interrupt Service Routines ■ Protección de CPU  Interrupciones (0) generadas periodicamente de forma programada. PIT = Dispositivo 8253/4 63

×