martes, 15 de noviembre de 2016

PROGRAMACION DEL MICROPROCESADOR Y ARQUITECTURAS CISC Y RISC

   1. ¿Cuál es el objetivo de la pila STACK en un procesador?

Stack o pila es una estructura de datos con acceso del tipo LIFO (Last In First Out), último en entrar, primero en salir. Este tipo de estructura de datos es fácil de desarrollar por los sistemas microprocesadores y resulta de gran utilidad para trabajar con listas de datos y es imprescindible para el trabajo interno del microprocesador en las subrutinas e interrupciones.
Algunos microprocesadores pueden tener el Stack en su interior, representando un sistema muy rápido pero de tamaño limitado, la mayoría de microprocesadores disponen el Stack en la memoria externa, hecho que proporciona una gran capacidad de almacenamiento y el control de su ubicación, aunque el acceso sea más lento.

   2.   ¿Cuál es la diferencia entre el código objeto y el código en lenguaje ensamblador de un procesador?

Cuando programamos en un lenguaje distinto del lenguaje máquina, nuestro código debe ser traducido a binario para que el ordenador pueda entenderlo y ejecutarlo. Existe un programa específico encargado de hacer esa traducción y que, dependiendo del lenguaje en el que hayamos escrito nuestro programa, puede ser un ensamblador o un compilador.


Ensambladores 
Se llaman ensambladores los programas encargados de traducir los programas escritos en ensamblador a código binario.
Fíjese en que tanto el programa traductor como el lenguaje se llaman del mismo modo: ensamblador.
Como el lenguaje ensamblador es muy próximo al binario, estos traductores son programas relativamente sencillos.

Compiladores

El compilador es un programa que traduce el código de alto nivel a código binario. Es, por tanto, parecido al ensamblador, pero mucho más complejo, ya que las diferencias entre los lenguajes de alto nivel y el código binario son muy grandes.
El programa escrito en lenguaje de alto nivel se denomina programa fuente o código fuente. El programa traducido a código binario se llama programa objeto o código objeto. Por lo tanto, el compilador se encarga de convertir el programa fuente en un programa objeto.
Una vez que se ha obtenido el programa objeto ya no es necesario volver a realizar la traducción (o compilación), a menos que se haga alguna modificación en el programa fuente, en cuyo caso habría que volver a compilarlo.
El programa objeto, una vez generado, puede ejecutarse en la máquina en la que fue compilado, o en otra de similares características (procesador, sistema operativo, etc.).
Cuando el programa objeto se haya disperso en diferentes archivos (lo que ocurre con frecuencia cuando el programa es grande o, sencillamente, cuando usa funciones escritas por terceras personas), puede ser necesario un proceso previo de enlace de los diferentes módulos. De eso se encarga un programa llamado enlazador o linker, ya ven qué original, que suele actuar inmediatamente después del compilador.

   3. Consulte el set de instrucciones básicas del procesador 8086

Instrucciones de movimientos de datos
MOV
destino, fuente
;la única instrucción que utiliza todos los tipos de direccionamiento
XCHG
destino, fuente
;Intercambia los contenidos de destino y fuente
XLAT
tabla fuente
;carga el registro AL con el byte direccionado por (BX+AL)
LAHF

;carga las flags S, Z, A, P y C en AH 
SAHF
;guarda AH en el registro de flags
LDS
destino, fuente
;transfiere un puntero de 32 bits al registro DS y al registro destino
LES
destino, fuente
;transfiere un puntero de 32 bits al registro ES y al registro destino
LEA
destino, fuente
;transfiere el offset de fuente (una dirección) a destino (un registro)
PUSH
fuente
;guarda fuente en el Stack (en la dirección SS:SP)
POP
destino
;recupera del Stack (dirección SS:SP-1) y guarda en registro destino
PUSHF

;almacena  el registro de flags en/desde el Stack
POPF
;recupera el registro de flags en/desde el Stack
PUSHA

; almacena los regs. DI,SI,BP,SP,BX,DX,CX,AX en/desde el Stack
POPA
; recupera los regs. DI,SI,BP,SP,BX,DX,CX,AX en/desde el Stack
IN
origen
;carga desde un puerto origen un byte o Word en AL o AX
OUT
destino
;escribe Al o AX en el puerto destino (direccionan. inmediato o DX)
 Las operaciones aritméticas
