Anda di halaman 1dari 57

Cap.

1: Evolución del procesamiento de datos


Organización y arquitectura de una computadora
Arquitectura de computadoras incluye aspectos relacionados al conjunto de instrucciones que
el procesador pueda ejecutar, la representación interna de los datos y el estudio de los
módulos hardware.
Computadora: Dispositivo electrónico, diseñado para aceptar datos de entrada y realizar
operaciones sobre ellos (organizadas en una secuencia lógica y predeterminada por un
algoritmo), para elaborar resultados que se puedan obtener como salidas.
Algoritmo: Secuencia de operaciones finita que permite resolver un problema.
Programa: Representación de un algoritmo en un lenguaje de programación.

Memoria Registros de la CPU


principal (MP) (Almacenan la instrucción en ejecución y los datos con los que va a
(Almacena datos e operar)
instrucciones)
Unidad de control (UC) Unidad aritmético lógica (ALU)
(Interpreta y ejecuta (Realiza operaciones aritméticas y
instrucciones) lógicas)

Buses

Dispositivos de entrada, salida


y entrada/salida.

 Organización de una computadora: Relación entre los distintos componentes y su


diseño y tecnología.

Estratificación del software


Aplicaciones: programas de uso particular de los usuarios (se programan en lenguajes de alto
nivel).
Un programador requiere conocimientos en arquitectura de computadoras, en sistemas
operativos, diseño de algoritmos, lenguajes de programación y estructuras de datos.
Cuando un programa se compila se traduce a código de máquina.
Código de maquina: Lenguaje que interpreta el CPU y pertenece al nivel de arquitectura del set
de instrucciones.
Cada instrucción implica algo que hacer, un verbo: código de operación.
Las instrucciones de un programa se ejecutan unas tras otras, siguen una lógica secuencial,
salvo que haya una instrucción de ruptura de secuencia (se salta a una instrucción que no es la
siguiente).

El programa almacenado
En 1945 John von Neumann construye una maquina de propósito general (computadora),
capaz de almacenar instrucciones y datos en una memoria, trabaja en binario y con posibilidad
de provocar una ruptura de secuencia.
Está formada por: CPU, memoria y unidades de E/S. La CPU cuenta con una unidad aritmético-
lógica (ALU), unidad de control (UC). Los módulos están relacionados entre sí por colectores de
datos e instrucciones (buses).

Clasificación de las computadoras


 Analógicas: Se implementaron para estudiar un modelo semejante a una ecuación.
o Desventajas: Falta de exactitud en la salida. Una única aplicación y no serbia
para otra.
o Ventajas: Procesar datos no discretos (temperaturas, presión, altura).
 Digitales: Procesan dígitos binarios (0 y 1) que representan datos.
o Ventajas: Efectúan cálculos precisos. No tener que cambiar partes físicas para
modificarlo, sino solo ingresar un programa nuevo.
 Híbridas: Combinación de analógicos y digitales. La porción analógica toma datos
continuos, la parte digital efectúa los cálculos.

Procesamiento de datos y sistemas de información


 Datos (input): conjunto de símbolos que representan un objeto (relación entre dígitos
binarios y los símbolos que el usuario utiliza).
 Información (output): Datos procesados (se realiza alguna operación sobre ellos) que
permiten al usuario la toma de decisiones. Las salidas se decodifican (de binario a
código de usuario).
 Sistema de información: Conjunto coordinado de elementos, datos y procesos, cuya
interacción permite la obtención de información.

Sistemas sincrónicos de propósito general


 Sistemas de propósito específico: Sistemas orientados a tareas que no cambian, la
tarea es fija y definida por los circuitos que constituyen la UC. La memoria solo soporta
datos de entrada y resultados obtenidos como salida. Un cambio de la tarea implica
alteración del hardware del procesador.
 Sistemas de propósito general o computadoras: La tarea se puede cambiar, está
definida por software y se denomina aplicación. La tarea de la computadora cambia,
en tanto cambie el programa almacenado en memoria. Cada instrucción del programa
es transferida desde la memoria a la CPU, y la UC se encarga de organizar en el tiempo
el conjunto de operaciones que permitan su ejecución. A cada una de estas
operaciones elementales se las denomina microoperaciones.

Arquitectura de computadoras
 Hardware: Conjunto de dispositivos electrónicos que constituyen la estructura física de
la computadora.
 Software: Conjunto de programas para procesar datos en un equipo de computación.
Sin el software, el hardware no podría procesar dato alguno o quedaría limitado a una
tarea fija.
 Firmware: Dispositivos físicos programados, fusionan los conceptos de hardware y
software.
 Bit: Unidad mínima de información, valores "0" o "1". La computadora está compuesta
por dispositivos electrónicos que actúan como llaves que permiten el paso de ciertos
niveles de tensión. Un "1" lógico se corresponde con un nivel de tensión alto, un "0"
con un nivel bajo.
 Byte: Combinación de 8 bits. Unidad elemental de representación de un dato.
 Nibble: Medio byte, 4 bits.
 Palabra de CPU: Unidad de trabajo que puede procesar en un paso expresada en bits.
Una computadora puede operar con datos de tamaño superior que la capacidad de sus
registros, pero su tratamiento implica una mayor cantidad de pasos.
 Capacidad de dirección: Cantidad de líneas que transfieren los bits de una dirección
física (con 32 bits se pueden representar 232 direcciones diferentes). Esto determina la
cantidad de memoria principal a la que se puede acceder.
Cap. 2: Sistemas numéricos
El sistema binario representa letras, números, signos, comandos e instrucciones con bits.
 Sistemas de notación posicional: Están formados por "n" símbolos, cuya combinación
representa diferentes valores. Cada digito tiene un peso según el lugar que ocupa; el
peso es la base elevada a la posición. La suma de cada digito multiplicado por su peso
permite obtener el valor final del número.
Una base "B" tiene B dígitos posibles (de 0 a B-1). Ej.: Base octal (de 0 a 7), decimal (0 a
9).
Los sistemas octal y hexadecimal permiten "compactar" bits. Indica lo mismo con
menor cantidad de símbolos. Cuanto más grande la base, más importante es la
reducción.
 LSB (LeastSignificant Bit): Bit de menor peso, el primer bit de la derecha.
 MSB (MostSignificant Bit): Bit de mayor peso, el primer bit de la izquierda.
Cap. 3: Representación de datos en la computadora
Flujo de datos dentro de la computadora
Tanto las instrucciones de un programa como los datos que ingresan en la memoria desde el
exterior lo hacen en un código alfanumérico de representación de caracteres (ASCII). Las
instrucciones son transformadas por un programa de traducción (compilador) a código
maquina. Los encargados de la transformación de los datos son rutinas previstas por
bibliotecas del lenguaje e incluidas en el programa.
 Código alfanumérico: Establece la relación necesaria para que una computadora
intérprete el lenguaje del usuario. Determina una única combinación binaria posible
para cada símbolo.
 Formato: Estructura y cantidad de bits de un determinado tipo de dato para su
tratamiento en la computadora. Un byte alojado en la memoria puede ser un carácter
alfanumérico, un operando o una instrucción según quien lo interprete.
*Tipos de representaciones de datos:
Alfanuméricas ASCII
UNICODE
Coma o punto fijo sin signo (enteros-positivos)
Números enteros Coma o punto fijo con signo (enteros)
Binarias Coma o punto fijo con complemento a la base (enteros)
Coma o punto fijo con complemento restringido (enteros)
Números reales Coma o punto flotante (entera y fraccionaria)
Coma o punto flotante con mantisa normalizada
Redundantes Códigos de Paridad vertical o a nivel carácter
(detección de paridad Paridad horizontal o a nivel bloque
errores) Paridad entrelazada
Código de Hamming
El código ASCII de 7 bits permite determinar 27 (128) combinaciones distintas.
Los primeros 3 bits son "bits de zona", los últimos 4 bits son "bits de digito"
 Código ASCII ampliado: ASCII de 8 bits. 4 bits de zona y 4 bits de digito. Tiene 128
caracteres adicionales.

Delimitación de strings
Las cadenas de caracteres alfanuméricas (strings) almacenadas en la computadora pueden ser;
 De longitud fija: Cada dato ocupa un número determinado de bytes fijo. El comienzo y
el final puede conocerse con rapidez.
 De longitud variable: Hay dos métodospara determinar el final
o Cada dato tiene en su inicio un campo que indica la longitud en bytes.
4 H O L A 2 S I

o Cada dato se separa mediante un símbolo (CR) que marca el final de la cadena,
pero no se considera parte de esta.
CR CR CR CR
Códigos de representación decimal (BCD)
Los códigos BCD son convenciones que permiten la representación de números decimales (0 a
9) en bloques binarios de 4 bits.
 BDC puro o natural: Los pesos en cada bloque coinciden con el valor de los 4 primeros
pesos del sistema binario puro
Valor decimal BCD puro 8421 Valor decimal BCD puro 8421
0 0000 5 0101
1 0001 6 0110
2 0010 7 0111
3 0011 8 1000
4 0100 9 1001
Ej.: 15 --> 0001 0101
256 --> 0010 0101 0110
 BCD empaquetado: La ALU puede operar en BCD (con un grupo reducido de dígitos
decimales) considerando como base del sistema la decimal y no la binaria. En ASCII los
números se representan con octetos divididos en zona y digito, los números así
representados se denominan "zoneados" (unpacked). Los bits de zona distinguen
números de letras, por lo tanto para ser operado en la ALU se les deben eliminar la
zona. El producto final al eliminar la zona y agrupar los dígitos en forma reducida se
conoce como "empaquetado" y cada digito queda representado con solo 4 bits de
digito.
 BCD exceso tres: Se obtiene a partir del BCD puro, sumando un 3 binario a cada cifra
decimal. Esto logra un código simétrico o autocomplementario que permite hallar el
complemento de un número invirtiendo sus dígitos.
Valor decimal BCD exceso tres
0 0011
1 0100
2 0101
3 0110
4 0111
5 1000
6 1001
7 1001
8 1011
9 1100
 BCD AIKEN o 2421: Adjudica a cada "1" binario el peso que resulta de la combinación
2421, en lugar del BCD puro que impone un peso igual a 8421.Genera un código
simétrico.2313
Valor decimal BCD 2421
0 0000
1 0001
2 0010
3 0011
4 0100
5 1011
6 1100
7 1101
8 1110
9 1111

Códigos de representación numérica no decimal


 Coma o punto fijo sin signo / Números ordinales (enteros positivos): Solo permite
números sin signo, para la representación de un numero se utiliza la totalidad de bits
del formato.
Rango:0 𝑎 (2𝑛 − 1).Siendo "n" la cantidad de dígitos que componen el numero.
Si se suman dos números cuyo resultado supere el rango de variabilidad el resultado
será erróneo. Las unidades de cálculo en una CPU actualizan flags (bits en un registro
asociado a la ALU llamado status register) que indican, entre otras cosas,
circunstancias de desborde/overflow. Para n = 3:
000 001 010 011 100 101 110 111
0 1 2 3 4 5 6 7

 Coma o punto fijo con signo/ Magnitud con signo (enteros): Igual que el formato
anterior, pero reserva el bit de extrema izquierda para el signo (0: positivo, 1:
negativo).
Rango: −(2𝑛−1 − 1) 𝑎 (2𝑛−1 − 1)
111 110 101 100 000 001 010 011
-3 -2 -1 -0 +0 +1 +2 +3

 Coma o punto fijo con signo con negativos complementados a "2" (enteros): Igual al
anterior, reservando el bit de extrema izquierda para el signo (0: positivo, 1: negativo).
Los n-1 bits restantes se representan con magnitud binaria real si es positivo, y en
complemento a la base de la magnitud (complemento a 2, complemento autentico) si
es negativo.
Rango: −(2𝑛−1 ) 𝑎 (2𝑛−1 − 1)
100 101 110 111 000 001 010 011
-4 -3 -2 -1 +0 +1 +2 +3

 Coma o punto fijo con signo con negativos complementados a "1" (enteros): Igual al
anterior, reservando el bit de extrema izquierda para el signo (0: positivo, 1: negativo).
Los n-1 bits restantes se representan con magnitud binaria real si es positivo, y en
complemento restringido de la magnitud (complemento a 1, complemento directo) si
es negativo.
Rango: −(2𝑛−1 − 1) 𝑎 (2𝑛−1 − 1)
100 101 110 111 000 001 010 011
-3 -2 -1 -0 +0 +1 +2 +3

 Reales en coma o punto flotante (números muy grandes o muy chicos y números
reales):
±𝑀. 𝐵±𝑃
M = Mantisa, B = Base, P = Exponente (indica la posición del punto en el número)
En memoria solo se almacena M y P, la base B se da por programación.

Representaciones redundantes
El cambio de un bit en el almacenamiento o la manipulación de datos origina resultados
erróneos. Para detectar o incluso corregir esto se usan códigos que agregan "bits
redundantes". Por ejemplo, los bits de paridad (bits redundantes agregados a una cadena de
bits en la que se pretende detectar un posible error) se agregan al dato en el momento de su
envió y son corroborados en el momento de su recepción.
 Paridad vertical simple o a nivel carácter: Al final de cada carácter se incluye un bit, de
manera que la suma de "unos" del carácter completo sea par (paridad par) o impar
(paridad impar). 0101
0111
00110010|1 se agrega un uno que permita obtener paridad par 1101
1011
01001011|0 se agrega un 0 para lograr paridad par 1110
1010
 Paridad horizontal a nivel de bloque: Por cada bloque de caracteres se crea un byte 0110
-----
con bits de paridad. 0110
 Paridad entrelazada: Se construye utilizando en conjunto el código de paridad vertical
con el horizontal, que además de detectar errores permite corregirlos. No se considera
óptimo debido a la cantidad de bits de paridad que se deben agregar.
Sin error Con error
0 1 0 1 0 0 1 0 1 0
0 1 1 1 1 0 0 1 1 1
1 1 0 1 1 1 1 0 1 1
1 0 1 1 1 1 0 1 1 1
1 1 1 0 1 1 1 1 0 1
1 0 1 1 1 1 0 1 1 1
0 1 1 0 0 0 1 1 0 0
0 1 1 1 1 0 1 1 1 1
Cap. 4: Aritmética de la computadora
Aritmética binaria
En una computadora cada operando será transferido de una o varias locaciones de memoria a
una de los registros de la CPU, que tiene una capacidad fija y limitada. La ALU no reconoce el
formato de los operandos.

Operaciones aritméticas con enteros signados


