You are on page 1of 20

Intel Core i7: Descripcin y

caractersticas del nuevo procesador


de Intel.


ARQUITECTURA
La arquitectura usada en los procesadores Core i7 es totalmente nueva. Nehalem representa el cambio de
arquitectura ms grande en la familia de procesadores de Intel desde 1995.
Dispositivo Single-die: Los cuatro ncleos, el controlador de memoria, y la Cach se encuentran dentro del
mismo encapsulado. HyperThreading reimplementado. Cada uno de los cuatro ncleos puede procesar dos
tareas simultneamente, por tanto el procesador aparece como ocho CPUs desde el sistema operativo. Esta
caracterstica estaba presente en la antigua microarquitectura Netburst introducida en los Pentium 4 HT.
Turbo Boost: La misma permite a los distintos ncleos acelerarse "inteligentemente" por s mismos cada
133 MHz por encima de su velocidad oficial, mientras que los requerimientos trmicos y elctricos de
la CPU no sobrepasen los predeterminados.
Se elimina el bus de memoria que conecta el procesador con el chipset. En las placas con el X58 ahora la
memoria y el procesador interaccionan directamente, sin buses ni controladores de por medio. El controlador
de memoria se encuentra integrado en el mismo procesador.
Uso exclusivo con memorias DDR3. Son memoria de tres canales (ancho de datos de 192 bits): cada canal
puede soportar una o dos Memorias DIMM DDR3. Las placa base compatibles con Core I7 tienen cuatro (3+1)
o seis ranuras DIMM en lugar de dos o cuatro, y las DIMMs deben ser instaladas en grupos de tres, no dos.
Subrayo lo de exclusivo, ya que no se puede utilizar DDR2 en los Intel Core i7.
Ventajas de esta nueva memoria frente a la DDR2, que implican una mejora en la frecuencia y una mayor
cantidad de memoria posible. El Intel X58 tambin brinda la posibilidad de utilizar tres canales de memoria a
razn de un mximo de dos slots por cada canal. En total, seis slots por placa, cuando antes "slo" se podan
utilizar hasta cuatro. Dual channel contina siendo compatible.

Con el nombre en clave de Nehalem conocido hasta ahora desde hace varios aos que se lleva
desarrollando, por fin llega al mercado rebautizado con el nombre comercial Intel Core i7 en sus
versiones de dos, cuatro y ocho ncleos.
Construdo a 45 nm., es el primer procesador del Intel en conseguir poner cuatro y ocho procesadores
integrados de forma nativa compartiendo una misma memoria cach y procesador de instrucciones.
Asmismo vuelve la tecnologa hyperthreading ya utlizada en el Pentium 4, por lo el sistema operativo
nos reportara 16 procesadores si tuviermos instalado el Intel Core i7 Octo. Adems el controlador de
memoria va integrado dentro del propio procesador con la nueva tecnologa QuickPath, algo a lo que
AMD ya nos tiene acostumbrados desde hace bastante tiempo con su tecnologa HyperTransport.
Tenemos cambio de socket y de chipsets, es decir, este procesador no ser compatible con ninguna de
las placas madres desarrolladas para Intel Core 2 y procesadores anteriores. Intel Core i7 necesita
placas madre nuevas y chipsets nuevo. El zcalo para el procesador ha crecido considerablemente de
tamao pasando a ser LGA1366 en comparacin con el anterior LGA775.
El Nombre Intel Core i7
Aunque Intel an no se han pronunciado acerca de la procedencia del nombre i7, se ha especulado
mucho sobre este nombre en la web. No coincido con ninguna de estas especulaciones, por lo que
publico aqu la ma. La letra i vendra de Intel, y el nmero hara referencia a la generacin del
procesador segn la siguiente tabla.

Generacin 1: Abarcara todos los procesadores de Intel hasta el 80188.
Generacin 2: El procesador Intel 286 y todas sus variantes.
Generacin 3: El procesador Intel 386 y todas sus variantes.
Generacin 4: El procesador Intel 486 y todas su variantes.
Generacin 5: El procesador Intel Pentium y todas sus variantes.
Generacin 6: El procesador Intel Core, Intel Core 2 y todas sus variantes.
Generacin 7: El procesador Intel Core i7.