ADD
destino, fuente
;suma fuente + destino y guarda el resultado en destino
ADC
destino, fuente
;suma fuente + destino + Carry y guarda el resultado en destino
SUB
destino, fuente
;resta destino - fuente y guarda el resultado en destino
SUB
destino, fuente
;resta destino - fuente - Carry y guarda el resultado en destino
MUL
fuente
;multiplica AL o AX * fuente y guarda el resultado en DX:AX
IMUL
fuente
;igual que la anterior pero con números enteros con signo
DIV
fuente
;divide DX:AX / fuente y guarda cociente en AX y resto en DX
IDIV
fuente
;igual que la anterior pero con números enteros con signo
AND
destino, fuente
;opera destino AND fuente y guarda resultado en destino
OR
destino, fuente
;opera destino OR fuente y guarda el resultado en destino
XOR
destino, fuente
;opera destino XOR fuente y guarda el resultado en destino
NOT
destino
; El NOT cambia todos los 1 en 0 y los 0 en 1 de destino.
NEG
destino
;NEG realiza el complemento a 2 de destino
INC
destino
;Incremente en 1 el contenido de destino
DEC
destino
;Decremento en 1 el contenido de destino
DAA / DAS

;Efectúa el ajuste decimal en suma / resta del registro AL
AAA/AAD/ AAM/AAS

;ajustan el registro AL a valor decimal desempaquetado (para aplicar en operaciones suma, resta, multiplicación y división)
Instrucciones de rotación
RCL
destino, contador
;rota destino a través de Carry a la izquierda contador veces
RCR
destino, contador
;rota destino a través de Carry a la derecha contador veces
ROL
destino, contador
;rota destino a la izquierda contador veces
ROR
destino, contador
;rota destino a la derecha contador veces
SAL
destino, contador
;desplaza destino a la izquierda contador veces y rellena con ceros
SAR
destino, contador
;desplaza destino a la derecha contador veces y rellena con bit SF
SHR
destino, contador
;desplaza destino a la derecha contador veces y rellena con ceros

Instrucciones de comparación
CMP 
destino, fuente
; compara fuente y destino. Modifica las flags V, Z, S, C, P y AC
TEST
destino, fuente
; AND entre fuente y destino. Ninguno de los operandos cambia.
TEST modifica las mismas flags que CMP pero siempre deja a V = 0 y C = 0.
Instrucciones de strings
CMPS
string_destino,string_fuente
;compara las dos cadenas de a bytes o words
CMPSB
string_destino,string_fuente
;origen y destino indicados por DS:SI y ES:DI  (bytes)
CMPSW
string_destino,string_fuente
;origen y destino indicados por DS:SI y ES:DI  (words)
LODS 
string_fuente
;mueve un byte o una word desde fuente a AL o AX
LODSB
string_fuente
;origen  indicado por DS:SI (mueve un byte a AL)
LODSW
string_fuente
;origen  indicado por DS:SI (mueve una word a AX)
STOS 
string_destino
;mueve un byte o una word al destino desde AL o AX
STOSB
string_destino  
;destino indicado por ES:DI (mueve AL a un byte)
STOSW
string_destino  
;destino indicado por ES:DI  (mueve AX a una word)
MOVS 
string_destino,string_fuente
;mueve un byte o word de fuente a destino
MOVSB
string_destino,string_fuente
;origen y destino indicados por DS:SI y ES:DI (un byte)
MOVSW
string_destino,string_fuente
;origen y destino indicados por DS:SI y ES:DI (una word)
SCAS 
string_destino
;compara la cadena de destino con AL o AX
SCASB
string_destino
;destino indicado por ES:DI (compara AL con un byte)
SCASW
string_destino
;destino indicado por ES:DI (compara AX con una word)
Instrucciones de repetición
LOOP
offset
; Decremento CX. Si CX no es cero, salta a offset (IP = IP + offset)
LOOPZ 
offset
;decrementa CX, Si CX <> 0 y Z = 1 , salta a offset (IP = IP + offset)
LOOPNZ 
offset
;decrementa CX, Si CX <> 0 y Z = 0 , salta a offset (IP = IP + offset)
En todos los casos, si no se produce el salto, se ejecuta la próxima instrucción
REP
instrucción
;decrementa CX y repite la siguiente instrucción MOVS o STOS hasta que CX=0
REPZ
instrucción
; Igual que REP, pero para CMPS y SCAS. Repite si la flag Z queda en 1 (igualdad)
REPNZ
instrucción
;igual que REPZ, pero repite si la flag Z queda en 0 (las cadenas son distintas)
Instrucciones de salto
CALL
destino
; llama a procedimiento. IP <-- offset de destino y CS <-- segmento de destino
RET
valor
;retorna desde un procedimiento (el inverso de CALL), valor es opcional
INT
número
; llamado a interrupción. CS:IP <-- vector de INT.Las flags se guardan en el Stack
INTO

