Arquitectura de computadoras 1. Notas de clase con Ing. Otto

Índice

1 CPU’s de Intel

1.1 El CPU básico CISC/Von Neumann

De la arquitectura Von Neumann se basa CISC

CISC fue un efecto colateral de la arquitectura de Von Neumann.

CISC es una corriente tecnológica, una especie de convención, que
aglutina una serie de CPU’s internamente ligada a Von Neumann.

1.1.1 Arquitectura Von Neumann

Tres características principales:

  1. Todo CPU desarrollado bajo una arquitecturan Von Neumann no tiene
    capacidad de manejo paralelo de un área de memoria para comando y
    para memoria para dato.
  2. El diseño interno de los buses en un CPU de este tipo no permite
    procesamiento paralelo en tiempo real.
  3. Los CPU’s bajo esta arquitectura, cuando el ALU computa y genera
    resultado, entonces ese resultado solo podía ir en un solo registro
    llamado acumulado.

1.1.2 Arquitectura CISC

características bajo línea tecnológica CISC:

  1. Posee un lote de registros internos limitado
  2. Posee instrucciones a bajo nivel con sintáxis igual o muy parecida
    a la existente en lenguajes de alto nivel. En otras palabras tiene
    un set de instrucciones complejo. Complejo no se refiere a que sea
    dificil de utilizar sino mas bien a que que compilador hace un
    salto semantico corto de código de alto nivel a bajo.
  3. Un bus de comunicación interno no óptimo (que imposibilita el
    procesamiento paralelo entre bloques digitales).

En la actualidad no existe un procesamiento estrictamente en paralelo,
solo procesamiento paralelo virtual más sin embargo no real.

1.1.3 Arquitectura de un CPU básico (8 bits bus de dato) Von Neumann/C.I.S.C.

								       A1 A2 .. Ak  **
								    	    ^
	+-------------------------------------------------------------------+----------------------------------+
	|          	       	               	       	     	       	    |  	      	      	               |
	|          	       +---------------------------+ 	            |         	      	               |   |
	|          	       |\                          | 	     +------+------+         +------------+    |   | |
	|                      | -\   DECODIFICACIÓN       | 	     | Latch/Driver|       * | Registro   |    +---+ | |
     	|                      |   -\                      |         +-------------+         | de acceso  |    |   | |
     	|                      |     \   Es una memoria    | 	           ^                 | por soft-  |    |   |
     RD-| 	       	       |      -\  ROM, con el set  |<--------------+---------------->| ware       |    |
        |-\ 	       	       |        \  de instrucciones| 	           v                 |            |    |
  WR---\|  --+--------+        |         -\  de bajo nivel | 	      +----------+           |            |    |
        +--- |  L/D   |<-------|           -\              | 	      |  ALU (1) |           |     (4)    |    |
MREQ ---+--- +--------+        |             \             | 	      | Corazón  |<------+   |            |    +------o Vcc
       	|   ---/    	       |              -\           | 	      | del CPU  |       |   |            |    |
   IO RE|--/         	       |                -\         | 	      +----------+       |   |            |    |
	|                      |    (3)           \        | 	                         |   +------------+    |
	|                      |                   -\      | 	       	       	      	 |    	               |
	|                      |                     \     | 	       	       	      	 |    	               |
	|                      |   CONTROL            -\   | 	       	       	      	 |    	               |
	|                      |                        -\ | 	     +--------------+ 	 |    	               |<------
	|                      |                          \| 	   * | Registros (2)|----+    	               |     Reloj
	|                      +---------------------------+         | temporales   | 	 |    	               |
	|                                                            +--------------+    |                     |
	|                                                                                v                     |
	|								  	 +-------------+       	       |
	|                                                                        | Latch/Driver|               |
	|                                                                        +-------------+               |
	|                                                                               |                      |
	+-------------------------------------------------------------------------------+----------------------+
	                                                                                |
     * Tres buses genericos de entrada y salida					      	v
    ** Bus de direciones de k lineas                                                D0...Dm-1

Observaciones:

  • Transferencia paralela
  • Diferencia en la dinámica de uso
  • Misma naturaleza electrónica
  • (1) hecho con logica combinacional

Conceptos:

Registro
almacenamiento de la tasa de transferencia más alta
conocida hasta el momento
Latch/Driver
es un memorizador que soporta mas tensión y la
información se guarda haste que se sobreescriba o
se corte la fuente de alimentación.

¿Por qué los libros dicen que un CPU es 100% secuencial?. Porque no se
refiere a la electronica digital del mismo si no mas bien a su
filosifía de trabajo.

1.1.4 ¿Qué es un bus?

Es un conjunto de conexiones comunes que llevan el mismo tipo de
información.

1.1.5 Bus de datos

Conjunto de líneas físicas que lleva información digital que será o
fue (bidimensional) computada en el CPU. Al número de líneas que
componen un bus se llama “anchura de bus” en el caso de bus de datos,
la anchura del mismo le provee al CPU donde esta insertó y al tipo de
computadora en el que se trabaja de una característica calidad
absoluta.

Cuando se se habla de ancho de bus se refiere al número de líneas
del bus de datos, dado que es el más importante porque de él depende
el número de bits con que trabaja el ALU y el número de bits de los
registros internos del CPU.

Cuando tengo un bus de dato ancho, eso lo hace un buen CPU sin ningún
relativismo.

1.1.6 Bus de dirección

Conjunto de líneas físicas que llevan información digital por medio de
la cual el CPU identifica una celda de memoria o puerto con el cual,
necesita operar (lectura/escritura). La anchura del bus de dirección
de índole matemático, con la cantidad de memoria máxima que ésta puede
manejar:

Anchura de k líneas
2^k = número máximo de celdas a conectar

Por ejemplo:

                     A1  A0
                      |  |
                      |  |       k=2
                      |  |       m=8
                      v  v
                +--------------------------+
    D0 -------->|             |            |
    .           |             |            |
    .           |     C0      |     C1     |
    .           |             |            |
                |             |            |
                |-------------+------------|
                |             |            |
                |             |            |
                |     C2      |     C3     |
                |             |            |
    D7 -------->|             |            |
                +--------------------------+

Sincronización se refiere a cual será el orden de alguna operación:
primero, segundo, tercero.

Temporización se refiere en que tiempo se realiza las acciones: 10ns,
5s.

Sincronización y temporización de las líneas digitales correlacionadas
en esta… El bus de control no genera algun tipo de cualificación ni
cuantificación ni absoluta ni relativa.

1.1.7 Ciclo de instrucción de un CPU (extensivo en todo tipo de CPU, excepto CPU’s F.P.G.A.)

Ciclo de instrucción: lapso de tiempo que le toma a un CPU en
desarrollar una orden o comando de inicio a fin.

Directrices del CPU

  • Servirnos a nosotros mismos
  • Incansable
  • Nada inconcluso (no puede pasar)

Recordado que es un ciclo de reloj. Un ciclo de reloj o período es la
unidad de medidad utilizada por los fabricantes y es relativo no
absoluto.

     |                                                
     |---+   +---+   +---+                            
     |   |   |   |   |   |                            
-----+---+---+---+---+---+------- t(s)
   0 |       |<----->|                                
                 T=período de reloj (s)               
                 T=1/f

El ciclo de instrucción o de trabajo se divide en:

