Miguel Angel Riaño Cadena
COD 5045
****ARQUITECTURAS RISC
Buscando aumentar la velocidad del
procesamiento se descubrió en base a experimentos que, con una determinada
arquitectura de base, la ejecución de programas compilados directamente con
microinstrucciones y residentes en memoria externa al circuito integrado
resultaban ser mas eficientes, gracias a que el tiempo de acceso de las
memorias se fue decrementando conforme se mejoraba su tecnología de
encapsulado.
Debido a que se tiene un conjunto de instrucciones simplificado,
éstas se pueden implantar por hardware directamente en la CPU, lo cual elimina
el microcódigo y la necesidad de decodificar instrucciones complejas.
En investigaciones hechas a mediados de la década de los setentas,
con respecto a la frecuencia de utilización de una instrucción en un CISC y al
tiempo para su ejecución, se observó lo siguiente:
- Alrededor del 20% de las instrucciones ocupa el 80% del tiempo
total de ejecución de un programa.
- Existen secuencias de instrucciones simples que obtienen el
mismo resultado que secuencias complejas predeterminadas, pero requieren
tiempos de ejecución más cortos.
Las características esenciales de una arquitectura RISC pueden
resumirse como sigue:
- Estos microprocesadores siguen tomando como base el esquema moderno de Von Neumann.
- Las instrucciones, aunque con otras características, siguen divididas en tres grupos:
a) Transferencia.
b) Operaciones.
c) Control de flujo.
b) Operaciones.
c) Control de flujo.
- Reducción del conjunto de instrucciones a instrucciones básicas simples, con la que pueden implantarse todas las operaciones complejas.
- Arquitectura del tipo load-store (carga y almacena). Las únicas instrucciones que tienen acceso a la memoria son 'load' y 'store'; registro a registro, con un menor número de acceso a memoria.
- Casi todas las instrucciones pueden ejecutarse dentro de un ciclo de reloj. Con un control implantado por hardware (con un diseño del tipo load-store), casi todas las instrucciones se pueden ejecutar cada ciclo de reloj, base importante para la reorganización de la ejecución de instrucciones por medio de un compilador.
- Pipeline (ejecución simultánea de varias instrucciones). Posibilidad de reducir el número de ciclos de máquina necesarios para la ejecución de la instrucción, ya que esta técnica permite que una instrucción puede empezar a ejecutarse antes de que haya terminado la anterior.
***** ARQUITECTURAS CISC
La microprogramación es una característica importante y esencial
de casi todas las arquítecturas CISC.
Como por ejemplo: Intel 8086, 8088, 80286, 80386, 80486.
Motorola 68000, 68010, 68020, 68030, 6840.
La microprogramación significa que cada instrucción de máquina es interpretada por una microprograma localizada en una memoria en el circuito integrado del procesador.
En la década de los sesentas la micropramación, por sus características, era la técnica más apropiada para las tecnologías de memorias existentes en esa época y permitía desarrollar también procesadores con compatibilidad ascendente. En consecuencia, los procesadores se dotaron de poderosos conjuntos de instrucciones.
Las instrucciones compuestas son decodificadas internamente y ejecutadas con una serie de microinstrucciones almacenadas en una ROM interna. Para esto se resquiere de varios ciclos de reloj (al menos uno por microinstrucción).
**** Procesadores con múltiples núcleos.
Un procesador multinúcleo es aquel que combina dos o más microprocesadores independientes en un solo paquete, a menudo un solo circuito integrado. Un dispositivo de doble núcleo contiene solamente dos microprocesadores independientes. En general, los microprocesadores multinúcleo permiten que un dispositivo computacional exhiba una cierta forma del paralelismo a nivel de thread (thread-level paralelismo) (TLP) sin incluir múltiples microprocesadores en paquetes físicos separados. Esta forma de TLP se conoce a menudo como multiprocesamiento a nivel de chip (chip-level multiprocessing) o CMP.
**** Ejemplos de procesadores multinúcleo
Se verá un resumen de los
principales procesadores multinúcleo de la actualidad. Se comienza por Intel, mostrando los procesadores multinúcleo que ha sacado
al mercado, luego viene AMD, y por último se muestra al nuevo procesador Cell,
que próximamente va a salir en la PlayStation 3.
Procesadores Multinúcleo
de Intel
Actualmente Intel esta
fabricando procesadores de doble núcleo. Comenzó fabricando los Pentium D en el
2005, luego en el 2006 lanzó los Core Duo y el Core 2
Duo.
Pentium D
Los Pentium D están conformados
por dos procesadores Pentium 4 Prescott sin Hyperthreading. Luego Intel sacó el
Pentium Extreme Edition (No confundir con el Pentium
4 Extreme Edition) que era un procesador que tenía los procesadores P4
Prescott, con la tecnología Hyperthreading, lo que hacia que el software viera
cuatro procesadores.
Las características de los
Pentium D son:
- Proceso de fabricación de 90nm
- Tienen la tecnología EM64T, que permite trabajar con 64 bits de forma nativa
- Utilizan núcleos SmithField (basados en los Prescott), cada uno de ellos tiene una memoria caché L2 de 1MB
- Van desde 2.80GHz, del modelo menos potente, hasta 3.20GHz para el modelo más potente.
El procesador que contiene dos núcleos Prescott se llama Smithfield. Los nuevos procesadores de doble núcleo Pentium D se llaman
Presler, están construidos con tecnología de fabricación
de 65nm y van desde 2.8 hasta 3.73Ghz. Tienen una caché L2 por cada núcleo de
2MB (4MB en total).
****Diferencia
entre ALU y FPU.
La ALU
es la encargada antiguamente de hacer las operaciones aritméticas por dicho
motivo se dice que la ALU es la unidad aritmética lógica y se encarga de hacer
operaciones (sumar, restar, multiplicar o dividir).La ALU en los primeros PCs se
encontraba físicamente en la placa madre y luego en el núcleo del
microprocesador.
Para hacer las operaciones aritméticas debe trabajar en conjunto con los registros, datos y un compilador interno que sea capaz de transformar el lenguaje humano a lenguaje "PC" (binario). Para lograr hacer cualquier proceso se deben hacer operaciones aritméticas. La ALU se utilizó hasta procesadores Pentium IV y de momento fue remplazada por el FPU ya que puede trabajar a su doble velocidad.
Para hacer las operaciones aritméticas debe trabajar en conjunto con los registros, datos y un compilador interno que sea capaz de transformar el lenguaje humano a lenguaje "PC" (binario). Para lograr hacer cualquier proceso se deben hacer operaciones aritméticas. La ALU se utilizó hasta procesadores Pentium IV y de momento fue remplazada por el FPU ya que puede trabajar a su doble velocidad.
El FPU para lograr hacer las operaciones aritméticas lo
único que debe hacer es mover la coma por eso se dice que el FPU es una unidad
de coma flotante. Trabaja a su doble de velocidad porque no necesita imprimir
los valores ya que lo único que hace es mover la coma.
Una pila es
un conjunto ordenado de elementos en el cual se pueden agregar y eliminar
elementos de un extremo, el cual es llamado el tope de la pila.
La pila
es un objeto dinámico en constante cambio.
Código objeto es el resultado de la compilación del código
fuente. Puede ser en lenguaje máquina o bytecode, y puede distribuirse en
varios archivos que corresponden a cada código fuente compilado. Luego un
enlazador (linker) se encarga de juntar todos los archivos de código fuente
para obtener el programa ejecutable.
a) genéricas: mov
b) de cadenas: lodsb, lodsw,
stosb, stosw, movsb, movsw
c) de pila: push, pop, pushf, popf
d) de intercambio: xchg
e) de acceso a tabla: xlat
f) de entrada o salida: in, out
g) de direcciones lógicas: lea, lds, les
h) con registro de estado: lahf, sah
Registro De Segmento
|
Significado Y Utilidad
|
CS(Segmento De Código)
|
Es un segmento de código el cual se encarga de
almacenar la dirección inicial del segmento del código de un programa en el registro.
Este siempre apunta al segmento de donde se encuentran las direcciones. En el
caso de este registro de segmento no se puede llegar a tener muy fácil la
modificación directamente sino que se debe hacer mediante las instrucciones
de transferencia o control.
|
DS(Segmento De Datos)
|
Es un segmento de datos el posee una dirección y esta dirección al
juntarse con un valor de desplazamiento generar la referencia de la localidad
de un byte especifico en el segmento de datos. Este tipo de segmento se
encarga principalmente de buscar las instrucciones del código que leen o
almacenan datos.
|
SS(Segmento De Pila)
|
Es un segmento
en el cual se guarda la dirección y datos que el usuario quiere
guardar temporalmente. Es decir que el segmento de pila contiene la dirección
en la cual se van a guardar los datos o la información, este segmento
contiene la dirección del comienzo de pila. En el caso de la pila esta se
encarga de contener valores de 16 bits en la ejecución del programa.
|
ES(Segmento Extra)
|
Este segmento de registro para tener un mejor direccionamiento de la
memoria. Este registro es asociado con el registró ID (índice) dándole un mejor espacio y
ordenamiento a la memoria.
|
FS y GS
|
Son registros extra de segmento en los procesadores
30386 y posteriores a estos procesadores.
|
MICROPROCESADOR
|
INFORMACION
|
Z80
|
Velocidad: velocidad de fábrica de 4 MHz.
Cantidad de
Transistores: Contenía 2.300
transistores.
Registros: el Z80 está compuesto por un
banco principal, otro alternativo y por último un banco compuesto por
registros especiales. Los registros son:
·
A, B, C,
D, E, H y L (banco principal)
·
A', B',
C', D', E', H' y L' (banco alternativo)
·
I, R,
IX, IY, SP y PC (registros especiales)
Los registros del banco principal
son generales y de 8 bits.
Fabricante: Federico
Faggin en Intel
Capacidad de
direccionamiento: hasta 1 MB de memoria.
|
El 8080
|
Velocidad: Contenía una
velocidad de 2Mhz
Cantidad de Transistores: Contenía 4500
transistores y podía ejecutar 200.000 instrucciones por segundo.
Registros:
Fabricante: Intel
Capacidad de direccionamiento: direccionamiento de memoria 16 KB en el 8008 contra 64 KB en el 8080
|
Core i7
|
Velocidad: Cuenta con 3.06 GHz, 2.93 GHz y 2.66 GHz de velocidad
básica.
Cantidad de Transistores: 731 millones de transistores
Registros:
Fabricante: Intel
Capacidad de direccionamiento: Puede manejar hasta 8Gb de memoria RAM
|
Pentium
|
Cantidad de Transistores: 3.100.000 transistores
Registros: Agrego
8 nuevos registros, conocidos como MM0 al MM7
Fabricante: Intel
Capacidad de direccionamiento: De
más de 4 GB de memoria expandida 36 bits direccionamiento.
|
Intel Celeron D
|
Velocidad: 266 MHz a 3.6 GHz
Cantidad de
Transistores: 188 millones de transistores
Registros: SIMD
Fabricante: Intel
Capacidad de
direccionamiento:
|
AMD Athlon 64
|
Velocidad: 800 MT/s a 1000 MT/s
dependiendo del tamaño de la caché
Registros: Registros SSE/SSE2 De 128 Bits (Dieciséis En Total)
Fabricante: AMD
Capacidad de direccionamiento: pueden direccionar hasta 32gb de memoria
|
AMD
Opteron 240
|
Velocidad: 1,4 GHz a
3,5 GHz
Cantidad de
Transistores:
Registros: SIMD
Fabricante: AMD
Capacidad de
direccionamiento: 32 y de 64 bits, representa
el ... 256 Terabytes de espacio de memoria para direcciones
|
SC/MP
|
Velocidad: velocidad de 2 MHz
Cantidad de Transistores: 6.000 transistores
Registros: registro de
extensión (Ex) de 8 bits, tres registros de índice (IX0 IX1 IX2)
Fabricante: Nacional
Semiconductor
Capacidad de direccionamiento: capacidad de direccionamiento de memoria a 64 kbytes
|
AMD Athlon Xp
|
Velocidad: 700 MHz a 2,40 GHz
Cantidad de
Transistores: Aproximadamente 37,5 millones de transistores en
128 mm2
Registros: Registros intermedios marginales de
traducción exclusivos y especulativos
Fabricante:
AMD
Capacidad de
direccionamiento: 64 a 16 Exabytes de capacidad de direccionamiento
|
Ivy Bridgey
|
Velocidad: 2 GHz a 3,8 GHz
Cantidad de Transistores: 1.48 mil millones de transistores
Registros: Registro de
datos dinámico, estático
Fabricante: Intel
Capacidad de direccionamiento:
Espacio de direccionamiento físico de 4 GB.
|
3). El registro
de banderas tiene como función principal dar a conocer el estado actual de la
máquina y el estado del procesamiento de una instrucción. A este registro de
banderas se le conoce también como registro de estado o palabra de estado, es
un registro de 16 bits y contiene información de sobre el estado de operaciones
de la unidad aritmética
Modos
De Direccionamiento
|
|
Directo
|
La instrucción contiene la dirección real del operando en la cual se
ven dos tipos :
Direccionamiento
Absoluto: la
instrucción contiene la dirección de
memoria donde se encuentra el objeto, que se halla en una posición de memoria
principal.
Direccionamiento Mediante
Registro: Operando
almacenamiento en un registro de la CPU. La instrucción indica en que
registro
La ventaja que presenta este modo de direccionamiento es que solo con
una referencia a memoria sin cálculos previos
La desventaja que presenta es su espacio de direcciones es reducido
Este hace uso de registros de propósitos generales ( AX) y registros
de segmento (DS) es decir de datos
|
Inmediato
|
En este tipo de modo de direccionamiento el operando esta en la
propia instrucción, por lo tanto este opera en una valor constante. El
direccionamiento de una sola palabra es más rápido.
Las desventajas que presenta este modo de direccionamiento es que
tiene operando limitado por la instrucción Instr.
La ventaja principal que presenta este modo de direccionamiento es que
no referencia a memoria.
Este tipo de modo de registro cuenta con registros (CX) que es un
registro contador y también cuenta con el registro (AX) que es un registro de acumulador principal.
|
Direccionamiento Por
Registro
|
En este modo de direccionamiento la instrucción no
contiene la dirección del operando es
decir que debe ser calculada. Permite acceder a un conjunto de
direcciones de memoria a partir de una
considerada como referencia.
Direccionamiento
relativo al registro contador del programa: Para direccionar instr cercanas a la instr en
curso, para bucles.
Direccionamiento
relativo al registro base:
La instr contiene la identificación del registro y
del desplazamiento.
El tipo de registros que presenta este modo de
direccionamiento cuenta con el
registro (AX) que es un registro de
acumulador principal y registros (BX)
que es el registro base ya que es el único de propósitos generales.
La ventaja que presenta este modo de
direccionamiento es la flexibilidad y la desventaja que presenta es la
complejidad
|
Direccionamiento indirecto
por registro
|
Este tipo de modo de direccionamiento contiene la dirección de
desplazamiento correspondiente para los datos para la instrucción. Este modo
de direccionamiento sirve para aplicaciones que usan datos situados en
posiciones distantes en memoria.
Este tipo de modos de direccionamiento presenta el registro (AX) que es un registro de acumulador principal
y registros (BX) que es el registro
base ya que es el único de propósitos generales y registros de segmento (DS) es decir de datos.
Las desventaja que presenta este tipo de
modo de direccionamiento es que emplea
una referencia a memoria menos y la ventaja que posee es que tiene un espacio
de direccionamiento grande
|
La ventaja que presenta el lenguaje del ensamblados frente a
los otros es que este es muy flexible y su traducción no es tan complicada como
la de los demás es decir que es directa, y su velocidad es más rápida que la de
los otros leguajes, mientras que el lenguaje del ensamblador usa menos código
de máquina del necesario en cambio los otros usan mucho código de maquina
innecesario. Este tipo de lenguaje no limita al usuario en el control de las
instrucciones
MOV ax 10
MOV bx 12
Cmp ax,bx
Jle Hace Algo
Lo que hace esta instrucción es comparar los números y por
medio de la última instrucción muestra si los números son mayor menor o igual