Casos posibles de suma: Casos posibles de resta:
(+A) + (+B) (+A) - (+B) = (+A) + (-B)
(+A) + (-B) (+A) - (-B) = (+A) + (+B) En todos los casos se
(-A) + (+B) (-A) - (+B) = (-A) + (-B) realiza una suma

(-A) + (-B) (-A) - (-B) = (-A) + (+B)


Los operandos negativos están complementados a la base (complemento a 2). Los resultados
negativos también.
El signo forma parte de la operación, sumándose cono cualquier otro bit.
En las operaciones se consideran todos los bits del formato, aun cuando sean 0 no
significativos (a izquierda).

Un registro de 8 bits acumulador (AC) almacenará el primer operando antes de la operación y


el resultado después de ella.
Un registro de 8 bits, que almacenará el segundo operando.
Un registro de estado (Status Register, SR). Algunas de sus flags son:
 S: Indica el signo del resultado. 1: negativo. 0: positivo.
 Z: Indica si el resultado es 0. 1: resultado es 0. 0: resultado distinto de 0.
 C: Indica el acarreo.
 V: Indica si hubo o no overflow. 1: hubo overflow. 0: no hubo.
o Overflow: Cuando se excede la capacidad de un registro de almacenamiento,
lo que provoca la invalidez del resultado obtenido. Se verifica cuando, después
de realizada una operación, el ultimo acarreo es distinto del penúltimo. Solo
puede producirse con operandos del mismo signo.

Operaciones aritméticas en punto flotante:


Para sumar dos operandos en representación de punto flotante, se debe tener en cuenta el
alineamiento del punto, es decir, que ambos exponentes sean iguales.
Pasos a llevar a cabo:
 Enviar a la ALU los exponentes de ambos operandos.
 Compara los exponentes. Si el resultado es igual a 0, significa que los exponentes son
iguales, entonces las mantisas tienen su punto alineado. Cuando los exponentes son
distintos se debe desplazar una de las mantisas para alinearla con la otra.
 Enviar a la ALU las mantisas para ser sumadas.
La ALUestá capacitada para desplazar la información de algunos registros asociados a ella, de
esta forma se puede cargar la mantisa en uno de ellos para desplazarla los lugares necesarios.
Cap. 5: Algebra de Boole
Variables binarias, solo pueden tomar dos valores (0 o 1).

El circulo indica
"negación"

A B OR AND NOT (A) OR-EX NOR NAND


0 0 0 0 1 0 1 1
0 1 1 0 1 1 0 1
1 0 1 0 0 1 0 1
1 1 1 1 0 0 0 0

Compuertas lógicas: Dispositivos físicos que implementan una función booleana simple.
OR: A + B (Falso cuando todas las variables están en 0).
AND: A • B (Verdadera cuando todas las variables están en 1).
NOT: A̅ (Invierte el valor).
OR-EX/XOR: A B (Verdadera cuando hay un nro. impar de 1).
NOR: A̅+B ̅ ̅ (Verdadera solo cuando todas las variables están en 0).
NAND: A̅ •B ̅ ̅ (Falsa cuando todas las variables están en 1).
Propiedades:
* Conmutativa: a+b = b+a / a•b = b•a
* Distributiva: a • (b+c) = (a•b) + (a•c) / a + (b•c) = (a+b) • (a+c)
* Asociativa: a + b + c = (a+b) + c = a + (b+c) / a • b • c = (a•b) • c = a • (b•c)
* Identidad: a + 0 = a / a • 1 = a
* Complemento: a + a̅ = 1 / a • a̅ = 0
* Idempotencia: a + a = a / a • a = a
* Involución: a̅̅ = a
* Leyes de De Morgan: a+b ͞ +c
͞ ͞ = a̅ • b̅ • c̅ / a͞•b͞•c͞ = a̅ + b̅ + c̅
- Función booleana: Conjunto de variables booleanas vinculadas entre sí mediante los
operadores de suma, producto y complemento lógico. Se expresan con tablas de verdad,
expresiones literales (polinómica y factorial), expresiones simbólicas y forma canoníca (los
términos contienen la totalidad de las variables del problema).
Ej.: El sistema de seguridad contra incendiosde un depósito funciona en base a tres sensores
S0, S1 y S2. Cuando dos deestos sensores están activados (en “1”) seenciende una alarma
luminosa [AL].Además, si S2 se activa, también seenciende la alarma sonora [AS].
S2 S1 S0 AL AS
Expresión literal completa: Como todos los términos contienen todas 0 0 0 0 0
AL= S͞2.S1.S0 + S2.S1.S0 ͞ + S2.S1.S0 ͞ + S2.S1.S0 las variables esta es la expresión 0 0 1 0 0
͞ ͞ ͞ ͞
AS = S2.S1.S0 + S2.S1.S0 + S2.S1.S0 + S2.S1.S0 CANONICA. 0 1 0 0 0
0 1 1 1 0
1 0 0 0 1
1 0 1 1 1
1 1 0 1 1
1 1 1 1 1
Circuitos:

Minimización de circuitos:
͞
AL= S2.S1.S0 ͞
+ S2.S1.S0 + S2.S1.S0͞ + S2.S1.S0
AL = (S͞2 + S2).S1.S0 + (S͞1 + S1).S2.S0 + (S͞0 + S0).S2.S1
AL = S1.S0 + S2.S0 + S2.S1

Circuito sumador-binario en paralelo


Sumar dos operandos (A y B) de "n" bits cada uno.
Para la suma del primer par de bits se utiliza un circuito semisumador (SS/ HalfAdder, HA), y
para los pares de bits restantes se utilizan sumadores completos (SC / Full Adder, FA).
𝑎𝑛 𝑏𝑛 𝑎2 𝑏2 𝑎1 𝑏1

a, b: Bits de A y B
𝐶𝑛+1 𝐶𝑛 𝐶3 𝐶2 S: Resultado de la suma
SC ... SC SS
C: acarreo

𝑆𝑛 𝑆2 𝑆1
Los bits de ambos operando son las entradas del circuito sumador e ingresan al mismo tiempo.
La suma de los dos primeros bits genera un acarreo que afectara al bloque siguiente; esto
ocurre en todos los bloques.
* Circuito semisumador (SS): Su función es sumar 2 bits sin tener en cuenta el acarreo
anterior. Tiene dos salidas, la suma y el acarreo resultante.
La función 𝑆0 responde a la
compuerta XOR.
𝑆0 = 𝑎 𝑏
La función 𝐶0 responde a la
compuerta AND.
𝐶0 = 𝑎 • 𝑏

*Circuito sumador completo (SC):Su función es sumar 2 bits y el acarreo anterior, generando
como salidas el resultado de la suma y el nuevo acarreo.
𝑆𝑖 = 𝑎 𝑏 𝐶𝑖−1
𝑎𝑖 𝑏𝑖 𝑐𝑖−1 𝐶𝑖 = (𝑎 • 𝑏) + (𝑎 𝑏) • 𝐶𝑖−1

SS

𝑐𝑖
𝑆𝑖
Cap. 6: Lógica digital
Circuitos Combinacionales
Son dispositivos cuya salida depende exclusivamente de la entrada en un instante dado. Se
implementan mediante compuertas, en forma exclusiva.

Dispositivos Combinacionales Típicos


 Generador y Verificador de Paridad: Permite la detección de un único error en la
transmisión de información. Si el circuito controla la paridad par, quiere decir que
contabiliza que la cantidad total de 1 es par. Si controla la paridad impar, control la
cantidad de 1 sea impar.

A
X (par)
B
_
C
X (impar)
D

 Comparador de magnitud: Permite comparar dos números binarios de n bits para


saber si estos son iguales o uno mayor a otro.

A X
Y
B Z

 Codificadores: Es un circuito con varias entradas (entre 2n y 2n-1) y “n” salidas, cuya
misión es presentar en la salida el código binario correspondiente a la entrada
activada.
A X
B
C Y n salidas
Entre 2ny 2n-1
entradas D
Z
E
F
G

1 2 3 4 5 6 7 8 9 A3 A2 A1 A0
1 0 0 0 0 0 0 0 0 0 0 0 1
0 1 0 0 0 0 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 0 0 0 1 1
0 0 0 1 0 0 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0 0 0 1 0 1 A0: 1 + 3 + 5 + 7 + 9
0 0 0 0 0 1 0 0 0 0 1 1 0 A1: 2 + 3 + 6 + 7
0 0 0 0 0 0 1 0 0 0 1 1 1
A2: 4 + 5 + 6 + 7
0 0 0 0 0 0 0 1 0 1 0 0 0
A3: 8 + 9
0 0 0 0 0 0 0 0 1 1 0 0 1
 Decodificadores:Un decodificador es un circuito combinacional, cuya función es
inversa a la del codificador, esto es, convierte un código de n bits de entrada y 2n
líneas de salida. Las salidas se representan algebraicamente con el minitermino que
corresponde al valor de la entrada.
Un ejemplo de aplicación del circuito es que se puede utilizar para el acceso, al
seleccionar una dirección al azar de memoria. La dirección se ve representada en las
entradas y se habilitara solo una de las salidas, la que dirige a esta dirección.

A
B
C S
A
B
C T
A
A B
C U
A
B
V
nentradas B
C
A 2nsalidas
B
C
W
A
B
C
X
C A
B
C
Y
A
B
C
Z

 Multiplexores: Su función es la de “encaminar” las señales binarias de 2n líneas


posibles de entrada en una única línea de salida. La línea de entrada de dato se “elige”
a partir de los valores que puedan tomar la n líneas de selección. Se puede utilizar,
entre otras cosas, para la conversión de bits transferidos en paralelo a serie (de a uno
por vez).

A E0
E1

B E0
n
2 entradas E1 s
C E0
E1

D E0
E1

E0 E1

n líneas de selección

 Demultiplexores: Su función es “encaminar” la información viene en una única


entrada. Las n líneas de selección son las que determinan cual de las 2nsalidas es la
encargada de transmitirlo. Se puede utilizar, entre otras cosas, para la conversión de
bits transferidos en serie a paralelo.
A
E0
E1
W

E0
E1 X
2nsalidas
E0
E1 Y

E0
E1 Z

E0E1

n líneas de selección

 Bus asociado a un Multiplexor-Demultiplexor: Conjunto de conductores que permiten


relacionar registros que actúan como emisores o receptores de bits.

 Circuitos "programables" para múltiples funciones


 Memorias sólo de Lectura
 Dispositivos tipo PLD

Circuitos Secuenciales
En estos dispositivos el valor de la salida depende de la entrada y del historial (salidas previas).
Se puede decir que un dispositivo secuencial se caracteriza porque a partir de una entrada y un
estado (interno) actual, produce una salida y un nuevo estado interno. La implementación de
estos dispositivos requiere la incorporación de elementos de memoria destinados a retener los
estados internos. Hay 2 tipos:
• Asincrónicos: Los cambios solo se producen cuando están presentes las entradas sin
necesidad de una señal de reloj.
• Sincrónicos: Los cambios se producen cuando se establecen las entradas, y además, se
genera una transición de señal de reloj.

Biestables o flip-flops
Es una celda binaria capaz de almacenar un bit. El biestable es un arreglo de compuertas,
caracterizado por tener lazos de realimentación que permitan mantener o memorizar el efecto
de combinaciones anteriores en las entradas.

S= Entrada de seteo.
F F’
S
Si S=0 y F=0, entonces F’=0.
Si S=1 y F=0, luego de que la señal de S pase por la compuerta, F’=1.
Cuando F’ cambia a 1, su estado permanecerá en 1 de manera indefinida y en forma
independiente al valor de S (ya que F=F’=1).
Si bien este tipo de circuito almacena un bit, no podrá volver a 0 nunca.
Ahora, para poder volver el estado a 0 podemos agregar una entrada R que permite resetear el
contenido de F’.

F´ R= Entrada de reseteo.
F S= Entrada de seteo.
S
R
Entonces, cuando R=1, F´=0

El comportamiento del Biestable R-S asincrónico funciona de la misma forma:

R Q

S Q’

El Biestable D sincrónico utiliza los ciclos del clock como señales.

D Q

Clock

Clock: Emite señales cada cierto tiempo, y es quien habilita que pasen las señales de D a Q.
Estas se llaman señales de sincronismo y ya vienen asignadas. Como sean escuchadas las
señales depende de Q, existen 2 formas:
- Clock por nivel: Funciona mientras que haya señal.
- Clock por flanco: Funciona durante la subida o bajada de la señal.

Clock

Q nivel

Q flanco
Cap. 7: Diseño de una computadora digital
Modulo de cálculo en una computadora digital
- Diseño de una computadora digital: Es la organización de módulos de hardware relacionados
por rutas de control y sus datos. Su función es permitir el flujo de señales binarias para
transformar datos de entrada en información útil al usuario.
Un modulo está constituido por una configuración determinada de compuertas. Un circuito es
una "caja negra" que cumple una determinada función lógica.
Cada modulo realiza una o varias operaciones sobre datos codificados en binario, que se
almacenan en registros asociados al modulo mientras dura la operación.
- Microoperación (µop): Operación aplicada a un registro. Se activa en un instante de tiempo
sincronizado por los pulsos del reloj.
Ej.: Sumador binario paralelo.
A B

+ S (µop de suma, de la UC)

Señal del control = 1 cuando se


C presiona la tecla "+", que activa
el módulo sumador

Su función es operar datos binarios para obtener en la salida el resultado de su suma. Los
datos de entrada se almacenan en forma temporal en los registros A y B y, tras la orden de
comando S, el resultado se obtiene sobre el registro C. La orden de comando es la
microoperación de suma que habilita al registro C para que actué como receptor del resultado.

Relación entre el diseño del hardware y la ejecución de instrucciones