Ciclo Busqueda
Período de tiempo en el cual el CPU va a mermoria a
buscar código de operacion de orden o comando en
curso. Lo toma y se lo da a la unidad de
decodificación.
Ciclo de decodificación
Lapso de tiempo que le toma a un CPU, en
interpretar el código de opreación recibido y saber que tiene que hacer.
Ciclo de ejecución
Lapso de tiempo en el cual el CPU desarrolla
terminalmente el pedido.

Ejemplo de un diagrama de tiempo, que muestra coutas de los ciclos de
un CPU

       	       	 |     	     T					     
     pasado    	 |     	 |<----->|				     					 
   - infinito    |	     					     				 
   <----        1|---+	 +---+   +---+   +---+   +---+   +---+   +---+   +---+-  +---+	 +---+   +---+	   futuro  
  	         |   |	 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |	 |   |   |   |   + infinito
       Reloj----0+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+----> t
       	         |	 .   		 .		 .	     		 .
 		 |	 .   		 .		 .	     		 .
                1|       +---------------.---------------.-----------------------+
  Ciclo de       |       |    		 .               . 	     		 |
  trabajo ------0+-------+---------------.---------------.-----------------------|--------------> t
                 |     	 .		 .		 .	     		 .
                 |	 .		 .		 .	     		 .		   Ciclo de ins-
                 |       |<-----2T------>|<-----2T------>|<---------3T---------->|		   trucción de:
                1|   	 |---------------+---------------+-----------------------+---------------+  A <-- A+B  
Ciclos que com-  |       |   Búsqueda    |Decodificación |      Ejecución        |               |	       
ponen el ciclo -0+-------+---------------+---------------+-----------------------+---------------+-----------> t 
de trabajo       |						     
                 |						     
   			   T=Período de reloj (segundos)	     "períodos de reloj son enteros" porque
			   T=1/f				      viene del cambio de estados del flip-flop:
			   f=frecuencia del reloj en hertz	      solo son de dos tipos por nivel y por flanco

1.1.8 Tabla de desempeño de un CPU básico CISC/Von Neumann (8 bits bus dato)

Orden a analizar: A <-- A+B

Donde: A ó B son registros en el set de registros de aceso por
software

ciclo Bloques holgazanes Bloques trabajando
  * ALU * Latch/Driver
  * Decodificación * Registros de acceso por software
Busqueda   * Registros temporales
    * Control
Decodificación * ALU * Control
(interpreta) * Latch/Driver * Registros temporales
  * Resigros de acceso por software * Decodificación
  * Decodificación * ALU
  * Latch/Driver * Registros temporales
Ejecución   * Registros de acceso por software
    * Control

1.2 Historia de los CPU Intel

1.2.1 La era mecánica

  • El ábaco la primera calculadora mecánica. Lo inventaros los
    babilonios 500 a.C. para contar sus vastos almacenes de granos.
  • Blaise Pascal mejoro el ábaco (1642), construyendo una calculadora
    con engranajes y ruedas.
  • Máquina analítica (1823) fue una maquina computacional mecánica
    contruído por Charles Babbage, ayudado por Augusta Ada Byron. Fue
    una calculadora programable, para producir tablas de navegación para
    la Armada Real Británica. Era operada por vapor, almacenaba 1000
    números decimales de veinte dígitos y un programa varibale que podía
    modificar la funcion de la máquina a travez de tarjetas
    perforadas. Se obtuvo la idea de tarjetas perforadas gracias al
    telar de Jacquard en 1801. Babbage, no completo su trabajo debido a
    que los maquinistas de la época no podían crear 50,000 piezas con
    precisión suficiente.

1.2.2 La era eléctrica

  • Con la llegada de la era eléctrica (1800) surgieron una multitud
    de máquinas de sumar controladas por motores, todas basadas en la
    calculadora mecánica desarrollada por Blaise Pascal. Estas
    calculadoras no fueron comunes en oficinas sino hasta principios de
    la década de 1970, cuando apareció la pequeña calculadora
    electrónica portátil, introducida por primera vez por Bomar
    Corporation y llamada el Cerebro Bomar.
  • En 1889 Herman Hollerith desarrolló la tarjeta perforada para
    almacenar datos. También desarrolló un equipo mecánico (controlado
    por uno de los nuevos motores eléctricos) que contaba, ordenaba y
    cotejaba información almacenada en tarejtas perforadas. Hollerith
    utilizó su sistema para tabular información para el censo de 1890
    den EE.UU. En 1896 Hollerith formó la empresa Tabulating Machine
    Comany, la cual desarrolló una línea de equipos que utiilzaba
    tarjetas perforadas para la tabulación. Después de varias fusiones
    esta empresa se convirtió en la International Business Machines
    Corporation, IBM, Inc, y a las tarjetas perforadas utilizadas en los
    sistemas computacionales se les llamó tarjetas de Hollerith.
  • Konrad Zuse invento la primera computadora moderna, luego de muchos
    años de equipos mecánicos controlados por motores eléctricos. 1936
    Zuse contruyó una versión mecánica de su sistema y posteriormente en
    1939 construyó su primer sistema computacional electromecánico,
    llamado Z2. Su computadora calculador Z3, probablemente se utilizó
    en el diseño de aeronaves y misiles durante la Segunda Gerra Mundial
    para el ejercito alemán. Z3 era un equipo de lógica de relevadores
    que tenía un reloj de 5.33 Hz.
  • Colossus de Alan Turing, la primera computadora electrónica
    (utilizaba tubos al vacío),se puso en operación en 1934 para
    quebrantar los códigos militares secretos de los alemanes generados
    por la máquina mecánica Enigma. Colossus no era programable; era
    una computadora de propósito especial.
  • El primer sistema computacional electrónico programable de propósito
    general se desarrolló en 1946. Esta computadora moderna se llamó
    ENIAC (Calculadora e Ingegrador Numérica Electrónica). La ENIAC era
    una máquina enorme que contenía más de 17,000 tubos al vacío y más
    de 500 millas de cables. Esta muina pesaba más de 30 toneladas y
    realizaba sólo aproximadamente 100,000 operaciones por segundo. La
    ENIAC llevó al mundo a la era de las computadoras electrónicas. Se
    programaba cambiando el cableado de sus circuitos. Esto llevaba
    mucho tiempo. Otro problema era la vida de los componenetes de tubos
    al vacío, que requerían de un matenimiento frecuente.
  • Los descubrimientos posteriores fueron el desarrollo del transistor,
    en diciembre de 1947. Después le siguió, en 1958, la invención del
    circuito integrado. El circuito integrado condujo al desarrollo de
    los circuitos integrados digitales (RTL, o lógica de resistencia a
    transistor) en la década de 1960 y al primer microprocesador en
    Intel Corporation en 1971 con el desarrollo del microprcedor 4004.

1.2.3 Avances en la programación

La ENIAC se programaba volviendo a cablear sus circuitos. Esto era muy
laborioso para una aplicación práctica, en la primera etaba de la
evolución de los sistemas computacionales comenzaron a aparecer los
lenguajes computacionales para controlar la computadora. El primer
lenguaje de ese tipo, el lenguaje máquina, estaba compuesto de unos
y ceros y utilizaba códigos binarios almacenados en el sitema de
memoria computacional como grupos de instrucciones, a lo cual se le
llamaba programa. El matemático John Von Neumann fue el primero que
desarrolló un sistema que aceptaba instrucciones y las almacenaba en
memoria.