Mltiples Ncleos con HyperThreading (HT) Multi-
Threading (SMT).
Una de las principales caractersticas de este procesador es el integrar mltiples ncleos de forma
nativa (single die). Es decir, ncleos que comparten la memoria cach y el juego de instrucciones.
Disponible en versiones de dos, cuatro y ocho ncleos a velocidades que van inicialmente desde los
2.66 Ghz. hasta por encima de los 4 Ghz, aunque inicialmente solo veremos las versiones de cuatro
ncleos.
Con Hyperthreading Multi-Threading, tecnologa ya utilizada con Pentium 4, cada procesador ser
capaz de ejecutar dos instrucciones por cada ciclo de reloj, por lo que en un sistema que tenga
instalado el Intel Core i7 con cuatro ncleos, el sistema operativo le reportar que tiene instalado ocho
ncleos.
El viejo HyperThreading (HT), cambia de nombre con Intel Core i7, para llamarse Simultaneous Multi-
Threading (SMT) contar con 2 vas (2-way) que permitir administrar hasta 16 hilos (threads) de
ejecucin en un procesador de ocho cores, que es lo que permite Intel Core i7 o en su defecto 8 hilos
de ejecucin en un procesador Quad core.
Resulta algo contradictorio pues los procesadores multi-ncleos deberan suplir lo que se intentaba
hacer con el HyperThreading en procesadores de un solo ncleo de la compaa aos atrs, pero la
idea de tener mas hilos de ejecucin es algo que para futuros sistemas de computo seduce bastante y
si se pueden entre comillas tener mas hilos, habr que ver como los sistemas y aplicaciones
aprovechan estos canales adicionales para optimizar la performance, pues es sabido que cuando Intel
incorporo el HT en sus P4, no todas las aplicaciones hacan uso o saban aprovecharlo, pues todo o
casi todo se programaba para un solo hilo de ejecucin. Actualmente la tendencia es aprovechar los
procesadores dual o quad core para optimizar el rendimiento, veremos si este remozado HT logra
hacer diferencia.