La programación en lenguaje de maquina implica el conocimiento de instrucciones en código
de máquina. Para simplificar la tarea de recordar secuencias binarias se ha desarrollado un
lenguaje simbólico de bajo nivel llamado Assembler. Cada computadora tiene su propio
Assembler, que tiene intima relación con su diseño.
La UC entiende instrucciones y genera microoperaciones para su ejecución.
Si se ingresa un programa en lenguaje simbólico de alto nivel:
BEGIN
Input A LDA dir1
Input B C:= A + B ADA dir2
C=A+B STA dir3
Output C
END
Sera convertido en programa ejecutable por un traductor, donde para cada sentencia
corresponderán n instrucciones en lenguaje de máquina. Si se ingresa la sentencia aritmética
(C = A + B) en Assembler, esto demandaría tres instrucciones para obtener el mismo resultado,
en una relación 1 a 1 con las instrucciones en código de máquina.
Tanto el lenguaje simbólico de alto nivel como el de bajo nivel permiten obtener las mismas
instrucciones en lenguaje de máquina que el procesador entiende y puede ejecutar.
La programación en lenguaje de maquina permite aumentar las prestaciones del sistema
operativo.
Instrucciones
Cuando la computadora realiza una tarea, ejecuta una serie de pasos simples representados
por su propio juego de instrucciones. Estas instrucciones constituyen su lenguaje de máquina.
Todo programa que utiliza un lenguaje simbólico debe traducirse a código de maquina antes
de su ejecución.
Código de una instrucción: Es la combinación de bits que la UC de la CPU interpreta para
generar las microoperaciones que permitan su ejecución. La forma de agrupar estos bits
determina la estructura de la instrucción (formato de la instrucción). Una misma UC puede
comprender distintos formatos de instrucción.
El más simple es un grupo de bits para representar una acción y otro grupo para representar el
dato al que afecta. El primer grupo de bits es el código de operación (OPCODE). La cantidad de
bits del COP determina el número de acciones distintas (2𝑛 )
COP DATA Formato de instrucción
Por lo general el segundo grupo de bits (DATO) hace referencia a un dato en memoria,
determina la dirección de la posición de memoria donde se aloja el dato. La cantidad de bits
debe permitir hacer referencia a cualquier posición de memoria.
No siempre los datos se encuentran en memoria. Pueden estar almacenados en un registro de
CPU, hay códigos de operación que no afectan a ningún dato (el segundo grupo de bits puede
aparecer redundante o tomarse como extensión del código de operación).

La memoria está dividida lógicamente en memoria asignada a programas y memoria asignada


a datos. La UC lee una instrucción de la memoria, la aloja en un registro interno (registro de
instrucción) e interpreta si el código de op. afecta a un dato en memoria, en cuyo caso provoca
su lectura. Cuando una instrucción está alojada en la UC está en estado de ejecución y su
código binario indica donde está el dato, cual es la acción que lo afecta y que modulo
hardware lo llevara a cabo.
Modelo de estudio
Se llama "X", es una computadora de propósito general. No es un modelo concreto.
Encuadra los parámetros definidos para una arquitectura de Von Neumann.
Tiene un modulo de almacenamiento de lectura/escritura de 4 Kpalabras (4096) de 16 bits
cada una, con acceso aleatorio a cada palabra identificada por una dirección de 12 bits (212 =
4096, suficiente para direccionar a todas las pos. de memoria) que se representa en
hexadecimal. Rango de direcciones: 000𝐻 a 𝐹𝐹𝐹𝐻 (0 a 4095).
La memoria está dividida lógicamente en programas y datos. "X" puede ejecutar un programa
por vez (monoprogramación).
Arquitectura básica de "X":

MAR: Memory Address Register.


MDR: Memory Data Register.
IR: Instruction Register.
IP: Instruction Pointer.
- Formato de datos: Los datos son del tipo enteros signados de 16 bits (1 para el signo y 15
para la magnitud).
- Formato de instrucción: Las instrucciones se almacenan en palabras consecutivas a partir de
la palabra 000𝐻 . El código de instrucciones es de 16 bits, con un formato único de instrucción:
15 11 0
COP DATA
Código de operación Dirección del dato o ignorados
(4 bits, 0000 a 1111) (12 bits)

La CPU de "X" se encarga de buscar las instrucciones de la memoria, interpretarlas y gestionar


su ejecución, mientras que los datos son operados en la ALU.
La función de la CPU se separa en:
1. Tratamiento de instrucciones.
2. Operación de los datos.
Del tratamiento de instrucciones se encarga la UC , sincronizada por el reloj, y de la operación
de los datos se encarga la ALU.
El medio de comunicación entre la memoria y la CPU es un bus que trasmite ordenes y datos.
Permite la transferencia de grupos de bits que identifican el contenido de una posición de
memoria.
- ¿Como toma la UC las instrucciones del programa almacenado en memoria para
interpretarlas y ejecutarlas?:
1. Búsqueda de la instrucción en memoria. Fase de búsqueda / Fase fetch.
2. Interpretación del código de instrucción.
Fase de ejecución /
3. Búsqueda del dato afectado (si afecta a dato) por la instrucción.
execute
4. Generación de órdenes al modulo que opera sobre ese dato.

Fase fetch: búsqueda de una instrucción en memoria


Cuando la CU ejecuta cada instrucción de un programa debe alternar sus etapas fetch (f) y
execute (e) desde la primera instrucción hasta la última. 𝑓(𝐼0 ) , 𝑒(𝐼0 ) , 𝑓(𝐼1 ) , 𝑒(𝐼1 ) , … , 𝑓(𝐼𝑛 ), 𝑒(𝐼𝑛 )
La secuencia del ciclo 𝑓(𝐼𝑖), 𝑒(𝐼𝑖) se denomina ciclo de instrucción.
Para cada fase 𝑓(𝐼𝑖) la CU debe enviar a memoria la dirección de la palabra donde se encuentra
la instrucción, una orden de lectura y una orden de transferencia de la instrucción a la CU. La
CU retiene la dirección de la instrucción en un registro llamado puntero de instrucción (IP,
Instruction Pointer), que permite que la CU se "distraiga" de la secuencia de la próxima
instrucción del programa que se ha de ejecutar. La longitud del IP depende de la cantidad de
bits que se necesiten para direccionar cualquier instrucción en la memoria (en este caso 12
bits).
𝐼0 siempre se carga en la palabra 000𝐻 en "X", por lo tanto, ese es siempre el valor inicial del IP
cuando se arranca la computadora. Las instrucciones se almacenan en palabras sucesivas, el IP
debe poder incrementarse en una unidad para señalar siempre la próxima instrucción para
buscar, luego de una ejecución. El IP también puede aceptar un valor cualquiera impuesto por
una instrucción que provoca una ruptura de secuencia.

Reseteo Envío al registro de direccionamiento de memoria (MAR)


0 → IP 11 0 IP → MAR

Por orden de la CU durante la fase fetch.


Cuando comienza la
ejecución de un programa.

Incremento
Carga
IP + 1 → IP
DATA → IP
Por orden de la IP, en general durante la
Por ejecución de una instrucción de salto
fase fetch, para direccionar a la próxima
(ruptura de secuencia).
instrucción.

Una vez que la CU envía a memoria el contenido del IP, da la orden de lectura para que la
palabra implicada se almacene en el registro de palabra de memoria (MDR, Memory Data
Register).
La fase fetch termina con la transferencia de la instrucción leída a un registro interno de la CU,
donde la instrucción permanece almacenada mientras dura su ejecución. Este registro se
denomina registro de instrucción (IR, Instruction Register) y su capacidad es igual a la cantidad
de bits del código de instrucción (16 bits en este caso).
15 11 0 Carga de la instrucción
COP DATA MDR → IR
Envío directo al módulo de control Envío a registros receptores de Por orden de la CU (ultimo evento
que decodifica la instrucción. dirección (MAR, IP). ocurrido durante la fase fetch).
Por orden de la CU.

La interpretación del COP la realiza un decodificador. Con 4 bits se generan 16 instrucciones.


La zona DATA es de 12 bits; se relaciona con el MAR cuando se debe tomar un dato de
memoria y con el IP cuando se debe romper la secuencia normal del programa.
La UC actualiza el IP y entra en la fase execute de la instrucción buscada.
Un flag "F" (fase) retiene un 1 durante la fase de búsqueda. Cambia a 0 cuando comienza la
fase de ejecución. Esto permite a la CU alternar de una fase a la otra, inhibiendo órdenes de
búsqueda durante la fase de ejecución y al revés.
* Pasos fase fetch:
𝑓1 : IP → MAR // Transferencia del contenido del IP al MAR para seleccionar la palabra que se ha de leer.
𝑓2 : Word → MDR (por orden de lectura) // Orden de lectura a la memoria para hacerla efectiva.
𝑓3 : MDR → IR // Transferencia de la instrucción al IR.
𝑓4 : IP + 1 → IP // Actualización del IP para que señale la próxima instrucción para ejecutar.
𝑓5 : 0 → F // Actualización del indicador de fase F para entrar en fase execute.

Cuando termina
vale 0

Fase execute
Una vez que se hace efectiva la búsqueda, la CU entra en fase de ejecución (F: 0). Cada código
de instrucción tiene asignada una secuencia de microoperaciones definida en el control.
Supongamos un programa: sumar dos datos almacenados en memoria en las palabras A0A y
A0B y calcular su promedio, almacenando el resultado en la palabra A0C.
A y B son binarios enteros signados. A = 0004𝐻 y B = 0002𝐻 .
Nombre Código
Cargar el acumulador con la palabra LDA A0A 1A0A
A0A (Load accumulator)
Sumar al acumulador la palabra A0B ADA A0B 2A0B
(Add accumulator)
Desplazar el acumulador SHR AXXX
(Equivale a dividir por la base) (Shift right)
Almacenar el acumulador en la palabra STA A0C 3A0C
A0C (Store accumulator)
Fin del programa HLT 0XXX

LDA A0A: La interpretación de su COP (0001) permite la transferencia del dato almacenado en
la palabra A0A al acumulador de la ALU.

𝑓6 : DATA → MAR //Habilita la transferencia de la dirección del dato indicada por la instrucción al registro de
direccionamiento de memoria.
𝑓7 : WORD → MDR // Habilita la lectura de la unidad de memoria.
𝑓8 : MDR → AC // Habilita la transferencia del dato leído al acumulador
𝑓9 : 1 → F // Actualiza la flag F provocando que el control se entere que debe producir microoperaciones de
búsqueda para la instrucción siguiente.

ADA A0B: Para la ejecución de esta instrucción se incluye un sumador binario paralelo. En el
acumulador (AC) está el primer operando. El segundo operando (dato leído de la palabra A0B)
está en el MDR. La microoperación final habilita al acumulador como receptor de la suma y
habilita al SR (Status Register) para que se actualice.
𝑓10 : DATA → MAR //Habilita la transferencia de la dirección del dato indicada por la instrucción al registro de
direccionamiento de memoria.
𝑓11 : WORD → MDR // Habilita la lectura de la unidad de memoria.
𝑓12 : MDR + AC → AC // Habilita al acumulador como receptor del resultado (0006𝐻 ) y al SR como receptor de la
información del estado final de la operación (signo, cero, carry y overflow).
𝑓13 : 1 → F // Actualiza la flag F provocando que el control se entere que debe producir microoperaciones de
búsqueda para la instrucción siguiente.

SHR: El control genera una microoperación que ordena al acumulador desplazar su


información un bit a derecha. Esto implica lograr dividir el resultado almacenado en AC por 2,
para calcular el promedio de los datos sumados.

⃗⃗⃗⃗⃗ → AC // Permite desplazar la información del AC una posición a la derecha con lo que divide por la base.
𝑓14 : 𝐴𝐶
𝑓15 :1 → F // Actualiza la flag F provocando que el control se entere que debe producir microoperaciones de
búsqueda para la instrucción siguiente.

STA A0C: Permite la escritura del promedio calculado en la palabra de memoria A0C.
𝑓16 : DATA → MAR // Habilita la transferencia de la dirección de la palabra donde se va a escribir el dato, indicada
por la instrucción, al registro de direccionamiento de memoria.
𝑓17 :AC → MDR // Habilita la transferencia del dato almacenado en el acumulador al registro de palabra de memoria.
𝑓18 : MDR → WORD // Habilita la escritura en la unidad de memoria.
𝑓19 : 1 → F // Actualización de la flag F para entrar en una nueva fase de búsqueda.

HLT: Inhibe la generación de microoperaciones dejando a "X" suspendida. De no existir se produce una
etapa fetch, considerando la siguiente posición de memoria como una instrucción, esto implica que el
programa continúe de manera imprevista y provoque el fracaso de su ejecución.
Juego de instrucciones de "X"
Tiene 3 tipos: Instrucciones que afectan datos de la memoria (ej. LDA A0A), instrucciones que
afectan datos de registros (ej. SHR) e instrucciones que permiten la entrada de un dato a "X"
desde el exterior, o la salida de un dato desde "X" al exterior (ej. INP).
Formato: Tres letras para el COP y tres dígitos hexadecimales para la dir.del operando.
Instrucción Código Acción
(hexa)
HLT 0XXX H Determina el fin del programa.
LDA HHH 1HHHH Transfiere el dato almacenado en HHH al acumulador.
ADA HHH 2HHHH Incluye como dispositivo de cálculo un sumador binario paralelo.
STA HHH 3HHHH Almacena el resultado final en HHH.
JMP HHH 4HHHH Se usa cuando se necesita romper el orden secuencial del programa
ANA HHH 5HHHH Asocia el AC y el dato obtenido mediante el operador AND. El resultado queda en el AC.
XOA HHH 6HHHH Asocia el AC y el dato obtenido mediante el operador OR EXCLUSIVE.
CLA 7XXX H Pone en 0 el acumulador.
CMA 8XXX H Invierte los bits del acumulador (calcula el complemento restringido).
INC 9XXX H Suma una unidad al dato cargado en el acumulador.
SHR/SHL AXXX H Desplaza hacia la derecha/izquierda un bit del dato almacenado en el acumulador.
SNA HHH BHHHH Salta a HHH si el flag S/N = 1.
SZA HHH CHHHH Salta a HHH si el flag Z = 1.
SCA HHH DHHHH Salta a HHH si el flag C = 1.
INP EXXXH Permite la entrada de un dato desde el periférico de entrada. Transferencia desde ENT (registro del
único periférico de "X") al acumulador.
OUT FXXXH Permite la salida de un dato almacenado en el AC hacia el periférico. Transferencia desde AC a SAL
(registro del periférico).

Unidad de control y sincronización del tiempo


Cada microoperación debe ser controlada por el tiempo. Esto evita que por ej. la transferencia
al acumulador (MDR → AC) no se produzca antes de que la palabra haya sido cargada en el
MDR.
Las señales de tiempo que afectan a las microoperaciones están reguladas según el tiempo de
respuesta de los registros involucrados.
Las señales de tiempo son generadas por el reloj/clock, que está constituido por un oscilador y
circuitos que generan pulsos.
 Ciclo de reloj/ciclo menor: Intervalo entre dos pulsos consecutivos de reloj (0 y 1).
𝑐𝑎𝑛𝑡𝑖𝑑𝑎𝑑 𝑑𝑒 𝑐𝑖𝑐𝑙𝑜𝑠 𝑑𝑒 𝑟𝑒𝑙𝑜𝑗
𝑓𝑟𝑒𝑐𝑢𝑒𝑛𝑐𝑖𝑎 = 𝑠𝑒𝑔

1 1 1 Hz = 1 ciclo / 1 segundo
Ciclo de reloj
0 0

