rendered version of b870725
(use libre-chip mirror for CI actions, 2025-06-24)
This commit is contained in:
commit
1a8ebeb481
57 changed files with 19115 additions and 0 deletions
2953
first_arch/architecture.dia
Normal file
2953
first_arch/architecture.dia
Normal file
File diff suppressed because it is too large
Load diff
173
first_arch/architecture.dia.svg
Normal file
173
first_arch/architecture.dia.svg
Normal file
|
@ -0,0 +1,173 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
|
||||
<svg width="58cm" height="49cm" viewBox="-60 -260 1160 980" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs/>
|
||||
<g id="Background"/>
|
||||
<g id="bg">
|
||||
<rect style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2.35099e-37; stroke: #ffffff" x="-60" y="-260" width="1160" height="980" rx="0" ry="0"/>
|
||||
</g>
|
||||
<g id="grouping">
|
||||
<rect style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x="-40" y="-40" width="960" height="740" rx="0" ry="0"/>
|
||||
<text font-size="19.2" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="440" y="-20.15">
|
||||
<tspan x="440" y="-20.15">Core 0</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="fg">
|
||||
<rect style="fill: #c0ffc0; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="0" y="0" width="160" height="120" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="80" y="13.9">
|
||||
<tspan x="80" y="13.9">Next PC</tspan>
|
||||
</text>
|
||||
<rect style="fill: #c0ffc0; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="40" y="20" width="80" height="80" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="80" y="64.425">
|
||||
<tspan x="80" y="64.425">BTB</tspan>
|
||||
</text>
|
||||
<rect style="fill: #c0c0ff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="0" y="240" width="160" height="80" rx="0" ry="0"/>
|
||||
<rect style="fill: #c0c0ff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="0" y="140" width="160" height="80" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="80" y="184.425">
|
||||
<tspan x="80" y="184.425">ITLB</tspan>
|
||||
</text>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="80" y="284.425">
|
||||
<tspan x="80" y="284.425">μOp Cache</tspan>
|
||||
</text>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="80" y1="120" x2="80" y2="140"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="80" y1="220" x2="80" y2="240"/>
|
||||
<rect style="fill: #c0c0ff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="180" y="140" width="160" height="80" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="260" y="176.425">
|
||||
<tspan x="260" y="176.425">L2 TLB &</tspan>
|
||||
<tspan x="260" y="192.425">Page Table Walker</tspan>
|
||||
</text>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="160" y1="180" x2="180" y2="180"/>
|
||||
<rect style="fill: #c0ffc0; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="180" y="240" width="160" height="80" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="260" y="284.425">
|
||||
<tspan x="260" y="284.425">L1I Cache</tspan>
|
||||
</text>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="160" y1="280" x2="180" y2="280"/>
|
||||
<rect style="fill: #c0c0ff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="200" y="0" width="680" height="120" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="540" y="64.425">
|
||||
<tspan x="540" y="64.425">L2 Cache</tspan>
|
||||
</text>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="540" cy="180" rx="5" ry="5"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="540" y1="180" x2="340" y2="180"/>
|
||||
<polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="540,180 540,280 340,280 340,280 "/>
|
||||
<polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="540,180 540,140 540,140 540,120 "/>
|
||||
<rect style="fill: #c0ffc0; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="180" y="360" width="160" height="80" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="260" y="396.425">
|
||||
<tspan x="260" y="396.425">PowerISA Simple</tspan>
|
||||
<tspan x="260" y="412.425">Decode</tspan>
|
||||
</text>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="260" y1="320" x2="260" y2="340"/>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="260" cy="340" rx="5" ry="5"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="260" y1="340" x2="260" y2="360"/>
|
||||
<rect style="fill: #c0c0ff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="360" y="360" width="160" height="80" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="440" y="396.425">
|
||||
<tspan x="440" y="396.425">Programmable</tspan>
|
||||
<tspan x="440" y="412.425">Decoder</tspan>
|
||||
</text>
|
||||
<polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="260,340 260,340 440,340 440,360 "/>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="260" cy="460" rx="5" ry="5"/>
|
||||
<polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="260,460 260,460 440,460 440,440 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="260" y1="440" x2="260" y2="460"/>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="80" cy="460" rx="5" ry="5"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="260" y1="460" x2="80" y2="460"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="80" y1="320" x2="80" y2="460"/>
|
||||
<rect style="fill: #c0ffc0; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="0" y="480" width="160" height="80" rx="0" ry="0"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="80" y1="460" x2="80" y2="480"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="80" y="516.425">
|
||||
<tspan x="80" y="516.425">Register Rename &</tspan>
|
||||
<tspan x="80" y="532.425">Unit Assignment</tspan>
|
||||
</text>
|
||||
<rect style="fill: #c0ffc0; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="180" y="480" width="160" height="80" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="260" y="516.425">
|
||||
<tspan x="260" y="516.425">Register Allocator &</tspan>
|
||||
<tspan x="260" y="532.425">Instruction Retire</tspan>
|
||||
</text>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="160" y1="520" x2="180" y2="520"/>
|
||||
<rect style="fill: #c0ffc0; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="0" y="600" width="160" height="80" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="80" y="644.425">
|
||||
<tspan x="80" y="644.425">ALU & Branch</tspan>
|
||||
</text>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="80" cy="580" rx="5" ry="5"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="80" y1="560" x2="80" y2="580"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="80" y1="580" x2="80" y2="600"/>
|
||||
<rect style="fill: #c0c0ff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="180" y="600" width="160" height="80" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="260" y="644.425">
|
||||
<tspan x="260" y="644.425">ALU</tspan>
|
||||
</text>
|
||||
<polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="0,60 0,60 -20,60 -20,640 0,640 "/>
|
||||
<rect style="fill: #c0ffc0; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="540" y="480" width="160" height="80" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="620" y="524.425">
|
||||
<tspan x="620" y="524.425">Load/Store</tspan>
|
||||
</text>
|
||||
<rect style="fill: #c0ffc0; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="720" y="360" width="160" height="80" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="800" y="404.425">
|
||||
<tspan x="800" y="404.425">L1D Cache</tspan>
|
||||
</text>
|
||||
<polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="540,180 540,180 800,180 800,360 "/>
|
||||
<rect style="fill: #c0c0ff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="720" y="480" width="160" height="80" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="800" y="524.425">
|
||||
<tspan x="800" y="524.425">DTLB</tspan>
|
||||
</text>
|
||||
<polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="340,200 340,200 700,200 700,460 760,460 760,480 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="700" y1="520" x2="720" y2="520"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="800" y1="440" x2="800" y2="480"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="80" y1="580" x2="80" y2="580"/>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="260" cy="580" rx="5" ry="5"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="80" y1="580" x2="260" y2="580"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="260" y1="580" x2="260" y2="600"/>
|
||||
<rect style="fill: #c0ffc0; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="360" y="480" width="160" height="80" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="440" y="524.425">
|
||||
<tspan x="440" y="524.425">L2 Register File</tspan>
|
||||
</text>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="340" y1="520" x2="360" y2="520"/>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="440" cy="580" rx="5" ry="5"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="440" y1="560" x2="440" y2="580"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="260" y1="580" x2="440" y2="580"/>
|
||||
<rect style="fill: #c0ffc0; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="-40" y="-240" width="160" height="80" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="40" y="-195.575">
|
||||
<tspan x="40" y="-195.575">Memory</tspan>
|
||||
</text>
|
||||
<rect style="fill: #c0c0ff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="-40" y="-140" width="1120" height="80" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="520" y="-95.575">
|
||||
<tspan x="520" y="-95.575">L3 Cache</tspan>
|
||||
</text>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="540" y1="0" x2="540" y2="-60"/>
|
||||
<rect style="fill: #c0c0ff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x="940" y="-40" width="140" height="740" rx="0" ry="0"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="1010" y1="-60" x2="1010" y2="-40"/>
|
||||
<text font-size="19.2" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="1010" y="-20.15">
|
||||
<tspan x="1010" y="-20.15">Other Cores</tspan>
|
||||
</text>
|
||||
<rect style="fill: #c0ffc0; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="920" y="-240" width="160" height="80" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="1000" y="-195.575">
|
||||
<tspan x="1000" y="-195.575">Peripherals</tspan>
|
||||
</text>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="1000" y1="-160" x2="1000" y2="-140"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="40" y1="-160" x2="40" y2="-140"/>
|
||||
<rect style="fill: #c0c0ff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="360" y="600" width="160" height="80" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="440" y="644.425">
|
||||
<tspan x="440" y="644.425">Mul</tspan>
|
||||
</text>
|
||||
<rect style="fill: #c0c0ff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="540" y="600" width="160" height="80" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="620" y="644.425">
|
||||
<tspan x="620" y="644.425">FMul/FAdd</tspan>
|
||||
</text>
|
||||
<rect style="fill: #c0c0ff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="720" y="600" width="160" height="80" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="800" y="644.425">
|
||||
<tspan x="800" y="644.425">Div/FDiv/FSqrt</tspan>
|
||||
</text>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="440" y1="580" x2="440" y2="600"/>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="620" cy="580" rx="5" ry="5"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="620" y1="580" x2="620" y2="560"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="620" y1="580" x2="440" y2="580"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="620" y1="580" x2="620" y2="600"/>
|
||||
<polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="620,580 620,580 800,580 800,600 "/>
|
||||
<rect style="fill: #c0ffc0; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="280" y="-240" width="20" height="20" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="304" y="-225.575">
|
||||
<tspan x="304" y="-225.575">Needed for Initial Working CPU</tspan>
|
||||
</text>
|
||||
<rect style="fill: #c0c0ff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="280" y="-200" width="20" height="20" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="304" y="-185.575">
|
||||
<tspan x="304" y="-185.575">Possible Follow-on Work</tspan>
|
||||
</text>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="260" y1="560" x2="260" y2="580"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 17 KiB |
3823
first_arch/distributed_registers.dia
Normal file
3823
first_arch/distributed_registers.dia
Normal file
File diff suppressed because it is too large
Load diff
297
first_arch/distributed_registers.dia.svg
Normal file
297
first_arch/distributed_registers.dia.svg
Normal file
|
@ -0,0 +1,297 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
|
||||
<svg width="32cm" height="82cm" viewBox="38 -20 622 1640" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs/>
|
||||
<g id="Background"/>
|
||||
<g id="bg">
|
||||
<rect style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2.35099e-37; stroke: #ffffff" x="40" y="-20" width="620" height="1640" rx="0" ry="0"/>
|
||||
</g>
|
||||
<g id="group">
|
||||
<rect style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #808080" x="140" y="0" width="500" height="400" rx="0" ry="0"/>
|
||||
<rect style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #808080" x="140" y="400" width="500" height="400" rx="0" ry="0"/>
|
||||
<rect style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #808080" x="140" y="800" width="500" height="400" rx="0" ry="0"/>
|
||||
<rect style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #808080" x="140" y="1200" width="500" height="400" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="390" y="200">
|
||||
<tspan x="390" y="200"></tspan>
|
||||
</text>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="390" y="200">
|
||||
<tspan x="390" y="200"></tspan>
|
||||
</text>
|
||||
<text font-size="19.2" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="390" y="19.85">
|
||||
<tspan x="390" y="19.85">Unit 1</tspan>
|
||||
</text>
|
||||
<text font-size="19.2" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="390" y="419.85">
|
||||
<tspan x="390" y="419.85">Unit 2</tspan>
|
||||
</text>
|
||||
<text font-size="19.2" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="390" y="819.85">
|
||||
<tspan x="390" y="819.85">Unit 3</tspan>
|
||||
</text>
|
||||
<text font-size="19.2" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="390" y="1219.85">
|
||||
<tspan x="390" y="1219.85">L2 Register File</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="fg">
|
||||
<g>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 6; stroke: #000000" x1="298.991" y1="190" x2="323" y2="190"/>
|
||||
<polygon style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 6; stroke: #000000" fill-rule="evenodd" points="323,195 333,190 323,185 "/>
|
||||
</g>
|
||||
<g>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 6; stroke: #000000" x1="398" y1="190" x2="423" y2="190"/>
|
||||
<polygon style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 6; stroke: #000000" fill-rule="evenodd" points="423,195 433,190 423,185 "/>
|
||||
</g>
|
||||
<g>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 6; stroke: #000000" x1="498" y1="190" x2="523" y2="190"/>
|
||||
<polygon style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 6; stroke: #000000" fill-rule="evenodd" points="523,195 533,190 523,185 "/>
|
||||
</g>
|
||||
<g>
|
||||
<polygon style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,40 240,40 240,100 160,100 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="184" y1="100" x2="200" y2="88"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="200" y1="88" x2="216" y2="100"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="200" y="60">
|
||||
<tspan x="200" y="60">Unit 1</tspan>
|
||||
<tspan x="200" y="76">Out Regs</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g>
|
||||
<polygon style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,120 240,120 240,180 160,180 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="184" y1="180" x2="200" y2="168"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="200" y1="168" x2="216" y2="180"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="200" y="140">
|
||||
<tspan x="200" y="140">Unit 2</tspan>
|
||||
<tspan x="200" y="156">Out Regs</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g>
|
||||
<polygon style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,200 240,200 240,260 160,260 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="184" y1="260" x2="200" y2="248"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="200" y1="248" x2="216" y2="260"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="200" y="220">
|
||||
<tspan x="200" y="220">Unit 3</tspan>
|
||||
<tspan x="200" y="236">Out Regs</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g>
|
||||
<polygon style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,280 240,280 240,340 160,340 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="184" y1="340" x2="200" y2="328"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="200" y1="328" x2="216" y2="340"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="200" y="300">
|
||||
<tspan x="200" y="300">L2 Regs</tspan>
|
||||
<tspan x="200" y="316">Out Regs</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<polygon style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke-linejoin: bevel; stroke: #000000" fill-rule="evenodd" points="260,20 300,60 300,320 260,360 260,310 260,230 260,150 260,70 "/>
|
||||
<rect style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="340" y="40" width="60" height="300" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="370" y="194.425">
|
||||
<tspan x="370" y="194.425">Stage 1</tspan>
|
||||
</text>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="240" y1="70" x2="260" y2="70"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="260" y1="150" x2="240" y2="150"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="240" y1="230" x2="260" y2="230"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="240" y1="310" x2="260" y2="310"/>
|
||||
<rect style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="440" y="40" width="60" height="300" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="470" y="194.425">
|
||||
<tspan x="470" y="194.425">Stage 2</tspan>
|
||||
</text>
|
||||
<rect style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="540" y="40" width="60" height="300" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="570" y="194.425">
|
||||
<tspan x="570" y="194.425">Stage 3</tspan>
|
||||
</text>
|
||||
<g>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 6; stroke: #000000" x1="298" y1="590" x2="323" y2="590"/>
|
||||
<polygon style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 6; stroke: #000000" fill-rule="evenodd" points="323,595 333,590 323,585 "/>
|
||||
</g>
|
||||
<g>
|
||||
<polygon style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,440 240,440 240,500 160,500 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="184" y1="500" x2="200" y2="488"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="200" y1="488" x2="216" y2="500"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="200" y="460">
|
||||
<tspan x="200" y="460">Unit 1</tspan>
|
||||
<tspan x="200" y="476">Out Regs</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g>
|
||||
<polygon style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,520 240,520 240,580 160,580 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="184" y1="580" x2="200" y2="568"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="200" y1="568" x2="216" y2="580"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="200" y="540">
|
||||
<tspan x="200" y="540">Unit 2</tspan>
|
||||
<tspan x="200" y="556">Out Regs</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g>
|
||||
<polygon style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,600 240,600 240,660 160,660 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="184" y1="660" x2="200" y2="648"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="200" y1="648" x2="216" y2="660"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="200" y="620">
|
||||
<tspan x="200" y="620">Unit 3</tspan>
|
||||
<tspan x="200" y="636">Out Regs</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g>
|
||||
<polygon style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,680 240,680 240,740 160,740 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="184" y1="740" x2="200" y2="728"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="200" y1="728" x2="216" y2="740"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="200" y="700">
|
||||
<tspan x="200" y="700">L2 Regs</tspan>
|
||||
<tspan x="200" y="716">Out Regs</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<polygon style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" fill-rule="evenodd" points="260,420 300,460 300,720 260,760 260,710 260,630 260,550 260,470 "/>
|
||||
<rect style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="340" y="440" width="60" height="300" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="370" y="594.425">
|
||||
<tspan x="370" y="594.425">Stage 1</tspan>
|
||||
</text>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="240" y1="470" x2="260" y2="470"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="260" y1="550" x2="240" y2="550"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="240" y1="630" x2="260" y2="630"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="240" y1="710" x2="260" y2="710"/>
|
||||
<g>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 6; stroke: #000000" x1="298" y1="990" x2="323" y2="990"/>
|
||||
<polygon style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 6; stroke: #000000" fill-rule="evenodd" points="323,995 333,990 323,985 "/>
|
||||
</g>
|
||||
<g>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 6; stroke: #000000" x1="398" y1="990" x2="423" y2="990"/>
|
||||
<polygon style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 6; stroke: #000000" fill-rule="evenodd" points="423,995 433,990 423,985 "/>
|
||||
</g>
|
||||
<g>
|
||||
<polygon style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,840 240,840 240,900 160,900 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="184" y1="900" x2="200" y2="888"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="200" y1="888" x2="216" y2="900"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="200" y="860">
|
||||
<tspan x="200" y="860">Unit 1</tspan>
|
||||
<tspan x="200" y="876">Out Regs</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g>
|
||||
<polygon style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,920 240,920 240,980 160,980 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="184" y1="980" x2="200" y2="968"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="200" y1="968" x2="216" y2="980"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="200" y="940">
|
||||
<tspan x="200" y="940">Unit 2</tspan>
|
||||
<tspan x="200" y="956">Out Regs</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g>
|
||||
<polygon style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,1000 240,1000 240,1060 160,1060 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="184" y1="1060" x2="200" y2="1048"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="200" y1="1048" x2="216" y2="1060"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="200" y="1020">
|
||||
<tspan x="200" y="1020">Unit 3</tspan>
|
||||
<tspan x="200" y="1036">Out Regs</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g>
|
||||
<polygon style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,1080 240,1080 240,1140 160,1140 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="184" y1="1140" x2="200" y2="1128"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="200" y1="1128" x2="216" y2="1140"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="200" y="1100">
|
||||
<tspan x="200" y="1100">L2 Regs</tspan>
|
||||
<tspan x="200" y="1116">Out Regs</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<polygon style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" fill-rule="evenodd" points="260,820 300,860 300,1120 260,1160 260,1110 260,1030 260,950 260,870 "/>
|
||||
<rect style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="340" y="840" width="60" height="300" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="370" y="994.425">
|
||||
<tspan x="370" y="994.425">Stage 1</tspan>
|
||||
</text>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="240" y1="870" x2="260" y2="870"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="260" y1="950" x2="240" y2="950"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="240" y1="1030" x2="260" y2="1030"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="240" y1="1110" x2="260" y2="1110"/>
|
||||
<rect style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x="440" y="840" width="60" height="300" rx="0" ry="0"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="470" y="994.425">
|
||||
<tspan x="470" y="994.425">Stage 2</tspan>
|
||||
</text>
|
||||
<g>
|
||||
<polygon style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,1240 240,1240 240,1300 160,1300 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="184" y1="1300" x2="200" y2="1288"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="200" y1="1288" x2="216" y2="1300"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="200" y="1260">
|
||||
<tspan x="200" y="1260">Unit 1</tspan>
|
||||
<tspan x="200" y="1276">Out Regs</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g>
|
||||
<polygon style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,1320 240,1320 240,1380 160,1380 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="184" y1="1380" x2="200" y2="1368"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="200" y1="1368" x2="216" y2="1380"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="200" y="1340">
|
||||
<tspan x="200" y="1340">Unit 2</tspan>
|
||||
<tspan x="200" y="1356">Out Regs</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g>
|
||||
<polygon style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,1400 240,1400 240,1460 160,1460 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="184" y1="1460" x2="200" y2="1448"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="200" y1="1448" x2="216" y2="1460"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="200" y="1420">
|
||||
<tspan x="200" y="1420">Unit 3</tspan>
|
||||
<tspan x="200" y="1436">Out Regs</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g>
|
||||
<polygon style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,1480 240,1480 240,1540 160,1540 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="184" y1="1540" x2="200" y2="1528"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="200" y1="1528" x2="216" y2="1540"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="200" y="1500">
|
||||
<tspan x="200" y="1500">L2 Regs</tspan>
|
||||
<tspan x="200" y="1516">Out Regs</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<polygon style="fill: #ffffff; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" fill-rule="evenodd" points="260,1220 300,1260 300,1520 260,1560 260,1510 260,1430 260,1350 260,1270 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="240" y1="1270" x2="260" y2="1270"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="260" y1="1350" x2="240" y2="1350"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="240" y1="1430" x2="260" y2="1430"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="240" y1="1510" x2="260" y2="1510"/>
|
||||
<g>
|
||||
<polygon style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="340,1360 420,1360 420,1420 340,1420 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="364" y1="1420" x2="380" y2="1408"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="380" y1="1408" x2="396" y2="1420"/>
|
||||
<text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="380" y="1380">
|
||||
<tspan x="380" y="1380">L2 Register</tspan>
|
||||
<tspan x="380" y="1396">File</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="300" y1="1390" x2="340" y2="1390"/>
|
||||
<polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="420,1390 440,1390 440,1580 120,1580 120,1510 120,1510 "/>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="120" cy="1510" rx="5" ry="5"/>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="100" cy="1180" rx="5" ry="5"/>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="80" cy="780" rx="5" ry="5"/>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="60" cy="380" rx="5" ry="5"/>
|
||||
<polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="500,990 520,990 520,1180 100,1180 100,1180 "/>
|
||||
<polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="400,590 420,590 420,780 80,780 80,780 "/>
|
||||
<polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="600,190 621,190 621,380 60,380 60,380 "/>
|
||||
<polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,70 60,70 60,380 60,380 "/>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="80" cy="550" rx="5" ry="5"/>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="60" cy="470" rx="5" ry="5"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="60" y1="380" x2="60" y2="470"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="160" y1="470" x2="60" y2="470"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="160" y1="550" x2="80" y2="550"/>
|
||||
<polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="80,550 80,150 160,150 160,150 "/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="80" y1="550" x2="80" y2="780"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="60" y1="470" x2="60" y2="870"/>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="100" cy="630" rx="5" ry="5"/>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="120" cy="710" rx="5" ry="5"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="160" y1="630" x2="100" y2="630"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="120" y1="710" x2="160" y2="710"/>
|
||||
<polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,230 100,230 100,630 100,630 "/>
|
||||
<polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,310 120,310 120,710 120,710 "/>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="80" cy="950" rx="5" ry="5"/>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="60" cy="870" rx="5" ry="5"/>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="100" cy="1030" rx="5" ry="5"/>
|
||||
<ellipse style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; stroke-width: 2; stroke: #000000" cx="120" cy="1110" rx="5" ry="5"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="100" y1="1030" x2="100" y2="1180"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="100" y1="1030" x2="160" y2="1030"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="120" y1="1110" x2="160" y2="1110"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="80" y1="950" x2="160" y2="950"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="60" y1="870" x2="160" y2="870"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="80" y1="780" x2="80" y2="950"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="120" y1="710" x2="120" y2="1110"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="100" y1="630" x2="100" y2="1030"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="120" y1="1510" x2="120" y2="1110"/>
|
||||
<line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" x1="160" y1="1510" x2="120" y2="1510"/>
|
||||
<polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,1430 100,1430 100,1180 100,1180 "/>
|
||||
<polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,1350 80,1350 80,950 80,950 "/>
|
||||
<polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: #000000" points="160,1270 60,1270 60,870 60,870 "/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 26 KiB |
248
first_arch/index.html
Normal file
248
first_arch/index.html
Normal file
|
@ -0,0 +1,248 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html lang="en" class="light" dir="ltr">
|
||||
<head>
|
||||
<!-- Book generated using mdBook -->
|
||||
<meta charset="UTF-8">
|
||||
<title>Proposal for Libre-Chip's First CPU Architecture</title>
|
||||
|
||||
|
||||
<!-- Custom HTML head -->
|
||||
|
||||
<meta name="description" content="">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
<link rel="icon" href="../favicon.svg">
|
||||
<link rel="shortcut icon" href="../favicon.png">
|
||||
<link rel="stylesheet" href="../css/variables.css">
|
||||
<link rel="stylesheet" href="../css/general.css">
|
||||
<link rel="stylesheet" href="../css/chrome.css">
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
|
||||
<link rel="stylesheet" href="../fonts/fonts.css">
|
||||
|
||||
<!-- Highlight.js Stylesheets -->
|
||||
<link rel="stylesheet" href="../highlight.css">
|
||||
<link rel="stylesheet" href="../tomorrow-night.css">
|
||||
<link rel="stylesheet" href="../ayu-highlight.css">
|
||||
|
||||
<!-- Custom theme stylesheets -->
|
||||
<link rel="stylesheet" href="../src/custom.css">
|
||||
|
||||
<!-- MathJax -->
|
||||
<script async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
</head>
|
||||
<body class="sidebar-visible no-js">
|
||||
<div id="body-container">
|
||||
<!-- Provide site root to javascript -->
|
||||
<script>
|
||||
var path_to_root = "../";
|
||||
var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "navy" : "light";
|
||||
</script>
|
||||
|
||||
<!-- Work around some values being stored in localStorage wrapped in quotes -->
|
||||
<script>
|
||||
try {
|
||||
var theme = localStorage.getItem('mdbook-theme');
|
||||
var sidebar = localStorage.getItem('mdbook-sidebar');
|
||||
|
||||
if (theme.startsWith('"') && theme.endsWith('"')) {
|
||||
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
|
||||
}
|
||||
|
||||
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
|
||||
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
|
||||
}
|
||||
} catch (e) { }
|
||||
</script>
|
||||
|
||||
<!-- Set the theme before any content is loaded, prevents flash -->
|
||||
<script>
|
||||
var theme;
|
||||
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
|
||||
if (theme === null || theme === undefined) { theme = default_theme; }
|
||||
var html = document.querySelector('html');
|
||||
html.classList.remove('light')
|
||||
html.classList.add(theme);
|
||||
var body = document.querySelector('body');
|
||||
body.classList.remove('no-js')
|
||||
body.classList.add('js');
|
||||
</script>
|
||||
|
||||
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
|
||||
|
||||
<!-- Hide / unhide sidebar before it is displayed -->
|
||||
<script>
|
||||
var body = document.querySelector('body');
|
||||
var sidebar = null;
|
||||
var sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
|
||||
if (document.body.clientWidth >= 1080) {
|
||||
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
|
||||
sidebar = sidebar || 'visible';
|
||||
} else {
|
||||
sidebar = 'hidden';
|
||||
}
|
||||
sidebar_toggle.checked = sidebar === 'visible';
|
||||
body.classList.remove('sidebar-visible');
|
||||
body.classList.add("sidebar-" + sidebar);
|
||||
</script>
|
||||
|
||||
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
|
||||
<div class="sidebar-scrollbox">
|
||||
<ol class="chapter"><li class="chapter-item expanded "><a href="../index.html">Libre-Chip</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../first_arch/index.html" class="active">Proposal for Libre-Chip's First CPU Architecture</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../first_arch/register_renaming.html">Register Renaming</a></li></ol></li><li class="chapter-item "><a href="../grants/index.html">Grants</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../grants/nlnet-first.html">First NLNet Grant Proposal -- 2024-12-324</a></li></ol></li></ol></li><li class="chapter-item expanded "><a href="../Conduct.html">Conduct</a></li><li class="chapter-item expanded "><a href="../LICENSE.html">License</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../gpl-3.0.html">GPL 3.0</a></li><li class="chapter-item "><a href="../lgpl-3.0.html">LGPL 3.0</a></li><li class="chapter-item "><a href="../lgpl-2.1.html">LGPL 2.1</a></li></ol></li></ol>
|
||||
</div>
|
||||
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
|
||||
<div class="sidebar-resize-indicator"></div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Track and set sidebar scroll position -->
|
||||
<script>
|
||||
var sidebarScrollbox = document.querySelector('#sidebar .sidebar-scrollbox');
|
||||
sidebarScrollbox.addEventListener('click', function(e) {
|
||||
if (e.target.tagName === 'A') {
|
||||
sessionStorage.setItem('sidebar-scroll', sidebarScrollbox.scrollTop);
|
||||
}
|
||||
}, { passive: true });
|
||||
var sidebarScrollTop = sessionStorage.getItem('sidebar-scroll');
|
||||
sessionStorage.removeItem('sidebar-scroll');
|
||||
if (sidebarScrollTop) {
|
||||
// preserve sidebar scroll position when navigating via links within sidebar
|
||||
sidebarScrollbox.scrollTop = sidebarScrollTop;
|
||||
} else {
|
||||
// scroll sidebar to current active section when navigating via "next/previous chapter" buttons
|
||||
var activeSection = document.querySelector('#sidebar .active');
|
||||
if (activeSection) {
|
||||
activeSection.scrollIntoView({ block: 'center' });
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<div id="page-wrapper" class="page-wrapper">
|
||||
|
||||
<div class="page">
|
||||
<div id="menu-bar-hover-placeholder"></div>
|
||||
<div id="menu-bar" class="menu-bar sticky">
|
||||
<div class="left-buttons">
|
||||
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
|
||||
<i class="fa fa-bars"></i>
|
||||
</label>
|
||||
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
|
||||
<i class="fa fa-paint-brush"></i>
|
||||
</button>
|
||||
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
|
||||
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
|
||||
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
|
||||
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
|
||||
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
|
||||
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
|
||||
</ul>
|
||||
<button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
|
||||
<i class="fa fa-search"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<h1 class="menu-title"></h1>
|
||||
|
||||
<div class="right-buttons">
|
||||
<a href="https://git.libre-chip.org/libre-chip/website" title="Git repository" aria-label="Git repository">
|
||||
<i id="git-repository-button" class="fa fa-git"></i>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="search-wrapper" class="hidden">
|
||||
<form id="searchbar-outer" class="searchbar-outer">
|
||||
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
|
||||
</form>
|
||||
<div id="searchresults-outer" class="searchresults-outer hidden">
|
||||
<div id="searchresults-header" class="searchresults-header"></div>
|
||||
<ul id="searchresults">
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
|
||||
<script>
|
||||
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
|
||||
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
|
||||
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
|
||||
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
|
||||
});
|
||||
</script>
|
||||
|
||||
<div id="content" class="content">
|
||||
<main>
|
||||
<h1 id="proposal-for-libre-chips-first-cpu-architecture"><a class="header" href="#proposal-for-libre-chips-first-cpu-architecture">Proposal for Libre-Chip's First CPU Architecture</a></h1>
|
||||
<h2 id="stages"><a class="header" href="#stages">Stages</a></h2>
|
||||
<p>The CPU architecture will be developed in several stages:</p>
|
||||
<ol>
|
||||
<li>Getting an initial working CPU -- First NLNet/etc. Grant</li>
|
||||
</ol>
|
||||
<p>Possible follow-on work, order TBD:</p>
|
||||
<ul>
|
||||
<li>Expand CPU to support more operations (e.g. floating-point, vector ops., paging)</li>
|
||||
<li>Add FPGA-style programmable decoder and μOp Cache, with trap-to-software fallback for uncommon/complex ops, which allows running more ISAs such as RISC-V, older x86-32/64, more PowerISA support, and then if we can figure out the legal situation, ARM and modern x86-64. The idea is QEMU (or similar) will be compiled with a special compiler that generates both the fallback software and the bitstream for the decoder, the compiled output will be covered by QEMU's license which has some patent clauses, which hopefully helps with the legal situation. Jacob Lifshay came up with this idea <a href="https://web.archive.org/web/20220612082603/https://bugs.libre-soc.org/show_bug.cgi?id=841">back in 2022</a></li>
|
||||
<li>Formal proof that the CPU doesn't have any spectre-style bugs even though it still is OoO superscalar with speculative execution. Jacob Lifshay came up with this idea <a href="https://web.archive.org/web/20201021124234/https://bugs.libre-soc.org/show_bug.cgi?id=209">back in 2020</a></li>
|
||||
<li><a href="https://forum.libre-chip.org/t/idea-for-maybe-allowing-much-wider-fetch-rename-etc-widths-in-a-cpu/33">Idea for much wider fetch/decode/rename width based on parallel-prefix-sum and taking more than 1 cycle per batch of renamed instructions</a></li>
|
||||
</ul>
|
||||
<h2 id="register-renaming--internal-registers"><a class="header" href="#register-renaming--internal-registers">Register Renaming & Internal Registers</a></h2>
|
||||
<p>See <a href="register_renaming.html">Register Renaming</a></p>
|
||||
<h2 id="architecture-diagram"><a class="header" href="#architecture-diagram">Architecture Diagram</a></h2>
|
||||
<p><img src="architecture.dia.svg" alt="" /></p>
|
||||
|
||||
</main>
|
||||
|
||||
<nav class="nav-wrapper" aria-label="Page navigation">
|
||||
<!-- Mobile navigation buttons -->
|
||||
<a rel="prev" href="../index.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
||||
<i class="fa fa-angle-left"></i>
|
||||
</a>
|
||||
|
||||
<a rel="next prefetch" href="../first_arch/register_renaming.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</a>
|
||||
|
||||
<div style="clear: both"></div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
||||
<a rel="prev" href="../index.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
||||
<i class="fa fa-angle-left"></i>
|
||||
</a>
|
||||
|
||||
<a rel="next prefetch" href="../first_arch/register_renaming.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</a>
|
||||
</nav>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
window.playground_copyable = true;
|
||||
</script>
|
||||
|
||||
|
||||
<script src="../elasticlunr.min.js"></script>
|
||||
<script src="../mark.min.js"></script>
|
||||
<script src="../searcher.js"></script>
|
||||
|
||||
<script src="../clipboard.min.js"></script>
|
||||
<script src="../highlight.js"></script>
|
||||
<script src="../book.js"></script>
|
||||
|
||||
<!-- Custom JS scripts -->
|
||||
<script src="../mermaid.min.js"></script>
|
||||
<script src="../mermaid-init.js"></script>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
248
first_arch/register_renaming.html
Normal file
248
first_arch/register_renaming.html
Normal file
|
@ -0,0 +1,248 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html lang="en" class="light" dir="ltr">
|
||||
<head>
|
||||
<!-- Book generated using mdBook -->
|
||||
<meta charset="UTF-8">
|
||||
<title>Register Renaming</title>
|
||||
|
||||
|
||||
<!-- Custom HTML head -->
|
||||
|
||||
<meta name="description" content="">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
<link rel="icon" href="../favicon.svg">
|
||||
<link rel="shortcut icon" href="../favicon.png">
|
||||
<link rel="stylesheet" href="../css/variables.css">
|
||||
<link rel="stylesheet" href="../css/general.css">
|
||||
<link rel="stylesheet" href="../css/chrome.css">
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
|
||||
<link rel="stylesheet" href="../fonts/fonts.css">
|
||||
|
||||
<!-- Highlight.js Stylesheets -->
|
||||
<link rel="stylesheet" href="../highlight.css">
|
||||
<link rel="stylesheet" href="../tomorrow-night.css">
|
||||
<link rel="stylesheet" href="../ayu-highlight.css">
|
||||
|
||||
<!-- Custom theme stylesheets -->
|
||||
<link rel="stylesheet" href="../src/custom.css">
|
||||
|
||||
<!-- MathJax -->
|
||||
<script async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
</head>
|
||||
<body class="sidebar-visible no-js">
|
||||
<div id="body-container">
|
||||
<!-- Provide site root to javascript -->
|
||||
<script>
|
||||
var path_to_root = "../";
|
||||
var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "navy" : "light";
|
||||
</script>
|
||||
|
||||
<!-- Work around some values being stored in localStorage wrapped in quotes -->
|
||||
<script>
|
||||
try {
|
||||
var theme = localStorage.getItem('mdbook-theme');
|
||||
var sidebar = localStorage.getItem('mdbook-sidebar');
|
||||
|
||||
if (theme.startsWith('"') && theme.endsWith('"')) {
|
||||
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
|
||||
}
|
||||
|
||||
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
|
||||
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
|
||||
}
|
||||
} catch (e) { }
|
||||
</script>
|
||||
|
||||
<!-- Set the theme before any content is loaded, prevents flash -->
|
||||
<script>
|
||||
var theme;
|
||||
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
|
||||
if (theme === null || theme === undefined) { theme = default_theme; }
|
||||
var html = document.querySelector('html');
|
||||
html.classList.remove('light')
|
||||
html.classList.add(theme);
|
||||
var body = document.querySelector('body');
|
||||
body.classList.remove('no-js')
|
||||
body.classList.add('js');
|
||||
</script>
|
||||
|
||||
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
|
||||
|
||||
<!-- Hide / unhide sidebar before it is displayed -->
|
||||
<script>
|
||||
var body = document.querySelector('body');
|
||||
var sidebar = null;
|
||||
var sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
|
||||
if (document.body.clientWidth >= 1080) {
|
||||
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
|
||||
sidebar = sidebar || 'visible';
|
||||
} else {
|
||||
sidebar = 'hidden';
|
||||
}
|
||||
sidebar_toggle.checked = sidebar === 'visible';
|
||||
body.classList.remove('sidebar-visible');
|
||||
body.classList.add("sidebar-" + sidebar);
|
||||
</script>
|
||||
|
||||
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
|
||||
<div class="sidebar-scrollbox">
|
||||
<ol class="chapter"><li class="chapter-item expanded "><a href="../index.html">Libre-Chip</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../first_arch/index.html">Proposal for Libre-Chip's First CPU Architecture</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../first_arch/register_renaming.html" class="active">Register Renaming</a></li></ol></li><li class="chapter-item "><a href="../grants/index.html">Grants</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../grants/nlnet-first.html">First NLNet Grant Proposal -- 2024-12-324</a></li></ol></li></ol></li><li class="chapter-item expanded "><a href="../Conduct.html">Conduct</a></li><li class="chapter-item expanded "><a href="../LICENSE.html">License</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../gpl-3.0.html">GPL 3.0</a></li><li class="chapter-item "><a href="../lgpl-3.0.html">LGPL 3.0</a></li><li class="chapter-item "><a href="../lgpl-2.1.html">LGPL 2.1</a></li></ol></li></ol>
|
||||
</div>
|
||||
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
|
||||
<div class="sidebar-resize-indicator"></div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Track and set sidebar scroll position -->
|
||||
<script>
|
||||
var sidebarScrollbox = document.querySelector('#sidebar .sidebar-scrollbox');
|
||||
sidebarScrollbox.addEventListener('click', function(e) {
|
||||
if (e.target.tagName === 'A') {
|
||||
sessionStorage.setItem('sidebar-scroll', sidebarScrollbox.scrollTop);
|
||||
}
|
||||
}, { passive: true });
|
||||
var sidebarScrollTop = sessionStorage.getItem('sidebar-scroll');
|
||||
sessionStorage.removeItem('sidebar-scroll');
|
||||
if (sidebarScrollTop) {
|
||||
// preserve sidebar scroll position when navigating via links within sidebar
|
||||
sidebarScrollbox.scrollTop = sidebarScrollTop;
|
||||
} else {
|
||||
// scroll sidebar to current active section when navigating via "next/previous chapter" buttons
|
||||
var activeSection = document.querySelector('#sidebar .active');
|
||||
if (activeSection) {
|
||||
activeSection.scrollIntoView({ block: 'center' });
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<div id="page-wrapper" class="page-wrapper">
|
||||
|
||||
<div class="page">
|
||||
<div id="menu-bar-hover-placeholder"></div>
|
||||
<div id="menu-bar" class="menu-bar sticky">
|
||||
<div class="left-buttons">
|
||||
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
|
||||
<i class="fa fa-bars"></i>
|
||||
</label>
|
||||
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
|
||||
<i class="fa fa-paint-brush"></i>
|
||||
</button>
|
||||
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
|
||||
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
|
||||
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
|
||||
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
|
||||
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
|
||||
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
|
||||
</ul>
|
||||
<button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
|
||||
<i class="fa fa-search"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<h1 class="menu-title"></h1>
|
||||
|
||||
<div class="right-buttons">
|
||||
<a href="https://git.libre-chip.org/libre-chip/website" title="Git repository" aria-label="Git repository">
|
||||
<i id="git-repository-button" class="fa fa-git"></i>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="search-wrapper" class="hidden">
|
||||
<form id="searchbar-outer" class="searchbar-outer">
|
||||
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
|
||||
</form>
|
||||
<div id="searchresults-outer" class="searchresults-outer hidden">
|
||||
<div id="searchresults-header" class="searchresults-header"></div>
|
||||
<ul id="searchresults">
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
|
||||
<script>
|
||||
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
|
||||
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
|
||||
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
|
||||
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
|
||||
});
|
||||
</script>
|
||||
|
||||
<div id="content" class="content">
|
||||
<main>
|
||||
<h1 id="register-renaming"><a class="header" href="#register-renaming">Register Renaming</a></h1>
|
||||
<p>The Internal Register Addresses are of the following format:</p>
|
||||
<pre class="mermaid">---
|
||||
config:
|
||||
packet:
|
||||
bitsPerRow: 8
|
||||
---
|
||||
packet-beta
|
||||
0-3: "Unit Number"
|
||||
4-7: "Unit's Output Register"
|
||||
</pre>
|
||||
<p>The general idea is that every Unit has its own set of output registers that are only ever written by that Unit. Internal Register Addresses are also used as a handle for the corresponding instruction, for tracking when instructions are no longer speculative, cancelling mis-speculated instructions, and tracking when to retire instructions. Therefore, instructions that don't write any registers (such as stores) still have a Internal Register Address allocated for them.</p>
|
||||
<h2 id="l2-register-file"><a class="header" href="#l2-register-file">L2 Register File</a></h2>
|
||||
<p>Because each Unit doesn't necessarily have enough output registers to hold all ISA-level registers (e.g. a pathological sequence of divide instructions targetting each ISA-level register in sequence), the L2 Register File is used to hold ISA-level registers when there aren't enough registers available in the Unit that last wrote to the corresponding ISA-level register. The Register Renamer will automatically insert moves to and from the L2 Register File when a Unit runs out of registers or when ISA-level registers currently in the L2 Register File are read.</p>
|
||||
<h2 id="distributed-registers-may-or-may-not-be-a-good-idea"><a class="header" href="#distributed-registers-may-or-may-not-be-a-good-idea">Distributed Registers (May or may not be a good idea)</a></h2>
|
||||
<p>All Units' Output Registers are actually stored distributed in duplicated register files positioned at the beginning of every Unit's pipeline, this allows for faster reads from Units' Output Registers, as well as allowing register files to be more optimal for FPGAs since FPGAs tend to only support at most 2-port register files.</p>
|
||||
<p><img src="distributed_registers.dia.svg" alt="" /></p>
|
||||
|
||||
</main>
|
||||
|
||||
<nav class="nav-wrapper" aria-label="Page navigation">
|
||||
<!-- Mobile navigation buttons -->
|
||||
<a rel="prev" href="../first_arch/index.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
||||
<i class="fa fa-angle-left"></i>
|
||||
</a>
|
||||
|
||||
<a rel="next prefetch" href="../grants/index.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</a>
|
||||
|
||||
<div style="clear: both"></div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<nav class="nav-wide-wrapper" aria-label="Page navigation">
|
||||
<a rel="prev" href="../first_arch/index.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
||||
<i class="fa fa-angle-left"></i>
|
||||
</a>
|
||||
|
||||
<a rel="next prefetch" href="../grants/index.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</a>
|
||||
</nav>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
window.playground_copyable = true;
|
||||
</script>
|
||||
|
||||
|
||||
<script src="../elasticlunr.min.js"></script>
|
||||
<script src="../mark.min.js"></script>
|
||||
<script src="../searcher.js"></script>
|
||||
|
||||
<script src="../clipboard.min.js"></script>
|
||||
<script src="../highlight.js"></script>
|
||||
<script src="../book.js"></script>
|
||||
|
||||
<!-- Custom JS scripts -->
|
||||
<script src="../mermaid.min.js"></script>
|
||||
<script src="../mermaid-init.js"></script>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Loading…
Add table
Add a link
Reference in a new issue