Memoria Cach Compartida de Alto-Nivel.
Mejoras en la memoria cach con una nueva arqitectura de tres niveles: la cach L1 con 32 Kb. de
cach para intrucciones y otros 32 Kb para cach de datos; nueva cach L2 por ncleo de latencia
muy baja con 256 Kb por ncleo para datos e instrucciones; y una nueva cach L3 compartida por
todos los ncleos y con diferentes configuraciones en Mb. segn el tipo de procesador, 8 Mb en el caso
de un Core i7 con cuatro ncelos, aunque con el tiempo se ir ampliando esta memoria cach
compartida.
Intel tendr en sus procesadores lo que ha denominado Multi-level shared cache, esto quiere decir que
seguramente tanto la memoria cache de nivel 2 (L2) como la memoria Cache de nivel 3 (L3) sern
memorias compartidas por cada uno de los ncleos del procesador, esto trae la ventaja de que se
simplifica el diseo de la arquitectura interna del procesador, pero hay que ser cuidadosos en la forma
en al que cada uno de los cores intenta acceder a la memoria para que no se produzcan conflictos en
los accesos, quizs con un switch interno que administre las peticiones. Esto por que siempre ser
mas optimo que cada core tenga su propio cache y que acceda a el exclusivamente a que tener un
solo Gran cache en que dos, cuatro o mas ncleos intenten acceder a el provocando, colas o latencias
demasiado altas en los accesos, lo que provoca un contrasentido en la razn de ser del la memoria
Cache de un procesador, la cual es ahorrarse tiempos al tener un cache externo o tratar de acceder a
la memoria principal en tareas crticas.
Intel QuickPath
El procesador Intel Core i7 lleva integrado el controlador de memoria dentro del propio procesador. La
tecnologa Intel QuickPath Interconnect, es una tecnologa de interconexin con el procesador
punto a punto desarrollada por Intel en competencia con la tecnologa HyperTransport de AMD.
Esta tecnologa incluye un controlador de memoria dentro del propio procesador. Reemplaza al Front
Side Bus (FSB) de los procesador Xeon e Itanium.
El rendimiento de esta tecnologa est reportado para ser de 4,8 a 6,4 Gigatransferencias por segundo
(GT/s) por direccin, y un enlace puede ser 5, 10 o 20 bits de largo en cada direccin. Adems el
ancho de banda provisto por un enlace largo completo asciende de 12,0 a 16,0 GB/s por direccin, o
de 24,0 a 32,0 GB/s por enlace.
Admite hasta tres canales de memoria DDR3 a 1600 Mhz por lo que empezaremos a ver placas con
seis slots de memoria en vez de cuatro.
Integrated Graphics Processor
Tambien incluir un procesador grfico integrado dentro del propio procesador tambin en respuesta
al anuncio de AMD con su tecnologa Fusion que consiste en integrar un procesador grfico dentro del
propio procesador.
En el caso de Intel Core i7, habr versiones distintas de este procesador, unas sin este controlador y
otras con este procesador integrado.
Aunque no veremos procesadores Intel Conre i7 hasta el ao 2.009, la idea es la de incluir una GPU,
procesador grfico discreto integrado, para modelos concretos, como por ejemplo porttiles y
dispositivos ultra-mviles (UMPC) ya que se conseguran consumos de energa muy bajos por lo que
se aumentara considerablemente la duracin de las bateras en sistemas mviles como los porttiles.
Nuevo Conjunto de Instrucciones SSE 4.2
Streaming SIMD Extensions (SSE) es un conjunto de instrucciones SIMD (Single Instruction, Multiple
Data nica Instruccin, Mltiples Datos) aadidas en el ao 1.999 al procesador Pentium III, como
extension a la arquitectura x86 como respuesta a la tecnologa 3DNow! que AMD tena implementada
aos atrs.
La versin 4.2 de las extensiones de vector de Intel SSE trae de regreso al futuro el x86 ISA atrs con
la adicin de nuevas instrucciones de manipulacin de cadenas. Digo Regreso al futuro porque el
soporte a nivel de cadena de procesamiento ISA es una caracterstica de las arquitecturas CISC que se
considera obsoleta actualmente en los aos post-RISC. Pero la cadena de instrucciones del nuevo SSE
4,2 estn destinadas a acelerar el procesamiento de XML, lo que las convierte en perfectas para la
Web y aplicaciones futuras basadas en XML.
SSE 4.2 tambin incluye una instruccin CRC que acelera el almacenamiento y las aplicaciones de red,
as como una instruccin POPCNT til para una variedad de tareas de patrn especificado. Adems,
para ofrecer mejopr soporte a las aplicaciones multi-hilo, Intel ha reducido la latencia de los hilos de
las primitivas de sincronizacin.
En el frente de virtualizacin, acelera las transiciones y tiene algunas mejoras sustanciales, que no
voy a detallar aqu, en su sistema de memoria virtual que reduce en gran medida el nmero de esas
transiciones requeridas por el Hypervisor.

Otras Caractersticas
Cuatro unidades de dispatch en vez de tres, lo que se traduce en un 33% ms de mejora de proceso
de datos por parte del procesador. El Intel Core i7 podr ejecutar cuatro microinstrucciones a la vez
en lugar de las tres de Intel Core 2, consiguiendo un aumento considerable en velocidad.
Adems este procesador llevar un segundo buffer de 512-entradas TLB (Translation Look-aside
Buffer). Este circuito es una tabla utilizada para convertir las direcciones fsicas y virtuales por el
circuito de memoria virtual. Aadiendo esta segunda tabla se mejora considerablemente el
rendimiento del procesador.
Un nuevo segundo buffer de prediccin de bifurcaciones o BTB (Branch Target Buffer) y aumentando
el tamao del primer y este segundo nuevo buffer permitir carga ms instrucciones y predecir con
ms exactitud cual es la siguiente instruccin a procesador mejorando an ms el rendimiento del
procesador.
Destaca tambin el Turbo, que vuelve otra vez a los procesadores como en las pocas del 386. El
modelo a 2,66 podra llegar a 2,8 con el Turbo en momentos de mucha demanda de proceso, trabajo
y carga del procesador y bajara la velocidad en momentos de reposo.
Esto facilita tambin enormemente el trabajo de overclocking, pues aumentando el multiplicador del
turbo se consiguen velocidades impresionantes con gran facilidad, claro que ello requiere disponer de
buenos sistemas de refrigeracin o disipacin del procesador, as como aumentar los voltajes del
mismo. Destacar que el modelo Extreme lleva el multiplicador desbloqueado, facilitando cualquier
overcloking, mientras el resto de procesadores llevan el multiplicador bloqueado, impidiendo aumentar
mucho el rendimiento del procesador, a no ser que se aumenten manualmente las frecuencias. Ya se
puede ver en varias tiendas que estn vendiendo ordenadores con este procesador con overcloking a
4,2 Ghz.