Una vez que estuvieron disponibles los sistemas computacionales tales
como el UNIVAC, a principos de la década de 1950, se utilizó el
lenguaje ensamblador para simplificar la tarea de introducir código
binario en una computadora como sus instrucciones. El lenguaje
ensamblador permite al programador utilizar código nemónicos como ADD
para la suma, en lugar de un número binario tal como 01000111.

Aunque el lenguaje ensamblador era una ayuda para la programación, no
fue sino hasta 1957 cuando Grace Hopper desarrolló el primer lenguaje
de programación de alto nivel llamado FLOW-MATIC, las computadoras
se hicieron más fáciles de programar. El mismo año, IBM desarrolló del
lenguaje FORTRAN (FORmula TRANslator) para sus sistemas
computacionales.

En 1958, un año despues, otro lenguaje similar fuen introducido. Fue
ALGOL (ALGOrithmic Language).

El primer lenguaje de programación verdaderamente exitoso y de amplio
uso para las aplicaciones comericales fue COBOL (COmputer Business
Oriented Language). Otro lenguaje de negocios que una vez fue popular
fue RPG (Report Program Generator).

Desde los primeros días de programación han parecido varios lenguajes
adicionales. Algunos de los más comunes son BASIC, Java, C#, C/C++,
PASCAL y ADA. Los lenguajes BASIC y PASCAL se diseñaron como lenguajes
de enseñanza, pero han escapado del salón de clases y se utilizan en
muchos sitemas computacionales.

1.2.4 La era del microprocesador

  • 4004
    • direccionaba 4096 posiciones de memoria de cuatro bits
    • 45 instrucciones
    • Velocidad de instrucción 50 KIPs (kilo instrucciones por segundo)
  • 4040
    • Version actualizada del 4004
    • Unica diferencia era que operaba a mayor velocidad
    • Carecia de mejoras en anchura de palabras y tamaño de memoria
  • 8008
    • Llego a finales de 1971 cuando Intel vio que un microp era
      comercialemente viable.
    • Fue una extención de 8 bits del microp 4004
    • direccionaba un tamaño de memoria expandida (16 Kbytes)
    • 48 instrucciones
    • 20 us (50,000 instrucciones por segundo)
  • 8080
    • Por limitaciones en velociad y memoria del 8008, Intel lo saco en
      1973
    • El primero de los microp modernos de 8 bits
    • 2 us (500,000 instrucciones por segundo)
    • Compatible con tecnología TTL
    • Direccionaba cuatro veces más memoria (64 Kbytes) que el 8008 (16
      Kbytes)
  • 8085
    • Version actualizada del 8080, Intel lo presento en 1977
    • Este fue el último microp de 8 bits de propósito general
      desarrollado por Intel
    • Ejecuta softwarea una velocidad aún mayor. Requeria solamente 1.3
      us(769,230 instrucciones por segundo)
    • 246 instrucciones