Ej. ¿Cuántos ns tarda un ciclo de reloj en una PC que trabaja a una frec. de 25 MHz?
25.000.000
25 𝑀𝐻𝑧 =
𝑠𝑒𝑔
1 𝑠𝑒𝑔 1 𝑠𝑒𝑔
1 𝑐𝑖𝑐𝑙𝑜 = = = 0,04 𝑠𝑒𝑔 . 10−6 = 40 . 10−6 . 10−3 𝑠𝑒𝑔 = 40 . 10−9 𝑠𝑒𝑔 = 10 𝑛𝑠
25.000.000 25 . 106
Una computadora controlada por un sistema de reloj se denomina sincrónica.
 Ciclo de la computadora / maquina: El tiempo de una secuencia repetitiva formada por
4, 8 o 16 señales de tiempo.
 Tiempo de acceso a memoria: Tiempo que tarda la CU en buscar la información en la
memoria y dejarla disponible en el MDR.
El sistema de reloj de "X" genera 8 señales de tiempo (𝑡0 , 𝑡1 , 𝑡2 , 𝑡3 , 𝑡4 , 𝑡5 , 𝑡6 , 𝑡7 ) asociadas a un
registro de desplazamiento circular que inicia en 10000000 y por cada pulso desplaza el único
bit 1 a la derecha. Genera una señal de tiempo cada ocho pulsos del reloj.
La CU de "X" está formada por dos bloques: decodificador de instrucciones y el secuenciador
que genera microoperaciones. Las cuatro entradas (COP) del decodificador varían entre 0000 y
1111, según la instrucción almacenada en el IR. Las salidas indican con un 1 cuál de las 16
combinaciones se dio en la entrada.

El módulo de cálculo: ALU.


Es el módulo de tratamiento de datos según ordenes de la CU.
La ALU esta implementada en torno del registro AC (acumulador). Cuando la operación se
realiza sobre un dato, este se almacena en el acumulador y el resultado de la
operaciónpermanece en este registro. El AC debe tener la capacidad de puesta a 0 (CLA),
complemento (CMA), incremento (INC) y desplazamiento a derecha e izquierda (SHR/SHL).
Algunas instrucciones afectan a dos datos (ADA, ANA, XOA), el primer dato se almacena en el
acumulador y el segundo en el MDR, el resultado final queda en el AC. Estas instrucciones
requieren un sumador binario paralelo.
El estado de las banderas (flags) del SR permite establecer o no una ruptura de la secuencia
normal del programa (SNA, SZA, SCA). Cada bandera se actualiza después de una operación en
la ALU.
 Desplazamiento de bits en los registros de la ALU: Los operandos residen
temporalmente en registros asociados al sumador. Permite multiplicar (despl. a izq.) o
dividir (despl. a der.) por la base (en binario, 2).
 Comparación mediante resta: Cuando se quieren comparar dos operandos, se efectúa
una sustracción sin necesidad de almacenar el resultado, preguntando por el flag Z o
S/N del SR.
Si Z=0 y S=1, el primer operando es menor que el segundo, y si Z=0 y S=0, el primer
operando será mayor que el segundo.
 Incremento y decremento de un registro: Incrementa el valor de un operando
aumentándolo en una unidad o restándole una.

 Operaciones lógicas:
o Complementación: Invertir el valor de cada uno de los bits. Una de sus
aplicaciones es para el cálculo de restas mediante la suma del complemento
del sustraendo.
o "y"/producto lógico: Se aplica a dos operandos, A ᴧ B. Hallando el producto
lógico bit a bit de cada par de bits.
o "o"/suma lógica: Se aplica a dos operandos, A v B. Hallando la suma lógica bit a
bit de cada par de bits. Aplicación: Permite agregar los bits de zona para
transformar un digito BCD a ASCII.
o "o exclusivo": Se aplica a dos operandos, A v̲ B. Es similar a la suma aritmética,
solo que no se consideran los acarreos al operar cada par de bits. Aplicación:
Permite comparar si dos operandos son iguales (el resultado seria 0).

El registro de estado asociado a la ALU


En este registro (SR) cada bit se denomina flag. Un "1" indica que la condición se cumple.
S Z V H O P I C

 S o N: Indicador del signo. S=1 negativo, S=0 positivo.:


 Z: Indicador de zero. Z=1 es cero, Z=0 es distinto de cero.
 V u O: Indicador de overflow. O=1 hay overflow, O=0 no hay overflow.
 H: Indicador de acarreo de los primeros 4 bits (utilizado cuando la ALU suma dos
dígitos BCD).
 P: Indicador de paridad. P=1 si la cantidad de 1 del resultado es impar (cuando opera
con paridad par), P=0 en caso contrario.
 I: Indicador de interrupción. I=1 si hay requerimiento de atención de la CPU por parte
de un dispositivo externo.
 C: Indicador del último acarreo (carry) y puede llegar a intervenir en los
desplazamientos como un bit más asociado al acumulador.
El RS de "X" solo posee los flags S/N, Z y C.
Cap. 8: Microprocesadores
Arquitecturas abiertas y cerradas
Arquitectura abierta: Es un tipo de arquitectura de ordenadores o de software que permite
añadir, modernizar y cambiar sus componentes, ósea, es configurable según la necesidad del
usuario.
Conformado por el microprocesador, la MP, Buses, Modulo de E/S, etc.

Arquitectura cerrada:Donde el fabricante del hardware escoge los componentes, y


normalmente no son actualizables. Esta diseñada para suministrar una tarea predeterminada y
no es configurable. Estas son: Más seguras, más costosas, proporcionan más almacenamiento,
su mantenimiento es costoso.
Conformado por el microcontrolador

Microprocesador
Chip: Circuito electrónico diseñado sobre una estructura de silicio donde se incluyen millones
de componentes electrónicos. Es de bajo costo y gran capacidad lógica.
Una compuerta lógica se arma con transistores y permite satisfacer la tabla de verdad a la que
pertenece la compuerta. La evolución permite incluir más compuertas en el mismo espacio.

Microprocesadores: Chips (o circuitos integrados) que varían en capacidad y direccionamiento


de memoria, registros, niveles de cache, capacidad de transferencia de datos, etc. Están
constituidos por diferentes partes:
 Unidad de control
 ALU Agrupadas bajo el termino CPU
 Un registro acumulador (AC)
 Banco de registros
 Varias unidades de coma flotante
 Etc.

Arquitectura de una CPU


La CPU es el módulo físico más importante.
Unidad de Unidad de Unidad de
ejecución decodificación prebúsqueda
Tres bloques
Registros Cola de Unidad de funcionales de
CPU microcódigos prebúsqueda una CPU Intel

ALU Precodificación y Cola de


secuenciamiento instrucciones

 Unidad de prebúsqued: Obtiene instrucciones de la memoria principal por medio de un


bus.Cada instrucción espera en la cola y pasa a la unidad de predecodificación.
 Unidad de predecodificación: Interpreta la instrucción, la traduce a microcodigos
(lenguaje de menor nivel que el código de maquina).
 Unidad de ejecución: Es donde se realiza la ejecución con el soporte de la ALU y los
registros de la CPU.
o ALU: Opera los datos que recibe de la memoria y obtiene el resultado. Las
operaciones pueden ser aritméticas (suma, sustracción, desplazamiento) o
lógicas (or, and, not).
o Registros del CPU: Pequeña memoria local. Guardan información de manera
transitoria para el procesamiento en curso (operandos, direcciones de
memoria, etc.).

Mother-board: (o placa madre) Es un soporte que sustenta físicamente al microprocesador y


otros chips y es utilizado como elemento de comunicación entre los distintos componentes
que se encuentran en el entorno del microprocesador. La interconexión se realiza por medio
de líneas impresas en la placa (buses) que permiten la conducción de señales binarias.
Los buses se clasifican según el tipo de bits que transfieren en buses de: control, datos y
direcciones.

Longitud de palabra: Grupos de bits que el microprocesador “procesa” (se obtiene de una
memoria (MP), se los opera y luego almacena el resultado de nuevo en memoria). La longitud
de palabra se relaciona con la capacidad de trabajo simultáneo expresado en bits, puede
procesar grupos de 32 o 64 bits.

Procesamiento
 Multitarea: El procesador realiza las operaciones de forma alternada a gran velocidad,
parece que fuera al mismo tiempo aunque no lo es. Coincide con el procesamiento
pipeline.
 Multiprocesamiento: El procesador es realmente capas de realizar varias operaciones
al mismo tiempo.

Fases de ejecución de una instrucción (Ciclo de instrucción)


 Búsqueda de la instrucción o Fase Fetch (BI): Se busca la instrucción en memoria y se
transfiere, a través del bus de datos, al registro de instrucción (RI) para ser ejecutada.
 Decodificación (DEC): La instrucción pasa a la Unidad de Control, donde será
decodificada e interpretada.
 Búsqueda de operandos (BU):Se buscan los operandos en la instrucción a ejecutar
(destino y fuente). Los operandos pueden estar en la misma instrucción o se puede
acceder a memorias para obtenerlos.
 Ejecución y actualización de IP: Se ejecuta la instrucción y se modifica el IP para
apuntar a la siguiente instrucción.

Pipeline: Estructura interna de ejecución en cadena que maximiza el rendimiento de la CPU,


permitiendo mejora en forma sustancial la cantidad de instrucciones que se procesan por
segundo. Esto se debe a que se procesan simultáneamente diversas etapas de distintas
instrucciones, completándose en cada etapa una parte de la ejecución de cada instrucción.
Buses
Conjunto de cables por donde viajan bits (información) de manera simultanea. Cuanto más
ancho el bus, más cantidad de cables y más cantidad de info que puede transferir en
simultáneo.
 Bus de direcciones: Es unidireccional. Transfiere las direcciones de locaciones de
memoria al registro interno de direcciones. La capacidad de la memoria depende de la
cantidad de bits que pueda direccionar. (n cables en Bus, 2n B es la capacidad de MP)
 Bus de datos: Es bidireccional. Permite la transferencia de datos para la lectura y
escritura de memoria.
 Bus de control:Es bidireccional. Envía señales de/a la unidad de control para la
ejecución de microinstrucciones.

Periféricos: Dispositivos que permiten el ingreso de datos (de entrada), salida de resultados (de
salida) y el almacenamiento a largo plazo (de E/S o memorias externas). Utilizan interfaces que
transfieren datos entre la memoria y el periférico. Están compuestos por dos partes físicas:
Parte electromecánica y su controlador que se encarga de la comunicación con un bus
(constituido por un buffer interno que permite el almacenamiento de la información que viaja
desde o hacia el soporte y una lógica de control que interpreta comandos y genera señales de
control para la operación del periférico).
Puerto: En hardware permite que la CPU se enlace a un periférico. En software un port es una
dirección del espacio de direccionamiento de la memoria principal. Un puerto serie permite el
envió o la recepción de bits en serie.

Sistema de reloj
Cada microprocesador tiene su propio reloj interno, cuya frecuencia indica con que velocidad
puede procesar bits Las instrucciones pueden ser medidas en ciclos de reloj. Los ciclos indican
el tiempo de comienzo y fin de cada etapa. Esta señal oscila a intervalos regulares entre 0 y
1.La velocidad de ejecución depende de la velocidad del reloj del sistema.

1 ciclo
En 1 ciclo se cumplen las 4 tareas del ciclo de instrucción.
Frecuencia (f): f (Hertz) = Ciclos x Segundo
Periodo (T): T = 1/f (inverso de frecuencia)  Tiempo que tarda el ciclo

Tecnologías
El microprocesador tiene incorporadas cuales son las instrucciones que puede entender y
ejecutar, a esto se lo llama set de instrucciones.
 CISC: Set de instrucciones complejo que tiene mayor cantidad de instrucciones. Este
admite múltiples modos de obtención del dato y, por lo tanto, un mismo verbo tendrá
en el set tantas instrucciones distintas como modos de direccionamiento acepte el
verbo. Permiten diseñar programas de lógica compleja con pocas instrucciones de alta
complejidad (programas más cortos).
 RISC: Tienen un set de instrucciones constituido por pocas operaciones simples y
rápidas (instrucciones más rápidas).Su finalidad es que cada instrucción tenga la mayor
cantidad de micro operaciones posibles, de modo que estas se ejecuten en 1 ciclo del
reloj. Sin embargo es menos eficiente que el CISC.
 EPIC:Combina ambas, permite la ejecución de múltiples instrucciones en paralelo.

Modos de trabajo
 Modo real: Se utiliza en el arranque del sistema, o también después de un Reset. Se
caracteriza por:
o MP de 1MB (20 líneas de bus de direcciones).
o Mono-tarea: Solo 1 tarea por vez.
o No manejo de memoria virtual.
La memoria aparece como un conjunto de porciones de memoria de 64 K.
Recursos para gestionar la memoria:
o CS: Code Segment (allí va la ubicación del código).
o DS: Data Segment (allí va la ubicación de datos).
o SS: Stack Segment.
o ES: Segmento extra de datos.
Los registros de segmento son de 16 bits pero enmascaran una dirección de 20 bits.
 Modo protegido: Modo habitual de trabajo del Pentium.
o Mayor manejo de MP (32 bits de dir. 4 GB)
o Multiusuario
o Multitarea
o Memoria virtual (64TB)
o Métodos de protección.
Los programas de usuario tienen acceso limitado al juego de instrucciones.

Registros
Los registros son memorias de alta velocidad y poca capacidad integradas al microprocesador,
permite guardar transitoriamenteinformación y acceder a valores muy usados.
 Registros visibles: Aquellos que pueden actualizarse por las aplicaciones. (A
continuación)
 Registros Invisibles: Aquellos que son de alcance exclusivo de instrucciones de mayor
privilegio. Se los puede acceder por medio de los programas del SO.

Registros de cálculo
Ligados a las operaciones de la UAL
31 16 15 8 7 0 (32 / 16 / 8 bits)

EAX AH AX AL
EBX EBX BH BX BL
ECX CH CX CL
EDX DH DX DL

 AX: Registro acumulador. Lo utiliza la ALU cada vez que necesita hacer una operación.
 BX: Registro base de direccionamiento a memoria.
 CX: Registro Contador. En general se lo utiliza como contador (repetitivas, por ej.).
 DX: Registro para datos. Extensión de datos del AX, por si este excede su capacidad.

Registros punteros
Son utilizados para desplazarse dentro de un bloque o zona de memoria.
31 16 15 0 (16 / 8 bits)

EIP IP
ESP SP
EBP BP
ESI SI
EDI DI
 Puntero de instrucción (IP): Apunta a la locación de memoria donde se encuentra la