;llama a la INT 4 si la flag de overflow (V) está en 1 cuando se ejecuta la instrucción
IRET

;retorna de interrupción al programa restaurando flags
JMP
dirección
;Salta incondicionalmente al lugar indicado por dirección
JA
offset
;salta a IP + offset si las flags C=0 Y Z=0 (salta si primer operando es mayor)
JAE
offset
;salta a IP + offset si la flag C=0 (salta si primer operando es mayor o igual)
JB
offset
;salta a IP + offset si las flags C=1 (salta si primer operando es menor)(igual a JC)
JBE
offset
;salta a IP + offset si las flags C=1 o Z=1 (salta si primer operando es menor o igual)
JZ
offset
;salta a IP + offset si las flags Z=1 (salta si primer operando es igual al segundo)(=JE)
JG
offset
;salta a IP + offset si las flags S=V Y Z=0 (salta si primer operando es mayor)
JGE
offset
;salta a IP + offset si las flags S=V (salta si primer operando es mayor o igual)
JL
offset
;salta a IP + offset si las flags S<>V (salta si primer operando es menor)
JLE
offset
;salta a IP + offset si las flags S<>V o Z=1(salta si primer operando es menor o igual)
JNC
offset
;salta a IP + offset si la flag C=0 (salta si no hay Carry)
JNZ
offset
;salta a IP + offset si la flag Z=0 (salta si no son iguales o no es cero)
JNO
offset
;salta a IP + offset si la flag V=0 (salta si no hay overflow)
JNP
offset
;salta a IP + offset si la flag P=0 (salta si no hay paridad -o la paridad es impar =JPO)
JNS
offset
;salta a IP + offset si la flag S=0 (salta si no hay bit de signo)
JO
offset
;salta a IP + offset si la flag V=1 (salta si hay desbordamiento -overflow)
JP
offset
;salta a IP + offset si la flag P=1 (salta si la paridad es par ) (=JPE)
JS
offset
;salta a IP + offset si la flag S=1 (salta si el signo es negativo)
JCXZ
offset
;salta a IP + offset si la flag CX=0 (salta si el registro CX es cero)
Instrucciones que afectan flags
CLC/CMC/STC 
;pone a cero / complementa / pone en 1 la flag C (Carry)
CLD/STD
;pone a cero / uno la flag de dirección (D=0 hace que SI y DI se incrementen)
CLI/STI
;deshabilita / habilita las interrupciones por hardware enmascarables
Instrucciones misceláneas
NOP
;no-operación: el procesador pasa a la instrucción siguiente sin hacer nada
CBW
;convierte el byte de AL en palabra (AX), copiando el bit 7 a todo el registro AH
CWD
;convierte word en doublé-word, copiando bit 15 de AX a todo el registro DX
HLT
; El procesador se detiene hasta que llegue un Reset o una interrupción por hard.

  4. ¿Qué ventajas brinda la programación en lenguaje ensamblador, frente a la programación en lenguajes de alto nivel?

VELOCIDAD
El proceso de traducción que realizan los intérpretes, implica un proceso de cómputo adicional al que el programador quiere realizar. Por ello, nos encontraremos con que un intérprete es siempre más lento que realizar la misma acción en Lenguaje Ensamblador, simplemente porque tiene el costo adicional de estar traduciendo el programa, cada vez que lo ejecutamos.
De ahí nacieron los compiladores, que son mucho más rápidos que los intérpretes, pues hacen la traducción una vez y dejan el código objeto, que ya es Lenguaje de Máquina, y se puede ejecutar muy rápidamente. Aunque el proceso de traducción es más complejo y costoso que el de ensamblar un programa, normalmente podemos despreciarlo, contra las ventajas de codificar el programa más rápidamente.
Sin embargo, la mayor parte de las veces, el código generado por un compilador es menos eficiente que el código equivalente que un programador escribiría. La razón es que el compilador no tiene tanta inteligencia, y requiere ser capaz de crear código genérico, que sirva tanto para un programa como para otro; en cambio, un programador humano puede aprovechar las características específicas del problema, reduciendo la generalidad pero al mismo tiempo, no desperdicia ninguna instrucción, no hace ningún proceso que no sea necesario.
Para darnos una idea, en una PC, y suponiendo que todos son buenos programadores, un programa para ordenar una lista tardará cerca de 20 veces más en Visual Basic (un intérprete), y 2 veces más en C (un compilador), que el equivalente en Ensamblador.
Por ello, cuando es crítica la velocidad del programa, Ensamblador se vuelve un candidato lógico como lenguaje.
Ahora bien, esto no es un absoluto; un programa bien hecho en C puede ser muchas veces más rápido que un programa mal hecho en Ensamblador; sigue siendo sumamente importante la elección apropiada de algoritmos y estructuras de datos. Por ello, se recomienda buscar optimizar primero estos aspectos, en el lenguaje que se desee, y solamente usar Ensamblador cuando se requiere más optimización y no se puede lograr por estos medios.