1.2.5 El microprocesador moderno

  • 8086/8088
    • 8086 salió en 1978
    • 8088 salió en 1979
    • Ámbos de 16 bits
    • 400 ns (2.5 MIPs, o 2.5 millones de instrucciones por segundo)
    • direccionaban 1 Mbyte de memoria, 16 veces más que el 8085
    • Nueva característica: caché o cola de instruciones de 4 o 6 bytes
      que obtenían previamente unas cuantas instrucciones antes de
      ejecutarlas. La cola agilizó la operación de muchas secuencias de
      instrucciones y se consolidó como base para las cachés de
      instruciones mucho mayores que se encuentran en los
      microprocesadores modernos.
    • Mejora al conjunto de instrucciones: instrucciones para
      multiplicar y dividir (antes no existía). Número de instrucciones
      aumentó a más de 20,000 variaciones.
    • mejoró principalmente debido a la necesidad de sitemas de memoria
      más extensas. La popularidad de la familia Intel se aseguró en
      1981, cuando IBM Corporation decidió utilizar el microprocesador
      8088 en su computadora personal. 1 Mbyte de memoria sirvio para
      hojas de cálculo, procesadores de palabras, correctores
      ortográficos pero se quedó corto para bases de datos
      extensas. Esto llevó a Intel a presentar el 80286
  • 80286
    • arquitectura de 16 bits
    • salió en 1983
    • casi idéntico a los 8086/8088 con la excepción de que direccionaba
      un sistema de memoria de 16 Mbytes en vez de 1 Mbyte
    • Instrucciones adicionales que administraba los 15 Mbytes de
      memoria adicional
    • Ejecutaba instrucciones a 250 ns (4.0 MIPs). Se logro aumentando
      la velocidad del reloj
    • Cambios en cuanto a la ejecución interna de las instrucciones, lo
      cual aumento de ocho veces más la velocidad para muchas
      instrucciones, en comparación con las instrucciones del 8086/8088
  • 80386
    • Salió en 1986
    • Fue el primer microprocesador de 32 bits que contenía un bus de
      datos de 32 bits y una dirección de memoria de 32 bits. Mediante
      estos buses direccionaba hasta 4 Bbytes de memoria.
    • Las aplicaciones que requieren de mayores velocidades de
      microprocesador y sistemas de memoria más grandes incluyen
      sistemas de software que utilizan una GUI. Los paquetes basados en
      GUI requieren de microprocesadores de alta velocidad y de
      adaptadores de video acelerado para una rápida y eficiente manipualción.
    • Fue necesario debido al tamaño de su bus de datos, el cual
      transfiere número reales que requieren una memoria de 32 bits de
      ancho. Esto aumenta considerablemente la velocidad de cualquer
      programa que manipule números reales. La mayoría de lenguajes de
      alto nivel, hojas de cálculo y sistemas de administración de bases
      de datos utilizan números reales para el almacenamiento de los datos.
    • velocidades de reloj más altas
    • incluía una unidad de administración de memoria que permitía al
      sistema operativo asignar y administrar los recursos memoria. Los
      primeros microprocesadores dejaba la administración de memoria
      completamente al software.
    • Su conjunto de instrucciones era compatible hacia arriba con los
      primeros microprocesadores 8086, 8088 y 80286.
  • 80486
    • Salió en 1989, parecido al 80386
    • Coprocesador numérico similar al 80387
    • caché de 8 Kbytes
    • Su estructura interna se había modificado en base al 80386, de tal
      foma que la mitad de sus instrucciones se ejecutaran en un ciclo
      de reloj en vez de dos.
    • Casi la mitad de las instruccione se ejecutaban en 25ns (50
      MIPs). La mejora promedio de volocidad par auna mezcla común de
      instrucciones era de un 50% más que un 80386 que funcionaba a la
      misma velocidad de reloj.
    • Versiones posteriores del 80486 ejecutaban instrucciones a
      velocidades aún mayores (80486DX2, 80486DX4, OverDrive)
  • Pentium
    • Se introdujo en 1993
    • Las dos versiones introductoria operaban con una frencuencia de
      reloj de 60 Mhz y 66Mhz, y con una velocidad de 110 MIPs
    • Las versiones con una frecuencia más alta de 100 Mhz que operaba a
      150 MIPs
    • También estaba disponible el Pentium con doble velocidad de reloj,
      operaba a 120 Mhz y 133 Mhz, así como versiones con mayor velocidad
    • Otra diferencia era el tamaño del caché se había aumentado a 16
      Kbytes en comparación con los 8 Kbytes que tenía la versión básica
      del 80486
    • Caché de instrucciones de 8 Kbytes
    • Caché de datos de 8 Kbytes
    • El sistema de memoria tenía hasta 4 Gbytes
    • Anchura del bus de datos se incremetnó de los 32 bits que tenían
      los microporcesadores 80386 80486, a 64 bits.
    • Velocidad de bus de datos era de 60 Mhz o 66 Mhz, dependiendo de
      la versión. Este bus más ancho aceptaba números de punto flotantde
      de doble precisión, utilizada para la visualización de gráficos
      modernos de alta velocidad, generados por vectores.
    • Las versiones recientes también incluían instrucciones
      adicionales, llamadas extensiones multimedia, o instrucciones
      MMX. Aunque parece que pocas compañías de software han utilizado
      dicha extensiónes
    • La característica más ingeniosa del Pentium sean sus procesadores
      de enteros duales. El Pentium ejecuta dos instrucciones (que no
      dependan una de la otra) simultáneamente ya que tiene dos
      procesadores de enteros internos independientes, a lo cual se le
      llama tecnología superescalar
    • Mejora cinco veces mas del coprocesador numérico de punto flotante
  • Pentium Pro
    • Contiene 21 millones de transistores
    • Tres unidades de enteros y una unidad de punto flotante para
      aumentar el rendimiento de la mayoría del software
    • Frecuencia de reloj básica era de 150 Mhz y de 166 Mhz en el
      ofrecimiento inicial que se hizo a finales de 1995.
    • Caché interna de nivel uno (L1) de 16 K (8 K para datos y 8 K para
      instrucciones)
    • Una caché de nivel dos (L2) de 256 K.
    • Utiliza tres motores de ejecución, por lo que puede ejecutar hasta
      tres instrucciones a la vez en forma simultánea, siempre y cuando
      no estén en conflicto
    • Optimizado para ejecutar código de 32 bits con eficiencia
    • Podía direccionar un sistema de memoria de 4 GBytes o de 64
      GBytes
    • Bus de direcciones de 36 bits si está configurado para un sistema
      de memoria de 64 GBytes
    • Utiliza la arquitectura P-6 de Intel
  • Pentium II y Xeon
    • Pentium II, salió en 1997, representa una nueva dirección para Intel
    • En vez de ser un circuito integrado como en las versiones
      anteriores del microprocesador, el Pentium II está colocado en un
      pequeño tablero de cirucitos.
    • La chaché L2 y el microprocesador están en un tablero de cirucitos
      llamado módulo de Pentium II.
    • A mediados de 1998 Intel anunció una nueva versión del Pentium II
      de nombre Xeon, que estaba diseñado específicamente para
      aplicaciones de estaciones de trabajo de alta tecnología y
      aplicaciones de servidor.
    • La principal diferencia entre el Pentium II y el Pentium II Xeon
      es que el Xeon está disponible con un tamaño de caché L1 de 32
      KBytes y un tamaño de caché L2 de 512 K, 1 M o 2 M bytes.
  • Pentium III
    • Utiliza un núcleo más rápido que el Pentium II pero sigue siendo
      un procesador Pentium Pro
    • Disponible en versión Slot 1 y una versión Socket 370 conocida
      como flip-chip
    • Disponibe en frecuencias de reloj de hasta 1 Ghz.
    • Velocidad de bus de memoria de 100 Mhz
    • Velociad de bus frontal (la conexión del microprocesador al
      controlador de memoria, controlador PCI y controlador AGP) es de
      100 Mhz o de 133 Mhz.
    • Utiliza la arquitectura P-6 de Intel
  • Pentium 4
    • Salió a finales del 2000
    • Disponibe en velocidades de hasta 3.2 Ghz y más
    • El juego de chips que soporta el Pentium 4 utiliza las tecnologías
      RAMBUS o memoria DDR en vez de la tecnología SDRAM, que una vez
      fue el estándar.
    • Estas velocidades superiores del microprocesador son posibles
      graciqas a una mejora en el tamaño de la integración nterna, que
      actualmente es una tecnología de 0.095 micrones.
    • Utiliza la arquitectura P-6 de Intel
    • Las interconexiones pasaron de aluminio a cobre dentro del
      microprocesador. Comoo el cobre es un mejor cnductor, debe peritir
      frecuencias de reloj mayores para el microprcedor para el futuro.

1.3 El CPU 80286

II) Características:

Búsqueda
exterior
Instrucción
interpreta el software de bajo nivel
Ejecución
e
Unidad de instrucción
Es la novedad más importante, del cual
ningún microprocesador anterior tendría. Interpreta el modelo de
memoria del programador con el físico. Permitió el modo de
administración de memoria
. Los cuales son el Modos por
segmentación o real y Modo protegido. El modo protegido a su vez
habilitó el multiusuario y multiventana.

  1. Modelo de memoria del programador:
  2. Modelo de memoria físico:

III) Se amplio el bus de datos y dirección

IV) La adición en la unidades de bus e instrucción de dos reservorios
matemáticos llamados colas (tatarabuelos de los hoy llamados caché)

  • Unidad de búsqueda -> Cola de prebúsqueda: guarda una copia de la
    memoria de comando.
  • Unidad de instrucción -> Cola de decodificación gestióna la que
    estab en la cola de búsqueda. En vez de una copia realiza la digestión.

El propósito de las colas fue brindar a las demás unidades autonomía
en la ejecución de eventos reales o virtuales.

Formas de aumentar la velocidad e un CPU:

  • aumentar la velocidad del reloj
  • ampliar el bus de datos
  • reingenieria, que fue lo que hizo Intel con este CPU.

Repaso de conceptos:

  • L2 surgio por sobrecalentamiento del CPU.
  • Tecnología de fabricación TTL: es rápida pero calienta mucho.
  • El trapecio, en un diagrama de bloques, hace referencia de que ahí
    se realizan operaciones ariteméticas.

1.4 Línea de desempeño de varias instrucciones para un CPU x86 (286)

Instrucciones a realizar

  1. A <– A+B
  2. C <– A $$\oplus$$ B
  3. M[IP] <– C (proceso externo)

dónde:

  • A, B, C, D, IP son registros del CPU de acceso por software,
    ubicadas en la unidad de ejecución
  • $$+$$ & $$\oplus$$ son operadores aritméticos/lógicos a
    desarrollarse en el ALU
  • M[IP]; significa acceso a RAM externa a “M” a través de una variable
    index “IP”
       	      +-------+-------+-------+-------+-------+----------	 			       
Unidad de     | Busca | Busca | Busca | Busca | Busca |Escribir a RAM	 
  Bus	      |  (1)  |  (2)  |  (3)  |  (4)  |  (5)  |lo del JAX IP 	 
	      +-------+-------+-------+-------+-------+-----------  	 
		     						    	 
		      +-------+-------+-------+-------+-------+----------
		      | Decod.|Decod. |Decod. |Decod. |	      |	 oscioso 
