Conceptos de arquitectura de computadoras Unidad Central ...
Transcript of Conceptos de arquitectura de computadoras Unidad Central ...
1109 - Arquitectura de computadoras -UNLAM
1
Arquitectura de ComputadorasUnidad Central de Proceso
Universidad Nacional de La Matanza
Dpto. Ingeniería e Investigaciones Tecnológicas
Arquitectura de Computadoras
Autor: Ing. Jaír E. Hnatiuk;
Revisión: Ing. Ezequiel Calaz; Lic. Carlos Maidana
Ver. 1.2.2 (2020)
Lectura recomendada: MUR00 págs. 100-108;125-130;302-304HEN12 págs. 95-103; 110-118STA05 págs. 349-358; 361-375; 396-404; 420-428; 438-449
ProcesamientoDatos ResultadosConformación/Adecuación
Conformación/Adecuación
Almacenamiento
Programas
Sistema para procesamiento de información
con capacidad de tomar decisiones
¿Por qué utilizamos computadoras digitales?
¿Qué es una computadora?
Es un sistema dual: Software + Hardware
• Soporte físico (circuitos)
• Soporte lógico (programas): abstracto, le
transfiere a la máquina la capacidad de
tomar decisiones
¿Qué implica el procesamiento?
Transformar, evaluar, medir, guardar
1109 - Arquitectura de computadoras -UNLAM
2
Aplicación
Algoritmo
Lenguaje de programación
Sistema operativo / Máquina virtual
Arquitectura / Instruction Set Architecture (ISA)
Estructura / Microarquitectura
Compuertas
Circuitos
Física
Visión en capas o niveles de una computadora como sistema1
10
9 -
Arq
uit
ectu
ra d
e co
mp
uta
do
ras “Compatibilidad hacia arriba”: es posible
tener computadoras que difieran en la implementaciones de niveles inferiores pero mantengan el mismo (sub/super) conjunto de instrucciones de una arquitectura dada.Ejemplos: IBM 360, Intel x86
1109 - Arquitectura de computadoras -UNLAM
3
Las marcas son propiedad de sus respectivos dueños
Tipo estrella (ideal)
Subsistema de Entrada
Subsistema de Almacenamiento
Subsistema de salida
Subsistema de procesamiento
Cada uno de los subsistemas o bloques funcionales se relacionan entre sí mediante distintos canales individuales
Esquemas de organización de sistemas de computación
1109 - Arquitectura de computadoras -UNLAM
4
Esquema de organización tipo Bus
Bloque funcional: Conjunto de circuitos integrados organizados para cumplir una función específica dentro del sistema de computación.Los bloques se relacionan mediante una conexión común a todos.Bus: conjunto de cables que interconectan bloques funcionales
Bloque de procesamiento
Bloque de Almacenamiento 1
Bloque de Almacenamiento 2
Bloque de Entrada/Salida 1
Bloque de Entrada/Salida 2
BUS
1109 - Arquitectura de computadoras -UNLAM
5
Mem CPU E/S
Bus de datos
Bus de direcciones
Bus de control
Estructura de una computadora Von Neumann
1109 - Arquitectura de computadoras -UNLAM
6
Mundo exterior
• Instrucciones y datos se almacenan en un mismo espacio de direccionamiento.• Al contenido de la memoria se accede por su dirección, sin importar el tipo de dato almacenado.• La ejecución se realiza en forma secuencial, a menos que explícitamente se altere.
Estructura de una computadora Harvard
1109 - Arquitectura de computadoras -UNLAM
8
• Utiliza buses separados para acceder a las
instrucciones y los datos.
• Distintos espacios de direccionamiento.
• Permite acceso simultáneo a instrucciones y datos.
Memoria de programa
Memoria de datos
Entrada / Salida
Unidad Aritmético-Lógica
Unidad de Control
CPU
Estructura de una computadora (microarquitectura)
Registros inaccesibles
Componentes internos
Conexiones internas
Arquitectura de programación de una computadora (ISA)
Modos de direccionamiento
Set de instrucciones
Memoria direccionable
Registros accesibles
¿Cuál es la parte visible para el programador de software de base?
Arquitectura y estructura de un sistema de computación
1109 - Arquitectura de computadoras -UNLAM
9
Arquitectura vs Microarquitectura
Arquitectura / ISA: Provee al programador un nivel de abstracción (mejor si no cambia)
• Estado visible al programador (memoria y registros)
• Operaciones (instrucciones y cómo trabajan)
• Tipos y tamaños de datos: cuántos bytes a la vez? Enteros o Punto flotante?
• Semántica de ejecución (comportamiento frente a situaciones excepcionales, ejecución de
subrutinas, etc). Cómo se manejarán, qué parte resuelve el HW y qué parte se hace por SW.
• Entrada/salida
1109 - Arquitectura de computadoras -UNLAM
10
Memoria direccionable
Modos de direccionamiento
Set de instrucciones
Registros accesibles
Arquitectura vs Microarquitectura
¿Cuál es la implementación óptima?
¡Depende del criterio!
• Reducir espacio del silicio.
• Minimizar el consumo.
• Obtener el máximo rendimiento.
• Realizar operaciones aritméticas complejas lo más rápido posible.
• Reducir el costo…
Microarquitectura es la implementación de una ISA observando métricas particulares (tradeoff).
Ejemplo• ISA: Intel x86• Microarquitectura: implementación de AMD, Intel, etc. Dentro se ven MUY diferentes, pero hacen lo mismo
1109 - Arquitectura de computadoras -UNLAM
11
Las marcas son propiedad de sus respectivos dueños
Arquitectura vs Microarquitectura: Ejemplos de Procesadores comerciales
• Set de instrucciones x86• Cuatro núcleos• 125 W• Decodifica 3 instrucciones
por ciclo por núcleo• 64 KB Caché L1 I, 64 KB
Caché L1 D• 512 KB Caché L2• Ejecución fuera de
secuencia• 2,6 GHz
• Set de instrucciones x86• Un núcleo• 2 W• Decodifica 2
instrucciones por ciclo por núcleo
• 32 KB Caché L1 I, 24 KB Caché L1 D
• 512 KB Caché L2• Ejecución en secuencia• 1,6 GHz
• Set de instrucciones Power• Ocho núcleos• 200 W• Decodifica 6 instrucciones
por ciclo por núcleo• 32 KB Caché L1 I, 32 KB
Caché L1 D• 256 KB Caché L2• Ejecución fuera de
secuencia• 4,25 GHz
AMD Phenom X4 Intel Atom IBM Power7
¿Cuáles comparten la arquitectura? ¿Cuáles comparten la microarquitectura?
1109 - Arquitectura de computadoras -UNLAM
12
• Set de instrucciones x86• Un núcleo• 2 W• Decodifica 1 instrucciones
por núcleo en varios ciclos• Sin caché• 16 bits de bus de datos• 1 MB RAM• Ejecución en secuencia• 10 MHz
Intel 8086
Las marcas son propiedad de sus respectivos dueños; imágenes cortesía de Intel, AMD e IBM
Clases de computadoras con distintos factores de diseño
CaracterísticaDispositivo móvil
personalEscritorio Servidor Cluster/warehouse Embebida
Precio del sistema (USD)
100-1.000 300-2.500 5.000-10.000.000 100.000-200.000.000
10-100.000
Precio del procesador (USD)
10-100 50-500 200-2.000 50-250 0,03-100
Aspectos críticos Costo, consumo energético, performance de medios, respuesta
Precio-performance, consumo energético, performance en gráficos
Throughput, disponibilidad, escalabilidad, consumo
Precio-performance, rendimiento, proporcionalidad del consumo energético
Precio, consumo energético, performance específica de la aplicación
Consumo (valores ilustrativos)
4.5 W 95 W 188 W 6,1 kW 1.5W
Pérdida monetaria por caída anual el 0,1% del tiempo
5 millones USD 56,5 millones USD
1109 - Arquitectura de computadoras -UNLAM
13
Fuente: HEN12 pág. 5
• Programa almacenado en memoria.• Definición de bloques funcionales.
Arquitectura de Von Neumann
CPU: Bloque de procesamiento
Bloque de almacenamiento
Bloque de entrada/salida
Programa Instrucción
Secuencia de instrucciones.
Acción que la máquina es capaz de resolver, porque
posee el hardware destinado a esa función.
Unidad de Control
Unidad aritmético
lógica
RegistrosComputadora
Datos
Código de operación
Campo de operandos
Qué acción se ejecutará con los operandos.
Cuáles son o dónde están los operandos (dirección).
Palabra de instrucción
1109 - Arquitectura de computadoras -UNLAM
14
Ejecuta las instrucciones del programa. Se divide en:
Unidad Aritmético-Lógica (ALU):
• Procesamiento de datos
Unidad de Control:
• Procesa instrucciones
• Controla el funcionamiento global del sistema
Registros de almacenamiento:
• Recurso más rápido para leer/escribir datos Primer nivel
de la jerarquía de almacenamiento.
Bloque de procesamiento (CPU)
1109 - Arquitectura de computadoras -UNLAM
15
ALU del Intel 4004Crédito: Brian & Barry Silverman
Bloque de procesamiento (CPU)
Factores de diseño:
• Eficiencia: parámetro que mide la velocidad a la que opera una computadora. P/e: Cantidad de instrucciones en
unidad de tiempo. MIPS [millones de instrucciones / segundo]; MFLOPS.
• Consumo: energía requerida para operar la computadora. Watts.
• Costo
Herramientas de comparación de sistemas de computación:
Benchmarking para escritorio: programas de procesamiento intensivo o procesamiento de gráficos intensivo;
usualmente se los modifica para minimizar el impacto de E/S en el resultado
Benchmarking para servidores: adicionalmente miden el paralelismo, actividad de E/S de almacenamiento o tráfico
de red.
Referente: SPEC (Standard Performance Evaluation Corporation). Más información: www.spec.org
1109 - Arquitectura de computadoras -UNLAM
16
¿Se pueden comparar procesadores de distinta ISA?
Bloque de almacenamiento (Memoria)
Factores de diseño:
• Capacidad de almacenamiento
• Velocidad de acceso
• Costo
• Seguridad
¡No se puede tener todo!
Jerarquía de almacenamiento
• Registros de la CPU
• Memoria caché
• Memoria principal
• Memoria secundaria
• Memoria externa
Velocidad Capacidad
Costo
Costo: Dinero/unidad de almacenamiento
P/e: [$
𝐺𝑖𝑔𝑎𝑏𝑦𝑡𝑒]
La CPU siempre accederá a los registros. Cuando un dato no
se encuentre en un nivel de la jerarquía, lo traerá del
siguiente nivel, hasta llegar a los registros.
+
-
+
- +
-
1109 - Arquitectura de computadoras -UNLAM
17
En contacto continuo con los bloques de procesamiento y entrada/salida, ya que todo dato que deba procesarse primero deberá pasar por memoria.
Bloque de Entrada/Salida
Vincula la máquina con el mundo exterior (usuario/máquina).
Se divide en:
• Dispositivos de E/S
• Dispositivos periféricos
• Almacenamiento secundario
• Interfaces de E/S
Una interfaz es un elemento presente entre el dispositivo y el bus para manejar el periférico y/o para adecuar la información de E/S a lo que necesita la CPU.
Interfaz de E/SDispositivo de
E/S
BUS
1109 - Arquitectura de computadoras -UNLAM
18
500GB Western Digital Scorpio Blue SATACrédito: Evan-AmosHybrid SSD-HDD ControllerCredito: addonics.com
Espacio de direccionamiento
La memoria principal puede ser considerada como un
vector de registros, al que accedemos indicando el
subíndice (dirección) de cada posición dentro de ella.
0
1
2
3
.
.
.
.
.
2n-2
2n-1
Memoria principal
Dirección Contenido
Decodificador
n:2n
Dirección de n bits
Bus de direcciones
Número de registroal que se quiere
acceder.
2n registros: cada registro tiene m bits.
La memoria principal almacena palabras. Una palabra es la
cantidad de bits que se pueden manejar simultáneamente.
m bits
1109 - Arquitectura de computadoras -UNLAM
19
Bus
Sistema de interconexión que transporta toda la información binaria entre los bloques funcionales.
• Bus de datos: Conjunto de líneas bidireccionales que transportan datos para los procesos de lectura (Mem o E/S → CPU) y escritura (CPU →Mem o E/S).
• Bus de direcciones: Conjunto de líneas unidireccionales que transportan direcciones de memoria, que determinarán dónde leer o escribir el dato.
• Bus de control: Las señales de control comprenden un mecanismo de comunicación y sincronización entre bloques. Por ejemplo:• Líneas de lectura/escritura (sentido de la transferencia)• Señales de sincronismo• Líneas de control• Líneas de estado
• Instrucciones• Operandos• Resultados
CPU Memoria Interfaz E/S
¿Recuerda el concepto de tercer estado?
1109 - Arquitectura de computadoras -UNLAM
20
1109 - Arquitectura de computadoras -UNLAM
21
Buses en la APPLE-1
1109 - Arquitectura de computadoras -UNLAM
22
Estructura de 3 buses vs 4 buses
Unidad de proceso
Unidad de memoria
Bus de direcciones
Bus de control
Bus de datos
Unidad de E/S
ROM
RWM
ROM
E/S
3 Buses: Entrada/Salida mapeada en memoria.
(memory mapped IO) Espacio de direccionamiento
Dirección 0
Dirección máx.
Bus de direcciones de E/S
1109 - Arquitectura de computadoras -UNLAM
23
Estructura de 3 buses vs 4 buses
Unidad de proceso
Unidad de memoria
Bus de direcciones de memoria
Bus de control
Bus de datos
Unidad de E/S
4 Buses: Entrada/Salida mapeada independiente.
(IO mapped IO)
ROM
RWM
ROM
RWM
Memoria principal
Dir max
Dirección 0
E/S
E/S
Dos espacios de direccionamiento
Dir max’
Dir 0’
La implementación real se realiza mediante una líneaIO/M en el bus de control, multiplexando así el bus
de direcciones.
Espacio de direccionamiento 3 buses
Existe un espacio de direccionamiento
independiente para E/S.
0
1
2
3
.
.
.
.
2n-1
Memoria principal
Dirección Contenido
m bits
Interfaces de E/S
0
1
2
3
.
.
.
.
2n-1
Memoria principal
Dirección Contenido
m bits
Interfaces de E/S
0
.
.
2p-1
q bits
Dirección Contenido
El espacio de direccionamientose comparte entre
MP y E/S.
1109 - Arquitectura de computadoras -UNLAM
24
…vs 4 buses
Estructura de 3 buses vs 4 buses: Comparativa
3 buses 4 buses
• No requiere instrucciones adicionales para E/S
• No requiere líneas adicionales en el Bus
• Parte del espacio de direccionamiento no se
puede emplear para almacenamiento en
memoria principal.
• Esta arquitectura permite utilizar las mismas
instrucciones para manejar registros de memoria
que interfaces de E/S
• Requiere instrucciones adicionales para las
interfaces de E/S (IN, OUT en x86 y x86-64)
• El bus de control posee una línea M/no-IO que
indica si se manejará E/S o memoria, porque la
CPU usa la misma salida para ambas señales.
Entonces cuando se usa E/S no se usa memoria, y
viceversa. (Multiplexado del bus de direcciones).
• No “sacrifica” espacio de direccionamiento de
MP para E/S.
1109 - Arquitectura de computadoras -UNLAM
25
Las marcas son propiedad de sus respectivos dueños
Relación entre registros y capacidad de direccionamiento
El tamaño de cada registro (en bits) determina el rango binario de los datos que admite almacenar.
Un registro de tamaño n (bits de datos) admite un rango de 2n valores diferentes.
Los registros relacionados al bus de direcciones determinarán la capacidad de direccionamiento de la CPU.
Espacio de direccionamiento: rango de direcciones entre los que un programador puede acceder a una palabra de
memoria. Por ejemplo para un espacio de direccionamiento de 32 bits, con una memoria estructurada en palabras
de ocho bits, un programador podrá acceder a un byte de memoria en el rango de direcciones de 0 a 232-1.
El tamaño de cada registro tiene relación directa con el bus al que está vinculado, o con el tamaño de palabra que admite la CPU.
1109 - Arquitectura de computadoras -UNLAM
26
8 bits
1111 1111
0000 0000
28 combinaciones
Rango binario:
F F
0 0
Rango hexadecimal:Ejemplo:
Clasificación de registros
Clasificación de registros
• Propósito especial o dedicados: solamente pueden ser utilizados para los fines que determinó el
diseñador de hardware. Ejemplos: registro índice, registro de instrucción, registro temporal de
dirección, registro temporal de dato, etc.
• Accesibles: el programador tiene acceso a ellos, a veces con restricciones.
1109 - Arquitectura de computadoras -UNLAM
27
Estructura de una computadora (microarquitectura)
Registros inaccesibles
Componentes internos
Conexiones internas
Arquitectura de programación
Modos de direccionamiento
Set de instrucciones
Memoria direccionable
Registros accesibles
• Inaccesibles: el
programador no tiene
acceso a estos
registros.
• Propósito general: el
programador puede
emplearlos como desee.
Ejemplos: acumuladores.
Bus sincrónico y asincrónico
En toda transferencia habrá un elemento que fije la pauta y otro que la obedezca y ejecute.
Se utilizan líneas del bus para manejar las transmisiones de datos.
Concepto: master-slave (maestro/amo-esclavo).
Master Slave
Unidad de Control ALU – MP – E/S
Bus sincrónico: como parte de la UC hay una señal de reloj, empleada para sincronizar el resto del sistema.
• Todos los componentes trabajan a la misma velocidad. Se adapta al esclavo más lento.
• Todas las operaciones se realizan en un múltiplo de ciclos de clock.
Bus asincrónico: no existe una señal de reloj o sincronismo.
• Se emplea un par de señales de diálogo (handshaking) para generar la comunicación entre maestro y esclavo.
• Una señal se origina en la Unidad de Control (maestro) y otra en el esclavo, que acusa recibo de cada transmisión.
• Cada esclavo trabaja a su máxima velocidad.
1109 - Arquitectura de computadoras -UNLAM
28
Bus sincrónico
Durante el semiciclo positivo de la señal de reloj, la UC coloca una dirección en el bus, posteriormente durante el
mismo período T1 activa las líneas MREQ y RD. La línea MREQ le indica a la memoria que se encuentra seleccionada
para una transferencia.
Generalmente el tiempo de lectura es mayor que la velocidad del bus, por lo que la lectura consume T2 y parte de T3.
Direcciones
Lectura sincrónica de memoria
Líneas de la UC al esclavo (memoria)
MREQ
RD
Datos
Tiempo
Dirección de memoria a ser leída
Datosválidos
T1 T2 T3
1109 - Arquitectura de computadoras -UNLAM
29
Esto sería el FSB (Front Side Bus)
Bus asincrónico
La UC coloca una dirección en el bus, luego activa MREQ y RD. Una vez activas estas líneas, la UC activa MSYN.
Este último evento dispara la operación de lectura, lo que da por resultado la activación por parte de la memoria de la
línea SSYN.
Direcciones
Proceso de sincronización completa o diálogo completo (full handshake). Observe que las líneas Master Sync y Slave Sync controlan la transferencia.
Líneas de la UC al esclavo (memoria)
¿Por qué no se utilizan ampliamente si son más eficientes?¿Qué cambiaría en un esquema de 3 o 4 buses?
Línea del esclavo a
la UC
MREQ
RD
MSYN
SSYN
Datos
Tiempo
Dirección de memoria a ser leída
Datosválidos
1109 - Arquitectura de computadoras -UNLAM
30
ACKQue pasa cuando no hay respuesta
Protocolo en bus sincrónico
En una máquina asincrónica no
existe una señal de reloj, por tanto
todo se rige por handshake
MSYN
SSYN
Bu
s d
e co
ntr
ol
Han
dsh
ake
de
2 lí
nea
s
Indica la recepción del dato o confirma el almacenamiento
Inicia la comunicación con el esclavo correspondiente
Búsqueda en memoria y carga en el bus de datos o almacenamiento
UC
esclavo
Indica el fin del procesoIndica a la CPU que recibió la orden
Watchdog: mide el tiempo de
respuesta del esclavo y aborta la
transferencia en caso de exceder
un límite dado (timeout)
Protocolo en bus asincrónico
Se utiliza una señal de habilitación (enable), que indica a los esclavos si deben reaccionar (o no) ante los pulsos de reloj. Esto sirve para demorar la respuesta sobre el bus cuando –por ejemplo- una instrucción en una de sus fases demora más de medio ciclo de reloj.
1109 - Arquitectura de computadoras -UNLAM
31
Unidad Central de Proceso (CPU)
La unidad central de proceso se compondrá como mínimo de una
sección de datos, formada por los registros y la unidad
aritmético-lógica (ALU) y una sección de control, que interpreta
las instrucciones y realiza las transferencias entre registros.
Internamente la CPU cuenta con buses que interconectan sus
componentes.Conceptos clave:
• Unidad de Control
• Unidad Aritmético Lógica
• Registros
• Instrucciones
1109 - Arquitectura de computadoras -UNLAM
32
Créditos por la imagen: Iaroslav Neliubov / Shutterstock
Instrucción: operación elemental que la CPU es capaz de ejecutar. La Unidad de Control (UC) contendrá la
lógica para decodificar y ejecutar cada instrucción. La UC podrá emplear la Unidad Aritmético Lógica (ALU) o la
Unidad de Punto Flotante (FPU) para su ejecución. Es una unidad indivisible de la ejecución de un programa de
bajo nivel.
Código de Operación (CodOp) Operandos
Instrucción
Formato básico de una instrucción
Cada línea de un programa de alto nivel se corresponderá con una o más instrucciones de la CPU. Cada instrucción tendrá un código de operación unívoco que la identifique.
Mnemónico, usualmente una contracción o sigla en inglés que identifica la operación.
Palabra binaria, a menudo expresada en hexadecimal por simplicidad
100110011001011101011010
0x99979997ADD
1109 - Arquitectura de computadoras -UNLAM
33
Puede dividirse en más fases según la arquitectura.
Fases de la instrucción
Búsqueda (fetch): obtiene de memoria la instrucción
completa o parte de ella (mínimo CodOp), de forma que
pueda determinar la acción a realizar, ubicación y cantidad
de los operandos, etc.
Decodificación (decode): determina cómo realizar la
indicado en el CodOp (incluyendo la obtención de
operandos, si procede)
Búsqueda de operandos: si es necesario, accede a MP y
obtiene los operandos que empleará.
Ejecución (execute): realiza la acción sobre los operandos.
Escritura de resultado en memoria (write back): si
corresponde, guarda en memoria el resultado de la acción.
Búsqueda (externo)
Decodificación (interno)
Búsqueda de operandos
(externo)
Ejecución (interno)
Escritura (externo)
1109 - Arquitectura de computadoras -UNLAM
34
Fases de la instrucción
Fases externas a la CPU: Involucran transferencias de datos mediante los buses.
Fases internas a la CPU: La CPU no utiliza los buses, pero realiza transferencias internas.
ext extint int
T→ 1 ciclo de reloj
Con el flanco positivo la CPU envía una señal por los buses para realizar un acceso a memoria
(lectura). Durante el flanco negativo de clock ya se puede leer la respuesta en el bus de datos.
𝑡𝑎𝑐𝑐𝑀𝑃 <𝑇
2
Complejidad de la instrucción
Dimensiones de los buses
Tamaño de la instrucción
Factores que inciden en el tiempo de transferencia y proceso de cada
instrucción
1109 - Arquitectura de computadoras -UNLAM
35
Ciclo de máquina y ciclo de instrucción
1109 - Arquitectura de computadoras -UNLAM
36
Al nivel más fundamental, la velocidad del procesador está determinada por la frecuencia de los pulsos del
reloj interno, medida en ciclos por segundo o Hertz (Hz).
Por ejemplo un procesador de 1 GHz recibe mil millones de pulsos por segundo.
Cada fase del ciclo de instrucción puede insumir cero, uno o varios ciclos de reloj.
Por lo tanto la ejecución de cada instrucción puede llevar desde unos pocos… ¡hasta docenas de ciclos!
El tiempo de reloj (período), medido en
segundos o submúltiplos, será la inversa de la
frecuencia, medida en Hertz o múltiplos:
𝜏 =1
𝑓
Ciclo de máquina y ciclo de instrucción
¿Cómo calculamos el tiempo de ejecución de una instrucción?
Determinando la cantidad de ciclos de reloj que insume su ejecución.
1109 - Arquitectura de computadoras -UNLAM
37
Para calcular la cantidad de ciclos que insumirá la ejecución de un programa podemos:
a. Calcular la cantidad de ciclos de cada instrucción.
Se debe conocer la cantidad de ciclos de reloj de cada fase, además del tiempo de respuesta
de la memoria, el tamaño de los buses, etc.
b. Emplear un promedio de los ciclos por instrucción (CPI).
Ciclos de máquina: tiempo que lleva cada una de las fases medido en ciclos de reloj
Ciclos de instrucción: conjunto de los ciclos de máquina; ciclos que insume la ejecución
de una instrucción
Clasificación de instrucciones
• Transferencia de datos
• Registro →Memoria; Memoria → Registro; Registro → Registro; Memoria →Memoria.
• Lógicas y aritméticas
• Suma, resta, multiplicación, AND, OR, NOT, XOR, raíz cuadrada, etc.
• Rotación y desplazamiento
• Desplazamiento lógico/aritmético izquierda/derecha, rotación izquierda/derecha, nibble shift, etc.
• Control de flujo
• Saltos condicionales, incondicionales, salto a subrutina, etc.
• Punto flotante
• Suma, resta, multiplicación, etc.
• Multimedia (Single Instruction, Multiple Data)
• Operaciones aritméticas sobre varios registros en simultáneo. Ej: Intel MMX, 3D Now!, SSE.
• Cadenas de texto
• Copia de cadenas de texto.Diferentes ISA tienen instrucciones más simples o más complejas.
Cada ISA maneja su propio lenguaje de bajo nivel, la compatibilidad entre distintas ISA es prácticamente nula.
1109 - Arquitectura de computadoras -UNLAM
38
Todas las marcas pertenecen a sus dueños
Instrucciones
Las instrucciones le indican a la UC qué hacer, brindan toda la información para que se puedan ejecutar.
La UC requiere responder:• ¿Qué debo hacer?• ¿Dónde están los operandos?• ¿Dónde dejo el resultado?• ¿Qué hago después? ¿dónde encuentro la instrucción que sigue?
Código de operación Primer Operando Segundo Operando ResultadoSiguiente
instrucción
¡Pero leer todo eso de la memoria es demasiado!
1109 - Arquitectura de computadoras -UNLAM
39
4 direcciones
Cod. Operación Primer Operando Segundo Operando Resultado Siguiente instrucción
Formato de instrucción: referencias a memoria
Podemos prescindir del campo “siguiente instrucción” incorporando un registro a la UC: el contador de programa (PC)
3 direcciones
Cod. Operación Primer Operando Segundo Operando Resultado
El resultado podría guardarse en la ubicación de alguno de los dos operandos.
2 direcciones
Cod. Operación Primer Operando Segundo Operando
Si uno de los operandos se encuentra en un registro de la CPU, podemos hacer una sola referencia a memoria
1 direcciones
Cod. Operación Primer Operando
Algunas instrucciones no requieren operandos, o bien trabajan exclusivamente sobre registros de CPU
0 direcciones
Cod. Operación
1109 - Arquitectura de computadoras -UNLAM
40
Formato de instrucción: operandos
Según el tipo de ISA podrán existir instrucciones con distinta cantidad de operandos
Cada operando puede estar en memoria o en registros de la CPU
Si todos los operandos están en memoria, el formato coincide con la página anterior
Las arquitecturas (ISA) que no admiten referencias a memoria en las instrucciones Aritmético-Lógicas se
denominan arquitecturas de carga-descarga (load-store) o registro-registro.
Las arquitecturas (ISA) que admiten múltiples operandos en memoria por instrucción Aritmético-Lógica se
denominan arquitecturas registro-memoria o memoria-memoria, según tengan una o más referencias a
operandos en memoria por instrucción.
Cantidad de direcciones de memoria
Cantidad máxima de operandos permitida
Tipo de arquitectura Ejemplos
0 3 Load-store Alpha, ARM, MIPS, PowerPC, SPARC
1 2 Registro-memoria / Acumulador
IBM 360/370, Intel 80x86, Motorola 68000
2 2 Memoria-memoria VAX
3 3 Memoria-memoria VAX
1109 - Arquitectura de computadoras -UNLAM
41
Todas las marcas pertenecen a sus dueños
Decodificador de instrucciones
IRUC
ALU
MBR
PC
MAR
TARH L
Bus de direcciones
Bus de datos
f(x)
bus interno
Base
Esquema interno de una CPU simple
Bu
s d
e co
ntr
ol
1109 - Arquitectura de computadoras -UNLAM
42
A (8) B (8)
bus interno
RTR (8)
CCR (8)
Sincronismo y señalización
del bus
Secuenciador
Secuenciador: Circuito secuencial. Posee el microprograma con los pasos a seguir para ejecutar cada instrucción. Este puede almacenarse como:• electrónica discreta (hardwired) que significa que
agregar instrucciones conlleva aumentar el tamaño del silicio que compone el secuenciador;
• electrónica programada, en una memoria ROM interna (microprograma).
Se conecta a todos los componentes internos de la CPU con señales se sincronización y control/habilitación.
La unidad de control es la responsable de la ejecución del programa almacenado en memoria. Procesa instrucciones, supervisa, sincroniza y coordina todo el sistema.
Instruction Register (IR): Registro dedicado inaccesible. Almacena el código de operación de la instrucción en ejecución proveniente de la memoria (en la fase de búsqueda o fetch).
Unidad de Control
Búsqueda
Decodificación
EjecuciónDecodificador: Circuito combinatorio. Interpreta el código de operación de la instrucción y selecciona la función a ejecutar en el secuenciador. Determina la operación y cuántos son y dónde residen los operandos.
1109 - Arquitectura de computadoras -UNLAM
43
¡El microcódigo se puede actualizar!
El sistema operativo puede ocuparse
de actualizar el firmware de la CPU.
Unidad de Control
1109 - Arquitectura de computadoras -UNLAM
44
Créditos: https://www.instructables.com/id/Build-a-Programmable-Mechanical-Music-Box/
https://www.bleepingcomputer.com/news/microsoft/new-intel-microcodes-for-windows-10-released-to-fix-cpu-bugs/
Los registros constituyen el almacenamiento más cercano a la CPU proporcionando la mayor velocidad de
acceso. Pueden verse como una memoria pequeña y rápida, que se utiliza para el almacenamiento
temporario durante las operaciones de cálculo, separada de la memoria principal.
Cada registro tendrá un nombre que lo identifique, el “register file” es el conjunto de los registros de la CPU.
Registros
1109 - Arquitectura de computadoras -UNLAM
45
Créditos por la imagen: FLO06 página 553
Registros: interior de un registro carga paralelo-salida paralelo de 8 bits
1109 - Arquitectura de computadoras -UNLAM
46
D Q
Q
D Q
Q
D Q
Q
D Q
Q
D Q
Q
D Q
Q
D Q
Q
D Q
Q
𝑋7𝑡0 𝑋6𝑡0 𝑋5𝑡0 𝑋4𝑡0 𝑋3𝑡0 𝑋2𝑡0 𝑋1𝑡0 𝑋0𝑡0
𝑋7𝑡1 𝑋6𝑡1 𝑋5𝑡1 𝑋4𝑡1 𝑋3𝑡1 𝑋2𝑡1 𝑋1𝑡1 𝑋0𝑡1
Ck
D
Clock
Q
Q
Detalle de un Flip Flop tipo D
Registro: Circuito secuencial
formados por un conjunto de flip-
flops utilizado principalmente para
almacenar y desplazar datos
binarios que introduce en él una
fuente externa.
Ante la señal RESET toma el valor máximo admisible (entero sin signo –ancho bus de direcciones)
(En algunas arquitecturas: 6800, x86)
Program Counter: Registro dedicado asociado a la UC que contendrá la dirección (o parte de ella)del último acceso a memoria. Cumple la función de un puntero a la memoria principal. Tambiénllamado Instruction Pointer (IP). Es accesible con limitaciones, ya que el programador lo puedealterar mediante instrucciones de salto o similares. La limitación está dada por el hecho de que elprogramador puede modificar el registro pero no leerlo.
Unidad de Control: Registros asociados
Program CounterAdmite la operación de incremento (contador progresivo)PC <- PC + 1
Admite la carga de un nuevo valor, en una instrucción de salto (jump)PC <- Valor
Se copia al M.A.R. para una nueva fase de búsqueda
Se utiliza como base para saltos relativos (branch)
PC <- PC +/- Valor
1109 - Arquitectura de computadoras -UNLAM
47
Todas las marcas pertenecen a sus dueños
Memory Address Register (M.A.R.): Registro dedicado inaccesible asociado a la UC cuyotamaño corresponde con el ancho del bus de direcciones. Es el nexo (buffer) entre la CPU y elbus de direcciones. Cada acceso a memoria principal consiste en la acción coordinada decolocar la dirección a leer en el MAR y enviar una señal de lectura/escritura por el bus decontrol hacia la memoria.
Unidad de Control: Registros asociados
Memory Buffer/Data Register (M.B.R. / M.D.R.): Registro bidireccional dedicado inaccesibleasociado a la UC cuyo tamaño corresponde con el ancho del bus de datos. Es el nexo (buffer)entre la CPU y el bus de datos. Cuando la CPU lee la memoria principal recibe en el MBR larespuesta de MP. Cuando la CPU escribe la memoria principal, coloca en el MBR el valor aescribir.
Acceso a memoria principal
Lectura Escritura
1. Bus de direcciones MAR Registro P/e PC 1. Bus de direcciones MAR Registro P/e Índice
2. Bus de control READ 2. Bus de datos MBR Registro P/e Acc A
3. Bus de datos MBR → Destino P/e IR 3. Bus de control WRITE
El uso coordinado de ambos registros permite el acceso a MP.
Si se utilizó el PC, inmediatamente se incrementa (PC PC+1)
1109 - Arquitectura de computadoras -UNLAM
48
Temporal Address Register (T.A.R.) / Registro Temporal de Direcciones: Registro dedicado inaccesible asociado a la UC cuyo tamaño corresponde con el ancho del bus de direcciones. En caso de que la UC deba formar una dirección de MP por partes (mínimo 2, High y Low), emplea este registro para guardar temporalmente las mismas. Ejemplo: Se debe leer de MP una dirección de 32 bits pero el bus de datos es de 16 bits. En ese caso la CPU debe realizar dos accesos a memoria, trayendo en cada uno la mitad de la dirección, que se formará en el TAR.Su valor puede volver a emplearse en una fase de instrucción posterior.
Unidad de Control: Registros asociados
Registro base: Registro dedicado accesible asociado a la UC empleado para determinado modo de direccionamiento. Existen distintos registros que cumplen un papel fundamental en los modos de direccionamiento que admita una CPU, tales como registros de segmento, índice, de página, etc. Usualmente tienen el tamaño del bus de direcciones.
Stack pointer (S.P.): Registro dedicado accesible asociado a la UC, cuyo tamaño corresponde con el ancho del bus de direcciones, empleado para manejar una porción de la memoria principal aleatoria de forma secuencial (L.I.F.O.).
1109 - Arquitectura de computadoras -UNLAM
49
Unidad aritmético lógica
Unidad de lógica combinacional que implementa una variedad de operaciones binarias. La operación que realizará y los registros que empleará para ello son determinados por la unidad de control.
La ALU admite desde funciones aritméticas y lógicas básicas como sumas, restas, AND, OR, XOR, etc., hasta operaciones complejas en CPUs avanzados o especializados, como cálculos para encriptación, hashing, etc.
Se puede implementar sin un register file, solo
con registros acumuladores.También puede
emplearse un registro temporal de resultado
Registros(register
file)
Unidad de control
Selección de
registros
Selección de función
Del bus de datosRegistro de entrada 1 (origen)
Registro de entrada 2(origen)
Al Bus de datos
Al Bus de direcciones
Registro de salida (destino)
EstadoALU
La ALU puede admitir operaciones en punto flotante, o bien puede la CPU tener una unidad independiente dedicada para ello.
1109 - Arquitectura de computadoras -UNLAM
50
Palabra de estado
HHALF /
AUXILIAR
CARRY
NNEGATIVE
ZZERO
VOVERFLOW
CCARRY
/BORROW
PPARITY
Palabra binaria almacenada en un registro relacionado con la ALU, compuesta por banderas que:
1. Se actualizan en cada operación aritmético-lógica, entre otras.
2. Habilitan o deshabilitan la atención de interrupciones.
3. Determinan el modo de operación del procesador.
4. Facilitan operaciones de DEPURACIÓN (debugging) de bajo nivel.
CCR = Condition Code Register (Motorola)PSW = Program Status Word (IBM 360/370)FLAGS, EFLAGS, RFLAGS (Intel en 16, 32 y 64 bits)CPSR = Current Program Status Register (ARM)GSR/PSR = General / Processor Status Register(SPARC)MIPS, Alpha no cuentan con un registro dedicado
Los de tipos 2, 3 y 4 son específicos de la arquitectura
En algunas arquitecturas hay una palabra de estado
específica para la unidad de PF, o una palabra de estado
específica por proceso en ejecución.
Tipo 1: En cada arquitectura pueden tener una distinta denominación o incluso alguno no estar presente.
1109 - Arquitectura de computadoras -UNLAM
51
Palabra de estado
N NEGATIVE. Si el resultado de la última operación aritmética fue negativo, este flag toma el valor
“1”. Cuando se realiza una carga de registro, puede copiar también del valor cargado el MSB.
Z ZERO. Si el resultado de la última operación aritmética fue cero, este flag toma el valor “1”.
Cuando se realiza una carga de registro, puede ponerse en “1” si el valor cargado es cero.
V OVERFLOW. Toma el valor “1” cuando se realiza una suma entre dos números de mismo signo
(MSB) pero el resultado tiene el signo (MSB) opuesto. Si se restan dos números en Cb, y sus signos
son distintos, ocurrirá overflow si y solo si el resultado tiene el mismo signo que el sustraendo.
C CARRY /BORROW. Si en una suma se produce acarreo, este flag toma el valor “1”. Si en una resta
se pide prestado, también.
H HALF / AUXILIAR CARRY. Si en una suma se produce acarreo entre el primer y segundo nibble de
un byte, este flag toma el valor “1”. Resulta de utilidad para la corrección en operaciones con BCD.
P PARITY. Toma el valor “1” si el resultado de la última operación tiene una cantidad impar de unos.
¿Cómo se interpreta cada bit (o flag) de la palabra de estado?
Se usan como elementos de análisis para la toma de decisiones. No se considera parte del register file, dado que se evalúa por bit.
1109 - Arquitectura de computadoras -UNLAM
52
¿De donde vienen los operandos y a dónde van los resultados? Arquitectura orientada a la pila (stack)
Clasificación de arquitecturas
…
…
MemoriaProcesador
ALU
TOS Las flechas indican si el operando es una entrada, salida o ambos para la ALU. En gris claro se indica la entrada, y el gris oscuro el resultado.
El registro TOS (Top of Stack) apunta al primer operando en la pila, el que se combina con el que esté a
continuación. El primer operando se retira de la pila, el resultado reemplaza al segundo operando y se
actualiza el TOS para que apunte a este último. Todos los operandos son implícitos. Se utilizan instrucciones
específicas para agregar y quitar elementos de la pila, transfiriendo desde o hacia la memoria.
Implementaciones comerciales: HP 3000, Burrough’s B5000 y B6700, Symbolics 3600, Forth machines, Java Virtual Machine, Intel x87 FPU
1109 - Arquitectura de computadoras -UNLAM
53
Todas las marcas pertenecen a sus dueños
Arquitectura orientada a la pila (stack) ¿Cómo funciona?
Clasificación de arquitecturas
Evaluación de expresiones. Ejemplo: (a + b * c) / (a + d * c – e)
/
-+
+
*
*a
b c a
d c
e
Polaca inversa (posfijo):
Stack
a b c * + a d c * + e - /
push a
Operandos se apilan,
operadores desapilamos.
a
b
push bpush c
c
multiplicar
b * c
sumar
*
+a + b *c
La pila forma parte del estado del procesador, es pequeña
(a la cantidad de registros) y por lo tanto está limitada.
Conceptualmente una pila no está limitada, por lo que una
parte queda en registros y el resto se mantiene en MP
1109 - Arquitectura de computadoras -UNLAM
54
¿De donde vienen los operandos y a dónde van los resultados? Arquitectura memoria-memoria
Clasificación de arquitecturas
…
…
MemoriaProcesador
Las flechas indican si el
operando es una entrada,
salida o ambos para la ALU.
En gris claro se indica la
entrada, y el gris oscuro el
resultado.
Todos los operandos y resultados se leen y guardan directamente desde memoria. Requiere menos instrucciones, pero la memoria se vuelve un cuello de botella.
Implementaciones comerciales: Vax
ALU
1109 - Arquitectura de computadoras -UNLAM
55
Todas las marcas pertenecen a sus dueños
¿De donde vienen los operandos y a dónde van los resultados? Arquitectura orientada al acumulador
Clasificación de arquitecturas
…
…
MemoriaProcesador
ALU
Las flechas indican si el
operando es una entrada,
salida o ambos para la ALU.
En gris claro se indica la
entrada, y el gris oscuro el
resultado.
El acumulador es una entrada implícita de operando y a la vez el destino del resultado.
Implementaciones comerciales: Motorola 68XX
1109 - Arquitectura de computadoras -UNLAM
56
Todas las marcas pertenecen a sus dueños
¿De donde vienen los operandos y a dónde van los resultados? Arquitectura registro-memoria
Clasificación de arquitecturas
…
…
MemoriaProcesador
Las flechas indican si el
operando es una entrada,
salida o ambos para la ALU.
En gris claro se indica la
entrada, y el gris oscuro el
resultado.
Un operando está en registro y el otro en memoria, el resultado se almacena en un registro.
Implementaciones comerciales: IBM 360, Intel x86
ALU
1109 - Arquitectura de computadoras -UNLAM
57
Todas las marcas pertenecen a sus dueños
¿De donde vienen los operandos y a dónde van los resultados? Arquitectura registro-registro o load-store
Clasificación de arquitecturas
…
…
MemoriaProcesador
Las flechas indican si el
operando es una entrada,
salida o ambos para la ALU.
En gris claro se indica la
entrada, y el gris oscuro el
resultado.
Los dos operandos se encuentran en registros, el resultado se almacena también en un registro.
Se utilizan instrucciones específicas para la transferencia memoria → registro →memoria.
Todas las ISA posteriores a 1980 son de esta clase.
Implementaciones comerciales: Alpha, ARM, MIPS, SPARC
ALU
1109 - Arquitectura de computadoras -UNLAM
58
Todas las marcas pertenecen a sus dueños
Clasificación de arquitecturas
¿Cómo se resuelve la operación C = A + B en cada una de las cuatro arquitecturas mencionadas?
Stack Acumulador Registro – memoria Registro – registro Memoria-memoria
push Apush Baddpop C
load Aadd Bstore C
load R1, Aadd R1, Bstore C, R1
load R1, Aload R2, Badd R3, R1, R2store C, R3
add C, A, B
1109 - Arquitectura de computadoras -UNLAM
59
ALU
TOS
ALUALUALU ALU
Ejercicio
Cómo podría evaluar la sentencia A = B x C + D considerando arquitecturas de:
• Una dirección
• Dos direcciones
• Tres direcciones
La arquitectura en cuestión emplea las instrucciones load, mult, add y store para realizar las
operaciones. Considere que la referencia a la variable A significa “el operando cuya dirección es A”.
1109 - Arquitectura de computadoras -UNLAM
60
Bibliotecas(objeto)
Fuente alto nivel
Programa en LENGUAJE
ensamblador
Binario ejecutable
Binario (objeto)
Programación en bajo nivel
Compilador Ensamblador
Link-editor
Compilador: programa de computadora que transforma
programas escritos en un lenguaje de alto nivel en
lenguaje máquina. Son específicos para cada
procesador/sistema operativo o máquina virtual.
Ensamblador: programa de computadora que
transforma programas escritos en el lenguaje máquina
específico de una arquitectura al programa en binario
ejecutable.
Lenguajes de programación
Alto nivel: independiente del hardware o plataforma, cercano al problema.
Bajo nivel: específico y dependiente del Hardware donde se ejecutará el programa.
1109 - Arquitectura de computadoras -UNLAM
61
Pila (stack)
La pila (stack) es un área de memoria principal a la que se accede en forma secuencial (LIFO). Dicho acceso facilita
el recorrido de la pila utilizando solamente un puntero (P/e SP: stack pointer o SS: stack segment) a tal fin. El
puntero contendrá el valor de la siguiente posición de memoria disponible de la pila. El valor del puntero se
decrementa conforme se “apilan” datos.
Se utilizan instrucciones específicas para almacenar datos en la pila (push) y extraer datos de la pila (pop/pull).
Estas instrucciones guardan un dato de un registro en la pila o extraen un dato de la pila copiándolo en un registro.
Siempre incrementan o decrementan el puntero, según corresponda.
Usos de la pila• Guardar la dirección de retorno (valor del
PC) al realizar un llamado a subrutina.• Pasaje de parámetros a una subrutina.• Guardar el estado funcional del
procesador durante la atención de una interrupción.
La pila aumenta y disminuye de tamaño según resulta necesario. Esto admite la posibilidad de encadenar llamados a subrutinas sin tener que declarar el tamaño de la pila. También significa que debe controlarse que el área de pila no crezca tanto que invada memoria de otros procesos.
Pila vacía Push Push Pull/Pop
A A
2
ASP
1109 - Arquitectura de computadoras -UNLAM
62
Todas las marcas pertenecen a sus dueños.
Subrutina
Conocida a veces como función o procedimiento, es un programa o secuencia de instrucciones a la que se invoca
como si se tratara de una única instrucción.
Cuando un programa “llama” (Call en Intel) a una subrutina (JSR: Jump to SubRoutine en Motorola), se transfiere el
control del programa a la subrutina, la que ejecuta la secuencia de instrucciones requerida, tras lo cual vuelve a la
posición inmediatamente siguiente a la que generó el llamado.
Convenciones de llamadas a subrutinas (pasaje de parámetros):
• colocar los argumentos en registros
• crear una zona de transferencia de datos – la que se entrega a la rutina invocada en un registro predeterminado-
• utilizando una pila. Al llamar a una rutina se colocan sus argumentos (o punteros a ellos) en la pila (push). La
rutina llamada tomará los argumentos de la pila y allí mismo dejará cualquier valor de retorno. La ventaja de
usar la pila en este caso es que el manejo de llamados anidados se mantiene simple.
Al llamar a una subrutina:1. Se cargan los argumentos en registro/pila2. Se resguarda el PC 3. Se carga el PC con la dirección de inicio de la subrutina4. Se ejecuta la subrutina.5. Se utilizan los argumentos en registro/pila y se guarda allí mismo
el valor de retorno.6. Al finalizar, se vuelve a cargar el PC con el valor que tenía.
Las operaciones sobre el PC se realizan de forma indirecta
mediante instrucciones específicas.
1109 - Arquitectura de computadoras -UNLAM
63
Todas las marcas pertenecen a sus dueños
Subrutinas
Programa principal
0x00 .
0x01 .
0x02 .
0x03 Call subrutina A
0x04 Siguiente instrucción
0x05 .
. .
0x15 Call subrutina B
0x16 Siguiente instrucción
0x17 .
. .
Subrutina A
0x54 Primera instrucción
0x55 .
. .
0x58
. .
. .
0x5E Retorno
Subrutina B
0x84 Primera instrucción
0x85 .
. .
. .
. .
0x8B Retorno
Call subrutina B
Aunque se grafican por separado, las tres
porciones de programa se ubican
en memoria principal.
1109 - Arquitectura de computadoras -UNLAM
64
¿Qué ocurre con el PC y la pila durante los llamados?
0x59 Siguiente instrucción
Microprocesador vs Microcontrolador
Un Circuito Integrado (CI) o circuito integrado monolítico (también chip o microchip) es un conjunto de circuitos
electrónicos en una pequeña pieza (chip) de material semiconductor.
Microprocesador: Unidad Central de Proceso (CPU) de un sistema de computación. Actualmente puede poseer
varios núcleos internamente, por lo que un mismo CI cuenta con varios CPU. Este CI se complementa con
bancos de memoria e interfaces de E/S para constituir una computadora.
Microcontrolador: Sistema de computación completo en un mismo CI. Contiene tanto una CPU como memoria
(ROM/RWM) e interfaces de E/S en un mismo circuito integrado. Usualmente incluyen como parte de las
interfaces de E/S conversores analógico-digital.
Los microcontroladores se emplean en dispositivos computarizados cuya configuración de hardware no se alterará
durante su vida útil. El software que ejecuta, al que se denomina firmware, normalmente reside en memoria de
solo lectura (ROM) y rara vez se altera.
La capacidad de procesamiento
de los microcontroladores se
ajustan a las exigencias del
sistema que integran para
optimizar los costos de
producción.
Intel Quark D1000: 32 MHz clock, 32 KB instrucciones, 4 KB datos, 8 KB SRAM (2015) en 36 mm2 por menos de 3 USD
1109 - Arquitectura de computadoras -UNLAM
65
Créditos por la imagen: AVNET. Todas las marcas pertenecen a sus dueños
El dato más pequeño que puede direccionarse en una computadora es el byte. Las palabras de más de un byte se
almacenan como secuencias de bytes, donde la dirección de la palabra multi-byte es la misma que la del byte
que tiene la dirección más baja.
Cuando se utilizan dichas palabras multi byte existen dos alternativas en cuanto al orden en que los bytes se
almacenarán en memoria:
Big endian: IBM System/370, Motorola 680x0, SPARC, mayoría de RISCLittle endian: DEC VAX, Intel x86Admiten ambos: ARM, PowerPC, MIPS
Byte ordering: Big endian vs Little endian
Memoria principal
FFFF …
FFFE …
FFFD …
0002 …
0001 …
0000 …Direcciones
“bajas”
Direcciones“altas”
Por convención se llama direcciones “bajas” a
aquellas más próximas al comienzo del espacio de
direccionamiento (sin importar cómo
representemos gráficamente la memoria).
• el byte más significativo en la dirección más baja (big endian)
• el byte menos significativo en la dirección más baja (little endian).
1109 - Arquitectura de computadoras -UNLAM
66
Las marcas son propiedad de sus respectivos dueños
7 6 5 4 3 2 1 07 6 5 4 3 2 1 07 6 5 4 3 2 1 07 6 5 4 3 2 1 0
7 6 5 4 3 2 1 07 6 5 4 3 2 1 07 6 5 4 3 2 1 07 6 5 4 3 2 1 0
El ordenamiento que asigna la dirección (dir) más baja al byte más significativo del escalar (el de más a la izquierda),
la siguiente dirección (dir+1) a los siguientes 8 bits de mayor orden, y así. Se llama “Big endian” porque el byte más
significativo se almacena en la dirección más baja.
El ordenamiento que asigna la dirección (dir) más baja al byte menos significativo del escalar (el de más a la
derecha), la siguiente dirección (dir+1) a los siguientes 8 bits de menor orden, y así. Se llama “Little endian” porque
el byte menos significativo se almacena en la dirección más baja.
dir dir+1
MSB LSB
dir+2 dir+3
byte dir+3
dir+2
dir+1
dir
MSB LSB
dir+3 dir+2 dir+1 dir
byte dir+3
dir+2
dir+1
dir
Byte ordering: Big endian vs Little endian
LSB
MSB
LSB
MSB
1109 - Arquitectura de computadoras -UNLAM
67
Byte ordering: ejemplo
Dado que en occidente contamos de izquierda a derecha, las direcciones de memoria se suelen presenter en ese mismo orden. ¿Cómo se vería el número hexadecimal 0x20110626 almacenado en la dirección FA01BE00?
2 0 1 1 0 6 2 6
0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 1 1 0
FA01BE00 FA01BE01 FA01BE02 FA01BE03
2 6 0 6 1 1 2 0
0 0 1 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0
FA01BE00 FA01BE01 FA01BE02 FA01BE03
dir+3
dir+2
dir+1
dir
LSB
MSB
dir+3
dir+2
dir+1
dir LSB
MSB
¿Cómo se vería una cadena de texto que se lee de memoria a registro?
1109 - Arquitectura de computadoras -UNLAM
68
Tamaño de instrucción fijo vs tamaño variable
Tamaño fijo: todas las instrucciones tienen el mismo tamaño.
• Decodificación más sencilla, facilita pipelining.
• Típico de arquitecturas RISC: ARM, MIPS, PowerPC, SPARC.
Tamaño variable: las instrucciones varían en tamaño
• Ocupan menos espacio en memoria y en cache
• Típico de arquitecturas CISC: IBM 360, Intel x86, Motorola 68k, VAX.
• Intel x86 (IA-32) admite instrucciones de entre 1 y 18 bytes de largo.
Mayormente fija o comprimida
• Almacenan instrucciones comprimidas y las descomprimen en la cache de instrucciones.
• Ejemplos: MIPS16, THUMB
Palabra de instrucción larga
• Múltiples instrucciones en un lote de ancho fijo (BULK).
• Procesadores VLIW: Itanium, Transmeta Crusoe, RISC-V
• P/e IA-64 EPIC: lotes de 128 bits con tres instrucciones por lote. Procesa dos lotes a la vez.
1109 - Arquitectura de computadoras -UNLAM
69
Todas las marcas pertenecen a sus dueños
Tipos y tamaños de operandos
Tipos
• Entero binario
• Decimal codificado en binario (BCD)
• Punto flotante
• IEEE 754
• Cray Floating Point
• Intel Extended Precision (80-bit)
• Packed Vector Data
• Direcciones
Tamaño
• 8 bits: carácter ASCII, entero
• 16 bits: carácter UNICODE, half word
• 32 bits: word
• 64 bits: double word
• Punto flotante (32 bits, 40 bits, 64 bits, 80 bits, 128 bits)
• Direcciones (16, 24, 32, 48, 64 bits)
Cada arquitectura define los tipos y tamaño de datos que admite.
1109 - Arquitectura de computadoras -UNLAM
70
Las marcas son propiedad de sus respectivos dueños
Alineación del byte (byte alignment)
La mayoría de las computadoras permiten direccionar al byte, sin embargo en cada acceso a memoria se pueden
solicitar operandos de distintos tamaños:
• Byte (8 bits)
• Half word (16 bits)
• Word (32 bits)
• Double Word (64 bits)
Supongamos una computadora con un bus de datos de 64 bits. ¿Qué ocurre si se almacena una palabra de 64 bits en una dirección que no es múltiplo de 8?
Se requerirá más de un acceso a memoria para traer el operandoIntel x86-64 recomienda hacer accesos alineados para mejorar la performance.
¡Pero en cada acceso a memoria se obtendrá la cantidad de bits del ancho del bus de datos!
1109 - Arquitectura de computadoras -UNLAM
71
Las marcas son propiedad de sus respectivos dueños
C/C++: El compilador respetará el orden de los elementos de la estructura tal como se declararon, pudiendo
inserter relleno (padding) para alinearlo. La estructura completa también puede alinearse utilizando relleno.
Por lo tanto si se declaran las variables en orden de mayor a menor tamaño, el compilador puede que utilice
menos relleno, ahorrando memoria.
Alineación del byte (byte alignment)
1109 - Arquitectura de computadoras -UNLAM
72
Valor de los 3 bits menos significativos de la dirección del byte
Ancho del objeto 0 1 2 3 4 5 6 7
1 byte (byte) Alineado Alineado Alineado Alineado Alineado Alineado Alineado Alineado
2 bytes (half word) Alineado Alineado Alineado Alineado
2 bytes (half word) No alineado No alineado No alineado No alineado
4 bytes (word) Alineado Alineado
4 bytes (word) No alineado No alineado
4 bytes (word) No alineado No alineado
4 bytes (word) No alineado No alineado
8 bytes (double word) Alineado
8 bytes (double word) No alineado
8 bytes (double word) No alineado
8 bytes (double word) No alineado
8 bytes (double word) No alineado
8 bytes (double word) No alineado
8 bytes (double word) No alineado
8 bytes (double word) No alineadoMIPS y ARM requieren accesos alineados. 80x86 no lo exige, pero si los operandos están
alineados opera más rápido.
Las marcas son propiedad de sus respectivos dueños
RISC vs CISC: principales características
RISC
• Instrucciones de longitud fija (fixed withd)
• Decodificación más simple
• Facilitan la implementación de pipelining
• Instrucciones menos complejas
• Más instrucciones por programa
• Ejemplos: MIPS (4 bytes c/u), PowerPC, SPARC, ARM.
CISC
• Instrucciones de longitud variable
• Ocupan menos espacio en memoria principal y caché
• Instrucciones más complejas
• Menos instrucciones por programa
• Ejemplos: IBM 360, Motorola 68k, VAX, x86 (de 1 a 18 bytes c/u)
1109 - Arquitectura de computadoras -UNLAM
74
Las marcas son propiedad de sus respectivos dueños
Características de algunas arquitecturas difundidas
Arquitectura Tipo Operandos Ref. memoria Datos RegistrosAncho
direccionesUso
Alpha Reg-Reg 3 0 64 bit 32 64 bit Workstation
ARM Reg-Reg 3 0 32/64 bit 16 32/64 bit Smartphones, embebidos
MIPS Reg-Reg 3 0 32/64 bit 32 32/64 bit Workstation, embebidos
SPARC Reg-Reg 3 0 32/64 bit 24-32 32/64 bit Workstation
TI 6000 Reg-Reg 3 0 32 bit 32 32 bit DSP
IBM 360 Reg-Mem 2 1 32 bit 16 24/31/64 Mainframe
X86 Reg-Mem 2 1 8/16/32/64 4/8/24 16/32/64 bit PC
VAX Mem-Mem 3 3 32 bit 16 32 bit Minicomp.
Motorola 6800 Acum. 1 1/2 8 bit 0 16 bit Microcont.
1109 - Arquitectura de computadoras -UNLAM
75
Las marcas son propiedad de sus respectivos dueños
Bibiliografía
MUR00 Murdocca-Heuring. Principios de arquitectura de computadoras. Pearson Editores, 2000. ISBN 987-9460-69-3
FLO06 Thomas Floyd. Fundamentos de sistemas digitales. Pearson Educación, 2006 ISBN 978-84-832-2720-6
WEN David Wentzlaff. Computer Architecture ELE 475: Introduction and Instruction Set Architectures, Department of
Electrical Engineering, Princeton University
STA16 William Stallings. Organización y arquitectura de computadoras, Diseño para performance.
10ma edición inglés, Pearson, 2016, ISBN 978-0-13-410161-3
HEN12 Hennessy-Patterson. Arquitectura de computadoras, un enfoque cuantitativo. Morgan Kaufmann, 2012, 5ta edición
inglés, ISBN 978-0-12-383872-8
BREY06 Barry B. Brey, Microprocesadores Intel, Séptima edición. Pearson Educación, 2006, ISBN 970-26-0804-X
STA05 William Stallings, Organización y arquitectura de computadoras, séptima edición. Pearson Educación, 2005, ISBN 978-
84-832-2858-6
1109 - Arquitectura de computadoras -UNLAM
80