próxima instrucción a ejecutar, no contiene la dirección física final.
 Stack pointer o puntero de pila (SP):Puntero que apunta a la zona de pila. Este contiene
la dirección de la celda que se debe consultar de la zona de Pila para saber a donde
retornar luego de ejecutar una subrutina.
 Puntero base (BP): Relacionado con la zona de pila (falta info).
 Source and Destiny o fuente y destino (SI/DI): Se utiliza para el movimiento de la
cadena de caracteres.

Registro de estado
Es donde se almacenarlos flags (indicadores)aritméticos (para operaciones de ALU), flags de
modo de trabajo del micro, flags asociadas a interrupciones, etc.
31 16 15 0 (32/ 16 bits)
Eflags Rflags
Registro de segmento
Brindan soporte a los SO que administran la memoria en segmentos. Almacenan la referencia
binaria a donde empieza la zona de memoria para este objeto.
15 0

CS
DS
SS
ES
FS
DS

 Segmento de códigos (CS): Almacenan las instrucciones de los programas.


 Segmento de datos (DS): Almacenan datos que requieren o generan la operación de un
programa.
 Segmento de pila (SS): Datos relacionados con la pila.

Registro de direcciones de memoria (MAR)


Es un registro específico de alta velocidad y poca capacidad, integrado en
el microprocesador.Este registro se guardan las direcciones de memoria a las que está
accediendo la CPU, para leer o escribir.

Unidad de Control
Su función es buscar las instrucciones en la memoria principal, decodificarlas (interpretación) y
ejecutarlas.

La unidad de control Rom de control Micro-Programas


RI (Registro de instrucción)
esta formada por la
ROM de control. Fase Fetch

MI1
UC (Unidad de control) Micro-Instrucciones MI2
MI3 Mov AX, Inmed

Bus de control ADD AX, [Mem]

Mapa de 1 y 0 que genera el microprocesador


MOV AX, [Mem]
ROM de control: Memoria de solo lectura que almacena microinstrucciones que conforman
microprogramas. Tiene tantos microprogramas como instrucciones halla en el set de
instrucciones del microprocesador.

Ciclo de instrucción (según UC) ver diapositivas


 Búsqueda de la instrucción o Fase Fetch (BI): Implica la búsqueda de instrucciones en el
Registro de instrucción.
 Decodificación (DEC): Apunta al microprograma (de la ROM de control)
correspondiente a la instrucción. Se comienzan a ejecutar los microinstrucciones
correspondientes al MP. Cada MI genera 1 y 0 en el bus de control, lo que indicara que
se realice determinada acción: buscar, escribir, leer, etc.
 Búsqueda de operandos (BU)
 Ejecución y actualización de IP
(Y vuelve a fase fetch)

Alimentación
Fuente: Es un dispositivo que transforma la corriente que nos entrega la red eléctrica para que
sea aceptable para los circuitos electrónicos. La corriente suministrada por la red es alterna y,
por lo tanto, requiere de un procedimiento de rectificación para convertirla en continua. El
proceso de transformación genera de una entrada de 220V, una salida de, por ej, 5V.

Interrupciones y excepciones
Son acontecimientos acusados tanto por dispositivos de E/S como por el programa que se
ejecuta en el microprocesador y su efecto produce una suspensión de la actividad actual del
micro.
Cada interrupción esta asociada con un numero que la identifica; este permite convocar al
servicio que la atiende.

Interrupciones
 Externas o Hardware: Son convocadas asincrónicamente en cualquier momento. No se
encuentra bajo el control del programa.
o No Enmascarables: Siempre es atendida. Se considera de máxima importancia.
Se avisa al CPU por la señal NMI.
o Enmascarables: Se produce según una condición. Ej.: Si EI esta activada, es
atendida por el CPU. De ser así, un circuito externo especial, llamado
Controlador Programable de Interrupciones, decide que prioridad tiene sobre
las demás peticiones de interrupción posibles y le da curso a la consulta del
vector de interrupciones correspondiente. INTR?
 Internas o Software: Se convocan en forma sincrónica en el programa. Se pueden
producir por la ejecución de una instrucción específica dentro de un programa, para
solicitar una interrupción que cumpla con alguna función determinada. INTO? / INT n?
Excepciones
 Faltas o errores: Son las que se pueden detectar y corregir antes que se produzca la
ejecución de una instrucción determinada.
 Trampas o excepciones: Otra falta común puede ser el código de operación no valido.
Son las que se detectan una vez ejecutada la instrucción que las provoca.
 Abortos: Son las que se detectan sin poder localizar la instrucción que las provoca,
abortando el procesamiento del programa.

Resguardode contexto: Cuando se produce una interrupción y esta no provoca la finalización


del programa en ejecución, se debe resguardar la información que se aloja en los registros del
micro. Toda esta información asociada con la ejecución se la almacena en la pila de MP.

Restauración de contexto: Cuando el servicio se ejecuto por completo, el programa


interrumpido debe continuar su ejecución, pero los registros contienen información inútil, es
entonces el momento de restaurar el entorno del CPU “rescatando” la información que tenia
en los registro desde la pila.

Ósea, todo el proceso de interrupción se lleva a cabo en los siguientes pasos:


 Programa en ejecución
 Presentación de la interrupción
o Resguardo de contexto de CPU en la pila
o Ejecución del servicio de atención de interrupción
o Restauración del contexto de CPU
 Programa nuevamente en ejecución.

Fases de atención a una interrupción o excepción


 1ra: Se comprueba si hay interrupciones pendientes de ser atendidas entra cada dos
instrucciones. Si hay varias peticiones de interrupciones pendientes se atenderán por
orden de prioridad.
 2da: Al comenzar la interrupción hay que salvar el estado actual para que al finalizar la
interrupción o excepción pueda retornar. Para ello se guarda en la pila el CS, el IP y el
registro FLAGS. (IF = 0, prohibiendo las interrupciones enmascarables).
 3ra: La CPU localiza la entrada correspondiente en la IDT y carga los registros CS e IP
con el valor contenido en dicha entrada.
 4ta: La interrupción finaliza con la instrucción IRET, recuperando de la pila el CS, IP y
FLAGS.

Tabla de descriptores de excepciones e interrupciones (IDT)


El procesador dispone de la Tabla de descriptores de interrupciones IDT, que esta formada por
256 entradas. Cada uno de los diferentes tipos de interrupciones esta asociado a una de estas
entradas. En modo real cada entrada tiene 4 bytes (1KB de IDT) y en modo protegido 8 bytes (2
KB de IDT).
La IDT puede encontrarse en cualquier lugar de la MP, para localizarla se utiliza el registro
IDTR. Este registro contiene 32 bits para indicar la dirección de la base y otros 16 bits para
determinar el límite de la IDT.
REGISTRO IDTR

DIRECCIÓN BASE DE LA IDT LÍMITE DE LA IDT

TABLA DE VECTORES DE
INTERRUPCION IDT

+ PUERTA PARA LA INT # n


(n-1) * 8

PUERTA PARA LA INT # 3


16
PUERTA PARA LA INT # 2
8
PUERTA PARA LA INT # 1
31 0

Vector Descripción Flag Causa Código de Clase


error
0 Error de división #DE DIV IDIV No Falta
1 Excepción de depuración #DB Cualquier código/dato de referencia/INT1 No Falta/trampa
2 Interrupción NMI - Interrupción externa no enmascarable No Interrupción
3 Punto de ruptura #BP INT 3 No Trampa
4 Desbordamiento #OF INT 0 No Trampa
5 Comprobación de limites #BR BOUND No Falta
6 Código OP no valido #UD UD2 o código OP reservado No Falta
7 Coprocesador matemático no disponible #NM WAIT/FWAIT o coma flotante No Falta
8 Doble falta #DF Instrucciones que originen una excepción, NMI o INTR Si (cero) Aborto
9 Desbordamiento del segmento del - Instrucciones de coma flotante No Falta
coprocesador
10 TSS no valido #TS Acceso TSS o conmutación de tareas Si Falta
11 Segmento no presente #NP Carga de registros de segmento o acceso de segmentos Si Falta
12 Excepción en la pila #SS Operaciones de pila y carga registros SS Si Falta
13 Protección general #GP Referencia a memoria y comprobación Si Falta
14 Fallo de pagina #PF Referencia a memoria Si Falta
15 Reservados por Intel - - No -
16 Error de cina flotante FPU #MF WAIT/FWAIT o coma flotante No Falta
17 Comprobación de alimentación #AC Cualquier dato referenciado en memoria Si (cero) Falta
18 Comprobación de la maquina #MC Códigos de error y fuentes son modelos dependientes No Aborto
19 Excepción de coma flotante SIMD #XF SEE SSE2 No Falta
20-31 Reservados por Intel - - - -
32-255 Interrupción definida por el usuario - Interrupción externa o INT n - Interrupción

Interrupciones y excepciones en modo real


En modo real, el SO debe tener cargado en MP la tabla IDT. La IDT es referenciada mediante el
IDTR. En cada entrada de la tabla se apunta al segmento de código donde reside la rutina que
atiende a la interrupción, ya que cada vector es de 32 bits y guarda los registros CS e IP (de los
cuales se puede obtener la dirección física).
El tamaño máximo que puede tener la IDT es de 1 KB (256 entradas x 32b/entrada).
IDTR
MEMORIA
PRINCIPAL
BASE LIMITE

IDT
ENTRADA 255
.
.
.
.
.
.
/16 1MB
. +
.
.
CS . IP
.
. X16
. /16 /20

ENTRADA 0
Interrupciones y excepciones en modo protegido
En modo protegido la tabla IDT esta compuesta por entradas que contienen descriptores de
puertas, que permiten acceder al segmento donde se encuentra la rutina. Cada entrada es un
descriptor de 64 bits, por lo que el tamaño máximo de la IDT es de 2 KB (256 entradas x
64b/entradas).

REGISTRO IDTR

DIRECCIÓN BASE DE LA IDT LÍMITE DE LA IDT

MEMORIA PRINCIPAL

+ DESCRIPTOR
TIPO 255

TABLA DE
DESCRIPTORES
DE INTERRUPCION
2KB

DESCRIPTOR
TIPO 1
DESCRIPTOR
TIPO 0

Los descriptores de la IDT responden a tres tipos de puertas:


 Puertas de tarea: Esta en la entrada de la IDT y que sirve para realizar una
conmutación de tareas. Esto significa que la rutina de interrupción esta en otra tarea
distinta a la tarea en curso.
Al producirse la interrupción se accede a una entrada de la IDT, en la que reside el
descriptor de una puerta de tarea que la va a atender. La CPU carga el descriptor TSS
en el registro TR produciéndose la conmutación de tareas. El TR apunta a la entrada de
la GDT, donde se obtiene la base, el límite y los atributos del TSS. De esta manera, se
pone en marcha la tarea que atiende a la interrupción.
Si durante la ejecución de la tarea de interrupción se produce nuevas excepciones, se
introducirán en la pila de la tarea de la interrupción y antes de terminar dicha tarea
habrá que eliminar las excepciones apiladas.
 Puertas de interrupciones y excepciones: No hay conmutación de tareas como con las
puertas de tarea. En este caso lo que se hace es conmutar dentro de la misma tarea a
un segmento de código donde resida la rutina de interrupción.
En la primera fase de la interrupción se detecta la interrupción o excepción, y en la
segunda fase se guardan los valores del estado actual de la pila para poder retornar al
finalizar la interrupción.
En caso de encontrarse en el mismo nivel de privilegio, las puertas de interrupción
tienen que salvar en la pila los registros CS, EIP y EFLAGS. Si la puerta es de excepción
entonces IF = 1 (permitiendo atender las interrupciones enmascarables). Mientras que
si la puerta es de interrupción, IF=0 prohibiendo las interrupciones enmascarables.
Cap. 9: Memorias
Memorias
Las memorias pueden clasificarse en ciertos parámetros que las diferencian.
 Modo de acceso:
o Acceso aleatorio: En cada acceso el decodificador de direcciones recibe la
dirección de la posición de memoria a acceder. El tiempo de acceso es
independiente del lugar físico que ocupa la unidad de información en el
soporte.
o Acceso secuencial: Se establece una posición de referencia, a partir de la cual
comienza un rastreo de la unidad de información, que consiste en la lectura de
todas las unidades que la precedan hasta dar con la buscada. El tiempo de
acceso depende de la distancia entre la posición inicial y la unidad de
información buscada.
o Acceso asociativo: La búsqueda de la unidad de información implica la
comparación de un grupo de bits, con el contenido de una posición de
memoria. Para lograr esto se envía a la memoria un grupo de bits que se
compara con todas las unidades de información con el fin de hallar una
coincidencia.
o Acceso directo: permite a ciertos componentes de una computadora accede a
la memoria del sistema para leer/escribir independientemente de la CPU.
 Operaciones que aceptan:
o Lectura/escritura: Permiten ambas operaciones.
o Solo lectura: Permiten únicamente esta operación.
 Duración de información:
o Volátiles: Pierden su información con el corte de suministro de corriente.
o No volátiles (o perenne): Caso contrario.

Tiempo de acceso: Lapso transcurrido desde la orden de lectura y la disponibilidad efectiva de


la unidad de información (o posición de memoria).

Memoria Principal
La memoria principal esta constituida por 2 tipos de memorias semiconductoras (no
magnéticas):
 RAM: Memoria transitoria, cuyo contenido puede variar. Se utiliza cuando se quieren
procesar programas o datos intercambiables, puesto que se puede leer y escribir. Es
volátil.
 ROM: Memoria fija, que se mantiene inalterable atendiendo actividades
imprescindibles y no modificables. Almacena programas y datos fijos asociados en
forma directa a la CPU, por ende es de solo lectura. Es no volátil.
La RAM y ROM son de acceso aleatorio.

Tecnologías RAM
 SRAM (estática): Cada celda es un elemento biestable diseñado con compuertas. Se
puede modificar solo en un proceso de escritura, sino permanece inalterable.
 DRAM (dinámica):Cada celda almacena un “1” que se representa con carga de un
condensador, este conserva su carga con cierto nivel de deterioro por un periodo
prestablecido, por lo que antes de que la información se pierda hay que restablecer la
carga. Este proceso de regeneración se denomina ciclo de refresco, el cual se produce
en intervalos regulares y esta a cargo del controlador de memoria. Son mas lentas que
las SRAM pero tienen mayor capacidad.
 RAM de acceso directo: Permite el acceso de forma random, para esto se organiza de
