SlideShare una empresa de Scribd logo
1 de 289
Descargar para leer sin conexión
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
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
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
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
[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
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
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
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
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
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)
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)
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
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
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
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
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”
Historia de los computadores
"Quien olvida las lecciones de la
historia
queda condenado a repetirla."
Will Durant, Lecciones de la Historia
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
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
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)
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)
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)
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
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
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)
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
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
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
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
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 …
Funcionamiento de un
computador
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)
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)
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
Curso 2005/2006 Fundamentos de Computadores 30
Ejemplo de ejecución de programa
Curso 2005/2006 Fundamentos de Computadores 31
Diagrama de estados del ciclo de
instrucción
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
Curso 2005/2006 Fundamentos de Computadores 33
Bus ISA
(Industry Standard Architecture)
Curso 2005/2006 Fundamentos de Computadores 34
Bus de alta prestaciones
El futuro de los computadores
La relación coste/rendimiento ha
mejorado los últimos 45 años
aproximadamente 240 000 000 (un
54% anual)
Curso 2005/2006 Fundamentos de Computadores 36
Ley de Moore
• La densidad de integración dobla cada 18
meses
• ¿Válida hasta 2020?)
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
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
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
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
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...
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
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
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
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
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)
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
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
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
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]
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]
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
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: …
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
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)
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
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
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
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: …
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
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
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
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
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
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
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
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.
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
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
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
.....
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
+
+
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
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
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
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
Curso 2005/2006 Fundamentos de Computadores 40
IA-32 Restricciones de uso de los
registros de propósito general
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
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
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
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)
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
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…
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
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
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
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
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
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
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
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.
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
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
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
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
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
Curso 2005/2006 Fundamentos de Computadores 29
Diseño de la UC – Implementación
de la UC
Op5-0 ->
(bits 31-26)
00 0000
0D
10 0011
35D
10 1011
43D
00 0100
4D
R-Format lw sw beq
RegDst 1 0 x x
ALUSrc 0 1 1 0
MemToReg 0 1 x x
RegWrite 1 1 0 0
MemRead 0 1 0 0
MemWrite 0 0 1 0
Branch 0 0 0 1
ALUOp1 1 0 0 0
ALUOp0 0 0 0 1
R-format Iw sw beq
Op0
Op1
Op2
Op3
Op4
Op5
Inputs
Outputs
RegDst
ALUSrc
MemtoReg
RegWrite
MemRead
MemWrite
Branch
ALUOp1
ALUOpO
Implementación con PLA
R-format Iw sw beq
Op0
Op1
Op2
Op3
Op4
Op5
Inputs
Outputs
RegDst
ALUSrc
MemtoReg
RegWrite
MemRead
MemWrite
Branch
ALUOp1
ALUOpO
R-format Iw sw beq
Op0
Op1
Op2
Op3
Op4
Op5
Inputs
Outputs
RegDst
ALU
R-format Iw sw beq
Op0
Op1
Op2
Op3
Op4
Op5
Inputs
Outputs
RegDst
ALUSrc
MemtoReg
RegWrite
MemRead
MemWrite
Branch
ALUOp1
ALUOpO
Implementación con PLA
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
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
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
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
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
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
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
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]
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
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
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
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
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
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
Curso 2005/2006 Fundamentos de Computadores 44
PCWrite
PCSource = 10
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 01
PCWriteCond
PCSource = 01
ALUSrcA =1
ALUSrcB = 00
ALUOp= 10
RegDst = 1
RegWrite
MemtoReg = 0
MemWrite
IorD = 1
MemRead
IorD = 1
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
RegDst =0
RegWrite
MemtoReg=1
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
MemRead
ALUSrcA = 0
IorD = 0
IRWrite
ALUSrcB = 01
ALUOp = 00
PCWrite
PCSource = 00
Instruction fetch
Instruction decode/
register fetch
Jump
completion
Branch
completionExecution
Memory address
computation
Memory
access
Memory
access R-type completion
Write-back step
(Op = 'LW') or (Op = 'SW') (Op = R-type)
(Op
=
'BEQ')
(Op='J')
(O
p
=
'SW
')
(Op='LW')
4
0
1
9862
753
Start
PCWrite
PCSource = 10
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 01
PCWriteCond
PCSource = 01
ALUSrcA =1
ALUSrcB = 00
ALUOp= 10
RegDst = 1
RegWrite
MemtoReg = 0
MemWrite
IorD = 1
MemRead
IorD = 1
ALUSrcA = 1
AL PCWrite
PCSource = 10
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 01
PCWriteCond
PCSource = 01
ALUSrcA =1
ALUSrcB = 00
ALUOp= 10
RegDst = 1
RegWrite
MemtoReg = 0
MemWrite
IorD = 1
MemRead
IorD = 1
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
RegDst =0
RegWrite
MemtoReg=1
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
MemRead
ALUSrcA = 0
IorD = 0
IRWrite
ALUSrcB = 01
ALUOp = 00
PCWrite
PCSource = 00
Instruction fetch
In
USrcB = 10
ALUOp = 00
RegDst =0
RegWrite
MemtoReg=1
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
MemRead
ALUSrcA = 0
IorD = 0
IRWrite
ALUSrcB = 01
ALUOp = 00
PCWrite
PCSource = 00
Instruction fetch
Instruction decode/
register fetch
Jump
completion
Branch
completionExecution
Memory address
computation
Memory
access
Memory
access R-type completion
Write-back step
(Op = 'LW') or (Op = 'SW') (Op = R
struction decode/
register fetch
Jump
completion
Branch
completionExecution
Memory address
computation
Memory
access
Memory
access R-type completion
Write-back step
(Op = 'LW') or (Op = 'SW') (Op = R-type)
(Op
=
'BEQ')
(Op='J')
(O
p
=
'SW
')
(Op='LW')
4
0
1
9862
753
Start
Control cableado - Especificación
de la UC con una FSM (diagrama)
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
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
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
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
Curso 2005/2006 Fundamentos de Computadores 49
Control cableado - Implementación
de FSM con PLA
• Tamaño de la PLA
– #inputs × #minterms +
#outputs × #minterms
= (10 × 17)+(20 × 17)
= 510 celdas
Op5
Op4
Op3
Op2
Op1
Op0
S3
S2
S1
S0
IorD
IRWrite
MemRead
MemWrite
PCWrite
PCWriteCond
MemtoReg
PCSource1
ALUOp1
ALUSrcB0
ALUSrcA
RegWrite
RegDst
NS3
NS2
NS1
NS0
ALUSrcB1
ALUOp0
PCSource0
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
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
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
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 ->
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)
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.)
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
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)
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
Curso 2005/2006 Fundamentos de Computadores 59
Especificación de la UC con
soporte de excepciones
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 01
PCWriteCond
PCSource = 01
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 10
RegDst = 1
RegWrite
MemtoReg = 0
MemWrite
IorD = 1
MemRead
IorD = 1
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 00
RegWrite
MemtoReg = 1
RegDst = 0
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
MemRead
ALUSrcA = 0
IorD = 0
IRWrite
ALUSrcB = 01
ALUOp = 00
PCWrite
PCSource = 00
Instruction fetch
Instruction decode/
Register fetch
Jump
completion
Branch
completionExecution
Memory address
computation
Memory
access
Memory
access R-type completion
Write-back step
(Op = 'LW') or (Op = 'SW') (Op = R-type)
(Op
=
'BEQ')
(Op='J')
(O
p=
'SW
')
(Op='LW')
4
0
1
9862
7 11 1053
Start
(Op=other)
Overflow
Overflow
ALUSrcA = 0
ALUSrcB = 01
ALUOp = 01
EPCWrite
PCWrite
PCSource = 11
IntCause = 0
CauseWrite
ALUSrcA = 0
ALUSrcB = 01
ALUOp = 01
EPCWrite
PCWrite
PCSource = 11
IntCause = 1
CauseWrite
PCWrite
PCSource = 10
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 01
PCWriteCond
PCSource = 01
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 10
RegDst = 1
RegWrite
MemtoReg = 0
MemWrite
IorD = 1
MemRead
IorD = 1
ALUSrcA = 1
ALUSrcB = 00
ALUOp =
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 01
PCWriteCond
PCSource = 01
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 10
RegDst = 1
RegWrite
MemtoReg = 0
MemWrite
IorD = 1
MemRead
IorD = 1
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 00
RegWrite
MemtoReg = 1
RegDst = 0
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
MemRead
ALUSrcA = 0
IorD = 0
IRWrite
ALUSrcB = 01
ALUOp = 00
PCWrite
PCSource = 00
Instruction fetch
Instruction de
00
RegWrite
MemtoReg = 1
RegDst = 0
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
MemRead
ALUSrcA = 0
IorD = 0
IRWrite
ALUSrcB = 01
ALUOp = 00
PCWrite
PCSource = 00
Instruction fetch
Instruction decode/
Register fetch
Jump
completion
Branch
completionExecution
Memory address
computation
Memory
access
Memory
access R-type completion
Write-back step
(Op = 'LW') or (Op = 'SW') (Op = R-type)
(Op
=
code/
Register fetch
Jump
completion
Branch
completionExecution
Memory address
computation
Memory
access
Memory
access R-type completion
Write-back step
(Op = 'LW') or (Op = 'SW') (Op = R-type)
(Op
=
'BEQ')
(Op='J')
(O
p=
'SW
')
(Op='LW')
4
0
1
9862
7 11 1053
Start
(Op=other)
Overflow
Overflow
ALUSrcA = 0
ALUSrcB = 01
ALUOp = 01
EPCWrite
PCWrite
PCSource = 11
IntCause = 0
CauseWrite
A
'BEQ')
(Op='J')
(O
p=
'SW
')
(Op='LW')
4
0
1
9862
7 11 1053
Start
(Op=other)
Overflow
Overflow
ALUSrcA = 0
ALUSrcB = 01
ALUOp = 01
EPCWrite
PCWrite
PCSource = 11
IntCause = 0
CauseWrite
ALUSrcA = 0
ALUSrcB = 01
ALUOp = 01
EPCWrite
PCWrite
PCSource = 11
IntCause = 1
CauseWrite
PCWrite
PCSource = 10
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores
Arquitectura de-computadores

Más contenido relacionado

La actualidad más candente

Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasYESENIA CETINA
 
Arquitectura de Computadoras Clase 1
Arquitectura de Computadoras Clase 1Arquitectura de Computadoras Clase 1
Arquitectura de Computadoras Clase 1Josue Pirir
 
Carla guaman 5_a_t2
Carla guaman 5_a_t2Carla guaman 5_a_t2
Carla guaman 5_a_t2Carlys Pgm
 
Arquitectura de computadoras 2013
Arquitectura de computadoras 2013Arquitectura de computadoras 2013
Arquitectura de computadoras 2013Hector Correa
 
Tipos y arquitectura del computador
Tipos y arquitectura del computadorTipos y arquitectura del computador
Tipos y arquitectura del computadorMaurizio Riba
 
UNIDAD 2 COMPONENTES DE UNA COMPUTADORA
UNIDAD 2 COMPONENTES DE UNA COMPUTADORAUNIDAD 2 COMPONENTES DE UNA COMPUTADORA
UNIDAD 2 COMPONENTES DE UNA COMPUTADORATheBoops
 
Arquitecturas de Cómputo
Arquitecturas de CómputoArquitecturas de Cómputo
Arquitecturas de CómputoVictor Quintero
 
Roberto erazo 5_a_t#2
Roberto erazo 5_a_t#2Roberto erazo 5_a_t#2
Roberto erazo 5_a_t#2Betto Andress
 
Arquitectura De Computadores
Arquitectura De ComputadoresArquitectura De Computadores
Arquitectura De Computadoresyohanna13
 
Modelos de arquitecturas de computo
Modelos de arquitecturas de computoModelos de arquitecturas de computo
Modelos de arquitecturas de computoYESENIA CETINA
 
Jin Unidad 2
Jin Unidad 2Jin Unidad 2
Jin Unidad 2jin_group
 
Arquitectura de la computadora
Arquitectura de la computadoraArquitectura de la computadora
Arquitectura de la computadoraPaolawestt
 
Unidades funcionales de la computadora
Unidades funcionales  de la computadoraUnidades funcionales  de la computadora
Unidades funcionales de la computadoramarucames
 
Conceptos sobre arquitectura de computadoras
Conceptos sobre arquitectura de computadorasConceptos sobre arquitectura de computadoras
Conceptos sobre arquitectura de computadorasWaldogeremia
 
Colegio de educacion
Colegio de educacionColegio de educacion
Colegio de educacionlizdegarcia
 

La actualidad más candente (20)

Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadoras
 
Arquitectura de Computadoras Clase 1
Arquitectura de Computadoras Clase 1Arquitectura de Computadoras Clase 1
Arquitectura de Computadoras Clase 1
 
Arquitectura von newman
Arquitectura von newmanArquitectura von newman
Arquitectura von newman
 
Conceptos de interfaces
Conceptos de interfacesConceptos de interfaces
Conceptos de interfaces
 
Carla guaman 5_a_t2
Carla guaman 5_a_t2Carla guaman 5_a_t2
Carla guaman 5_a_t2
 
Arquitectura
ArquitecturaArquitectura
Arquitectura
 
Arquitectura
ArquitecturaArquitectura
Arquitectura
 
Arquitectura de computadoras 2013
Arquitectura de computadoras 2013Arquitectura de computadoras 2013
Arquitectura de computadoras 2013
 
Componentes del equipo de cómputo_fa
Componentes del equipo de cómputo_faComponentes del equipo de cómputo_fa
Componentes del equipo de cómputo_fa
 
Tipos y arquitectura del computador
Tipos y arquitectura del computadorTipos y arquitectura del computador
Tipos y arquitectura del computador
 
UNIDAD 2 COMPONENTES DE UNA COMPUTADORA
UNIDAD 2 COMPONENTES DE UNA COMPUTADORAUNIDAD 2 COMPONENTES DE UNA COMPUTADORA
UNIDAD 2 COMPONENTES DE UNA COMPUTADORA
 
Arquitecturas de Cómputo
Arquitecturas de CómputoArquitecturas de Cómputo
Arquitecturas de Cómputo
 
Roberto erazo 5_a_t#2
Roberto erazo 5_a_t#2Roberto erazo 5_a_t#2
Roberto erazo 5_a_t#2
 
Arquitectura De Computadores
Arquitectura De ComputadoresArquitectura De Computadores
Arquitectura De Computadores
 
Modelos de arquitecturas de computo
Modelos de arquitecturas de computoModelos de arquitecturas de computo
Modelos de arquitecturas de computo
 
Jin Unidad 2
Jin Unidad 2Jin Unidad 2
Jin Unidad 2
 
Arquitectura de la computadora
Arquitectura de la computadoraArquitectura de la computadora
Arquitectura de la computadora
 
Unidades funcionales de la computadora
Unidades funcionales  de la computadoraUnidades funcionales  de la computadora
Unidades funcionales de la computadora
 
Conceptos sobre arquitectura de computadoras
Conceptos sobre arquitectura de computadorasConceptos sobre arquitectura de computadoras
Conceptos sobre arquitectura de computadoras
 
Colegio de educacion
Colegio de educacionColegio de educacion
Colegio de educacion
 

Destacado

Sistemas de informacion y tecnologias de la informacion
Sistemas de informacion y tecnologias de la informacionSistemas de informacion y tecnologias de la informacion
Sistemas de informacion y tecnologias de la informacionLuisfer9602
 
manual de mantenimiento del computador
manual de mantenimiento del computadormanual de mantenimiento del computador
manual de mantenimiento del computadorca1mi1lo1
 
Arquitectura del computador
Arquitectura del computadorArquitectura del computador
Arquitectura del computadorjhonathan19125
 
Manual observacion stallings
Manual observacion stallingsManual observacion stallings
Manual observacion stallingskristinevillamil
 
Que Es Un Sistema Computo
Que Es Un Sistema ComputoQue Es Un Sistema Computo
Que Es Un Sistema Computoshanpu
 

Destacado (6)

Sistemas de informacion y tecnologias de la informacion
Sistemas de informacion y tecnologias de la informacionSistemas de informacion y tecnologias de la informacion
Sistemas de informacion y tecnologias de la informacion
 
manual de mantenimiento del computador
manual de mantenimiento del computadormanual de mantenimiento del computador
manual de mantenimiento del computador
 
lola
lolalola
lola
 
Arquitectura del computador
Arquitectura del computadorArquitectura del computador
Arquitectura del computador
 
Manual observacion stallings
Manual observacion stallingsManual observacion stallings
Manual observacion stallings
 
Que Es Un Sistema Computo
Que Es Un Sistema ComputoQue Es Un Sistema Computo
Que Es Un Sistema Computo
 

Similar a Arquitectura de-computadores

Arquitectura del computador.
Arquitectura del computador.Arquitectura del computador.
Arquitectura del computador.franbrito94
 
FEC_Presentacion_2022-23.pdf
FEC_Presentacion_2022-23.pdfFEC_Presentacion_2022-23.pdf
FEC_Presentacion_2022-23.pdfAnaHolgado5
 
Syllabus 2015 dec-07
Syllabus 2015 dec-07Syllabus 2015 dec-07
Syllabus 2015 dec-07Manuel Loja
 
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOCENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOyuribel
 
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOCENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOyuribel
 
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOCENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOyuribel
 
Para_escolar_Informatica.doc
Para_escolar_Informatica.docPara_escolar_Informatica.doc
Para_escolar_Informatica.docAlexManchabajoy2
 
Guia aprendizaje 2 grado 11 planeacion -rmb
Guia aprendizaje  2   grado  11 planeacion -rmbGuia aprendizaje  2   grado  11 planeacion -rmb
Guia aprendizaje 2 grado 11 planeacion -rmbEQUIPO # 11
 
Guia aprendizaje 2 grado 11 planeacion -rmb
Guia aprendizaje  2   grado  11 planeacion -rmbGuia aprendizaje  2   grado  11 planeacion -rmb
Guia aprendizaje 2 grado 11 planeacion -rmbsamy254
 
Guia aprendizaje 2 grado 11 planeacion -rmb
Guia aprendizaje  2   grado  11 planeacion -rmbGuia aprendizaje  2   grado  11 planeacion -rmb
Guia aprendizaje 2 grado 11 planeacion -rmbAndres Hernandez
 
Arquitectura de computadoras ii
Arquitectura de computadoras iiArquitectura de computadoras ii
Arquitectura de computadoras iisilvestron
 
Guia aprendizaje 2 Grado 11 planeacion-rmb
Guia aprendizaje  2  Grado  11 planeacion-rmbGuia aprendizaje  2  Grado  11 planeacion-rmb
Guia aprendizaje 2 Grado 11 planeacion-rmbEQUIPO # 11
 
Informática tics diseño grafico
Informática tics diseño graficoInformática tics diseño grafico
Informática tics diseño graficopatricio
 
Silabo informatica ti cs
Silabo informatica ti csSilabo informatica ti cs
Silabo informatica ti csfamilia
 

Similar a Arquitectura de-computadores (20)

Arquitectura del computador.
Arquitectura del computador.Arquitectura del computador.
Arquitectura del computador.
 
FEC_Presentacion_2022-23.pdf
FEC_Presentacion_2022-23.pdfFEC_Presentacion_2022-23.pdf
FEC_Presentacion_2022-23.pdf
 
Syllabus 2015 dec-07
Syllabus 2015 dec-07Syllabus 2015 dec-07
Syllabus 2015 dec-07
 
Arquitectura computador
Arquitectura computadorArquitectura computador
Arquitectura computador
 
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOCENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICO
 
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOCENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICO
 
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOCENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICO
 
Para_escolar_Informatica.doc
Para_escolar_Informatica.docPara_escolar_Informatica.doc
Para_escolar_Informatica.doc
 
Informática tics
Informática ticsInformática tics
Informática tics
 
Guia aprendizaje 2 grado 11 planeacion -rmb
Guia aprendizaje  2   grado  11 planeacion -rmbGuia aprendizaje  2   grado  11 planeacion -rmb
Guia aprendizaje 2 grado 11 planeacion -rmb
 
Guia aprendizaje 2 grado 11 planeacion -rmb
Guia aprendizaje  2   grado  11 planeacion -rmbGuia aprendizaje  2   grado  11 planeacion -rmb
Guia aprendizaje 2 grado 11 planeacion -rmb
 
Guia aprendizaje 2 grado 11 planeacion -rmb
Guia aprendizaje  2   grado  11 planeacion -rmbGuia aprendizaje  2   grado  11 planeacion -rmb
Guia aprendizaje 2 grado 11 planeacion -rmb
 
Arquitectura de computadoras ii
Arquitectura de computadoras iiArquitectura de computadoras ii
Arquitectura de computadoras ii
 
Rcorlandorondon301305 17
Rcorlandorondon301305 17Rcorlandorondon301305 17
Rcorlandorondon301305 17
 
Guia aprendizaje 2 Grado 11 planeacion-rmb
Guia aprendizaje  2  Grado  11 planeacion-rmbGuia aprendizaje  2  Grado  11 planeacion-rmb
Guia aprendizaje 2 Grado 11 planeacion-rmb
 
S4 tarea4 noel.
S4 tarea4 noel.S4 tarea4 noel.
S4 tarea4 noel.
 
Informática tics diseño grafico
Informática tics diseño graficoInformática tics diseño grafico
Informática tics diseño grafico
 
Introducción a Plataformas Tecnológicas
Introducción a Plataformas TecnológicasIntroducción a Plataformas Tecnológicas
Introducción a Plataformas Tecnológicas
 
Silabo informatica ti cs
Silabo informatica ti csSilabo informatica ti cs
Silabo informatica ti cs
 
Estructura Datos
Estructura DatosEstructura Datos
Estructura Datos
 

Último

La busqueda de la relevancia en la economia (Harberger).pptx
La busqueda de la relevancia en la economia (Harberger).pptxLa busqueda de la relevancia en la economia (Harberger).pptx
La busqueda de la relevancia en la economia (Harberger).pptxPEPONLU
 
La muerte de El Senequita (Amadeo Martinez-Ingles).pdf
La muerte de El Senequita (Amadeo Martinez-Ingles).pdfLa muerte de El Senequita (Amadeo Martinez-Ingles).pdf
La muerte de El Senequita (Amadeo Martinez-Ingles).pdfPEPONLU
 
PRESENTACION SISTEMAS OPERATIVOS MOVILES_20240424_235225_0000.pdf
PRESENTACION SISTEMAS OPERATIVOS MOVILES_20240424_235225_0000.pdfPRESENTACION SISTEMAS OPERATIVOS MOVILES_20240424_235225_0000.pdf
PRESENTACION SISTEMAS OPERATIVOS MOVILES_20240424_235225_0000.pdfSuleimaJimnez
 
CLASE 1 H.I.pptx,INFORMATICANIVEL AVANZADO
CLASE 1 H.I.pptx,INFORMATICANIVEL AVANZADOCLASE 1 H.I.pptx,INFORMATICANIVEL AVANZADO
CLASE 1 H.I.pptx,INFORMATICANIVEL AVANZADOMisolArticaSoto
 
Vision de asignatura ESTRUCTURA DE DATOS.pptx
Vision de asignatura ESTRUCTURA DE DATOS.pptxVision de asignatura ESTRUCTURA DE DATOS.pptx
Vision de asignatura ESTRUCTURA DE DATOS.pptxjmatheus74
 
Mapa conceptual de el hardware y software
Mapa conceptual de el hardware y softwareMapa conceptual de el hardware y software
Mapa conceptual de el hardware y softwarejorgeadrianoropezame
 
aplicaciones multinivel y clasificación de los sitios web.pdf
aplicaciones multinivel y clasificación de los sitios web.pdfaplicaciones multinivel y clasificación de los sitios web.pdf
aplicaciones multinivel y clasificación de los sitios web.pdfsoportepechugon
 
sub 1 ensamble y desensamble del equipo de computo
sub 1 ensamble y desensamble del equipo de computosub 1 ensamble y desensamble del equipo de computo
sub 1 ensamble y desensamble del equipo de computoaxelv9257
 

Último (8)

La busqueda de la relevancia en la economia (Harberger).pptx
La busqueda de la relevancia en la economia (Harberger).pptxLa busqueda de la relevancia en la economia (Harberger).pptx
La busqueda de la relevancia en la economia (Harberger).pptx
 
La muerte de El Senequita (Amadeo Martinez-Ingles).pdf
La muerte de El Senequita (Amadeo Martinez-Ingles).pdfLa muerte de El Senequita (Amadeo Martinez-Ingles).pdf
La muerte de El Senequita (Amadeo Martinez-Ingles).pdf
 
PRESENTACION SISTEMAS OPERATIVOS MOVILES_20240424_235225_0000.pdf
PRESENTACION SISTEMAS OPERATIVOS MOVILES_20240424_235225_0000.pdfPRESENTACION SISTEMAS OPERATIVOS MOVILES_20240424_235225_0000.pdf
PRESENTACION SISTEMAS OPERATIVOS MOVILES_20240424_235225_0000.pdf
 
CLASE 1 H.I.pptx,INFORMATICANIVEL AVANZADO
CLASE 1 H.I.pptx,INFORMATICANIVEL AVANZADOCLASE 1 H.I.pptx,INFORMATICANIVEL AVANZADO
CLASE 1 H.I.pptx,INFORMATICANIVEL AVANZADO
 
Vision de asignatura ESTRUCTURA DE DATOS.pptx
Vision de asignatura ESTRUCTURA DE DATOS.pptxVision de asignatura ESTRUCTURA DE DATOS.pptx
Vision de asignatura ESTRUCTURA DE DATOS.pptx
 
Mapa conceptual de el hardware y software
Mapa conceptual de el hardware y softwareMapa conceptual de el hardware y software
Mapa conceptual de el hardware y software
 
aplicaciones multinivel y clasificación de los sitios web.pdf
aplicaciones multinivel y clasificación de los sitios web.pdfaplicaciones multinivel y clasificación de los sitios web.pdf
aplicaciones multinivel y clasificación de los sitios web.pdf
 
sub 1 ensamble y desensamble del equipo de computo
sub 1 ensamble y desensamble del equipo de computosub 1 ensamble y desensamble del equipo de computo
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
  • 35. Curso 2005/2006 Fundamentos de Computadores 30 Ejemplo de ejecución de programa
  • 36. Curso 2005/2006 Fundamentos de Computadores 31 Diagrama de estados del ciclo de instrucción
  • 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
  • 38. Curso 2005/2006 Fundamentos de Computadores 33 Bus ISA (Industry Standard Architecture)
  • 39. Curso 2005/2006 Fundamentos de Computadores 34 Bus de alta prestaciones
  • 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
  • 114. Curso 2005/2006 Fundamentos de Computadores 29 Diseño de la UC – Implementación de la UC Op5-0 -> (bits 31-26) 00 0000 0D 10 0011 35D 10 1011 43D 00 0100 4D R-Format lw sw beq RegDst 1 0 x x ALUSrc 0 1 1 0 MemToReg 0 1 x x RegWrite 1 1 0 0 MemRead 0 1 0 0 MemWrite 0 0 1 0 Branch 0 0 0 1 ALUOp1 1 0 0 0 ALUOp0 0 0 0 1 R-format Iw sw beq Op0 Op1 Op2 Op3 Op4 Op5 Inputs Outputs RegDst ALUSrc MemtoReg RegWrite MemRead MemWrite Branch ALUOp1 ALUOpO Implementación con PLA R-format Iw sw beq Op0 Op1 Op2 Op3 Op4 Op5 Inputs Outputs RegDst ALUSrc MemtoReg RegWrite MemRead MemWrite Branch ALUOp1 ALUOpO R-format Iw sw beq Op0 Op1 Op2 Op3 Op4 Op5 Inputs Outputs RegDst ALU R-format Iw sw beq Op0 Op1 Op2 Op3 Op4 Op5 Inputs Outputs RegDst ALUSrc MemtoReg RegWrite MemRead MemWrite Branch ALUOp1 ALUOpO Implementación con PLA
  • 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
  • 129. Curso 2005/2006 Fundamentos de Computadores 44 PCWrite PCSource = 10 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01 ALUSrcA =1 ALUSrcB = 00 ALUOp= 10 RegDst = 1 RegWrite MemtoReg = 0 MemWrite IorD = 1 MemRead IorD = 1 ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00 RegDst =0 RegWrite MemtoReg=1 ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00 MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00 Instruction fetch Instruction decode/ register fetch Jump completion Branch completionExecution Memory address computation Memory access Memory access R-type completion Write-back step (Op = 'LW') or (Op = 'SW') (Op = R-type) (Op = 'BEQ') (Op='J') (O p = 'SW ') (Op='LW') 4 0 1 9862 753 Start PCWrite PCSource = 10 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01 ALUSrcA =1 ALUSrcB = 00 ALUOp= 10 RegDst = 1 RegWrite MemtoReg = 0 MemWrite IorD = 1 MemRead IorD = 1 ALUSrcA = 1 AL PCWrite PCSource = 10 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01 ALUSrcA =1 ALUSrcB = 00 ALUOp= 10 RegDst = 1 RegWrite MemtoReg = 0 MemWrite IorD = 1 MemRead IorD = 1 ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00 RegDst =0 RegWrite MemtoReg=1 ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00 MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00 Instruction fetch In USrcB = 10 ALUOp = 00 RegDst =0 RegWrite MemtoReg=1 ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00 MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00 Instruction fetch Instruction decode/ register fetch Jump completion Branch completionExecution Memory address computation Memory access Memory access R-type completion Write-back step (Op = 'LW') or (Op = 'SW') (Op = R struction decode/ register fetch Jump completion Branch completionExecution Memory address computation Memory access Memory access R-type completion Write-back step (Op = 'LW') or (Op = 'SW') (Op = R-type) (Op = 'BEQ') (Op='J') (O p = 'SW ') (Op='LW') 4 0 1 9862 753 Start Control cableado - Especificación de la UC con una FSM (diagrama)
  • 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
  • 134. Curso 2005/2006 Fundamentos de Computadores 49 Control cableado - Implementación de FSM con PLA • Tamaño de la PLA – #inputs × #minterms + #outputs × #minterms = (10 × 17)+(20 × 17) = 510 celdas Op5 Op4 Op3 Op2 Op1 Op0 S3 S2 S1 S0 IorD IRWrite MemRead MemWrite PCWrite PCWriteCond MemtoReg PCSource1 ALUOp1 ALUSrcB0 ALUSrcA RegWrite RegDst NS3 NS2 NS1 NS0 ALUSrcB1 ALUOp0 PCSource0
  • 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
  • 144. Curso 2005/2006 Fundamentos de Computadores 59 Especificación de la UC con soporte de excepciones ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 10 RegDst = 1 RegWrite MemtoReg = 0 MemWrite IorD = 1 MemRead IorD = 1 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 00 RegWrite MemtoReg = 1 RegDst = 0 ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00 MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00 Instruction fetch Instruction decode/ Register fetch Jump completion Branch completionExecution Memory address computation Memory access Memory access R-type completion Write-back step (Op = 'LW') or (Op = 'SW') (Op = R-type) (Op = 'BEQ') (Op='J') (O p= 'SW ') (Op='LW') 4 0 1 9862 7 11 1053 Start (Op=other) Overflow Overflow ALUSrcA = 0 ALUSrcB = 01 ALUOp = 01 EPCWrite PCWrite PCSource = 11 IntCause = 0 CauseWrite ALUSrcA = 0 ALUSrcB = 01 ALUOp = 01 EPCWrite PCWrite PCSource = 11 IntCause = 1 CauseWrite PCWrite PCSource = 10 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 10 RegDst = 1 RegWrite MemtoReg = 0 MemWrite IorD = 1 MemRead IorD = 1 ALUSrcA = 1 ALUSrcB = 00 ALUOp = ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 10 RegDst = 1 RegWrite MemtoReg = 0 MemWrite IorD = 1 MemRead IorD = 1 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 00 RegWrite MemtoReg = 1 RegDst = 0 ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00 MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00 Instruction fetch Instruction de 00 RegWrite MemtoReg = 1 RegDst = 0 ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00 MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00 Instruction fetch Instruction decode/ Register fetch Jump completion Branch completionExecution Memory address computation Memory access Memory access R-type completion Write-back step (Op = 'LW') or (Op = 'SW') (Op = R-type) (Op = code/ Register fetch Jump completion Branch completionExecution Memory address computation Memory access Memory access R-type completion Write-back step (Op = 'LW') or (Op = 'SW') (Op = R-type) (Op = 'BEQ') (Op='J') (O p= 'SW ') (Op='LW') 4 0 1 9862 7 11 1053 Start (Op=other) Overflow Overflow ALUSrcA = 0 ALUSrcB = 01 ALUOp = 01 EPCWrite PCWrite PCSource = 11 IntCause = 0 CauseWrite A 'BEQ') (Op='J') (O p= 'SW ') (Op='LW') 4 0 1 9862 7 11 1053 Start (Op=other) Overflow Overflow ALUSrcA = 0 ALUSrcB = 01 ALUOp = 01 EPCWrite PCWrite PCSource = 11 IntCause = 0 CauseWrite ALUSrcA = 0 ALUSrcB = 01 ALUOp = 01 EPCWrite PCWrite PCSource = 11 IntCause = 1 CauseWrite PCWrite PCSource = 10