Desventajas
El Core i7, o por lo menos, las placas base para el Core i7 comercializadas a partir del 22
de noviembre de 2008, no son compatibles con ECC (Error checking and correction) de
memoria. Algunos expertos, como por ejemplo, Daniel Barrios,
7
recomiendan que
sistemas sin soporte ECC no se usen para la computacin cientfica, y en general
tampoco a menos que al usuario no le importen los errores en los datos crticos.
El Core i7 presenta un consumo mximo de 160W, con el consiguiente problema trmico y
exigencia de potencia en la fuente de alimentacin.(aunque tiene un TDP de 130W).
Como desventaja adicional, resulta ms difcil llevar este rendimiento a los ordenadores
porttiles, enfrentndose as a nicamente 2 o 3 horas de batera.
Modelos de core i7

Tabla de especificaciones
Especificaciones
Estado
Launched

Fecha de lanzamiento Q2'13

Nmero de procesador i7-4770S

Cantidad de ncleos 4

Cantidad de subprocesos 8

Veloc. Reloj 3.1 GHz

Frecuencia turbo mxima 3.9 GHz

Cach inteligente Intel 8 MB

DMI2 5 GT/s

Cantidad de enlaces QPI 0

Conjunto de instrucciones 64-bit

Extensiones de conjunto de instrucciones SSE 4.1/4.2, AVX 2.0

Opciones integradas disponibles

Yes

Litografa 22 nm

Escalabilidad 1S Only

Mximo de TDP 65 W

Especificacin de solucin trmica PCG 2013C

Precio de cliente recomendado
BOX : $305.00
TRAY: $303.00

Hoja de datos Link

Memory Specifications
Tamao de memoria mximo (depende del
tipo de memoria)
32 GB

Tipos de memoria DDR3-1333/1600

Cantidad de canales de memoria 2

Mximo de ancho de banda de memoria 25,6 GB/s

Compatible con memoria ECC



No


Graphics Specifications
Grficos del procesador

Intel HD Graphics 4600



Frecuencia de base de grficos 350 MHz

Frecuencia dinmica mxima de grficos 1.2 GHz

Memoria mxima de video de grficos 1.7 GB

Intel Quick Sync Video

Yes

Tecnologa Intel InTru 3D Yes

Intel Insider Yes

Intel Wireless Display

Yes

Tecnologa Intel Clear Video HD Yes

N de pantallas admitidas

3

Expansion Options
Revisin de PCI Express 3.0

Configuraciones de PCI Express

Up to 1x16, 2x8, 1x8/2x4



Cantidad mxima de lneas PCI Express 16


Package Specifications
Mxima configuracin de CPU 1

T
CASE
71.35C

Tamao de paquete 37.5mm x 37.5mm

Litografa de IMC y grficos 22nm

Zcalos compatibles FCLGA1150

Baja concentracin de opciones de
halgenos disponibles
Ver MDDS

Advanced Technologies
Versin de la tecnologa Intel Turbo
Boost


2.0

Tecnologa Intel vPro



Yes

Tecnologa Hyper-Threading Intel



Yes

Tecnologa de virtualizacin Intel (VT-x)

Yes

Tecnologa de virtualizacin Intel para E/S
dirigida (VT-d)



Yes

Intel VT-x con tablas de pginas
extendidas (EPT)



Yes

Intel Transactional Synchronization
Extensions New Instructions
Yes

Intel 64



Yes

Tecnologa Intel My WiFi Yes

Estados de inactividad Yes

Tecnologa Intel SpeedStep mejorada

Yes

Tecnologas de monitoreo trmico Yes

Tecnologa Intel Identity Protection

Yes

Programa Intel de imagen estable para
plataformas (SIPP)
Yes

Data Protection Technology
Nuevas instrucciones de AES