Unidad de instrucción |  (1)  | (2)   | (3)   | (4)   |	      |     	 
		      +-------+-------+-------+-------+-------+-----------
		     		                		    	 
		     	      +-------+-------+---------	    	 
  		     	      |Ejecuta|Ejecuta|			    	 
Unidad de ejecución  	      |  (1)  |  (2)  |oscioso		    	 
  		   	      +-------+-------+----------	    	 
		   						    	 
	 	   			       +----------+-------------    
Unidad de direccion			       |Genera la |                  
					       |dirección |         	 
					       |indexada  |         	 
					       |por  IP	  |         	 
					       +----------+--------------

1.5 Organización de los registros en los CPU’s Intel x86 PII (Pentium II)

1.5.1 Registros de propósito general

Aparecen en el 99% de la sintaxis que el CPU maneja a bajo
nivel. Compuesto por los registros:

  1. Acumulado. La salida del ALU va a este registro. Constituye
    evidencia de que el CPU es Von Neumann
  2. Base. Se llama así porque se usa como variable index
  3. Contador. Se llama así porque hay varias instrucciones que
    involucran bucles en dónde estos llevan el número de ciclos.
  4. Dato. Se llama así porque es el encargado de ser variable index
    de dirección de puerto.
LOTE DE REGISTROS DE PROPÓSITO GENERAL

   D_31            D_15    D_6 D_7   D_0
    +----------------+----------------+
EAX |                | AH    AX    AL |
    +----------------+----------------+
EBX |                | BH    BX    BL |
    +----------------+----------------+
ECX |                | CH    CX    CL |
    +----------------+----------------+
EDX |                | DH    DX    DL |
    +----------------+----------------+
                             |<------>|
                               8 bits

                     |<-------------->|
                           16 bits

    |<------------------------------->|
                  32 bits

NIBBLE=4 bits  <- utilizado muy antiguamente

1.5.2 Registros índices y apuntadores

  1. Indices. tarea miscelanea
    • Registro indice destino. Solo existe en intel, vuelca
      información.
    • Registro indice fuente. Saca información
  2. Apuntador. Tiene que ver con la memoria stack
    • Registro Apuntador Base
    • Registro Apuntador Stack. Trabaja la memoria stack como LIFO
LOTE DE REGISTROS INDICES Y APUNTADORES
		     .				     
		     .				     
   D_31         D_16 . D_15    	     D_0	     
    +----------------+----------------+		     
ESI |                | 	     SI       | Source Index 
    +----------------+----------------+		     
EDI |                | 	     DI       |	Destination Index
    +----------------+----------------+		     	 
EBP |                |       BP       |	Base Pointer   	 
    +----------------+----------------+		     
ESP |                | 	     SP       |	Stack Pointer
    +----------------+----------------+
    
                     |<-------------->|
                           16 bits
    
    |<------------------------------->|
                  32 bits

1.5.3 Registros de segmento

Su objetivo es coadyuvar a la unidad de dirección en la organización
de la memoria.

  1. Registro de segmento de código. Encargado de identificar el
    segmento de memoria desde dónde se carga el ejecutable.
  2. Registro de segmento de dato. Ayuda a la unidad de dirección a
    manejar el área de trasiegode información.
  3. Registro de segmento de dato extra. Manejar memoria utilizada en
    el trasiego de información extra al de datos.
  4. Registro de segmento de pila. Identifica al área de memoria el
    cual se maneja a travéz LIFO.
LOTE DE REGISTROS SEGMENTO
    .		     .	  			     
    . D_16       D_8 . D_7     	     D_0	     
    +---------------------------------+		     
    |               CS 	              | R. Code Segment	
    +---------------------------------+		       	
    |               DS 	              |	R. Data Segment
    +---------------------------------+		       	 
    |               ES                |	R. Extra Segment
    +---------------------------------+		       	
    |               SS 	              |	R. Stack Segment
    +---------------------------------+
    			     	  
                     |<-------------->|
                            8 bits
    		    	    
    |<------------------------------->|
                   16 bits 

R. = Register

1.5.4 Registros de Mantenimiento

Se llaman de mantenimiento porque sin ellas la computadora perdería
muchas capacidades.

LOTE DE REGISTROS DE MANTENIMIENTO
    .		     .	  			     
    . D_31      D_16 . D_15    	     D_0	     
    +----------------+----------------+
    |                | 	              |
EIP |                |       IP       | R. Instruction Pointer
    |                | 	              |			      
    +----------------+----------------+			      
    |                |                |	
EF  |                |       F        |	R. Flags
    |                | 	              |	
    +----------------+----------------+
    			     	  
                     |<-------------->|
                            16 bits
    		    	    
    |<------------------------------->|
                   32 bits   

R. = Register

REGISTRO DE APUNTADOR DE INSTRUCCIÓN.
Es la cadena binaria de salida sincrónico alimentado por pulsos de
reloj. Apunta al siguiente código de operación en el segmento de
código. Funciona como un contador binario sincrónico. Un contador
binario sincrónico es cíclico debido a ello se dice que un
computador es cíclico.

REGISTRO DE BANDERAS
Conformado por flip-flop, sepuede consultar uno o dos bits de la
cadena binaria. El nombre de cada bit viene del status del resultado
de la última operación, aritmética o lógica, realizada por el CPU.

En cada instrucción se sobreescribe uno o varios bits del registro de
banderas.

FIGURA QUE MUESTRA LA ESTRUCTURA DE CADA CASILLA (BIT) DEL REGISTRO DE BANDERAS ENTRO DE UNA CPU INTEL 

                                                                                  LSB
	+-----+-----+---------+-----+---+---------+----+-------+--------+----+-----+		       
  FLAG 	|     |	    |  	      |     | 	|	  |    |       |   	|    |	   |		       
REGISTER|     |	... |Direccion|Tramp|Int|Over-flow|Sign|Partity|Auxiliar|Zero|Carry|		       
16 bits |     |	    |	      |	    |   |         |    |       |Carry  	|    |     |		       
	+-----+-----+---------+-----+---+---------+----+-------+--------+----+-----+		       
					          ---	  /	  /	  \	  \	      _	       
					      ---/	-/	-/	   \	   \	       |       
				      	   --/	       /       /	    \	    \	       | Etiquetas
					positive     Odd   Carry auxiliar   Zero    Carry      | booleanas
					negative    Even  No Carry axiliar  No zero  No carry  o (verdadero,
											       | falso)	    
											       |       
											      _|
Carry flag
Activa cuando la ultima operación aritmética/logica produce
un acarreo
Zero flag
Resultado de operación aritmética/lógica full-set
Auxiliar Flag
Cuando hay sobreflujo de la cuarta a la quinta
posición. Diseñado para trabajar con algoritmos
Partiy flag
Paridad en uno (1 si es numero par), conteo de 1’s en
el resultado de una operación aritmético/lógico
Sign flag
Cuando hay sobreflujo de números negativos
Overflow
Cuando existe sobreflujo en alguna operación
aritmético/lógico. Solo Intel puede manejar
simultáneamente Zero flag y Overflow para números
negativos.

Intel maneja los números negativos como lo maneja el ser humano
operacionalmente. En contraste, Picaxy y Arduino manejan los números
negativos en complemento a dos.

Ejercicio. Ejecute la suma de los sigueintes números, e indique que
valor binario asumirían las banderas: carry, zero, carry aux, parity,
sign, over-flow.