TAMAÑO
Por las mismas razones que vimos en el aspecto de velocidad, los compiladores e intérpretes generan más código máquina del necesario; por ello, el programa ejecutable crece. Así, cuando es importante reducir el tamaño del ejecutable, mejorando el uso de la memoria y teniendo también beneficios en velocidad, puede convenir usar el lenguaje Ensamblador. Entre los programas que es crítico el uso mínimo de memoria, tenemos a los virus y manejadores de dispositivos (drivers). Muchos de ellos, por supuesto, están escritos en lenguaje Ensamblador.

FLEXIBILIDAD
Las razones anteriores son cuestión de grado: podemos hacer las cosas en otro lenguaje, pero queremos hacerlas más eficientemente. Pero todos los lenguajes de alto nivel tienen limitantes en el control; al hacer abstracciones, limitan su propia capacidad. Es decir, existen tareas que la máquina puede hacer, pero que un lenguaje de alto nivel no permite. Por ejemplo, en Visual Basic no es posible cambiar la resolución del monitor a medio programa; es una limitante, impuesta por la abstracción del GUI Windows. En cambio, en ensamblador es sumamente sencillo, pues tenemos el acceso directo al hardware del monitor.

  5.    Elabore una tabla donde especifique, los  modos de direccionamiento, su propósito y los registros que involucra

MODOS DE DIRECCIONAMIENTO

PROPOSITO

REGISTROS
Implícito
El operando se especifica en la misma definición de la instrucción.
Operando
Dirección
(SP)
(AX)
Inmediato
Es el operando el que figura en la instrucción no su dirección.
(BX)
(CX)
(DX)
Directo
El campo de operando en la instrucción contiene la dirección en memoria donde se encuentra el operando
Operando
(AX)
Indirecto
El campo de operando contiene una dirección de memoria, en la que se encuentra la dirección efectiva del operando.
Dirección
(BX)
(DI)
(SI)
De registro
Sirve para especificar operandos que están en registros
(DX)
(CX)

Indexado respecto a una base
Se trata de una combinación de los dos anteriores y consiste en calcular la dirección efectiva como:
Desplazamiento
(SI)
(AX)

Direccionamiento paginado
En el paginado la memoria se encuentra actualmente dividida en páginas (bloques de igual longitud)
(IP)


   6.    Elabore el listado de por lo menos 5 procesadores y consiga para cada uno de ellos el repertorio de instrucciones.

·         Lenguaje ensamblador x86: Incluye los procesadores Intel 8086 y 8088
·         Intel Pentium: Incluye las mismas instrucciones que el x86
·         AMD Athlon: Incluye las mismas instrucciones que el x86

