sub 1 ensamble y desensamble del equipo de computo
Arquitectura de-computadores
1. Carmelo Cuenca Hernández y Francisca Quintana Domínguez
FUNDAMENTOS DE COMPUTADORES
CURSO 2005/2006
1.PROYECTO DOCENTE
2.TRANSPARENCIAS DEL CURSO
3.GUIONES DE PRÁCTICAS
4.COLECCIÓN DE PROBLEMAS DE
EXÁMENES
2. 13877 - FUNDAMENTOS DE
COMPUTADORES
PROYECTO DOCENTE CURSO: 2005/06
ASIGNATURA: 13877 - FUNDAMENTOS DE COMPUTADORES
CENTRO: Escuela Universitaria Informática
TITULACIÓN: Ingeniero Técnico en Informática de Sistemas
DEPARTAMENTO: INFORMÁTICA Y SISTEMAS
ÁREA: Arquitectura Y Tecnología de Computadores
PLAN: 11 - Año 2000 ESPECIALIDAD:
CURSO: Primer curso IMPARTIDA: Segundo cuatrimestre TIPO: Obligatoria
CRÉDITOS: 4,5 TEÓRICOS: 3 PRÁCTICOS: 1,5
Descriptores B.O.E.
Organización básica de los computadores: elementos básicos; esquemas de funcionamiento,
desripción de una máquina básica, programación.
Temario
1 Arquitectura de un computador y jerarquía de niveles (3horas)
2 Arquitectura del nivel lenguaje máquina (10 horas)
2.1 Características generales del lenguaje máquina (3 horas)
2.2 Tipos de operandos e instrucciones (2 horas)
2.3 Modos de direccionamiento y formato de las instrucciones (2 horas)
2.4 Subrutinas (3 horas)
3 Diseño del procesador (15 horas)
3.1 Diseño y control cableado de un camino de datos monociclo (4 horas)
3.2 Diseño y control cableado de un camino de datos multiciclo ( 8 horas)
3.3 Diseño y control microprogramado de un camino de datos multiciclo (3 horas)
4 Rendimiento ( 2 horas)
Conocimientos Previos a Valorar
Los alumnos deberían haber cursado y aprobado la signatura de Sistemas Digitales, donde
adquirirían los conocimientos acerca de los sistemas de numeración y representación de la
información más usuales, el álgebra de Boole y su aplicación para simplificación de funciones
booleanas, las técnicas de implementación de circuitos combinacionales simples, los fundamentos
y componentes básicos de los sistemas secuenciales para desarrollar sistemas secuenciales
síncronos.
También son necesarios algunos conocimientos básicos de programación en algún lenguaje de alto
nivel para saber diseñar programas sencillos, y representar esos algoritmos en pseudocódigo,
diagramas de flujo o algún método equivalente.
Objetivos Didácticos
Fundamentos de Computadores es la asignatura que presenta los componentes de un computador y
la organización de estos componentes para proporcionar, de una manera eficiente, las funciones
necesarias para poder ejecutar programas.
Página 1
3. Obtener una visión general de la jerarquía de niveles de un computador.
Saber diferenciar entre los conceptos de estructura y arquitectura de un computador.
Conocer y comprender las características más importante de la arquitectura y estructura de un
computador.
Conocer y comprender los elementos básicos de la arquitectura del repertorio de instrucciones.
Dominar la programación en lenguaje ensamblador de algún procesador como, por ejemplo, el
MIPS R2000.
Conocer y comprender los elementos estructurales del procesador para la ejecución de las
instrucciones.
Conocer los principios básicos y métodos de diseño de unidades de control cableadas y
microprogramadas.
Evaluar las alternativas de diseño, así como el rendimiento de computadores.
Metodología de la Asignatura
La metodología docente a utilizar durante la impartición de la asignatura incluye los siguientes
procedimientos:
•Clases magistrales.
•Clases prácticas en el laboratorio.
•Resolución de problemas.
•Tutorías.
Evaluación
La nota final de la asignatura será el resultado de la ponderación entre la nota de teoría y la nota de
las prácticas de laboratorio. Para aprobar la asignatura es preciso haber superado ambas partes con
una nota mayor o igual a 5 puntos. La nota de teoría tendrá un peso de un 70% sobre la nota final
y la nota de prácticas de laboratorio un 30%.
La nota de teoría y de prácticas de laboratorio se obtendrá a partir de los exámenes de convocatoria
de la asignatura, uno para teoría y otro para práctica, en la fecha que el Centro fije para ello.
Así para calcular la nota final se utilizará la siguiente fórmula:
NF = 0.7 NT +0.3 NP (siempre que NT>=5 y NP>=5)
donde NF es la nota final, NT es la nota de teoría y NP es la nota de prácticas de laboratorio.
Descripción de las Prácticas
Práctica nº 1
DescripciónEl simulador PCspim.
ObjetivosFamiliarización con la herramienta para las prácticas de la asignatura.
Material de laboratorio recomendadoOrdenador personal. Windows.
Simulador Pcspim
Nº horas estimadas en Laboratorio2Nº horas total estimadas para la realización de la práctica2
Práctica nº 2
DescripciónLos datos en memoria
ObjetivosAdquirir soltura en cómo están ubicados los datos en memoria
Material de laboratorio recomendadoOrdenador personal. Window NT 4.0.
Simulador Pcspim
Nº horas estimadas en Laboratorio2Nº horas total estimadas para la realización de la práctica2
Práctica nº 3
DescripciónCarga y almacenamiento de los datos
Página 2
4. ObjetivosEstudio de la forma en que se cargan y almacenan los datos. Poner en práctica los
conocimientos adquiridos en las clases teóricas sobre el repertorio de instrucciones MIPS.
Material de laboratorio recomendadoOrdenador personal. Window NT 4.0.
Simulador Pcspim
Nº horas estimadas en Laboratorio2Nº horas total estimadas para la realización de la práctica2
Práctica nº 4
DescripciónLas operaciones aritméticas y lógicas.
ObjetivosAdquirir soltura en el uso de las instrucciones aritméticas lógicas. Poner en práctica los
conocimientos adquiridos en las clases teóricas sobre el repertorio de instrucciones MIPS.
Material de laboratorio recomendadoOrdenador personal. Window NT 4.0.
Simulador Pcspim2
Nº horas estimadas en Laboratorio2Nº horas total estimadas para la realización de la práctica2
Práctica nº 5
DescripciónInterfaz con el programa
ObjetivosFamiliarización con la forma en que el PCSPIM permite realizar entrada y salida de
datos.
Material de laboratorio recomendadoOrdenador personal. Window NT 4.0.
Simulador Pcspim
Nº horas estimadas en Laboratorio2Nº horas total estimadas para la realización de la práctica2
Práctica nº 6
DescripciónEstructuras de control:condicionales y bucles
ObjetivosAdquirir soltura en el uso de las instrucciones que permiten implementar estructuras
condicionales y bucles
Material de laboratorio recomendadoOrdenador personal. Window NT 4.0.
Simulador Pcspim
Nº horas estimadas en Laboratorio2Nº horas total estimadas para la realización de la práctica2
Práctica nº 7
DescripciónGestión de subrutinas
ObjetivosEstudio de la forma en que se manejan las subrutinas en lenguaje ensamblador.
Material de laboratorio recomendadoOrdenador personal. Window NT 4.0.
Simulador Pcspim
Nº horas estimadas en Laboratorio3Nº horas total estimadas para la realización de la práctica3
Bibliografía
[1] Organización y diseño de computadores: la interfaz hardware/software
Hennessy, John L.
, McGraw-Hill, Madrid (1995) - (2ª ed.)
8448118294
[2] Computer organization and design: the hardware/software interface
John L. Hennessy, David A. Patterson
Morgan Kaufmann, San Francisco (California) (1998) - (2nd ed.)
1-55860-491-X
[3] Introducción a la informática
Alberto Prieto Espinosa, Antonio Lloris Ruiz, Juan Carlos Torres Cantero
McGraw Hill, Madrid (2001) - (3ª ed.)
8448132173
Página 3
5. [4] Organización de computadoras: un enfoque estructurado
Andrew S. Tanenbaum
Prentice Hall, México [etc.] (2000) - (4ª ed.)
970-17-0399-5
[5] Organización y arquitectura de computadores: diseño para optimizar prestaciones
William Stallings
Prentice Hall, Madrid (2000) - (5ª ed.)
84-205-2993-1
[6] Problemas y tests de introducción a la informática: con más de 400 problemas y 700 preguntas de
tests
por Beatriz Prieto Campos, Alberto Prieto Espinosa
Universidad de Granada, Departamento de Arquitectura y Tecnología de Computadores, Granada (2003)
8460791092
[7] Arquitectura de computadores: un enfoque cuantitativo
John L. Hennessy, David A. Patterson
, McGraw-Hill, Madrid (1993)
8476159129
Equipo Docente
CARMELO CUENCA HERNANDEZ (COORDINADOR)
Categoría: TITULAR DE ESCUELA UNIVERSITARIA
Departamento: INFORMÁTICA Y SISTEMAS
Teléfono: 928458713 Correo Electrónico: ccuenca@dis.ulpgc.es
WEB Personal:
FRANCISCA QUINTANA DOMINGUEZ (RESPONSABLE DE PRACTICAS)
Categoría: TITULAR DE ESCUELA UNIVERSITARIA
Departamento: INFORMÁTICA Y SISTEMAS
Teléfono: 928458736 Correo Electrónico: fquintana@dis.ulpgc.es
WEB Personal:
Página 4
6. Proyecto docente –
Fundamentos de Computadores
http://serdis.dis.ulpgc.es/~itis-fc
Titulación de Ingeniería Técnica en
Informática de Sistemas
Escuela Universitaria de Informática
7. Curso 2005/2006 Fundamentos de Computadores 2
Proyecto Docente - Profesorado
– Carmelo Cuenca Hernández (coordinador)
• ccuenca@dis.ulpgc.es
• Despacho 2-13 en el módulo 3
• Horario de T U T O R Í A S
– Lunes de 11.00-13.00 y jueves 9.00-13.00
– Francisca Quintana Domínguez (responsable de prácticas)
• fquintana@dis.ulpgc.es
• Despacho 2-12 en el módulo 3
• Horario de T U T O R Í A S
– Lunes de 9.30-12.30 y miércoles 9.30-12.30
8. Curso 2005/2006 Fundamentos de Computadores 3
Proyecto Docente – Horarios
B3-B4
L1.1
B1-B2
L1.1
A-5 L3.3
13:30-14:30
12:30-13:30
11:30-12:30
T AA3-A4
L1.1
A1-A2
L1.1
10:30-11:30
T B9:30-10:30
T BT A8:30-9:30
VML
9. Curso 2005/2006 Fundamentos de Computadores 4
Proyecto docente - Objetivos de la
asignatura
• Fundamentos de Computadores presenta los componentes de un
computador y la organización de estos componentes para ejecutar
programas
– Obtener una visión general de la jerarquía de niveles de un computador
– Conocer y comprender las características más importante de la
arquitectura y estructura de un computador
– Conocer y comprender los elementos básicos de la arquitectura del
repertorio de instrucciones
– Dominar la programación en lenguaje ensamblador de algún
procesador como, por ejemplo, el MIPS R2000
– Conocer y comprender los elementos estructurales de un procesador
para la ejecución de las instrucciones
– Conocer los principios básicos y métodos de diseño de unidades de
control cableadas y microprogramadas
– Evaluar alternativas de diseño, así como el rendimiento de un
computador
10. Curso 2005/2006 Fundamentos de Computadores 5
Proyecto Docente - Temario
1. Arquitectura de un computador y jerarquía de niveles (3
horas)
2. Arquitectura del nivel lenguaje máquina (10 horas)
1. Características generales del lenguaje máquina
2. Tipos de operandos e instrucciones
3. Modos de direccionamiento y formato de las instrucciones
4. Subrutinas
3. Diseño del procesador (15 horas)
1. Diseño y control cableado de un camino de datos monociclo
2. Diseño y control cableado de un camino de datos multiciclo
3. Diseño y control microprogramado de un camino de datos
multiciclo
4. Rendimiento (2 horas)
11. Curso 2005/2006 Fundamentos de Computadores 6
Proyecto Docente - Prácticas
1.El simulador PCspim (2 horas)
2.Los datos en memoria (2 horas)
3.Carga y almacenamiento de los datos (2 horas)
4.Las operaciones aritméticas y lógicas (2 horas)
5.Interfaz con el programa (2 horas)
6.Estructuras de control condicionales y bucles (2
horas)
7.Gestión de subrutinas (3 horas)
12. Curso 2005/2006 Fundamentos de Computadores 7
Proyecto Docente - Evaluación
• Nota final = 0.7 Nota de teoría + 0.3 Nota
de práctica
(siempre que nota de teoría >=5 y Nota de
práctica>=5)
• La nota de teoría y de práctica se
obtendrá en los exámenes de
convocatoria de la asignatura, uno para
teoría y otro para práctica
13. Arquitectura de un computador y
jerarquía de niveles
“La arquitectura de un computador es la
estructura de un computador que un
programador en lenguaje máquina debe
conocer para escribir un programa correcto
(independiente del tiempo)” Amdahl 1964
14. Curso 2005/2006 Fundamentos de Computadores 9
Objetivos
• Establecer características para nominar una máquina como
computador
• Conocer los hitos de la arquitectura de los computadores
• Distinguir los diferentes niveles de estudio de los computadores
• Entender los mecanismos de traducción e interpretación de niveles
• Diferenciar entre la arquitectura y la estructura de un computador
• Describir los componentes básicos de un computador y las
funcionalidades de cada uno de ellos por separados
• Explicar el funcionamiento global de un computador a partir de las
relaciones de sus componentes básicos
15. Curso 2005/2006 Fundamentos de Computadores 10
Contenidos
• Concepto de computador
• Historia de los computadores
– La 1ª generación (los primeros computadores)
– La 2ª generación (transistores)
– La 3ª generación (SCI), la 4ª (LSI) y la 5ª (VLSI, UVLSI)
• Organización estructurada de un computador
– Lenguajes, niveles y máquinas virtuales
– Computador multinivel
• Funcionamiento de un computador
– Componentes de un computador
– Ciclo de instrucción
– Interconexión con buses
• El futuro de los computadores
– Ley de Moore
16. Curso 2005/2006 Fundamentos de Computadores 11
Concepto de computador
• Diccionario de la Lengua Española
– “Máquina electrónica dotada de una memoria de gran capacidad y de
métodos de tratamiento de la información, capaz de resolver problemas
aritméticos y lógicos gracias a la utilización automática de programas
registrados en ella”
• Microsoft Encarta
– “Dispositivo electrónico capaz de recibir un conjunto de instrucciones y
ejecutarlas realizando cálculos sobre los datos numéricos, o bien
compilando y correlacionando otros tipos de información”
• Enciclopedia Británica
– “Device for processing, storing, and displaying information”
• Wikipedia
– “Sistema digital con tecnología microelectrónica capaz de procesar
información a partir de un grupo de instrucciones denominado
programa”
17. Historia de los computadores
"Quien olvida las lecciones de la
historia
queda condenado a repetirla."
Will Durant, Lecciones de la Historia
18. Curso 2005/2006 Fundamentos de Computadores 13
ENIAC – ¿Qué, quiénes, …?
• Electronic Numerical Integrator
And Computer
• Eckert y Mauchly
• Universidad de Pennsylvania
• Tablas de trayectorias
balísticas
• Año de inicio 1943
• Año de finalización 1946
– Tarde para la Segunda Guerra
Mundial (1939-1945)
• En funcionamiento hasta 1955
19. Curso 2005/2006 Fundamentos de Computadores 14
ENIAC - detalles
• Decimal (no binario)
• 20 registros acumuladores de
10 dígitos
• Programado manualmente
mediante 6000 interruptores
• 18000 tubos de vacío y 1500
relevadores
• 30 toneladas
• 15000 pies cuadrados
• 140 Kw de consumo de
potencia
• 5000 sumas por segundo
20. Curso 2005/2006 Fundamentos de Computadores 15
Von Neumann/Turing
• Concepto de programa
almacenado
• Componentes de un computador
– La memoria principal (MM)
almacena programas y datos
– La unidad aritmética lógica (ALU)
opera con datos binarios
– La unidad de control (UC)
interpreta y provoca la ejecución
de las instrucciones en memoria
• Máquinas
– EDSAC – la primera computadora
de programa almacenado
• Maurice Wilkes, Universidad de
Cambridge, (¿?-1949)
– La máquina IAS
• John von Neumann y Herman
Goldstine, Instituto para Estudios
Avanzados de Princeton, (1946-
1952)
21. Curso 2005/2006 Fundamentos de Computadores 16
Estructura de una máquina von
Neumann
• Cinco partes básicas:
– la memoria (M), almacena datos e instrucciones
– la unidad aritmética lógica (ALU), capaz de hacer operaciones
con datos binarios
– la unidad de control (UC), interpreta y provoca la ejecución de
las instrucciones en memoria
– el equipo de entrada y salida (I/O)
22. Curso 2005/2006 Fundamentos de Computadores 17
IAS - detalles
• Aritmética binaria
• 1000 palabras de 40 bits
• 2 registros de instrucciones de
20 bits
• Registros dentro de la CPU
– R. temporal de memoria
(MBR)
– R. de direcciones de memoria
(MAR)
– R. de instrucciones (IR)
– R. temporal de instrucciones
(IBR)
– R. contador de programa (PC)
– R. acumulador (AC)
– R. multiplicador cociente (MQ)
23. Curso 2005/2006 Fundamentos de Computadores 18
Computadores comerciales
• 1947 – Eckert-Mauchly Computer Comportation
– UNIVAC I (Universal Automatic Computer)
• Aplicaciones científicas y comerciales
• Oficina del censo en 1950
• Operaciones algebraicas con matrices, problemas de
matrices, primas para las compañías de seguro, problemas
logísticos ...
– Absorción por Sperry-Rand Comporation
– UNIVAC II a finales de los 50
• Más rápido
• Más memoria
– Serie UNIVAC 1100
24. Curso 2005/2006 Fundamentos de Computadores 19
IBM
• Fabricante de equipos de
procesamiento con
tarjetas perforadas
• 1953 – El 701 para
aplicaciones científicas
• 1955 – El 702 para
aplicaciones de gestión
• Líder mundial con las
series 700/7000
25. Curso 2005/2006 Fundamentos de Computadores 20
La segunda generación: los
transistores (1955-1965)
• Invención de Shockley y
otros de los laboratorios
Bell en 1947
• Sustitución de los tubos
de vacío por transistores
• Ventajas del transistor
– Más pequeño
– Más barato
– Menor disipación de calor
– Fabricado con silicio
(arena)
26. Curso 2005/2006 Fundamentos de Computadores 21
Computadores con transistores
• NCR y RCA fueron los
primeros en comercializar
pequeñas máquinas con
transistores
• IBM 7000
• 1957 - Fundación de
Digital Equipment
Corporation (DEC)
pionera de los
minicomputadores
– PDP 1
27. Curso 2005/2006 Fundamentos de Computadores 22
La 3ª, 4ª y 5ª generación: los
circuitos integrados (1965-????)
• Un computador consta de puertas, celdas de memoria e
interconexiones
• Tales componentes podían ser fabricados a partir de un
semiconductor como el silicio en un circuito integrado (Robert
Noyce – 1958)
• Generaciones 3ª, 4ª y 5ª de computadores
– 3ª generación
• Pequeña y mediana integración (SCI) 1965-1971
• Hasta 100 componentes en un chip
• 1965 - IBM líder mundial inicia la “familia” 360
• 1965 - DEC lanza el minicomputador de bajo coste PDP-8
– 4ª generación
• Gran integración (LSI ) 1972-1977
• Entre 3000 y 100000 componentes en un chip
– 5ª generación
• Alta Integración (VLSCI y UVLSI) 1978-????
• Más de 100000000 componentes en un chip
28. Organización estructurada de
un computador
Los computadores están diseñados como
una serie de niveles, cada uno construido
sobre sus predecesores. Cada nivel
representa una abstracción distinta, y
contiene diferentes objetos y operaciones
29. Curso 2005/2006 Fundamentos de Computadores 24
Lenguajes, niveles y máquinas
virtuales
• La máquina virtual Mi ejecuta sólo
programas escritos en el lenguaje
de programación Li
• Ejecución de programas en Mi:
– Traducción
• Un programa “traductor” sustituye
cada instrucción escrita en Li por
una secuencia equivalente de
instrucciones en Li-1. El programa
resultante consiste
exclusivamente en instrucciones
de Li-1. Luego, Mi-1 ejecuta el
programa en Li-1
– Interpretación
• Un programa “intérprete” escrito
en Li-1 examina las instrucciones
una por una y ejecuta cada vez la
sucesión de instrucciones en Li-1
que equivale a cada una
30. Curso 2005/2006 Fundamentos de Computadores 25
Computador multinivel
• N. aplicaciones
– Microsoft Office, eMule…
• N. lenguaje alto nivel
– BASIC, C, C++, Java, Lisp, Prolog
• N. lenguaje ensamblador
• N. sistema operativo
– Archivo, partición, proceso, …
• N. arquitectura del repertorio de
instrucciones (ISA)
– Salto, pila, …
• N. microarquitectura
– Banco de registros, ALU, camino de
datos
• N. lógica digital
– Puertas lógicas: AND, OR …,
biestables, registros …
• N. dispositivos
– Transistores, diodos, estado sólido …
32. Curso 2005/2006 Fundamentos de Computadores 27
Componentes de un computador
• Unidad central de
proceso (CPU)
– Unidad de control
(UC)
– Unidad aritmética-
lógica (ALU)
• Memoria (M)
• Entrada y salida (E/S)
33. Curso 2005/2006 Fundamentos de Computadores 28
Ciclo de instrucción (1/2)
• Ciclo de búsqueda de instrucción
– El registro contador de programa (PC) contiene la dirección de la
siguiente instrucción a ejecutar
– El procesador busca la instrucción a partir de la localización de
memoria señalada por el PC
– El procesador incrementa el contador de programa (hay excepciones)
– La instrucción es cargada en el registro de instrucciones (IR)
34. Curso 2005/2006 Fundamentos de Computadores 29
Ciclo de instrucción (2/2)
• Ciclo de ejecución (5 tipos)
– Procesador-memoria: transferencia de datos desde la CPU a la memoria o al
revés
– Procesador-E/S: transferencia de datos a o desde el exterior
– Procesamiento de datos: la CPU ha de realizar alguna operación aritmética o
lógica con los datos
– Control: una instrucción puede especificar que la secuencia de ejecución sea
alterada
– Combinaciones de las anteriores
37. Curso 2005/2006 Fundamentos de Computadores 32
Esquema de interconexión
mediante buses
• Conjunto de conductores
eléctricos para la conexión de
dos o más dispositivos
• Tipos de buses
– De memoria, de datos y de
control
– Anchura de los buses: 8, 16,
32, 64 bits
• ¿Cómo son los buses?
– Pistas paralelas de los
circuitos impresos
– Cintas de plástico con hilos
conductores
– Conectores (ISA, PCI, …)
– Cables sueltos
40. El futuro de los computadores
La relación coste/rendimiento ha
mejorado los últimos 45 años
aproximadamente 240 000 000 (un
54% anual)
41. Curso 2005/2006 Fundamentos de Computadores 36
Ley de Moore
• La densidad de integración dobla cada 18
meses
• ¿Válida hasta 2020?)
42. Arquitectura del repertorio de
instrucciones (ISA)
“La arquitectura de un computador es la estructura del
computador que un programador en lenguaje máquina
debe conocer para escribir un programa correcto
(independiente del tiempo)”
Amdahl 1964
43. Curso 2005/2006 Fundamentos de Computadores 2
Objetivos
• Caracterizar una instrucción de acuerdo con el tipo de operación, de datos, de modos de
direccionamiento y de formato de codificación
• Codificar una instrucción de lenguaje máquina a una instrucción de lenguaje ensamblador y
viceversa
• Distinguir una pseudoinstrucción de una instrucción
• Explicar con comentarios la finalidad de un bloque básico de código ensamblador
• Determinar los valores intermedios y finales de los registros y los contenidos de la memoria tras
la ejecución de un bloque básico de código ensamblador
• Escribir la secuencia de instrucciones de lenguaje ensamblador correspondiente a una
pseudoinstrucción
• Traducir las sentencias básicas de asignación, operación, toma de decisiones, bucles y llamadas
a procedimientos a lenguaje ensamblador
• Traducir un algoritmo escrito en un lenguaje de alto nivel a lenguaje ensamblador y viceversa
• Escribir procedimientos en lenguaje ensamblador consecuentes con los convenios de pasos de
parámetros a procedimientos
• Corregir errores en un programa escrito en lenguaje ensamblador para que funcione
correctamente
• Calcular el tiempo de ejecución y los ciclos por instrucción (CPI) de un bloque básico de código
ensamblador
• Diseñar un repertorio de instrucciones con restricciones de diseño
44. Curso 2005/2006 Fundamentos de Computadores 3
Índice
• Estructura de una máquina Von Neumman
• Máquinas RISC
• MIPS R3000 – Nivel ISA
– Instrucciones aritmético-lógicas
– Instrucciones de acceso a memoria
• Organización de la memoria
• Carga y almacenamiento
– Instrucciones de salto condicional
– Lenguaje máquina
• Instrucciones aritmético-lógicas, de acceso a memoria, de carga y almacenamiento, de salto condicional e incondicional
– Datos inmediatos
– Gestión de procedimientos
• Llamadas y retornos de procedimientos
• Convenio de uso de registros
• Gestión de la pila
– Otras instrucciones
• Máquinas CSIC
• IA – 32
– Características del ISA
– Registros
– Instrucciones básicas
– Formato de las instrucciones
45. Curso 2005/2006 Fundamentos de Computadores 4
Estructura de una máquina von
Neumann
• Cinco partes básicas
– la memoria (M)
– la unidad aritmética
lógica (ALU
– la unidad de control
(UC)
– el equipo de entrada y
salida (I/O)
• Ciclo de instrucción
– Ciclo de búsqueda
– Ciclo de ejecución
46. Curso 2005/2006 Fundamentos de Computadores 5
1400
1300
1200
1100
1000
900
800
700
600
500
400
300
200
100
0
1998 2000 2001 20021999
Other
SPARC
Hitachi SH
PowerPC
Motorola 68K
MIPS
IA-32
ARM
RISC - Reduced Instruction Set
Computer
• RISC es una filosofía de diseño con las siguientes características:
– Tamaño fijo de las instrucciones
– Número reducido de codificaciones de las instrucciones, modos de
direccionamientos y operaciones
– Instrucciones de load/store para los accesos a memoria, registros
• Usados por NEC, Nintendo, Silicon Graphics, Cisco, Sony...
47. Curso 2005/2006 Fundamentos de Computadores 6
MIPS R3000 – Nivel ISA
• Instrucciones de 32 bits
• 3 formatos
• 4 direccionamientos
• 5 tipos de instrucciones
– Aritmético-lógicas
– Acceso a memoria
– Ruptura de secuencia
– Gestión de memoria
– Especiales
• 32 registros de 32 bits de
propósito general (GPR)
$0 - $31
PC
HI
LO
Registros
OP
OP
OP
rs rt rd sa funct
rs rt immediate
jump target
3 Instruction Formats:all 32 bits wide
R format
I format
J format
OP
OP
OP
rs rt rd sa funct
rs rt immediate
jump target
3 Instruction Formats:all 32 bits wide
R format
I format
J format
48. Curso 2005/2006 Fundamentos de Computadores 7
MIPS – Instrucciones aritmético-
lógicas
• Principio de diseño 1
– “La simplicidad favorece la uniformidad”
• Todos los computadores deben ser
capaces de realizar cálculos aritméticos y
lógicos
add a, b, c # a b + c
sub a, a, d # a a + d = (b + c) - d
or a, a, e # a a + e = (b + c + d) OR e
49. Curso 2005/2006 Fundamentos de Computadores 8
Ejemplos básicos de compilación
de sentencias
• Dos sentencias de asignación de C en MIPS
– Código fuente
a = b + c;
d = a – e;
– Compilación
add a, b, c
sub d, a, e
• Compilación de una sentencia compleja de C en MIPS
– Código fuente
f = (g + h) – (i + j);
– Compilación
add t0, g, h
add t1, i, j
sub f, t0, t1
50. Curso 2005/2006 Fundamentos de Computadores 9
MIPS - Registros
• Principio de diseño 2
– “Cuanto más pequeño más rápido”
• Los operandos de las instrucciones computacionales son registros
• Los compiladores asocian variables con registros
– $s0, $s1,... para registros asociados a variables de C
– $t0, $t1,... para registros temporales
– Otros más
$0 - $31
PC
HI
LO
Registers
Processor I/O
Control
Datapath
Memory
Input
Output
Processor I/O
Control
Datapath
Memory
Input
Output
51. Curso 2005/2006 Fundamentos de Computadores 10
Ejemplo de compilación de una
asignación usando registros
• Código fuente de C
f = (g + h) – (i+j);
f, g, h, i y j en $s0, $s1, $s2, $s3 y $s4
• Compilación en MIPS
add $t0, $s1, $s2 # el registro $t0 contiene
# g+h
add $t1, $s3, $s4 # el registro $t1 contiene
# i +j
sub $s0, $t0, $t1 # f contiene $t0 - $t1, que
# es (g+h) – (i+h)
52. Curso 2005/2006 Fundamentos de Computadores 11
Accesos a memoria - Organización
de la memoria
• La memoria es un vector
de bytes
• La dirección es un índice
dentro del vector de bytes
• 2 posibles ordenaciones
para las palabras:
– Big Endian (IA-32)
– Little Endian (MIPS)
• Alineación de datos
– address módulo size = 0
Objeto Bien alineado Mal alineado
Byte 0,1,2,3,4,5,6,.. (nunca)
Media palabra 0,2,4,6,8, ... 1,3,5,7, ...
Palabra (4 bytes) 0,4,8,... 1,2,3,5,6,7,9,10,11,...
Doble palabra 0,8, .. 1,2,3,4,5,6,7,9,10,11,12,13,14,15,....
.
0x11
0x22
0x33
0x44
.
55
.
0x11
0x22
0x33
0x44
.
55
Big EndianLittle Endian
MSB LSB
0x44332211
Memoria
…
0x11
0x22
0x33
0x44
…
55
Big EndianLittle Endian
MSB LSB
0x44332211
Memoria
Big EndianLittle Endian
MSB LSB
0x44332211
Memoria MSB LSB
0x11223344
53. Curso 2005/2006 Fundamentos de Computadores 12
Accesos a memoria – Organización
de la memoria del MIPS
• El tamaño de las palabras es de 32 bits
• Big Endian
• 232 posiciones de memoria de bytes, 0, 1, 232-1
• Accesos alineados
– 231 posiciones de memoria de medias palabras, 0,
2… 232-2
– 230 posiciones de memoria de palabras, 0, 4, 232-4
– 228 posiciones de memoria de dobles palabras, 0, 8…
232-8
54. Curso 2005/2006 Fundamentos de Computadores 13
MIPS – Cargas y almacenamientos
• Instrucciones para accesos a memoria de
palabras
– lw $t0, 4($s3) # $t0 M[$s3+4]
– sw $t0, 4($s3) # M[$s3+4] $t0
• La suma del registro base ($s3) y el
desplazamiento (4) forma la dirección de
memoria del dato
– El desplazamiento tiene signo (complemento a dos)
– Los accesos están limitados a una región centrada en
el registro base de ±213 palabras
55. Curso 2005/2006 Fundamentos de Computadores 14
Ejemplo de compilación con un
dato en memoria
• Código fuente de C
g = h + A[8];
La base del vector asignada a $s3, las
variables g y h asignadas a $s1 y $s2
• Compilación en MIPS
lw $t0, 32($s3) # $t0 contiene A[8]
add $s1, $s2, $t0# $s1 contiene g = h + A[8]
56. Curso 2005/2006 Fundamentos de Computadores 15
Ejemplo de compilación de una
asignación con un índice variable
• Código fuente de C
g = h + A[i];
la base del vector en $s3, g y h e i en $s1, $s2 y
$s4
• Compilación en MIPS
add $t1, $s4, $s4 # $t1 contiene 2 * i
add $t1, $t1, $t1 # $t1 contiene 4 * i
add $t1, $t1, $s3 # $t1 contiene $s3 + 4 * i
lw $t0, 0($t1) # $t0 contiene A[i]
add $s1, $s2, $t0 # $s1 contiene g = h + A[i]
57. Curso 2005/2006 Fundamentos de Computadores 16
MIPS – Instrucciones de salto
condicional
• Instrucciones de salto condicional (sólo dos)
– bne $s0, $s1, L1 # branch to L1 if no equal
– beq $s0, $s1, L1 # branch to L1 if equal
• Pseudoinstrucciones de salto condicional
– slt (set si menor que), beq, bne y $zero permiten las
condiciones restantes
blt $s1, $s2, etiqueta # salta si menor que
slt $at, $s1, $s2
bne $at, $zero, etiqueta
– El ensamblador expande las pseudoinstrucciones
• $at, registro utilizado por el programa ensamblador
58. Curso 2005/2006 Fundamentos de Computadores 17
Ejemplo de compilación de una
sentencia de salto condicional
• Código fuente de C
If (i==j) h = i + j;
h, i y j en $s0, $s1 y $s2
• Compilación en MIPS
bne $s1, $s2, etiqueta
add $s0, $s1, $s2
etiqueta: …
59. Curso 2005/2006 Fundamentos de Computadores 18
Lenguaje máquina – Instrucciones
aritmético-lógicas
• El tamaño de las instrucciones es de 32 bits
• Las instrucciones aritmético-lógicas son codificadas con el formato tipo-R
– add $rd, $rs, $rt
• Significado de los campos
– op 6-bits código de operación
– rs, rt, rd 5-bits registro source, target, destination
– shamt 5-bits número de bits a desplazar (cuando aplicable)
– funct 6-bits código de función (extensión del código de operación)
op rs rt rd shamt funct Formato de instrucciones aritméticas
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits Todas las instrucciones MIPS de 32 bits
000000 01010 11111 00011 00000 100000 0x015f1820 add $3,$10,$31
60. Curso 2005/2006 Fundamentos de Computadores 19
Lenguaje máquina – Instrucciones
de acceso a memoria
• Principio de diseño 3
– “Un buen diseño necesita buenas soluciones de compromiso”
• Las instrucciones de load y store especifican dos registros y un
desplazamiento
– Formato tipo I (16 bits para el dato inmediato)
– lw $rt, inmediato($rs), sw $rt, inmediato($rs
– lh, lhu, lb, lbu sh, sb (load half, half unsigned, byte, byte unsigned; store half,
byte)
op rs rt Dirección/inmediato Formato de instruciones de carga
6 bits 5 bits 5 bits 16 bits Todas las instrucciones MIPS de 32 bits
100011 00011 00101 0000000000100000 0x8c650020 lw $5,32($3)
61. Curso 2005/2006 Fundamentos de Computadores 20
Traducción de lenguaje
ensamblador a lenguaje máquina
• Código fuente de C
A[300] = h + A[300];
La base del vector asignada a $t1 y h a $s2
• Compilación en MIPS
lw $t0, 1200($t1)
add $t0, $s2, $t0
sw $t0, 1200($t1)
• Lenguaje máquina
1000 1101 0010 1000 0000 0100 1011 0000
0000 0010 0100 1000 0100 0000 0010 0000
1010 1101 0010 1000 0000 0100 1011 0000
62. Curso 2005/2006 Fundamentos de Computadores 21
Lenguaje máquina – Instrucciones
de salto condicional
• Formato tipo I (16 bits para el dato inmediato)
– El inmediato codifica el nº de palabras desde la siguiente
instrucción a la instrucción de salto (PC+4) hasta la instrucción
destino
– Los saltos están limitados a una región centrada en el PC + 4 de
±215 palabras
PC
Add
32
32 32
32
32
offset
16
32
00
sign-extend
from the low order 16 bits of the branch instruction
branch dst
address
?
Add
4 32
PC
Add
32
32 32
32
32
offset
16
32
00
sign-extend
from the low order 16 bits of the branch instruction
branch dst
address
??
Add
4 32
63. Curso 2005/2006 Fundamentos de Computadores 22
MIPS – Instrucciones de ruptura de
secuencia incondicional
• j etiqueta
• Formato tipo J
– 6 bits código de operación + 26 bits para el dato inmediato
– El inmediato de 26 bits codifica la dirección absoluta de la
palabra con la instrucción destino de salto dentro de un
segmento de 256MB
op 26-bit addressop 26-bit address
PC
4
32
26
32
00
from the low order 26 bits of the jump instruction
PC
4
32
26
32
00
from the low order 26 bits of the jump instruction
64. Curso 2005/2006 Fundamentos de Computadores 23
Ejemplo de compilación de una
sentencia de salto if-then-else
• Código fuente de C
If (i==j) f = g + h;
else f = g – h;
i, j, f, g y h en $s0… $s4
• Compilación en MIPS
bne $s0, $s1, L1
add $s2, $s3, $s4 # f = g + h
j L2 # salto incondicional
L1: sub $s2, $s3, $s4 # f = g - h
L2: …
65. Curso 2005/2006 Fundamentos de Computadores 24
MIPS – Datos inmediatos (1/2)
• Instrucciones aritmético-lógicas con un operando
constante
slti $t0, $s2, 15 #$t0 = 1 si $s2<15
• La constante almacenada en la propia instrucción
– Formato tipo I
– El dato inmediato está limitado a 16 bits (-215 a +215-1)
op rs rt 16 bit immediate I formatop rs rt 16 bit immediate I format
66. Curso 2005/2006 Fundamentos de Computadores 25
MIPS – Datos Inmediatos (2/2)
• Gestión de datos inmediatos de más de 16 bits
– Almacenaje en memoria
.data
muchosbits:
.word 4294967295 # 0x7FFFFFFF
.text
…
lw $t0, muchosbits($zero)
– Descomposición en partes
lui $at, 0x7FFFF # load upper inmediate
ori $t0, $at, 0xFFFF
67. Curso 2005/2006 Fundamentos de Computadores 26
MIPS – Gestión de procedimientos
• Llamada a procedimiento
– jal address
• Escribe PC+4 en el registro $ra (return adress,
$31) para posibilitar el retorno del procedimiento
• Instrucción tipo J
– jalr $rs
• Instrucción tipo R
• Retorno de procedimiento
– jr $ra
• Instrucción tipo R
68. Curso 2005/2006 Fundamentos de Computadores 27
MIPS – Convenio de uso de
registros
Name Register number Usage
$zero 0 the constant value 0
$v0-$v1 2-3 values for results and expression evaluation
$a0-$a3 4-7 arguments
$t0-$t7 8-15 temporaries
$s0-$s7 16-23 saved
$t8-$t9 24-25 more temporaries
$gp 28 global pointer
$sp 29 stack pointer
$fp 30 frame pointer
$ra 31 return address
69. Curso 2005/2006 Fundamentos de Computadores 28
MIPS – Pila (stack)
• Operaciones
– Guardar (Push)
addi $sp, $sp, -4
sw $rs, 0(Sp)
– Recuperar (Pop)
lw $rs, 0(Sp)
addi $sp, $sp, 4
Memoria Dirección
Baja
Valor guardado
Alta
sp-4
sp
Memoria Dirección
Baja
Valor leído
Alta
sp+4
sp
70. Curso 2005/2006 Fundamentos de Computadores 29
MIPS - Instrucciones aritméticas
Instrucción Ejemplo Significado Comentarios
sumar add $1,$2,$3 $1= $2+$3 Posible excepción por desbordamiento
sumar sin signo addu $1,$2,$3 $1=$2+$3 -
sumar inmediato addi $1,$2,10 $1=$2+10 Posible excepción por desbordamiento
sumar inmediato sin signo addiu $1,$2,10 $1=$2+10 -
restar sub $1,$2,$3 $1=$2-$3 Posible excepción por desbordamiento
restar sin signo subu $1,$2,$3 $1=$2-$3 -
dividir div $1,$2
Lo=$1÷$2
Hi=$1mod$2
Posible excepción por desbordamiento
dividir sin signo divu $1,$2
Lo=$1÷$2
Hi=$1mod$2
-
multiplicar mult $1,$2 Hi,Lo=$1*$2 -
multiplicar sin signo multu $1,$2 Hi,Lo=$1*$2 -
Pseudoinstrucciones
dividir div $1,$2,$3
$1=$2÷$3
(cociente)
Posible excepción por desbordamiento
dividir sin signo divu $1,$2,$3
$1=$2÷$3
(cociente)
-
multiplicar mul $1,$2,$3 $1=$2*$3 -
multiplicar mulo $1,$2,$3 $1=$2*$3 Posible excepción por desbordamiento
multiplicar sin signo mulou $1,$2,$3 $1=$2*$3 Posible excepción por desbordamiento
71. Curso 2005/2006 Fundamentos de Computadores 30
MIPS – Intrucciones lógicas
Instrucción Ejemplo Significado Comentarios
and and $1,$2,$3 $1= $2&$3
or andi $1,$2,10 $1=$2&10
xor xor $1,$2,$3 $1=$2⊕$3
nor nor $1,$2,$3 $1=~($2|$3)
andi andi $1,$2,10 $1=$2&10
ori ori $1,$2,10 $1= $2|10
xori xori $1,$2,10 $1=$2|10
shift left logical sll $1,$2,10 $1= $2<<10
shift left logical variable sllv $1,$2,$3 $1= $2<<$3
shift right logical srl $1,$2, 10 $1=$2>>10
shift right logical variable srlv $1,$2,$3 $1=$2>>$3
shift right arithmetic sra $1,$2,10 $1=$2>>10
shift right arithmetic variable srav $1,$2,$3 $1=$2>>$3
72. Curso 2005/2006 Fundamentos de Computadores 31
MIPS - Instrucciones de
transferencia de datos (1/2)
Instrucción Ejemplo Significado Comentarios
carga byte lb $1,10($2) $1=M[10+$2] Extiende el bit de signo
carga byte sin ext. signo lbu $1,10($2) $1=M[10+$2] No extiende el bit de signo
carga media palabra lh $1,10($2) $1=M[10+$2] Extiende el bit de signo
carga media palabra sin
extensión de signo
lhu $1,10($2) $1=M[10+$2] No extiende el bit de signo
carga palabra lw $1,10($2) $1=M[10+$2]
carga inmediata de la
parte más significativa
“load upper inmediate”
lui $1,50 $1=50*216 Carga un dato de 16 bits en la parte más
significativa del registro.
Carga registro del
coprocesador z
lwc1 $f0,10($2) $f0= M[10+$2]
almacena byte sb $1,10($2) M[10+$2]=$1
almacena media palabra sh $1,10($2) M[10+$2]=$1
almacena palabra sw $1,10($2) M[10+$2]=$1
almacena registro en
memoria registro del
coprocesador z
swc1 $f0,10($2) M[10+$2]=$f0
Pseudoinstrucciones
Carga inmediata li $1,1000 $1=1000 Carga de un dato de 32 bits
Carga dirección la $3,label
$3=dirección de
label
Transfiere la dirección de memoria no el
contenido.
73. Curso 2005/2006 Fundamentos de Computadores 32
MIPS – Instrucciones de
movimiento de datos (2/2)
Instrucción Ejemplo Significado Comentarios
mover desde Hi mfhi $1 $1= Hi
mover desde Lo mflo $1 $1= Lo
mover a Hi mthi $1 Hi=$1
mover a Lo mtlo $1 Lo=$1
mover desde coprocesador z mfcz $1,$f0 $1=$f0 $f0-$f30: Registros del coprocesador 1
mover al coprocesador z mtcz $1,$f0 $f0=$1
Pseudoinstrucciones
transfiere o mueve move $1,$2 $1=$2
transfiere doble desde coproc. 1 mfc1.d $4,$f0
$4=$F0
$5=$F1
74. Curso 2005/2006 Fundamentos de Computadores 33
Instrucciones de comparación
Instrucción Ejemplo Significado Comentarios
Inicializar menor que slt $1,$2,$3
if ($2<$3) then
$1=1
else
$1=0
endif
inicializar menor que sin signo sltu $1,$2,$3
Inicializar menor que inmediato slti $1,$2,5
Inicializar menor que inmediato sin signo sltiu $1,$3,$5
Pseudoinstrucciones
Inicializa igual seq $1,$2,$3
si ($2==$3) then
$1=1
else
$1=0
endif
inicializa mayor o igual sge $1,$2,$3
inicializa mayor que sgt $1,$2,$3
inicializa menor o igual sle $1,$2,$3
inicializa no igual sne $1,$2,$3
75. Curso 2005/2006 Fundamentos de Computadores 34
MIPS – Instrucciones de salto y
bifurcación
Instrucción Ejemplo Significado Comentarios
salta sobre igual beq $1,$2,100 si($1==$2 )ir a PC+4 +100
salta sobre no igual bne $1,$2,100 si($1!=$2) ir a PC+4 +100
salta sobre mayor o igual que cero bgez $1,100 si($1>=0) ir a PC+4 +100
salta sobre mayor o igual que cero y
enlaza
bgezal $1,1000 si($1>=0) $31=PC+4; ir a 1000
.....
bifurcar j 2000 ir a 2000
bifurcar registro jr $1 ir a $1
Bifurcar y enlazar jal 10000 $31=PC+4; ir a 10000
bifurcar y enlazar registro jalr $1 $31=PC+4; ir a $1
Pseudoinstrucciones
salta sobre mayor o igual bge $1,$2,100 si($1>=$2) ir a PC+4 +100
salta sobre mayor que bgt $1,$2,100 si($1>$2) ir a PC+4 +100
salta sobre menor o igual ble $1,$2,100 si($1<=$2) ir a PC+4 +100
salta sobre menor que blt $1,$2,100 si($1<$2) ir a PC+4 +100
.....
76. Curso 2005/2006 Fundamentos de Computadores 35
MIPS - Modos de
direccionamientos
Byte Halfword Word
Registers
Memory
Memory
Word
Memory
Word
Register
Register
1. Immediate addressing
2. Register addressing
3. Base addressing
4. PC-relative addressing
5. Pseudodirect addressing
op rs rt
op rs rt
op rs rt
op
op
rs rt
Address
Address
Address
rd . . . funct
Immediate
PC
PC
+
+
77. Curso 2005/2006 Fundamentos de Computadores 36
CISC - Complex Instruction Set
Computer
• CISC es una filosofía de diseño con las
siguientes características:
– Instrucciones con mayor contenido semántico
para conseguir una reducción del número de
instrucciones ejecutadas
– Mayor tiempo de ciclo (Tc) o mayor número
de ciclo por instrucción (CPI) que una
arquitectura RISC
78. Curso 2005/2006 Fundamentos de Computadores 37
IA - 32
• 1978 µP 8086/88 (16 bits, 40 pines)
• 1980 coprocesador Intel 8087
• 1982 µP 80286
– Direcciones de 24 bits
– Niveles de privilegio
• 1986 µP 80386
– Direcciones de 32 bits
• 1989 µP 80486
– Coprocesador integrado
– Caché L1 de 8KB
• 1993 Pentium
– Bus interno 128 – 256 bits
• 1995-1999 Familia P6
– Superscalares
– MMX (57 instrucciones “MMX”)
• 1999 – 2005 Familia Pentium IV (478
pines)
– Hyper Threading
– 70 instrucciones Streaming SIMD
Extensions
79. Curso 2005/2006 Fundamentos de Computadores 38
IA - 32
• Características del ISA
– Longitud de instrucciones 1..17 bytes
– Máquina de 2 operandos
• SUB AX, AX
– Máquina registro-memoria
• ADD AX, [BX]
– Modos de direccionamientos complejos
80. Curso 2005/2006 Fundamentos de Computadores 39
IA–32 Registros
• 8 registros de 32 bits de
“casi propósito general”
– GPR0-GPR7: EAX, ECX,
EDX, EBX, ESP, EBP, ESI,
EDI
• 6 registros de segmento
de 16 bits
– CS, SS, DS, ES, FS, GS
• Un registro puntero de
instrucción de 32 bits
– EIP
• Un registro de estado de
32 bits
– EFLAGS
GPR 0
GPR 1
GPR 2
GPR 3
GPR 4
GPR 5
GPR 6
GPR 7
Code segment pointer
Stack segment pointer (top of stack)
Data segment pointer 0
Data segment pointer 1
Data segment pointer 2
Data segment pointer 3
Instruction pointer (PC)
Condition codes
Use
031
Name
EAX
ECX
EDX
EBX
ESP
EBP
ESI
EDI
CS
SS
DS
ES
FS
GS
EIP
EFLAGS
81. Curso 2005/2006 Fundamentos de Computadores 40
IA-32 Restricciones de uso de los
registros de propósito general
82. Curso 2005/2006 Fundamentos de Computadores 41
IA-32 Instrucciones básicas
• Movimiento de datos
– MOV, PUSH, POP
• Aritmético-lógicas
– El destino registro o memoria
– Aritmética entera y decimal
– CMP activa los bits del registro CFLAGS
• Control de flujo
– Saltos condicionales, incondicionales, llamadas y
retornos de procedimientos
• Manipulación de cadena
– Movimiento y comparación de cadenas
83. Curso 2005/2006 Fundamentos de Computadores 42
IA-32 Formato de las instrucciones
a. JE EIP + displacement
b. CALL
c. MOV EBX, [EDI + 45]
d. PUSH ESI
e. ADD EAX, #6765
f. TEST EDX, #42
ImmediatePostbyteTEST
ADD
PUSH
MOV
CALL
JE
w
w ImmediateReg
Reg
wd Displacement
r/m
Postbyte
Offset
DisplacementCondi-
tion
4 4 8
8 32
6 81 1 8
5 3
4 323 1
7 321 8
84. Curso 2005/2006 Fundamentos de Computadores 43
Resumen
• El nivel ISA es el interfaz hardware/software de un computador
• Principios de diseño
– “La simplicidad favorece la uniformidad”
• Tamaño de instrucciones fijo
• No muchos formatos de instrucciones
• Fácil codificación de las instrucciones
– “Cuanto más pequeño más rápido”
• Número de instrucciones y modo de direccionamientos bajo
• Número registros no excesivo
– “Un buen diseño necesita buenas soluciones de compromiso”
• Equilibrio número de registros, número de instrucciones, tipos y tamaño de
las instrucciones
– “Hacer el caso común rápido”
• Máquina registro-registro
• Datos inmediatos en la propia instrucción
• La complejidad de las instrucciones es sólo un parámetro de diseño
– Menor recuento de instrucciones, pero mayor CPI y mayor Tc
85. Curso 2005/2006 Fundamentos de Computadores 44
Otros puntos…
• Gestión de procedimientos
– Enlazador (link)
– Cargador (loader)
– Gestión de la pila (stack)
• Bloque de activación
• Puntero de marco (frame pointer)
• Subrutinas recursivas
• Manipulación de cadenas (strings)
• Punteros
• Interrupciones y excepciones
• Llamadas al sistema
86. Diseño del procesador
“Mientras el ENIAC está equipado con 18000
válvulas de vacio y pesa 30 toneladas, los
ordenadores del futuro pueden tener 1000
válvulas y quizás pesen sólo 1 tonelada y
media.” Popular Mechanics, Marzo de 1949
87. Curso 2005/2006 Fundamentos de Computadores 2
Objetivos
• Calcular el número total de ciclos de reloj de la ejecución de un trozo de código ensamblador para diferentes
implementaciones de un procesador básico
• Trazar ciclo a ciclo de reloj (sobre una ruta de datos) un trozo de código ensamblador para diferentes
implementaciones de un procesador básico
• Plantear una ruta de datos para un repertorio de instrucciones simple en un procesador básico
• Modificar una ruta de datos para la inclusión de nuevas instrucciones en un procesador básico
• Modificar una ruta de datos para satisfacer determinadas características de diseño
• Especificar una unidad de control con una máquina de estados finitos para una ruta de datos y un repertorio de
instrucciones simples
• Modificar una unidad de control específica de un procesador básico para la inclusión de nuevas instrucciones
• Modificar una unidad de control específica de un procesador básico para satisfacer determinadas características
• Calcular las ecuaciones de implementación de una unidad de control descrita mediante una máquina de estados
finitos
• Rellenar el contenido de una memoria ROM para una especificación de una unidad de control mediante una
máquina de estados finitos
• Implementar con PLA una especificación de una unidad de control mediante una máquina de estados finitos
• Especificar la unidad de control de un procesador básico con un microprograma
• Diseñar un formato de microinstrucciones para un procesador básico
• Modificar un microprograma para la inclusión de nuevas instrucciones en un procesador básico
• Modificar un microprograma para satisfacer determinadas características de diseño
• Modificar el formato de microinstrucciones para un procesador básico
• Escribir una rutina de tratamiento de excepción para interrupciones o excepciones básicas
88. Curso 2005/2006 Fundamentos de Computadores 3
Contenidos (1/4)
• Metodología de sincronización
• Diseño de un procesador MIPS R3000
reducido
– Rutas de datos individuales
• Búsqueda de instrucción
• Decodificación de la instrucción
• Ejecución (aritmético-lógicas, cargas y
almacenamientos, saltos condicionales y
bifurcaciones)
89. Curso 2005/2006 Fundamentos de Computadores 4
Contenidos (2/4)
• Diseño monociclo
– Diseño de la ruta de datos
• Integración de las rutas de datos individuales
• Señales de control
• Integración de la ruta de datos y de la unidad de control
• Ejemplos de flujo de datos + control
– Diseño de la unidad de control de la ALU (También válida para el
diseño multiciclo)
• Estructura de la ALU
• Especificación del control ALU
• Tabla de verdad del control ALU
• Implementación del control ALU
– Diseño de la unidad de control
• Funcionalidad de las señales de control
• Implementación de la UC
– Ventajas y desventajas
90. Curso 2005/2006 Fundamentos de Computadores 5
Contenidos (3/4)
• Diseño multiciclo
– Diseño de la ruta de datos
• Esbozo de la ruta de datos
• Integración de la ruta de datos y de la unidad de control
• Etapa de la ejecución de las instrucciones
– Ejemplo de la ejecución de la instrucción lw
– Diseño de la unidad de control
• Control cableado
– Especificación de la UC con una FSM (diagrama)
– Especificación de la UC con una FSM (tabla)
– Implementación de la FSM
– Ecuaciones de implementación de la FSM
– Implementación de FSM con ROM
– Implementación de FSM con PLA
• Control microprogramado
– Formato de la microinstrucción
– Señales asociadas a los campos y valores
– Microprograma de la UC
– Secuenciador del microprograma
91. Curso 2005/2006 Fundamentos de Computadores 6
Contenidos (4/4)
• Excepciones e interrupciones
– Tratamiento de excepciones en MIPS
– Implementación de excepciones en MIPS
– Ruta de datos con soporte de excepciones
– Especificación de la UC con soporte de
excepciones
– Instrucciones para excepciones en MIPS
92. Curso 2005/2006 Fundamentos de Computadores 7
Metodología de sincronización
• La metodología de sincronización define cuándo pueden leerse y
escribirse las diferentes señales
• Características de la metodología de sincronización por nivel
– Un elemento de estado puede ser actualizado sólo en el flanco de reloj
– Un elemento de estado puede ser leído y modificado en un mismo ciclo
– Señales de habilitación de escritura explícitas
State
element
1
State
element
2
Combinational
logic
clock
one clock cycle
93. Curso 2005/2006 Fundamentos de Computadores 8
Diseño de un procesador MIPS
R3000 reducido
• Soporte del subconjunto de instrucciones
– Acceso a memoria: lw (load word) y sw (store word)
– Aritmético-lógicas: add, sub, and, or, slt
– Salto y bifurcación: beq (branch if equal) y j (jump)
• Ciclo de instrucción
– Lectura de la instrucción M[PC]
– Decodificación de la instrucción y lectura de los
registros
– Ejecución de la instrucción
94. Curso 2005/2006 Fundamentos de Computadores 9
Ruta de datos individuales –
Búsqueda de la instrucción
• Lectura de la memoria de instrucciones
• Actualización del PC a la siguiente instrucción
Read
Address
Instruction
Instruction
Memory
Add
PC
4
95. Curso 2005/2006 Fundamentos de Computadores 10
Ruta de datos individuales –
Decodificación de la instrucción
• Envío de los campos de código de operación y
función a la unidad de control
• Lectura del banco de registro de los registros
$rs y $rt
Instruction
Write Data
Read Addr 1
Read Addr 2
Write Addr
Register
File
Read
Data 1
Read
Data 2
Write Data
Read Addr 1
Read Addr 2
Write Addr
Register
File
Read
Data 1
Read
Data 2
Control
Unit
96. Curso 2005/2006 Fundamentos de Computadores 11
Ruta de datos individuales –
Aritmético-lógicas (ejecución)
• op y funct especifican
la operación
aritmético-lógica
• Escritura del registro
$rd del banco de
registros con la salida
de la ALU
R-type:
31 25 20 15 5 0
op rs rt rd functshamt
10
R-type:
31 25 20 15 5 0
op rs rt rd functshamt
10
Instruction
Write Data
Read Addr 1
Read Addr 2
Write Addr
Register
File
Read
Data 1
Read
Data 2
ALU
overflow
zero
ALU controlRegWrite
97. Curso 2005/2006 Fundamentos de Computadores 12
Ruta de datos individuales– Cargas
y almacenamientos (ejecución)
• Cálculo de la dirección de memoria
– address $rs + extensión-signo(IR[15:0])
• Carga de un registro (load)
– $rt M[$rs + extensión-signo(IR[15:0])]
• Almacenamiento de un registro (store)
– M[$rs + extensión-signo(IR[15:0])] $rt
Instruction
Write Data
Read Addr 1
Read Addr 2
Write Addr
Register
File
Read
Data 1
Read
Data 2
ALU
overflow
zero
ALU controlRegWrite
Data
Memory
Address
Write Data
Read Data
Sign
Extend
MemWrite
MemRead
Instruction
Write Data
Read Addr 1
Read Addr 2
Write Addr
Register
File
Read
Data 1
Read
Data 2
ALU
overflow
zero
ALU controlRegWrite
Data
Memory
Address
Write Data
Read Data
Sign
Extend
MemWrite
MemRead
16 3216 32
98. Curso 2005/2006 Fundamentos de Computadores 13
Ruta de datos individuales – Saltos
condicionales (ejecución)
• Resta de $rs y $rt y comprobación de la señal
zero de la ALU
• Cálculo de la dirección efectiva de salto
– address PC + 4 + extensión-signo(IR[15:0]<<2)
Instruction
Write Data
Read Addr 1
Read Addr 2
Write Addr
Register
File
Read
Data 1
ALU
zero
ALU control
Sign
Extend16 32
Shift
left 2
Add
4
Add
PC
Branch
target
address
(to branch
control logic)
99. Curso 2005/2006 Fundamentos de Computadores 14
Ruta de datos individuales –
Bifurcaciones (ejecución)
• Reemplazo del PC por la dirección efectiva de
salto
– PC PC[31:28] || (IR[25:0]<<2)
Read
Address
Instruction
Instruction
Memory
Add
PC
4
Shift
left 2
Jump
address
26
4
28
100. Curso 2005/2006 Fundamentos de Computadores 15
Diseño monociclo
• Integración de las rutas de datos individuales
– Recursos hardware + multiplexores + señales de
control + restricciones de diseño
• Restricción de diseño
– Todas las instrucciones tardan un único ciclo de reloj
– La instrucción más lenta determina el tiempo de ciclo
– Ningún componente de la ruta de datos puede ser
reutilizado
• Memorias separadas de instrucciones y datos
• Sumadores…
101. Curso 2005/2006 Fundamentos de Computadores 16
Diseño de la RD - Integración de
las individuales (no beq, no j)
MemtoReg
Read
Address
Instruction
Instruction
Memory
Add
PC
4
Write Data
Read Addr 1
Read Addr 2
Write Addr
Register
File
Read
Data 1
Read
Data 2
ALU
ovf
zero
ALU controlRegWrite
Data
Memory
Address
Write Data
Read Data
MemWrite
MemRead
Sign
Extend16 32
ALUSrc MemtoRegMemtoRegMemtoReg
Read
Address
Instruction
Instruction
Memory
Add
PC
4
Write Data
Read Addr 1
Read Addr 2
Write Addr
Register
File
Read
Data 1
Read
Data 2
ALU
ovf
zero
ALU controlRegWrite
Data
Memory
Address
Write Data
Read Data
MemWrite
MemRead
Sign
Extend16 32
Read
Address
Instruction
Instruction
Memory
Add
PC
4
Write Data
Read Addr 1
Read Addr 2
Write Addr
Register
File
Read
Data 1
Read
Data 2
ALU
ovf
zero
ALU controlRegWrite
Data
Memory
Address
Write Data
Read Data
MemWrite
MemRead
Sign
Extend16 32
ALUSrcALUSrc
102. Curso 2005/2006 Fundamentos de Computadores 17
Diseño de la RD – Señales de
control
• Selección de la operación a realizar
– Operación ALU: ALUControl
– Escritura y lectura del banco de registros: RegWrite
– Escritura y lectura de las memorias: MemRead, MemWrite
• Selección de entradas de los multiplexores (flujo de datos)
– ALUSrc, MemToReg
I-Type: op rs rt address offset
31 25 20 15 0
R-type:
31 25 20 15 5 0
op rs rt rd functshamt
10
J-type:
31 25 0
op target addressJ-type:
31 25 0
op target address
103. Curso 2005/2006 Fundamentos de Computadores 18
Diseño de la RD – Integración de la
RD y de la UC
Read
Address
Instr[31-0]
Instruction
Memory
Add
PC
4
Write Data
Read Addr 1
Read Addr 2
Write Addr
Register
File
Read
Data 1
Read
Data 2
ALU
ovf
zero
RegWrite
Data
Memory
Address
Write Data
Read Data
MemWrite
MemRead
Sign
Extend16 32
MemtoReg
ALUSrc
Shift
left 2
Add
PCSrc
RegDst
ALU
control
1
1
1
0
0
0
0
1
ALUOp
Instr[5-0]
Instr[15-0]
Instr[25-21]
Instr[20-16]
Instr[15
-11]
Control
Unit
Instr[31-26]
Branch
104. Curso 2005/2006 Fundamentos de Computadores 19
Diseño de la RD – Flujo de datos y
control para tipo R
Read
Address
Instr[31-0]
Instruction
Memory
Add
PC
4
Write Data
Read Addr 1
Read Addr 2
Write Addr
Register
File
Read
Data 1
Read
Data 2
ALU
ovf
zero
RegWrite
Data
Memory
Address
Write Data
Read Data
MemWrite
MemRead
Sign
Extend16 32
MemtoReg
ALUSrc
Shift
left 2
Add
PCSrc
RegDst
ALU
control
1
1
1
0
0
0
0
1
ALUOp
Instr[5-0]
Instr[15-0]
Instr[25-21]
Instr[20-16]
Instr[15
-11]
Control
Unit
Instr[31-26]
Branch
105. Curso 2005/2006 Fundamentos de Computadores 20
Diseño de la RD – Flujo de datos y
control para lw
Read
Address
Instr[31-0]
Instruction
Memory
Add
PC
4
Write Data
Read Addr 1
Read Addr 2
Write Addr
Register
File
Read
Data 1
Read
Data 2
ALU
ovf
zero
RegWrite
Data
Memory
Address
Write Data
Read Data
MemWrite
MemRead
Sign
Extend16 32
MemtoReg
ALUSrc
Shift
left 2
Add
PCSrc
RegDst
ALU
control
1
1
1
0
0
0
0
1
ALUOp
Instr[5-0]
Instr[15-0]
Instr[25-21]
Instr[20-16]
Instr[15
-11]
Control
Unit
Instr[31-26]
Branch
106. Curso 2005/2006 Fundamentos de Computadores 21
Diseño de la RD – Flujo de datos y
control para beq
Read
Address
Instr[31-0]
Instruction
Memory
Add
PC
4
Write Data
Read Addr 1
Read Addr 2
Write Addr
Register
File
Read
Data 1
Read
Data 2
ALU
ovf
zero
RegWrite
Data
Memory
Address
Write Data
Read Data
MemWrite
MemRead
Sign
Extend16 32
MemtoReg
ALUSrc
Shift
left 2
Add
PCSrc
RegDst
ALU
control
1
1
1
0
0
0
0
1
ALUOp
Instr[5-0]
Instr[15-0]
Instr[25-21]
Instr[20-16]
Instr[15
-11]
Control
Unit
Instr[31-26]
Branch
107. Curso 2005/2006 Fundamentos de Computadores 22
Integración de la RD – Flujo de
datos y control para j
Read
Address
Instr[31-0]
Instruction
Memory
Add
PC
4
Write Data
Read Addr 1
Read Addr 2
Write Addr
Register
File
Read
Data 1
Read
Data 2
ALU
ovf
zero
RegWrite
Data
Memory
Address
Write Data
Read Data
MemWrite
MemRead
Sign
Extend16 32
MemtoReg
ALUSrc
Shift
left 2
Add
PCSrc
RegDst
ALU
control
1
1
1
0
0
0
0
1
ALUOp
Instr[5-0]
Instr[15-0]
Instr[25-21]
Instr[20-16]
Instr[15
-11]
Control
Unit
Instr[31-26]
Branch
Shift
left 2
0
1
Jump
32
Instr[25-0]
26
PC+4[31-28]
28
108. Curso 2005/2006 Fundamentos de Computadores 23
Diseño de la UC de la ALU –
Estructura de la ALU
Entradas de control
(ALUctr)
FUNCIÓN
000 AND
001 OR
010 ADD
110 SUB
111 SLT
A L U R e s u lt
Z e r o
O v e rflo w
a
b
A L U o p e r a tio n
C a rry O u t
A L U R e s u lt
Z e r o
O v e rflo w
a
b
A L U o p e r a tio n
C a rry O u t
0
3
Result
Operation
a
1
CarryIn
CarryOut
0
1
Binvert
b 2
Less
a.
0
3
Result
Operation
a
1
CarryIn
CarryOut
0
1
Binvert
b 2
Less
a.
109. Curso 2005/2006 Fundamentos de Computadores 24
Diseño de la UC de la ALU –
Especificación del control ALU
• Operación ALU
– lw, sw ($rs + extensión-signo(IR[15:0]))
– beq ($rs-$rt)
– add, sub, or, and y slt (operación específica)
Cod. Op. ALUop Instrucción FUNCT Op. deseada
Entradas de control
de la ALU (ALUctr)
LW 00 Carga XXXXXX suma 010
SW 00 Almacena XXXXXX suma 010
Branch Equal 01 salto XXXXXX resta 110
R-Type 10 suma 100000 suma 010
R-Type 10 resta 100010 resta 110
R-Type 10 AND 100100 and 000
R-Type 10 OR 100101 or 001
R-Type 10 set on less than 101010 set on less than 111
110. Curso 2005/2006 Fundamentos de Computadores 25
Diseño de la UC de la ALU – Tabla
de verdad del control ALU
ALUop funct ALUctr
ALUop1 ALUop0 F5 F4 F3 F2 F1 F0 bit2 bit1 bit0
0 0 x x x x x x 0 1 0
x 1 x x x x x x 1 1 0
1 x x x 0 0 0 0 0 1 0
1 x x x 0 0 1 0 1 1 0
1 x x x 0 1 0 0 0 0 0
1 x x x 0 1 0 1 0 0 1
1 x x x 1 0 1 0 1 1 1
Main
Control
op
6
ALU
Control
(Local)
func
N
6
ALUop
ALUctr
3
ALU
op rs rt rd shamt funct
061116212631
6 bits 6 bits5 bits5 bits5 bits5 bits
Instrucción Tipo R:
funct<3:0> Instruction Op.
0000
0010
0100
0101
1010
add
subtract
and
or
set-on-less-than
ALUop funct ALUctr
ALUop1 ALUop0 F5 F4 F3 F2 F1 F0 bit2 bit1 bit0
0 0 x x x x x x 0 1 0
x 1 x x x x x x 1 1 0
1 x x x 0 0 0 0 0 1 0
1 x x x 0 0 1 0 1 1 0
1 x x x 0 1 0 0 0 0 0
1 x x x 0 1 0 1 0 0 1
1 x x x 1 0 1 0 1 1 1
Main
Control
op
6
ALU
Control
(Local)
func
N
6
ALUop
ALUctr
3
ALU
Main
Control
op
6
ALU
Control
(Local)
func
N
6
ALUop
ALUctr
3
ALU
op rs rt rd shamt funct
061116212631
6 bits 6 bits5 bits5 bits5 bits5 bits
Instrucción Tipo R: op rs rt rd shamt funct
061116212631
6 bits 6 bits5 bits5 bits5 bits5 bits
Instrucción Tipo R:
funct<3:0> Instruction Op.
0000
0010
0100
0101
1010
add
subtract
and
or
set-on-less-than
funct<3:0> Instruction Op.
0000
0010
0100
0101
1010
add
subtract
and
or
set-on-less-than
111. Curso 2005/2006 Fundamentos de Computadores 26
Diseño de la UC de la ALU -
Implementación del control ALU
ALUop funct Operación (ALUctr)
ALUop1 ALUop0 F5 F4 F3 F2 F1 F0 bit2 bit1 bit0
0 0 x x x x x x 0 1 0
x 1 x x x x x x 1 1 0
1 x x x 0 0 0 0 0 1 0
1 x x x 0 0 1 0 1 1 0
1 x x x 0 1 0 0 0 0 0
1 x x x 0 1 0 1 0 0 1
1 x x x 1 0 1 0 1 1 1
Operation2
Operation1
Operation0
Operation
ALUOp1
F3
F2
F1
F0
F (5– 0)
ALUOp0
ALUOp
ALU control block
Operation2
Operation1
Operation0
Operation
ALUOp1
F3
F2
F1
F0
F (5– 0)
ALUOp0
ALUOp
ALU control block
112. Curso 2005/2006 Fundamentos de Computadores 27
Diseño de la UC de la ALU – Unidad
de control
MemtoReg
MemRead
MemWrite
ALUOp
ALUSrc
RegDst
PC
Instruction
memory
Read
address
Instruction
[31–0]
Instruction [20–16]
Instruction [25–21]
Add
Instruction[5–0]
RegWrite
4
16 32Instruction [15–0]
0
Registers
Write
register
Write
data
Write
data
Read
data1
Read
data2
Read
register1
Read
register2
Sign
extend
ALU
result
Zero
Data
memory
Address Read
data M
u
x
1
1
M
u
x
0
1
M
u
x
0
1
M
u
x
0
Instruction [15–11]
ALU
control
Shift
left 2
PCSrc
ALU
Add ALU
result
MemtoReg
MemRead
MemWrite
ALUOp
ALUSrc
RegDst
PC
Instruction
memory
Read
address
Instruction
[31–0]
Instruction [20–16]
Instruction [25–21]
Add
Instruction[5–0]
RegWrite
4
16 32Instruction [15–0]
0
Registers
Write
register
Write
data
Write
data
Read
data1
Read
data2
Read
register1
Read
register2
Sign
extend
ALU
result
Zero
Data
memory
Address Read
data M
u
x
1
1
M
u
x
0
1
M
u
x
0
1
M
u
x
0
Instruction [15–11]
ALU
control
Shift
left 2
PCSrc
ALU
Add ALU
result
MemtoReg
MemRead
MemWrite
ALUOp
ALUSrc
RegDst
PC
Instruction
memory
Read
address
Instruction
[31–0]
Instruction [20–16]
Instruction [25–21]
Add
Instruction[5–0]
RegWrite
4
16
MemtoReg
MemRead
MemWrite
ALUOp
ALUSrc
RegDst
PC
Instruction
memory
Read
address
Instruction
[31–0]
Instruction [20–16]
Instruction [25–21]
Add
Instruction[5–0]
RegWrite
4
16 32Instruction [15–0]
0
Registers
Write
register
Write
data
Write
data
Read
data1
Read
data2
Read
register1
Read
register2
Sign
extend
ALU
result
Zero
Data
memory
Address Read
data M
u
x
1
1
M
u
x
32Instruction [15–0]
0
Registers
Write
register
Write
data
Write
data
Read
data1
Read
data2
Read
register1
Read
register2
Sign
extend
ALU
result
Zero
Data
memory
Address Read
data M
u
x
1
1
M
u
x
0
1
M
u
x
0
1
M
u
x
0
Instruction [15–11]
ALU
control
Shift
left 2
PCSrc
ALU
Add ALU
result
Tipo R: op rs rt rd shamt funct
Bits: 31-26 25-21 20-16 15-11 10-6 5-0
Tipo I: op rs rt Inmediato16
Bits: 31-26 25-21 20-16 15-0
Tipo J: op Dirección
Bits: 31-26 26-0
113. Curso 2005/2006 Fundamentos de Computadores 28
Diseño de la UC – Funcionalidad de
las señales de control
Señal Acción cuando es desactivada (0) Acción cuando se activa (1)
RegDst
El registro destino para las escrituras viene del
campo rt (bits 20-16)
El registro destino para las escrituras viene del campo
rd (bits 15-11)
RegWrite
Ninguno Escribe el dato en "WriteData" en el registro dado por
"WriteRegister".
AluSrc
El segundo operando de la ALU viene del banco de
registro (salida 2)
El segundo operando de la ALU son los 16 bits menos
significativos de la instrucción extendidos en signo
PCSrc
Selecciona PC+4 como nuevo valor del PC Selecciona la dirección de salto computada como nuevo
valor del PC
MemWrite
Ninguna Escribe en la dirección de memoria "Address" el dato
"WriteData"
MemRead
Ninguna Lee un dato de la dirección de memoria "Address" y lo
deja en la salida "ReadData"
MemToReg
El valor a realimentar al campo "WriteData" viene
de la salida de la ALU
El valor a realimentar al campo "WriteData" viene de la
memoria
MemtoReg
MemRead
MemWrite
ALUOp
ALUSrc
RegDst
PC
Instruction
memory
Read
address
Instruction
[31–0]
Instruction[20–16]
Instruction[25–21]
Add
Instruction[5–0]
RegWrite
4
16 32Instruction[15–0]
0
Registers
Write
register
Write
data
Write
data
Read
data1
Read
data2
Read
register1
Read
register2
Sign
extend
ALU
result
Zero
Data
memory
Address Read
data M
u
x
1
1
Mu
x
0
1
M
ux
0
1
M
ux
0
Instruction[15–11]
ALU
control
Shift
left2
PCSrc
ALU
Add ALU
result
MemtoReg
MemRead
MemWrite
ALUOp
ALUSrc
RegDst
PC
Instruction
memory
Read
address
Instruction
[31–0]
Instruction[20–16]
Instruction[25–21]
Add
Instruction[5–0]
RegWrite
4
16 32Instruction[15–0]
0
Registers
Write
register
Write
data
Write
data
Read
data1
Read
data2
Read
register1
Read
register2
Sign
extend
ALU
result
Zero
Data
memory
Address Read
data M
u
x
1
1
Mu
x
0
1
M
ux
0
1
M
ux
0
Instruction[15–11]
ALU
control
Shift
left2
PCSrc
ALU
Add ALU
result
MemtoReg
MemRead
MemWrite
ALUOp
ALUSrc
RegDst
PC
Instruction
memory
Read
address
Instruction
[31–0]
Instruction[20–16]
Instruction[25–21]
Add
Instruction[5–0]
RegWrite
4
16
MemtoReg
MemRead
MemWrite
ALUOp
ALUSrc
RegDst
PC
Instruction
memory
Read
address
Instruction
[31–0]
Instruction[20–16]
Instruction[25–21]
Add
Instruction[5–0]
RegWrite
4
16 32Instruction[15–0]
0
Registers
Write
register
Write
data
Write
data
Read
data1
Read
data2
Read
register1
Read
register2
Sign
extend
ALU
result
Zero
Data
memory
Address Read
data M
u
x
1
1
Mu
x
32Instruction[15–0]
0
Registers
Write
register
Write
data
Write
data
Read
data1
Read
data2
Read
register1
Read
register2
Sign
extend
ALU
result
Zero
Data
memory
Address Read
data M
u
x
1
1
Mu
x
0
1
M
ux
0
1
M
ux
0
Instruction[15–11]
ALU
control
Shift
left2
PCSrc
ALU
Add ALU
result
115. Curso 2005/2006 Fundamentos de Computadores 30
Diseño monociclo – Ventajas y
desventajas
• Todas las instrucciones tardan un ciclo
• Aprovechamiento ineficiente del área del chip (componentes
repetidos)
• Ciclo de reloj grande para acomodar la instrucción más lenta
– Las instrucciones de punto flotante requerirían un tiempo de ciclo extra
largo
Clk
lw sw Waste
Cycle 1 Cycle 2
Clk
lw sw Waste
Cycle 1 Cycle 2
116. Curso 2005/2006 Fundamentos de Computadores 31
Diseño multiciclo
• División del ciclo de instrucción en etapas (cada
etapa un ciclo de reloj)
– CPI (ciclos por instrucción) variables (instrucciones
lentas y rápidas)
– Las etapas presentan cargas de trabajo equilibradas
• Reutilización de las unidades funcionales
– Memoria unificada, pero un único acceso por ciclo
– Una única ALU, pero una única operación ALU por
ciclo
117. Curso 2005/2006 Fundamentos de Computadores 32
Diseño de la RD – Esbozo de la ruta
de datos
• Inclusión de registros a la salida de las unidades funcionales para preservar
los datos (generalmente entre ciclos adyacentes)
– IR, registro de instrucciones
– MDR, registro de dato leído de memoria
– A, B registros de datos leídos desde el banco de registro
– ALUOut, registro de salida de la ALU
• IR actualiza el contenido cada instrucción, el resto de los registros cada
ciclo de reloj
Address
Read Data
(Instr. or Data)
Memory
PC
Write Data
Read Addr 1
Read Addr 2
Write Addr
Register
File
Read
Data 1
Read
Data 2
ALU
Write Data
IRMDR
AB
ALUout
Address
Read Data
(Instr. or Data)
Memory
PC
Write Data
Read Addr 1
Read Addr 2
Write Addr
Register
File
Read
Data 1
Read
Data 2
ALU
Write Data
IRMDR
AB
ALUout
118. Curso 2005/2006 Fundamentos de Computadores 33
Diseño de la RD – Integración de la
RD y de la UC (1/2)
• Los multiplexores a las entradas de las
unidades funcionales y la ejecución multiciclo
permiten el compartimiento de los recursos
hardware
Shift
left 2
MemtoReg
IorD MemRead MemWrite
PC
Memory
MemData
Write
data
M
u
x
0
1
Registers
Write
register
Write
data
Read
data 1
Read
data 2
Read
register 1
Read
register 2
Instruction
[15– 11]
M
u
x
0
1
M
u
x
0
1
4
ALUOpALUSrcB
RegDst RegWrite
Instruction
[15– 0]
Instruction [5– 0]
Sign
extend
3216
Instruction
[25– 21]
Instruction
[20– 16]
Instruction
[15– 0]
Instruction
register
1 M
u
x
0
3
2
ALU
control
M
u
x
0
1
ALU
result
ALU
ALUSrcA
ZeroA
B
ALUOut
IRWrite
Address
Memory
data
register
Shift
left 2
MemtoReg
IorD MemRead MemWrite
PC
Memory
MemData
Write
data
M
u
x
0
1
Registers
Write
register
Write
data
Read
data 1
Read
data 2
Read
register 1
Read
register 2
Instruction
[15–
Shift
left 2
MemtoReg
IorD MemRead MemWrite
PC
Memory
MemData
Write
data
M
u
x
0
1
Registers
Write
register
Write
data
Read
data 1
Read
data 2
Read
register 1
Read
register 2
Instruction
[15– 11]
M
u
x
0
1
M
u
x
0
1
4
ALUOpALUSrcB
RegDst RegWrite
Instruction
[15– 0]
Instruction [5– 0]
Sign
extend
3216
Instruction
[25– 21]
Instruction
[20– 16]
Instruction
[15– 0]
Instruction
register
1 M
u
11]
M
u
x
0
1
M
u
x
0
1
4
ALUOpALUSrcB
RegDst RegWrite
Instruction
[15– 0]
Instruction [5– 0]
Sign
extend
3216
Instruction
[25– 21]
Instruction
[20– 16]
Instruction
[15– 0]
Instruction
register
1 M
u
x
0
3
2
ALU
control
M
u
x
0
1
ALU
result
ALU
ALUSrcA
ZeroA
B
ALUOut
IRWrite
Address
Memory
data
register
119. Curso 2005/2006 Fundamentos de Computadores 34
Diseño de la RD – Integración de la
RD y de la UC (2/2)
Shift
left 2
PC
M
u
x
0
1
Registers
Write
register
Write
data
Read
data 1
Read
data 2
Read
register 1
Read
register 2
Instruction
[15– 11]
M
u
x
0
1
M
u
x
0
1
4
Instruction
[15– 0]
Sign
extend
3216
Instruction
[25– 21]
Instruction
[20– 16]
Instruction
[15– 0]
Instruction
register
ALU
control
ALU
result
ALU
Zero
Memory
data
register
A
B
IorD
MemRead
MemWrite
MemtoReg
PCWriteCond
PCWrite
IRWrite
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWrite
Control
Outputs
Op
[5– 0]
Instruction
[31-26]
Instruction [5– 0]
M
u
x
0
2
Jump
address [31-0]Instruction [25– 0] 26 28
Shift
left 2
PC [31-28]
1
1 M
u
x
0
3
2
M
u
x
0
1
ALUOut
Memory
MemData
Write
data
Address
Shift
left 2
PC
M
u
x
0
1
Registers
Write
register
Write
data
Read
data 1
Read
data 2
Read
register 1
Read
register 2
Instruction
[15– 11]
M
u
x
0
1
M
u
x
0
1
4
Instruction
[15– 0]
Sign
e
Shift
left 2
PC
M
u
x
0
1
Registers
Write
register
Write
data
Read
data 1
Read
data 2
Read
register 1
Read
register 2
Instruction
[15– 11]
M
u
x
0
1
M
u
x
0
1
4
Instruction
[15– 0]
Sign
extend
3216
Instruction
[25– 21]
Instruction
[20– 16]
Instruction
[15– 0]
Instruction
register
ALU
control
ALU
result
ALU
Zero
Memory
data
register
A
B
Io
xtend
3216
Instruction
[25– 21]
Instruction
[20– 16]
Instruction
[15– 0]
Instruction
register
ALU
control
ALU
result
ALU
Zero
Memory
data
register
A
B
IorD
MemRead
MemWrite
MemtoReg
PCWriteCond
PCWrite
IRWrite
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWrite
Control
Outputs
Op
[5– 0]
Instruction
[31-26]
Instruction [5– 0]
M
u
x
0
2
Jump
address [31-0]Instructi
rD
MemRead
MemWrite
MemtoReg
PCWriteCond
PCWrite
IRWrite
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWrite
Control
Outputs
Op
[5– 0]
Instruction
[31-26]
Instruction [5– 0]
M
u
x
0
2
Jump
address [31-0]Instruction [25– 0] 26 28
Shift
left 2
PC [31-28]
1
1 M
u
x
0
3
2
M
u
x
0
1
ALUOut
Memory
MemData
Write
data
Address
120. Curso 2005/2006 Fundamentos de Computadores 35
Diseño de la RD - Etapas de la
ejecución de las instrucciones
(1/3)
1. Búsqueda de la instrucción y
actualización del PC (IF)
IR M[PC]; PC PC + 4
2. Decodificación instrucción, lectura de
registros y cálculo de dirección efectiva
de salto (DEC/REG)
A RegFile[$rs]; B RegFIle[$rt];
ALUOut PC + extensión-signo(IR[15:0])<<2
121. Curso 2005/2006 Fundamentos de Computadores 36
Diseño de la RD - Etapas de la
ejecución de las instrucciones
(2/3)
3. Ejecución (EX)
– Tipo R (add, sub, and, or, slt)
ALUOut A op B
– Referencia a memoria (lw, sw)
ALUOut A + extensión-signo(IR[15:0])
– Salto (beq)
if (A=B) PC ALUOut
– Bifurcación (j)
PC PC[31:28] || IR[25:0]<<2
122. Curso 2005/2006 Fundamentos de Computadores 37
Diseño de la RD - Etapas de la
ejecución de las instrucciones
(3/3)
4. Acceso a memoria o fin ejecución tipo R
(MEM)
– Acceso a memoria para lectura
MDR M[ALUOut]
– Acceso a memoria para escritura
M[ALUOut] B
– Fin ejecución tipo R
$rd ALUOut
5. Fin de lectura en memoria (WB)
MDR M[ALUOut]
123. Curso 2005/2006 Fundamentos de Computadores 38
Etapas de la ejecución de las
instrucciones - lw
Etapa IF
Shift
left 2
PC
M
u
x
0
1
Registers
Write
register
Write
data
Read
data 1
Read
data 2
Read
register 1
Read
register 2
Instruction
[15–11]
M
u
x
0
1
M
u
x
0
1
4
Instruction
[15–0]
Sign
extend
3216
Instruction
[25–21]
Instruction
[20–16]
Instruction
[15–0]
Instruction
register
ALU
control
ALU
result
ALU
Zero
Memory
data
register
A
B
IorD
MemRead
MemWrite
MemtoReg
PCWriteCond
PCWrite
IRWrite
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWrite
Control
Outputs
Op
[5–0]
Instruction
[31-26]
Instruction [5–0]
M
u
x
0
2
Jump
address [31-0]Instruction [25–0] 26 28
Shift
left 2
PC [31-28]
1
1 M
u
x
0
3
2
M
u
x
0
1
ALUOut
Memory
MemData
Write
data
Address
124. Curso 2005/2006 Fundamentos de Computadores 39
Etapas de la ejecución de las
instrucciones - lw
Etapa DEC/REG
Shift
left 2
PC
M
u
x
0
1
Registers
Write
register
Write
data
Read
data 1
Read
data 2
Read
register 1
Read
register 2
Instruction
[15–11]
M
u
x
0
1
M
u
x
0
1
4
Instruction
[15–0]
Sign
extend
3216
Instruction
[25–21]
Instruction
[20–16]
Instruction
[15–0]
Instruction
register
ALU
control
ALU
result
ALU
Zero
Memory
data
register
A
B
IorD
MemRead
MemWrite
MemtoReg
PCWriteCond
PCWrite
IRWrite
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWrite
Control
Outputs
Op
[5–0]
Instruction
[31-26]
Instruction [5–0]
M
u
x
0
2
Jump
address [31-0]Instruction [25–0] 26 28
Shift
left 2
PC [31-28]
1
1 M
u
x
0
3
2
M
u
x
0
1
ALUOut
Memory
MemData
Write
data
Address
125. Curso 2005/2006 Fundamentos de Computadores 40
Etapas de la ejecución de las
instrucciones - lw
Etapa EX
Shift
left 2
PC
M
u
x
0
1
Registers
Write
register
Write
data
Read
data 1
Read
data 2
Read
register 1
Read
register 2
Instruction
[15–11]
M
u
x
0
1
M
u
x
0
1
4
Instruction
[15–0]
Sign
extend
3216
Instruction
[25–21]
Instruction
[20–16]
Instruction
[15–0]
Instruction
register
ALU
control
ALU
result
ALU
Zero
Memory
data
register
A
B
IorD
MemRead
MemWrite
MemtoReg
PCWriteCond
PCWrite
IRWrite
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWrite
Control
Outputs
Op
[5–0]
Instruction
[31-26]
Instruction [5–0]
M
u
x
0
2
Jump
address [31-0]Instruction [25–0] 26 28
Shift
left 2
PC [31-28]
1
1 M
u
x
0
3
2
M
u
x
0
1
ALUOut
Memory
MemData
Write
data
Address
126. Curso 2005/2006 Fundamentos de Computadores 41
Etapas de la ejecución de las
instrucciones - lw
Etapa MEM
Shift
left 2
PC
M
u
x
0
1
Registers
Write
register
Write
data
Read
data 1
Read
data 2
Read
register 1
Read
register 2
Instruction
[15–11]
M
u
x
0
1
M
u
x
0
1
4
Instruction
[15–0]
Sign
extend
3216
Instruction
[25–21]
Instruction
[20–16]
Instruction
[15–0]
Instruction
register
ALU
control
ALU
result
ALU
Zero
Memory
data
register
A
B
IorD
MemRead
MemWrite
MemtoReg
PCWriteCond
PCWrite
IRWrite
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWrite
Control
Outputs
Op
[5–0]
Instruction
[31-26]
Instruction [5–0]
M
u
x
0
2
Jump
address [31-0]Instruction [25–0] 26 28
Shift
left 2
PC [31-28]
1
1 M
u
x
0
3
2
M
u
x
0
1
ALUOut
Memory
MemData
Write
data
Address
127. Curso 2005/2006 Fundamentos de Computadores 42
Etapas de la ejecución de las
instrucciones - lw
Etapa WB
Shift
left 2
PC
M
u
x
0
1
Registers
Write
register
Write
data
Read
data 1
Read
data 2
Read
register 1
Read
register 2
Instruction
[15–11]
M
u
x
0
1
M
u
x
0
1
4
Instruction
[15–0]
Sign
extend
3216
Instruction
[25–21]
Instruction
[20–16]
Instruction
[15–0]
Instruction
register
ALU
control
ALU
result
ALU
Zero
Memory
data
register
A
B
IorD
MemRead
MemWrite
MemtoReg
PCWriteCond
PCWrite
IRWrite
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWrite
Control
Outputs
Op
[5–0]
Instruction
[31-26]
Instruction [5–0]
M
u
x
0
2
Jump
address [31-0]Instruction [25–0] 26 28
Shift
left 2
PC [31-28]
1
1 M
u
x
0
3
2
M
u
x
0
1
ALUOut
Memory
MemData
Write
data
Address
128. Curso 2005/2006 Fundamentos de Computadores 43
Diseño multiciclo - Diseño de la
unidad control
• Máquina de estados finitos (FSM)
– Especificación del control mediante un diagrama de estados
finitos (representación gráfica o tabular)
– Máquina de estados finitos
• Conjunto de estados
• Función estado siguiente
– Si ×Ij Sk
• Función salida
– Máquinas de Moore: Si Ok
– Máquinas de Mealy: Si ×Ij Ok
• Microprogramación
– Especificación del control mediante un programa
– Necesaria para simplificar la especificación de una UC compleja
130. Curso 2005/2006 Fundamentos de Computadores 45
Control cableado - Especificación
de la UC con una FSM (tabla)
Entradas Salidas
Código Operación Estado Actual
Estado
Siguiente
Señales de Control para el Camino de Datos
op5
op4
op3
op2
op1
op0
s3
s2
s1
s0
ns3
ns2
ns1
ns0
pCWrite
PCWriteCond
IorD
MemRead
MemWrite
IRWRite
MemToReg
PCSource1
PCSource0
ALUOp1
ALUop0
ALUSrcB1
ALUSrcB0
ALUSrcA
Regwrite
RegDst
0 x x x x x x 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0
1 lw 1 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0
1 sw 1 0 1 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0
1 R 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0
1 beq 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0
1 j 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0
2 lw 1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0
2 sw 1 0 1 0 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0
3 x x x x x x 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0
4 x x x x x x 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0
5 x x x x x x 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0
6 x x x x x x 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0
7 x x x x x x 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
8 x x x x x x 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0
9 x x x x x x 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
131. Curso 2005/2006 Fundamentos de Computadores 46
Control cableado – Implementación
de la FSM
PCWrite
PCWriteCond
IorD
MemtoReg
PCSource
ALUOp
ALUSrcB
ALUSrcA
RegWrite
RegDst
NS3
NS2
NS1
NS0
Op5
Op4
Op3
Op2
Op1
Op0
S3
S2
S1
S0
State register
IRWrite
MemRead
MemWrite
Instruction register
opcode field
Outputs
Control logic
Inputs
Estado
Siguiente
Estado
Actual
PCWrite
PCWriteCond
IorD
MemtoReg
PCSource
ALUOp
ALUSrcB
ALUSrcA
RegWrite
RegDst
NS3
NS2
NS1
NS0
Op5
Op4
Op3
Op2
Op1
Op0
S3
S2
S1
S0
State register
IRWrite
MemRead
MemWrite
Instruction register
opcode field
Outputs
Control logic
Inputs
PCWrite
PCWriteCond
IorD
MemtoReg
PCSource
ALUOp
ALUSrcB
ALUSrcA
RegWrite
RegDst
NS3
NS2
NS1
NS0
Op5
Op4
Op3
Op2
Op1
Op0
S3
S2
S1
S0
State register
IRWrite
MemRead
MemWrite
Instruction r
PCWrite
PCWriteCond
IorD
MemtoReg
PCSource
ALUOp
ALUSrcB
ALUSrcA
RegWrite
RegDst
NS3
NS2
NS1
NS0
Op5
Op4
Op3
Op2
Op1
Op0
S3
S2
S1
S0
State register
IRWrite
MemRead
MemWrite
Instruction register
opcode field
Outputs
Control logic
Inputs
Estado
Siguiente
Estado
Actual
132. Curso 2005/2006 Fundamentos de Computadores 47
Control cableado – Ecuaciones de
implementación de la FSM
Señal Control Ecuación lógica
NS3 -> (S3'S2'S1'S0) (OP5'OP4'OP3'OP2OP1'OP0') + (S3'S2'S1'S0) (OP5'OP4'OP3'OP2'OP1OP0') =
Estado 1 (op[5:0] = 'beq') + Estado 1 (op[5:0] = 'jmp')
NS2 -> Estado 1 (op[5:0] = 'R-format') + Estado 2 (op[5:0] = 'sw') + Estado 3 + Estado 6
NS1 -> Estado 1 (op[5:0] = 'lw') + Estado 1 (op[5:0] = 'sw') + Estado 1 (op[5:0] = 'R-format') +
Estado 2 (op[5:0] = 'lw') + Estado 2 (op[5:0] = 'sw') + Estado 6
NS0 -> Estado 0 + Estado 1 (op[5:0] = 'jmp') + Estado 2 (op[5:0] = 'lw') + Estado 2 (op[5:0] = 'sw') + Estado 6
PCWrite -> Estado 0 + Estado 9
PCWriteCond -> Estado 8
IorD -> Estado 3 + Estado 5
MemRead -> Estado 0 + Estado 3
MemWrite -> Estado 5
IRWrite -> Estado 0
MemToReg -> Estado 4
PCSource1 -> Estado 9
PCSource0 -> Estado 8
ALUOp1 -> Estado 6
ALUOp0 -> Estado 8
ALUSrcB1 -> Estado 1 + Estado 2
ALUSrcB0 -> Estado 0 + Estado 1
ALUSrcA -> Estado 2 + Estado 6 + Estado 8
RegWrite -> Estado 4 + Estado 7
RegDst -> Estado 7
133. Curso 2005/2006 Fundamentos de Computadores 48
Control cableado - Implementación
de FSM con ROM
• Diseño unificado (Tamaño 210 × 20 =
20Kb)
– 6 bits código de operación + 4 bits de
los estados = 210 posiciones de
memoria
– 16 salidas de control + 4 salidas de
nuevo estado = 20 bits de anchura
• Diseño no unificado (Tamaño 4.25Kb)
– ROM de señales de control (Tamaño
24 × 16 = 256b)
• 4 bits de los estados = 24
posiciones de
memoria
• 16 salidas de control = 4 bits de
anchura
– ROM de nuevo estado (Tamaño 210 × 4
= 4Kb)
• 6 bits código de operación + 4 bits de
los estados = 210
posiciones de
memoria
• 4 salidas de nuevo estado = 4 bits de
anchura
PCWrite
PCWriteCond
IorD
MemtoReg
PCSource
ALUOp
ALUSrcB
ALUSrcA
RegWrite
RegDst
NS3
NS2
NS1
NS0
Op5
Op4
Op3
Op2
Op1
Op0
S3
S2
S1
S0
State register
IRWrite
MemRead
MemWrite
Instruction register
opcode field
Outputs
Control logic
Inputs
Tamaño:
20 Kbits vs 4.25 Kbits
PCWrite
PCWriteCond
IorD
MemtoReg
PCSource
ALUOp
ALUSrcB
ALUSrcA
RegWrite
RegDst
NS3
NS2
NS1
NS0
Op5
Op4
Op3
Op2
Op1
Op0
S3
S2
S1
S0
State register
IRWrite
MemRead
MemWrite
Instruction r
PCWrite
PCWriteCond
IorD
MemtoReg
PCSource
ALUOp
ALUSrcB
ALUSrcA
RegWrite
RegDst
NS3
NS2
NS1
NS0
Op5
Op4
Op3
Op2
Op1
Op0
S3
S2
S1
S0
State register
IRWrite
MemRead
MemWrite
Instruction register
opcode field
Outputs
Control logic
Inputs
Tamaño:
20 Kbits vs 4.25 Kbits
135. Curso 2005/2006 Fundamentos de Computadores 50
Diseño de la unidad de control –
Control microprogramado
• El estado siguiente
es frecuentemente el
estado actual + 1
• Las señales de
control están
almacenadas en una
memoria
PCWrite
PCWriteCond
IorD
MemtoReg
PCSource
ALUOp
ALUSrcB
ALUSrcA
RegWrite
AddrCtl
Outputs
Microcode memory
IRWrite
MemRead
MemWrite
RegDst
Control unit
Input
Microprogram counter
Address select logic
Op[5–0]
Adder
1
Datapath
Instruction register
opcode field
BWrite
Secuenciador
externo
PCWrite
PCWriteCond
IorD
MemtoReg
PCSource
ALUOp
ALUSrcB
ALUSrcA
RegWrite
AddrCtl
Outputs
Microcode memory
IRWrite
MemRead
MemWrite
RegDst
Control unit
Input
Microprogram counter
Address select logic
Op[5–0]
Adder
1
Datapath
Instruction register
opcode field
BWrite
PCWrite
PCWriteCond
IorD
MemtoReg
PCSource
ALUOp
ALUSrcB
ALUSrcA
RegWrite
AddrCtl
Outputs
Microcode memory
IRWrite
MemRead
MemWrite
RegDst
Control unit
Input
Microprogram counter
Address select
PCWrite
PCWriteCond
IorD
MemtoReg
PCSource
ALUOp
ALUSrcB
ALUSrcA
RegWrite
AddrCtl
Outputs
Microcode memory
IRWrite
MemRead
MemWrite
RegDst
Control unit
Input
Microprogram counter
Address select logic
Op[5–0]
Adder
1
Datapath
Instruction register
opcode field
BWrite
Secuenciador
externo
Secuenciador
externo
136. Curso 2005/2006 Fundamentos de Computadores 51
Control microprogramado –
Formato de la microinstrucción
• 7 campos: 6 campos de control + 1 campo de
secuenciación
Control
ALU
SRC1 SRC2
Control
Registro
Memoria
Control
PCWrite
Secuenciamiento
Nombre del campo Función del campo Valores del campo
Control ALU Especifica la operación que va a realizar la ALU
durante el ciclo.
add
subt
Func code
SRC1 Especifica la fuente para el primer operando de
la ALU
PC
A
SRC2 Especifica la fuente para el segundo operando
de la ALU
B
4
Extend
ExtShft
Control Registro Especifica el número de registro y fuente del
dato que se escribe en el mismo
Read
Write ALU (rd <- ALUout)
Write MDR (rt <- MDR)
Memoria Especifica lectura o escritura y la fuente de la
dirección
Read PC (IR <- M[PC])
Read ALU (MDR <- M[ALUout]
Write ALU (M[ALUout] <- B)
Control PCWrite Especifica la escritura del PC ALU
ALUOut-Cond
Jump Address
Secuenciamiento Especifica la siguiente microinstrucción que se
va a ejecutar
Seq
Fetch
Dispatch i
137. Curso 2005/2006 Fundamentos de Computadores 52
Control microprogramado– Señales
asociadas a los campos y valores
C o n tro l A L U
A L U o p 1 A L U O p 0
O p e ra c ió n
0 0 S u m a
0 1 R e sta
1 0 F u n c. c o d e
SR C 2
ALU SrB1 ALU SrcB 0
O peración
0 0 B
0 1 4
1 0 E xtend
1 1 E xtShft
R e g is te r C o n tro l
R e g W rite R e g D st M e m T o R e g
O p e r.
1 1 0 W rite A L U
1 0 1 W rite M D R
M em o ria
IR W rite M em R ead M em W rite IorD
O p er.
1 1 0 0 R ead P C
0 1 0 1 R ead A LU
0 0 1 1 W rite A LU
R e g is te r C o n tro l
R e g W rite R e g D st M e m T o R e g
O p e r.
1 1 0 W rite A L U
1 0 1 W rite M D R
M em o ria
IR W rite M em R ead M em W rite IorD
O p er.
1 1 0 0 R ead P C
0 1 0 1 R ead A LU
0 0 1 1 W rite A LU
Control PCWrite
PCSrc1 PcSrc0 PCwrite PCWrtCond
Oper.
0 0 1 0 ALU
0 1 0 1 ALUOut-Cond
1 0 1 0 Jump address
S ec
A ddrC tl1 A ddrC tl0
O peración
1 1 S eq.
0 0 Fetch
0 1 D ispatch1
1 0 D ispatch2
Control PCWrite
PCSrc1 PcSrc0 PCwrite PCWrtCond
Oper.
0 0 1 0 ALU
0 1 0 1 ALUOut-Cond
1 0 1 0 Jump address
S ec
A ddrC tl1 A ddrC tl0
O peración
1 1 S eq.
0 0 Fetch
0 1 D ispatch1
1 0 D ispatch2
S R C 1
A d d rS rc A
O p e ra c ió n
0 P C
1 A
138. Curso 2005/2006 Fundamentos de Computadores 53
Control microprogramado –
Microprograma de la UC
Estado Etiqueta Control
ALU
SRC1 SRC2 Control
Registros
Memoria Control
PCWrite
Secuenc.
0 Fetch Add PC 4 Read PC ALU Seq.
1 Add PC Extshft Read Dispatch 1
2 Mem1 Add A Extend Dispatch 2
3 LW2 Read ALU Seq
4 Write MDR Fetch
5 SW2 Write ALU Fetch
6 Rformat1 Func
Cod
A B Seq
7 Write ALU Fetch
8 BEQ1 Subt A B ALUOut-
cond
Fetch
9 JUMP1 Jump
Address
Fetch
Control ALU SRC1 SRC2
Control
Registro
Memoria Control PCWrite Sec.
Aluop1
Aluop0
AluSrcA
ALUSrcB1
ALUSrcB0
RegWrite
RegDst
MemToReg
IRWrite
MemRead
IorD
MemWrite
PCSource1
PCSource0
PCWrite
PCWriteCond
AddrCtl1
AddrCtl0
18 señales de control ->
139. Curso 2005/2006 Fundamentos de Computadores 54
Control microprogramado –
Secuenciador del microprograma
• La lógica de selección de direcciones genera la
dirección de la siguiente microinstrucción a
ejecutar
State
Op
Adder
1
PLA or ROM
Mux
3 2 1 0
Dispatch ROM 1Dispatch ROM 2
0
AddrCtl
Address select logic
Instruction register
opcode field
Sec
AddrC tl1 A ddrC tl0
O peración
1 1 Seq.
0 0 Fetch
0 1 D ispatch1
1 0 D ispatch2
Dispatch ROM1
Op [5:0] Nombre Valor
000000 R-Format R-Format1 (6)
000010 jmp JUMP1 (9)
000100 beq BEQ1 (8)
100011 lw MEM1 (2)
101011 sw MEM1 (2)
Dispatch ROM2
Op [5:0] Nombre Valor
100011 lw LW2 (3)
101011 sw SW2 (5)
State
Op
Adder
1
PLA or ROM
Mux
3 2 1 0
Dispatch ROM 1Dispatch ROM 2
0
AddrCtl
Address select logic
Instruction register
opcode field
State
Op
Adder
1
PLA or ROM
Mux
3 2 1 0
Dispatch ROM 1Dispatch ROM 2
0
AddrCtl
Address select logic
Instruction register
opcode field
Sec
AddrC tl1 A ddrC tl0
O peración
1 1 Seq.
0 0 Fetch
0 1 D ispatch1
1 0 D ispatch2
Dispatch ROM1
Op [5:0] Nombre Valor
000000 R-Format R-Format1 (6)
000010 jmp JUMP1 (9)
000100 beq BEQ1 (8)
100011 lw MEM1 (2)
101011 sw MEM1 (2)
Dispatch ROM2
Op [5:0] Nombre Valor
100011 lw LW2 (3)
101011 sw SW2 (5)
140. Curso 2005/2006 Fundamentos de Computadores 55
Excepciones e interrupciones
• Definiciones
– Eventos inesperados que cambian el flujo
normal de ejecución de las instrucciones
– Excepción
• Evento que tiene su origen en el interior del
procesador (desbordamiento aritmético,
instrucción ilegal, etc.)
– Interrupción
• Evento que tiene su origen en el exterior del
procesador (dispositivos de entrada/salida, fallo de
página, etc.)
141. Curso 2005/2006 Fundamentos de Computadores 56
Tratamiento de excepciones en
MIPS
• Acciones básicas
– Guardar la dirección de la instrucción causante en el registro Contador
de Programa de Excepciones (EPC)
– Registrar la causa de la excepción (Registro CAUSE)
– Transferir el control al sistema operativo en alguna dirección
especificada (0xC0000000) donde se tratará la excepción (ejecución de
una rutina de servicio)
Interrupción
Rutina de servicio
de la interrupción
Programa
Interrupción
Rutina de servicio
de la interrupción
Programa
142. Curso 2005/2006 Fundamentos de Computadores 57
Implementación de excepciones en
MIPS
• Excepciones a implementar
– Desbordamiento aritmético
– Instrucción ilegal o no definida
• Registros adicionales requeridos
– EPC: registro de 32 bits para guardar la dirección de la instrucción
causante de la excepción
– CAUSE: Registro de 32 bits para registrar la causa de la excepción.
Utilizaremos sólo el bit menos significativo
• bit 0 = 0 -> Instrucción ilegal
• bit 0 = 1 -> Desbordamiento aritmético
• Señales de control adicionales
– Intcause (0: instr. ilegal; 1: desbordamiento)
– CauseWrite (1: escritura en el registro CAUSE; 0: no escribe)
– EPCWrite (1: escritura en el registro EPC; 0: no escribe)
– Constante: C000 0000 0000 0000 (dirección a donde se
transfiere el control cada vez que se interrumpe)
143. Curso 2005/2006 Fundamentos de Computadores 58
Ruta de datos con soporte de
excepciones
11
10
To state 0 to begin next instruction
PC++Source = 11
ALUSrcA = 0
ALUSrcB = 01
ALUOp = 01
EPCWrite
PCWrite
IntCause = 0
CauseWrite
ALUSrcA = 0
ALUSrcB = 01
ALUOp = 01
EPCWrite
PCWrite
PCSource = 11
PCSource = 11
IntCause = 1
CauseWrite
Shift
left 2
Memory
MemData
Write
data
M
u
x
0
1
Instruction
[15–11]
M
u
x
0
1
4
Instruction
[15–0]
Sign
extend
3216
Instruction
[25– 21]
Instruction
[20– 16]
Instruction
[15– 0]
Instruction
register
ALU
control
ALU
result
ALU
Zero
Memory
data
register
A
B
IorD
MemRead
MemWrite
MemtoReg
PCWriteCond
PCWrite
IRWrite
Control
Outputs
Op
[5– 0]
Instruction
[31-26]
Instruction [5– 0]
M
u
x
0
2
Jump
address [31-0]Instruction [25– 0] 26 28
Shift
left 2
PC [31-28]
1
Address
EPC
CO 00 00 00 3
Cause
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWrite
EPCWrite
IntCause
CauseWrite
1
0
1 M
u
x
0
3
2
M
u
x
0
1
M
u
x
0
1
PC
M
u
x
0
1
Registers
Write
register
Write
data
Read
data 1
Read
data 2
Read
register 1
Read
register 2
ALUOut
Shift
left 2
Memory
MemData
Write
data
M
u
x
0
1
Instruction
[15–11]
M
u
x
0
1
4
Instruction
[15–0]
Sign
extend
3216
Instruction
[25– 21]
Instruction
[20– 16]
Instruction
[15– 0
Shift
left 2
Memory
MemData
Write
data
M
u
x
0
1
Instruction
[15–11]
M
u
x
0
1
4
Instruction
[15–0]
Sign
extend
3216
Instruction
[25– 21]
Instruction
[20– 16]
Instruction
[15– 0]
Instruction
register
ALU
control
ALU
result
ALU
Zero
Memory
data
register
A
B
IorD
MemRead
MemWrite
MemtoReg
PCWriteCond
PCWrite
IRWrite
Control
Outputs
Op
[5– 0]
Instruction
[31-26]
]
Instruction
register
ALU
control
ALU
result
ALU
Zero
Memory
data
register
A
B
IorD
MemRead
MemWrite
MemtoReg
PCWriteCond
PCWrite
IRWrite
Control
Outputs
Op
[5– 0]
Instruction
[31-26]
Instruction [5– 0]
M
u
x
0
2
Jump
address [31-0]Instruction [25– 0] 26 28
Shift
left 2
PC [31-28]
1
Address
EPC
CO 00 00 00 3
Cause
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWrite
EPCWrite
IntCause
Instruction [5– 0]
M
u
x
0
2
Jump
address [31-0]Instruction [25– 0] 26 28
Shift
left 2
PC [31-28]
1
Address
EPC
CO 00 00 00 3
Cause
ALUOp
ALUSrcB
ALUSrcA
RegDst
PCSource
RegWrite
EPCWrite
IntCause
CauseWrite
1
0
1 M
u
x
0
3
2
M
u
x
0
1
M
u
x
0
1
PC
M
u
x
0
1
Registers
Write
register
Write
data
Read
data 1
Read
data 2
Read
register 1
Read
register 2
ALU
CauseWrite
1
0
1 M
u
x
0
3
2
M
u
x
0
1
M
u
x
0
1
PC
M
u
x
0
1
Registers
Write
register
Write
data
Read
data 1
Read
data 2
Read
register 1
Read
register 2
ALUOut