#LyX 2.3 created this file. For more info see http://www.lyx.org/
\lyxformat 544
\begin_document
\begin_header
\save_transient_properties true
\origin unavailable
\textclass book
\use_default_options true
\maintain_unincluded_children false
\language spanish
\language_package default
\inputencoding auto
\fontencoding global
\font_roman "default" "default"
\font_sans "default" "default"
\font_typewriter "default" "default"
\font_math "auto" "auto"
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100 100
\font_tt_scale 100 100
\use_microtype false
\use_dash_ligatures true
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command default
\index_command default
\paperfontsize default
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_package amsmath 1
\use_package amssymb 1
\use_package cancel 1
\use_package esint 1
\use_package mathdots 1
\use_package mathtools 1
\use_package mhchem 1
\use_package stackrel 1
\use_package stmaryrd 1
\use_package undertilde 1
\cite_engine basic
\cite_engine_type default
\biblio_style plain
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\justification true
\use_refstyle 1
\use_minted 0
\index Index
\shortcut idx
\color #008000
\end_index
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\paragraph_indentation default
\is_math_indent 0
\math_numbering_side default
\quotes_style swiss
\dynamic_quotes 0
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\end_header
\begin_body
\begin_layout Standard
La
\series bold
CPU
\series default
(
\emph on
Central Processing Unit
\emph default
) es un bloque lógico complejo que ejecuta instrucciones de un programa
escrito de acuerdo a un juego de instrucciones o
\series bold
ISA
\series default
(
\emph on
Instruction Set Architecture
\emph default
).
\end_layout
\begin_layout Section
Componentes combinacionales sencillos
\end_layout
\begin_layout Paragraph
\series bold
Decodificador
\end_layout
\begin_layout Standard
Tiene
\begin_inset Formula $n$
\end_inset
líneas de entrada y
\begin_inset Formula $2^{n}$
\end_inset
de salida, y para cada valor posible de la entrada, una y sólo una línea
de salida tiene el valor 1.
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename pegado14.png
\end_inset
\begin_inset Graphics
filename pegado15.png
\end_inset
\end_layout
\begin_layout Paragraph
\series bold
Multiplexor
\end_layout
\begin_layout Standard
Tiene
\begin_inset Formula $n$
\end_inset
líneas de entrada de control y
\begin_inset Formula $2^{n}$
\end_inset
de datos, y devuelve en su única línea de salida la línea de datos indicada
por las de control.
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename pegado18.png
\end_inset
\begin_inset Graphics
filename pegado19.png
\end_inset
\end_layout
\begin_layout Paragraph
\series bold
Desplazador
\end_layout
\begin_layout Standard
Recibe una palabra de
\begin_inset Formula $n$
\end_inset
bits y devuelve otra de
\begin_inset Formula $n$
\end_inset
bits resultado de desplazar a la izquierda o a la derecha la palabra de
entrada un cierto número de bits, que suele ser fijo.
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename pegado16.png
width 100text%
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename pegado17.png
\end_inset
\end_layout
\begin_layout Paragraph
\series bold
Extensor de signo
\end_layout
\begin_layout Standard
Recibe un entero de
\begin_inset Formula $m$
\end_inset
bits con signo y devuelve el mismo en
\begin_inset Formula $n$
\end_inset
bits (
\begin_inset Formula $n>m$
\end_inset
).
En complemento a 2, esto equivale a replicar el bit de signo en los
\begin_inset Formula $n-m$
\end_inset
bits más significativos.
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename pegado20.png
width 100text%
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename pegado21.png
\end_inset
\end_layout
\begin_layout Section
Unidad aritmético-lógica
\end_layout
\begin_layout Standard
Una
\series bold
ALU
\series default
(
\emph on
Arithmetic Logic Unit
\emph default
) es un circuito combinacional capaz de realizar operaciones aritméticas
y lógicas sobre operandos de entrada para generar una salida.
La operación a realizar viene dada por unos bits de control.
Como ejemplo mostramos una ALU capaz de realizar las operaciones de conjunción
(AND) y disyunción (OR) bit a bit; suma y resta detectando desbordamientos,
y comparación de dos números (SLT,
\emph on
set less than
\emph default
), comprobando si uno es mayor, menor o igual al otro.
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename pegado22.png
\end_inset
\end_layout
\begin_layout Standard
Un
\series bold
semisumador
\series default
(
\emph on
half adder
\emph default
) recibe dos entradas y devuelve una salida con la suma, mientras que un
\series bold
sumador completo
\series default
(
\emph on
full adder
\emph default
), que es lo que utilizamos, recibe tres entradas, dos con los sumandos
y una de acarreo, y devuelve dos salidas para la suma y el acarreo.
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename pegado23.png
\end_inset
\end_layout
\begin_layout Standard
Para implementar una ALU de 32 bits conectamos 32 ALUs de 1 bit conectando
el acarreo de salida de un sumador con el de entrada del siguiente, obteniendo
un
\series bold
sumador con propagación del acarreo
\series default
(
\emph on
ripple carry adder
\emph default
).
Esto significa que los bits se calculan uno por uno, lo que es ineficiente,
por lo que en la práctica se usan
\series bold
circuitos con acarreo anticipado
\series default
(
\emph on
look-ahead carry
\emph default
), que no veremos en este curso.
\end_layout
\begin_layout Standard
Restar equivale a sumar el minuendo con el opuesto del sustraendo, que se
obtiene a su vez negando cada bit de este y sumando 1 al resultado (o estableci
endo el acarreo de entrada del sumador menos significativo a 1).
Por su parte, podemos implementar la comparación (SLT) restando ambos números
y comprobando el bit de signo del resultado.
Nos queda por tanto lo siguiente:
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename pegado24.png
\end_inset
\end_layout
\begin_layout Standard
Aquí
\begin_inset Quotes cld
\end_inset
Menor
\begin_inset Quotes crd
\end_inset
es cero salvo para el bit menos significativo, que entonces es el resultado
de la suma en el bit más significativo, indicado por
\begin_inset Quotes cld
\end_inset
Comparación
\begin_inset Quotes crd
\end_inset
.
Para el desbordamiento, nótese que ocurre si el resultado de la suma es
negativo con ambos operandos positivos o positivo con ambos operandos negativos
(si se trata de una resta, el signo del sustraendo se obtiene una vez éste
ha sido negado), obteniendo el siguiente mapa de Karnaugh:
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
A,B
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
00
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
01
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
11
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
10
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
Res.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
La ALU nos queda de la siguiente forma:
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename pegado25.png
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Graphics
filename pegado26.png
\end_inset
\end_layout
\end_inset
|
\end_inset
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
Op.
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $R$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $Op_{1}$
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\begin_inset Formula $Op_{0}$
\end_inset
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
AND
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
OR
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
ADD
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
SUB
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
0
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
SLT
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
1
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Section
Registros
\end_layout
\begin_layout Standard
Un registro es una concatenación de
\emph on
flip-flops
\emph default
que comparten las señales de reloj y de permiso de escritura.
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename pegado27.png
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename pegado28.png
\end_inset
\end_layout
\begin_layout Standard
Un
\series bold
banco de registros
\series default
es un conjunto de registros que pueden ser leídos y escritos selectivamente
a través de
\series bold
puertos de escritura
\series default
y
\series bold
puertos de lectura
\series default
.
Se usan multiplexores y decodificadores para seleccionar los registros.
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename pegado29.png
\end_inset
\end_layout
\begin_layout Section
Memoria
\end_layout
\begin_layout Standard
Las memorias
\series bold
SRAM
\series default
(
\emph on
Static Random Access Memory
\emph default
) son
\emph on
arrays
\emph default
de memoria usadas principalmente en caché por tener un tiempo de acceso
muy corto.
Llamamos
\series bold
altura
\series default
al número de posiciones direccionables y
\series bold
anchura
\series default
al número de bits por unidad de memoria.
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename pegado30.png
\end_inset
\end_layout
\begin_layout Standard
Como direccionar una SRAM con un multiplexor sería demasiado costoso (por
el tamaño), se usan líneas de salida compartidas (
\series bold
líneas de bits
\series default
) que permiten que varias fuentes compartan una sola línea de datos, utilizando
un
\series bold
\emph on
buffer
\emph default
triestado
\series default
.
Este tiene dos entradas (
\emph on
data
\emph default
y
\emph on
enable
\emph default
) y una salida (
\emph on
out
\emph default
), y la salida es igual a
\emph on
data
\emph default
si
\emph on
enable
\emph default
está activa y en otro caso permanece con alta impedancia permitiendo el
uso de la línea de salida a los otros
\emph on
buffers
\emph default
.
Como todavía se requiere un decodificador a la entrada que sería demasiado
grande, las memorias se organizan de forma bidimensional con decodificación
en dos pasos.
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename pegado31.png
\end_inset
\end_layout
\begin_layout Standard
Las memorias
\series bold
DRAM
\series default
(
\emph on
Dynamic Random Access Memory
\emph default
) almacenan cada bit con un único transistor, con lo que son mucho más baratas
y densas.
Como la información se almacena en un condensador, este se va descargando,
con lo que debe ser refrescada periódicamente, normalmente por un circuito
en el propio chip, que lee su contenido y lo vuelve a escribir.
\end_layout
\end_body
\end_document