Instrucciones de 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 información en la pila se decrementa SP para que apunte un poco más arriba y se copia a esa posición 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 básicas son PUSH origen (empujar) y POP destino (sacar). La primera decrementa el puntero de pila y copia a la dirección apuntada por él (SS: SP) el operando origen (de tamaño múltiplo 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 dónde está ubicado el segmento de pila.
La instrucción 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 instrucción pop, o bien ejecutar la instrucción ret size donde size es el número de posiciones que deben descartarse de la pila.

Instrucciones de la ALU con enteros: El ensamblador x86 tiene las operaciones matemáticas estándar, como add, sub, mul, y idiv; los operadores lógicos and, or, xor, neg; desplazamientos, sal/sar, shl/shr; rotación con/sin acarreo, rcl/rcr, rol/ror, un complemento de instrucciones aritméticas 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, negación, multiplicación, división, resto, raíces cuadradas, truncamiento entero y truncamiento fraccionado. Las operaciones también incluyen instrucciones de conversión 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.

Instrucciones SIMD: Los procesadores x86 modernos tienen instrucciones SIMD, que permiten realizar la misma operación en paralelo sobre diversos valores codificados en un registro SIMD. Varias tecnologías de instrucciones soportan diferentes operaciones sobre distintos repertorios de registros, pero todos (desde MMX hasta SSE4, 2) incluyen cálculo general sobre aritmética entera o en coma flotante (suma, resta, multiplicación, desplazamiento, minimización, maximización, comparación, división o raíz cuadrada).

Instrucciones de manipulación de datos: El procesador x86 también 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 instrucción simple que carga 32 bits de datos desde la dirección 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 tamaño del cualquier registro sobre el que está operando.

   7.    ¿Cuáles son las ventajas y las desventajas de programar lenguajes ensambladores, frente a otros como C o  java por ejemplo?

Ensamblador (Assembly)
Ventajas
·         Controla con precisión la operación del micro controlador y permite al programador precisión en las operaciones.
·         Permite escribir un código más sucinto, y por lo tanto más veloz. En aplicaciones profesionales se usa sobre todo para escribir drivers para interfaces de periféricos o para escribir rutinas altamente optimizadas que requieren velocidad, tamaño reducido y/o precisión.
·         Es valioso como herramienta educacional, ya que para escribir ensamblador uno debe conocer a detalle la arquitectura interna del micro controlador, el set de instrucciones, los registros y su funcionamiento interno.
Desventajas
·         No es portable, debido a que depende de la estructura interna del micro controlador, el código de un micro controlador no puede correr en otro de diferente arquitectura.
·         No posee estructura ni control de tipos, por lo cual, el programador debe cuidar por sí mismo de proveer una estructura adecuada a su programa y controlar los tipos de datos.
·         El mantenimiento del código (revisión, modificación, ampliación) es más complicado.

   8.    ¿Qué función cumple las siguientes líneas de código?

Mov ax, 10: Es la asignación de un registro a una determinada posición de memoria,  pone en AX el valor que tuviera la posición 10 de memoria.
Mov bx, 12: Es la asignación de un registro a una determinada posición de memoria,  pone en BX el valor que tuviera la posición 12 de memoria.
Cmp ax, bx: Compara dos registros, o un registro y una dirección de memoria, está comparando el registro BX con el AX.
Jle Hace_Algo: Salta a IP + offset si las flags S<>V o Z=1(salta si primer operando es menor o igual)   



   9.    Elabore una tabla en la que categorice y caracterice las dos clasificaciones de computadores a que se hace referencia en esta guía


DATOS
Simples
Múltiples
INSTRUCCIONES
Simples


SSID


MISD
Múltiples


SIMD


MIMD

FLYNN
CLASIFICACIÓN MODERNA

La clasificación de flynn es un tipo de clasificación que se realiza según la forma de procesar los datos paralelamente, que en este caso resulta  una clasificación debido a la cantidad de datos e instrucciones que se manejan.

La clasificación de flynn hace mención a cuatro grupos:

           SISD (Simples instrucciones, simples datos):
Tienen la característica de procesar una instrucción por cada ciclo de reloj. 
           SIMD (Simples instrucciones, múltiples datos):
Ejecutan una instrucción con múltiples datos
           MISD (Múltiples instrucciones, múltiples datos):
Ejecutan varias instrucciones con un solo dato
           MIMD (Múltiples instrucciones, múltiples datos):
Ejecutan diferentes instrucciones con diferentes datos

Multiprocesadores: Un multiprocesador puede verse como un computador paralelo compuesto por varios procesadores interconectados que comparten un mismo sistema de memoria. Los sistemas multiprocesadores son arquitecturas MIMD con memoria compartida. Tienen un único espacio de direcciones para todos los procesadores y los mecanismos de comunicación se basan en el paso de mensajes desde el punto de vista del programador.
Dependiendo de la forma en que los procesadores comparten la memoria, se clasifican en sistemas multiprocesador UMA, NUMA y COMA.
UMA (Acceso de Memoria Uniforme): Sistema multiprocesador con acceso uniforme a memoria. 
NUMA (No Acceso de Memoria Uniforme): Un sistema multiprocesador NUMA es un sistema de memoria compartida donde el tiempo de acceso varía según donde se encuentre localizado el acceso.
COMA (Escondrijo Sólo Acceso de Memoria): Los sistemas COMA son un caso especial de los sistemas NUMA. Este tipo de sistemas no ha tenido mucha transcendencia, al igual que los sistemas SIMD.

10.   
Cuáles son las ventajas y desventajas técnicas de los procesadores simétricos y frente a los asimétricos


Procesadores Simétricos frente a los asimétricos
VENTAJAS
1. Este tipo de sistemas tienden a ser más eficientes porque las tareas tanto del sistema operativo como de los usuarios pueden ser distribuidas en forma balanceada a todos los procesadores.
2. El tiempo de inactividad de un procesador mientras otro está sobre trabajando es mínimo.
3. Si un procesador falla, es posible que sus tareas sean repartidas entre los demás y no es necesario que todo el sistema sea parado o que falle el sistema.
4. Los sistemas SMP permiten que cualquier procesador trabaje en cualquier tarea sin importar su localización en memoria.
5. Muchos procesos pueden ejecutarse simultáneamente (N procesos si hay N CPU) sin que haya deterioro del desempeño.
6. Permite compartir dinámicamente trabajos y recursos entre los distintos procesadores, y puede reducir la varianza entre los sistemas.
DESVENTAJAS
1. Conforme se añaden procesadores, el tráfico en el bus de memoria se satura.
2. Al manejarse ocho o más procesadores, el cuello de botella se vuelve crítico, inclusive para los mejores diseños, por lo que SMP es considerada una tecnología poco escalable.
3. Los sistemas operativos que soportan este tipo de multiprocesamiento son más difíciles de diseñar.
4. Dado que las CPU son independientes, una podría estar ociosa mientras otra está sobrecargada, con la consiguiente ineficiencia.


11.    Cuáles son las ventajas y desventajas técnicas de los sistemas RISC Y CISC


VENTAJAS
DESVENTAJAS






CISC
·         Facilidad de implementación del conjunto de instrucciones
·         Compatibilidad hacia adelante y hacia atrás de nuevas CPU’s
·         Facilidad de programación
·         Puede ser menor la complejidad del computador
·         La complejidad del conjunto de instrucciones crece
·         Las instrucciones de longitud variable reducen el rendimiento del sistema
·         Inclusión de instrucciones que raramente se usan











RISC
·         Se incrementa la velocidad debido a un conjunto de instrucciones más simples
·         Hardware más simple debido a instrucciones más sencillas que requieren menos espacio en el chip
·         El ciclo de diseño más corto resulta en un diseño efectivo, costos controlados de desarrollo y tiempo de salida al mercado más corto
·         Excesiva dependencia en la efectividad del compilador
·         La depuración de los programas se hace difícil por la programación de instrucciones
·         Se incrementa el tamaño del código de lenguaje máquina
·         Necesidad de memoria rápida

12.    Haga una breve descripción de las características de los procesadores con múltiples núcleos

Características
·         Una de las principales características es que un solo procesador tiene la capacidad de hacer la función de dos o más procesadores a la vez
·         Los procesadores multinucleo no solo los podemos encontrar en computadoras si no también en celulares tabletas etc.

Ventajas
·         Mejora el rendimiento de la maquina
·         Se recalienta menos la maquina
·         Se ocupa menos espacio de memoria
·         Las tareas se reparten entre los núcleos

    13.    A que se le denomina procesadores multinúcleo consiga ejemplo de ello

Un procesador de núcleo múltiple es un circuito integrado (IC) al cual se ha unido dos o más procesadores para mejorar el rendimiento, reducir el consumo de energía, y lograr el procesamiento simultáneo más eficiente de múltiples tareas (véase procesamiento en paralelo). Un montaje de núcleo doble es algo comparable a tener múltiples procesadores separados, instalados en la misma computadora; pero debido a que los dos procesadores están de hecho conectados al mismo socket, la conexión entre ellos es más rápida.

Ejemplos:

Procesadores Multinúcleo de Intel
Actualmente Intel está 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 Dúo.
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 hacía 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 Smith Field (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).


Procesadores Multinúcleo de AMD
Antes de sacar sus procesadores multinúcleo al mercado, AMD ya había conseguido un gran éxito con su procesador Athlon 64, que incorporaba la capacidad de direccional 64 bits de memoria, la tecnología HyperTransport que era un nuevo bus bastante rápido que eliminaba cuellos de botella anteriores, y otras tecnologías; este procesador fue tomado como base para la construcción de su procesador de doble núcleo Athlon 64 X2, que salió al mercado a partir del 2005.

Para Servidores, AMD sacó el procesador Opteron X2, que se basaba también en el Opteron de un solo núcleo, el hermano mayor de los Athlon 64.
Para Portátiles AMD ha sacado el Turion X2, que lleva el poder de los procesadores de doble núcleo al campo de los móviles.