Yes

Secure Key Yes


Intel Platform Protection Technology
OS Guard Yes

Tecnologa Trusted Execution



Yes

Bit de desactivacin de ejecucin

Yes

Tecnologa antirrobo Yes


Programacin para core i7
El moderno conjunto de instrucciones x86 es un superconjunto de las instrucciones del 8086 y
el 8088 y una serie de extensiones a este conjunto de instrucciones que comenzaron con el
microprocesador Intel 8008. Existe casi una completa compatibilidad binaria desde los chips
Intel 8088 y 8086 con los modernos procesadores Intel Pentium 4,Intel Core Duo, Intel Core
i7, AMD Athlon 64, AMD Opteron, hasta la generacin actual de microprocesadores x86,
aunque existen algunas excepciones. Esta compatibilidad se logra gracias al uso de 2
conjuntos de instrucciones de arquitecturas, lo cual es comnmente criticado. La
compatibilidad de los programas en lenguaje ensamblador con procesadores ms antiguos
slo es posible cuando el programa no incluye instrucciones solo disponibles en los
procesadores nuevos.
Generalmente, cada nuevo procesador de la serie tiene unas cuantas instrucciones
adicionales y ms capacidades y mejor desempeo que los anteriores.
Mnemotcnicos y cdigos de operacin
Cada instruccin del x86 est representada por un mnemotcnico, que traduce directamente a
una serie de bytes la representacin de la instruccin, llamada cdigo de operacin. Por
ejemplo, la instruccin NOP se codifica como 0x90 y la instruccin HLT como 0xF4. Algunos
cdigos de operacin no tienen nombres mnemotcnicos y no estn documentados.
Diferentes procesadores en la familia del x86 pueden interpretar cdigos de operacin
indocumentados de forma distinta, haciendo que un mismo programa se comporte de forma
distinta en diferentes procesadores.

Sintaxis
El lenguaje ensamblador x86 tiene 2 vertientes diferentes en cuanto a su sintaxis de
programacin: sintaxis Intel, usada en sus inicios para la documentacin de la plataforma x86,
y sintaxis AT&T .
1
La sintaxis Intel es la dominante en la plataforma Windows, mientras que
en Unix/Linux ambas son utilizadas aunque GCC solo soportaba la sintaxis AT&T en sus
primeras versiones.
La mayora de los ensambladores x86 utilizan la sintaxis de Intel,
como MASM, TASM, NASM, FASM and YASM. GAS ha soportado ambas sintaxis desde la
versin 2.10 a travs de la directiva .intel_sintax.
1

2

3

Registros
Los procesadores x86 tienen una serie de registros disponibles para almacenar informacin.
Este conjunto de registros son conocidos como registros de propsito general o GPR (del
ingls General Purpose Register).
Adems de los GPR, existen adicionalmente:
registros de segmento (CS, DS, ES, FS, GS, SS)
otros registros (IP, Registro de estado)
registros extra (MMX, 3DNow!, SSE, etc).
El registro IP apunta a la posicin del programa en la que el procesador est ejecutando el
cdigo. EL registro no puede ser accedido por el programador directamente.
Los registros del x86 pueden ser usados mediante la instruccin MOV. Por ejemplo:
mov ax, 1234h
mov bx, ax
copia el valor 1234h en el registro ax y en la siguiente lnea copia el valor de ax en el registro
bx.