manera matricial en filas y columnas (p*q). Cada fila (o palabra (p)) tiene igual
cantidad de bits (q). El número que identifica la palabra se denomina dirección física y
representa al ordinal que corresponde dentro de la matriz (desde 0 hasta p-1).
 RAM con acceso asociativo:La posibilidad de asociación requiere que todas las celdas
de almacenamiento se relacionen con circuitos que permitan la comparación.

MMU: Unidad de manejo de memoria, permite el cambio de modo segmentario a paginación y


viceversa por el programador. Entre las funciones de este dispositivo se encuentran la
traducción de las direcciones lógicas (o virtuales) a direcciones físicas (o reales), la protección
de la memoria, el control de caché y, en arquitecturas de computadoras más simples
(especialmente en sistemas de 8 bits).

La MP tiene 2 modos de trabajo: Segmentario y Paginación.


Modo Paginación
Memoria virtual es un diseño computacional que permite al software usar más MP que la que
realmente posee la computadora. Esta combina la MP del equipo con espacio temporal en el
disco duro. Cuando queda poca MP, la memoria virtual mueve datos de esta a un espacio
llamado archivo de paginación (archivo temporal dividido en páginas). Al mover datos al
archivo de paginación y desde él, se libera MP para completar la tarea.
Los sistemas de paginación de memoria dividen los programas en pequeñas partes o páginas.
Del mismo modo, la memoria es dividida en trozos del mismo tamaño que las páginas
llamados marcos de página. De esta forma, la cantidad de memoria desperdiciada por un
proceso es el final de su última página, lo que minimiza la fragmentación interna y evita la
externa.

Segmento: Es una porción de memoria de tamaño variable que contiene un mismo tipo de
dato o información. No son de tamaño fijo y hay distintos tipos:
Dirección de memoria:
 Dirección segmentada:
Ej: 0D1F:0100 Seg = 0D1F Des=0100
(Segmento) : (Desplazamiento)

 Dirección física:
Puede calcularse en base a la siguiente formula:

DF = RS x 10h + desplazamiento
Ej.: CS = A000 IP = 0500
DF = CS x 10h + IP
DF: Dirección física
DF = A0000 + 0500 = A0500
RS: Registro de segmento
CS x 10h es donde comienza el segmento y dentro de ahí es el IP quien dice la dirección
Final.
Tipos del almacenamiento:
 Big Endian (para código y no numericos): Almacenamiento invertido (Intel). El byte de
menor peso se almacena en la dirección más baja de memoria y el byte de mayor peso
en la más alta.
 Little Endian (para números): Almacenamiento directo. El byte de mayor peso se
almacena en la dirección más baja de memoria y el byte de menor peso en la dirección
más alta.

1 34  LE: 1234
2 12  BE: 3412

Ej.: MP
0DF1:0100 10111000 B8 i1) B83412 B8: COP // 3412: DATO
0DF1:0101 00110100 34 i1 i2) 056745 05: COP // 6745: DATO
0DF1:0102 00010010 12
i3) 89C1 89C1: COP
0DF1:0103 00000101 05
0DF1:0104 01100111 67 i2
0DF1:0105 01000101 45
0DF1:0106 10001001 89 i3
0DF1:0107 11000001 C1

Zona de Stack o Pila:


Es una estructura de dato en memoria de acceso LIFO (ultimo en entrar, primero en salir).
La CPU utiliza la pila para:
 Almacenar la dirección de retorno (IP y CS) cuando se llama a una subrutina. A medida
que se vayan retornando de las subrutinas, las posiciones guardadas en la zona de
Stack se irán borrando.
 Almacenar el estado del procesador cuando se produce una interrupción. (IP, CS, Flags,
Reg, etc.)
 Pasar parámetros entre 2 procedimientos.
Su última locación no se usa. La escritura o lectura de los datos de la pila se llevan a cabo
incrementando o decrementando el Stack Pointer.
Ej: llamado a subrutinas.
(Programa Maestro) (Subrutina 1)
PGM SR1 SR2 SR3 Stack
Pointer
4D C7 A0 C3 E0
Stack 4E A5 A1 C4 E1
50
SP 4F
4F 84 A2 C5 E2
50 A3 C6 CALL EO E3 4E
A4 CALL C3 C7 E4 4D
81 i1 A5 C8 E5 4E
82 i2 A6 C9 E6 4F
83 CALL A0 A7 CA E7 50
84 i4 A8 RET CB RET E8 RET

Memoria Cache
La caché es una memoria más diminuta y rápida, la cual almacena copias de datos ubicados en
la memoria principal que se utilizan con más frecuencia. Es de tipo SRAM.

MP MC CPU
Memoria de Memoria de
etiquetas datos

Lógica de control

La memoria cache se compone por 3 partes:


 Memoria de datos:Contiene las instrucciones o datos que son usados más
frecuentemente por el microprocesador. Se agrupa en conjunto de datos. (Líneas)
 Memoria de etiquetas: Contiene una lista de etiquetas que hacen referencia a las
direcciones de la MP que están almacenadas en la Caché. Además posee una palabra
de estado por cada etiqueta.
 Lógica de control: Se encarga entre otras cosas de determinar si un dato se encuentra
o no en la memoria Caché, generando la señal de presencia

Para acceder a una locación hay 2 tipos de conexiones CPU/MC/MP:


 Conexión serial: El CPU intenta acceder a la MC para encontrar una locación, si no la
encuentra pasa a la MP a buscarla.
Tiempo de acceso:
o Presencia: TaccTOTAL = TaccMC
o Ausencia: TaccTOTAL = TaccMC + TaccMP
 Conexión paralelo: Accede a la MP y MC simultáneamente, al ser la MC más rápida,
obtiene una respuesta primero. Si encontró la locación, cancela la entrada a MP. Si no
la encontró continua.
Tiempo de acceso:
o Presencia: TaccTOTAL = TaccMC
o Ausencia: TaccTOTAL = TaccMP
Formas de organización de MC:
MP MC
0 D0
Vía D2 D1 D0 Línea 0 Línea 0
1 D1 Bloque 0
2 0
D2 Grupo0
3 D3
D8 D7 D6 L1 L1
4 D4 B1
5 D5 Vía D2 D1 D0 L2 L0
Grupo0
6 D6 1
7 D7 B2 D5 D4 D3 L3 L1
8 D8
G1
9 D9
A D10 B3
B D11
C D12
D D13 B3 B0 G2
G1

 Asociativa: La MC se divide en líneas (cuyo tamaño depende de la MC), las cuales


contendrán bloques de datos de la MP. Estos bloques de datos se pasan enteros a MC
ya que si se accede al primer dato (D0) es probable que luego se ejecuten los
siguientes del bloque (D1 y D2). Cualquier bloque puede almacenarse en cualquier
línea.
 Asociativa de 1 vía:Toda la MC se toma como 1 vía. Los bloques se agrupan en grupos
cuyo tamaño coincidirá con la capacidad de la MC. Se almacenaran los grupos de
bloques en la MC y no los bloques individualmente.
Grupo: Cantidad de veces que entra una vía en la MP.
N° Grupos = MP / MC
 Asociativa de n vías: La MC se dividen en vías (como mínimo 2 líneas por vía) y, en este
caso, el tamaño de los grupos coincidirá con la capacidad de las vías.

Estructura de dirección en memoria (1 o n Vías):

Etiqueta Línea Dato


4
 Etiqueta: Sirve para identificar los grupos (de la MP). Ej: 4 b generan 2 (16)
3
etiquetas.
 Línea: Distingue la línea dentro de una vía. Ej: 3 b generan 2 (8) etiquetas.
 Dato: Distingue el dato dentro de una línea. Ej: 3 b generan 2 3(8) etiquetas.
El tamaño de c/u de estas partes depende de la memoria.
Sabiendo el tamaño de cada parte, podemos obtener el ancho de bus necesario para que sea
posible el direccionamiento:
4 + 3 + 3 = 10 B (BUS)
Con el ancho de bus podemos saber el tamaño de la MP (máx. cantidad que puede
direccionar):

10
10 b direccionan  2 posiciones de memoria.
10
MP = 2 B = 1KB
1ra dir: 000
Rango …
Ultima dir: 3FF
La capacidad de la MC se puede obtener multiplicando la cant de Líneas por la cant de datos:
6
MC = 8 Datos x 8 Líneas = 64 B = 2 B
Una vez obtenidas la capacidad de MP y MC, podemos obtener la cantidad de grupos:
10 6 4
Cant de grupos = MP / MC = 2 / 2 = 2 B

Métodos de actualización de MC:


Consiste en el método a emplear cuando se produce una ausencia en la memoria caché.
Para dicha actualización existen distintos algoritmos para remplazar un bloque de la caché por
otro nuevo.
 Random: Totalmente aleatorio.
 FIFO: El primero que entro, primero que saca.
 LRU (LeastRecentlyUsed): Se sustituye el bloque que hace más tiempo que no se ha
usado en la caché.
 LFU (LeastFrecuentlyUsed): Se sustituye el bloque que ha experimentado menos
referencias.
Vecindad temporal:Si un ítem es referenciado, la probabilidad de ser referenciado en el futuro
inmediato es alta.
Vecindad Espacial:Si un ítem es referenciado, es altamente probable que se referencie a los
ítems vecinos a éste.

Métodos de actualización de MP:


 Escritura Inmediata (o Exacta, simultanea, write trough): Se actualiza la MP
inmediatamente después de la MC.
 Escritura obligada (o write back): Actualiza la MP cuando es estrictamente necesario
hacerlo.
Por ej. Si un periférico quiere acceder a la MP y necesita el dato actualizado, o cuando
tiene que modificar por 2da vez necesita hacer la 1er actualización antes.

Modalidad de entrega de datos al procesador:


 Entrega prioritaria: Pasa al procesador el dato solicitado (desde MP) y después
actualiza la MI.
 Entrega diferida: Actualiza primero la MI y después entrega el dato (desde la MI).
 MIX: Actualiza MI hasta encontrar el dato, lo entrega y después concluye la
actualización.

Niveles de caché:
Las ventajas de contar con varios niveles se empiezan a notar cuando las aplicaciones son muy
grandes o requieren acceso frecuente a datos de la MP. En la medida en que se acceda a un
nivel secundario con mayor frecuencia por no haber encontrado la info en la primaria,
resultara en un mejor rendimiento global del sistema.
 Nivel 1: Es de tamaño reducido y se ubica funcionalmente interceptando los datos que
entran en el microprocesador desde la memoria y los que salen ya procesados hacia la
memoria.
 Nivel 2: Es de mayor tamaño y se encuentra entre la cache de 1er nivel y la MP.
Atiende a pedidos menos frecuentemente que la 1ria, ya que normalmente el éxito en
el acceso se lograra allí.

Segmentación en modo Real.


Cuando el Pentium funciona en modo Real un segmento queda definido por:
1- Base o dirección de comienzo de 20 bits.
2- Desplazamiento. El tamaño máximo de un segmento es de 64 KB en modo Real, por lo
que el desplazamiento vendrá definido por 16 bits.
Una dirección en modo Real se expresa:
Dirección efectiva = RS * 10ℎ + Desplazamiento
RS * 16 es lo mismo que agregarle un 0 al final a la dirección, dando un valor de 20 bits que
puede manejar con el bus de direcciones. El desplazamiento que se aplica varía según el
registro de segmento:
 Si es el SS, le sumo el SP.
 Si es el CS, le sumo el IP.
 Si es el DS, le sumo la referencia al operando.
Ej.: CA45:0100 MOV AX, [0150]
Dirección efectiva de la instrucción: CA450 + 0100
Dirección efectiva del dato: CA450 + 0150

La memoria en modo protegido


El programador de aplicaciones maneja toda la dimensión de la memoria virtual (una dirección
virtual es de 46 bits, por lo tanto la máxima memoria virtual son 64 TB). La CPU solo tiene
acceso a la MP a la que accede con un bus de direcciones de 32 líneas (capacidad máxima de 4
GB), por este motivo las direcciones virtuales deben ser traducidas a físicas. Como la memoria
física es mucho más chica que la virtual no todos los objetos de la MV pueden estar en la MP.
La unidad encargada de realizar esta traducción (direcciones de 46 bits a 32) e indicar si un
elemento esta o no en MP es la MMU (Unidad de Manejo de Memoria). L a MMU posee una
unidad de segmentación que traduce las direcciones virtuales a lineales y una unidad de
paginación (activable) que descompone cada segmento en un número variable de páginas del
mismo tamaño (4 KB o 4 MB) y las deposita en huecos libres (no una detrás de otra) de la
memoria física. La dirección lineal se debe traducir a física de acuerdo con esta distribución de
las páginas. Si la unidad de paginación no está activa, la dirección lineal coincide con la física.

MEMORIA
UNIDAD DIRECCIÓN UNIDAD DIRECCIÓN
MEMORIA LINEAL DE FÍSICA
DIRECCIÓN FÍSICA
VIRTUAL DE PAGINACIÓN
LÓGICA
46 46 32 32 (RAM-ROM)
SEGMENTACIÓN
(DISCO)
4 GB max

64 TB
SI NO ESTA ACTIVADA

LA UNIDAD DE PAGINACIÓN
La dirección lógica que usan los programadores consta de:
 Selector: Campo de 14 bits que selecciona un determinado segmento del espacio
virtual. Este campo está contenido en los 14 bits de más peso del registro de
segmento, sirviendo los 2 restantes para referenciar al nivel de privilegio.
 Desplazamiento: Campo de 32 bits que determina una posición del segmento (tamaño
máximo 4 GB). También puede ser de 16 bits para mantener compatibilidad (máx.: 64
KB).
SELECTOR DESPLAZAMIENTO
15 3 2 1 0 31 0
INDICE TI RPL

(REGISTRO SEGMENTO)

El campo TI (Indicador de tabla) indica si la tabla de descriptores a acceder es la local


(TI=1) o global (TI=0).
El desplazamiento se suma a la base del segmento para hallar la dirección a acceder.
 Cuando se accede a código: El CS actúa como selector y el EIP como desplazamiento.
 Si se accede a la pila: El SS hace de selector y el ESP de desplazamiento.
 Cuando se accede a datos: El DS, ES, FS o GS actúa como selector y el desplazamiento
se calcula de acuerdo con el modo de direccionamiento utilizando la instrucción en
curso.

La MMU recoge una dirección virtual de 46 bits y la introduce en la Unidad de Segmentación


