Arquitectura de Computadoras
Evolución de micros y PC
Registros y direccionamiento ns rucc ones
Evolución de la Computadora
3000 AC
Babilonia China, Japón???
Evolución de la Computadora
Generación Generación cero: cero: Computad Computador oras as mecánicas mecánicas (1642 (1642 - 1945) 1945) Blaise Pascal Pascal 1642-Fra 1642-Francia ncia ~19 años
Sumar, restar, multiplicación y división Barón Gottfried Wilhem von Leibniz 1673-Alemania 1673-Alemania Crea una máquina que permitía sumar, restar, multiplicar y dividir. dividir. máquina calculadora : sumar y restar
Evolución de la Computadora
Generación Generación cero: cero: Computad Computador oras as mecánicas mecánicas (1642 (1642 - 1945) 1945) Telar de Joseph Marie Jacquard (1801-Francia): Primer uso de las tarjetas perforadas para almacenamiento de información binaria, binaria, en .
Precursores (Francia): Basile Bouchon (1725), Jean-Baptiste Falcon Falcon (1728) (1728) y Jacques Vaucanson (1740) (1740)
Evolución de la Computadora Ada Lovelace Charles Babbage (1792-1871, Cambridge) Crea su maquina de Diferencias 1822
Después crea la má máqu quin inaa an anal alít ític icaa (1834) 1834) capaz de ejecutar diferentes a gor tmos me ante e uso e tarjetas perforadas de cobre a la entrada y salida ida. Ésta fue la primera máquina programable. programable.
Evolución de la Computadora
Generación cero: Computadoras mecánicas (1642 - 1945)
George Boole (1815-1864, Inglaterra): Crea en 1854 el algebra de Bool
Alan Mathison Turing (1912 – 1954, Inglaterre): Crea 1937 la teoría de computabilidad en la que se describen problemas que no tienen solución algorítmica (máquina de Turing concepto de Máquina con memoria infinita basada en una cinta infinita de símbolos).
Evolución de la Computadora
Generación cero: Computadoras mecánicas (1642 - 1945) Konrad Zuse (Berlín-1944) Utilizó relevadores para construir máquinas calculadoras. estas fueron las primeras máquinas en utilizar relevadores John Atanasoff y George Stibbitz se aron m qu nas ca cu a oras u zan o aritmética binaria . Atanasoff ideó una memoria de condensadores las cuales se renovaban eriódicamente ara evitar ue se perdiera la carga, a lo que llamó refrescamiento. Los chips actuales de memoria dinámica (RAM) funcionan de esta manera.
Evolución de la Computadora
Generación cero: Computadoras mecánicas (1642 - 1945)
Howard Aiken & Grace Hopper Construyó el Mark I (IBM) en 1944 en Hardvard (máquina de relevadores). Para cuando terminó de construir su Mark II ya era obsoleta la tecnología de relevadores.
Evolución de la Computadora
Generación cero : Computadoras mecánicas (1642 - 1945) vances e evan es e a poca: -Primera
máquina de cómputo.
primer programador del mundo. -Uso de relevadores en computadores (lógica digital). - oncepc n e a memor a n m ca Algebra de Bool , aritmética binaria y máquina de cómputo de Turing.
Evolución de la Computadora
1ª generación : Bulbos (1945 - 1955)
ENIGMA (1932) maquina alemana utilizada para la codificación de mensajes durante la segunda guerra mundial.
COLOSSUS (1943) fue la respuesta de los ingleses ante la necesidad de descifrar los mensajes alemanes.
John Mauchley y J. Presper Eckert construyeron la ENIAC (Electronic Numerical n egra or n ompu er en para e cálculo de las tablas de alcance de sus misiles. este trabajo permitió que se divulgara este avance lo rando des ertar el interés el los computadores electrónicos. Luego crearon una compañía que después se convertiría en Unisys Corporation.
Evolución de la Computadora
1ª generación : Bulbos (1945 - 1955)
John von Neumann (Hungría-USA) Construyó su versión del ENIAC basado en un nuevo modelo al cual denominó "máquina IAS“. Neumann se percató que el programa podía binaria resultaba ser mejor que la decimal La primera máquina construida con el modelo descrito por Neumann se llamó EDSAC (Electronic Delay Storage Automatic Calculator) desarrollada por Maurice Wilkes y sus colegas de Cambridge , fue la primera computadora que almacenaba programas. IAS: Institute for Advanced Study
Evolución de la Computadora
1ª generación : Bulbos (1945 - 1955)
Má uina de Von Neumann
Evolución de la Computadora
1ª generación : Bulbos (1945 - 1955) vances e a poca: -Primera
máquina en utilizar Bulbos, componentes capaces de producir comportamientos digitales. -Creación del modelo de von Neumann en la que se describen cinco componentes principales del computador. El modelo de von Neumann definía el primer computador que almacenaba un programa. -Primeras computadoras comerciales de aplicaciones científicas de la empresa IBM (709), que hasta entonces vendía m qu nas n us r a es y ar e as per ora as.
Evolución de la Computadora
2ª generación : Transistores (1955 - 1965)
John Bardeen, Walter Brattain y William Schockley Inventaron el transistor para los Laboratorios Bell (USA) en 1948 . MIT transistores y se llamo TX-0 (computadora Transistorizada eXperimental 0).
Evolución de la Computadora
2ª generación : Transistores (1955 - 1965)
Kenneth Olsen (USA) formó una compañía denominada DEC (Digital Equipment Corporation) en donde creó la PDP-1 en 1961 con un gran éxito de mercado. En el MIT se crea unos de los primeros juegos de computadoras del mundo para la PDP-1. - , computador tenía una innovación importante: un bus único (conformado por un conjunto de alambres en paralelo que conectaba a todos los componentes de la computadora). Esta arquitectura marcó una diferencia importante respecto de la máquina de von Neumann centrada en la memoria; en la actualidad todas las computadoras utilizan esta arquitectura.
Evolución de la Computadora
2ª generación : Transistores (1955 - 1965)
Kenneth Olsen
Evolución de la Computadora
2ª generación : Transistor ransistores es (1955 (1955 - 1965) 1965)
Arquitectura orientada orientada a memoria
Arquitectura orientada orientada a bus
Evolución de la Computadora
2ª generación : Transistor ransistores es (1955 (1955 - 1965) 1965)
IBM Introduce al mercado dos modelos de computadoras transistorizadas, la 7090 (específicamente para uso científico) y la l a IBM 1401 (de uso comercial pero muy versátil). Cont Co ntrrol Data Data Co Corp rpor orat atio ionn (C (CDC DC)) En 1964, se introdujo al mercado una computadora muy avanza a para a poca enom na na a , con un alto grado de paralelismo que obtuvo un éxito rotundo de inmediato en el área científica. El diseñador de esta com utadora fue Se mour Cra padr padree de las las supe superc rcom ompu puta tado dorres. es.
Evolución de la Computadora
2ª generación : Transistor ransistores es (1955 (1955 - 1965) 1965)
-Inv -Invenc ención ión del trans transisto istorr. -La DEC modifica el modelo de Von Neumann creando un bus único para comunicar a todos los dispositivos entre sí. -Surgimiento de las primeras computadoras con un alto grado de par paralel alelism ismo, o, prec precur urso sora rass de las las supe superc rcom ompu puta tado dore res. s.
Evolución de la Computadora
3ª generación : Circuitos integrados (1965-1980)
Jack Jack Kilb Kilbyy (Tex (Texas as Instr nstrum umen ents ts-U -USA SA)) Esta época inicia en 1958 con la invención de los circuitos integrados. En 1959, Rober obertt Noyc oyce r e refina el proceso de integración haciendo posible su utilización. Esta innovación hizo posible crear computadoras más ,
Evolución de la Computadora
3ª generación : Circuitos integrados (1965-1980)
IBM Se desarrollo la System/360 , la cual era la primera familia de computadoras con diferentes en tamaños y potencia, pero que eran compatibles entre si y poseían un lenguaje ensamblador común. multiprogramación, multiprogramación, que consiste en la capacidad de tener varios programas en la memoria en ejecución a la vez. n re o ras nnovac ones es a an: Capa Capaci cida dadd de emular a sus sus pre predece deceso sorres. Mayor esp espacio acio de direc irecci cion onam amie ient ntoo de memoria. memoria. Introdu o los re istros orientados hacia alabras de 32 bits la memoria orien ientad tada a byte ytes. Hoy en día aun se usan todas estas características en las PCs. •
•
•
Evolución de la Computadora
IBM
3ª generación : Circuitos integrados (1965-1980) System/360
Evolución de la Computadora
3ª generación : Circuitos integrados (1965-1980) (1968) Robert Noyce y Gordon Moore crean Intel Corporation
(1969) Kenneth Thompson y Dennis Ritchie C(69-73), en los laboratorios AT&T .
vo uc
n
e
nx
Evolución de la Computadora
3ª generación : Circuitos integrados (1965-1980)
Avances Relevantes de la É oca -Invención del circuito integrado. -Surgen las primeras computadoras multitareas, capaces de ejecutar varios programas de forma secuencial, todos compartiendo la memoria. -Capacidad de emulación de otras arquitecturas. -Mayor direccionamiento de memoria. -Se orientan los registros a palabras mientras que la memoria principal se ordena por bytes.
Evolución de la Computadora
4ª generación : Integración a muy grande escala (1980 - Hoy)
Para los años ochenta la VLSI (integración a muy grande escala, Very arge ca e o n egra on a a ec o pos e co ocar m ones e transistores en un solo chip, dando origen a computadoras pequeñas y mas rapidas. En esta época se popularizo la computadora personal (PC de IBM), inicialmente se vendieron paquetes con los componentes básicos para que el usuario construyera el equipo; pero no existían programas .
Evolución de la Computadora
4ª generación : Integración a muy grande escala (1980 - Hoy)
En esta epoca surgen las primeras computadoras Apple diseñadas por eve o s y eve ozn a en con s s emas opera vos y aplicaciones muy amigables.
Evolución de la Computadora
4ª generación : Integración a muy grande escala (1980 - Hoy)
En 1981 IBM entro a competir en el área de las computadoras personales con la IBM Personal Computer-PC, construida con componentes comerciales fáciles de conseguir para el momento, incluyendo como procesador el 8080 de Intel
Evolución de la Computadora
4ª generación : Integración a muy grande escala (1980 - Hoy) Microsoft (1975-Bill Gates y Paul Allen) crea el que denomino MS/DOS y después diseñó el Windows.
Evolución de la Computadora
4ª generación : Integración a muy grande escala (1980 - Hoy) Avances Relevantes de la Época -Se desarrolla la tecnología VLSI. -Se popularizan las computadoras personales (IBM, Apple). -Cobra importancia el software, surgimiento de Microsoft. -En 1982 Feynmann propone la mecánica cuántica como herramienta de computación.
Otras referencias de la historia de los computadores: _ http://www.computerhistory.org/ http://www.intel.com/content/www/us/en/history/historic-timeline.html http://www.howstuffworks.com/microprocessor.htm
Arquitectura de la PC y de su CPU Definiciones de Computador Digital Cualquier dispositivo capaz de procesar información para . sean, típicamente las computadoras realizan su trabajo en tres pasos bien definidos: (1) aceptar una entrada, (2) procesar esta entrada de acuerdo a reglas predefinidas (o programas), y (3) producir una salida. Máquina electrónica, analógica o digital, dotada de una memoria de gran capacidad y de métodos de tratamiento de la información, capaz de resolver problemas matemáticos y lógicos mediante la utilización automática de programas informáticos.
Arquitectura de la PC y de su CPU Definiciones de Computador Digital Es una máquina que usa información, llamada entradas, y la procesa aplicación. Dadas las entradas y las instrucciones la computadora produce y devuelve el resultado, a estos resultados se les denomina salida.
Los computadores son máquinas de procesamiento de la información. Se , imágenes y música.
Arquitectura de la PC y de su CPU Computador Digital Es un sistema electrónico de operación digital compuesto por , interconectados mediante un bus común (colección de cables en paralelo que transmiten direcciones, datos y señales de control) para procesar datos (información) según diferentes tipos de algoritmos . on s s emas para e procesam en o e a os e prop s o genera , que opera con lógica secuencial.
Arquitectura de la PC y de su CPU Arquitectura de Computadores Se dedica a estudiar el diseño de los computadores, en especial lo . partes visibles de un sistema de computadora son los dispositivos de Entrada y Salida, la Memoria, el CPU (instrucciones y tipos de datos) y los Canales o Buses Mem
CPU Buses E/S
Arquitectura de la PC y de su CPU Arquitectura : Buses Los sistemas modernos de computadora presentan una arquitectura orientada a buses . Los buses ueden definirse como con untos de conexiones paralelas entre los diferentes componentes que conforman el computador y funcionan como los mecanismos de comunicación entre los componentes de un computador.
Arquitectura de la PC y de su CPU Arquitectura : Buses Los principales buses que contienen los computadores son: · El bus o canal de direcciones: que permite al microprocesador especificar direcciones de memoria o del espacio de entrada/salida, para la lectura o escritura de la información. · El bus o canal de datos: transfiere datos entre el microprocesador, la memoria y/o los dispositivos de entrada/salida. · para coordinar la comunicación entre el microprocesador y el resto del sistema
Arquitectura de la PC y de su CPU Arquitectura : Buses El ancho del canal de datos influye en la cantidad de datos que , que el canal de direcciones determina la cantidad de memoria que puede ser direccionada por el microprocesador.
Arquitectura de la PC y de su CPU Arquitectura : Buses
Hoy en día, los microprocesadores Intel poseen dos grupos de buses , uno frontal para la memoria y los dispositivos que transfieren más datos (como las tarjetas de video AGP y el bus PCI) y otro para los . memoria se le denomina NorthBridge y al bus de los dispositivos de E/S se le denomina SouthBridge.
Arquitectura de la PC y de su CPU Arquitectura : Buses El bus SouthBridge esta conectado al sistema a través del bus PCI. En el bus PCI normalmente se como las tarjetas de sonido, los puertos paralelos, seriales y us , os iscos uros, etc.
Arquitectura de la PC y de su CPU Arquitectura : Buses
Intel
Celeron Mobile
Arquitectura de la PC y de su CPU Arquitectura : CPU Representan el cerebro de los sistemas de computo modernos y su función básica es la de ejecutar los programas almacenados en la memoria principal coordinando todas las actividades del sistema de computación para procesar la información. Los pasos básicos seguidos por las CPU para la ejecución de un programa son: direcciones predefinidas • Examinar y preprocesar estas instrucciones • ecu ar una ns rucc n ras o ra • Almacenar los resultados de vuelta en la memoria
Arquitectura de la PC y de su CPU Arquitectura : CPU La CPU se compone de cuatro partes fundamentales: la unidad de , , .
Arquitectura de la PC y de su CPU Arquitectura : CPU En la actualidad los microprocesadores poseen muchos más componentes que permiten realizar las mismas funciones con mayor rapidez y un alto grado de paralelismo.
Arquitectura de la PC y de su CPU Arquitectura : CPU Funciones principales de los componentes principales de la CPU: · La unidad de control : que se encarga de buscar las instrucciones en la memoria principal y determinar su tipo. · La unidad aritmética lógica : que como bien lo indica su nom re, es a a cargo e o as as operac ones ar m cas y lógicas necesarias en la ejecución de ciertas instrucciones. · Los registros : son memorias pequeñas y de alta resultados de las operaciones realizadas por las diferentes unidades de procesamiento de los CPU. · El bus : es el com onente interno de la CPU encar ado de transmitir los datos, direcciones y señales de control, entre las diferentes unidades del CPU.
Evolución de los microprocesadores Microprocesador de 4 bits
4K
Palabra: 4-bits
45 instrucciones, 2300 Tx 108KHz
Evolución de los microprocesadores Microprocesador de 4 bits Este microprocesador surge como una solución a un problema de diseño que planteo una compañía japonesa llamada Busicom en 1969 para la creación de una maquina calculadora basada en chips que costó 60,000$. , e o exigencias se percato de que era posible utilizar, en lugar de un conjunto de chips, un microprocesador de 4 bits de propósito general que haría el mismo trabajo que el conjunto de chips propuesto por Busicom. Estos eventos dieron origen al primer microprocesador del mundo.
http://itibonzi.blogspot.com/2011/11/40-anos-del-primer-microprocesador.html
Evolución de los microprocesadores Microprocesador de 8 bits 1972 8008
4K
16K
48 instrucciones 3500 Tx, 200KHz
1974: 8080 10X más rápido, TTL 6000Tx y 2MHz
Palabra: 8-bits 1 K = 1024 direcciones
Evolución de los microprocesadores Microprocesador de 8 bits 1976 8085
El 8085 era mas rápido que el 8080 y además incorporaba un generador de reloj y el controlador del sistema
Evolución de los microprocesadores Microprocesador de 16 bits 1978 8086
5-10 MHz Tx 29000 3 micrometro
1000K=1MB
La evolución a 16bits fue impulsada por la necesidad memoria y por las necesidades de incorporar capacidades de mu t p cac n y v s n Poseen una capacidad para direccionar una memoria de 1MB lo que es lo mismo que pa a ras una pa a ra ene bits)
Evolución de los microprocesadores Microprocesador de 16 bits Con el 8086 se introduce el mane o de la memoria por medio de segmentos, a esto se le llamo segmentación de memoria. Estos de 16 bits (palabra) capaz de acceder a un segmento de memoria de 64 K
Evolución de los microprocesadores Microprocesador de 16 bits El
x 1 micrometro 80286 (1982)
real sobre la arquitectura de 16 bits preexistente
El 80186 fue utilizado aplicaciones de control o como controlador de dispositivos en las ar e as ma res o tarjetas de propósito especifico
ose a capac a para recc onar una mayor cantidad de memoria 16 MB (mediante 24 bits en el bus de direcciones) a traba aba a 16 MHz. Incluyó un nuevo modo de operación, el modo protegido introdujo mejor seguridad y protección del sistema de memoria, y el manejo de memoria virtual para el intercambio de segmentos de memoria
Evolución de los microprocesadores Microprocesador de 32 bits
1 micrometro
Tx 275000 . El 80386 fue el primero en salir (1985) al velocidad de reloj de 33 MHz y una capacidad de direccionamiento de memoria de 4 GB
El 80486 (1989) tenia el doble de la velocidad de reloj (66 MHz) que su pre ecesor y ex s a una vers n que adicionalmente incorpora un coprocesador aritmético (versión 80486DX una memoria caché de 8 KB en el chip
Evolución de los microprocesadores Microprocesador de 32 bits En el 80386 se introdujo la paginación como una herramienta adicional para la administraci n de memoria en el modelo de memoria segmentada y es el primer microprocesador en incorporar etapas paralelas en procesamiento (lo que se conoce como compuestas por unidades de procesamiento especifico Unidad de interfaz del bus
Unidad de ejecución
Unidad de prebúsqueda de instrucciones
Unidad de segmentación
Unidad de decodificación de instrucciones
Unidad de paginación
Evolución de los microprocesadores Microprocesador de 32 bits • Unidad de interfaz del bus : que permitía el acceso a la memoria y a los spos vos e por par e e as em s un a es e . • Unidad de prebúsqueda de instrucciones : permitía recibir código objeto de la unidad del bus y colocarlo en una cola de 16 bytes. • Unidad de decodificacion de instrucciones : decodifica el código de la cola de la unidad de prebúsqueda y lo convierte en microcodigo. • Unidad de ejecución : ejecuta instrucciones de microcodigo. • Unidad de segmentación : traduce direcciones lógicas a direcciones lineales y realiza verificaciones de protección. • Unidad de paginación : realiza la conversión de direcciones lineales a físicas, realiza verificaciones de protección de paginación y mantiene un cache con las paginas mas recientes usadas.
Evolución de los microprocesadores Microprocesador de 32 bits
Evolución de los microprocesadores Microprocesador de 32 bits modo virtual-8086, cuyo propósito era el de mejorar la eficiencia en el procesamiento de aplicaciones desarrolladas para los microprocesadores 8086 y 8088. Estos microprocesadores son capaces de trabajar tanto con el modelo (en el cual todos los segmentos se solapan y tienen acceso a los 4GB completos de memoria)
Evolución de los microprocesadores Microprocesador de 32 bits predecesor y existía una versión que adicionalmente incorpora un coprocesador aritmético (versión 80486DX) y una memoria caché de 8 KB en el chip
Evolución de los microprocesadores Microprocesador de 32 bits En el 80486 se añaden más etapas paralelas; se dividen las unidades e eco cac n y e ecuc n en cinco l neas de ejecuci n independientes que reciben el nombre de Pipeline procesamiento paralelo permitió que estos procesadores ejecutaran una instrucción por ciclo de reloj.
, cache nivel 1 al microprocesador, se integra la unidad de punto flotante al chip del CPU y se añaden características de ahorro energético al
Evolución de los microprocesadores Microprocesador de 32 bits Pipeline
Evolución de los microprocesadores Microprocesador de 32 bits: Pentium Fue la evolución de la eneración x86. A areció con dos líneas de ejecución (dos Pipelines, convirtiéndose en la primera arquitectura superescalar de Intel)
Evolución de los microprocesadores Microprocesador de 32 bits: Pentium
Evolución de los microprocesadores Microprocesador de 32 bits: Pentium Pentium además: • Incluyó un sistema de predicción de ramificaciones de algoritmos • Incluyó un controlador avanzado de control de interrupciones (Advanced Programable Interrupt Controller-APIC) para permitir la conexión de múltiples procesadores Pentium. Esta arquitectura permitió la ejecución de hasta dos instrucciones en un ciclo de reloj. • El cache se almaceno dentro del chip y se duplico su tamaño, e can o a a os y os res an es a c go. •Mejora la compatibilidad del modo virtual-8086 y expande el tamaño de los buses de datos internos de microprocesador a 128 bits y 256 bits. us e a os ex erno ncremen a e sa s.
Evolución de los microprocesadores Microprocesador de 32 bits: Pentium El último procesador introducido en la familia Pentium . que usaba las instrucciones SIMD (single-instruction, multiple-data) para el procesamiento en paralelo de enteros empaquetados contenidos en registros MMX de 64 bits. La tecnología MMX permitió rendimiento de estos procesadores en la ejecución de aplicaciones multimedia, procesam en o e m genes y en aplicaciones de compresión de datos
z Tx 3100000 0.8 micrometro
Evolución de los microprocesadores Microprocesador de 32 bits: Architectura P6 se basan en una nueva micro-arquitectura superescalar que la misma tecnología de fabricación
simultánea de varias instrucciones escalares en paralelo permitiendo con esto ejecutar más de una instrucción por ciclo de reloj Pentium Pro Pentium II Celeron Pentium III Pentium III Xeon
Evolución de los microprocesadores Microprocesador de 32 bits: Architectura P6 El Pentium Pro poseía una arquitectura superescalar con tres líneas de rocesamiento tres Pi elines de 12 eta as c u lo ue le ermitió ejecutar hasta tres instrucciones por ciclo de reloj. En este procesador también se introdujo el concepto de ejecución dinámica y se le añadió un segundo caché denominado cache de nivel 2 con un tamaño de 256 . , direcciones de 36 bits lo que le permitió acceder a un total de 64GB de memoria.
Evolución de los microprocesadores croprocesa or e
s: rc
ec ura
La ejecución dinámica consiste en la capacidad serán ejecutadas, hacer seguimiento de la trayectoria de datos dentro del CPU para aprovechar las oportunidades de ejecución de ns rucc ones uera e or en. Buscando con esto, adelantar la ejecución de ns rucc ones pos er ores a as ram cac ones con datos independientes de las ramificaciones para mantener ocupadas las unidades del CPU y luego retirar los resultados de forma ordenada
Evolución de los microprocesadores Pentium III
Evolución de los microprocesadores Procesadores : •
•
•
•
•
•
•
Características:
Xeon la velocidad de la arquitectura Mobile Pentium 4-M P6, incrementa el paralelismo Pentium 4 EE de los pipelines a 20 etapas, Pentium 4E ejecucion dinamica, añade las Pentium 4F instrucciones SSE2 SSE3 un Pentium D cache nivel 3. Pentium Extreme Edition
Evolución de los microprocesadores Itanium, Itanium 2 descontinuados en 2006) •
- Arquitectura EPIC (Explicitly arallel instruction com utin o VLIW (Very long instruction word)
Micro rocesador de 64-bits: Architectura IA-64 Core Xeon Introduce SSSE3, Dual y Quad Intel Core 2 cores, Soporte de Virtualización de Pentium Dual Core OS, Celeron
•
•
•
•
•
Evolución de los microprocesadores Nehalem microarchitecture •
•
•
•
Core i3 Core i5 r ,
hasta 4 núcleos, Integra el GPU, otras mejoras
Microprocesador de 64-bits: Intel 64 •
•
•
•
Celeron, Pentium Core i3 Core i5 Core i7
Cache L2 independiente por , el GPU, otras mejoras.
Evolución de los microprocesadores Hyperthreading y Dual-Core La tecnología Hyperthreading fue desarrollada para mejorar el rendimiento de la arquitectura IA32 al ejecutar en sistemas operativos multi-hilos y en la ejecución de aplicaciones de un hilo pero que se ejecutan en entornos multitareas HyperThreading es una técnica que permite simular dos procesadores sobre uno sólo. Esto mejora la velocidad de las aprox.
Evolución de los microprocesadores Hyperthreading y Dual-Core El Hyperthreading permite ejecutar dos o más hilos de códigos separados en un mismo procesador al mismo tiempo.
Evolución de los microprocesadores Hyperthreading y Dual-Core La Architectural State (AS) es la parte del CPU que mantiene la información visible u oculta referente a los estados de los procesos, como son: Registros de control Registros de Propósito General • Instruction Flag Registers • Interrupt Mask Registers • Memory management unit Registers • Status registers
• Adder Registers • Address Registers • Counter Registers • Index Registers • Stack Registers • String Registers
Evolución de los microprocesadores Hyperthreading y Dual-Core
Evolución de los microprocesadores Ley de Moore observación hecha por uno de los ingenieros fundadores de Intel, en la que se establece que la cantidad de transistores en los circuitos integrados se . Sorprendentemente, aún hoy esta ley sigue manteniéndose vigente
Evolución de los microprocesadores Ley de Moore
Arquitectura Básica
Interfaces físicas
Tipos de datos Instrucciones
Arquitectura Interna del CPU Sin importar la generación, los microprocesadores funcionan siempre de forma similar : buscan instrucciones de la memoria principal y operan sobre datos obtenidos de dicha memoria para generar resultados a ser almacenados en la misma memoria o ser
Buscar
Operar
Almacenar o presentar
Arquitectura Interna del CPU Los microprocesadores más antiguos tenían una sola unidad que controlaba la interfase del canal y que efectuaba todas las o eraciones. Pero des ués se fue evolucionando el concepto de paralelismo, aprovechando el tiempo ocioso de la memoria y el canal para producir procesos mas rápidos y eficientes A medida que evolucionaron las computadoras comenzaron a a arecer varias unidades internas todas destinadas a trabajar en paralelo. Estas nuevas características permitieron realizar varias operaciones simultáneas
Arquitectura Interna del CPU Unidad de interfase del Canal BIU: que tiene la función de leer instrucciones de la memoria de leer o escribir datos entre el microprocesador y la memoria. La memoria caché conectada a la BIU: en donde se almacenan las instrucciones y los datos que se estima probable a ser utilizados El pre-recuperador: está conectado a la salida del caché y puede contener hasta 3 instrucciones de 1 byte sin e ecutar
CPU - 40486
Arquitectura Interna del CPU Unidad decodificadora de instrucciones: se ubica a la salida del pre-recuperador y su labor es identificar las instrucciones enviarlas a la unidad de control-prueba y protección Unidad de control-prueba y protección: prueba y controla las instrucciones decodificadas por la unidad decodificadora Unidad de punto flotante: unidad de ejecución que realiza las operaciones con números decimales
CPU - 40486
Arquitectura Interna del CPU La unidad de paginación: realiza convierte las direcciones lineales en direcciones físicas cuando se utiliza el mecanismo de manejo de memoria virtual por paginación La unidad de segmentación: convierte las direcciones de memorias lógicas (modelo segmentado) en direcciones lineales (modelo plano) La Unidad Aritmética Lógica ALU: realiza todas las operaciones lógicas y las aritméticas de números enteros
CPU - 40486
Arquitectura Interna del CPU En la actualidad los microprocesadores Intel poseen muchas mas unidades internas, haciendo crecer su paralelismo interno. El paralelismo puede encontrarse a nivel del chip en forma de m p es un a es n ernas, en m p es p pe nes o nc uso como múltiples procesadores encapsulados en el mismo chip. También es posible conseguir niveles de paralelismo fuera del chip en una misma tar eta madre esto es en tar etas madres ue so orten múlti les procesadores. Finalmente, se puede conseguir paralelismo a nivel de computadores completos en dos formas principales como grids (o rejillas de computadores) y como clusters (o conglomerados de .
Arquitectura Interna del CPU
Cluster Grids
Thelinkedimagecannotbedisplayed.Thefilemayhavebeenmoved,renamed,ordeleted.Verifythatthelinkpointstothecorrectfil
eandlocation.
Modos de operación de los microprocesadores Intel de la arquitectura IA-32 Los microprocesadores Intel mas modernos poseen cuatro modos de operación. Estos modos de operación determinan que instrucciones y programación y ejecución. o o Protegido
o o Real
Modo de administración
Modo IA-32e
IA-32 (Intel Architecture, 32-bit ), también conocida de manera genérica como x86. Es la arquitectura del conjunto de instrucciones del procesador mas exitoso de Intel. Fue introducido en el microprocesador Intel 80386 en 1986
Modos de operación de los microprocesadores Intel de la arquitectura IA-32
Modo Protegido Este es el modo de trabajo nativo de los microprocesadores IA-32. En este modo est n disponibles todas las instrucciones y caracter sticas disponible en la familia IA-32. Modo de trabajo no default, pero natural para este tipo de procesa ores. Se asigna por software desde Modo Real Este es el modo de operación recomendado para todos los programas y s stemas operat vos mo ernos. Los datos y las instrucciones manejadas son de hasta 32bits y la memoria se maneja por grupos o bloques denominados segmentos .
Modos de operación de los microprocesadores Intel de la arquitectura IA-32
Modo Protegido Los segmentos de memoria son de diferentes tamaños y el acceso a los mismos puede estar protegido. El microprocesador también puede pasar del modo protegido al modo de administración del sistema si así se desea. Ofrece un ambiente multitarea de ejecución y un submodo especial para mantener compatibilidad con el modo real denominado modo virtual 8086.
Modos de operación de los microprocesadores Intel de la arquitectura IA-32
Modo Real Todos los microprocesadores Intel IA-32 inician su funcionamiento en modo rea . s e mo o mp emen a e en orno e e ecuc n e procesa or (también permite cambiar a cualquiera de los otros dos modos de operación). La memoria se maneja mediante segmentos de tamaño fijo (hasta 64Kbytes). No existe protección de los segmentos e incluso se pueden solapar.
instrucciones que pueden manejarse y el espacio de direccionamiento es de 1MBytes. En este modo todos los datos e instrucciones manejadas son de s.
Entorno básico de ejecución de la familia IA-32 Todos los modos de operación de los microprocesadores Intel de la arquitectura IA-32, utilizan un en orno e e ecuc n com n que no es mas que una serie de recursos para el manejo de su códi o datos e información de su estado de ejecución.
Entorno básico de ejecución de la familia IA-32 • Registros de ejecución básica de programas: 16 registros utilizados para la ejecución de instrucciones de propósito aritmética de enteros y direccionamiento del espacio de memoria. Estos registros se dividen en: 8 de propósito general 6 registros segmento 1 registro de bandera 1 registro apuntador de instrucciones • Registros x87 FPU: son los registros utilizados por la unidad de punto flotante para realizar cálculos numéricos sobre números punto flotante, enteros y BCD. Estos registros se dividen en 8 registros de 80 bits de propósito general, uno de estado, otro apuntador de instrucciones, uno apuntador de datos.
Entorno básico de ejecución de la familia IA-32 • Registros MMX: utilizados para realizar las operaciones SIMD. Son 8 registros de 64 bits. • Son 8 registros de 128 bits y un registro de control de 32 bits. • Pila: existen recursos adicionales para el manejo de la Pila lo que ofrece las herramientas necesarias para realizar llamadas y pase de parámetros en re su -ru nas. a a se a macena en a memor a. • Espacio de direccionamiento de memoria: los microprocesadores de la arquitectura IA-32 pueden direccionar un espacio de memoria lineal de 4 GB 232 b tes una es acio de memoria fisica de 64 GB 236 bytes).
Recursos adicionales de la Arquitectura IA-32 Existen otros recursos que no pertenecen al entorno básico de ejecución pero que son características fundamentales de la arquitectura IA-32 y representan recursos de suma importancia para la programación de . • Puertos de entrada y salida (E/S): es el modelo manejado por la arquitectura para permitir transferir información entre el microprocesador y los dispositivos de E/S. • Registros de control: se poseen 5 registros de control (CR0 al CR4) que determinan el estado de operación del microprocesador y de las tareas en . • Registros para el manejo de la memoria: utilizados para el manejo de la memoria en modo protegido (GDTR, IDTR y LDTR).
Recursos adicionales de la Arquitectura IA-32 • Registros de depuracion: utilizados para operaciones de depuracion (DR0 al DR7). • Re istros de ti o de ran o de memoria: utilizados ara asi nar ti os de memoria a ciertas localidades de memoria (MTRRs). • Registros especificos de la maquina: se utilizan para reportar . mayoria de estos registros no estan disponibles para las aplicaciones de usuario. • Registros de verificacion de la maquina: son registros (MSR) de control, estado y reporte de errores utilizados para el manejo de errores del microprocesador. • Registros contadores para la observacion del rendimiento: permiten eventos en el sistema.
Entorno básico de ejecución de la familia IA-32 Registros de propósito general Los registros de propósito general se utilizan en la forma en la que desee e programa or y se pue en recc onar como reg s ros e s , EBX, ECX, EDX, ESP, EBP, EDI, ESI), como registros de 16 bits (AX, BX, CX, DX, SP, BP, DI, SI) y algunos como registros de 8 bits (AH, AL, BH, BL CH CL DH DL . Algunas de las instrucciones de los microprocesadores utilizan de forma especial estos registros, es por esta razón que se les han asignado . representan por dos o tres letras como por ejemplo AX, CH, BL.
Entorno básico de ejecución de la familia IA-32 Registros de propósito general • EAX (Acumulador – Acumulator): a menudo conserva los resultados de . , , • EBX (Base): contiene frecuentemente la dirección base (desplazamiento) de los datos que hay en la memoria o la dirección base de una tabla de datos a ser • ECX (Contador – Counter): este registro contiene usualmente el conteo de operaciones de desplazamiento de bits y rotaciones, para las operaciones repetidas de cadenas y para las operaciones de ciclos o bucles de programas. (ECX, CX, CH y CL) • EDX (Datos – Data): puede contener la parte mas significativa de un producto después de una multiplicación de 16 o 32 bits; puede contener la par e mas s gn ca va e v en o an es e a v s n o e numero e puerto de E/S (entrada/salida) para una instrucción de E/S. (EDX, DX, DH y DL)
Entorno básico de ejecución de la familia IA-32 Registros de propósito general • ESP (Apuntador de Pila – Stack Pointer): permite direccionar datos Out). Es utilizado por las instrucciones PUSH y PULL o cuando se realizan llamadas a subrutinas con las instrucciones CALL y RET. Este registro se • EBP (Apuntador Base – Base Pointer): se utiliza generalmente para apuntar a una matriz de datos ubicados en una pila de memoria. Tambien se utiliza para manejar los parametros pasados a un procedimiento en el marco de pila del procedimiento. Este registro puede direccionar como EBP o BP.
Entorno básico de ejecución de la familia IA-32 Registros de propósito general • EDI (Indice Destino – Destiny Index): se utiliza generalmente para almacenaran un conjunto de datos en cadena o arreglos. Se puede direccionar como EDI o DI. • – indirecta al lugar de memoria donde se encuentran los datos de una cadena o arreglo de datos que seran copiados a otro lugar de memoria. Se puede direccionar como ESI o SI.
Entorno básico de ejecución de la familia IA-32 Registros especiales Existen dos registros de propósito especial en los • EIP (Registro Apuntador de Instruccion-Instruction Pointer): es un registro cuyo único propósito es apuntar a la próxima instrucción que va a ejecutar el microprocesador. Para conocer la dirección de la instrucción a ejecutar se suma la dirección que contiene EIP al inicio del segmento código. Se puede direccionar como EIP (forma de .
Entorno básico de ejecución de la familia IA-32 Registros especiales • EFLAGS (Banderas): este registro contiene una serie de bits que programa actual después de cada instrucción ejecutada y algunos de ellos controlan su funcionamiento. También se puede direccionar como FLAGS.
Entorno básico de ejecución de la familia IA-32 Registros especiales
Entorno básico de ejecución de la familia IA-32 Registros especiales • EFLAGS – de suma y resta respectivamente, también indica la ocurrencia de errores para ciertas instrucciones, como por ejemplo sobre flujo en operaciones de aritmética sobre números enteros sin signo. • P (Paridad – Parity): indica si el resultado de una operación tiene paridad par. El 1 indica paridad par y el 0 indica paridad impar (recuérdese que la paridad es el conteo de los unos de un numero • A (Medio acarreo – hAlf carry): indica que hubo un acarreo o préstamo entre el tercer y el cuarto bit de un byte en operaciones de suma y resta con números en representación BCD. Instrucciones como DAA y DAS se u zan para a us ar os va ores e espu s e a er rea za o una suma o resta BDC ajustando el valor contenido en AL según lo indique este bit. El microprocesador no utiliza de otra manera este bit.
Entorno básico de ejecución de la familia IA-32 Registros especiales • EFLAGS • Z (Cero – Zero): indica cuando el resultado de una operación matemática o logica es cero. Si el resultado es cero este bit se fija en uno (1), si el resultado es distinto de cero se almacena un cero (0) en este bit. – o resta es positivo o negativo. Si S = 0 el resultado es positivo de lo contrario es negativo. Es importante resaltar que en el bit de signo copia el valor del bit mas significativo del resultado de cualquier instrucción que afecte a las banderas. • T (Trampa – Trap): se utiliza para habilitar las características de depuración del microprocesador (fija el modo de ejecución paso simple). , caso contrario se encuentra deshabilitada.
Entorno básico de ejecución de la familia IA-32 Registros especiales • EFLAGS • n errupc on – n errup : con ro a e unc onam en o e as interrupciones enmascarables del microprocesador. Si I = 0 se deshabilita la entrada INTR y si I = 1 se habilita la entrada INTR. • D Direccion – Direction : controla la selección de incremento o decremento de los registros DI y SI en operaciones de cadenas o arreglos. Si D = 1 hay decremento automático en los registros mencionados, si D = 0 hay incremento automático en estos registros. Esta bandera se fija en uno CLD (borrar D - clear).
Entorno básico de ejecución de la familia IA-32 Registros especiales • EFLAGS • (Sobreflujo – Overflow): este bit es importante solamente en operaciones con signo de lo contrario no importa el estado de este bit. Este bit se coloca en uno si el resultado de la suma o resta aritmética exceden la en cero. P.e. si se suma 7FH (+127) a 01H(+1) el resultado es 80H (-128) esta es una situación de sobre flujo si se trabaja con datos de 1 byte (8bits).
Entorno básico de ejecución de la familia IA-32 Registros de segmentos Los registros segmentos permiten generar de los segmentos de memoria. Los registros segmentos funcionan de forma diferente dependiendo del modo de trabajo del microprocesador. Los registros segmentos FS y GS solo existen a partir de 80386.
Entorno básico de ejecución de la familia IA-32 Registros de segmentos • CS (Registro segmento de código – Code Segment): define la dirección de memoria a partir de la cual se almacenan los programas y procedimientos que ejecuta el procesador. segmento de 64KB en la que esta alojado el código a ejecutar cuando el procesador opera en modo real; si el procesador se encuentra en mo o pro eg o apun a a a recc n de memoria donde se encuentra un descriptor que describe la dirección inicial del se mento de códi o su lon itud sus derechos de acceso.
Entorno básico de ejecución de la familia IA-32 Registros de segmentos • DS Se mento de Datos – Data Se ment : define la dirección de memoria a partir de la cual se almacenan la mayoría de los datos de un programa. • SS (Segmento de Pila – Stack Segment): indica el punto donde inicia la pila. Las operac ones que ra a an con a p a u zan al registro ESP para apuntar al tope de la misma. También es posible acceder a datos dentro de la ila mediante el re istro BP.
Entorno básico de ejecución de la familia IA-32 Registros de segmentos • ES Se mento Extra – Extra Se ment : contiene la dirección de un segmento de extra de memoria utilizado para algunas instrucciones de cadenas.
ofrecer a los programadores capacidad para disponer de dos segmentos adicionales de memoria para datos.
Manejo de la memoria en el microprocesador Los microprocesadores Intel manejan la memoria en dos formas diferentes. La memoria física es la que estos ven desde sus buses (es la que ve el fabricante de hardware) y la memoria lógica la que se utiliza a nivel de la programación (es la que ve el programador)
Manejo de la memoria en el microprocesador Memoria Física La memoria física se organiza en bloques pequeños de memoria de 8 bits a los que se de memoria, y el numero de bancos de memoria depende del tama o del bus de datos del microprocesador.
Manejo de la memoria en el microprocesador Memoria Lógica La memoria ló ica es la misma ara todos los microprocesadores Intel, se considera como un gran bloque de memoria organizado en bytes, con la única distinción el tamaño del bloque puede ser mas grande o mas pequeño. Esta es la manera como el programador ve la memoria, solo se diferencia de un procesador de otro en cuanto a la cantidad de memoria que puede direccionar.
Manejo de la memoria en el microprocesador Memoria Lógica
Manejo de la memoria en el microprocesador Modelos para el manejo de la memoria lógica
Los microprocesadores Intel no manejan la memoria física de , manejo de la memoria: Modelo Plano Modelo Segmentado Modelo Real.
Manejo de la memoria en el microprocesador Modelos para el manejo de la memoria lógica • Modelo Plano (Flat memory model) Este es el modelo básico para el manejo de la memoria lógica de los microprocesadores Intel. En este modelo se maneja la memoria como un espacio continuo de direcciones. A este espacio de memoria se le denomina espacio lineal de direcciones. Tanto los programas como los datos y la pila están contenidos en este espacio de memoria.
Manejo de la memoria en el microprocesador Modelos para el manejo de la memoria lógica • Modelo Plano (Flat memory model) Una dirección en este modelo de memoria se denomina “dirección lineal”. La dirección lineal puede estar relacionada con las direcciones de memoria física de forma directa o de forma indirecta. En la relación directa existe una correspondencia uno a uno con las
En
la relación indirecta se ra ucen as recc ones nea es a la físicas a través de un mecanismo denominado paginación.
Manejo de la memoria en el microprocesador Modelos para el manejo de la memoria lógica • Modelo Plano (Flat memory model) : Paginación Las páginas tienen tamaño fijo. Ej: 4 Kbytes Son contiguas (no se solapan ni son disjuntas)
en a as Administración
simple de la memoria (tamaño fijo)
Si requiero memoria para una variable de 1 byte el sistema me asigna una página de 4 K completa , principio, es complejo.
Manejo de la memoria en el microprocesador Modelos para el manejo de la memoria lógica • Modelo Segmentado (Segmented memory model) En este modelo, la memoria aparece como bloques de direcciones independientes denominados segmentos. Estos bloques se pueden pensar como varios modelos planos de memoria independientes uno del otro, . almacenan en segmentos de memoria distintos en este modelo.
Manejo de la memoria en el microprocesador Modelos para el manejo de la memoria lógica • Modelo Segmentado (Segmented memory model) Las direcciones manejadas por este modelo para ubicar un byte dentro de un segmento se denominan “direcciones lógicas”. Una dirección lógica se conforma de un selector de segmento y un desplazamiento (estas
El selector de se mento identifica cual es el se mento al ue se tendrá acceso y el desplazamiento identifica un byte dentro del espacio de direccionamiento del segmento.
Manejo de la memoria en el microprocesador Modelos para el manejo de la memoria lógica • Modelo Segmentado (Segmented memory model) Todos los segmentos definidos por este modelo se localizan dentro del modelo plano de memoria. El microprocesador posee mecanismos para convertir la dirección lógica de . para el usuario y las aplicaciones. Ventajas reubicables en cualquier lugar de la memoria
Desventajas Es engorroso a ministrar memoria con oques e tamaño variable
Manejo de la memoria en el microprocesador Modelos para el manejo de la memoria lógica • Modelo Real (Real-address mode memory model) Este es el modelo de manejo de memoria que utiliza el microprocesador 8086, en el cual solamente se tiene acceso a 1Mbyte de memoria. Existe para proveer compatibilidad con los programas escritos para el 8086. El modelo real es un caso especifico del modelo segmentado. En el mismo se manejan segmentos de memor a e y es. n es e mo e o as recc ones de memoria se denominan direcciones lógicas y se calculan igual que como lo hace el modelo se mentado mediante un selector de se mento un desplazamiento.
Manejo de la memoria en el microprocesador Cálculo de las direcciones lineales en el modelo real En el modelo real la memoria se direcciona a través de un selector de , . El selector de segmentos en este modelo viene dado por una dirección almacenada en uno de los seis registros segmentos y el desplazamiento puede estar conformado por varios componentes
Manejo de la memoria en el microprocesador Cálculo de las direcciones lineales en el modelo real La dirección lineal se calcula multiplicando al registro segmento por 10H
Manejo de la memoria en el microprocesador Cálculo de las direcciones lineales en el modelo real Ejemplo Se posee un selector de segmento almacenado en el registro DS = 1AB0H y un desplazamiento almacenado en un registro de propósito general (AX = 1010H). Determine cual es su recc n nea .
OJO: los registros segmento contienen la dirección donde inicia el segmento y el desplazamiento indica cual es el byte dentro del segmento seleccionado al que se desea acceder
Manejo de la memoria en el microprocesador Cálculo de las direcciones lineales en el modelo segmentado El selector del segmento siempre esta ubicado en un registro segmento en un lugar especial de la memoria. El selector contiene tres elementos que permiten seleccionar al descriptor
Manejo de la memoria en el microprocesador Cálculo de las direcciones lineales en el modelo segmentado El RPL es el nivel de rivile io solicitado or el usuario o la aplicación para acceder a un segmento, este debe ser mayor o igual al nivel de privilegio del descriptor denominado DPL. El campo TI establece si el descriptor seleccionado es de la tabla de descriptores globales (TI = 0) o de la tabla de descriptores locales (TI = 1). El índice indica cual descriptor dentro de la tabla de descriptores .
Manejo de la memoria en el microprocesador Cálculo de las direcciones lineales en el modelo segmentado
Al seleccionar el descri tor se utiliza la información contenida en el el inicio segmento, longitud y derechos acceso mismo.
del su los de al
Manejo de la memoria en el microprocesador Cálculo de las direcciones lineales en el modelo segmentado Finalmente, para calcular la dirección lineal correspondiente a la descriptor y el desplazamiento
Ejemplo suponga que un descriptor posee una base=FFA10000H y un desplazamiento dado por el registro EBX=00001234H. Determine cual es su dirección lineal.
Modos de direccionamiento de memoria Según las diferentes combinaciones que pueden utilizarse para construir una dirección efectiva (en función de los modos de operación y modelos de memoria), Intel define algunos modos comunes para el direccionamiento e a memor a e a os.
Modos de direccionamiento de memoria • Base: es un valor almacenado en uno de los 8 registros de propósito general. • ndice: un valor almacenado en un registro de propósito general (con excepción del registro ESP que no puede ser utilizado como índice). • Factor de escala: es un factor que multiplica al índice y puede ser 1, 2, 4 u 8 • Desplazamiento fijo: es un valor de 8bits, 16bits o 32bits (puede estar representado por una etiqueta de memoria).
Modos de direccionamiento de memoria Existen diferentes consideraciones importantes cuando se calculan direcciones efectivas de memoria. algunas de las mas importantes son: La base, el índice y el desplazamiento numérico pueden utilizarse en cualquier combinación. Cualquiera de estos elementos puede utilizarse como máximo una vez o puede omitirse. Si la instrucción transfiere información de una fuente a un destino, ambos tienen que ser del mismo tamaño y el destino nunca puede ser el registro segmento de código CS. No se admiten transferencias entre registros segmentos
Modos de direccionamiento de memoria Modo de Desplazamiento: se utiliza cuando la referencia a la memoria viene dada por el elemento de desplazamiento fijo. un dato en la memoria de forma indirecta. Se dice que el direccionamiento es indirecto porque esta almacenado en un registro. Modo de Base + Desplazamiento: en este modo de direccionamiento se utiliza un elemento base y uno de desplazamiento. Modo (Índice * Escala) + Desplazamiento: en este modo existen solamente los elementos índice, factor de escala y el desplazamiento. Este modo es muy eficiente para direccionar arreglos estáticos de a os en memor a cuyo ama o sea e , y y es. e emen o e “desplazamiento fijo” ubica el inicio del arreglo y el elemento índice contiene el numero (índice) del dato al que se desea acceder
Modos de direccionamiento de memoria Modo Base + Índice + Desplazamiento: es un modo complejo de direccionamiento que usa los elementos base, índice y desplazamiento. Este modo permite direccionar arreglos bidimensionales Modo Base + (Índice * Escala)+ Desplazamiento: es el modo de direccionamiento mas complejo. Este modo permite direccionar de en donde los elementos tengan tamaño de 2, 4 u 8 bytes.
Modos de direccionamiento de memoria Problemas para el cálculo de direcciones de memoria
Para determinar la dirección de memoria efectiva en todo momento se
modelo segmentado). Los problemas propuestos utilizan las instrucciones: , ” “ ” La 1ra permite instrucción se encarga de transferir datos de un ORIGen a un DESTino y la 2da se utiliza para almacenar datos en el segmento de pila. Para la ejecución de cada instrucción es necesario identificar el dato que será movido, su tamaño y las direcciones destino y origen. Debe indicarse en cada instrucción ue ti o de direccionamiento se esta realizando (según los modos de direccionamiento) y los valores de los datos que tendrán los registros modificados.
Modos de direccionamiento de memoria I. Ejemplo para solución de instrucciones en modo real Vaciado de memoria: s o t s i g e r s o l a r a p s e l a i c i n i s e r o l V
AX = 000AH BX = 0003H CX = 1111H DX = FFFFH
DS = 2A20H CS = 1000H SS = AA00H = SP = 000AH DI = 0005H
A. MOV EAX,[BX+DI+2]
Modos de direccionamiento de memoria I. Ejemplo para solución de instrucciones en modo real Vaciado de memoria: s o t s i g e r s o l a r a p s e l a i c i n i s e r o l V
AX = 000AH BX = 0003H CX = 1111H DX = FFFFH
DS = 2A20H CS = 1000H
A. MOV EAX,[BX+DI+2]
SS = AA00H = SP = 000AH DI = 0005H
Se debe calcular la dirección de memoria deseada para luego EAX
Modos de direccionamiento de memoria I. Ejemplo para solución de instrucciones en modo real Vaciado de memoria: s o t s i g e r s o l a r a p s e l a i c i n i s e r o l V
AX = 000AH BX = 0003H CX = 1111H DX = FFFFH
DS = 2A20H CS = 1000H
A. MOV EAX,[BX+DI+2]
SS = AA00H = SP = 000AH
Base mas Índice mas Desplazamiento fijo
DI = 0005H
MD: B+I+D
Modos de direccionamiento de memoria I. Ejemplo para solución de instrucciones en modo real Vaciado de memoria: s o t s i g e r s o l a r a p s e l a i c i n i s e r o l V
AX = 000AH BX = 0003H CX = 1111H DX = FFFFH
DS = 2A20H CS = 1000H SS = AA00H = SP = 000AH DI = 0005H
A. MOV EAX,[BX+DI+2] Dirección de memoria = Selector*10H+Offset * = 2A20H*10H + 0003H + 0005H + 2 = 2A20AH
Modos de direccionamiento de memoria I. Ejemplo para solución de instrucciones en modo real Vaciado de memoria: s o t s i g e r s o l a r a p s e l a i c i n i s e r o l V
AX = 000AH BX = 0003H CX = 1111H DX = FFFFH
DS = 2A20H CS = 1000H
A. MOV EAX,[BX+DI+2]
SS = AA00H = SP = 000AH DI = 0005H
Contenido de memoria EAX = [2A20AH] = BCAF6745H
Modos de direccionamiento de memoria I. Ejemplo para solución de instrucciones en modo real Vaciado de memoria: s o t s i g e r s o l a r a p s e l a i c i n i s e r o l V
AX = 000AH BX = 0003H CX = 1111H DX = FFFFH
DS = 2A20H CS = 1000H SS = AA00H = SP = 000AH DI = 0005H
A. MOV EAX,[BX+DI+2] MD: B+I+D Dirección de memoria = Selector*10H+Offset * = 2A20H*10H + 0003H + 0005H + 2 = 2A20AH on en o e memor a:
=
=
Modos de direccionamiento de memoria I. Ejemplo para solución de instrucciones en modo real Vaciado de memoria: s o t s i g e r s o l a r a p s e l a i c i n i s e r o l V
AX = 000AH BX = 0003H CX = 1111H DX = FFFFH
DS = 2A20H CS = 1000H SS = AA00H = SP = 000AH DI = 0005H
B: MOV BX,SS:[AX]
Modos de direccionamiento de memoria I. Ejemplo para solución de instrucciones en modo real Vaciado de memoria: s o t s i g e r s o l a r a p s e l a i c i n i s e r o l V
AX = 000AH BX = 0003H CX = 1111H DX = FFFFH
DS = 2A20H CS = 1000H
B: MOV BX,SS:[AX]
SS = AA00H = SP = 000AH
Base
DI = 0005H
MD: B
Modos de direccionamiento de memoria I. Ejemplo para solución de instrucciones en modo real Vaciado de memoria: s o t s i g e r s o l a r a p s e l a i c i n i s e r o l V
AX = 000AH BX = 0003H CX = 1111H DX = FFFFH
DS = 2A20H CS = 1000H SS = AA00H = SP = 000AH DI = 0005H
B: MOV BX,SS:[AX] Dirección de memoria = Selector*10H+Offset * = AA00H*10H + 000AH = AA00AH
Modos de direccionamiento de memoria I. Ejemplo para solución de instrucciones en modo real Vaciado de memoria: s o t s i g e r s o l a r a p s e l a i c i n i s e r o l V
AX = 000AH BX = 0003H CX = 1111H DX = FFFFH
DS = 2A20H CS = 1000H
B: MOV BX,SS:[AX]
SS = AA00H = SP = 000AH DI = 0005H
Contenido de memoria BX = [AA00AH] = 70FAH
Modos de direccionamiento de memoria I. Ejemplo para solución de instrucciones en modo real Vaciado de memoria: s o t s i g e r s o l a r a p s e l a i c i n i s e r o l V
AX = 000AH BX = 0003H CX = 1111H DX = FFFFH
DS = 2A20H CS = 1000H SS = AA00H = SP = 000AH DI = 0005H
B: MOV BX,SS:[AX] MD: B Dirección de memoria = Selector*10H+Offset * = AA00H*10H + 000AH = AA00AH on en o e memor a:
=
=
Modos de direccionamiento de memoria I. Ejemplo para solución de instrucciones en modo real Vaciado de memoria: s o t s i g e r s o l a r a p s e l a i c i n i s e r o l V
AX = 000AH BX = 0003H CX = 1111H DX = FFFFH
DS = 2A20H CS = 1000H SS = AA00H = SP = 000AH DI = 0005H
C: MOV AH,BL
Modos de direccionamiento de memoria I. Ejemplo para solución de instrucciones en modo real Vaciado de memoria: s o t s i g e r s o l a r a p s e l a i c i n i s e r o l V
AX = 000AH BX = 0003H CX = 1111H DX = FFFFH
DS = 2A20H CS = 1000H
C: MOV AH,BL
SS = AA00H = SP = 000AH DI = 0005H
Direcci n de memoria: no aplica Contenido de memoria: AH = BL = 03H Modo de direccionamiento: no aplica
Modos de direccionamiento de memoria II. Ejemplo para solución de instrucciones en modo protegido Vaciado de memoria: s o t s i g e r s o l a r a p s e l a i c i n i s e r o l V
AX = 0002H CX = 0001H DX = 0004H SS = 0020H DS = 001CH CS = 0001H DI = 0013H SI = 0004H BP = 0002H SP = 0008H
Modos de direccionamiento de memoria II. Ejemplo para solución de instrucciones en modo protegido D: MOV FS,[SP] Modo de direccionamiento Base Dirección de memoria= Selector + Des lazamiento = BASE+SP Selector = SS = 0020H = 0020H = 0000000000100|0|00 b TI = 0 Tabla de descri tores lobales RPL = 00 (mayor nivel de privilegio) Índice = 0000000000100 b = 4
Modos de direccionamiento de memoria II. Ejemplo para solución de instrucciones en modo protegido D.- MOV FS,[SP]
Descriptor 7 [00 | 00] 5 [F6 | 0A] 3 [A0 | 00] 1 [01 | 00]
6 4 2 0
Base: 000AA000H Límite: 0100H
Dirección de memoria: BASE+SP = 000AA000H + 0008H = 000AA008H
Modos de direccionamiento de memoria II. Ejemplo para solución de instrucciones en modo protegido D.- MOV FS,[SP] Dirección de memoria = BASE+SP = 000AA000H + 0008H = 000AA008H
Contenido de memoria FS = [000AA008H] = DCBAH
Modos de direccionamiento de memoria II. Ejemplo para solución de instrucciones en modo protegido D.- MOV FS,[SP] Dirección de memoria = BASE+SP = 000AA000H + 0008H = 000AA008H
Contenido de memoria FS = [000AA008H] = DCBAH
Modos de direccionamiento de memoria II. Ejemplo para solución de instrucciones en modo protegido E.- MOV BX,[DX+2*SI] Selector (DS) = 001CH = 0000000000011|1|00 TI = 1 (Tabla de descriptores locales) Índice = 0000000000011 b = 3 Descriptor 7 [00 | 00] 6 5 [F2 | 01] 4 3 [00 | 00] 2
Base: 00010000H Límite: 00BCH
Modos de direccionamiento de memoria II. Ejemplo para solución de instrucciones en modo protegido E.- MOV BX,[DX+2*SI] Dirección de memoria = BASE+DX+2*SI = 00010000H + 0004H + 2*0004H = 0001000CH Contenido de memoria BX = [0001000CH] = 982BH Modo de direccionamiento Base mas Índice Escalado
Modos de direccionamiento de memoria II. Ejemplo para solución de instrucciones en modo protegido F.- PUSH 102AH
En general todas las direcciones de la memoria se ordena de forma ascendente de abajo hacia arriba, pero en la pila se or ena e orma nversa
Modos de direccionamiento de memoria II. Ejemplo para solución de instrucciones en modo protegido F.- PUSH 102AH
LIFO
Modos de direccionamiento de memoria II. Ejemplo para solución de instrucciones en modo protegido F.- PUSH 102AH 102AH [SP-1] -
10
1Byte
MSB
LSB
Segmento de Pila [SP]=0
SS
2A
1Byte
Modos de direccionamiento de memoria II. Ejemplo para solución de instrucciones en modo protegido F.- PUSH 102AH
MSB
… 10 2A
LSB
i) [SP-1] MSB
[SP] [SP-1] [SP-2]
ii) [SP-2] LSB
Modos de direccionamiento de memoria II. Ejemplo para solución de instrucciones en modo protegido F.- PUSH 102AH
1) Selector 2) Descriptor
Dirección de memoria = BASE+SP = 000AA000H + 0008H = 000AA008H Contenido de memoria= [000AA007H] = 10H y [000AA006H] = 2AH SP = SP-2 = 0006H Modo de direccionamiento: De Pila.
Datos manejados por IA-32 Los microprocesadores intel de la familia IA-32 manejan diversos tipo de datos. Los datos en los microprocesadores intel se pueden almacenar en forma de enteros, BCD y decimales. Sin importar el tipo, existen unos formatos básicos utilizados por la familia IA-32 para el almacenamiento de estos datos: Palabras (16 b) Palabras dobles (32 b), Palabras cuádruples (64 b) Palabras cuádruples dobles (128 b)
Los datos manejados serán almacenado en alguno de estos formatos epen en o e o gran e o peque o e a o que se esea represen ar o del tamaño con el que se desea operar.
Datos manejados por IA-32
256 65.536 4.294.967.296 18.446.744.073.709.551.616 3,4028236692093846346337460743177e+38
Datos manejados por IA-32 La organización de los datos en la memoria de los microprocesadores intel se realiza colocando en las direcciones mas bajas de memoria los datos menos significativos y en las direcciones mas altas las partes mas significativas Ejemplo
0A 11 BB 2B MSB
LSB
“ Little Endian ”
Datos manejados por IA-32 Datos Enteros Los datos enteros se pueden almacenar en los enteros sin signo y en complemento a dos cuando se desea representar enteros con signo. En binario simple se usa cualquiera de los formatos vistos para almacenar un dato. Es evidente que mientras mas grande sea el dato es probable que se requiera un formato mas grande para poder almacenarlo
Datos manejados por IA-32 Datos Enteros Ejemplo : Presentar el numero entero 200 en formato de 1 byte
MSB
LSB
Cuando se representan números enteros en binario simple, el valor decimal de dicho numero se puede obtener mediante la formula:
Donde BX es el bit en la posición X
Datos manejados por IA-32 Datos Enteros Los enteros con signo se almacenan en complemento a dos. Básicamente, significativo tiene ponderación negativa mientras que todos los demás bits de la representación tienen ponderación positiva.
Ejemplo : Presentar el numero -38 en formato de 1 byte i) Representar 38 en binario: 3810 = 001001102 ii) Luego llevarlo a complemento a dos: tomando de derecha a izquierda, escribir cada dígito hasta encontrar el primer "1", el cual debe de . " ", " " " " " " " ". -3810 = 110110102
Datos manejados por IA-32 Datos decimales En los microprocesadores modernos se utiliza la norma IEEE-754 para representar los números decimales. Hoy en día existen tres formatos distintos de esta norma para representar números decimales: Punto flotante de precisión simple Punto flotante de precisión doble Punto flotante de precisión doble extendida.
Datos manejados por IA-32 Datos decimales
Datos manejados por IA-32 Datos decimales El Bit de signo indica si el numero es ositivo 0 o si es ne ativo 1 el bit J existe solamente para el formato de precisión doble extendida (para los otros dos formatos es implícito). representarlo siempre como numero positivo y el significante representa la parte decimal
Datos manejados por IA-32 Datos decimales Cuando se dice que el exponente utilizado esta “polarizado”, implica que . Formato Precisión simple Precisión doble Precisión doble extendida
Constante 127 (7FH) 1023 (3FFH) 16383 (3FFFH)
pero esto sucede solamente cuando se representan números muy pequeños.
Datos manejados por IA-32 Datos decimales
Datos manejados por IA-32 Datos decimales Ejemplo : Se desea convertir el numero 34.062510 a la representación
5+127=132 13210=100001002
Datos manejados por IA-32 Datos BCD
En los microprocesadores intel se pueden manejar los números BCD (Binary-Coded Decimal ) de forma directa. Tanto la unidad aritméticogica como a uni a punto otante soportan operaciones en BCD. E almacenamiento de estos números puede ser en tres formas diferentes: Formato desempacado orma o empaca o Formato empacado en 80 bits.
74 102
0111 0100 0001 0000 0010
Datos manejados por IA-32 Datos BCD El formato desempacado permite representar un digito BCD por cada byte. El BCD se almacenara en la parte menos significativa del byte y la parte mas significativa del byte no se utiliza. El formato empacado almacena dos dígitos BCD en un byte. En la parte mientras que en la parte alta del byte se almacena el digito BCD mas significativo. Cuando se requiera representar un numero entero de dos dígitos, el digito menos significativo se almacenara en la parte baja del byte y el digito mas significativo se almacenara en la parte alta del byte. Para representar números enteros de hasta dieciocho (18) dígitos . numero en el bit mas significativo (bit 79).
Direccionamiento de memoria Resumen La
memoria de los microprocesadores intel se direcciona a través de conjuntos de instrucciones diferentes dependiendo si se desea trabajar con datos generales, datos de pila o programas. Sin importar lo que esta almacenado en la memoria (datos, programas o pila) ni del modelo de memoria manejado, al direccionar la memoria se pueden utilizar un conjunto de combinaciones de parámetros para construir la dirección efectiva: Modos de direccionamiento
Direccionamiento de memoria Resumen El direccionamiento implícito es importante al momento de ubicar los datos con los cuales se este trabajando:
Direccionamiento de memoria Resumen La
instrucción por excelencia utilizada para manejar la memoria de datos es la instrucción “MOV DESTINO,FUENTE”. Esta instrucción siempre copia un dato de la fuente al destino. Los operandos que se pueden utilizar en esta instrucción tanto para la fuente como para el destino son los Registros, Memoria, Inmediato o Entrada/Salida
Direccionamiento de memoria Resumen Existen algunas restricciones para el uso de la instrucción MOV . No se admiten transferencias entre memoria, de manera que los dos operandos no pueden ser de memoria en una misma instrucción MOV. o se pue en rea zar cop as e a os en re reg s ros segmen os en una misma instrucción. El registro segmento de código CS no puede ser operando destino de . puede ser cambiado por las instrucciones especiales para direccionar código Los datos inmediatos nunca ueden ser o eradores destino
Direccionamiento de memoria Resumen que establezca el tamaño del dato que será copiado. Cuando ninguno de los dos operandos provea información sobre el , ensamblador que especifique el tamaño en alguno de los dos operandos. Para transferir bytes se usa byte ptr, para palabras word ptr, para dobles palabras dword prt. Estas directivas de ensamblador se utilizan so amente con operan os e memor a.
Direccionamiento de memoria de datos Según B. Brey Direccionamiento de registro: transfiere un byte, palabra o doble palabra de un registro a otro o entre un registro y una localidad de memoria. , • MOV AX,BX • MOV ESP,EDI • MOV CS,CX • MOV DS,ES • MOV BX,CL
; transfiere 1 palabra de BX a AX ; transfiere 1 palabra doble de EDI a ESP ; no es permitido porque cambia a CS ; no es permitida la transferencia entre registros segmento ; no es permitida la transferencia entre registros de diferentes tamaños
Direccionamiento de memoria de datos Según B. Brey Direccionamiento inmediato: transfiere un dato inmediato del tamaño , memoria o dispositivo de entrada/salida • MOV BH,20 ; transfiere 1 byte (20-decimal) al registro BH • , ; rans ere pa a ra - exa ec ma al registro CX •MOV EDX,0A0000011H
; transfiere 1 palabra doble (A0000011H) al reg stro
•MOV BX,'AB'
; transfiere el dato ‘AB' al registro BX (BH = 'B‘ y BL = 'A') ; transfiere el dato binario 11000111b al registro DL
• MOV DL,11000111b
Direccionamiento de memoria de datos Según B. Brey Direccionamiento directo: permite transferir datos entre una dirección de , • MOV AH,TABLA
;transfiere un byte de la dirección de memoria TABLA (del segmento de datos) al registro AH
• MOV BX,SS:DATO
;transfiere dos bytes de la dirección de memoria DATO (del segmento de pila) al registro BX ;transfiere cuatro bytes de la dirección de memoria ARREGLO (del Segmento de datos) al registro ECX
• MOV ECX,ARREGLO ,
dirección de memoria del segmento de extra con desplazamiento de 1000H
Direccionamiento de memoria de datos Según B. Brey Direccionamiento directo: permite transferir datos entre una dirección de , MOV BYTE PTR TABLA,20
;transfiere el dato decimal 20 de un b te a la dirección de memoria TABLA (del segmento de datos)
Direccionamiento de memoria de datos Según B. Brey Direccionamiento indirecto por registro: transfiere datos entre una . de memoria se especifica a través de un registro. • MOV DH AX
transfiere un b te de la dirección de memoria del segmento de datos con desplazamiento dado por AX al registro DH
•
;r r y r r dirección de memoria del segmento de pila con desplazamiento dado por BP
,
Direccionamiento de memoria de datos Según B. Brey Direccionamiento indirecto por registro: transfiere datos entre una . de memoria se especifica a través de un registro. , la dirección de memoria del segmento de datos con desplazamiento dado por EBX MOV [BX],[DI]
;no se pueden realizar transferencias de memoria a memoria con la instrucción MOV
Direccionamiento de memoria de datos Según B. Brey Direccionamiento base-más-índice: transfiere datos entre una oca i a e memoria y un registro o un ato inme iato. La irecci n efectiva de memoria se especifica a través de un registro base y uno índice ,
+
,
MOV ECX+ESI DH
memoria del segmento de datos con desplazamiento dado por “BX+DI” hacia el registro AX ; rans ere un y e e reg s ro a a dirección de memoria del segmento de pila con desplazamiento dado por “BP+SI” transfiere un b te del re istro DH a la dirección de memoria del segmento de datos con desplazamiento dado por “ECX+ESI”
Direccionamiento de memoria de datos Según B. Brey Direccionamiento base-más-índice: Es común utilizar este modo de direccionamiento para ubicar datos dentro de un arreglo de datos unidimensional en la memoria. Índice
Normalmente se interpreta al inicio del arreglo y al registro índice como la distancia entre el inicio del arreglo y el dato que se esea u car en ro e m smo.
Base DS
Direccionamiento de memoria de datos Según B. Brey Direccionamiento base-más-índice: EJEMPLO
Direccionamiento de memoria de datos Según B. Brey Direccionamiento relativo a registro: transfiere datos entre una oca i a e memoria y un registro o un ato inme iato. La irecci n efectiva de memoria se especifica a través t ravés de un registro base y un desplazamiento fijo , + ; rans ere un y e e a recc n e memoria del segmento de datos con desplazamiento dado por “SI+10” al re istro AH MOV TABLA[AX+4],BP ;transfiere dos bytes del registro BP a la dirección de memoria del segmento de datos con desplazamiento dado por ”
Direccionamiento de memoria de datos Según B. Brey Direccionamiento relativo a registro: Este modo de direccionamiento puede ser utilizado para acceder a elementos de un arreglo unidimensional de la misma manera como se utili utiliza za el de Base Base mas mas ndice ndice con con al unas unas dife difere renc ncia iass . La dirección del inicio del arreglo estará dada por un desplazamiento fijo y la dirección del elemento a partir del inicio ini cio .
Direccionamiento de memoria de datos Según B. Brey Direccionamiento relativo a registro:
Como puede observarse, no es necesario inicializar al registro BX para que apunte al inicio del arreglo de datos y en consecuencia se ahorra una línea de programación
Direccionamiento de memoria de datos Según B. Brey Direccionamiento relativo a base-más-índice: transfiere datos . dirección efectiva de memoria se especifica a través de un registro base , uno índice y un desplazamiento fijo. • •
,
; rans ere os y es e segmen o de datos con desplazamiento dado por “BX+SI+30H” al registro CX ,
EBX al segmento de pila con desplazamiento dado por “EBP+EDI+TABLA “EBP+EDI+TABLA” ”
Direccionamiento de memoria de datos Según B. Brey Direccionamiento relativo a base-más-índice:
Direccionamiento de memoria de datos Según B. Brey Direccionamiento de índice escalado: transfiere datos entre una efectiva de memoria se especifica a través de un registro índice multiplicado por un factor de escala (1-2-4-8) y posiblemente con un registro base y un desplazamiento fijo •MOV ECX,[EDX+4*EBX] •MOV ARREGLO[8*ECX],AH
;transfiere cuatro bytes del segmento de datos con desplazamiento dado “ * ” ;transfiere un byte del registro AH al segmento de datos con “ARREGLO + 8*ECX”
Direccionamiento de memoria de datos Según B. Brey Direccionamiento de índice escalado:
Direccionamiento de memoria de programa La memoria de código solamente puede direccionarse mediante instrucciones de control de flujo de programas como son los saltos condicionales e incondicionales las instrucciones cíclicas
Direccionamiento de memoria de programa Saltos incondicionales
Saltos condicionales al IF {Condición} THEN {Acción} del lenguaje BASIC, de tal manera que cuando se cumple una condición dada, se “salta” a un sitio determinado
Direccionamiento de memoria de programa Direccionamiento indirecto de memoria En este modo, la dirección de salto viene dada por un registro y la misma sustituye al valor actual del registro apuntador de instrucción (IP o EIP). JMP JMP
EDX EDX
JMP
BX
JMP
TABLA[CX]
datos con JMP
[BX+2]
datos con
salt saltaa a la dire direcc cció iónn del del se ment mentoo de códi códi o dada por EDX (copia a EDX en EIP) ;salta a la dirección del segmento de código dada por BX (copia a BX en IP) ;salta a la dirección del segmento de código almacenada en el segmento de desplazamiento dado por ;salta a la dirección del segmento de código almacenada en el segmento de des lazamiento dado or
Direccionamiento de memoria de programa Ejemplo de salto condicional/incondicional
Direccionamiento de memoria de pila El segmento de pila se direcciona mediante instrucciones especiales (PUSH y POP) cuando se direccionan datos utilizando util izando como base el registro EBP o el registro ESP Al inicializar el segmento de pila el registro segmento segmento de pila (SS) apunta al inicio del segmento de pila y el registro apuntador de pila (SP o s empre apun a a op ope e a p a. Cada vez que se introduce un dato en la pila este se almacena en el tope de la pila, es decir, decir, se almacena despues de la direccion indicada por e reg s ro ; na men e e reg s ro se ecremen a para apuntar a este nuevo dato introducido. Cuando se extrae un dato de la pila, siempre se extrae el ultimo dato introducido, es decir, decir, el apuntado or el re istr istroo SP SP.
Direccionamiento de memoria de pila
Direccionamiento de memoria de pila
Inicialmente SP apunta al inicio del segmento, pero cuando se introduce el primer dato en la pila este se coloca luego se decrementa el valor de SP en el numero de bytes que se introdujo en el segmento de pila.
Direccionamiento de memoria de pila
Direccionamiento de memoria de pila
Direccionamiento de memoria de pila
Con el comando POP se extraen datos del segmento de pila y se almacenan en registros
Direccionamiento de memoria de pila
Direccionamiento de memoria de pila
PUSH registro
PUSH memoria
PUSH dato_inmediato PUSHF PUSHFD
PUSHA
PUSHAD
;almacena un registro en el segmento de pila ;almacena un dato del segmento de datos en la pila ;almacena un dato inmediato en la pila ;almacena el registro bandera en la pila ;almacena el registro bandera extendido en ;almacena los registro AX, CX, DX, BX, SP, BP, DI Y SI en la pila ;almacena los registro EAX, ECX, EDX, EBX, ESP, EBP, EDI Y ESI en la pila
Direccionamiento de memoria de pila Procedimiento para almacenar datos en la pila (PUSH) 8-bits El nuevo dato se almacena en SS:[SP-1] y se decrementa a SP en 1. La parte alta del dato se almacena en SS:[SP-1] y la parte baja se almacena en SS:[SP-2] y posterior se decrementa a SP en 2. - s La parte alta del dato se almacena en SS:[SP-1], el siguiente byte en SS:[SP-2], el siguiente en SS:[SP-3] y la parte baja se almacena en SS: SP-4 osterior se decrementa a SP en 4.
Direccionamiento de memoria de pila POP registro POP memoria POPF
;extrae un registro del segmento de pila ;extrae un dato de la pila y lo almacena en el segmento de datos ;extrae el registro bandera de la pila
POPA
pila ;extrae los registro SI, DI, BP, SP, BX, DX, CX
POPAD
;extrae los registro ESI, EDI, EBP, ESP, EBX, EDX, ECX y EAX de la pila
Direccionamiento de memoria de pila Procedimiento para extraer datos en la pila (POP) 8-bits El dato se extrae del tope de la pila de SS:[SP] y posterior se incrementa aSPen1 16-bits La parte baja del dato se extrae de SS:[SP] y la parte alta se extrae de SS:[SP+1] y posterior se incrementa a SP en 2. 32-bits La parte baja del dato se extrae de SS:[SP], el siguiente byte de SS: SP+1 el si uiente en SS: SP+2 la arte alta se extrae de SS:[SP+3] y posterior se incrementa a SP en 4.
Instrucciones de la familia IA-32 Formato de las instrucciones Los microprocesadores Intel tienen un formato de instrucciones estándar la instrucción empleada, los operandos y el modo de direccionamiento utilizado
Instrucciones de la familia IA-32 Formato de las instrucciones
Instrucciones de la familia IA-32 Formato de las instrucciones
Instrucciones de la familia IA-32 Prefijos Este campo puede contener hasta cuatro (4) prefijos de 1 byte cada uno. , , , grupo 4 Grupo 1: son prefijos para repetir las instrucciones o bloquear recursos . F0H: F2H: F3H:
prefijo de bloqueo. aparece cuando se utilizan las instrucciones REPNE/REPNZ empleadas únicamente con instrucciones de cadena e instrucciones SIMD. aparece cuando se utilizan las instrucciones REP o cadena e instrucciones SIMD.
Instrucciones de la familia IA-32 Prefijos Grupo 2: son prefijos utilizados cuando se cambia el segmento por defecto utilizado también se usan como istas ara la toma de decisiones entre ramas. Prefijos para la sobrecarga de registros segmento. . 36H: sobrecarga para el uso de SS. 3EH: sobrecarga para el uso de DS. 26H: sobrecarga para el uso de ES. 64H: sobrecarga para el uso de FS. 65H: sobrecarga para el uso de GS Prefijos para las pistas de ramificaciones. 2EH: la ramificación no se toma. 3EH: la ramificación si se toma
Instrucciones de la familia IA-32 Prefijos Grupo 3: prefijo 66H para el cambio de tamaño de los operadores de 16 a 32 bits o viceversa. Grupo 4: prefijo 67H para el cambio de tamaño de las direcciones de 16 a .
Instrucciones de la familia IA-32 Opcode es el código de la instrucción que se representa, ocupan 1, 2 o 4 bytes y en ocas ones ex s e un c go a c ona e res s u ca o en ro e campo ModR/M. Algunas veces, en estos bytes se incluyen bits que definen la dirección del flujo de la información, el tamaño de los des lazamientos codificación de re istros condiciones de códi o o señales de extensión de signo de operandos. Entre los bits mas utilizados en el primer byte del código de operación estan:
Dirección de flujo de la información (d) ama o e os operan os w .
Instrucciones de la familia IA-32 Opcode Los bits d y w influyen sobre los operandos del byte ModR/M pro uc en o os s gu en es e ec os: d = 0, los datos van del campo Reg al campo R/M del byte ModR/M d = 1, los datos van del campo R/M al campo Reg del byte ModR/M w = 0, los operandos son de 8 bits =
Instrucciones de la familia IA-32 ModR/M y SIB Cada uno de estos dos campos ocupan 1 byte, y sirven para indicar los .
El byte ModR/M tiene tres campos internos: El
campo de “mod” El campo de “Reg/Opcode” El campo de “R/M” .
Instrucciones de la familia IA-32 ModR/M y SIB mod direccionamiento posibles a utilizar; 8 de estos modos son para registros y los 24 restantes para direccionamiento de memoria. Reg/Opcode indica un numero de registro o sus tres bits se interpretan como informacion del codigo de la operacion (instruccion) que se esta . R/M establece un numero de registro o se un modo de direccionamiento de memoria dependiendo del valor que tenga el campo “mod” de este mismo byte.
Instrucciones de la familia IA-32 ModR/M y SIB SIB se utiliza en ciertos modos de direccionamiento, en particular en aquellos que utilizan las combinaciones de base-mas-índice e índice escalado para la construcción de la dirección efectiva en modos de . Este byte también esta compuestos por tres t res campos internos: El campo de “scale” El campo “index” “ ”
Instrucciones de la familia IA-32 ModR/M y SIB scale indica el factor de escala por el cual se multiplicara el registro especificado en el campo “index”. “index”. Los valores que puede asumir son s on 00 para multiplicador 1, 01 para multiplicador de 2, 10 para multiplicador . index especifica el numero del registro índice que se utilizara. base especifica el numero del registro base que se utilizara.
Instrucciones de la familia IA-32 Desplazamiento y dato Inmediato
instrucción en cuestión posee un desplazamiento fijo y/o un dato inmediato. e aparecer un esp azam en o o es e pue e ser e s, so 32 bits y aparecerá inmediatamente después del campo ModR/M. Si la instr instruc ucci ción ón os osee ee un dato dato inme inmedi diat atoo este este a arec arecer eráá des des ues ues de campo de Desplazamiento fijo o del campo ModR/M (si no existe el campo de Desplazamiento) y puede tener una tamaño de 8 bits, 16 bits o 32 bits.
Instrucciones de la familia IA-32 Ejemplo de codificación de las instrucciones MOV BP,SP
Instrucciones de la familia IA-32 Ejemplo de codificación de las instrucciones MOV BP,SP i. Opcode Por ser Registro a Registro Opcode = 100010 d=1
100010 dw oorrrmmm disp
Por la tabla de códigos Sentido de transmisión: R/M
REG
Instrucciones de la familia IA-32 Ejemplo de codificación de las instrucciones MOV BP,SP ii. MOD-REG-R/M: MOD = 11 REG = 101
De la tabla Intel (SP) De la tabla Intel (BP)
Instrucciones de la familia IA-32 Ejemplo de codificación de las instrucciones MOV BP,SP 1
0
0
0
1
0
1
1
1
1
1
0
1
1
0
0
1
0
0
0
1
0
1
1
1
1
1
0
1
1
0
0
8
B
E
MOV BP,SP
8BECH
C
Instrucciones de la familia IA-32 Ejemplo de codificación de las instrucciones MOV DL,[DI] Opcode = 100010 d=1 w=0
MOD = 00 REG = 101 =
Por la tabla de códigos Sentido de transmisión: R M 8 bits
De la tabla Intel ([DI]) De la tabla Intel (DL) e a a a ne
REG
Instrucciones de la familia IA-32 Ejemplo de codificación de las instrucciones MOV DL,[DI] 1
0
0 8
0
1
0
1
0
0
A
0
1
0
2
MOV DL,[DI]
8A2AH
1
0
1 A
0
Instrucciones de la familia IA-32 Ejemplo de codificación de las instrucciones MOV [EBX +ECX*2+4] , 1208H i. Prefijos = 66H ii. O code = 100010
; Operandos de 32 bits Por ser Dato Inmediato a Memoria
iii. d
=1
; por el opcode
iv. w
=1
; por ser 16 o 32 bits
v. MOD
= 01
; Por ser el mas optimo
vi. REG
= 000
; Por el opcode
vii. R/M
= 100
; por la tabla Intel ([-][-])
Instrucciones de la familia IA-32 Ejemplo de codificación de las instrucciones MOV [EBX +ECX*2+4] , 1208H viii. SS
= 01
; *2
ix. Index
= 001
x. Base
= 011
; EBX
xi. Disp
= 00000100
;4
xii. Dato
= 0812
; 1208 pero ordenado empezando por BmS
ECX*2
MOV [EBX +ECX*2+4] , 1208H
66C7444B040812H
Instrucciones de la familia IA-32 Instrucciones de transferencia de datos Car a de direcciones efectivas • LEA • LDS, LSS, LES, LFS y LGS Transferencia de cadenas • LODS • STOS • • INS • OUTS
Instrucciones de la familia IA-32 Instrucciones aritméticas y lógicas
• ADD • ADC • INC
• SUB • SBB • DEC
Ne ación • logica (NOT) • aritmetica (NEG).
• MUL • IMUL
Con unción • AND
• DIV • IDIV
OR inclusivo (OR) exclusivo (XOR)
Interfaces de los microprocesadores
Interfaces de los microprocesadores Tecnologías con las que se implementan el 8086 y 8088
Características de los voltajes de entrada/salida del 8086 y 8088
Interfaces de los microprocesadores Generador de reloj 8284
Interfaces de los microprocesadores Demultiplexación del canal de datos y de direcciones de un microprocesador 8088
Interfaces de los microprocesadores Demultiplexación del canal de datos y de direcciones de un microprocesador 8086
Interfaces de los microprocesadores Demultiplexación y acoplamiento del canal de datos y de recc ones e un microprocesador 8088
Interfaces de los microprocesadores Demultiplexación y acoplamiento del canal de datos y de recc ones e un microprocesador 8086
Ciclo de Escritura/Lectura co Se colocan en las terminales de direcciones la dirección de memoria o de dispositivo E/S deseado Se accionan las señales ALE, DT/R e IO/M o M/IO co Se accionan las señales RD o WR y DEN Si el ciclo es de escritura aparecen los datos en el bus de datos del CPU Se muestra el terminal READY al final de este ciclo. Si READY esta en nivel bajo T3 se retarda y en su lugar se introduce un ciclo de espera, sino se pasa a T3 Ciclo T3 Permite que la memoria o los dispositivos E/S lean datos (ciclo de lectura) o se escriben datos en los dispositivos al terminar el ciclo (ciclo de escritura) Ciclo T4 Si el ciclo es de escritura, se terminan de leer las señales de memoria o dispositivos E/S. Se desactivan todas las señales de control y dejan de ser validos los datos y direcciones en los buses
Memorias semiconductoras Jerarquía de Memoria en un Computador
Memorias semiconductoras Jerarquía de Memoria en un Computador
La primera memoria comercial de semiconductor tenía una capacidad de 64 bits y fue fabricada por IBM en 1968
Memorias semiconductoras Clasificación de la Memoria Semiconductora
Memorias semiconductoras ROM
Memoria de sólo lectura (Read Only Memory)
programadores portátiles. No puede borrarse ya que su programación consiste en quemar fusibles de NiC para escribir ceros y unos tecno og a: - r 2 . •Uso : almacena datos y programas de sistemas pequeños de forma permanente y como decodificadores
EEPROM :
también llamada FLASH (marca reservada de Intel). es una ROM programable y borrable eléctricamente •Uso : memorias de almacenamiento portátil, pendrive, discos semiconductores
Memorias semiconductoras RAM
Memoria de lectura/escritura y de acceso aleatorio (Random Access Memory
s ca su contenido mientras posea una fuente de alimentación conectada, de lo contrario lo pierde. Es una memoria muy rápida pero consume mucha potencia. •Uso : se utiliza principalmente como memoria caché y como registros internos del CPU DRAM-RAM Dinámica : almacena sus datos en un transistor y una capacitancia parásita. Es una memoria que consume poca potencia pero es más . •Uso : se utiliza como memoria principal de los sistemas de computadora
Interfaces de Memorias
N° de direcciones = 2 ^ (N° de terminales de direcciones) Capacidad (en bits) = N° de direcciones * N° de terminales de datos
Interfaces de Memorias
211 = 2048 = 2K
Decodificación de memoria
Decodificadores por compuertas NAND Decodificadores de 3 a 8 línea Decodificadores por memorias PROM ó EPROM Decodificadores mediante PLD (Dispositivos L g cos Programa es
Decodificación de memoria Decodificadores por compuertas NAND FFFFF 2K
0 1 1 1 1 1 1 1 1 1 x x x x x x x x x x x
A19
A0
Decodificación de memoria Decodificadores por compuertas NAND FFFFF
Patrón Fijo 1
Patrón Fijo 2 Patrón Fijo 3
Decodificación de memoria Decodificadores de 3 a 8 líneas
Decodificación de memoria Decodificadores de 3 a 8 líneas
Decodificación de memoria
1 1 1 1 x x x x x x x x x x x x x x x x
A19
ABC
A0