Documentos de Académico
Documentos de Profesional
Documentos de Cultura
La ISA incluye el modelo de ejecución, los registros del procesador, los modos de
direccionamiento y los formatos de datos, entre otras cosas. La microarquitectura
incluye las partes constituyentes del procesador y cómo estas se interconectan e
interoperan para implementar la ISA.
Lo que se consigue con esto es que una sola microarquitectura pueda ejecutar
diferentes ISA haciendo cambios menores al microcódigo.
Una microarquitectura describe, entre otros:
• el nombre de las etapas del cauce segmentado y su tamaño,
• el número y tipo de memorias caché,
• la existencia de un renombre de registros,de una unidad de ejecución
desordenada, de una unidad de predictor de saltos.
La microarquitectura y la arquitectura de conjunto de instrucciones conforman
la arquitectura de una computadora.
Aspectos de la microarquitectura
Conceptos microarquitectónico
Todas las CPU, así como las implementaciones de microprocesadores en un simple
chip o multichips en general, ejecutan los programas realizando los siguientes pasos:
1. Se lee una instrucción
2. Se decodifica la instrucción
3. Se encuentra cualquier dato asociado que sea necesario para procesar la
instrucción
4. Se procesa la instrucción
5. Se escriben los resultados
RISC es una filosofía de diseño de CPU para computadora que está a favor de
conjuntos de instrucciones pequeñas y simples que toman menor tiempo para
ejecutarse. El tipo de procesador más comúnmente utilizado en equipos de escritorio,
el x86, está basado en CISC en lugar de RISC, aunque las versiones más nuevas
traducen instrucciones basadas en CISC x86 a instrucciones más simples basadas en
RISC para uso interno antes de su ejecución.
La idea fue inspirada por el hecho de que muchas de las características que eran
incluidas en los diseños tradicionales de CPU para aumentar la velocidad estaban
siendo ignoradas por los programas que eran ejecutados en ellas. Además, la
velocidad del procesador en relación con la memoria de la computadora que
accedía era cada vez más alta. Esto conllevó la aparición de numerosas técnicas
para reducir el procesamiento dentro del CPU, así como de reducir el número total
de accesos a memoria.
Multitarea
Debido a lo redundante de las microinstrucciones, los sistemas operativos diseñados
para estos microprocesadores, contemplaban la capacidad de subdividir un
microprocesador en varios, reduciendo el número de instrucciones redundantes por
cada instancia del mismo. Con una arquitectura del software optimizada, los
entornos visuales desarrollados para estas plataformas, contemplaban la posibilidad
de ejecutar varias tareas en un mismo ciclo de reloj. Así mismo, la paginación de la
memoria RAM era dinámica y se asignaba una cantidad suficiente a cada instancia,
existiendo una especie de 'simbiosis' entre la potencia del microprocesador y la RAM
dedicada a cada instancia del mismo.
La multitarea dentro de la arquitectura CISC nunca ha sido real, tal como en los RISC
sí lo es. En CISC, el microprocesador en todo su conjunto está diseñado en tantas
instrucciones complejas y diferentes, que la subdivisión no es posible, al menos a nivel
lógico. Por lo tanto, la multitarea es aparente y por órdenes de prioridad. Cada ciclo
de reloj trata de atender a una tarea instanciada en la RAM y pendiente de ser
atendida. Con una cola de atención por tarea FIFO para los datos generados por el
procesador, y LIFO para las interrupciones de usuario, trataban de dar prioridad a las
tareas que el usuario desencadenara en el sistema. La apariencia de multitarea en
un CISC tradicional, viene de la mano de los modelos escalares de datos,
convirtiendo el flujo en un vector con distintas etapas y creando la
tecnología pipeline.
Los microprocesadores actuales, al ser híbridos, permiten cierta parte de multitarea
real. La capa final al usuario es como un CISC tradicional, mientras que las tareas que
el usuario deja pendientes, dependiendo del tiempo de inactividad, el sistema
traducirá las instrucciones (el software ha de ser compatible con esto) CISC a RISC,
pasando la ejecución de la tarea a bajo nivel, en donde los recursos se procesan
con la filosofía RISC. Dado que el usuario solo atiende una tarea por su capacidad
de atención, el resto de tareas que deja pendientes y que no son compatibles con
el modelo de traducción CISC/RISC, pasan a ser atendidas por el tradicional pipeline,
o si son tareas de bajo nivel, tal como desfragmentaciones de disco, chequeo de la
integridad de la información, formateos, tareas gráficas o tareas de cálculo
matemático intenso.
En vez de tratar de subdividir a un solo microprocesador, se incorporó un segundo
microprocesador gemelo, idéntico al primero. El inconveniente es que la RAM debía
de ser tratada a nivel hardware y los módulos diseñados para plataformas
monoprocesador no eran compatibles o con la misma eficiencia, que para las
plataformas multiprocesador. Otro inconveniente, era la fragmentación del BYTE de
palabra. En un RISC tradicional, se ocupan los BYTES de la siguiente forma: Si la
palabra es de 32 BITS (4 BYTES de palabra de 8 BITS cada una, o dos de 16 o una de
32), dependiendo de la profundidad del dato portado, dentro del mismo BYTE, se
incluían partes de otras instrucciones y datos. Ahora, al ser dos microprocesadores
distintos, ambos usaban registros independientes, con accesos a la memoria propios
(en estas plataformas, la relación de RAM por procesador es de 1/1). En sus orígenes,
las soluciones se parecían a las típicas ñapas de albañil, cada placa base
incorporaba una solución solamente homologada por la chip set usada y los drivers
que la acompañaban. Si bien la fragmentación siempre ha sido como ese mosquito
que zumba en el oído, pero que por pereza permitimos que nos pique, llegó un
momento que era imposible evadir el zumbido. Esta época llegó con las plataformas
de 64 BITS.
Historia
Mientras la filosofía de diseño RISC se estaba formando, nuevas ideas comenzaban
a surgir con un único fin: incrementar drásticamente el rendimiento de la CPU.
Al principio de la década de los ochenta se pensaba que los diseños existentes
estaban alcanzando sus límites teóricos. Las mejoras de la velocidad en el futuro
serían hechas con base en procesos mejorados, esto es, pequeñas características en
el chip. La complejidad del chip podría continuar como hasta entonces, pero un
tamaño más pequeño podría resultar en un mejor rendimiento del mismo al operar a
más altas velocidades de reloj.
Se puso una gran cantidad de esfuerzo en diseñar chips para computación paralela,
con vínculos de comunicación interconstruidos. En vez de hacer los chips más
rápidos, una gran cantidad de chips serían utilizados, dividiendo la problemática
entre estos. Sin embargo, la historia mostró que estos miedos no se convirtieron en
realidad, y hubo un número de ideas que mejoraron drásticamente el rendimiento al
final de la década de los ochenta.
Una idea era la de incluir un canal por el cual se pudieran dividir las instrucciones en
pasos y trabajar en cada paso muchas instrucciones diferentes al mismo tiempo. Un
procesador normal podría leer una instrucción, decodificarla, enviar a la memoria la
instrucción de origen, realizar la operación y luego enviar los resultados. La clave de
la canalización es que el procesador pueda comenzar a leer la siguiente instrucción
tan pronto como termine la última instrucción, significando esto que ahora dos
instrucciones se están trabajando (una está siendo leída, la otra está comenzando a
ser decodificada), y en el siguiente ciclo habrá tres instrucciones. Mientras que una
sola instrucción no se completaría más rápido, la siguiente instrucción sería
completada enseguida. La ilusión era la de un sistema mucho más rápido. Esta
técnica se conoce hoy en día como Segmentación de cauce.
Otra solución más era utilizar varios elementos de procesamiento dentro del
procesador y ejecutarlos en paralelo. En vez de trabajar en una instrucción para
sumar dos números, esos procesadores superescalares podrían ver la siguiente
instrucción en el canal y tratar de ejecutarla al mismo tiempo en una unidad idéntica.
Esto no era muy fácil de hacer, sin embargo, ya que algunas instrucciones dependían
del resultado de otras instrucciones.
Ambas técnicas se basaban en incrementar la velocidad al añadir complejidad al
diseño básico del CPU, todo lo opuesto a las instrucciones que se ejecutaban en el
mismo. Siendo el espacio en el chip una cantidad finita, para poder incluir todas esas
características algo más tendría que ser eliminado para hacer hueco. RISC se
encargó de tomar ventaja de esas técnicas, esto debido a que su lógica para el CPU
era considerablemente más simple que la de los diseños CISC. Aun con esto, los
primeros diseños de RISC ofrecían una mejora de rendimiento muy pequeña, pero
fueron capaces de añadir nuevas características y para finales de los ochenta
habían dejado totalmente atrás a sus contrapartes CISC. Con el tiempo esto pudo
ser dirigido como una mejora de proceso al punto en el que todo esto pudo ser
añadido a los diseños CISC y aun así caber en un solo chip, pero esto tomó
prácticamente una década entre finales de los ochenta y principios de los noventa.
Características
En pocas palabras esto significa que para cualquier nivel de desempeño dado, un
chip RISC típicamente tendrá menos transistores dedicados a la lógica principal. Esto
permite a los diseñadores una flexibilidad considerable; así pueden, por ejemplo:
Computación paralela
La computación paralela es una forma de cómputo en la que
muchas instrucciones se ejecutan simultáneamente,1 operando sobre el principio de
que problemas grandes, a menudo se pueden dividir en unos más pequeños, que
luego son resueltos simultáneamente (en paralelo). Hay varias formas diferentes de
computación paralela: paralelismo a nivel de bit, paralelismo a nivel de
instrucción, paralelismo de datos y paralelismo de tareas.
El paralelismo se ha empleado durante muchos años, sobre todo en la computación
de altas prestaciones, pero el interés en ella ha crecido últimamente debido a las
limitaciones físicas que impiden el aumento de la frecuencia. n. 12Como el consumo
de energía —y por consiguiente la generación de calor— de las computadoras
constituye una preocupación en los últimos años,n. 23 la computación en paralelo se
ha convertido en el paradigma dominante en la arquitectura de computadores,
principalmente en forma de procesadores multinúcleo.n. 34
Las computadoras paralelas pueden clasificarse según el nivel de paralelismo que
admite su hardware: equipos con procesadores multinúcleo y multi-procesador que
tienen múltiples elementos de procesamiento dentro de una sola máquina y
los clústeres, MPPS y gridsque utilizan varios equipos para trabajar en la misma tarea.
Muchas veces, para acelerar tareas específicas, se utilizan arquitecturas
especializadas de computación en paralelo junto a procesadores tradicionales.
Los programas informáticos paralelos son más difíciles de escribir que los
secuenciales,5 porque la concurrencia introduce nuevos tipos de errores de software,
siendo las condiciones de carrera los más comunes. La comunicación
y sincronizaciónentre diferentes subtareas son algunos de los mayores obstáculos
para obtener un buen rendimiento del programa paralelo.
La máxima aceleración posible de un programa como resultado de la paralelización
se conoce como la ley de Amdahl.
Arquitectura ARM
ARM es una arquitectura RISC (Reduced Instruction Set Computer=Ordenador con
Conjunto Reducido de Instrucciones) de 32 bits y, con la llegada de su versión V8-A,
también de 64 Bits, desarrollada por ARM Holdings. Se llamó Advanced RISC
Machine, y anteriormente Acorn RISC Machine. La arquitectura ARM es el conjunto
de instrucciones de 32 y 64 bits más ampliamente utilizado en unidades producidas. 1
2 Concebida originalmente por Acorn Computers para su uso en ordenadores
personales, los primeros productos basados en ARM eran los Acorn Archimedes,
lanzados en 1987.
Un enfoque de diseño basado en RISC permite que los procesadores ARM requieran
una cantidad menor de transistores que los procesadores x86 CISC, típicos en la
mayoría de ordenadores personales. Este enfoque de diseño nos lleva, por tanto, a
una reducción de los costes, calor y energía. Estas características son deseables para
dispositivos que funcionan con baterías, como los teléfonos móviles, tabletas, etc.
La relativa simplicidad de los procesadores ARM los hace ideales para aplicaciones
de baja potencia. Como resultado, se han convertido en los dominantes dentro del
mercado de la electrónica móvil e integrada, encarnados
en microprocesadores y microcontroladores pequeños, de bajo consumo y
relativamente bajo costo. En 2005, alrededor del 98% de los más de mil millones
de teléfonos móviles vendidos utilizaban al menos un procesador ARM.3 Desde 2009,
los procesadores ARM son aproximadamente el 90% de todos los procesadores RISC
de 32 bits integrados. Cabe hacer mención que no existe una tabla de equivalencias
de rendimiento entre las distintas tecnologías de procesadores 4 que se utilizan
generalmente en la electrónica de consumo, incluyendo PDA, tabletas, teléfonos
móviles, teléfonos inteligentes, relojes
inteligentes, videoconsolas portátiles, calculadoras, reproductores digitales
multimedia (fotos, vídeos, etc.) y periféricos de ordenador como discos
duros y enrutadores.
La arquitectura ARM es licenciable. Esto significa que el negocio principal de ARM
Holdings es la venta de núcleos IP (propiedad intelectual), estas licencias se utilizan
para crear microcontroladores y CPUs basados en este núcleo. Las empresas que son
titulares de licencias ARM actuales o anteriores incluyen a Alcatel-Lucent, Apple Inc.,
AppliedMicro, Atmel, Broadcom, Cirrus Logic, Digital Equipment Corporation, Ember,
Energy Micro, Freescale, Intel (a través de DEC), LG, Marvell Technology Group,
Microsemi, Microsoft, NEC, Nintendo, Nokia,
Nuvoton, Nvidia, Sony, MediaTek, NXP (antes Philips Semiconductors), Oki, ON
Semiconductor, Psion, Qualcomm, Samsung, Sharp, STMicroelectronics, Symbios
Logic, Texas Instruments, VLSI Technology, Yamaha, y ZiiLABS.
Los procesadores ARM son desarrollados por ARM y los titulares de las licencias de
ARM. Prominentes familias de procesadores ARM desarrollados por ARM Holdings
incluyen el ARM7,V8-A ARM9, ARM11 y Cortex.
Entre los procesadores ARM desarrollados por firmas licenciatarias se incluyen Applied
Micro Circuits Corporation X-Gene, DEC StrongARM, Freescale i.MX, Marvell
Technology Group XScale, NVIDIA Tegra, Qualcomm Snapdragon, Texas
Instruments OMAP, Samsung Exynos, Apple Ax, ST-
Ericsson NovaThor, Huawei K3V2 e IntelMedfield.