que contiene las Tablas de Descriptores de Segmentos que determinan los segmentos que
están en MP y su posición. Si el segmento solicitado esta en MP, se traduce la dir. virtual a
dirección lineal de 32 bits; Si no se encuentra en MP, el SO inicia una excepción que traslada el
segmento de MV a MP y actualiza las Tablas de Descriptores.
Si la paginación esta activada, la dirección lineal pasa a la Unidad de Paginación que contiene la
Tabla de Páginas que indica si las páginas esta en MP y su ubicación. Si la pág. esta en MP, la
dir. lineal se traduce a dirección física de 32 bits. Si no está en MP, se produce una excepción
que atiende el SO realizando la transferencia de la correspondiente pág. a MP actualizando las
tablas.

Descriptores de segmento
En modo Protegido un segmento tiene tres parámetros:
 Base (32 bits): Contiene la dirección lineal donde comienza el segmento.
 Limite (20 bits): Expresa el tamaño del segmento. Su forma de expresión depende de
un campo de los atributos, donde el tamaño máximo puede ser 1 MB o 4 GB.
 Atributos (12 bits): Proporciona características relevantes del segmento:
o Bit de presencia (P): P=1 el segmento esta en MP, P=0 segmento ausente.
o Nivel de privilegio (DPL): Compuesto por 2 bits, puede variar entre 0 y 3.
o Clase de segmento (S): S=1 Segmento normal (código, pila o datos), S=0
segmento del sistema (manejados por el programador de sistemas o el SO).
o Tipo: Distingue entre los segmentos normales si es de código, datos o pila y
además determina el acceso permitido (lectura/escritura/ejecución). Campo
de 3 bits.
o Accedido (A): Se pone automáticamente en 1 cada vez que el procesador
accede al segmento. El SO lleva la cuenta de veces que es accedido cada
segmento para poder implementar algoritmos como el LRU.
o Granularidad (G): G=0 indica que el limite (tamaño del segmento) esta
expresado en bytes (máx. tamaño de segmento: 1 MB), G=1 indica que esta
expreso en paginas de 4 KB (máx. tamaño de segmento: 4 GB).
o Defecto/Grande (D/B): Permite distinguir los segmentos nativos de 32 bits para
el Pentium (para compatibilidad). D=1 direcciones efectivas y operandos de 32
bits. D=0 de 16 bits.
o Disponible (AVL): Bit a disposición del usuario para poder diferenciar ciertos
segmentos que contengan un tipo determinado de información o que cubran
alguna función específica.
Al conjunto de esta información (base, limite y atributos) se lo denomina Descriptor (64 bits) y
se almacena en dos posiciones de memoria de 32 bits.
Los 14 bits de más peso del Registro Segmento conforman el Selector del Segmento que actúa
como una entrada en la Tabla de Descriptores que referencia a los segmentos que maneja la
MMU.
Los Pentium trabajan en un ambiente multitarea, en el que hay varias tareas atendidas por la
CPU y cada una de estas tareas está formada por segmentos. El sistema multitarea distribuye
el espacio de memoria en un área global (en la que residen los segmentos comunes a todas las
tareas) y en un área local exclusiva para cada tarea, con los segmentos propios de cada una.
Cada segmento del área global estará definido por un descriptor, existiendo una Tabla de
Descriptores Globales (GDT), que contiene todos los descriptores que referencian a segmentos
del área global. Por otro lado, existe una tabla para cada tarea, que reúne todos los
descriptores de los segmentos de cada una de ellas (Tabla de Descriptores Locales, LDT).
Existirán tantas LDT como tareas soporte el sistema.
Como la CPU tiene activadas dos tablas de descriptores, GDT y LDTn , hay un bit en el selector
del registro de segmentos (TI), que indica a cuál de ellas se refiere; TI=1 se selecciona la LDTn .
TI=0 referencia a la GDT. Los 13 bits más significativos del selector se los denomina Índice, y
apuntan a una de las entradas a la tabla de descriptores seleccionada con TI (el valor del Índice
se multiplica por ocho para apuntar la dirección concreta de inicio del descriptor).
Cap. 10: Instrucciones
Instrucciones
Algoritmo: Grupo finito de operaciones organizadas de manera lógica y ordenada que
permiten solucionar un determinado problema. Se trata de una serie de instrucciones o reglas
establecidas que permiten la solución al problema.

Instrucciones: Son un conjunto de datos insertados en una secuencia estructurada que el


procesador interpreta y ejecuta. Las instrucciones se componen por:
Ej: 1) A10A10  COP = A1
COP Data
Data = 0A10
 Código de operación (COP): Es único y esta prefijado por el fabricante, de forma que el
procesador, al recibir una instrucción con un determinado código de operación,
realizara determinada acción. Si el COP es de 8 bits se podrán realizar hasta 256
operaciones distintas.
 Data: Dato a operar. Puede que no sea una constante y deba obtenerse de una
memoria o un registro.

Su estructura es:
(Nemónico) (Destino) , (Fuente)

Operandos
Si (destino) tiene [ ] indica posición de memoria, sino es un dato directo.
Los operandos (fuente) y (destino) deben tener el mismo tamaño

Formato
 Instrucciones sin dirección: Se representa únicamente con el COP, ya queque no es
necesario un dato para realizar la operación o porque el dato esta implícito en el la
misma. Ej: RET o LAHF (load AH flags).
 Instrucciones de una dirección: Todas las instrucciones hacen referencia implícita en el
COP, al registro acumulador, y Data1 hace referencia al dato afectado. Ej: MOV AX, 15E
(hexa) o MOV BX, [FFFF]
 Instrucciones de dos direcciones:Consta de 3 campos. COP, Data1 y Data2. Data 2 se
utiliza para hacer referencia al 2do operando y además es donde se almacena el
resultado. Ej: ADD 100 A02
 Instrucciones de tres direcciones: Consta de 4 campos. COP, Data1, Data2 y Data3.
Data2 se utiliza exclusivamente como operando y el resultado se almacenara en
Data3.Ej: ADD 100 A02 B2A
 Instrucciones de cuatro direcciones: En este caso Data4 hace referencia a la próxima
instrucción por ejecutarse. Ej: ADD 100 A02 B2A 020
Usar un formato de varias direcciones reduce la cantidad de instrucciones que deberían
ejecutarse para realizar tal operación en caso de usar de menos direcciones.

Modos de direccionamiento
 Inmediato: Cuando el dato esta incluido en la misma instrucción.MOV AX, 1234
 Directo:
o Por memoria: La misma instrucción da la dirección de memoria a la que
acceder. MOV AX,[1234]
o Por registro: Mueve el contenido de un registro a otro.MOV AX, BX
 Indirecto: Mueve el contenido de una dirección de memoria a un registro.MOV
AX,[BX]
 Indexado: Se utiliza un registro índice (SI) para realizar una operación, ya que la tarea
se simplifica y se gana velocidad puesto que los registros son de mas rápido acceso
que la memoria.
MOV SI, 0003
AH 05 0000 SI AH 06 0003 SI
ADD AH, [SI]
31 | A1 | 3B | 01 31 | A1 | 3B | 01
0 1 2 3 0 1 2 3

 Relativo a la base: Si cada vez que un vector se carga en memoria lo hace en áreas
distintas el registro BX (base) del CPU indica el comienzo de este. Se usa el caso de
querer acceder a una pos del vector.
MOV BX, 0200
AH 00 0000 BX AH 01 0200 BX
MOV AH, [BX] + 3;
31 | A1 | 3B | 01 31 | A1 | 3B | 01
0200 0201 0202 0203 0200 0201 0202 0203

Esta permitido mover de


RegistroRegistro MOV AX, BX
RegistroMemoria MOV AX, [FFFF]
Memoria Registro MOV [FFFF], AX
Pero NO de
MemoriaMemoria MOV [FFFF], [FFF1]

Tipos de instrucciones en Assembler:


 Transferencia:
o MOV: Mueve a registros y memoria.
o XCHG: Intercambia registros.
o PUSH: Pone un dato en la zona de pila.PUSH AX (guarda en ZP el valor de AX)
o POP: Lee un dato de la zona de pila.POP AX (lee de la ZP y lo manda a AX)
 Aritméticas:
o ADD: Sumar.
o ADC: Sumar con carry.
o SUB: Restar.
o MUL: Multiplicar.
o IMUL: Multiplicar teniendo en cuenta el signo.
o DIV: Dividir.
o IDIV: Dividir teniendo en cuenta el signo.
o INC: Incrementar.
o DEC: Disminuir.
o CMP: Comparar.
 Lógicas:
o AND: Suma lógica.
o OR: Producto lógico.
o NOT: Negado.
o SHL: Desplazamiento de registros a la izquierda (L).
 Salto:
o Incondicional:
 JMP: Siempre hay ruptura de secuencia.
o Condicional:
 JC / JNC: Salta si hay carry / salta si no hay carry.
 JV / JNV: Salta si hay overflow / salta si no hay overflow.
 JZ / JNZ: Salta si es 0 / salta si no es 0.
 JS / JNS: Salta si hay signo / salta si no hay signo. (???)
 JA: Salta si A > B.
 JAE: Salta si A >= B.
 JG: Salta si A >= B en enteros. (???)
 Otros:
o CALL: Llamado a subrutina / subprograma. El puntero de instrucción re-
direcciona a una parte específica de memoria, ejecuta la subrutina y vuelve a
continuar con la ejecución original.
o RET: Retorna del subprograma a la ejecución original.
o INT #: Provoca una interrupción para que un programa pueda acceder al disco
o a disp. de E/S
o INT 0: Comprueba valor OF del EFLAGS. Si vale 1 (overflow) produce interrup.
o IRET: Retorna de la interrupción a la ejecución original.
o ROL: Rotación a la izquierda. (el 1er bit pasa al final y el resto se desplazan).
o ROR: Rotación a la derecha. (el ultimo bit pasa al 1er lugar)
Cap. 11: Software del sistema
Es el nexo entre las necesidades del usuario y las capacidades del hardware. Se considera que
esta integrado por:
 Software Base: Es quien controla y respalda en cierto modo el software de las otras
categorías.
o Sistema Operativo: El núcleo del software base, sus componentes supervisan y
controlan la actividad de los recursos físicos (hardware) y lógicos (usuarios,
procesos, archivos, etc.)
o Interfaz grafica del usuario (GUI): Su objetivo es crear un entorno organizado
par el usuario.
 Software de comunicaciones
 Software de administración de base de datos

Sistema Operativo (SO)


Es una colección de programas (de fabrica) que administran la operación de una (o varias)
computadoras, con el fin de obtener un comportamiento eficiente. No realiza por si solo
ninguna función que genere resultados para las aplicaciones de usuario, sino que es un medio
para que estas las obtengan.
Su objetivo principal, al ejecutar aplicaciones, es crearles un entorno organizado, abastecer sus
requerimientos y solucionar problemas que surjan durante la ejecución, maximizando la
eficiencia global del procesamiento.
Hay 2 grandes componentes software en el SO.
 Residentes: Componentes que residen de manera permanente en la MP durante todo
el procesamiento.
 Transitorios: Residen solo cuando se los necesita u están almacenados en memorias
secundarios cuando no están en MP.

Funciones del SO
 Control de tiempos de ejecución en el procesador y sincronización de los procesos.
 Asignación de espacio en memoria requerido para cada proceso.
 Interfaz con los manejadores de dispositivos de E/S.
 Control y recuperación de errores.
 Protección en el uso de recursos.
 Prevención de errores en el mal uso del sistema.
 Etc.

Tipos de SO
 Multitarea: Tratan de administrar los recursos repartiéndolos de manera equitativa.
Permite que datos o instrucciones procedentes de varios procesos residan al mismo
tiempo en la MP y en el disco.
 Multiusuario: Permiten el acceso de varios usuarios desde distintas terminales
administradas por el mismo SO.
 Tiempo real: Tienen como objetivo proporcionar tiempos más rápidos de respuesta.
Administración de procesador y procesos
Un proceso es un programa en estado de ejecución. El despachador es el modulo del SO que
asigna el proceso al procesador, es el que permite la creación de un nuevo proceso al aceptar
la solicitud de otro proceso o de un usuario. Esto implica su reconocimiento por parte del SO,
para verificar que haya recursos suficientes para su ejecución.
Existen 5 etapas por las que pasa un proceso hasta finalizar:
 Estado Nuevo: Se crea el entorno adecuado para comenzar su ciclo de vida.
 Estado Listo:Tiene los suficientes recursos asignados para que la CPU comience o
continúe ejecución. Todavía no cuenta con la asignación del procesador.
 Estado de ejecución: Se esta haciendo uso del CPU.
 Estado de espera: El proceso no puede continuar su ejecución por la falta de algún
recurso.
 Estado Parado: El proceso termino su ejecución y se requiere un tiempo en el que el
SO libere los recursos que le había asignado y destruya toda la info de contexto para
eliminarlo del sistema.
Si un proceso P1 esta en espera porque, por ej., necesita una operación de E/S, el SO posibilita
que P2 (que esta en estado listo) pase a estado de ejecución. Esto es producido por
intervención del dispatcher. Al finalizar la operación de E/S, P1 podrá pasar de nuevo a estado
listo.

Administración de memoria
El SO asigna la memoria que un proceso requiere para su ejecución. Además, fija limites y
restricciones a los procesos en estado de ejecución, como por ej., a que partes de la memoria
puede acceder un programa en ejecución y cuales no.
También administra la memoria virtual.

Administración de dispositivos de E/S


Un dispositivo de E/S requiere instrucciones específicas para realizar una operación. Ej: Un
disco debe comenzar a girar antes de que se acceda a el para su lectura o escritura. Todos
estos detalles se los encapsula en drivers dentro de cada dispositivo para que las aplicaciones
puedan verlo como una simple operación de escritura o lectura. El SO sirve como interfaz
entre el proceso y el driver, así haciendo una “llamada al sistema” (system call), el proceso
convoca a su función estándar sin preocuparse por los detalles de la operación.

Administración de archivos
Supervisa la gestión de archivos para su creación, acceso y eliminación. Define la política que
determina de que forma serán almacenados físicamente. Informa de su disponibilidad cuando
el sistema permite que varias aplicaciones puedan acceder a archivos de forma alternada.
Cap. 12: Dispositivos de E/S
Para almacenar los resultados obtenidos por la CPU de forma permanente se actualizan los
archivos, que se graban en medios magnéticos u ópticos. Existe una variedad de opciones de
almacenamiento masivo.

Disco rígido
Es el dispositivo de E/S más habitual por ofrecer la ventaja de poder almacenar grandes
volúmenes de información de acceso rápido, utilizando tecnología de medios magnéticos. Su
arquitectura se compone de:
 Plato: Dentro de un disco duro hay uno o varios discos (de aluminio o cristal) concéntricos
llamados platos, y que giran todos a la vez sobre el mismo eje, al que están unidos.
 Cara: Cada plato posee dos caras, y es necesaria una cabeza de lectura/escritura para cada
