Académique Documents
Professionnel Documents
Culture Documents
Decodificador: Circuito lógico con N entradas y 2 salidas que permite que en cada combinación
N
Memoria Caché
Circuito lógico que compara los datos que tiene en su memoria con lo pedido por la UCP, si no los
posee, los busca en la MP. Se encuentra ubicada entre la UCP y la MP. Son de pequeña capacidad en
comparación a la MP, pero son más rápidas. En ella se encuentran las instrucciones y datos en
memoria a los que la UCP accedió últimamente. “Caché” significa “oculta”, en el sentido que la UCP
envía una dirección por el bus de direcciones desconociendo la existencia del caché, lo cual es un
hardware oculto al programador.
La memoria caché es una SRAM a la cual se le copian los datos e instrucciones provenientes de la MP
(DRAM) que necesita la UCP para que acceda rápidamente a la información que si los buscara en
memoria. Un caché permite simular una MP DRAM pero con la accesibilidad de una SRAM. Cada
pulso de espera demás (wait state) en cada lectura o escritura, es una pérdida de performance de la
UCP.
Un caché guarda en celdas, las cuales se constituyen por líneas, un subconjunto de bloques de la
MP. Cada línea almacena un bloque de bytes consecutivos de la MP.
Un caché recibe información desde la memoria sólo cuando ocurre un fallo, por lo que la
información de memoria fluye discontinuamente.
Principio de Proximidad: Los datos se tienen en cuenta de esta forma ya que se requiere que el
acceso a la información requerida sea rápido y económico. No se accede a todos los archivos con
igual probabilidad, generalmente se consulta un subconjunto perteneciente a una misma carpeta.
Tipos de proximidad:
Proximidad temporal: se estipula que si se consultó una información, es probable que la
misma sea utilizada pronto.
Proximidad espacial: es probable que se consulte información cercana a la que ya se
consultó.
Controlador del Caché:
El caché requiere un subsistema circuital complejo, denominado “controlador de caché”, el cual
cumple funciones importantes:
1. Intercepta la dirección que envía la UCP por el bus de direcciones a fin de determinar si el
contenido correspondiente, está (hit) o no (miss) en la MC. HIT: accede al caché y brinda la
información. MISS: Accede a la memoria (con la pérdida de tiempo correspondiente).
2. En los cachés de correspondencia asociativa, decide cuál bloque será reemplazado por otro
proveniente de memoria cuando ocurre el fallo
3. Implementa la forma en que los resultados obtenidos por la UCP se guardarán en memoria.
El controlador del caché posee una “Tag Memory”, es una SRAM que contiene un tag por cada línea.
Luego de un fallo, se transfiere un bloque de bytes consecutivos de memoria a una línea del caché, y
el controlador escribe en su “tag memory” el tag de las direcciones de esos bytes.
A demás de los tags, posee para cada línea, un bit de validación que sirve al controlador para saber si
los contenidos de una línea son válidos.
Si el circuito comparador indica igualdad de tags🡪 acierto o hit. Por lo que dicho byte será
proporcionado por el caché
Si no hay igualdad de tags🡪 fallo o miss. El controlado permite leer en MP el contenido de dicha
información, la cual llegará a la UCP y a su vez, pasará a la línea de cache citada, reemplazando el
contenido anterior de esta línea. Y en el tag memory, se cambia el tag de esa línea por uno nuevo. A
su vez, se traen bytes de las direcciones consecutivas siguiente a la que ocasionó el fallo, por lo que
la próxima información llega en forma automática.
El controlador del caché maneja la escritura del caché y de la MP. Posee diferentes formas:
Write through: se escribe simultáneamente el caché y la MP, lo cual lleva tiempo. Para
mejorar esto se utiliza un “buffer” de escritura, el cual es escrito rápidamente con el caché y
guarda la información hasta que se escriba en memoria.
Write back: marca en el caché las líneas que la UC escribió en él, esto supone que, durante
un lapso, el caché y la memoria tendrían información diferente, por lo que puede ocurrir que
una porción de memoria tenga información desactualizada.
bits de la derecha para saber en qué posición de la línea se guardaras los bytes correspondientes a
esa dirección y los siguientes K bits se utilizan para indicar el número de línea. Para cada dirección de
memoria, los T bits sirven para que el controlador determine si el contenido de dicha dirección está
o no en el caché. Los bits T son los TAGS. Las direcciones de los bytes de un bloque que está en una
línea tendrán igual tag, éstas direcciones solo difieren en los P bits de la derecha.
Pipe-line
Un pipe line permite procesar simultáneamente diversas etapas de distintas instrucciones,
completándose en cada etapa una parte de la ejecución de cada instrucción. Se llevan a cabo en
paralelo los procesos donde cada uno es independiente del otro.
Se necesita un buffer para almacenar por orden de llegada los códigos de varias instrucciones
pedidas a la memoria (o al cache), y otros buffers intermedios entre etapas. Estos sirven para que no
se pierda el código de una instrucción en curso de ejecución, o datos.
Intel 486: consta de un Pipe-line 5 Etapas y una UAL que progresan con cada pulso de Reloj:
1. Precarga (“pre-fetch”): Llegan los códigos de las próximas instrucciones a dos buffers de la
“Unidad de Pre-Carga” formando una cola. Si las instrucciones no hubieran estado en el
Caché, primero se hubiera pedido la primera de ellas a Memoria Principal, llegando al buffer
de pre-carga para que entre al Pipeline, y otra copia del mismo al cache, inmediatamente
llegarán desde el Caché las otras instrucciones que pasan al buffer.
2. Primera Decodificación: A la Unidad de Decodificación llegan los primeros 3 Bytes de cada
instrucción para separar su código de operación del número que hace referencia a la
dirección del dato. Dicho número pasará a la Unidad de Segmentación y Paginación, que
formará la dirección del dato a operar, de modo que pueda ser leído del caché (si está en
éste).
3. Segunda Decodificación: El Código de Operación es decodificado y se determina la
secuencia de micro-código de la ROM de Control que generará las señales de control, dichas
señales las genera la UC, para así ejecutar los pasos que dicha instrucción requiere. Si la
instrucción es simple se ejecuta en 1 pulso. En el momento en que I1 pasa por esta etapa del
“pipeline”, la I2 entra en la “Primera Decodificación”.
4. Ejecución: Se ejecuta lo pedido en la instrucción. Paralelamente a esto la I2 pasa a la etapa
de “Segunda Decodificación”, y la I3 ingresa a la etapa de “Primera Decodificación”.
5. Almacenamiento de Resultados: A esta etapa final del Pipeline llega I1 completándose su
ejecución. Al mismo tiempo la instrucción I2 entra a la etapa de “Ejecución”, obteniéndose
del caché el dato (si es que está en este), la instrucción I3 llega a la “Segunda decodificación”
e I4 entra en la “Primera Decodificación”.
Pentium
Posee un pipeline de 5 etapas y dos unidades de ejecución constituidas por dos UAL. El Bus de Datos
es de 64 bits, por esto los dos cachés reciben el doble de datos o instrucciones que en el 486. El
Pentium contiene 2 Pipelines para instrucciones que operan con números enteros para poder
procesar 2 instrucciones de forma independiente (significa que los resultados de las operaciones
ordenadas se obtienen a un mismo tiempo), esto lo hace un procesador “Superescalar”, capaz de
terminar de ejecutar 2 instrucciones en un pulso, como los procesadores RISC; por esto requiere un
caché para datos y otro para instrucciones. Además, existen por duplicado la Unidad Decodificadora,
la Unidad de Segmentación, y la UAL. Cuando opera con números enteros funciona como un
procesador “Superescalar”. Una instrucción para números en punto flotante opera con datos de 64
bits, que ocupan los 2 Pipelines para números enteros, por lo que estas no pueden ejecutarse junto
a otra instrucción.
CISC (Complex Instruction Set Computer) Computadoras con un conjunto de instrucciones
complejo. Posee entre 200 y 300 instrucciones que según la cantidad de pasos pueden ser simples,
menos simples y complejas. Esta complejidad implica un número muy variado de formatos de
instrucciones de diferente longitud y disposición de la información en cada formato, por lo que su
etapa de decodificación no puede ser muy rápida por requerir una circuitería complicada. Los
procesadores CISC tiene pocos registros, lo cual implica una mayor cantidad de pasos de ejecución.
La traducción de las instrucciones las realiza el hardware, dado que la secuencia de pasos simples
que una UCP hace para ejecutar cualquier instrucción están memorizadas en la ROM de Control que
forma parte de la UC donde están guardados dichos pasos. Un procesador CISC debe contener una
ROM con los microcódigos para poder ejecutar instrucciones complejas.
Un CISC tiene limitaciones en su productividad (inst/seg) por requerir una decodificación compleja
que consume tiempo, y por ser su pipeline insuficiente si entran en él instrucciones simples o
complejas.
Hyper Threading.
El Hyper Threading permite que un único procesador físico, que ocupa un chip, aparezca ante el
sistema operativo o programas de usuario como 2 procesadores lógicos, capaces de ejecutar 2
subprocesos en paralelo.
Lo que se consigue es que cada núcleo asigne recursos a dos hilos a la vez. Gracias a esto, las tareas
se organizan de manera más eficiente en el procesador, y éste está menos tiempo parado, por lo
que las tareas se realizan más rápido.
Bus PCI (Peripheral Component Interconnect): Posee independencia del procesador y del
subsistema de memoria, versatilidad de conexionado con otros buses, 64 líneas de datos y una
característica especial llamada “Plug n Play” (conecta y opera). Se comunica mediante el puente PCI
con el bus local que va de la UCP y con el bus de memoria. Posee un árbitro del bus PCI que
transforma las órdenes hacia la memoria en una secuencia de señales para ella.
Presenta 64 líneas A/D(adress/data) que en un ciclo pueden utilizarse para direccionar un dispositivo
PCI, y en el siguiente, para transferir datos ahorrando espacio. Las órdenes se dan por códigos de 4
bits en 4 líneas designadas C/BE. El código de comando se envía por estas 4 líneas en el mismo ciclo
en que una dirección se pone en las líneas A/D. En los ciclos en que por las líneas A/D se envían
datos mediante una combinación binaria, se indican cuáles de los 8 bytes que van por las 64 líneas
A/D deben seleccionarse. Suponiendo que el Máster gana el control de bus, y que el mismo se
efectiviza más tarde en un ciclo 1, dicho Máster activa la línea Frame de transacción en curso y envía
una dirección en curso a través de la línea A/D, a la par que ordena una transacción mediante un
código en las 4 líneas C/BE#. El Slave que reconoce como una de sus direcciones esa dirección, la
guardará junto con la orden.
Bus SCSI (Smalls Computers System Interface): Bus Asincrónico, el “Master” activa una línea en un
instante no regido por un Ck, a esto le sucede una respuesta del “Slave”. La activación de una línea
depende de la activación de otra línea. Tiene líneas conductoras de poca longitud, es un bus externo
al computador en el cual uno de sus extremos se conecta al bus PCI a través de un adaptador-
controlador SCSI. Se pueden conectar a este hasta 7 periféricos (conexión Daisy Channel) con una
longitud máxima de 6 metros. Es apto para unidades de CD, HD, Cintas Magnéticas, RAID,
multimedia, etc. SCSI-1 tiene 8 líneas para datos y velocidad de hasta 5 Mbytes/seg, el SCSI-2 tiene
16 o 32 líneas y una velocidad de 20 Mb/seg o 40 Mb/seg. Cada unidad SCSI tiene una dirección (ID)
de 0 a 7 configurable por jumpers. Con esta tecnología pueden comunicarse una unidad de cinta y
un HD (ambas SCSI) sin pasar por memoria principal y sin intervención de la UCP ejecutando
programas. Cualquier unidad SCSI puede tomar el control del bus como Master y enviar por el bus la
dirección de la unidad “target” (Slave) con la que quiere comunicarse. Las direcciones, comandos y
datos viajan por las mismas 8 líneas en distintos momentos.
NorthBridge y SouthBridge
El termino bridge (puente) se refiere a un circuito entre 2 o más buses conectados.
El NB y el SB se interconectan entre sí por un bus rápido.
El NB es un chip integrado a la mother que regula la transferencia entre los componentes más
rápidos:
Entre el bus frontal del procesador y el de la MP.
Entre el bus de la tarjeta gráfica y el bus de memoria.
Entre el bus ultrarrápido de E/S y el bus de MP o FSB.
El NB organiza, sincroniza y regula el flujo de datos entre la MP y los otros buses vinculados.
También regula la tensión eléctrica.
El SB está dedicado a los buses de los periféricos más lentos como el USB. El SB soporta, sincroniza
mediante buffers y controla los buses de los periféricos y el tráfico del BIOS. Transmite la
información de los periféricos al NB rápidamente y este lo distribuye a la memoria o al procesador.