Direccionamiento segmentado
La arquitectura x86 utiliza el mtodo de segmentacin para direccionar memoria, en lugar del
mtodo lineal usado en otras arquitecturas. La segmentacin implica descomponer una
direccin lineal en dos partes un segmento y un desplazamiento. El segmento apunta al
inicio de un bloque de 64K direcciones y el desplazamiento indica la diferencia entre el lugar
apuntado y el inicio del segmento.
Este modo de direccionamiento se utiliza para aprovechar las caractersticas del procesador.
El problema estaba en que los registros internos del procesador eran de 16 bits, mientras que
el bus de direcciones era de 20. Faltaban por tanto 4 bits para poder aprovechar al mximo las
capacidades de direccionamiento del procesador. Para resolver esto, cada direccin de
memoria ser especificada como un segmento y un desplazamiento dentro de ese segmento.
Esta solucin divide la memoria en segmentos de 64 K, lo cul limit bastante los diseos de
los procesadores posteriores de la familia (Intel 80286, Intel 80386, etc.); aunque
posteriormente se idearon mtodos para resolver este problema, como la memoria extendida
(no compatible con el x86/x88). Con esto se consigue que el procesador sea capaz de
direccionar 1,048,576 direcciones de 1 byte, o lo que es lo mismo, 1Mbyte.
Se utilizan dos registros para el direccionamiento: uno para indicar el segmento, y el otro para
indicar el desplazamiento.
Para obtener la direccin de memoria (direccin efectiva): se toma el valor de registro de
segmento, se desplaza 4 bits a la izquierda (multiplicacin por 16), y se le suma el valor del
desplazamiento.
Tipos de instrucciones
En general, las caractersticas del repertorio de instrucciones x86 son:
Una codificacin compacta
Longitud variable y alineacin independiente (codificacin en formato little endian)
Instrucciones de una y dos direcciones, en las que el primer operando es tambin el
destino.
Operandos de memoria como origen y destino compatibles (normalmente utilizados
para leer/escribir elementos de la pila usando pequeos desplazamientos inmediatos)
Uso de los registros generales e implcitos; a pesar de que los siete registros
generales (contando 'ebp') pueden ser utilizados como acumuladores o para
direccionar, la mayora de ellos son tambin usados implcitamente por algunas
instrucciones especiales; los registros afectados deben conservar temporalmente la
informacin, si estn siendo utilizados durante el uso de estas instrucciones
(normalmente mediante el uso de la pila).
Produce flags condicionales implcitamente mediante el uso de la mayora de
instrucciones de la ALU
Soporta varios modos de direccionamiento
Incluye punto flotante en una pila de registros
Contiene soporte especial para instrucciones atmicas (XCHG, CMPXCHG(8B), XADD e
instrucciones enteras combinadas con el prefijo LOCK)
Instrucciones SIMD (instrucciones que aplican una misma operacin sobre un conjunto
ms o menos grande de datos)

Instrucciones de pila
La pila es un segmento que es de suma utilidad en estos microprocesadores. En l se
almacenan valores temporales como las variables locales de las funciones, o las direcciones
de retorno de stas. Una funcin no es ms que una subrutina, o un fragmento de cdigo al
que se le llama generalmente varias veces desde el programa principal, o desde una funcin
jerrquicamente superior. Cuando se llama a una funcin se hace un mero salto al punto
donde empieza ese cdigo. Sin embargo esa subrutina puede ser llamada desde distintos
puntos del programa principal, por lo que hay que almacenar en algn sitio la direccin desde
donde se hace la llamada, cada vez que esa llamada tiene lugar, para que al finalizar la
ejecucin de la funcin se retome el programa donde se dej. Esta direccin puede
almacenarse en un sitio fijo (como hacen algunos microcontroladores), pero eso tiene el
inconveniente de que si esa funcin a su vez llama a otra funcin (o a s misma!) podemos
sobreescribir la direccin de retorno anterior, y al regresar de la segunda llamada, no
podramos volver desde la primera. Adems, es deseable que la funcin guarde los valores de
todos los registros que vaya a usar en algn sitio, para que el que la llame no tenga que
preocuparse de ello (pues si sabe que los registros van a ser modificados, pero no sabe
cules, los guardar todos por si acaso). Todas estas cosas, y algunas ms, se hacen con la
pila.
El segmento de pila est indicado por SS, y el desplazamiento dentro del segmento, por SP.
Cuando arranca el programa, SP apunta al final del segmento de pila. Para almacenar
informacin en la pila se decrementa SP para que apunte un poco ms arriba y se copia a esa
posicin de memoria, SS:SP. Para sacarlo, copiamos lo que haya en SS:SP a nuestro destino,
e incrementamos el puntero.
Como con todo lo que se hace con frecuencia, hay dispuestas instrucciones propias para el
manejo de la pila. Las dos bsicas son PUSH origen (empujar) y POP destino(sacar). La
primera decrementa el puntero de pila y copia a la direccin apuntada por l (SS:SP) el
operando origen (de tamao mltiplo de 16 bits), mientras que la segunda almacena el
contenido de la pila (elemento apuntado por SS:SP) en destino y altera el puntero en
consecuencia. Si el operando es de 16 bits se modifica en 2 unidades, de 32 en 4, etc. Lo que
se incrementa/decrementa es siempre SP, claro, porque SS nos indica dnde est ubicado el
segmento de pila.
La instruccin ret size se utiliza para recuperar de la pila los valores de IP o de CS e IP
dependiendo del caso. Al salir de un procedimiento es necesario dejar la pila como estaba;
para ello podemos utilizar la instruccin pop, o bien ejecutar la
instruccin ret size donde size es el nmero de posiciones que deben descartarse de la pila.

