aboutsummaryrefslogtreecommitdiff
path: root/etc
diff options
context:
space:
mode:
authorJuan Marín Noguera <juan.marinn@um.es>2020-02-20 16:07:37 +0100
committerJuan Marín Noguera <juan.marinn@um.es>2020-02-20 16:07:37 +0100
commitc6f69b3f45b81d19b8eeb87184bf16e6de0fad24 (patch)
tree92d4e853e031c3ff144a72a2326312cf58e8dae3 /etc
parent1eea228b43c3e243c1e1e9baf21d5d0d3f970152 (diff)
2
Diffstat (limited to 'etc')
-rw-r--r--etc/SR_Flip-flop_Diagram.svg73
-rw-r--r--etc/n.lyx241
-rw-r--r--etc/n1.lyx741
-rw-r--r--etc/n2.lyx1105
-rw-r--r--etc/n3.lyx2537
-rw-r--r--etc/n4.lyx662
-rw-r--r--etc/n5.lyx315
-rw-r--r--etc/n6.lyx717
-rw-r--r--etc/na.lyx2030
-rw-r--r--etc/pegado1.pngbin0 -> 4772 bytes
-rw-r--r--etc/pegado10.pngbin0 -> 2502 bytes
-rw-r--r--etc/pegado11.pngbin0 -> 17873 bytes
-rw-r--r--etc/pegado12.pngbin0 -> 6315 bytes
-rw-r--r--etc/pegado13.pngbin0 -> 5951 bytes
-rw-r--r--etc/pegado14.pngbin0 -> 11702 bytes
-rw-r--r--etc/pegado15.pngbin0 -> 8158 bytes
-rw-r--r--etc/pegado16.pngbin0 -> 10551 bytes
-rw-r--r--etc/pegado17.pngbin0 -> 3484 bytes
-rw-r--r--etc/pegado18.pngbin0 -> 5923 bytes
-rw-r--r--etc/pegado19.pngbin0 -> 6716 bytes
-rw-r--r--etc/pegado2.pngbin0 -> 7612 bytes
-rw-r--r--etc/pegado20.pngbin0 -> 7896 bytes
-rw-r--r--etc/pegado21.pngbin0 -> 5658 bytes
-rw-r--r--etc/pegado22.pngbin0 -> 7366 bytes
-rw-r--r--etc/pegado23.pngbin0 -> 10214 bytes
-rw-r--r--etc/pegado24.pngbin0 -> 18669 bytes
-rw-r--r--etc/pegado25.pngbin0 -> 26294 bytes
-rw-r--r--etc/pegado26.pngbin0 -> 9758 bytes
-rw-r--r--etc/pegado27.pngbin0 -> 11487 bytes
-rw-r--r--etc/pegado28.pngbin0 -> 4152 bytes
-rw-r--r--etc/pegado29.pngbin0 -> 23333 bytes
-rw-r--r--etc/pegado3.pngbin0 -> 7715 bytes
-rw-r--r--etc/pegado30.pngbin0 -> 10585 bytes
-rw-r--r--etc/pegado31.pngbin0 -> 14669 bytes
-rw-r--r--etc/pegado32.pngbin0 -> 5480 bytes
-rw-r--r--etc/pegado33.pngbin0 -> 80485 bytes
-rw-r--r--etc/pegado34.pngbin0 -> 78792 bytes
-rw-r--r--etc/pegado35.pngbin0 -> 7502 bytes
-rw-r--r--etc/pegado36.pngbin0 -> 2818 bytes
-rw-r--r--etc/pegado37.pngbin0 -> 7794 bytes
-rw-r--r--etc/pegado38.pngbin0 -> 13041 bytes
-rw-r--r--etc/pegado39.pngbin0 -> 9438 bytes
-rw-r--r--etc/pegado4.pngbin0 -> 9168 bytes
-rw-r--r--etc/pegado40.pngbin0 -> 5357 bytes
-rw-r--r--etc/pegado41.pngbin0 -> 12205 bytes
-rw-r--r--etc/pegado42.pngbin0 -> 5956 bytes
-rw-r--r--etc/pegado43.pngbin0 -> 9568 bytes
-rw-r--r--etc/pegado44.pngbin0 -> 7901 bytes
-rw-r--r--etc/pegado5.pngbin0 -> 2284 bytes
-rw-r--r--etc/pegado6.pngbin0 -> 2943 bytes
-rw-r--r--etc/pegado7.pngbin0 -> 8349 bytes
-rw-r--r--etc/pegado8.pngbin0 -> 2610 bytes
-rw-r--r--etc/pegado9.pngbin0 -> 1779 bytes
53 files changed, 8421 insertions, 0 deletions
diff --git a/etc/SR_Flip-flop_Diagram.svg b/etc/SR_Flip-flop_Diagram.svg
new file mode 100644
index 0000000..d612792
--- /dev/null
+++ b/etc/SR_Flip-flop_Diagram.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="200" height="125" id="svg2" sodipodi:version="0.32" inkscape:version="0.46" version="1.0" sodipodi:docname="RS Flip-flop (NAND).svg" inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs id="defs4">
+ <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 526.18109 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="744.09448 : 526.18109 : 1" inkscape:persp3d-origin="372.04724 : 350.78739 : 1" id="perspective10"/>
+ <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 25 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="50 : 25 : 1" inkscape:persp3d-origin="25 : 16.666667 : 1" id="perspective2557"/>
+ <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 32 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="64 : 32 : 1" inkscape:persp3d-origin="32 : 21.333333 : 1" id="perspective5533"/>
+ <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 50 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="100 : 50 : 1" inkscape:persp3d-origin="50 : 33.333333 : 1" id="perspective3275"/>
+ <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 60 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="150 : 60 : 1" inkscape:persp3d-origin="75 : 40 : 1" id="perspective2777"/>
+ <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 526.18109 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="744.09448 : 526.18109 : 1" inkscape:persp3d-origin="372.04724 : 350.78739 : 1" id="perspective2819"/>
+ <inkscape:perspective id="perspective2806" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+ <inkscape:perspective id="perspective2714" inkscape:persp3d-origin="25 : 10 : 1" inkscape:vp_z="50 : 15 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 15 : 1" sodipodi:type="inkscape:persp3d"/>
+ <inkscape:perspective id="perspective3244" inkscape:persp3d-origin="16 : 10.666667 : 1" inkscape:vp_z="32 : 16 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 16 : 1" sodipodi:type="inkscape:persp3d"/>
+ <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 32 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="64 : 32 : 1" inkscape:persp3d-origin="32 : 21.333333 : 1" id="perspective4786"/>
+ <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 50 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="100 : 50 : 1" inkscape:persp3d-origin="50 : 33.333333 : 1" id="perspective4784"/>
+ <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 60 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="150 : 60 : 1" inkscape:persp3d-origin="75 : 40 : 1" id="perspective4782"/>
+ <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 526.18109 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="744.09448 : 526.18109 : 1" inkscape:persp3d-origin="372.04724 : 350.78739 : 1" id="perspective4780"/>
+ <inkscape:perspective id="perspective4778" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+ <inkscape:perspective id="perspective4776" inkscape:persp3d-origin="25 : 10 : 1" inkscape:vp_z="50 : 15 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 15 : 1" sodipodi:type="inkscape:persp3d"/>
+ </defs>
+ <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" gridtolerance="10000" guidetolerance="10" objecttolerance="20" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="2" inkscape:cx="10.26026" inkscape:cy="26.702354" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" inkscape:object-nodes="true" inkscape:window-width="1399" inkscape:window-height="874" inkscape:window-x="37" inkscape:window-y="-4" showguides="true" inkscape:guide-bbox="true">
+ <inkscape:grid type="xygrid" id="grid2383" visible="true" enabled="true"/>
+ </sodipodi:namedview>
+ <metadata id="metadata7">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(28.677586,72.029423)">
+ <g id="g3614" inkscape:label="Layer 1" transform="translate(17.22866,-72.029423)">
+ <path sodipodi:nodetypes="cc" id="path3059" d="M 78.126949,25 C 99.218263,25 129.09375,25 129.09375,25" style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
+ <path id="path3061" d="M 31,15 L -20.906246,15" style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" sodipodi:nodetypes="cc"/>
+ <g id="g4788" inkscape:label="Layer 1" transform="translate(9.3754e-2,0)">
+ <path sodipodi:nodetypes="ccccccsccccsssssccc" id="path2884" d="M 30,5 L 30,6.4285714 L 30,43.571429 L 30,45 L 31.428571,45 L 50.47619,45 C 61.744098,45 70.47619,35.999955 70.47619,25 C 70.47619,14.000045 61.744099,5.0000002 50.47619,5 C 50.47619,5 50.47619,5 31.428571,5 L 30,5 z M 32.857143,7.8571429 C 40.834264,7.8571429 45.918368,7.8571429 48.095238,7.8571429 C 49.285714,7.8571429 49.880952,7.8571429 50.178571,7.8571429 C 50.327381,7.8571429 50.409227,7.8571429 50.446429,7.8571429 C 50.465029,7.8571429 50.471543,7.8571429 50.47619,7.8571429 C 60.236853,7.857143 67.142857,15.497098 67.142857,25 C 67.142857,34.502902 59.760662,42.142857 50,42.142857 L 32.857143,42.142857 L 32.857143,7.8571429 z" style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"/>
+ <path transform="translate(-1,0)" d="M 79,25 A 4,4 0 1 1 71,25 A 4,4 0 1 1 79,25 z" sodipodi:ry="4" sodipodi:rx="4" sodipodi:cy="25" sodipodi:cx="75" id="path4008" style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;marker:none;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" sodipodi:type="arc"/>
+ </g>
+ </g>
+ <g id="g3622" inkscape:label="Layer 1" transform="translate(17.10366,2.9705768)">
+ <path sodipodi:nodetypes="cc" id="path3624" d="M 78.126949,25 C 99.218263,25 129.21875,25 129.21875,25" style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
+ <path id="path3626" d="M 31,15 L 4.21875,15 L 4.21875,0 L 99.21875,-35 L 99.21875,-50" style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" sodipodi:nodetypes="ccc"/>
+ <path id="path3628" d="M 32,35 L -20.781246,35" style="fill:none;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" sodipodi:nodetypes="cc"/>
+ <path sodipodi:nodetypes="ccc" style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 31,-40 L 4.21875,-40 L 4.21875,-25 L 99.21875,10 L 99.21875,25" id="path3636"/>
+ <g id="g4797" inkscape:label="Layer 1" transform="translate(0.218754,2e-7)">
+ <path sodipodi:nodetypes="ccccccsccccsssssccc" id="path4799" d="M 30,5 L 30,6.4285714 L 30,43.571429 L 30,45 L 31.428571,45 L 50.47619,45 C 61.744098,45 70.47619,35.999955 70.47619,25 C 70.47619,14.000045 61.744099,5.0000002 50.47619,5 C 50.47619,5 50.47619,5 31.428571,5 L 30,5 z M 32.857143,7.8571429 C 40.834264,7.8571429 45.918368,7.8571429 48.095238,7.8571429 C 49.285714,7.8571429 49.880952,7.8571429 50.178571,7.8571429 C 50.327381,7.8571429 50.409227,7.8571429 50.446429,7.8571429 C 50.465029,7.8571429 50.471543,7.8571429 50.47619,7.8571429 C 60.236853,7.857143 67.142857,15.497098 67.142857,25 C 67.142857,34.502902 59.760662,42.142857 50,42.142857 L 32.857143,42.142857 L 32.857143,7.8571429 z" style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"/>
+ <path transform="translate(-1,0)" d="M 79,25 A 4,4 0 1 1 71,25 A 4,4 0 1 1 79,25 z" sodipodi:ry="4" sodipodi:rx="4" sodipodi:cy="25" sodipodi:cx="75" id="path4801" style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;marker:none;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" sodipodi:type="arc"/>
+ </g>
+ </g>
+ <g inkscape:label="Layer 1" id="g3721" transform="translate(136.32241,-61.529423)">
+ <path d="M 15,14.5 A 2.5,2.5 0 1 1 10,14.5 A 2.5,2.5 0 1 1 15,14.5 z" sodipodi:ry="2.5" sodipodi:rx="2.5" sodipodi:cy="14.5" sodipodi:cx="12.5" id="path3252" style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" sodipodi:type="arc"/>
+ </g>
+ <g inkscape:label="Layer 1" id="g3724" transform="translate(136.32241,13.470577)">
+ <path d="M 15,14.5 A 2.5,2.5 0 1 1 10,14.5 A 2.5,2.5 0 1 1 15,14.5 z" sodipodi:ry="2.5" sodipodi:rx="2.5" sodipodi:cy="14.5" sodipodi:cx="12.5" id="path3726" style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" sodipodi:type="arc"/>
+ </g>
+ <text xml:space="preserve" style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:100%;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans" x="168.91617" y="-42.029423" id="text3728" sodipodi:linespacing="100%"><tspan sodipodi:role="line" id="tspan3730" x="168.91617" y="-42.029423">Q</tspan></text>
+ <text xml:space="preserve" style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:100%;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans" x="168.91617" y="33.970577" id="text3732" sodipodi:linespacing="100%"><tspan sodipodi:role="line" id="tspan3734" x="168.91617" y="33.970577">Q</tspan></text>
+ <path style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 157.82241,19.970577 L 167.82241,19.970577" id="path3736"/>
+ <g inkscape:label="Layer 1" id="g3738" transform="translate(-18.677586,-71.529423)">
+ <path d="M 15,14.5 A 2.5,2.5 0 1 1 10,14.5 A 2.5,2.5 0 1 1 15,14.5 z" sodipodi:ry="2.5" sodipodi:rx="2.5" sodipodi:cy="14.5" sodipodi:cx="12.5" id="path3740" style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" sodipodi:type="arc"/>
+ </g>
+ <g inkscape:label="Layer 1" id="g3742" transform="translate(-18.677586,23.470577)">
+ <path d="M 15,14.5 A 2.5,2.5 0 1 1 10,14.5 A 2.5,2.5 0 1 1 15,14.5 z" sodipodi:ry="2.5" sodipodi:rx="2.5" sodipodi:cy="14.5" sodipodi:cx="12.5" id="path3744" style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" sodipodi:type="arc"/>
+ </g>
+ <path sodipodi:type="arc" style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="path3746" sodipodi:cx="32.5" sodipodi:cy="52.5" sodipodi:rx="2.5" sodipodi:ry="2.5" d="M 35,52.5 A 2.5,2.5 0 1 1 30,52.5 A 2.5,2.5 0 1 1 35,52.5 z" transform="translate(83.822406,-99.529423)"/>
+ <path sodipodi:type="arc" style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="path3748" sodipodi:cx="32.5" sodipodi:cy="52.5" sodipodi:rx="2.5" sodipodi:ry="2.5" d="M 35,52.5 A 2.5,2.5 0 1 1 30,52.5 A 2.5,2.5 0 1 1 35,52.5 z" transform="translate(83.822406,-24.529423)"/>
+ <text xml:space="preserve" style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:100%;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans" x="-13.052586" y="-51.029423" id="text3750" sodipodi:linespacing="100%"><tspan sodipodi:role="line" id="tspan3752" x="-13.052586" y="-51.029423">S</tspan></text>
+ <text xml:space="preserve" style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:100%;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans" x="-13.521336" y="43.970577" id="text3754" sodipodi:linespacing="100%"><tspan sodipodi:role="line" id="tspan3756" x="-13.521336" y="43.970577">R</tspan></text>
+ <path style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M -23.677586,29.970577 L -13.677586,29.970577" id="path4803"/>
+ <path style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M -23.677586,-65.029423 L -13.677586,-65.029423" id="path4805"/>
+ </g>
+</svg> \ No newline at end of file
diff --git a/etc/n.lyx b/etc/n.lyx
new file mode 100644
index 0000000..ef67ce2
--- /dev/null
+++ b/etc/n.lyx
@@ -0,0 +1,241 @@
+#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
+\begin_preamble
+\input{../defs}
+\end_preamble
+\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 10
+\spacing single
+\use_hyperref false
+\papersize a5paper
+\use_geometry true
+\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
+\leftmargin 0.2cm
+\topmargin 0.7cm
+\rightmargin 0.2cm
+\bottommargin 0.7cm
+\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 empty
+\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 Title
+Estructura y Tecnología de Computadores
+\end_layout
+
+\begin_layout Date
+\begin_inset Note Note
+status open
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+def
+\backslash
+cryear{2018}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "../license.lyx"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Bibliografía:
+\end_layout
+
+\begin_layout Itemize
+Estructura y Tecnología de Computadores, Manuel Eugenio Acacio Sánchez,
+ Ricardo Fernández Pascual, Pilar González Férez & Alberto Ros Bardisa.
+\end_layout
+
+\begin_layout Chapter
+Sistemas secuenciales
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "n1.lyx"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Chapter
+Componentes de un procesador
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "n2.lyx"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Chapter
+Diseño de un procesador
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "n3.lyx"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Chapter
+Gestión de caché
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "n4.lyx"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Chapter
+Memoria virtual
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "n5.lyx"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Chapter
+Gestión de la E/S
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "n6.lyx"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Chapter
+\start_of_appendix
+Ensamblador de MIPS
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "na.lyx"
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document
diff --git a/etc/n1.lyx b/etc/n1.lyx
new file mode 100644
index 0000000..0dc24aa
--- /dev/null
+++ b/etc/n1.lyx
@@ -0,0 +1,741 @@
+#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
+Existen dos tipos de circuitos:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Combinacionales:
+\series default
+ La salida depende únicamente de la entrada en ese momento.
+ Se pueden representar mediante grafos acíclicos dirigidos.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Secuenciales:
+\series default
+ La salida no depende solo de la entrada en ese momento sino también de
+ su
+\series bold
+estado
+\series default
+, que depende de las entradas anteriores.
+\end_layout
+
+\begin_layout Standard
+Para representar la evolución en el tiempo de un circuito se emplean
+\series bold
+cronogramas
+\series default
+, diagramas con el tiempo en el eje horizontal y el valor lógico (0 ó 1)
+ de ciertas señales (normalmente las entradas y salidas) en el eje vertical.
+\end_layout
+
+\begin_layout Section
+
+\emph on
+Latches
+\end_layout
+
+\begin_layout Standard
+Un
+\series bold
+biestable asíncrono
+\series default
+,
+\series bold
+cerrojo
+\series default
+ o
+\series bold
+\emph on
+latch
+\series default
+\emph default
+ es un circuito básico capaz de almacenar un bit.
+ Existen dos tipos que se diferencian en su
+\series bold
+ecuación característica
+\series default
+ o
+\series bold
+función de transición
+\series default
+, que define el valor de salida (
+\begin_inset Formula $Q^{*}$
+\end_inset
+
+) en función de su entrada y la salida anterior (
+\begin_inset Formula $Q$
+\end_inset
+
+).
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="3" columns="2">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<row>
+<cell multicolumn="1" alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Tipo
+\series bold
+S-R
+\series default
+ (
+\emph on
+Set-Reset
+\emph default
+)
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Tipo
+\series bold
+D
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell multicolumn="1" alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Formula $Q^{*}=S+\overline{R}\cdot Q$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Formula $Q^{*}=D\cdot C+Q\cdot\overline{C}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Graphics
+ filename pegado1.png
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Graphics
+ filename pegado2.png
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+
+\emph on
+Flip-flops
+\end_layout
+
+\begin_layout Standard
+Un
+\series bold
+biestable síncrono
+\series default
+ o
+\series bold
+\emph on
+flip-flop
+\series default
+\emph default
+ también almacena un bit, pero las señales de entrada solo tienen efecto
+ durante un instante de tiempo.
+ Este depende de una
+\series bold
+señal de reloj
+\series default
+, señal periódica encargada de determinar en qué momento el circuito será
+ sensible a su entrada.
+ Llamamos
+\series bold
+flanco
+\series default
+ a un cambio en la señal de reloj, que puede ser
+\series bold
+ascendente
+\series default
+ si es de 0 a 1 o
+\series bold
+descendente
+\series default
+ si es de 1 a 0.
+ Aunque en los cronogramas representamos estas transiciones con líneas verticale
+s, realmente no son instantáneas.
+ Un
+\emph on
+flip-flop
+\emph default
+ puede ser activo en flanco ascendente o en flanco descendente.
+\end_layout
+
+\begin_layout Standard
+En general, los
+\emph on
+flip-flops
+\emph default
+ están formados por dos
+\emph on
+latches
+\emph default
+ en serie, donde el primero se llama
+\series bold
+maestro
+\series default
+ y el segundo
+\series bold
+esclavo
+\series default
+.
+ La entrada de reloj se indica con un triángulo, que tiene además un círculo
+ si el
+\emph on
+flip-flop
+\emph default
+ es activo en flanco descendente.
+ Tipos:
+\end_layout
+
+\begin_layout Standard
+Tipo
+\series bold
+D
+\series default
+: Puede tener o no una señal de control
+\begin_inset Formula $W$
+\end_inset
+
+, dependiendo de si queremos actualizar el valor en cada ciclo de reloj
+ o no.
+
+\begin_inset Formula $Q^{*}=D\cdot W+Q\cdot\overline{W}$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="2" columns="2">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top" width="0pt">
+<column alignment="center" valignment="top">
+<row>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Graphics
+ filename pegado3.png
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Graphics
+ filename pegado5.png
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Graphics
+ filename pegado4.png
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Graphics
+ filename pegado6.png
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Tipo
+\series bold
+S-R
+\series default
+:
+\begin_inset Formula $Q^{*}=S+\overline{R}\cdot Q$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="1" columns="2">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top" width="0pt">
+<column alignment="center" valignment="top">
+<row>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Graphics
+ filename pegado7.png
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Graphics
+ filename pegado8.png
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Tabular
+<lyxtabular version="3" rows="2" columns="2">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top" width="45col%">
+<column alignment="center" valignment="top" width="45col%">
+<row>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Tipo
+\series bold
+J-K
+\series default
+:
+\begin_inset Formula $Q^{*}=J\cdot\overline{Q}+\overline{K}\cdot Q$
+\end_inset
+
+.
+ Similar al S-R con
+\begin_inset Formula $J\equiv S$
+\end_inset
+
+ y
+\begin_inset Formula $K\equiv R$
+\end_inset
+
+, pero si
+\begin_inset Formula $J=K=1$
+\end_inset
+
+ el estado se alterna.
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Tipo
+\series bold
+T
+\series default
+:
+\begin_inset Formula $Q^{*}=\overline{Q}\cdot T+Q\cdot\overline{T}$
+\end_inset
+
+.
+ Invierte su estado cuando su entrada valga 1.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Graphics
+ filename pegado9.png
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Graphics
+ filename pegado10.png
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+Diseño de un circuito secuencial
+\end_layout
+
+\begin_layout Standard
+Está formado por una serie de
+\series bold
+entradas
+\series default
+ y
+\series bold
+salidas
+\series default
+ digitales, así como una serie de bits que determinan su
+\series bold
+estado actual
+\series default
+ y dos funciones combinacionales:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Función de transición
+\series default
+: Determina el estado siguiente a partir del estado actual y la entrada.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Función de salida
+\series default
+: Determina la salida a partir del estado del circuito (circuito de
+\series bold
+Moore
+\series default
+) y quizá también de las entradas (de
+\series bold
+Mealy
+\series default
+).
+\end_layout
+
+\begin_layout Standard
+Fases en el diseño:
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+Especificación verbal
+\series default
+: Resumen con palabras del funcionamiento deseado.
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+Especificación del autómata
+\series default
+: Se crea un diagrama de estados llamado
+\begin_inset Quotes cld
+\end_inset
+
+autómata finito determinista
+\begin_inset Quotes crd
+\end_inset
+
+ (AFD), en el que se representan los posibles estados del sistema, la función
+ de transición y la función de salida.
+\begin_inset Float figure
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\align center
+\begin_inset Graphics
+ filename pegado11.png
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset Caption Standard
+
+\begin_layout Plain Layout
+Ejemplo de AFD.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+Minimización del autómata
+\series default
+: Buscar el mismo comportamiento con menos estados, reduciendo la circuitería
+ necesaria.
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+Codificación de estados:
+\series default
+ Asignar a cada uno de los
+\begin_inset Formula $M$
+\end_inset
+
+ estados una combinación de
+\begin_inset Formula $n=\lceil\log_{2}M\rceil$
+\end_inset
+
+ bits, que se almacenan en
+\begin_inset Formula $n$
+\end_inset
+
+ biestables.
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+Determinación de las funciones
+\series default
+ de transición y de salida.
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+Minimización de las funciones
+\series default
+, por ejemplo, mediante mapas de Karnaugh.
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+Implementación del circuito
+\series default
+.
+\end_layout
+
+\begin_layout Standard
+Debemos tener en cuenta que desde un cambio de señal de reloj hasta el siguiente
+, las señales de entrada de los
+\emph on
+flip-flops
+\emph default
+ deben ser estables, por lo que la frecuencia de esta señal no debe ser
+ mayor al retardo de los circuitos combinacionales, es decir, la máxima
+ suma de los retardos de puertas lógicas que se usan en serie dentro de
+ estos, incluyendo el retardo de otros biestables que son entradas de los
+ circuitos combinacionales.
+\end_layout
+
+\end_body
+\end_document
diff --git a/etc/n2.lyx b/etc/n2.lyx
new file mode 100644
index 0000000..097f459
--- /dev/null
+++ b/etc/n2.lyx
@@ -0,0 +1,1105 @@
+#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
+<lyxtabular version="3" rows="4" columns="6">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<row>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell multicolumn="1" alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+A,B
+\end_layout
+
+\end_inset
+</cell>
+<cell multicolumn="2" alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" bottomline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+00
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+01
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+11
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+10
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell multirow="3" alignment="center" valignment="middle" topline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Res.
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell multirow="4" alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\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
+<lyxtabular version="3" rows="1" columns="1">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top">
+<row>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Graphics
+ filename pegado26.png
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="6" columns="4">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Op.
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Formula $R$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Formula $Op_{1}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Formula $Op_{0}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+AND
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+OR
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+ADD
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+SUB
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" bottomline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+SLT
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\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
diff --git a/etc/n3.lyx b/etc/n3.lyx
new file mode 100644
index 0000000..14af896
--- /dev/null
+++ b/etc/n3.lyx
@@ -0,0 +1,2537 @@
+#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
+\leftmargin 0.2cm
+\topmargin 0.7cm
+\rightmargin 0.2cm
+\bottommargin 0.7cm
+\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
+El
+\series bold
+repertorio de instrucciones
+\series default
+ o
+\series bold
+ISA
+\series default
+ de un procesador define el conjunto de instrucciones que implementa, y
+ otros aspectos como el número y tipo de registros, los modos de direccionamient
+o y el manejo de excepciones.
+ MIPS implementa un ISA RISC (
+\emph on
+Reduced Instruction Set Computer
+\emph default
+), que se caracteriza por tener un número de instrucciones relativamente
+ pequeño, normalmente sencillas, que operan con datos en los registros,
+ utilizan pocos modos de direccionamiento y se codifican todas con el mismo
+ número de bits (en el caso de MIPS, 32 bits).
+ En este capítulo implementamos una versión simplificada del ISA MIPS de
+ 32 bits con unas pocas instrucciones de cada tipo.
+\end_layout
+
+\begin_layout Section
+Codificación de las instrucciones
+\end_layout
+
+\begin_layout Standard
+MIPS dispone de 32 registros de propósito general con 32 bits cada uno,
+ además de algunos específicos como el contador de programa (PC), y ve la
+ memoria como un conjunto de celdas de 1 byte cada una con una dirección
+ de 32 bits, permitiendo indexar hasta
+\begin_inset Formula $\unit[4]{GiB}$
+\end_inset
+
+ de memoria.
+ Usa cinco modos de direccionamiento:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Registro:
+\series default
+ El operando se encuentra en un registro, cuyo número está codificado en
+ la instrucción en un campo de 5 bits (
+\begin_inset Formula $2^{5}=\unit[32]{registros}$
+\end_inset
+
+).
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Base más desplazamiento:
+\series default
+ Indica una dirección de memoria a leer o escribir mediante un registro
+ base (codificado con 5 bits) al que se le suma una constante de 16 bits,
+ codificada en el código de instrucción como un entero con signo en complemento
+ a dos.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Inmediato:
+\series default
+ Constante en un campo de 16 bits.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Relativo al PC:
+\series default
+ Indica una dirección de destino de un salto mediante un campo de 16 bits
+ en complemento a dos que indica el número de
+\series bold
+palabras
+\series default
+ (32 bits o 4 bytes) desde el valor actual del registro PC, que será la
+ dirección de la instrucción inmediatamente posterior a la que se está ejecutand
+o.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Pseudodirecto:
+\series default
+ Indica una dirección de destino mediante un campo de 26 bits.
+ Como las direcciones de memoria son de 32, a este se le añaden al final
+ 2 bits a 0 (porque las instrucciones están alineadas a la palabra) y al
+ principio los 4 bits más significativos del PC.
+\end_layout
+
+\begin_layout Subsection
+Formato de instrucción R
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="3" columns="6">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top" width="12text%">
+<column alignment="center" valignment="top" width="10text%">
+<column alignment="center" valignment="top" width="10text%">
+<column alignment="center" valignment="top" width="10text%">
+<column alignment="center" valignment="top" width="10text%">
+<column alignment="center" valignment="top" width="12text%">
+<row>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\size scriptsize
+31
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+hfill
+\end_layout
+
+\end_inset
+
+26
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\size scriptsize
+25
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+hfill
+\end_layout
+
+\end_inset
+
+21
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\size scriptsize
+20
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+hfill
+\end_layout
+
+\end_inset
+
+16
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\size scriptsize
+15
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+hfill
+\end_layout
+
+\end_inset
+
+11
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\size scriptsize
+10
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+hfill
+\end_layout
+
+\end_inset
+
+6
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\size scriptsize
+5
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+hfill
+\end_layout
+
+\end_inset
+
+0
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+op
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+rs
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+rt
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+rd
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+shamt
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+func
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+6
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+5
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+5
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+5
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+5
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+6
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Donde
+\series bold
+op
+\series default
+ es el código de operación, que aparece en todos los formatos de instrucción,
+
+\series bold
+rs
+\series default
+ y
+\series bold
+rt
+\series default
+ son los registros fuente,
+\series bold
+rd
+\series default
+ el registro de destino y
+\series bold
+func
+\series default
+ indica a la ALU qué función debe realizar.
+
+\series bold
+shamt
+\series default
+ es el tamaño de desplazamiento en las instrucciones de desplazamiento y
+ rotación, y vale 0 en el resto.
+\end_layout
+
+\begin_layout Standard
+Este formato se usa para operaciones aritmético-lógicas con modo de direccionami
+ento registro (
+\begin_inset Formula $\boldsymbol{op}=0$
+\end_inset
+
+), cuyo formato es
+\family typewriter
+func $rd, $rs, $rt
+\family default
+, y de las cuales implementaremos
+\family typewriter
+and
+\family default
+ (
+\begin_inset Formula $\boldsymbol{func}=44|_{8}$
+\end_inset
+
+),
+\family typewriter
+or
+\family default
+ (
+\begin_inset Formula $\boldsymbol{func}=45|_{8}$
+\end_inset
+
+),
+\family typewriter
+add
+\family default
+ (
+\begin_inset Formula $\boldsymbol{func}=40|_{8}$
+\end_inset
+
+),
+\family typewriter
+sub
+\family default
+ (
+\begin_inset Formula $\boldsymbol{func}=42|_{8}$
+\end_inset
+
+) y
+\family typewriter
+slt
+\family default
+ (
+\begin_inset Formula $\boldsymbol{func}=52|_{8}$
+\end_inset
+
+), que ya implementamos en la ALU del capítulo anterior.
+\end_layout
+
+\begin_layout Subsection
+Formato de instrucción I
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="3" columns="4">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top" width="12text%">
+<column alignment="center" valignment="top" width="10text%">
+<column alignment="center" valignment="top" width="10text%">
+<column alignment="center" valignment="top" width="32text%">
+<row>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\size scriptsize
+31
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+hfill
+\end_layout
+
+\end_inset
+
+26
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\size scriptsize
+25
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+hfill
+\end_layout
+
+\end_inset
+
+21
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\size scriptsize
+20
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+hfill
+\end_layout
+
+\end_inset
+
+16
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\size scriptsize
+15
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+hfill
+\end_layout
+
+\end_inset
+
+0
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+op
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+rs
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+rt
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+imm
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+6
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+5
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+5
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+16
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Usado para:
+\end_layout
+
+\begin_layout Itemize
+Instrucciones aritmético-lógicas con un operando constante, por direccionamiento
+ in
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+-
+\end_layout
+
+\end_inset
+
+me
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+-
+\end_layout
+
+\end_inset
+
+dia
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+-
+\end_layout
+
+\end_inset
+
+to.
+\end_layout
+
+\begin_layout Itemize
+Instrucciones de acceso a memoria, por direccionamiento base más desplazamiento.
+ El formato es
+\family typewriter
+instr $rt, imm($rs)
+\family default
+, y veremos
+\family typewriter
+lw
+\family default
+ (
+\begin_inset Formula $\boldsymbol{op}=35$
+\end_inset
+
+) y
+\family typewriter
+sw
+\family default
+ (
+\begin_inset Formula $\boldsymbol{op}=43$
+\end_inset
+
+), que cargan una palabra de una dirección de memoria a un registro y viceversa,
+ respectivamente.
+\end_layout
+
+\begin_layout Itemize
+Instrucciones de salto condicional, por direccionamiento relativo a PC.
+ El formato es
+\family typewriter
+instr $rs, $rt, label
+\family default
+, con
+\begin_inset Formula $\mathtt{label}=PC+4\boldsymbol{imm}$
+\end_inset
+
+, y veremos
+\family typewriter
+beq
+\family default
+ (
+\begin_inset Formula $\boldsymbol{op}=4$
+\end_inset
+
+), que salta a una dirección si los dos registros contienen lo mismo.
+\end_layout
+
+\begin_layout Subsection
+Formato de instrucción J
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="3" columns="2">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top" width="12text%">
+<column alignment="center" valignment="top" width="52text%">
+<row>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\size scriptsize
+31
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+hfill
+\end_layout
+
+\end_inset
+
+26
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\size scriptsize
+25
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+hfill
+\end_layout
+
+\end_inset
+
+0
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+op
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+j
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+6
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+26
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Donde
+\series bold
+j
+\series default
+ almacena la dirección de destino por direccionamiento pseudodirecto.
+ Lo usa la instrucción de salto incondicional
+\family typewriter
+j
+\family default
+ (
+\begin_inset Formula $\boldsymbol{op}=2$
+\end_inset
+
+), cuyo formato es
+\family typewriter
+j label
+\family default
+.
+\end_layout
+
+\begin_layout Section
+Modelo del tiempo de ejecución
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula
+\[
+T_{CPU}=N_{inst}\cdot CPI\cdot T_{ciclo}
+\]
+
+\end_inset
+
+ Donde
+\begin_inset Formula $T_{CPU}$
+\end_inset
+
+ es el tiempo que tarda la CPU en ejecutar un programa,
+\begin_inset Formula $N_{inst}$
+\end_inset
+
+ es el número de
+\series bold
+instrucciones dinámicas
+\series default
+ que se ejecutan (cada
+\series bold
+instrucción estática
+\series default
+ del código se cuenta tantas veces como se ejecuta),
+\begin_inset Formula $CPI$
+\end_inset
+
+ es el promedio del número de ciclos que tarda en ejecutarse cada instrucción
+ y
+\begin_inset Formula $T_{ciclo}$
+\end_inset
+
+ es la duración del ciclo de reloj (tiempo entre dos flancos activos), que
+ debe ser lo suficientemente largo para permitir que se estabilicen todas
+ las señales de entrada a los elementos secuenciales.
+\end_layout
+
+\begin_layout Standard
+En una implementación
+\series bold
+monociclo
+\series default
+, todas las instrucciones tardan exactamente un ciclo en ejecutarse.
+ El tiempo de ciclo tiene que ser suficiente para ejecutar la instrucción
+ más larga, por lo que sobrará tiempo para las cortas, reduciendo el rendimiento.
+ Construiremos un procesador
+\series bold
+multiciclo
+\series default
+, en el que las instrucciones se dividen en pasos y cada uno ocupa un ciclo,
+ y el tiempo de ciclo es el necesario para ejecutar el paso más largo.
+ También se pueden realizar implementaciones con
+\begin_inset Formula $CPI<1$
+\end_inset
+
+ mediante técnicas para ejecutar varias instrucciones a la vez, que no veremos
+ aquí.
+\end_layout
+
+\begin_layout Section
+El camino de datos
+\end_layout
+
+\begin_layout Standard
+Un procesador está formado por un
+\series bold
+camino de datos
+\series default
+, donde se encuentran los elementos que realizan el trabajo indicado, y
+ una
+\series bold
+unidad de control
+\series default
+, que gestiona el camino de datos.
+\end_layout
+
+\begin_layout Standard
+Para el camino de datos, tomamos como componentes principales la memoria,
+ el banco de registros y la ALU, y suponemos que solo estos conllevan un
+ retardo significativo.
+ Entonces toda operación con uno de estos componentes consume un ciclo,
+ y la salida de estos debe almacenarse en registros auxiliares para ser
+ usada en el ciclo siguiente.
+ Con esto, nuestro camino de datos tendrá los siguientes componentes:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Memoria:
+\series default
+ Acepta direcciones de 32 bits y permite leer o escribir una palabra de
+ 4 bytes en cada ciclo.
+ Tiene dos señales de control para habilitación de lectura y escritura,
+ así como puertos de entrada para la dirección y el dato a escribir y de
+ salida para el dato leído.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Banco de registros (Reg):
+\series default
+ Banco de 32 registros capaz de leer dos registros y escribir otro en el
+ mismo ciclo.
+ El registro 0 es virtual y contiene siempre el valor 0, por lo que toda
+ escritura en este es ignorada.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+ALU:
+\series default
+ La que vimos en el capítulo anterior.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Contador de programa (PC):
+\series default
+ De 32 bits, con señal de habilitación de escritura.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Registro de instrucción (IR):
+\series default
+ De 32 bits con habilitación de escritura, almacena la instrucción que se
+ está ejecutando actualmente, y tiene varios puertos de salida para los
+ distintos campos.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Registro de datos de memoria (MDR):
+\series default
+ De 32 bits sin habilitación de escritura, almacena un valor leído de memoria.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Registros A y B:
+\series default
+ De 32 bits sin habilitación de escritura, almacenan los valores leídos
+ del banco de registros.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Registro ALUOut:
+\series default
+ De 32 bits sin habilitación de escritura, almacena la salida de la ALU.
+\end_layout
+
+\begin_layout Itemize
+Algunos desplazadores y extensores de signo, así como multiplexores para
+ permitir distintas conexiones entre unidades funcionales.
+\end_layout
+
+\begin_layout Standard
+Veamos ahora la descomposición de instrucciones en pasos.
+ Para esta parte usaremos
+\series bold
+lenguaje de transferencia entre registros
+\series default
+ o
+\series bold
+RTL
+\series default
+ (
+\emph on
+Register Transfer Language
+\emph default
+).
+ La transferencia de un registro o resultado de una operación a un registro
+ se escribe como
+\family typewriter
+A <- B
+\family default
+, donde
+\family typewriter
+B
+\family default
+ indica una operación y
+\family typewriter
+A
+\family default
+ es el registro al que se transfiere el resultado.
+ Si una sentencia se debe ejecutar sólo bajo cierta condición
+\family typewriter
+C
+\family default
+, que puede incluir operadores booleanos, se indica con
+\family typewriter
+C: A <- B
+\family default
+.
+ Finalmente, para indicar que varias sentencias se ejecutan en paralelo,
+ se separan por comas.
+\end_layout
+
+\begin_layout Standard
+Los dos primeros pasos son comunes a todas las instrucciones:
+\end_layout
+
+\begin_layout Enumerate
+Lectura de instrucción desde la memoria (memoria) y cálculo de la dirección
+ de la ins
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+-
+\end_layout
+
+\end_inset
+
+truc
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+-
+\end_layout
+
+\end_inset
+
+ción siguiente (ALU).
+\begin_inset Newline newline
+\end_inset
+
+
+\family typewriter
+IR <- Memoria[PC], PC <- PC + 4
+\end_layout
+
+\begin_layout Enumerate
+Decodificación de la instrucción, lectura de operandos (banco de registros)
+ y cálculo de la dirección de destino de salto condicional (ALU).
+\begin_inset Newline newline
+\end_inset
+
+
+\family typewriter
+A <- Reg[IR[25-21]], B <- Reg[IR[20-16]],
+\begin_inset Newline newline
+\end_inset
+
+ALUOut <- PC + sign_extend(IR[15-0]) << 2
+\family default
+
+\begin_inset Newline newline
+\end_inset
+
+Como hasta que no acaba el segundo paso no se ha decodificado la instrucción,
+ el resto de acciones se hacen de manera
+\series bold
+especulativa
+\series default
+, por si resultaran útiles luego, pues las unidades funcionales necesarias
+ están desocupadas.
+\end_layout
+
+\begin_layout Standard
+A continuación, para una instrucción aritmético-lógica:
+\end_layout
+
+\begin_layout Enumerate
+\begin_inset Argument item:1
+status open
+
+\begin_layout Plain Layout
+3a.
+\end_layout
+
+\end_inset
+
+Realización de la operación (ALU).
+\begin_inset Newline newline
+\end_inset
+
+
+\family typewriter
+ALUOut <- A func B
+\end_layout
+
+\begin_layout Enumerate
+\begin_inset Argument item:1
+status open
+
+\begin_layout Plain Layout
+4a.
+\end_layout
+
+\end_inset
+
+Escritura del resultado (banco de registros).
+\begin_inset Newline newline
+\end_inset
+
+
+\family typewriter
+Reg[IR[15-11]] <- ALUOut
+\end_layout
+
+\begin_layout Standard
+Para
+\family typewriter
+lw
+\family default
+:
+\end_layout
+
+\begin_layout Enumerate
+\begin_inset Argument item:1
+status open
+
+\begin_layout Plain Layout
+3b.
+\end_layout
+
+\end_inset
+
+Cálculo de la dirección de memoria (ALU).
+\begin_inset Newline newline
+\end_inset
+
+
+\family typewriter
+ALUOut <- A + sign_extend(IR[15-0])
+\end_layout
+
+\begin_layout Enumerate
+\begin_inset Argument item:1
+status open
+
+\begin_layout Plain Layout
+4b.
+\end_layout
+
+\end_inset
+
+Lectura del dato de memoria (memoria).
+\begin_inset Newline newline
+\end_inset
+
+
+\family typewriter
+MDR <- Mem[ALUOut]
+\end_layout
+
+\begin_layout Enumerate
+\begin_inset Argument item:1
+status open
+
+\begin_layout Plain Layout
+5.
+\end_layout
+
+\end_inset
+
+Escritura del dato leído (banco de registros).
+\begin_inset Newline newline
+\end_inset
+
+
+\family typewriter
+Reg[IR[20-16]] <- MDR
+\end_layout
+
+\begin_layout Standard
+Para
+\family typewriter
+sw
+\family default
+:
+\end_layout
+
+\begin_layout Enumerate
+\begin_inset Argument item:1
+status open
+
+\begin_layout Plain Layout
+3b.
+\end_layout
+
+\end_inset
+
+Cálculo de la dirección de memoria (ALU).
+\end_layout
+
+\begin_layout Enumerate
+\begin_inset Argument item:1
+status open
+
+\begin_layout Plain Layout
+4c.
+\end_layout
+
+\end_inset
+
+Escritura del dato en memoria (memoria).
+\begin_inset Newline newline
+\end_inset
+
+
+\family typewriter
+Mem[ALUOut] <- B
+\end_layout
+
+\begin_layout Standard
+Para
+\family typewriter
+beq
+\family default
+:
+\end_layout
+
+\begin_layout Enumerate
+\begin_inset Argument item:1
+status open
+
+\begin_layout Plain Layout
+3c.
+\end_layout
+
+\end_inset
+
+Comprobación de la condición del salto (ALU) y actualización del contador
+ de programa si procede.
+\begin_inset Newline newline
+\end_inset
+
+
+\family typewriter
+A=B: PC <- ALUOut
+\end_layout
+
+\begin_layout Standard
+Para
+\family typewriter
+j
+\family default
+:
+\end_layout
+
+\begin_layout Enumerate
+\begin_inset Argument item:1
+status open
+
+\begin_layout Plain Layout
+3d.
+\end_layout
+
+\end_inset
+
+Actualización del contador de programa.
+\begin_inset Newline newline
+\end_inset
+
+
+\family typewriter
+PC <- (PC[31-28] << 28) | (IR[25-0] << 2)
+\end_layout
+
+\begin_layout Standard
+Nos queda por tanto lo siguiente:
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+begin{verbatim}
+\end_layout
+
+\begin_layout Plain Layout
+
+T1: IR <- Mem[PC], PC <- PC + 4
+\end_layout
+
+\begin_layout Plain Layout
+
+T2: A <- Reg[IR[25-21]], B <- Reg[IR[20-16]],
+\end_layout
+
+\begin_layout Plain Layout
+
+ ALUOut <- PC + sign_extend(IR[15-0]) << 2
+\end_layout
+
+\begin_layout Plain Layout
+
+T3 && op=0: ALUOut <- A func B
+\end_layout
+
+\begin_layout Plain Layout
+
+T3 && (op=35 || op=43): ALUOut <- A + sign_extend(IR[15-0])
+\end_layout
+
+\begin_layout Plain Layout
+
+T3 && (op=4) && (A=B): PC <- ALUOut
+\end_layout
+
+\begin_layout Plain Layout
+
+T3 && (op=2): PC <- (PC[31-28] << 28) | (IR[25-0] << 2)
+\end_layout
+
+\begin_layout Plain Layout
+
+T4 && (op=0): Reg[IR[15-11]] <- ALUOut
+\end_layout
+
+\begin_layout Plain Layout
+
+T4 && (op=35): MDR <- Mem[ALUOut]
+\end_layout
+
+\begin_layout Plain Layout
+
+T4 && (op=43): Mem[ALUOut] <- B
+\end_layout
+
+\begin_layout Plain Layout
+
+T5 && (op=35): Reg[IR[20-16]] <- MDR
+\end_layout
+
+\begin_layout Plain Layout
+
+
+\backslash
+end{verbatim}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Las conexiones que necesitamos dependen del ciclo actual y la instrucción
+ que se esté ejecutando, por lo que tenemos que añadir algunos multiplexores
+ en algunos puertos de entrada para seleccionar:
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="9" columns="9">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Nombre
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Puerto
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Unidad
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+V.
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Entrada
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Pasos
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+V.
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Entrada
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Pasos
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell multirow="3" alignment="center" valignment="middle" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+IoD
+\end_layout
+
+\end_inset
+</cell>
+<cell multirow="3" alignment="center" valignment="middle" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Dirección
+\end_layout
+
+\end_inset
+</cell>
+<cell multirow="3" alignment="center" valignment="middle" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Memoria
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+PC
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+ALUOut
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+4b,4c
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell multirow="3" alignment="center" valignment="middle" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+DestReg
+\end_layout
+
+\end_inset
+</cell>
+<cell multirow="3" alignment="center" valignment="middle" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Reg.
+ a escr.
+\end_layout
+
+\end_inset
+</cell>
+<cell multirow="3" alignment="center" valignment="middle" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+B.
+ de regs.
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+rt
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+5
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+rd
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+4a
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+MemAReg
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Dato a escr.
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+B.
+ de regs.
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+ALUOut
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+4a
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+MDR
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+5
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+SelALUA
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Formula $1^{\text{er}}$
+\end_inset
+
+ op.
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+ALU
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+PC
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1,2
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+A
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+3a,3b,3c
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell multirow="3" alignment="center" valignment="middle" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+SelALUB
+\end_layout
+
+\end_inset
+</cell>
+<cell multirow="3" alignment="center" valignment="middle" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Formula $2^{\text{o}}$
+\end_inset
+
+ op.
+\end_layout
+
+\end_inset
+</cell>
+<cell multirow="3" alignment="center" valignment="middle" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+ALU
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+00
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+B
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+3a
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+01
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Const.
+ 4
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell multirow="4" alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell multirow="4" alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell multirow="4" alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+10
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+imm
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+3b
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+11
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+imm
+\series default
+*4
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+2
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell multirow="3" alignment="center" valignment="middle" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+PCSrc
+\end_layout
+
+\end_inset
+</cell>
+<cell multirow="3" alignment="center" valignment="middle" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Entrada
+\end_layout
+
+\end_inset
+</cell>
+<cell multirow="3" alignment="center" valignment="middle" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+PC
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+00
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+ALU
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+01
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+ALUOut
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+3c
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell multirow="4" alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell multirow="4" alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell multirow="4" alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+10
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+...
+\series bold
+j
+\series default
+...
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+3d
+\end_layout
+
+\end_inset
+</cell>
+<cell multicolumn="1" alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+La unidad de control
+\end_layout
+
+\begin_layout Standard
+Debemos asegurar que el valor de las señales de control de los multiplexores
+ y de todas las unidades funcionales sea el adecuado.
+ Primero haremos un circuito de control de la ALU, que debe realizar una
+ suma en los pasos 1, 2 y 3b, una resta en el paso 3c y una función en 3a
+ que depende de los bits del campo
+\series bold
+func
+\series default
+.
+ Para ello diseñamos un circuito combinacional con dos bits de entrada (
+\family typewriter
+ALUOp
+\family default
+) además de los seis del campo
+\series bold
+func
+\series default
+ y tres bits de salida correspondientes a
+\family typewriter
+ALUCtl
+\family default
+, como se muestra en la figura.
+ No necesitamos los dos bytes más significativos de
+\family typewriter
+func
+\family default
+, pues son iguales en las cinco operaciones.
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Graphics
+ filename pegado32.png
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Hecho esto, las señales que debe controlar la unidad de control principal
+ son: las señales de control de los multiplexores indicados, incluyendo
+
+\family typewriter
+ALUOp
+\family default
+; las señales
+\family typewriter
+MemR
+\family default
+ y
+\family typewriter
+MemW
+\family default
+ de habilitación de lectura y escritura de memoria, y la señales de habilitación
+ de escritura
+\family typewriter
+WrtIR
+\family default
+,
+\family typewriter
+WrtPC
+\family default
+,
+\family typewriter
+WrtPCCond
+\family default
+ (similar pero solo escribe si la señal
+\begin_inset Quotes cld
+\end_inset
+
+Cero
+\begin_inset Quotes crd
+\end_inset
+
+ de la ALU está activa, para implementar la condición
+\family typewriter
+A=B
+\family default
+) y
+\family typewriter
+WrtReg
+\family default
+.
+\end_layout
+
+\begin_layout Standard
+El valor de las señales de control depende sólo del paso actual, mientras
+ que la transición de un paso a otro depende de la instrucción en ejecución,
+ por lo que podemos implementar la unidad de control como un autómata de
+ Moore cuya entrada es el campo
+\series bold
+op
+\series default
+ de la instrucción en IR y cuya salida son los valores de las señales de
+ control.
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Graphics
+ filename pegado33.png
+ width 100text%
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Graphics
+ filename pegado34.png
+ width 100text%
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+Metodología para añadir instrucciones
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+Análisis
+\end_layout
+
+\begin_deeper
+\begin_layout Enumerate
+
+\series bold
+Especificación semántica precisa:
+\series default
+ Traducir la descripción verbal de la instrucción a notación RTL.
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+Identificación del trabajo:
+\series default
+ Identificar qué acciones realiza cada unidad funcional.
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+Establecimiento del orden de precedencia:
+\series default
+ Ver qué relaciones de dependencia existen entre las acciones.
+\end_layout
+
+\end_deeper
+\begin_layout Enumerate
+
+\series bold
+Diseño
+\end_layout
+
+\begin_deeper
+\begin_layout Enumerate
+
+\series bold
+Definición de la codificación:
+\series default
+ Asignar una codificación ajustándose a uno de los tres formatos de instrucción
+ existentes (salvo que sea imposible), de forma que se pueda diferenciar
+ la instrucción de las ya existentes.
+ Para decidir la colocación de los operandos, conviene tener en cuenta el
+ uso que se va a hacer de ellos y las conexiones ya disponibles, minimizando
+ el número de cambios a realizar.
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+División del trabajo en ciclos:
+\series default
+ Respetando las dependencias, sin usar la misma unidad dos veces en el mismo
+ ciclo, e intentando aprovechar las instrucciones que ya se realizan en
+ los dos primeros ciclos.
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+Extensión del camino de datos:
+\series default
+ Detallar las modificaciones a realizar en este para permitir la realización
+ de las acciones indicadas.
+\end_layout
+
+\begin_layout Enumerate
+
+\series bold
+Extensión del control:
+\series default
+ Indicar los nuevos estados, el paso de uno a otro y el valor de las señales
+ de control en cada uno.
+\end_layout
+
+\end_deeper
+\end_body
+\end_document
diff --git a/etc/n4.lyx b/etc/n4.lyx
new file mode 100644
index 0000000..db7c4de
--- /dev/null
+++ b/etc/n4.lyx
@@ -0,0 +1,662 @@
+#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
+Hoy en día (a precio razonable) podemos construir memorias de gran capacidad
+ pero lentas, o memorias rápidas pero con poca capacidad.
+ Para crear la ilusión de que tenemos una memoria con ambas características,
+ combinamos tipos de memoria con distintas velocidades y tamaños en una
+
+\series bold
+jerarquía de memoria
+\series default
+, formada normalmente por los siguientes componentes, de mayor a menor cercanía
+ a la CPU:
+\end_layout
+
+\begin_layout Itemize
+Registros de la CPU.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Memoria caché
+\series default
+ (SRAM).
+ Suele haber 3 niveles (llamados L1–L3), donde el L3 puede estar fuera de
+ la CPU (los demás están dentro) y L1 es el de menor capacidad pero menor
+ tiempo de acceso, y por tanto el más cercano a la CPU.
+\end_layout
+
+\begin_layout Itemize
+Memoria principal (
+\series bold
+SDRAM
+\series default
+,
+\emph on
+Synchronous DRAM
+\emph default
+).
+\end_layout
+
+\begin_layout Itemize
+Almacenamiento secundario local (discos SSD o magnéticos).
+ Los
+\series bold
+discos SSD
+\series default
+ (
+\emph on
+Solid State Drive
+\emph default
+) usan memoria flash para almacenar los datos y por tanto son más rápidos
+ que los
+\series bold
+discos duros
+\series default
+ o
+\series bold
+magnéticos
+\series default
+, pues no presentan limitaciones mecánicas, si bien quedan lejos de las
+ memorias RAM.
+\end_layout
+
+\begin_layout Itemize
+Almacenamiento secundario remoto (sistemas de ficheros distribuidos, servidores,
+ etc.).
+\end_layout
+
+\begin_layout Standard
+El objetivo es proporcionar la máxima capacidad de memoria con la tecnología
+ más barata pero con un tiempo medio de acceso similar al de la tecnología
+ más rápida.
+ Por lo general, los datos solo se transfieren entre niveles adyacentes.
+\end_layout
+
+\begin_layout Section
+Funcionamiento
+\end_layout
+
+\begin_layout Standard
+
+\series bold
+Principio de localidad
+\series default
+: en un momento concreto, los programas acceden a una parte relativamente
+ pequeña de su espacio de direcciones.
+ Tipos:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Localidad temporal
+\series default
+: Si se consulta un dato, probablemente será consultado próximamente.
+ En los programas aparecen multitud de bucles, por lo que se accederá repetidame
+nte a instrucciones y datos.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Localidad espacial
+\series default
+: Si se consulta un dato, probablemente serán consultados otros cercanos.
+ A las instrucciones se suele acceder secuencialmente, así como a los elementos
+ de una tabla.
+\end_layout
+
+\begin_layout Standard
+Para aprovechar la localidad espacial, la información se transfiere entre
+ niveles adyacentes en
+\series bold
+bloques
+\series default
+, cuyo tamaño depende de los niveles.
+ El
+\series bold
+tamaño de bloque
+\series default
+ es el número de bytes que contiene, y para las cachés suele ser 64.
+ Decimos que hay un
+\series bold
+acierto
+\series default
+ (
+\emph on
+hit
+\emph default
+) cuando la información pedida por el procesador se encuentra en el nivel
+ superior, y un
+\series bold
+fallo
+\series default
+ (
+\emph on
+miss
+\emph default
+) cuando no.
+\end_layout
+
+\begin_layout Standard
+La
+\series bold
+tasa de aciertos
+\series default
+ (
+\emph on
+hit rate
+\emph default
+) es la fracción de accesos a memoria que son aciertos, y se usa como medida
+ del rendimiento, mientras que la
+\series bold
+tasa de fallos
+\series default
+ (
+\emph on
+miss rate
+\emph default
+) es 1 menos la tasa de aciertos.
+ El
+\series bold
+tiempo de acierto
+\series default
+ es el tiempo necesario para acceder al nivel superior de la memoria, incluyendo
+ el necesario para determinar si el acceso es un acierto o un fallo, y la
+
+\series bold
+penalización por fallo
+\series default
+ es el tiempo necesario para reemplazar un bloque del nivel superior por
+ otro del nivel inferior.
+\end_layout
+
+\begin_layout Standard
+Las direcciones de memoria se asignan a bytes individuales, lo que llamamos
+
+\series bold
+dirección de byte
+\series default
+ (
+\begin_inset Formula $D_{byte}$
+\end_inset
+
+).
+ Como las palabras (en general) son de varios bytes, cada palabra tiene
+ varias direcciones de byte, a las que asignamos una
+\series bold
+dirección de palabra
+\series default
+ con
+\begin_inset Formula $D_{palabra}=\left\lfloor \frac{D_{byte}}{T_{palabra}}\right\rfloor $
+\end_inset
+
+, donde
+\begin_inset Formula $T_{palabra}$
+\end_inset
+
+ es el número de bytes de la palabra, y el resto de esta división es el
+ desplazamiento de byte dentro de la palabra.
+ Igualmente, podemos asignar a cada bloque una
+\series bold
+dirección de bloque
+\series default
+, de forma que
+\begin_inset Formula $D_{bloque}=\left\lfloor \frac{D_{byte}}{T_{bloque}}\right\rfloor $
+\end_inset
+
+, siendo
+\begin_inset Formula $T_{bloque}$
+\end_inset
+
+ el tamaño del bloque, y el resto de esta división es el desplazamiento
+ de byte dentro del bloque.
+ Tanto el tamaño de palabra como el de bloque son potencias de 2, por lo
+ que el cálculo de las direcciones y desplazamientos es trivial.
+\end_layout
+
+\begin_layout Section
+Estructura
+\end_layout
+
+\begin_layout Standard
+Una caché esta organizada en una serie de
+\series bold
+conjuntos
+\series default
+ de bloques o
+\series bold
+huecos
+\series default
+, y una serie de
+\series bold
+vías
+\series default
+, que son el número de bloques por conjunto.
+ Llamamos
+\series bold
+asociatividad
+\series default
+ de la caché al número de vías que contiene.
+ A cada bloque le corresponde un conjunto, dado por el resto de la dirección
+ de bloque entre el número de conjuntos, y dentro de este puede ocupar cualquier
+a de los huecos.
+\end_layout
+
+\begin_layout Standard
+Una mayor asociatividad aumenta la tasa de acierto por tener más libertad
+ a la hora de elegir qué bloques quitar, pero también aumenta el número
+ de comparaciones que hay que realizar, por lo que aumenta el coste al necesitar
+ más comparadores, así como el tiempo de acierto.
+\end_layout
+
+\begin_layout Standard
+Una caché se dice
+\series bold
+de correspondencia directa
+\series default
+ si tiene sólo una vía (un bloque por conjunto), y
+\series bold
+totalmente asociativa
+\series default
+ si sólo tiene un conjunto.
+ A cada posición de la caché se le añade una
+\series bold
+etiqueta
+\series default
+ (
+\emph on
+tag
+\emph default
+) dada por
+\begin_inset Formula $E=\left\lfloor \frac{D_{bloque}}{N_{S}}\right\rfloor $
+\end_inset
+
+, donde
+\begin_inset Formula $N_{S}$
+\end_inset
+
+ es el número de conjuntos.
+ Además, es necesario un
+\series bold
+bit de validez
+\series default
+ en cada hueco que indique que el bloque tiene información válida.
+\end_layout
+
+\begin_layout Section
+Políticas de escritura
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Escritura directa
+\series default
+ (
+\emph on
+write through
+\emph default
+): Las escrituras se hacen a la vez en la caché y en memoria.
+ Si el bloque no está en caché, se suele escribir directamente la palabra
+ en memoria principal (
+\emph on
+no write allocate
+\emph default
+), si bien también se puede traer el bloque a la caché (
+\emph on
+write allocate
+\emph default
+), pero esto es mucho menos común.
+\begin_inset Newline newline
+\end_inset
+
+Esta política es más fácil de implementar y tiene la ventaja de que los
+ fallos son menos costosos.
+ Sin embargo, en la práctica es necesario un
+\series bold
+buffer de escrituras
+\series default
+ que almacene los datos para ser escritos de forma que el procesador no
+ tenga que detenerse hasta que acabe la escritura, salvo que el buffer esté
+ lleno.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Postescritura
+\series default
+ (
+\emph on
+write back
+\emph default
+): Las escrituras se hacen sólo en la caché, y sólo se actualiza la información
+ en memoria al sacar el bloque de la caché.
+ Es necesario un
+\series bold
+bit de modificación
+\series default
+ o
+\series bold
+de sucio
+\series default
+ (
+\emph on
+dirty bit
+\emph default
+) en cada bloque, y si el bloque no está en caché se debe traer a caché.
+\begin_inset Newline newline
+\end_inset
+
+Esta política tiene la ventaja de que en caso de acierto se puede escribir
+ más rápidamente, y que múltiples escrituras en un bloque requieren una
+ sola escritura en memoria, pudiendo hacer uso de
+\series bold
+escritura en ráfaga
+\series default
+ para conseguir mayor ancho de banda.
+\end_layout
+
+\begin_layout Section
+Políticas de reemplazo
+\end_layout
+
+\begin_layout Standard
+En una caché asociativa (con más de una vía), al traer un bloque se puede
+ poner en cualquier hueco del conjunto, y si el conjunto está lleno (como
+ ocurre normalmente) hay que elegir qué bloque sacar de la cache.
+ Para ello hay varias políticas:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Aleatoria
+\series default
+: Se elige un bloque al azar.
+ Es la más sencilla de construir.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+LRU
+\series default
+ (
+\emph on
+Least Recently Used
+\emph default
+, Menos Recientemente Usado): Se elige el bloque que haya estado más tiempo
+ sin ser accedido.
+ Consigue menores tasas de fallo que el aleatorio, pero al aumentar la asociativ
+idad se vuelve demasiado costoso, pues necesita mantener mucha información.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Pseudo-LRU
+\series default
+: Esquemas que
+\begin_inset Quotes cld
+\end_inset
+
+imitan
+\begin_inset Quotes crd
+\end_inset
+
+ al LRU pero con implementación más sencilla.
+ Por ejemplo, el que utiliza un
+\series bold
+bit de uso
+\series default
+ o
+\series bold
+de referencia
+\series default
+ en cada bloque, que se pone a cero al traer el bloque y a 1 cada vez que
+ se accede a él, volviéndose a poner a cero en todos los bloques periódicamente.
+ A la hora de elegir un bloque que sustituir, se prefiere uno que tenga
+ a 0 el bit de uso.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+NRU
+\series default
+ (
+\emph on
+Not Recently Used
+\emph default
+): Para una caché de asociatividad 2, se puede implementar el LRU con un
+ sólo bit por conjunto.
+\end_layout
+
+\begin_layout Section
+Tamaño real y rendimiento
+\end_layout
+
+\begin_layout Standard
+Si
+\begin_inset Formula $N_{S}$
+\end_inset
+
+ es el número de conjuntos de la caché,
+\begin_inset Formula $A$
+\end_inset
+
+ es la asociatividad,
+\begin_inset Formula $T_{bloque}$
+\end_inset
+
+ es el tamaño de bloque,
+\begin_inset Formula $W_{dir}$
+\end_inset
+
+ el número de bits de las direcciones de memoria y
+\begin_inset Formula $N_{bits-control}$
+\end_inset
+
+ el número de bits de control necesarios por bloque (de 1 a 3 según lo visto
+ y puede que algunos más en una caché real), el tamaño útil de la caché
+ en bytes será
+\begin_inset Formula $T_{útil}=N_{S}AT_{bloque}$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+Por su parte, el tamaño total en bits será
+\begin_inset Formula $T_{total}=N_{S}T_{conjunto}$
+\end_inset
+
+, con
+\begin_inset Formula $T_{conjunto}=AT_{entrada}$
+\end_inset
+
+,
+\begin_inset Formula $T_{entrada}=N_{bits-control}+W_{etiqueta}+8T_{bloque}$
+\end_inset
+
+ y
+\begin_inset Formula $W_{etiqueta}=W_{dir}-\log_{2}N_{S}-\log_{2}T_{bloque}$
+\end_inset
+
+.
+ En resumen,
+\begin_inset Formula
+\[
+T_{total}=N_{S}A(8T_{bloque}+N_{bits-control}+W_{dir}-\log_{2}N_{S}-\log_{2}T_{bloque})
+\]
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Para hallar el rendimiento de la caché usamos que
+\begin_inset Formula $T_{ejec}=T_{CPU}+T_{bloqueo}$
+\end_inset
+
+, siendo
+\begin_inset Formula $T_{CPU}$
+\end_inset
+
+ el tiempo de ejecución normal de CPU, contando aciertos en accesos de memoria,
+ y
+\begin_inset Formula $T_{bloqueo}$
+\end_inset
+
+ el bloqueo debido a fallos de caché.
+ Así,
+\begin_inset Formula $T_{bloqueo}=N_{accesos}T_{F}P_{F}$
+\end_inset
+
+, donde
+\begin_inset Formula $N_{accesos}$
+\end_inset
+
+ es el total de accesos,
+\begin_inset Formula $T_{F}$
+\end_inset
+
+ la tasa de fallos y
+\begin_inset Formula $P_{F}$
+\end_inset
+
+ la penalización por fallos.
+\end_layout
+
+\begin_layout Standard
+Ahora bien, normalmente un procesador tiene cachés separadas para datos
+ e instrucciones para evitar que los datos
+\begin_inset Quotes cld
+\end_inset
+
+expulsen
+\begin_inset Quotes crd
+\end_inset
+
+ instrucciones y viceversa y mejorar así el rendimiento.
+ Por tanto, si la caché de instrucciones tiene tasa de fallos
+\begin_inset Formula $T_{Fi}$
+\end_inset
+
+ y penalización
+\begin_inset Formula $P_{Fi}$
+\end_inset
+
+ y la de datos tiene tasa de fallos
+\begin_inset Formula $T_{Fd}$
+\end_inset
+
+ y penalización
+\begin_inset Formula $P_{Fd}$
+\end_inset
+
+, y
+\begin_inset Formula $D/I$
+\end_inset
+
+ es la tasa de acceso a datos por instrucción (accesos a datos por número
+ de instrucciones), nos queda que
+\begin_inset Formula
+\[
+T_{bloqueo}=N_{instrucciones}(T_{Fi}P_{Fi}+D/I\cdot T_{Fd}P_{Fd})
+\]
+
+\end_inset
+
+donde
+\begin_inset Formula $N_{instrucciones}$
+\end_inset
+
+ es el número de instrucciones que se ejecutan.
+\end_layout
+
+\end_body
+\end_document
diff --git a/etc/n5.lyx b/etc/n5.lyx
new file mode 100644
index 0000000..d673bdf
--- /dev/null
+++ b/etc/n5.lyx
@@ -0,0 +1,315 @@
+#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
+memoria virtual
+\series default
+ es una técnica consistente en usar la memoria principal como caché para
+ almacenamiento secundario, normalmente discos duros.
+ Objetivos:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Proporcionar un gran espacio de direcciones:
+\series default
+ Anteriormente, si un programa era demasiado grande, el programador debía
+ dividir el programa en segmentos independientes (
+\emph on
+overlays
+\emph default
+) cargados y liberados de memoria por el propio programa, lo que dificultaba
+ la programación.
+ Además, debía haber un hueco de memoria libre contigua para cargar estos
+ segmentos, pero esta podía estar fragmentada en varios huecos demasiado
+ pequeños.
+ Con memoria virtual, el programador trabaja como si hubiera una gran memoria
+ sólo para el programa.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Permitir la compartición segura y eficiente de memoria entre varios programas:
+\series default
+ La memoria principal sólo tiene que contener lo que se ejecuta en un momento
+ dado, por lo que se aprovecha mejor, y consigue que un proceso sólo pueda
+ leer y escribir la memoria que tiene asignada.
+\end_layout
+
+\begin_layout Standard
+El sistema de memoria virtual crea un
+\series bold
+espacio de direcciones virtuales
+\series default
+ para cada proceso, de forma que la CPU produce direcciones virtuales y
+ la
+\series bold
+MMU
+\series default
+ (
+\emph on
+Memory Management Unit
+\emph default
+) realiza la
+\series bold
+traducción de direcciones
+\series default
+ (
+\emph on
+address translation
+\emph default
+) a
+\series bold
+direcciones físicas
+\series default
+.
+ Un bloque de memoria virtual es una
+\series bold
+página
+\series default
+, un acierto es un
+\series bold
+acierto de página
+\series default
+ y un fallo es un
+\series bold
+fallo de página
+\series default
+.
+\end_layout
+
+\begin_layout Standard
+Las páginas deben ser lo bastante grandes para amortizar el tiempo de acceso
+ a disco, normalmente
+\begin_inset Formula $\unit[4]{KiB}$
+\end_inset
+
+ para páginas pequeñas y tamaños mucho mas grandes (de megabytes) para ciertos
+ casos.
+ Como la penalización por fallo es muy alta (de millones de ciclos e incluso
+ visible al usuario), es muy importante reducir la tasa de fallos, por lo
+ que se usa un esquema totalmente asociativo, y como los fallos de página
+ los gestiona el sistema operativo (porque la sobrecarga de usar software
+ aquí es despreciable) se pueden usar algoritmos de reemplazo más complejos.
+ Siempre se usa postescritura.
+\end_layout
+
+\begin_layout Section
+La tabla de páginas
+\end_layout
+
+\begin_layout Standard
+Una página virtual puede estar asociada a cualquier página física o a ninguna,
+ y esta información se almacena en la
+\series bold
+tabla de páginas
+\series default
+, una tabla multinivel manejada por el sistema operativo, almacenada en
+ memoria principal e indexada por el número de página virtual, que en cada
+ entrada contiene el número de página física junto con información adicional
+ como el bit de validez, el bit de sucio, bits de protección (permisos de
+ lectura, escritura y ejecución) y un bit de uso para políticas de reemplazo
+ o direcciones de disco, y su tamaño se redondea por exceso al tamaño de
+ palabra para facilitar el indexado.
+\end_layout
+
+\begin_layout Standard
+La MMU incluye una caché especial, el
+\series bold
+buffer de traducción adelantada de direcciones
+\series default
+ o
+\series bold
+TLB
+\series default
+ (
+\emph on
+Translation Lookaside Buffer
+\emph default
+) que guarda traducciones de número de página virtual a número de página
+ física.
+ Suele emplear postescritura (principalmente para actualizar el bit de uso),
+ pues se espera una tasa de fallos pequeña.
+\end_layout
+
+\begin_layout Section
+Tratamiento de los fallos de página
+\end_layout
+
+\begin_layout Standard
+Al producirse un fallo de página se produce una
+\series bold
+excepción por fallo de página
+\series default
+, transfiriendo el control de la CPU al sistema operativo que, una vez guardado
+ el estado del programa en ejecución, debe encontrar la página solicitada
+ en memoria secundaria y colocarla en la principal, o notificar de un
+\series bold
+fallo de segmentación
+\series default
+ (
+\emph on
+segmentation fault
+\emph default
+) si la página solicitada no se corresponde con ningún dato del proceso.
+ El sistema operativo mantiene información de la posición en memoria secundaria
+ donde se guarda cada página virtual, bien en la propia tabla de páginas
+ o en una estructura aparte.
+\end_layout
+
+\begin_layout Standard
+Normalmente se usa una política de reemplazo similar a LRU (pseudo-LRU),
+ pues se quieren minimizar los fallos de página pero un LRU puro es demasiado
+ caro por requerir actualizar la estructura en cada acceso a memoria.
+ Por ello algunas MMU proporcionan un
+\series bold
+bit de uso
+\series default
+ o
+\series bold
+de referencia
+\series default
+ que se activa por hardware cuando se accede a la página, y periódicamente
+ el sistema operativo desactiva todos los bits de uso, de forma similar
+ a como se hacía en las cachés.
+ Este esquema se puede perfeccionar más si en vez de tener en cuenta el
+ bit de uso en el último periodo se tiene en cuenta el bit de uso en un
+ número fijo de periodos anteriores.
+\end_layout
+
+\begin_layout Section
+Protección
+\end_layout
+
+\begin_layout Standard
+El sistema operativo mantiene separadas las páginas virtuales de programas
+ distintos para que uno no pueda acceder a los datos de otro, y cuando cambia
+ de proceso (
+\series bold
+cambio de contexto
+\series default
+ o
+\series bold
+ de proceso
+\series default
+), cambia el valor del registro de tabla de páginas y, si hay TLB, lo vacía.
+\end_layout
+
+\begin_layout Standard
+Para que esta protección sea efectiva, la CPU tiene (al menos) dos modos
+ de funcionamiento:
+\series bold
+modo usuario
+\series default
+, para programas de usuario, y
+\series bold
+modo supervisor
+\series default
+ o
+\series bold
+núcleo
+\series default
+, para el sistema operativo.
+ Desde el modo usuario, la lectura y escritura queda limitada a su espacio
+ de direcciones virtuales, puede que con ciertas restricciones adicionales,
+ impidiendo además que escriba en la tabla de páginas, la TLB o el registro
+ que apunta a la tabla de páginas, o cambie el modo de la CPU.
+\end_layout
+
+\begin_layout Standard
+La CPU cambia de modo usuario a supervisor si se produce una interrupción,
+ una excepción producida por el programa o una llamada al sistema, basada
+ en una instrucción especial (
+\emph on
+syscall
+\emph default
+) que transfiere el control al sistema operativo.
+ El retorno a modo usuario se realiza mediante una
+\series bold
+instrucción de retorno de excepción
+\series default
+ (RFE).
+\end_layout
+
+\end_body
+\end_document
diff --git a/etc/n6.lyx b/etc/n6.lyx
new file mode 100644
index 0000000..37bb144
--- /dev/null
+++ b/etc/n6.lyx
@@ -0,0 +1,717 @@
+#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
+Según el
+\series bold
+modelo von Neumann
+\series default
+, un computador está formado por: procesador, memoria y entrada/salida (E/S).
+ Podemos clasificar los dispositivos de E/S en dispositivos de
+\series bold
+almacenamiento
+\series default
+,
+\series bold
+interfaz con el usuario
+\series default
+,
+\series bold
+visualización y multimedia
+\series default
+,
+\series bold
+comunicaciones
+\series default
+ y
+\series bold
+adquisición de datos
+\series default
+.
+ También podemos clasificarlos según su ancho de banda.
+\end_layout
+
+\begin_layout Section
+Puertos y buses
+\end_layout
+
+\begin_layout Standard
+Los periféricos tienen una serie de
+\series bold
+puertos
+\series default
+ de E/S, registros externos a la CPU a través de los cuales se comunican
+ la CPU y los dispositivos, integrados en la
+\series bold
+controladora
+\series default
+ del dispositivo.
+ Tipos de puertos:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+De datos
+\series default
+: Lectura o escritura del dato a transferir.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+De control
+\series default
+: Donde la CPU escribe las órdenes.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+De estado
+\series default
+: Indica el estado en que se encuentra el dispositivo (por ejemplo,
+\emph on
+ready
+\emph default
+/
+\emph on
+not ready
+\emph default
+).
+\end_layout
+
+\begin_layout Standard
+La comunicación se realiza por
+\series bold
+buses
+\series default
+ o
+\series bold
+canales compartidos
+\series default
+, canales de comunicación en los que existen puntos de acceso en los que
+ un dispositivo puede conectarse para formar parte del bus y comunicarse
+ con el resto de dispositivos conectados.
+ El hecho de ser compartido implica que las señales transmitidas por un
+ dispositivo están disponibles para el resto.
+\end_layout
+
+\begin_layout Standard
+Si se conectan muchos dispositivos a un bus, sus prestaciones disminuyen,
+ al aumentar la latencia por el tiempo de coordinación, y se forma un
+\series bold
+cuello de botella
+\series default
+ o
+\series bold
+congestión
+\series default
+ por estar los dispositivos esperando a su turno para usar el bus.
+ Este problema se soluciona usando varios buses de distintas velocidades
+ organizados de forma jerárquica, con los dispositivos más exigentes conectados
+ a los buses más rápidos y cercanos al procesador.
+\end_layout
+
+\begin_layout Standard
+El
+\series bold
+control de acceso al bus
+\series default
+ o
+\series bold
+arbitraje del bus
+\series default
+ es un mecanismo para resolver conflictos en el uso del bus, como que varios
+ dispositivos intentasen realizar una operación a través del bus a la vez.
+ Este mecanismo decide qué dispositivo puede tomar control en cada instante.
+\end_layout
+
+\begin_layout Standard
+La forma más simple es establecer un
+\series bold
+amo
+\series default
+ del bus (
+\emph on
+master
+\emph default
+), normalmente la CPU, que es el único elemento que puede ordenar transferencias
+, y el resto de dispositivos deben enviar una señal al amo para realizarlas;
+ sin embargo esto no suele ser posible.
+\end_layout
+
+\begin_layout Standard
+Un bus está formado por:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Líneas de control
+\series default
+: para gestionar el acceso y uso de las líneas de información.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Líneas de información
+\series default
+\SpecialChar endofsentence
+
+\end_layout
+
+\begin_deeper
+\begin_layout Itemize
+
+\series bold
+Líneas de datos
+\series default
+: Para transmitir datos entre dispositivos.
+ El conjunto de estas es el
+\series bold
+bus de datos
+\series default
+, y su cardinal es la
+\series bold
+anchura del bus de datos
+\series default
+, factor clave para determinar las prestaciones del sistema.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Líneas de dirección
+\series default
+: Para determinar la fuente o destino del dato.
+ El conjunto de estas líneas es el
+\series bold
+bus de direcciones
+\series default
+, y su cardinal es la
+\series bold
+anchura del bus de direcciones
+\series default
+, que determina el número de direcciones disponibles y por tanto el máximo
+ de memoria y puertos direccionables.
+\end_layout
+
+\end_deeper
+\begin_layout Standard
+Las líneas de información pueden ser
+\series bold
+multiplexadas
+\series default
+, si se usa el mismo conjunto de líneas para direcciones y datos en instantes
+ distintos definidos por un protocolo, o
+\series bold
+dedicadas
+\series default
+, en las que cada grupo de líneas tiene una función específica.
+\end_layout
+
+\begin_layout Standard
+La
+\series bold
+anchura del bus
+\series default
+ es el total de líneas de información, y distinguimos entre
+\series bold
+buses en serie
+\series default
+, con una sola línea de información, y
+\series bold
+buses en paralelo
+\series default
+, con varias líneas transmitiendo bits simultáneamente.
+\end_layout
+
+\begin_layout Standard
+La
+\series bold
+longitud del bus
+\series default
+ es su longitud física, desde menos de un metro hasta cientos de metros.
+ Los eventos en el bus se coordinan con una
+\series bold
+temporización
+\series default
+, que puede ser:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Síncrona
+\series default
+: Una de las líneas de control es de reloj, y en esta se transmite una secuencia
+ alterna de unos y ceros a intervalos iguales que marcan cuándo suceden
+ los eventos.
+ El tiempo entre dos flancos del mismo tipo es el
+\series bold
+tiempo de ciclo de reloj
+\series default
+ o
+\series bold
+ciclo de bus
+\series default
+.
+\begin_inset Newline newline
+\end_inset
+
+Estos protocolos permiten un elevado ancho de banda, pero a cambio todos
+ los dispositivos deben funcionar a la misma frecuencia y puede aparecer
+ un problema por
+\series bold
+sesgo de reloj
+\series default
+, la diferencia de tiempo entre que dos elementos ven un flanco de reloj,
+ por lo que la señal de reloj debe ser encauzada cuidadosamente para minimizar
+ el sesgo.
+ Por ello el bus tiene un tamaño limitado.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Asíncrona
+\series default
+: No hay señal de reloj, por lo que el bus puede ser todo lo largo que que
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+-
+\end_layout
+
+\end_inset
+
+ra
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+-
+\end_layout
+
+\end_inset
+
+mos, y podemos conectar dispositivos con distintas frecuencias de funcionameinto
+s.
+ Sin embargo, son más lentos que los síncronos, necesitan más líneas de
+ control y puede haber fallos de sincronización.
+ Se usa un
+\series bold
+protocolo de presentación
+\series default
+ (
+\emph on
+handshaking
+\emph default
+) con una serie de pasos de modo que emisor y receptor solo proceden al
+ siguiente paso si están de acuerdo.
+\end_layout
+
+\begin_layout Standard
+La
+\series bold
+frecuencia de funcionamiento
+\series default
+ de un bus síncrono es la de la señal de reloj que rige las transferencias.
+ El
+\series bold
+ancho de banda
+\series default
+ (
+\emph on
+bandwidth
+\emph default
+)
+\series bold
+teórico
+\series default
+ es la cantidad de información que puede ser transmitida por un bus, en
+ cantidad de información por unidad de tiempo.
+ Su valor en bytes por segundo es
+\begin_inset Formula $\frac{fn}{8}$
+\end_inset
+
+, donde
+\begin_inset Formula $n$
+\end_inset
+
+ es la anchura del bus de datos y
+\begin_inset Formula $f$
+\end_inset
+
+ es la frecuencia de funcionamiento en hercios.
+ Por su parte, el
+\series bold
+ancho de banda efectivo
+\series default
+ se refiere a la cantidad de información por unidad de tiempo que realmente
+ se transmite, pues puede ser necesario dedicar varios ciclos para el protocolo
+ de acceso y el arbitraje del bus.
+\end_layout
+
+\begin_layout Section
+Direccionamiento
+\end_layout
+
+\begin_layout Standard
+El acceso a los dispositivos se puede hacer de dos formas, que afectan al
+ bus de direcciones y a la forma de programarlos:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+E/S mapeada en memoria
+\series default
+: Parte del espacio de direcciones de memoria se asocia a los dispositivos
+ de E/S.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+E/S aislada
+\series default
+: Cada puerto de un dispositivo tiene un
+\series bold
+número de puerto
+\series default
+, al que se accede con instrucciones de la ISA específicas, y estos números
+ forman un espacio de direcciones de E/S dedicado.
+\end_layout
+
+\begin_layout Standard
+La E/S aislada no consume parte del espacio de direcciones de memoria, lo
+ que era útil en los procesadores de 8 y 16 bits como Intel 8086 que tenían
+ un espacio de direcciones limitado.
+ Sin embargo, supone mayor complejidad de la CPU por tener que implementar
+ instrucciones de E/S adicionales, y resulta en un menor repertorio de instrucci
+ones para realizar estas operaciones.
+\end_layout
+
+\begin_layout Section
+Manejo de la E/S
+\end_layout
+
+\begin_layout Standard
+La técnica más simple es el
+\series bold
+sondeo
+\series default
+ (
+\emph on
+polling
+\emph default
+),
+\series bold
+encuesta
+\series default
+ o
+\series bold
+escrutinio
+\series default
+, en la el procesador
+\begin_inset Quotes cld
+\end_inset
+
+sondea
+\begin_inset Quotes crd
+\end_inset
+
+ los puertos para, una vez detectado un cambio de estado, actuar en consecuencia.
+ La encuesta puede ser:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Continua
+\series default
+ (
+\series bold
+espera activa
+\series default
+): El procesador se dedica exclusivamente a esto para detectar un cambio
+ de estado.
+ Sólo es permisible en dispositivos dedicados (sistemas empotrados).
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Periódica
+\series default
+: Se sondea cada cierta cantidad de tiempo.
+ Lo habitual es usarla sólo para algunos dispositivos como el ratón.
+\end_layout
+
+\begin_layout Standard
+El sondeo es la técnica con menor latencia, pero también supone una gran
+ pérdida de tiempo de CPU, por lo que en la práctica los dispositivos se
+ manejan por
+\series bold
+interrupciones
+\series default
+: La CPU encarga al dispositivo una transferencia y continúa haciendo otras
+ cosas, y cuando la tarea termina, el dispositivo avisa a la CPU mediante
+ una interrupción externa.
+ Entonces la CPU:
+\end_layout
+
+\begin_layout Itemize
+Deja automáticamente lo que esté haciendo.
+\end_layout
+
+\begin_layout Itemize
+Identifica qué dispositivo ha enviado la interrupción.
+ Para ello, bien existe una línea de interrupción dedicada para cada dispositivo
+, como ocurre en MIPS, o se activa una línea de interrupción única y el
+ dispositivo se identifica insertando un
+\series bold
+número de interrupción
+\series default
+ en el bus de datos de la CPU, como ocurre en IA32.
+\end_layout
+
+\begin_layout Itemize
+Salta a la
+\series bold
+rutina de servicio de la interrupción
+\series default
+ (
+\series bold
+RSI
+\series default
+) o
+\series bold
+manejador
+\series default
+\SpecialChar endofsentence
+ Este puede estar en una dirección de memoria fija, como ocurre en MIPS,
+ y contener código para comprobar qué interrupción concreta se ha producido,
+ o puede saltar a una dirección variable indicada en una tabla de direcciones
+ indexada por el número de interrupción, como ocurre en IA32, lo que se
+ conoce como
+\series bold
+interrupciones vectorizadas
+\series default
+.
+\begin_inset Newline newline
+\end_inset
+
+Antes de saltar a esta rutina es necesario guardar, como mínimo, el contador
+ de programa y posiblemente el registro de estado para las condiciones (
+\emph on
+flags
+\emph default
+).
+ El resto de registros los puede guardar la propia rutina.
+\end_layout
+
+\begin_layout Itemize
+Una vez ejecutada la RSI, recupera el estado y reanuda el proceso interrumpido.
+\end_layout
+
+\begin_layout Standard
+Este método, si bien puede mejorar el rendimiento respecto al sondeo, también
+ puede incluso empeorarlo, por lo que normalmente se usa junto con DMA.
+\end_layout
+
+\begin_layout Standard
+El
+\series bold
+acceso directo a memoria
+\series default
+ o
+\series bold
+DMA
+\series default
+ (
+\emph on
+Direct Memory Access
+\emph default
+) es un mecanismo que permite la transferencia de datos desde un dispositivo
+ a memoria, o viceversa, sin intervención del procesador.
+ Para ello se una una
+\series bold
+controladora de DMA
+\series default
+ (normalmente varias), circuito especializado en transferir datos entre
+ dispositivos y memoria.
+ Esto conlleva que el bus tenga varios amos (CPU y DMA), por lo que es necesario
+ un sistema de arbitraje.
+ Para realizar una transferencia DMA:
+\end_layout
+
+\begin_layout Itemize
+La CPU inicializa la controladora de DMA con datos como origen y destino
+ de datos, número de bytes a transferir y sentido del desplazamiento (direccione
+s crecientes, decrecientes o fijas para origen y destino).
+\end_layout
+
+\begin_layout Itemize
+La controladora de DMA pide el bus, y cuando lo consigue va realizando las
+ operaciones solicitadas.
+\end_layout
+
+\begin_layout Itemize
+Finalmente, la controladora de DMA genera una interrupción indicando fin
+ de trans
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+-
+\end_layout
+
+\end_inset
+
+fe
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+-
+\end_layout
+
+\end_inset
+
+ren
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+-
+\end_layout
+
+\end_inset
+
+cia o error.
+\end_layout
+
+\begin_layout Section
+El sistema operativo
+\end_layout
+
+\begin_layout Standard
+Cuando arranca el ordenador, se realizan algunas comprobaciones y operaciones
+ iniciales y a continuación se carga el sistema operativo, que a su vez
+ carga los
+\emph on
+drivers
+\emph default
+ de los dispositivos, es decir, las rutinas de petición de E/S y las posibles
+ RSI asociadas.
+ Sólo el sistema operativo tiene conocimiento de los puertos, órdenes, etc.,
+ y por seguridad es el único que puede acceder a E/S, mientras que el resto
+ de programas deben solicitar sus servicios mediante
+\series bold
+llamadas al sistema
+\series default
+ (
+\emph on
+syscalls
+\emph default
+).
+\end_layout
+
+\end_body
+\end_document
diff --git a/etc/na.lyx b/etc/na.lyx
new file mode 100644
index 0000000..44a9476
--- /dev/null
+++ b/etc/na.lyx
@@ -0,0 +1,2030 @@
+#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 Section
+Registros
+\end_layout
+
+\begin_layout Standard
+\begin_inset Tabular
+<lyxtabular version="3" rows="12" columns="3">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Número
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Nombre ABI
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+Uso
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$zero
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Conectado al valor 0.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$at
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Para uso temporal por el ensamblador.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$2
+\family default
+,
+\family typewriter
+$3
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$v0
+\family default
+,
+\family typewriter
+$v1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Resultados de llamadas a procedimiento.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$4
+\family default
+–
+\family typewriter
+$7
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$a0
+\family default
+–
+\family typewriter
+$a3
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Parámetros de las llamadas a procedimiento.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$8
+\family default
+–
+\family typewriter
+$15
+\family default
+,
+\family typewriter
+$24
+\family default
+,
+\family typewriter
+$25
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$t0
+\family default
+–
+\family typewriter
+$t9
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Valores temporales.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$16
+\family default
+–
+\family typewriter
+$23
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$s0
+\family default
+–
+\family typewriter
+$s7
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Variables locales, preservadas entre llamadas.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$26
+\family default
+,
+\family typewriter
+$27
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$k0
+\family default
+,
+\family typewriter
+$k1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Reservados para su uso por el sistema operativo.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$28
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$gp
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Puntero al segmento de datos (no us.
+ en práct.).
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$29
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$sp
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Puntero de pila.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$30
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$fp
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Puntero de marco (no usado en prácticas).
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$31
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+$ra
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Dirección de retorno, preservada entre llamadas.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Además:
+\end_layout
+
+\begin_layout Itemize
+El coprocesador 0, de manejo de excepciones, posee los registros
+\family typewriter
+$8
+\family default
+ (
+\family typewriter
+vaddr
+\family default
+),
+\family typewriter
+$12
+\family default
+ (
+\family typewriter
+status
+\family default
+),
+\family typewriter
+$13
+\family default
+ (
+\family typewriter
+cause
+\family default
+) y
+\family typewriter
+$14
+\family default
+ (
+\family typewriter
+epc
+\family default
+), de 32 bits cada uno.
+\end_layout
+
+\begin_layout Itemize
+El coprocesador 1, de punto flotante, posee los registros
+\family typewriter
+$f0
+\family default
+–
+\family typewriter
+$f31
+\family default
+, de 32 bits cada uno, que representan un entero de simple precisión o se
+ combinan en parejas (nombradas como el registro de menor número, que será
+ par) para representar enteros de doble precisión.
+\end_layout
+
+\begin_layout Itemize
+El registro
+\family typewriter
+pc
+\family default
+ contiene la
+\emph on
+siguiente
+\emph default
+ instrucción a ejecutar.
+\end_layout
+
+\begin_layout Itemize
+Los registros
+\family typewriter
+hi
+\family default
+ y
+\family typewriter
+lo
+\family default
+ se combinan para representar un entero de 64 bits, usado en multiplicaciones.
+\end_layout
+
+\begin_layout Standard
+Al inicio de un procedimiento, se disminuye
+\family typewriter
+$sp
+\family default
+ tanto como sea necesario y se guardan, en las direcciones
+\family typewriter
+0($sp)
+\family default
+,
+\family typewriter
+4($sp)
+\family default
+, etc., si es necesario, el valor del registro
+\family typewriter
+$ra
+\family default
+ y el de los re
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+-
+\end_layout
+
+\end_inset
+
+gis
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+-
+\end_layout
+
+\end_inset
+
+tros
+\family typewriter
+$s
+\emph on
+x
+\family default
+\emph default
+ que vayamos a utilizar.
+ Al final, se vuelven a cargar estos valores en los registros correspondientes,
+ se aumenta
+\family typewriter
+$sp
+\family default
+ y se salta a la dirección apuntada por
+\family typewriter
+$ra
+\family default
+\SpecialChar endofsentence
+
+\end_layout
+
+\begin_layout Section
+Instrucciones
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Aritmético-lógicas:
+\series default
+
+\family typewriter
+add[i][u]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow R_{s}+Op2$
+\end_inset
+
+),
+\family typewriter
+and[i]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow R_{s}\land Op2$
+\end_inset
+
+),
+\family typewriter
+div[u]
+\family default
+ (
+\begin_inset Formula $LO\leftarrow\left\lfloor \frac{R_{s}}{R_{t}}\right\rfloor $
+\end_inset
+
+,
+\begin_inset Formula $HI\leftarrow R_{s}-R_{t}LO$
+\end_inset
+
+),
+\family typewriter
+madd[u]
+\family default
+ (
+\begin_inset Formula $HI:LO\leftarrow HI:LO+R_{s}\cdot R_{t}$
+\end_inset
+
+),
+\family typewriter
+msub[u]
+\family default
+ (
+\begin_inset Formula $HI:LO\leftarrow HI:LO-R_{s}\cdot R_{t}$
+\end_inset
+
+),
+\family typewriter
+mul
+\family default
+ (
+\begin_inset Formula $HI:LO\leftarrow R_{s}\cdot R_{t}$
+\end_inset
+
+, seguido de
+\begin_inset Formula $R_{d}\leftarrow LO$
+\end_inset
+
+, sin desbordamiento),
+\family typewriter
+mult[u]
+\family default
+ (
+\begin_inset Formula $HI:LO\leftarrow R_{s}\cdot R_{t}$
+\end_inset
+
+),
+\family typewriter
+nor
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow\neg(R_{s}\lor R_{t})$
+\end_inset
+
+),
+\family typewriter
+or[i]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow R_{s}+R_{t}$
+\end_inset
+
+),
+\family typewriter
+slt[i][u]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow\begin{cases}
+1 & \text{si }R_{s}<Op2\\
+0 & \text{si }R_{s}\geq Op2
+\end{cases}$
+\end_inset
+
+),
+\family typewriter
+sub[u]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow R_{s}-R_{t}$
+\end_inset
+
+),
+\family typewriter
+xor[i]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow R_{s}\text{ XOR }R_{t}$
+\end_inset
+
+).
+\begin_inset Newline newline
+\end_inset
+
+Parámetros:
+\begin_inset Formula $R_{d}$
+\end_inset
+
+,
+\begin_inset Formula $R_{s}$
+\end_inset
+
+ y
+\begin_inset Formula $Op2$
+\end_inset
+
+, donde
+\begin_inset Formula $Op2$
+\end_inset
+
+ es un inmediato si se añade
+\family typewriter
+i
+\family default
+ o un registro si no.
+ La
+\family typewriter
+u
+\family default
+ indica que se ignora el posible desbordamiento, salvo en instrucciones
+ de multiplicación, en cuyo caso indica que la multiplicación es sin signo.
+ Las operaciones lógicas son bit a bit.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+De desplazamiento de bits:
+\series default
+
+\family typewriter
+sll[v]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow R_{s}<<Op2$
+\end_inset
+
+),
+\family typewriter
+sra[v]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow R_{s}>>Op2$
+\end_inset
+
+),
+\family typewriter
+srl[v]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow(unsigned)R_{s}>>Op2$
+\end_inset
+
+).
+ Parámetros:
+\begin_inset Formula $R_{d}$
+\end_inset
+
+,
+\begin_inset Formula $R_{s}$
+\end_inset
+
+ y
+\begin_inset Formula $Op2$
+\end_inset
+
+, donde
+\begin_inset Formula $Op2$
+\end_inset
+
+ es un registro si se añade
+\family typewriter
+v
+\family default
+ o un inmediato si no.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+De punto flotante:
+\series default
+
+\family typewriter
+abs.[d|s]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow|R_{s}|$
+\end_inset
+
+),
+\family typewriter
+add.[d|s]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow R_{s}+R_{t}$
+\end_inset
+
+),
+\begin_inset Newline newline
+\end_inset
+
+
+\family typewriter
+c.[eq|le|lt].[d|s]
+\family default
+ (
+\begin_inset Formula $coproc1.cond[l]\leftarrow R_{s}[=|\leq|<]R_{t}$
+\end_inset
+
+),
+\family typewriter
+ceil.w.[d|s]
+\family default
+ (
+\begin_inset Formula $((int)R_{d})\leftarrow\lceil R_{s}\rceil$
+\end_inset
+
+),
+\family typewriter
+ cvt.[d.[s|w]|s.[d|w]|w.[d.s]]
+\begin_inset Newline newline
+\end_inset
+
+
+\family default
+(
+\begin_inset Formula $((double|float|int)R_{d})\leftarrow((double|float|int)R_{s})$
+\end_inset
+
+,
+\family typewriter
+ div.[d|s]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow\frac{R_{s}}{R_{t}}$
+\end_inset
+
+),
+\family typewriter
+floor.w.[d|s]
+\family default
+ (
+\begin_inset Formula $((int)R_{d})=\lfloor R_{s}\rfloor$
+\end_inset
+
+),
+\family typewriter
+mul.[d|s]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow R_{s}\cdot R_{t}$
+\end_inset
+
+),
+\family typewriter
+round.[d|s]
+\family default
+ (
+\begin_inset Formula $((int)R_{d})\leftarrow round(R_{s})$
+\end_inset
+
+),
+\family typewriter
+sqrt.[d|s]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow\sqrt{R_{s}}$
+\end_inset
+
+),
+\family typewriter
+sub.[d|s]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow R_{s}-R_{t}$
+\end_inset
+
+),
+\family typewriter
+trunc.w.[d|s]
+\family default
+ (
+\begin_inset Formula $((int)R_{d})\leftarrow\lfloor R_{s}\rfloor$
+\end_inset
+
+).
+
+\begin_inset Newline newline
+\end_inset
+
+Parámetros:
+\begin_inset Formula $l$
+\end_inset
+
+ opcional para
+\family typewriter
+c.[eq|le|lt].[d|s]
+\family default
+ (por defecto 0), seguido de
+\begin_inset Formula $R_{d}$
+\end_inset
+
+,
+\begin_inset Formula $R_{s}$
+\end_inset
+
+ y
+\begin_inset Formula $R_{t}$
+\end_inset
+
+ (sólo los que se indican en la descripción de instrucción).
+ Estos corresponden a los registros del coprocesador 1, tratados como de
+ simple precisión, si la instrucción termina en
+\family typewriter
+.s
+\family default
+, o parejas de estos, tratados como de doble precisión, si termina en
+\family typewriter
+.d
+\family default
+; sin embargo, el indicar
+\begin_inset Formula $float$
+\end_inset
+
+,
+\begin_inset Formula $double$
+\end_inset
+
+ o
+\begin_inset Formula $int$
+\end_inset
+
+ junto a estos indica que se trata de números en punto flotante de simple
+ precisión, de doble precisión (mediante parejas de registros) o enteros
+ de 32 bits (en los tres casos registros del coprocesador 1).
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+De salto:
+\series default
+
+\family typewriter
+bc1f
+\family default
+ (
+\begin_inset Formula $coproc1.cond[l]=0$
+\end_inset
+
+),
+\family typewriter
+bc1t
+\family default
+ (
+\begin_inset Formula $coproc1.cond[l]=1$
+\end_inset
+
+),
+\family typewriter
+beq
+\family default
+ (
+\begin_inset Formula $R_{s}=R_{t}$
+\end_inset
+
+),
+\family typewriter
+bgez[al]
+\family default
+ (
+\begin_inset Formula $R_{s}\geq0$
+\end_inset
+
+),
+\family typewriter
+bgtz
+\family default
+ (
+\begin_inset Formula $R_{s}>0$
+\end_inset
+
+),
+\family typewriter
+blez
+\family default
+ (
+\begin_inset Formula $R_{s}\leq0$
+\end_inset
+
+),
+\family typewriter
+bltz[al]
+\family default
+ (
+\begin_inset Formula $R_{s}<0$
+\end_inset
+
+),
+\family typewriter
+bne
+\family default
+ (
+\begin_inset Formula $R_{s}\neq R_{t}$
+\end_inset
+
+),
+\family typewriter
+j[al]
+\family default
+ (siempre).
+ Entre paréntesis se indica la condición necesaria para
+\begin_inset Formula $PC\leftarrow label$
+\end_inset
+
+.
+
+\family typewriter
+al
+\family default
+ además hace antes
+\begin_inset Formula $\mathtt{\$ra}\leftarrow PC$
+\end_inset
+
+.
+ Parámetros:
+\begin_inset Formula $l$
+\end_inset
+
+ opcional para
+\family typewriter
+bc1f
+\family default
+ o
+\family typewriter
+bc1t
+\family default
+ (por defecto 0) o uno o dos registros (
+\family typewriter
+\emph on
+Rs
+\emph default
+[,
+\emph on
+Rt
+\emph default
+]
+\family default
+) según requiera la condición, seguidos de
+\begin_inset Formula $label$
+\end_inset
+
+.
+\begin_inset Newline newline
+\end_inset
+
+También,
+\family typewriter
+jr Rs
+\family default
+ para
+\begin_inset Formula $PC\leftarrow R_{s}$
+\end_inset
+
+, o
+\family typewriter
+jalr [Rd, ]Rs
+\family default
+ (por defecto
+\begin_inset Formula $R_{d}=\mathtt{\$ra}$
+\end_inset
+
+) para antes hacer
+\begin_inset Formula $R_{d}\leftarrow PC$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+De excepción:
+\series default
+
+\family typewriter
+teq[i]
+\family default
+ (
+\begin_inset Formula $R_{s}=Op2$
+\end_inset
+
+),
+\family typewriter
+tge[i][u]
+\family default
+ (
+\begin_inset Formula $R_{s}\geq Op2$
+\end_inset
+
+),
+\family typewriter
+tlt[i][u]
+\family default
+ (
+\begin_inset Formula $R_{s}<Op2$
+\end_inset
+
+),
+\family typewriter
+tne[i]
+\family default
+ (
+\begin_inset Formula $R_{s}\neq Op2$
+\end_inset
+
+).
+ Entre paréntesis se indica la condición para provocar una excepción de
+ software.
+ Parámetros:
+\begin_inset Formula $R_{s}$
+\end_inset
+
+ y
+\begin_inset Formula $Op2$
+\end_inset
+
+, donde
+\begin_inset Formula $Op2$
+\end_inset
+
+ es un inmediato si se añade
+\family typewriter
+i
+\family default
+ o un registro si no.
+ La comparación es con signo salvo si se especifica
+\family typewriter
+u
+\family default
+.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+De acceso a memoria:
+\series default
+
+\family typewriter
+l[b][u]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow(s16|u16)Mem)$
+\end_inset
+
+),
+\family typewriter
+l[d|w]c1
+\begin_inset Newline newline
+\end_inset
+
+
+\family default
+(
+\begin_inset Formula $((double|float)R_{d})\leftarrow Mem$
+\end_inset
+
+),
+\family typewriter
+lh[u]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow(s16|u16)Mem$
+\end_inset
+
+),
+\family typewriter
+lw
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow(int)Mem$
+\end_inset
+
+),
+\family typewriter
+
+\begin_inset Newline newline
+\end_inset
+
+sb
+\family default
+ (
+\begin_inset Formula $(s8|u8)Mem\leftarrow R_{t}$
+\end_inset
+
+),
+\family typewriter
+s[d|w]c1
+\family default
+ (
+\begin_inset Formula $(double|float)Mem\leftarrow((double|float)R_{t})$
+\end_inset
+
+),
+\family typewriter
+
+\begin_inset Newline newline
+\end_inset
+
+sh
+\family default
+ (
+\begin_inset Formula $(s16|u16)Mem\leftarrow R_{t}$
+\end_inset
+
+),
+\family typewriter
+sw
+\family default
+ (
+\begin_inset Formula $(int)Mem\leftarrow R_{t}$
+\end_inset
+
+).
+ Parámetros:
+\family typewriter
+
+\begin_inset Formula $R_{t}$
+\end_inset
+
+, [
+\begin_inset Formula $despl.$
+\end_inset
+
+][(
+\begin_inset Formula $R_{s}$
+\end_inset
+
+)]
+\family default
+ (por defecto,
+\begin_inset Formula $despl.=0$
+\end_inset
+
+ y
+\begin_inset Formula $R_{s}=\mathtt{\$0}$
+\end_inset
+
+), con
+\begin_inset Formula $Mem=*(despl.+R_{s})$
+\end_inset
+
+.
+\family typewriter
+
+\begin_inset Newline newline
+\end_inset
+
+ll
+\family default
+ es como
+\family typewriter
+lw
+\family default
+ pero, en sistemas multinúcleo funciona con
+\family typewriter
+sc
+\family default
+, similar a
+\family typewriter
+sw
+\family default
+, para lectura-modificación-escritura atómica.
+
+\family typewriter
+lwl
+\family default
+ y
+\family typewriter
+lwr
+\family default
+ cargan de 1 a 4 bytes, justificados respectivamente a izquierda o derecha,
+ desde la dirección dada hasta el byte, respectivamente, menos o más significati
+vo de la palabra.
+
+\family typewriter
+swl
+\family default
+ y
+\family typewriter
+swr
+\family default
+ hacen lo mismo pero al revés (almacenan).
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+De transferencia:
+\series default
+
+\family typewriter
+lui
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow2^{16}\cdot imm$
+\end_inset
+
+),
+\family typewriter
+mfc0
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow E_{s}$
+\end_inset
+
+),
+\family typewriter
+mfc1
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow F_{s}$
+\end_inset
+
+),
+\family typewriter
+mfhi
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow HI$
+\end_inset
+
+),
+\family typewriter
+mflo
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow LO$
+\end_inset
+
+),
+\family typewriter
+mov.d
+\family default
+ (
+\begin_inset Formula $D_{d}\leftarrow D_{s}$
+\end_inset
+
+),
+\family typewriter
+mov.s
+\family default
+ (
+\begin_inset Formula $F_{d}\leftarrow F_{s}$
+\end_inset
+
+),
+\family typewriter
+movf[|.d|.s]
+\family default
+ (
+\begin_inset Formula $coproc1.cond[l]=0:G_{d}\leftarrow G_{s}$
+\end_inset
+
+),
+\family typewriter
+movt[|.d|.s]
+\family default
+ (
+\begin_inset Formula $coproc1.cond[l]=1:G_{d}\leftarrow G_{s}$
+\end_inset
+
+),
+\family typewriter
+movn[|.d|.s]
+\family default
+ (
+\begin_inset Formula $R_{t}\neq0:G_{d}\leftarrow G_{s}$
+\end_inset
+
+),
+\family typewriter
+movz[|.d|.s]
+\family default
+ (
+\begin_inset Formula $R_{t}=0:G_{d}\leftarrow G_{s}$
+\end_inset
+
+),
+\family typewriter
+mtc0
+\family default
+ (
+\begin_inset Formula $E_{t}\leftarrow R_{s}$
+\end_inset
+
+),
+\family typewriter
+mtc1
+\family default
+ (
+\begin_inset Formula $F_{t}\leftarrow R_{s}$
+\end_inset
+
+),
+\family typewriter
+mthi
+\family default
+ (
+\begin_inset Formula $HI\leftarrow R_{s}$
+\end_inset
+
+),
+\family typewriter
+mtlo
+\family default
+ (
+\begin_inset Formula $LO\leftarrow R_{s}$
+\end_inset
+
+).
+
+\begin_inset Newline newline
+\end_inset
+
+Parámetros: En orden,
+\begin_inset Formula $X_{d}$
+\end_inset
+
+,
+\begin_inset Formula $X_{s}$
+\end_inset
+
+,
+\begin_inset Formula $X_{t}$
+\end_inset
+
+ e
+\begin_inset Formula $imm$
+\end_inset
+
+ (de estos sólo los que aparezcan en la des
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+-
+\end_layout
+
+\end_inset
+
+crip
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+-
+\end_layout
+
+\end_inset
+
+ción), más
+\family typewriter
+l
+\family default
+ opcional (por defecto 0) para
+\family typewriter
+movf[|.d|.s]
+\family default
+ y
+\family typewriter
+movt[|.d|.s]
+\family default
+.
+ En la descripción, la
+\begin_inset Formula $X$
+\end_inset
+
+ aparece como una
+\begin_inset Formula $R$
+\end_inset
+
+ para registros del procesador,
+\begin_inset Formula $E$
+\end_inset
+
+ si son del coprocesador 0,
+\begin_inset Formula $F$
+\end_inset
+
+ si son del 1 y
+\begin_inset Formula $D$
+\end_inset
+
+ si son parejas de registros del 1 para doble precisión, y
+\begin_inset Formula $G$
+\end_inset
+
+ indica
+\begin_inset Formula $F$
+\end_inset
+
+ cuando la instrucción acaba en
+\family typewriter
+.s
+\family default
+,
+\begin_inset Formula $D$
+\end_inset
+
+ cuando acaba en
+\family typewriter
+.d
+\family default
+ o
+\begin_inset Formula $R$
+\end_inset
+
+ en caso contrario.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Miscelánea:
+\series default
+
+\family typewriter
+break [imm]
+\family default
+ (termina la ejecución con una excepción, con código especificado opcionalmente
+ por
+\family typewriter
+imm
+\family default
+),
+\family typewriter
+clo Rd, Rs
+\family default
+ (establece
+\begin_inset Formula $R_{d}$
+\end_inset
+
+ como el número de 1s desde el bit más significativo de
+\begin_inset Formula $R_{s}$
+\end_inset
+
+),
+\family typewriter
+clz Rd, Rs
+\family default
+ (igual pero con 0s),
+\family typewriter
+eret
+\family default
+ (vuelve de una excepción,
+\begin_inset Formula $PC\leftarrow\mathtt{epc}$
+\end_inset
+
+,
+\begin_inset Formula $\mathtt{status}[1]\leftarrow0$
+\end_inset
+
+),
+\family typewriter
+nop
+\family default
+ (no hace nada),
+\family typewriter
+syscall
+\family default
+ (realiza una llamada al sistema).
+\end_layout
+
+\begin_layout Section
+Pseudoinstrucciones
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Aritmético-lógicas
+\series default
+: Poder omitir
+\begin_inset Formula $R_{d}$
+\end_inset
+
+ si
+\begin_inset Formula $R_{d}=R_{s}$
+\end_inset
+
+.
+ Poder especificar un inmediato mayor que
+\begin_inset Formula $2^{16}-1$
+\end_inset
+
+ (o fuera del rango
+\begin_inset Formula $[-2^{15},2^{15}-1]$
+\end_inset
+
+ si es con signo).
+
+\family typewriter
+abs Rd, Rs
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow|R_{s}|$
+\end_inset
+
+).
+
+\family typewriter
+div[u]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow\left\lfloor \frac{R_{s}}{R_{t}}\right\rfloor $
+\end_inset
+
+).
+
+\family typewriter
+mulo[u]
+\family default
+ (como
+\family typewriter
+mul[u]
+\family default
+ pero con detección de desbordamiento).
+
+\family typewriter
+neg[u]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow-R_{s}$
+\end_inset
+
+, la
+\family typewriter
+u
+\family default
+ indica que no se detectan desbordamientos).
+
+\family typewriter
+not
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow\neg R_{s}$
+\end_inset
+
+).
+
+\family typewriter
+rem[u]
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow R_{s}-R_{t}\left\lfloor \frac{R_{s}}{R_{t}}\right\rfloor $
+\end_inset
+
+).
+
+\family typewriter
+seq
+\family default
+,
+\family typewriter
+sge[u]
+\family default
+,
+\family typewriter
+sgt[u]
+\family default
+,
+\family typewriter
+sle[u]
+\family default
+,
+\family typewriter
+sne
+\family default
+ (
+\begin_inset Formula $R_{d}=\begin{cases}
+1 & \text{si }R_{s}[=|\geq|>|\leq|\neq]Op2\\
+0 & \text{si }R_{s}[\neq|<|\leq|>|=]Op2
+\end{cases}$
+\end_inset
+
+).
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+De desplazamiento de bits
+\series default
+:
+\family typewriter
+ro[l|r] Rd, Rs, Op2
+\family default
+ (rota los bits de
+\begin_inset Formula $R_{s}$
+\end_inset
+
+, respectivamente a izquierda o derecha, en un número de bits indicado por
+
+\begin_inset Formula $Op2$
+\end_inset
+
+, que puede ser registro o inmediato).
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+De salto
+\series default
+: Poder comparar con inmediatos y de tamaño arbitrario.
+
+\family typewriter
+b label
+\family default
+ (incondicional).
+
+\family typewriter
+bge[u]
+\family default
+ (
+\begin_inset Formula $R_{s}\geq Op2$
+\end_inset
+
+),
+\family typewriter
+bgt[u]
+\family default
+ (
+\begin_inset Formula $R_{s}>Op2$
+\end_inset
+
+),
+\family typewriter
+ble[u]
+\family default
+ (
+\begin_inset Formula $R_{s}\leq Op2$
+\end_inset
+
+) y
+\family typewriter
+blt[u]
+\family default
+ (
+\begin_inset Formula $R_{s}<Op2$
+\end_inset
+
+), donde la
+\family typewriter
+u
+\family default
+ indica que la comparación es sin signo.
+
+\family typewriter
+beqz
+\family default
+ (
+\begin_inset Formula $R_{s}=0$
+\end_inset
+
+) y
+\family typewriter
+bnez
+\family default
+ (
+\begin_inset Formula $R_{s}\neq0$
+\end_inset
+
+).
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+De acceso a memoria
+\series default
+: Poder especificar un desplazamiento fuera del rango
+\begin_inset Formula $[-2^{15},2^{15}-1]$
+\end_inset
+
+, o una etiqueta, o la suma de
+\begin_inset Formula $etiqueta\mathtt{+}despl.$
+\end_inset
+
+.
+\family typewriter
+
+\begin_inset Newline newline
+\end_inset
+
+l.[d|s]
+\family default
+ (
+\begin_inset Formula $((double|float)R_{d})\leftarrow(double|float)Mem$
+\end_inset
+
+).
+
+\family typewriter
+ld
+\family default
+ (
+\begin_inset Formula $R_{d+1}:R_{d}\leftarrow(long)Mem$
+\end_inset
+
+).
+ Análogamente se definen
+\family typewriter
+s.[d|s]
+\family default
+ y
+\family typewriter
+sd
+\family default
+.
+ También
+\family typewriter
+ulh[u]
+\family default
+,
+\family typewriter
+ulw
+\family default
+,
+\family typewriter
+ush
+\family default
+,
+\family typewriter
+usw
+\family default
+ (similares, respectivamente, a
+\family typewriter
+lh[u]
+\family default
+,
+\family typewriter
+lw
+\family default
+,
+\family typewriter
+sh
+\family default
+ y
+\family typewriter
+sw
+\family default
+ pero no requieren que la dirección dada sea múltiplo del tamaño del dato
+ a mover).
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+De transferencia
+\series default
+:
+\family typewriter
+la
+\family default
+ (similar a
+\family typewriter
+lb
+\family default
+ pero carga la
+\emph on
+dirección
+\emph default
+ dada en vez de su contenido).
+
+\family typewriter
+li
+\family default
+ (
+\begin_inset Formula $R_{d}\leftarrow imm$
+\end_inset
+
+, con
+\begin_inset Formula $imm$
+\end_inset
+
+ de tamaño arbitrario).
+
+\family typewriter
+mfc1.d
+\family default
+ (
+\begin_inset Formula $R_{d+1}:R_{d}\leftarrow D_{s}$
+\end_inset
+
+).
+
+\family typewriter
+mtc1.d
+\family default
+ (
+\begin_inset Formula $D_{s}\leftarrow R_{t+1}:R_{t}$
+\end_inset
+
+).
+\end_layout
+
+\end_body
+\end_document
diff --git a/etc/pegado1.png b/etc/pegado1.png
new file mode 100644
index 0000000..e082650
--- /dev/null
+++ b/etc/pegado1.png
Binary files differ
diff --git a/etc/pegado10.png b/etc/pegado10.png
new file mode 100644
index 0000000..e7fe543
--- /dev/null
+++ b/etc/pegado10.png
Binary files differ
diff --git a/etc/pegado11.png b/etc/pegado11.png
new file mode 100644
index 0000000..deb255a
--- /dev/null
+++ b/etc/pegado11.png
Binary files differ
diff --git a/etc/pegado12.png b/etc/pegado12.png
new file mode 100644
index 0000000..4aba998
--- /dev/null
+++ b/etc/pegado12.png
Binary files differ
diff --git a/etc/pegado13.png b/etc/pegado13.png
new file mode 100644
index 0000000..6984489
--- /dev/null
+++ b/etc/pegado13.png
Binary files differ
diff --git a/etc/pegado14.png b/etc/pegado14.png
new file mode 100644
index 0000000..66e370f
--- /dev/null
+++ b/etc/pegado14.png
Binary files differ
diff --git a/etc/pegado15.png b/etc/pegado15.png
new file mode 100644
index 0000000..0df67e6
--- /dev/null
+++ b/etc/pegado15.png
Binary files differ
diff --git a/etc/pegado16.png b/etc/pegado16.png
new file mode 100644
index 0000000..06d3243
--- /dev/null
+++ b/etc/pegado16.png
Binary files differ
diff --git a/etc/pegado17.png b/etc/pegado17.png
new file mode 100644
index 0000000..524e2f8
--- /dev/null
+++ b/etc/pegado17.png
Binary files differ
diff --git a/etc/pegado18.png b/etc/pegado18.png
new file mode 100644
index 0000000..b550627
--- /dev/null
+++ b/etc/pegado18.png
Binary files differ
diff --git a/etc/pegado19.png b/etc/pegado19.png
new file mode 100644
index 0000000..14bd712
--- /dev/null
+++ b/etc/pegado19.png
Binary files differ
diff --git a/etc/pegado2.png b/etc/pegado2.png
new file mode 100644
index 0000000..16b592a
--- /dev/null
+++ b/etc/pegado2.png
Binary files differ
diff --git a/etc/pegado20.png b/etc/pegado20.png
new file mode 100644
index 0000000..1a0576c
--- /dev/null
+++ b/etc/pegado20.png
Binary files differ
diff --git a/etc/pegado21.png b/etc/pegado21.png
new file mode 100644
index 0000000..fae9c4c
--- /dev/null
+++ b/etc/pegado21.png
Binary files differ
diff --git a/etc/pegado22.png b/etc/pegado22.png
new file mode 100644
index 0000000..b83750d
--- /dev/null
+++ b/etc/pegado22.png
Binary files differ
diff --git a/etc/pegado23.png b/etc/pegado23.png
new file mode 100644
index 0000000..c8ee106
--- /dev/null
+++ b/etc/pegado23.png
Binary files differ
diff --git a/etc/pegado24.png b/etc/pegado24.png
new file mode 100644
index 0000000..8322367
--- /dev/null
+++ b/etc/pegado24.png
Binary files differ
diff --git a/etc/pegado25.png b/etc/pegado25.png
new file mode 100644
index 0000000..be728d1
--- /dev/null
+++ b/etc/pegado25.png
Binary files differ
diff --git a/etc/pegado26.png b/etc/pegado26.png
new file mode 100644
index 0000000..f2c318f
--- /dev/null
+++ b/etc/pegado26.png
Binary files differ
diff --git a/etc/pegado27.png b/etc/pegado27.png
new file mode 100644
index 0000000..5919338
--- /dev/null
+++ b/etc/pegado27.png
Binary files differ
diff --git a/etc/pegado28.png b/etc/pegado28.png
new file mode 100644
index 0000000..8265520
--- /dev/null
+++ b/etc/pegado28.png
Binary files differ
diff --git a/etc/pegado29.png b/etc/pegado29.png
new file mode 100644
index 0000000..8e38d87
--- /dev/null
+++ b/etc/pegado29.png
Binary files differ
diff --git a/etc/pegado3.png b/etc/pegado3.png
new file mode 100644
index 0000000..1f1a8e5
--- /dev/null
+++ b/etc/pegado3.png
Binary files differ
diff --git a/etc/pegado30.png b/etc/pegado30.png
new file mode 100644
index 0000000..c0d7714
--- /dev/null
+++ b/etc/pegado30.png
Binary files differ
diff --git a/etc/pegado31.png b/etc/pegado31.png
new file mode 100644
index 0000000..4b68285
--- /dev/null
+++ b/etc/pegado31.png
Binary files differ
diff --git a/etc/pegado32.png b/etc/pegado32.png
new file mode 100644
index 0000000..2b6aa45
--- /dev/null
+++ b/etc/pegado32.png
Binary files differ
diff --git a/etc/pegado33.png b/etc/pegado33.png
new file mode 100644
index 0000000..4fb20f2
--- /dev/null
+++ b/etc/pegado33.png
Binary files differ
diff --git a/etc/pegado34.png b/etc/pegado34.png
new file mode 100644
index 0000000..173d636
--- /dev/null
+++ b/etc/pegado34.png
Binary files differ
diff --git a/etc/pegado35.png b/etc/pegado35.png
new file mode 100644
index 0000000..b1170e8
--- /dev/null
+++ b/etc/pegado35.png
Binary files differ
diff --git a/etc/pegado36.png b/etc/pegado36.png
new file mode 100644
index 0000000..ae92763
--- /dev/null
+++ b/etc/pegado36.png
Binary files differ
diff --git a/etc/pegado37.png b/etc/pegado37.png
new file mode 100644
index 0000000..c5c5950
--- /dev/null
+++ b/etc/pegado37.png
Binary files differ
diff --git a/etc/pegado38.png b/etc/pegado38.png
new file mode 100644
index 0000000..cdd0e06
--- /dev/null
+++ b/etc/pegado38.png
Binary files differ
diff --git a/etc/pegado39.png b/etc/pegado39.png
new file mode 100644
index 0000000..ba8d4dd
--- /dev/null
+++ b/etc/pegado39.png
Binary files differ
diff --git a/etc/pegado4.png b/etc/pegado4.png
new file mode 100644
index 0000000..6ec2ae1
--- /dev/null
+++ b/etc/pegado4.png
Binary files differ
diff --git a/etc/pegado40.png b/etc/pegado40.png
new file mode 100644
index 0000000..4ed2b75
--- /dev/null
+++ b/etc/pegado40.png
Binary files differ
diff --git a/etc/pegado41.png b/etc/pegado41.png
new file mode 100644
index 0000000..5ae2c6d
--- /dev/null
+++ b/etc/pegado41.png
Binary files differ
diff --git a/etc/pegado42.png b/etc/pegado42.png
new file mode 100644
index 0000000..14ec3a0
--- /dev/null
+++ b/etc/pegado42.png
Binary files differ
diff --git a/etc/pegado43.png b/etc/pegado43.png
new file mode 100644
index 0000000..dc9a751
--- /dev/null
+++ b/etc/pegado43.png
Binary files differ
diff --git a/etc/pegado44.png b/etc/pegado44.png
new file mode 100644
index 0000000..3861a71
--- /dev/null
+++ b/etc/pegado44.png
Binary files differ
diff --git a/etc/pegado5.png b/etc/pegado5.png
new file mode 100644
index 0000000..9687f75
--- /dev/null
+++ b/etc/pegado5.png
Binary files differ
diff --git a/etc/pegado6.png b/etc/pegado6.png
new file mode 100644
index 0000000..37cee54
--- /dev/null
+++ b/etc/pegado6.png
Binary files differ
diff --git a/etc/pegado7.png b/etc/pegado7.png
new file mode 100644
index 0000000..69b5307
--- /dev/null
+++ b/etc/pegado7.png
Binary files differ
diff --git a/etc/pegado8.png b/etc/pegado8.png
new file mode 100644
index 0000000..2a17519
--- /dev/null
+++ b/etc/pegado8.png
Binary files differ
diff --git a/etc/pegado9.png b/etc/pegado9.png
new file mode 100644
index 0000000..3aa281d
--- /dev/null
+++ b/etc/pegado9.png
Binary files differ