diff options
| author | Juan Marín Noguera <juan.marinn@um.es> | 2020-02-20 16:07:37 +0100 |
|---|---|---|
| committer | Juan Marín Noguera <juan.marinn@um.es> | 2020-02-20 16:07:37 +0100 |
| commit | c6f69b3f45b81d19b8eeb87184bf16e6de0fad24 (patch) | |
| tree | 92d4e853e031c3ff144a72a2326312cf58e8dae3 /etc | |
| parent | 1eea228b43c3e243c1e1e9baf21d5d0d3f970152 (diff) | |
2
Diffstat (limited to 'etc')
| -rw-r--r-- | etc/SR_Flip-flop_Diagram.svg | 73 | ||||
| -rw-r--r-- | etc/n.lyx | 241 | ||||
| -rw-r--r-- | etc/n1.lyx | 741 | ||||
| -rw-r--r-- | etc/n2.lyx | 1105 | ||||
| -rw-r--r-- | etc/n3.lyx | 2537 | ||||
| -rw-r--r-- | etc/n4.lyx | 662 | ||||
| -rw-r--r-- | etc/n5.lyx | 315 | ||||
| -rw-r--r-- | etc/n6.lyx | 717 | ||||
| -rw-r--r-- | etc/na.lyx | 2030 | ||||
| -rw-r--r-- | etc/pegado1.png | bin | 0 -> 4772 bytes | |||
| -rw-r--r-- | etc/pegado10.png | bin | 0 -> 2502 bytes | |||
| -rw-r--r-- | etc/pegado11.png | bin | 0 -> 17873 bytes | |||
| -rw-r--r-- | etc/pegado12.png | bin | 0 -> 6315 bytes | |||
| -rw-r--r-- | etc/pegado13.png | bin | 0 -> 5951 bytes | |||
| -rw-r--r-- | etc/pegado14.png | bin | 0 -> 11702 bytes | |||
| -rw-r--r-- | etc/pegado15.png | bin | 0 -> 8158 bytes | |||
| -rw-r--r-- | etc/pegado16.png | bin | 0 -> 10551 bytes | |||
| -rw-r--r-- | etc/pegado17.png | bin | 0 -> 3484 bytes | |||
| -rw-r--r-- | etc/pegado18.png | bin | 0 -> 5923 bytes | |||
| -rw-r--r-- | etc/pegado19.png | bin | 0 -> 6716 bytes | |||
| -rw-r--r-- | etc/pegado2.png | bin | 0 -> 7612 bytes | |||
| -rw-r--r-- | etc/pegado20.png | bin | 0 -> 7896 bytes | |||
| -rw-r--r-- | etc/pegado21.png | bin | 0 -> 5658 bytes | |||
| -rw-r--r-- | etc/pegado22.png | bin | 0 -> 7366 bytes | |||
| -rw-r--r-- | etc/pegado23.png | bin | 0 -> 10214 bytes | |||
| -rw-r--r-- | etc/pegado24.png | bin | 0 -> 18669 bytes | |||
| -rw-r--r-- | etc/pegado25.png | bin | 0 -> 26294 bytes | |||
| -rw-r--r-- | etc/pegado26.png | bin | 0 -> 9758 bytes | |||
| -rw-r--r-- | etc/pegado27.png | bin | 0 -> 11487 bytes | |||
| -rw-r--r-- | etc/pegado28.png | bin | 0 -> 4152 bytes | |||
| -rw-r--r-- | etc/pegado29.png | bin | 0 -> 23333 bytes | |||
| -rw-r--r-- | etc/pegado3.png | bin | 0 -> 7715 bytes | |||
| -rw-r--r-- | etc/pegado30.png | bin | 0 -> 10585 bytes | |||
| -rw-r--r-- | etc/pegado31.png | bin | 0 -> 14669 bytes | |||
| -rw-r--r-- | etc/pegado32.png | bin | 0 -> 5480 bytes | |||
| -rw-r--r-- | etc/pegado33.png | bin | 0 -> 80485 bytes | |||
| -rw-r--r-- | etc/pegado34.png | bin | 0 -> 78792 bytes | |||
| -rw-r--r-- | etc/pegado35.png | bin | 0 -> 7502 bytes | |||
| -rw-r--r-- | etc/pegado36.png | bin | 0 -> 2818 bytes | |||
| -rw-r--r-- | etc/pegado37.png | bin | 0 -> 7794 bytes | |||
| -rw-r--r-- | etc/pegado38.png | bin | 0 -> 13041 bytes | |||
| -rw-r--r-- | etc/pegado39.png | bin | 0 -> 9438 bytes | |||
| -rw-r--r-- | etc/pegado4.png | bin | 0 -> 9168 bytes | |||
| -rw-r--r-- | etc/pegado40.png | bin | 0 -> 5357 bytes | |||
| -rw-r--r-- | etc/pegado41.png | bin | 0 -> 12205 bytes | |||
| -rw-r--r-- | etc/pegado42.png | bin | 0 -> 5956 bytes | |||
| -rw-r--r-- | etc/pegado43.png | bin | 0 -> 9568 bytes | |||
| -rw-r--r-- | etc/pegado44.png | bin | 0 -> 7901 bytes | |||
| -rw-r--r-- | etc/pegado5.png | bin | 0 -> 2284 bytes | |||
| -rw-r--r-- | etc/pegado6.png | bin | 0 -> 2943 bytes | |||
| -rw-r--r-- | etc/pegado7.png | bin | 0 -> 8349 bytes | |||
| -rw-r--r-- | etc/pegado8.png | bin | 0 -> 2610 bytes | |||
| -rw-r--r-- | etc/pegado9.png | bin | 0 -> 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 Binary files differnew file mode 100644 index 0000000..e082650 --- /dev/null +++ b/etc/pegado1.png diff --git a/etc/pegado10.png b/etc/pegado10.png Binary files differnew file mode 100644 index 0000000..e7fe543 --- /dev/null +++ b/etc/pegado10.png diff --git a/etc/pegado11.png b/etc/pegado11.png Binary files differnew file mode 100644 index 0000000..deb255a --- /dev/null +++ b/etc/pegado11.png diff --git a/etc/pegado12.png b/etc/pegado12.png Binary files differnew file mode 100644 index 0000000..4aba998 --- /dev/null +++ b/etc/pegado12.png diff --git a/etc/pegado13.png b/etc/pegado13.png Binary files differnew file mode 100644 index 0000000..6984489 --- /dev/null +++ b/etc/pegado13.png diff --git a/etc/pegado14.png b/etc/pegado14.png Binary files differnew file mode 100644 index 0000000..66e370f --- /dev/null +++ b/etc/pegado14.png diff --git a/etc/pegado15.png b/etc/pegado15.png Binary files differnew file mode 100644 index 0000000..0df67e6 --- /dev/null +++ b/etc/pegado15.png diff --git a/etc/pegado16.png b/etc/pegado16.png Binary files differnew file mode 100644 index 0000000..06d3243 --- /dev/null +++ b/etc/pegado16.png diff --git a/etc/pegado17.png b/etc/pegado17.png Binary files differnew file mode 100644 index 0000000..524e2f8 --- /dev/null +++ b/etc/pegado17.png diff --git a/etc/pegado18.png b/etc/pegado18.png Binary files differnew file mode 100644 index 0000000..b550627 --- /dev/null +++ b/etc/pegado18.png diff --git a/etc/pegado19.png b/etc/pegado19.png Binary files differnew file mode 100644 index 0000000..14bd712 --- /dev/null +++ b/etc/pegado19.png diff --git a/etc/pegado2.png b/etc/pegado2.png Binary files differnew file mode 100644 index 0000000..16b592a --- /dev/null +++ b/etc/pegado2.png diff --git a/etc/pegado20.png b/etc/pegado20.png Binary files differnew file mode 100644 index 0000000..1a0576c --- /dev/null +++ b/etc/pegado20.png diff --git a/etc/pegado21.png b/etc/pegado21.png Binary files differnew file mode 100644 index 0000000..fae9c4c --- /dev/null +++ b/etc/pegado21.png diff --git a/etc/pegado22.png b/etc/pegado22.png Binary files differnew file mode 100644 index 0000000..b83750d --- /dev/null +++ b/etc/pegado22.png diff --git a/etc/pegado23.png b/etc/pegado23.png Binary files differnew file mode 100644 index 0000000..c8ee106 --- /dev/null +++ b/etc/pegado23.png diff --git a/etc/pegado24.png b/etc/pegado24.png Binary files differnew file mode 100644 index 0000000..8322367 --- /dev/null +++ b/etc/pegado24.png diff --git a/etc/pegado25.png b/etc/pegado25.png Binary files differnew file mode 100644 index 0000000..be728d1 --- /dev/null +++ b/etc/pegado25.png diff --git a/etc/pegado26.png b/etc/pegado26.png Binary files differnew file mode 100644 index 0000000..f2c318f --- /dev/null +++ b/etc/pegado26.png diff --git a/etc/pegado27.png b/etc/pegado27.png Binary files differnew file mode 100644 index 0000000..5919338 --- /dev/null +++ b/etc/pegado27.png diff --git a/etc/pegado28.png b/etc/pegado28.png Binary files differnew file mode 100644 index 0000000..8265520 --- /dev/null +++ b/etc/pegado28.png diff --git a/etc/pegado29.png b/etc/pegado29.png Binary files differnew file mode 100644 index 0000000..8e38d87 --- /dev/null +++ b/etc/pegado29.png diff --git a/etc/pegado3.png b/etc/pegado3.png Binary files differnew file mode 100644 index 0000000..1f1a8e5 --- /dev/null +++ b/etc/pegado3.png diff --git a/etc/pegado30.png b/etc/pegado30.png Binary files differnew file mode 100644 index 0000000..c0d7714 --- /dev/null +++ b/etc/pegado30.png diff --git a/etc/pegado31.png b/etc/pegado31.png Binary files differnew file mode 100644 index 0000000..4b68285 --- /dev/null +++ b/etc/pegado31.png diff --git a/etc/pegado32.png b/etc/pegado32.png Binary files differnew file mode 100644 index 0000000..2b6aa45 --- /dev/null +++ b/etc/pegado32.png diff --git a/etc/pegado33.png b/etc/pegado33.png Binary files differnew file mode 100644 index 0000000..4fb20f2 --- /dev/null +++ b/etc/pegado33.png diff --git a/etc/pegado34.png b/etc/pegado34.png Binary files differnew file mode 100644 index 0000000..173d636 --- /dev/null +++ b/etc/pegado34.png diff --git a/etc/pegado35.png b/etc/pegado35.png Binary files differnew file mode 100644 index 0000000..b1170e8 --- /dev/null +++ b/etc/pegado35.png diff --git a/etc/pegado36.png b/etc/pegado36.png Binary files differnew file mode 100644 index 0000000..ae92763 --- /dev/null +++ b/etc/pegado36.png diff --git a/etc/pegado37.png b/etc/pegado37.png Binary files differnew file mode 100644 index 0000000..c5c5950 --- /dev/null +++ b/etc/pegado37.png diff --git a/etc/pegado38.png b/etc/pegado38.png Binary files differnew file mode 100644 index 0000000..cdd0e06 --- /dev/null +++ b/etc/pegado38.png diff --git a/etc/pegado39.png b/etc/pegado39.png Binary files differnew file mode 100644 index 0000000..ba8d4dd --- /dev/null +++ b/etc/pegado39.png diff --git a/etc/pegado4.png b/etc/pegado4.png Binary files differnew file mode 100644 index 0000000..6ec2ae1 --- /dev/null +++ b/etc/pegado4.png diff --git a/etc/pegado40.png b/etc/pegado40.png Binary files differnew file mode 100644 index 0000000..4ed2b75 --- /dev/null +++ b/etc/pegado40.png diff --git a/etc/pegado41.png b/etc/pegado41.png Binary files differnew file mode 100644 index 0000000..5ae2c6d --- /dev/null +++ b/etc/pegado41.png diff --git a/etc/pegado42.png b/etc/pegado42.png Binary files differnew file mode 100644 index 0000000..14ec3a0 --- /dev/null +++ b/etc/pegado42.png diff --git a/etc/pegado43.png b/etc/pegado43.png Binary files differnew file mode 100644 index 0000000..dc9a751 --- /dev/null +++ b/etc/pegado43.png diff --git a/etc/pegado44.png b/etc/pegado44.png Binary files differnew file mode 100644 index 0000000..3861a71 --- /dev/null +++ b/etc/pegado44.png diff --git a/etc/pegado5.png b/etc/pegado5.png Binary files differnew file mode 100644 index 0000000..9687f75 --- /dev/null +++ b/etc/pegado5.png diff --git a/etc/pegado6.png b/etc/pegado6.png Binary files differnew file mode 100644 index 0000000..37cee54 --- /dev/null +++ b/etc/pegado6.png diff --git a/etc/pegado7.png b/etc/pegado7.png Binary files differnew file mode 100644 index 0000000..69b5307 --- /dev/null +++ b/etc/pegado7.png diff --git a/etc/pegado8.png b/etc/pegado8.png Binary files differnew file mode 100644 index 0000000..2a17519 --- /dev/null +++ b/etc/pegado8.png diff --git a/etc/pegado9.png b/etc/pegado9.png Binary files differnew file mode 100644 index 0000000..3aa281d --- /dev/null +++ b/etc/pegado9.png |