cara.
 Pistas: una circunferencia dentro de una cara; la pista 0 está en el borde exterior. Es una
división lógica no física. Su cantidad depende tanto de la unidad como del SO.
 Cilindro: conjunto de varias pistas; son todas las circunferencias que están alineadas
verticalmente (una de cada cara). Los archivos suelen guardarse por cilindros para que los
cabezales no tengan que desplazarse por el radio del disco, ya que esto tardaría mucho.
 Cabezas: Por norma general hay una cabeza de lectura/escritura para cada superficie de
cada plato. Cada cabeza esta en el extremo del brazo, las cuales están alineadas
verticalmente y se desplazan de forma simultanea hacia el interior o exterior de los platos,
lo cual, combinado con la rotación de los mismos, permite que los cabezales puedan
alcanzar cualquier posición de su superficie.
 Sector: Cada una de las divisiones de una pista. El tamaño del sector no es fijo, siendo el
estándar actual 512 bytes.

Controladora del Disco


Es el conjunto de circuitos integrados que tienen como función organizar la lectura y escritura
en las unidades de disco en una computadora. Este dispositivo envía la información que
necesita la computadora para interpretar los comandos que se soliciten. Esta constituida por:
 Controladora del motor y eje actuador: Para asegurar que los platos giran a la
velocidad correcta y que el brazo posiciona las cabezas en el lugar preciso sobre el
plato.
 Controladora de interfaz: Para comunicarse con la CPU del sistema de transferencia
adecuado.
 Microprocesador: Que “ejecuta” los “comandos” propios del disco, como “estacionar
cabezas” o “detener motor”.
 Memoria asociada: Almacena el bloque que se leyó u que se va a transferir.
Los 0 y 1 que conforman la información en un disco se almacenan como patrones magnéticos
en la cubierta magnética de éste. Las cabezas generan estos patrones al escribir los datos en
los platos del disco. Luego, al leer del disco, las cabezas convierten los patrones almacenados
en señales eléctricas que representan los datos almacenados.

Tiempos de acceso a disco


 Tiempo medio de búsqueda: Tiempo medio que tarda la aguja en situarse en la pista
deseada; es la mitad del tiempo empleado por la aguja en ir desde la pista más periférica
hasta la más central del disco.
 Tiempo de cambio de cabezas (o switch): Este mide el periodo medio que le lleva a la
unidad de disco cambiar entre dos de las cabezas cuando esta leyendo/escribiendo datos.
 Latencia media: Tiempo medio que tarda la aguja en situarse en el sector deseado; es la
mitad del tiempo empleado en una rotación completa del disco.
 Tiempo de acceso a los datos: Mide lo que se tarda en posicionar la cabeza sobre una pista
particular y encontrar el/los sectores de interés. Se obtiene sumando los otros 3 tiempos.

Transferencia de datos
Luego de posicionar la cabeza, la unidad de disco esta lista para leer/escribir datos. En
cualquier caso, esta conlleva una transferencia de datos entre el disco y la memoria interna.
El buffer cache de una unidad de disco se usa tanto en las transferencias de datos del disco al
host (lectura) como del host al disco (escritura).
Una vez que la CPU genera un pedido de datos, la unidad de disco accede a los sectores
apropiados, los lee y los almacena en la memoria caché. No obstante, no solo lee lo pedido
sino que continua leyendo los datos secuenciales hasta que el buffer de cache este lleno. La
búsqueda de estos datos adicionales no pedidos se llama pre-búsqueda o “cache look ahead”.
Si esos datos son pedidos por el siguiente comando de lectura, pueden transferirse desde la
cache, lo que es más rápido.

Velocidad de transferencia
La velocidad de transferencia de datos es dependiente de dos medidas:
 Velocidad de transferencia del disco: Rapidez con que pasan los datos desde el disco
hacia el buffer o la memoria controladora.
 Velocidad de transferencia del host: Rapidez con que la controladora pasa los datos a
la memoria interna a la que accede la CPU.

Dispositivos de almacenamiento removibles


Hay tecnologías alternativas que también satisfacen las necesidades de almacenamiento
voluminosas de las aplicaciones actuales.
 Discos Ópticos: Pueden almacenar grandes cantidades de datos, pero no son tan
rápidos como el disco rígido. Se utilizan cabezales que emiten rayos laser para
leer/escribir en el medio. El laser crea agujeros microscópicos denominados “pits” y las
áreas que no son quemadas por el laser se llaman “lands”. El laser de lectura, de
menor potencia que el de escritura, lee los datos en el disco buscando pits y lands.
Existen diferentes tipos de tecnologías de discos: CD-ROM (solo lectura), CD-R
(escritura 1 vez), CD-RW (re escribible), DVD-ROM, DVD-RAM, WORM.
 Discos magneto-ópticos: Estos combinan la tecnología de los medios magnéticos con la
de los discos ópticos. Una unidad MO escribe en el disco usando una cabeza
lectograbadora asistida por un laser. El laser calienta la superficie del disco, luego la
cabeza pasa sobre la superficie polarizando aquellas áreas que fueron calentadas por
el laser. Para la lectura, el mismo laser recorre la superficie del disco, la unidad detecta
o no una reflexión de luz, la superficie esta orientados a cada sentido dependiendo los
datos grabado, esto se traduce en 1s y 0s.
 Tarjetas de memoria: Son usadas para expandir las capacidades de la computadora
con más medios de almacenamiento. Pueden ser tarjetas de E/S o de almacenamiento.
Estas consumen poca energía, son compactas y livianas. Hay varios tipos de chips que
se utilizan, y las tarjetas se nombran de acuerdo ellos
o Tarjetas ROM: Cuando se fabrica una tarjeta ROM, el programa y/o los datos
van incorporados en los chips ROM. Por lo general una tarjeta ROM es
dependiente del dispositivo y no funcionara en un sistema que no sea aquel
para el que fue fabricada. Es no volátil.
o Tarjetas OTP: Las tarjetas OTP se fabrican sin información alguna. Luego de
fabricadas, sus chips pueden escribirse con un dispositivo especial. Una vez
escritos, la información almacenada no puede borrarse o alterarse. Es no
volátil.
o Tarjetas SRAM: Los usuarios pueden escribir, modificar o borrar la información
en ellas. Sin embargo, son volátiles, lo que hace que necesiten que se las
alimente con algo de energía todo el tiempo. Si se interrumpe la energía, la
información se pierde. Almacena relativamente poco.
o Tarjetas Flash: Reúnen lo mejor de las otras tarjetas. No son volátiles y
permite a los usuarios escribir, modificar y borrar la información almacenada
en ellas.
Cap. 13: Transferencias de información
Buses
El bus es un sistema digital que transfiere datos entre los componentes de una computadora o
entre computadoras. El soporte más común está formado por cables o pistas en un circuito
impreso, dispositivos como resistencias y condensadores además de circuitos integrados.
Las señales que se transfieren a través de los buses se pueden clasificar según su tipo de
información en: señales de dirección, control y dato.
En resumen los Buses tienen las siguientes características:
 Transmisión de señales
 En serie y en paralelo
 De forma sincrónica o asincrónica
 El controlador del bus se encarga del sentido de las transferencias
 Cada dato transferido se conoce como transferencia elemental y el tiempo en que se
produce, ciclo de bus.

Tipos de Buses
 Buses internos al chip: Comunican registros (por ej: de un microprocesador). Son de los
tipos más simples.
 Buses que conectan chips sobre una placa: Son conexiones que sirven para
transferencias sincrónicas y bidireccionales
 Buses que conectan distintas placas: Al estar conectadas en diferentes placas, existe la
necesidad de compatibilizar la forma de transferir un dato. Se denominan
normalizados y posee un control de transferencia más complejos.
 Buses de entrada/salida: Determinan la estructura que se denominan arquitectura de
buses. Permite definir normas de comportamiento para la transferencia de datos.
Algunas de las señales más comunes son: OWS (previene al procesador de insertar
datos adicionales), ALE (señala que la CPU coloco una direccion valida en el bus de
direcciones), etc.

Dispositivos de entrada/salida
Se encargan de efectivizar una transferencia entre la memoria interna y la externa en los
periféricos.
Funciones
 Comunicarse con el periférico y el sistema PCU – Memoria.
 Controlar la temporizacióndurante la transferencia.
 Almacenar temporalmente Bits para compensar la diferencia de velocidad entre
emisor y receptor.
 Detectar si se produjeron errores durante la transferencia.
Señales utilizadas para controlar la transferencia:
 Señal de clock, permite sincronizar el ciclo del bus con la operación de la CPU.
 Señal de escritura y lectura.
 Señales de interrupción.
 Señal de bus cedido u ocupado.
 Señales de reconocimiento.
Controladores de periféricos
Dispositivo asociado en forma directa al periférico.
Consta de un Buffer interno y una lógica de control.
Funciones fundamentales:
 Aislar al software de servicio de entrada/salida.
 Compatibilizar la velocidad del periférico respecto de la del resto del sistema.

Adaptadores
Provee una función para conectar y lograr la operación de un componente conectado a un bus.
Todo dispositivo que no cumpla la función por si solo necesita su propio adaptador.

Puertos de entrada/salida
Área de almacenamiento alojada en una interface que permite la comunicación con un
periférico con la memoria para enviar o recibir una secuencia de bits.

Interfaces
Es un hardware que actúa de nexo entre un periférico o un adaptador y el bus.
 Interfaz paralela: permite el control de la transferencia en paralelo entre el bus del
sistema y un periférico. Cuenta con registros denominados Ports.
 Interfaz serie: permite el control de la transferencia de bits en serie entre el bus y un
dispositivo de entrada y salida. Tiene una lógica de direccionamiento que permite
establecer que interfaz fue seleccionada para la transferencia. Acepta las modalidades
sincrónica y asincrónica. Su principal desventaja es la dificultad de la delimitación de
los caracteres.

Canales o procesador E/S


Es un procesador específico para controlar las transferencias de E/S sin intervención de la CPU.
La velocidad de la transferencia depende del periférico que involucra.

Transferencia de entrada y salida


Aspectos fundamentales:
 Sincronizar los tiempos de transferencias entre la CPU-Memoria y el periférico.
 Decodificar los bits que identifican el dispositivo
 Convertir un mensaje serie a paralelo o al revés
 Convertir un mensaje enviado de un formato a otro.
 Convenir el mensaje enviado de un código a otro.
 Controlar que el mensaje enviado se reciba de forma correcta.
 Decodificar un comando para el dispositivo.
 Controlar las banderas de estado.

Los dispositivos maestros tienen el control del BUS en un momento determinado y los esclavos
pueden pedir un servicio de transferencia pero no inicializarlos.

Drivers
Son programas que conocen el dispositivo periférico.
Su codificación se hace en referencia a los comandos propios para cada periférico.
Comandos de los periféricos
Bits que hacen referencia a que es lo que el dispositivo debe hacer.
Comando de verificación
Comando de control

Modalidad de entrada / salida


El sistema operativo cuenta con programas que gestionan la transferencia de E/S en un nivel
abstracto. Estos programas realizan funciones comunes a todos los dispositivos periféricos.

Relación entre el programa de aplicación en estado de ejecución y el hardware de E/S


Aplicación Programa de E/S de nivel abstracto  Driver  Hardware

 Transferencias controladas por programa: Se denomina controlada por programa


cuando la que ejecuta el programa de E/S es la CPU. Esta debe verificar el estado de la
interfaz a través del puerto de control en forma continua.
Una instrucción genera sobre el bus de direcciones el número que identifica el puerto
de dato, es decir el área de almacenamiento que actúa de nexo para lograr la
transferencia.
 Transferencia iniciada por interrupción: Proporciona una mejora al procedimiento
anterior ya que la interface asociada genera un aviso que indica que esta preparada
para transferir por cada ciclo de ejecución la CPU consulta por interrupciones internas.
 Transferencia con acceso directo a memoria
Las interfaces se conectan a través del controlador de ADM que esta asociado a
dispositivos rápidos que transfieren la información en bloques, grupos de bits.
o Relación CPU-DMA para activar la transferencia: La CPU envía a través del bus
de direcciones un adress que reconocerá como propio y así activara su
operación, además debe enviar la dirección de memoria principal donde leer o
escribir los bits, la cantidad de palabras de memoria a trasferir con una orden
de lectura o escritura y un comando de inicialización para comenzar la
transferencia.
o Relación CPU-DMA durante la transferencia. El DMA consulta el estado del
dispositivo. Luego envía la solicitud a la CPU del uso del Bus Común. Este lo
deja a disposición del DMA y a partir de ese momento el Bus es controlado por
el DMA haciendo efectiva la transferencia del bloque.
o Relacion DMA-dispositivo durante la transferencia: Cuando el DMA recibe la
señal de Bus disponible el DMA envía a la memoria principal la dirección de la
palabra a transferir a través del Bus de direcciones. En el caso de una salida el
DMA envía la señal de lectura a la memoria que responde con la palabra sobre
el Bus. En el caso de una entrada el dispositivo coloca sobre el bus la palabra a
escribir y el DMA genera la señal de escritura a la memoria principal. Luego
verifica la señal disponible del dispositivo, si esta se encuentra activada y la
cantidad de palabras a escribir no llego a 0 el DMA inicia la transferencia
siguiente.
Cuando la cantidad de palabras llega a 0, el DMA genera una señal de interrupción para la CPU
y libera el Bus.
Cap. 14: Procesadores avanzados
Itanium
 Procesador de 64 bits: Tiene dos implicaciones, una es la habilidad de acceder a los 64
bits de información a la vez. La otra es la posibilidad de usar 64 para direccionar a MP.
 Memoria caché: Dos caches integradas, L1 de 32 KB y L2 de 96 KB. La memoria cache
L3 es externa, si bien esta afuera del encapsulado del procesador, pero trabaja a su
misma velocidad.
 Mejoras en operaciones en coma flotante: 128 registros de 82 bits están dedicados a la
unidad de coma flotante (FPU).
 Compatibilidad con las instrucciones de 32 bits: Significa que los programas escritos
para las maquinas de 32 bits pueden funcionar sin modificaciones.
 Registros de monitorización de prestaciones: Brinda información tal como el número
de instrucciones ejecutadas.
 Elevado numero de registros: Para un buen uso de ellos es necesario que el compilador
los aproveche al máximo, optimizando las nuevas características de procesado paralelo
 EPIC: Utilizando este paralelismo de forma eficaz, estos micros son capaces de ejecutar
hasta veinte instrucciones por ciclo de reloj. Con este mecanismo se incrementa el
nivel de paralelismo en las instrucciones.

Anda mungkin juga menyukai