Instrucciones de la ALU con enteros
El ensamblador x86 tiene las operaciones matemticas estndar, como add, sub, mul,
y idiv; los operadores lgicos and, or, xor, neg; desplazamientos, sal/sar, shl/shr;
rotacin con/sin acarreo, rcl/rcr, rol/ror, un complemento de instrucciones aritmticas
BCD, aaa, aad, daa y otras.
Instrucciones en coma flotante
El ensamblador x86 incluye instrucciones para pila basada en unidades en coma flotante.
Entre ellas se encuentran la suma, resta, negacin, multiplicacin, divisin, resto, races
cuadradas, truncamiento entero y truncamiento fraccionado. Las operaciones tambin incluyen
instrucciones de conversin con las que se puede cargar o almacenar un valor desde memoria
a cualquiera de los siguientes formatos: BCD, entero de 32 bits, entero de 64 bits, punto
flotante de 32 bits, punto flotante de 64 bits u 80 bits. El x86 tambin incluye funciones como
seno, coseno, tangente, arco tangente, exponente con base 2 y logaritmos de base 2, 10 o e.
La conversin de instrucciones al formato del registro de pila es normalmente F (OP) st,
st(*) o F (OP) st(*), st, donde st es equivalente a st(0), y st(*) es uno de los 8 registros
de pila (st(0), st(1), ..., st(7)). Como con los enteros, el primer operando acta como primera
fuente y como operando destino. La suma, resta, multiplicacin, divisin, almacenamiento y
comparacin de instrucciones incluye modos de instruccin que se encargan de desapilar una
vez completada la operacin.
En el caso de que no exista ningn operando, supone destino = ST(1), fuente = ST y se hace
adems pop sobre la pila, de modo que el resultado se sita en lo alto de la pila. Por ejemplo,
FADD calcula ST(1)=ST(1)+ST y hace pop sobre la pila (incrementando en uno el puntero de
pila), con lo que el nuevo elemento en lo alto de la pila contiene el resultado.
Instrucciones SIMD
Los procesadores x86 modernos tienen instrucciones SIMD, que permiten realizar la misma
operacin en paralelo sobre diversos valores codificados en un registro SIMD. Varias
tecnologas de instrucciones soportan diferentes operaciones sobre distintos repertorios de
registros, pero todos (desde MMX hasta SSE4,2) incluyen clculo general sobre aritmtica
entera o en coma flotante (suma, resta, multiplicacin, desplazamiento, minimizacin,
maximizacin, comparacin, divisin o raz cuadrada). Por ejemplo, PADDW MM0, MM1
aplica 4 sumas paralelas de enteros de 16 bits (debido a la W que indica que son palabras) de
los valores de mm0 hasta mm1, y los almacena en mm0. SSE tambin incluye el modo en
coma flotante en el que el primer valor de los registros est modificado (expandido en el
SSE2).