Numero A = 7Fh
Número B = 73h

Pasando los números a binario y sumando
   0 1 1 1   1 1 1 1
+  0 1 1 1   0 0 1 1
---------------------
   1 1 1 1   0 0 1 0

Banderas:
carry = 0
zero = 0
Carry aux = 1
Parity = 0
Sign = 1
Over-flow = 1

1.6 Administración de memoria modo segmentado

Para trabajar un millon de celdas en memoria el programador a bajo nivel
Intel invento:

  1. Area de memoria de código. Aqui se instala el programa para qwue
    corra el ejecutable.
  2. Area de memoria de dato miscelaneo
  3. Area de memoria de dato extra
  4. Area de memoria de stack

Para las cuatro áreas anteriores: 64kb=65536 celdas de 8 bits

	      SECCION O SEGMENTO  
	    _  		      	  
	   |  +---------------+	  
	   |  |		      |	  
	   |  |		      |	  
Tamaño en  |  |8 bits = 1 byte|	  
número de  o  |<------------->|	  
celdas	   |  |		      |	  
	   |  |		      |	  
	   |  |		      |	  
	   |_ +---------------+	  
	     			  
	       	       	       	  
	  celdas c(16, 65536)	  
		    /	 \	  
		   /	  \	  
               párrafo   64 Kbytes

Todos los contadores del CPU son cíclicos. Los segmentos de memoria
que Intel propone poseen protección de frontera, por seguridad, si y
solo si, el tamaño del segmento es de 64 Kbytes

	 	  +------------------+           
	 	  |                  |           
	 	  | ^                |           
No hay regla a	  | .     Code       |           
cerca del numero  | .                |           
minimo de segmen- | .                |           
tos que queremos  +-.----------------+           
utilizar.      	  | .                |           
		  | .                |           
		  | .     Data       |           
		  | .                |           
		  | .                |           
		  +-.----------------+           
		  | .                |           
		  | .                |           
		  | .  Extra Data .........      
		  | .             .  |    .      
		  | .             .  |    .      
		  +===-----------===-+    .      
		  | .                |    .      
Si no se	  | .                |    . Se se
acota a 64k . . . > .     Stack  ^   |    . acota
 		  | .            .   |    .						   
		  | .            .   |    .						   
		  +--------------.---+    .						   
		                 .        .						   
	       	                 ..........
Registros de segmento
Su función es rotular las áreas de memoria

  • CS rotula el área de código
  • DS rotula el área de dato
  • ES rotula el área de dato extra
  • SS rotula el área de pila
Registro de desplazamiento
Son aquellos registros capaces de
navegar por las cuatro áreas antes mencionadas libremente.

TABLA QUE MUESTRA LAS PAREJAS VÁLIDAS DE REGISTRSO DE SEGMENTO Y
DESPLAZAMIENTO INVOLUCRADOS EN LA ADMISTRACION DE MEMORIA DE LOS
CPU’S INTEL

PROPÓSITO REGISTROS DE SEGMENTO REGISTROS DE DESPLAZAMIENTO
área de segmento de código CS IP
área de segmento de dato DS BX, DI, SI, número
área de segmento de dato extra ES DI (strings)
área de segmento de pila SS SP, BP

ECUACION UTILIZADA POR LA UNIDAD DE DIRECCION DE LOS CPU’S INTEL PARA
CONCATENAR “MODELO DE MEMORIA DEL PROGRAMADOR” VERSUS “MODELO DE
MEMORIA FISICA”.

Posición
de memoria  = (Registro de segmento ) * 10h  + Registro de desplazamiento
fisica

El modelo de memoria del programador se refiere a como veo la
memoria.

El modelo de memoria fisica se refiere como en realidad está la
memoria en forma física o a nivel de hardware. Es una posicion de
memoria en placa madre.

1.7 Modos de direccionamiento

  1. Direccionamiento De registro. De registro o memoria a
    registro o memoria. Ej: mov cx, dx
  2. Direccionamiento Inmediato. Transfiere del origen a registro o
    memoria. Ej: mov al,28h
  3. Direccionamiento De registro indirecto. Entre un registro y una
    posición de memoria direccionada por un registro indice o base
    (bp,bx,di,si). Ej: mov ax,[bx]
  4. Direccionamiento De base mas indice. Entre un registro y la
    posición de memoria direccionada por un registro base (bp,bx) mas un registro
    indice (si,di). Ej: mov [bx+si],cl.
  5. Direccionamiento De registro relativo. Entre un registro y
    posición de memoria direccionada por un registro base o indice mas un
    desplazamiento. Ej: mov ax, [bx+4] o mov ax, array[bx].
  6. Direccionamiento De regitro relativo mas indice. Entre un
    registro y la posición de memoria direccionada por un registro base y un
    registro indice mas un desplazamiento. Ej: mov ax, [bx+di+4] o
    mov array[bx+di].
  7. Direccionamiento De indice escalado. Solo disponible del 80386 al
    pentium4. El segundo registro de un par de registro se modifica
    mediante un factor de escala de 2(palabra), 4(doble palabra) u
    8(cuadruple palabra) para generar la direccion de memoria del
    operando. Ej: mov edx, [eax+4*ebx]

2 Programación a bajo nivel

2.1 Instrucciones de transferencia

MOV Destino, fuente

2.2 Instrucciones aritméticas

2.2.1 Suma

  • Suma sin acarreo
    Es análogo a un sumador medio en electrónica digital, solo con
    carry out.

    ADD     sum1,	         sum2              
    
         +--------+     +---------+	       
         |        |     |    |    |
        CPU      MEM   CPU   |  Numero
    			 |   	 
    			MEM
    
    
      CPU ---> Registro 
      MEM ---> Modo de direccionamiento
               de datos, directo, por  
               registro, relativo a          
               base ...
    

    Desarollo

    Formato de trabajo destructivo. Es decir el primer operando o
    destino es alterado al guardarse en él el resultado de la suma.
    
                     sum1 <-- sum1 + sum2
    
  • Suma con acarreo
    Es análogo al sumador completo en electrónica digital, con carry
    in=CF
    y también carry out.

    ADC    sum1,           sum2
    
         +--------+     +---------+
         |        |     |    |    |
        CPU      MEM   CPU   |  Numero
                             |        
                            MEM
    

    Desarollo

    Formato de trabajo destructivo. Es decir el primer operando o
    destino es alterado al guardarse en él el resultado de la suma.
    
                     sum1 <-- sum1 + sum2 + CF
    
  • Incremental
    INC      Target         
    
           +--------+                                 
           |        |                                 
          CPU      MEM
    

    Desarollo

    Target <----  Target + 1
    

    A esta instruccion no le está permitido afectar el carry flag.

