#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