Instrucciones de manipulacin de datos
El procesador x86 tambin incluye modos de direccionamiento complejo para direccionar
memoria con un desplazamiento inmediato, un registro, un registro con desplazamiento, un
registro escalado con o sin desplazamiento y un registro con desplazamiento opcional y otro
registro escalado. Entonces por ejemplo, uno puede codificar mov eax, [Table + ebx +
esi*4] como una instruccin simple que carga 32 bits de datos desde la direccin localizada
en el desplazamiento (Table + ebx + esi * 4) desde el segmento DS, y almacenarla en el
registro eax. En general, los procesadores x86 pueden cargar y usar memoria ajustada al
tamao del cualquier registro sobre el que est operando.
Los repertorios de instrucciones x86 incluyen instrucciones de carga, almacenamiento y
movimiento de cadenas (LODS, STOS and MOVS) que representan cada operacin con un
tamao especificado (B para bytes, W para palabras de 16-bits, D para dobles palabras de 32
bits) e incrementan/decrementan el registro de direccin implcito (SI para LODS, DI para
STOS y ambos para MOVS). Para la carga y almacenamiento, el registro destino/fuente
implcito es el AL, AX o EAX, dependiendo del tamao. El segmento usado implcitamente es
DS para LODS, ES para STOS y ambos para MOVS.
La pila est implementada con un puntero que disminuye (push) y aumenta (pop)
implcitamente. En el modo de 16 bits, este puntero se corresponde a la direccin SS:[SP], en
32- bits sera SS:[ESP] y en 64-bits [RSP]. El puntero de pila se encarga de apuntar al ltimo
valor almacenado, asumiendo que su tamao coincide con el modo del procesador (12, 32 o
64 bits) para que coincida con el ancho por defecto de las instrucciones
PUSH/POP/CALL/RET. Otras instrucciones para manipular la pila son PUSHF y POPF, que se
utilizan para almacenar y recuperar el registro de FLAGS, almacenndolo o retirndolo de la
parte alta de la pila.
Flujo del programa
El ensamblador x86 tiene una operacin de salto incondicional, jmp, que admite una direccin
inmediata, un registro o una direccin indirecta mediante registro como parmetro.
Tambin se permiten los saltos condicionales, como je (saltar cuando hay
igualdad), jne (saltar en desigualdad), jg (saltar si 'mayor que', con signo), jl (saltar si
'menor que', con signo), ja (saltar si 'superior/mayor que', sin signo), jb (saltar si
'inferior/menor que', sin signo). Estas operaciones condicionales se basan en el estado
especfico de los bits del registro de FLAGS. La mayora de las operaciones aritmticas se
encargan de actualizar estos flags segn su resultado. Las instrucciones de
comparacin cmp y testmodifican el estado del registro de flags sin modificar los operandos.
Las comparaciones en coma flotante se realizan mediante las instrucciones FCOM o FICOM.
Cada operacin de salto tiene tres formas diferentes, dependiendo del tamao del operando.
Un salto sort usa un operando con signo de 8bits, que se corresponde con el desplazamiento
relativo a la instruccin actual. El salto near es similar al corto pero usa un operando de 16 o
32 bits con signo. Un salto far utiliza el segmento entero base:desplazamiento como una
direccin total. Tambin hay forma indirecta e indexada para cada uno de ellos.
Adems de las operaciones de salto, existen las instrucciones call y ret para llamar y
regresar de una subrutina. Antes de transferir el control a la subrutina, call apila el
desplazamiento de la instruccin siguiente a la llamada en la pila; ret desapila este valor de la
pila, y transfiere el control a la direccin que indicaba el valor desapilado. En el caso de que se
trate de una llamada a una funcin lejana, far call, la base tambin se apila siguiendo al
desplazamiento.
Existen algunas instrucciones similares, como la interrupcin int. sta activa el procedimiento
de interrupcin especificado por el operando y guarda el valor del registro de flags en la pila .
La activacin de la interrupcin se realiza mediante una llamada a un procedimiento lejano
(far call), pero en lugar de una direccin, utiliza ese vector de interrupcin. La direccin de
este vector se calcula multiplicando por 4 el operando, que es un valor entre 0 y 255.
Normalmente, el manejador de interrupciones guarda todos los registros que el procesador
est usando, a menos que estn siendo usados para almacenar el resultado de una
operacin. Por otro lado, para volver al programa desde una interrupcin se utiliza iret, que
se encarga de restablecer el valor de los flags. Las interrupciones ligeras descritas
anteriormente son usadas por algunos sistemas operativos para las llamadas del sistema, y
pueden tambin ser usadas para depurar los manejadores de interrupciones fuertes. stas
son provocadas por eventos hardware externos, y deben mantener los valores de todos los
registros ya que el estado del programa en ejecucin se desconoce. En el Modo Protegido, las
interrupciones pueden ser activadas por el Sistema Operativo para realizar un cambio de
tarea, almacenando automticamente todos los registros de la tarea en ejecucin.

You might also like