2.2.2 Resta

  • Resta sin prestamo
    SUB     min,           sust
    
         +--------+     +---------+              
         |        |     |    |    |
        CPU      MEM   CPU   |  Numero
                             |     
                            MEM
    
    CPU ---> Registro 
    MEM ---> Modo de direccionamiento
             de datos, directo, por  
             registro, relativo a          
             base ...
    

    Desarollo

    Formato de trabajo destructivo. Es decir el primer operando o
    destino es alterado al guardarse en él el resultado de la resta.
    
                     min <-- min - sust
    
    Ejemplo:
    SUB EAX, EBX
    EAX <-- EAX - EBX
    
  • Resta con prestamo
    SBB     min,           sust
    
         +--------+     +---------+
         |        |     |    |    |
        CPU      MEM   CPU   |  Numero
                             |
                            MEM
    

    Desarollo

    Formato de trabajo destructivo. Es decir el primer operando o
    destino es alterado al guardarse en él el resultado de la resta.
    
                     min <-- min - sust - CF
    
    CF= carry flag
    
    Ejemplo:
    SUB CX, [BX+SI]
    CL <-- CL - [DS*10+BX+SI] - CF
    CH <-- CH - [DS*10+BX+SI+1]
    
  • Resta no destructiva o comparación
    CMP       min,	          sust    
    
         +--------+      +---------+
         |        |      |    |    |
        CPU      MEM    CPU   |  Numero
          		  	  | 
    			 MEM
    

    Desarrollo

         		 _	    
     	       	  |	    
      min - sust	  |	    
    ---------------	  |	    
    	       	  |	    
      Status del  	  |	    
      resultado 	  |	    
         | |    	  | No se crea 
         | |    	  o resultado  
        \| |/   	  | palpable
         \ /    	  |
          v     	  |
      +-------+ 	  |
      | FLAG  | 	  |
      +-------+ 	  |
    		 _|
    
  • Resta incremental
    DEC      Target         
    
           +--------+                                 
           |        |                                 
          CPU      MEM
    

    Desarollo

           Target <----  Target - 1
    
    Ejemplo:
    DEC BX
    BX <-- BX - 1
    

    A esta instruccion no le está permitido afectar el carry flag.

2.3 Instrucciones lógicas

  • Multiplicación lógica
      AND    op1,    op2              +-----------------------------------------+
                                      |                                         |
    desarrollo:                       |                                         |
    op1 <--- op1 ^ op2                |                                         |
                                      |    +-------------------+                |
    ejemplo:                          |    |                   |                |
    AND <--- AH, CL                   |    |                   |                |
    AH  <--- AH ^ CL                  |    |         +---------+----------------+--------------+
                                      |    |         |                                         |
    Si:                               |    |         |                                         |
      AH  =  1 0 0 0    1 1 0 1  -----+    |         |                                         |
                                           |         \                                         /
      CL  =  1 1 1 1    1 1 1 0  ----------+          \                                       /
                                                       \                                     /                       
    ------------------------------                      \                                   /                        
             1 0 0 0    1 1 0 0    <----------+          -\                               /-
                                              |            -\                           /-
                                              |              -\                       /-
                                              |                ----\             /----
                                              |                     -----+-------
                                              |                          |
                                              |                          |
                                              +--------------------------+
    

    Aplicación del nexo “Mo” al filtrado digital

    PATRON DESCONOCIDO       X  X  X  X     X  X  X  X
    
    MASCARA                  0  0  0  0     1  1  1  1     
                           -----------------------------  
    
    RESULTADO FILTRADO       0  0  0  0     X  X  X  X
    
  • Suma lógica (inclusiva)
    OR     op1,    op2                         +-----------------------------------------+                
                                               |                                         |                
    desarrollo:                                |                                         |                
    op1 <--- op1 v op2                         |                                         |                
                                               |    +-------------------+                |                
    ejemplo:                                   |    |                   |                |            /-
    OR  <--- BL, [SI]                          |    |          --       |                |          /- 
    BL  <--- BL v [DS*10+SI]                   |    |         |  \-     |                |       /--    |
                                               |    |         |    \-   |                |     /-       |
    Si:                                        |    |         |      \- |                |  /--         |
        BL        =   1 1 1 1    1 0 1 0  -----+    |         |        \+----            |/-            |
                                                    |         \              \------------              /
    [DS*10+SI]    =   0 0 1 1    0 0 1 1  ----------+          \                                       /
                                                                \                                     /
                     --------------------                        \                                   /
                      1 1 1 1    1 0 1 1    <----------+          -\                               /-
                                                       |            -\                           /-       
                                                       |              -\                       /-         
                                                       |                ----\             /----           
                                                       |                     -----+-------                
                                                       |                          |                       
                                                       |                          |                       
                                                       +--------------------------+
    

    Aplicación al filtrado digital

    PATRON DESCONOCIDO       X  X  X  X     X  X  X  X
    
    MASCARA                  0  0  0  0     1  1  1  1     
                           -----------------------------  
    
                             X  X  X  X     1  1  1  1
    
  • Suma lógica exclusiva
    XOR    op1,    op2                                          
    
    desarrollo:                                                 
                  _                                             
    op1 <--- op1 (+) op2                                        
    
    ejemplo:                                                    
    XOR AX, DX                                                  
    AX  <--- AX (+) DX                                          
    
    
        AX        =   1 1 0 1    0 0 0 0    0 0 1 1     0 1 0 1 
    
        DX        =   0 0 0 0    1 1 1 0    1 1 0 0     1 0 1 0 
    
                     -------------------------------------------
                      1 1 0 1    1 1 1 0    1 1 1 1     1 1 1 1
    

    aplicación “XOR” al filtrado

    PATRON DESCONOCIDO       X  X  X  X     X  X  X  X
    
    MASCARA                  0  0  0  0     1  1  1  1     
                           -----------------------------  
    
    RESULTADO FILTRADO       0  0  0  0     ~X ~X ~X ~X
    
  • Multiplicación lógica no destructiva
    TEST      op1,            op2
    
           +--------+      +---------+
           |        |      |    |    |
          CPU      MEM    CPU   |  Numero
                                | 
                               MEM
    
    
    desarrollo:                           
                           _              
                            |             
            op1 ^ op2       |             
          ---------------   |                                    
                            |                                    
            Status del      |                                    
            resultado       |                                    
               | |          | No se crea                         
               | |          o resultado                          
              \| |/         | palpable                           
               \ /          |                                    
                v           |                                    
            +-------+       |                                    
            | FLAG  |       |                                    
            +-------+       |                                    
                           _|                                    
    
    
    observaciones:
    CPU ---> Se refiere a Registro 
    MEM ---> Modo de direccionamiento
             de datos, directo, por  
             registro, relativo a          
             base ...
    
  • Complemento a uno
    NOT      Target                
    
           +--------+              
           |        |              
          CPU      MEM             
    
    desarrollo:                    
                ______             
    Target <--- Target             
    
    
    ejemplo:                       
    NOT AL                         
            __                     
    AL <--- AL                                   
    
    
    Si:                            
    
      AL   =  0 1 0 1    0 1 1 0         
     ----------------------------- 
      AL   =  1 0 1 0    1 0 0 1
    
  • Complemento a dos
    NEG      Target                
    
           +--------+              
           |        |              
          CPU      MEM             
    
    desarrollo:                    
                ______             
    Target <--- Target + 1         
    
    
    ejemplo:                       
    NEG DX                         
            __                     
    DX <--- DX + 1                               
    
    
    Si:                            
    
      DX   =  1 0 0 0    0 1 0 1    0 0 0 0    0 0 0 0
     --------------------------------------------------
      DX   =  0 1 1 1    1 0 1 1    0 0 0 0    0 0 0 0
    

2.4 Instruciones de salto

Saltar significa cambiar dirección (navegar), en la memoria de código.

	   ____        _ _        
	  / ___|  __ _| | |_ ___  
	  \___ \ / _` | | __/ _ \ 
	   ___) | (_| | | || (_) |
	  |____/ \__,_|_|\__\___/ 
	       	       	       	  
	 /		     \ 
        /		      \
       /		       \
 o Condicionado	       	   o Absoluto: la dirección se coloca
 o No condicionado	    	       sobre IP cuando se      
			    	       compila 	       	       
			   o Relativo: Se le suma o resta a IP,
				       desde la posición actual



						   
INTRASEGMENTO:              INTERSEGMENTO:          
No se puede salir           Puede salir del segmento
dentro de memoria           de código               
de código.                                          
1. Corto (+-128)                                    
2. Lejano
  • No condicionado relativo
    JMP            Label      
                -----+----    
                     v        
                   offset     
                    /\        
                   /  \          _
              8 bits  16 bits     |números negativos
               /\         /\      |por complemento                                
              /  \       /  \     |a dos.           
           +127 -127  +32k  -32k _|
    
  • Condicionado Relativo
    JMP         flag,                         Label                          
              ---------                    -----+----                        
                  |                             |                            
            +-----+-----+                     offset                         
            |           |                      /\                            
         Simples    Compuestas                /  \                           
            |           |                8 bits  16 bits                     
         +-----+    +-------+                                                
         |     |    |       |  _                                             
         Z     NZ   A       B   |# sin                                       
         C     NC   AE      BE _|signo                                       
         O     NO   |       |                                                
                    |       |  _                                             
                    G       L   |# con                                       
                    GE      LE  |signo                                       
                    E       NE _|
    

    desarrollo:

    IP <--- IP + offset                                                                            
    
               ^
               |
               +-----suma algebraica
    

2.5 Instrucciones de corrimiento

  NEMONICO             TARGET,          NUMERO DE CORRIMIENTOS 	   
------------         -----------       ------------------------	   
     |                    |                       |            	   
    SHL             +-----+-----+           +-----+-----+      	   
    SHR             |           |           |           |      	   
    SAL            CPU         MEM         CPU       NUMERO    	   
    SAR             |           |           |                  	   
                REGISTROS     M.D.D.    REGISTRO CL            	   


REGISTROS = AX,BX,ECX,...
M.D.D. = Modo de direccionamiento de datos
  1. Lógico
    Se usa cuando se opera con numeros sin signo.

    Corrimiento a la izquierda

     ____  _   _ _       
    / ___|| | | | |    _           
    \___ \| |_| | |   (_)          
     ___) |  _  | |___ _ 
    |____/|_| |_|_____(_)
    
     CF      MSB        TARGET         LSB
    +--+    +---+---------------------+---+
    |  |<---|   |    <----------      |   |<---- 0
    +--+    +---+---------------------+---+
    

    Corrimiento a la derecha

     ____  _   _ ____                             
    / ___|| | | |  _ \ _                          
    \___ \| |_| | |_) (_)                         
     ___) |  _  |  _ < _                          
    |____/|_| |_|_| \_(_)                         
    
             MSB        TARGET         LSB      CF
            +---+---------------------+---+    +--+
     0 ---->|   |    --------->       |   |--->|  |
            +---+---------------------+---+    +--+
    
  2. Aritmético
    Se usa cuando se opera números con signo ya el desplazamiento que
    realiza mantiene estatico el bit de signo del número.

    corrimiento aritmético a la izquierda

     ____    _    _       
    / ___|  / \  | |    _ 
    \___ \ / _ \ | |   (_)
     ___) / ___ \| |___ _ 
    |____/_/   \_\_____(_)
    
     CF      MSB       TARGET          LSB
    +--+    +---+---------------------+---+
    |  |<---|   |    <----------      |   |<---- 0
    +--+    +---+---------------------+---+
    

    corrimiento aritmético a la derecha

     ____    _    ____    
    / ___|  / \  |  _ \ _ 
    \___ \ / _ \ | |_) (_)
     ___) / ___ \|  _ < _ 
    |____/_/   \_\_| \_(_)
    
             MSB         TARGET        LSB      CF
            +---+---------------------+---+    +--+
      +---->|   |    --------->       |   |--->|  |
      |     +---+---------------------+---+    +--+
      |       |
      |       | Si hay un 1 en MSB desplazará 
      +-------+ insertando 1's. Si hay un 0 en MSB
                desplazará insertando 0's.
    

2.6 Instrucciones de rotación

    NEMONICO             TARGET,          NUMERO DE ROTACIONES
  ------------         -----------       ------------------------    
       |                    |                       |                
      RCL             +-----+-----+           +-----+-----+          
      RCR             |           |           |           |          
      ROL            CPU         MEM         CPU       NUMERO        
      ROL             |           |           |                      
                  REGISTROS     M.D.D.    REGISTRO CL                

REGISTROS = AX,BX,ECX,...
M.D.D. = Modo de direccionamiento de datos
  • Con acarreo.
    rotación a la izquierda con acarreo

     ____   ____ _             
    |  _ \ / ___| |    _       
    | |_) | |   | |   (_)      
    |  _ <| |___| |___ _       
    |_| \_\\____|_____(_)      
    
          CF        MSB       TARGET          LSB
         +--+      +---+---------------------+---+
      +--|  |<-----|   |    <----------      |   |<----+
      |  +--+      +---+---------------------+---+     |
      |                                                |
      +------------------------------------------------+
    

    rotación a la derecha con acarreo

     ____   ____ ____    
    |  _ \ / ___|  _ \ _ 
    | |_) | |   | |_) (_)
    |  _ <| |___|  _ < _ 
    |_| \_\\____|_| \_(_) 
    
             MSB         TARGET        LSB        CF 
            +---+---------------------+---+      +--+
      +---->|   |    --------->       |   |----->|  |
      |     +---+---------------------+---+      +--+
      |                                            |
      |                                            |
      +--------------------------------------------+
    
  • Sin acarreo.
    rotación a la izquierda sin acarreo

     ____   ___  _       
    |  _ \ / _ \| |    _ 
    | |_) | | | | |   (_)
    |  _ <| |_| | |___ _ 
    |_| \_\\___/|_____(_)
    
          CF        MSB       TARGET          LSB
         +--+      +---+---------------------+---+
         |  |<-----|   |    <----------      |   |<----+
         +--+   |  +---+---------------------+---+     |
                |                                      |
                +--------------------------------------+
    

    rotación a la derecha sin acarreo

     ____   ___  ____    
    |  _ \ / _ \|  _ \ _ 
    | |_) | | | | |_) (_)
    |  _ <| |_| |  _ < _ 
    |_| \_\\___/|_| \_(_)
    
             MSB         TARGET        LSB        CF 
            +---+---------------------+---+      +--+
      +---->|   |    --------->       |   |----->|  |
      |     +---+---------------------+---+  |   +--+
      |                                      |
      |                                      |
      +--------------------------------------+
    

2.7 Retardos

2.8 Instrucciones de entrada y salida, I/O

2.9 Aplicación a diseño integrado

3 Miscelaneo

3.1 Métodos de atención a I/O’s

3.2 Modo de administracion memoria protegida (importante)

3.3 Buses

3.4 CISC versus RISC

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s