This repository has been archived on 2026-08-21. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
ciciec2026/doc/reports/system/matmul_dataflow_gantt.svg
2026-07-15 18:22:17 +08:00

181 lines
11 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="1800" height="940" viewBox="0 0 1800 940">
<defs>
<style>
text { font-family: "Noto Sans CJK SC", "Source Han Sans SC", sans-serif; fill: #17202a; letter-spacing: 0; }
.title { font-size: 31px; font-weight: 700; }
.subtitle { font-size: 18px; fill: #52606d; }
.lane { font-size: 20px; font-weight: 600; }
.tick { font-size: 16px; fill: #52606d; }
.bartext { font-size: 17px; font-weight: 600; }
.small { font-size: 15px; }
.grid { stroke: #d8dee4; stroke-width: 1; }
.axis { stroke: #657786; stroke-width: 2; }
.load { fill: #d7e9ff; stroke: #2674c9; stroke-width: 2; }
.compute { fill: #d8f3dc; stroke: #27864b; stroke-width: 2; }
.result { fill: #e8e0fa; stroke: #7254b3; stroke-width: 2; }
.crc { fill: #ffe8bd; stroke: #c77900; stroke-width: 2; }
.control { fill: #e8edf2; stroke: #62717f; stroke-width: 2; }
.done { fill: #d9f3ef; stroke: #168477; stroke-width: 2; }
.disabled { fill: #f4f5f6; stroke: #8a949e; stroke-width: 2; stroke-dasharray: 9 7; }
.prefetch { fill: none; stroke: #2674c9; stroke-width: 2; stroke-dasharray: 7 5; }
.arrow { stroke: #657786; stroke-width: 2; fill: none; marker-end: url(#arrowhead); }
</style>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#657786"/>
</marker>
</defs>
<rect width="1800" height="940" fill="#ffffff"/>
<text x="42" y="48" class="title">Matmul 快速通道数据流甘特图</text>
<text x="42" y="78" class="subtitle">展示前四组进入稳态及最后收尾过程;阶段宽度用于表达依赖和重叠关系,不按周期严格缩放</text>
<!-- Time axis and grid -->
<line x1="350" y1="118" x2="1740" y2="118" class="axis"/>
<g>
<line x1="350" y1="118" x2="350" y2="846" class="grid"/>
<line x1="470" y1="118" x2="470" y2="846" class="grid"/>
<line x1="650" y1="118" x2="650" y2="846" class="grid"/>
<line x1="830" y1="118" x2="830" y2="846" class="grid"/>
<line x1="1010" y1="118" x2="1010" y2="846" class="grid"/>
<line x1="1190" y1="118" x2="1190" y2="846" class="grid"/>
<line x1="1370" y1="118" x2="1370" y2="846" class="grid"/>
<line x1="1510" y1="118" x2="1510" y2="846" class="grid"/>
<line x1="1640" y1="118" x2="1640" y2="846" class="grid"/>
<line x1="1740" y1="118" x2="1740" y2="846" class="grid"/>
</g>
<g text-anchor="middle">
<text x="410" y="108" class="tick">启动</text>
<text x="560" y="108" class="tick">组0装载</text>
<text x="740" y="108" class="tick">组1装载</text>
<text x="920" y="108" class="tick">组2装载</text>
<text x="1100" y="108" class="tick">组3装载</text>
<text x="1280" y="108" class="tick">稳态流水</text>
<text x="1440" y="108" class="tick">末组计算</text>
<text x="1575" y="108" class="tick">CRC排空</text>
<text x="1690" y="108" class="tick">完成</text>
</g>
<!-- Lane separators and labels -->
<g>
<line x1="34" y1="200" x2="1740" y2="200" class="grid"/>
<line x1="34" y1="280" x2="1740" y2="280" class="grid"/>
<line x1="34" y1="360" x2="1740" y2="360" class="grid"/>
<line x1="34" y1="440" x2="1740" y2="440" class="grid"/>
<line x1="34" y1="520" x2="1740" y2="520" class="grid"/>
<line x1="34" y1="600" x2="1740" y2="600" class="grid"/>
<line x1="34" y1="680" x2="1740" y2="680" class="grid"/>
<line x1="34" y1="760" x2="1740" y2="760" class="grid"/>
<line x1="34" y1="840" x2="1740" y2="840" class="grid"/>
</g>
<g>
<text x="44" y="170" class="lane">批量序列器</text>
<text x="44" y="250" class="lane">CDMA / AXI读</text>
<text x="44" y="330" class="lane">Bank 0 A/B</text>
<text x="44" y="410" class="lane">Bank 1 A/B</text>
<text x="44" y="490" class="lane">单一乘加流水线</text>
<text x="44" y="570" class="lane">C结果与退休</text>
<text x="44" y="650" class="lane">CRC结果FIFO</text>
<text x="44" y="730" class="lane">递归CRC32</text>
<text x="44" y="810" class="lane">ExtRAM结果写回</text>
</g>
<!-- Sequencer -->
<rect x="360" y="142" width="105" height="42" rx="4" class="control"/>
<text x="412" y="169" text-anchor="middle" class="bartext">清状态/CRC</text>
<rect x="470" y="142" width="1035" height="42" rx="4" class="control"/>
<text x="987" y="169" text-anchor="middle" class="bartext">提交读请求、维护双Bank有效位与计算队列</text>
<rect x="1510" y="142" width="125" height="42" rx="4" class="crc"/>
<text x="1572" y="169" text-anchor="middle" class="bartext">等待CRC空闲</text>
<rect x="1640" y="142" width="95" height="42" rx="4" class="done"/>
<text x="1687" y="169" text-anchor="middle" class="bartext">DONE</text>
<!-- CDMA shared read channel -->
<rect x="470" y="222" width="175" height="42" rx="4" class="load"/>
<text x="557" y="249" text-anchor="middle" class="bartext">G0: 128 B -> B0</text>
<rect x="650" y="222" width="175" height="42" rx="4" class="load"/>
<text x="737" y="249" text-anchor="middle" class="bartext">G1: 128 B -> B1</text>
<rect x="830" y="222" width="175" height="42" rx="4" class="load"/>
<text x="917" y="249" text-anchor="middle" class="bartext">G2: 128 B -> B0</text>
<rect x="1010" y="222" width="175" height="42" rx="4" class="load"/>
<text x="1097" y="249" text-anchor="middle" class="bartext">G3: 128 B -> B1</text>
<rect x="1190" y="222" width="315" height="42" rx="4" class="load"/>
<text x="1347" y="249" text-anchor="middle" class="bartext">G4 ... G4999 顺序返回</text>
<path d="M 585 216 L 735 216 M 765 216 L 915 216 M 945 216 L 1095 216" class="prefetch"/>
<text x="1310" y="216" text-anchor="middle" class="small" fill="#2674c9">共享R通道:1个活动突发 + 1个预取请求</text>
<!-- Bank buffers -->
<rect x="470" y="302" width="175" height="42" rx="4" class="load"/>
<text x="557" y="329" text-anchor="middle" class="bartext">装载 G0</text>
<rect x="650" y="302" width="175" height="42" rx="4" class="compute"/>
<text x="737" y="329" text-anchor="middle" class="bartext">供计算 G0</text>
<rect x="830" y="302" width="175" height="42" rx="4" class="load"/>
<text x="917" y="329" text-anchor="middle" class="bartext">装载 G2</text>
<rect x="1010" y="302" width="175" height="42" rx="4" class="compute"/>
<text x="1097" y="329" text-anchor="middle" class="bartext">供计算 G2</text>
<rect x="1190" y="302" width="315" height="42" rx="4" class="control"/>
<text x="1347" y="329" text-anchor="middle" class="bartext">偶数组循环复用</text>
<rect x="470" y="382" width="175" height="42" rx="4" class="control"/>
<text x="557" y="409" text-anchor="middle" class="bartext">空闲</text>
<rect x="650" y="382" width="175" height="42" rx="4" class="load"/>
<text x="737" y="409" text-anchor="middle" class="bartext">装载 G1</text>
<rect x="830" y="382" width="175" height="42" rx="4" class="compute"/>
<text x="917" y="409" text-anchor="middle" class="bartext">供计算 G1</text>
<rect x="1010" y="382" width="175" height="42" rx="4" class="load"/>
<text x="1097" y="409" text-anchor="middle" class="bartext">装载 G3</text>
<rect x="1190" y="382" width="315" height="42" rx="4" class="control"/>
<text x="1347" y="409" text-anchor="middle" class="bartext">奇数组循环复用</text>
<!-- Shared compute pipeline -->
<rect x="650" y="462" width="165" height="42" rx="4" class="compute"/>
<text x="732" y="489" text-anchor="middle" class="bartext">G0 发射16项</text>
<rect x="815" y="462" width="165" height="42" rx="4" class="compute"/>
<text x="897" y="489" text-anchor="middle" class="bartext">G1 发射16项</text>
<rect x="980" y="462" width="165" height="42" rx="4" class="compute"/>
<text x="1062" y="489" text-anchor="middle" class="bartext">G2 发射16项</text>
<rect x="1145" y="462" width="165" height="42" rx="4" class="compute"/>
<text x="1227" y="489" text-anchor="middle" class="bartext">G3 发射16项</text>
<rect x="1310" y="462" width="195" height="42" rx="4" class="compute"/>
<text x="1407" y="489" text-anchor="middle" class="bartext">... 末组</text>
<!-- Results and retirement -->
<rect x="690" y="542" width="165" height="42" rx="4" class="result"/>
<text x="772" y="569" text-anchor="middle" class="bartext">G0 C[0..15]</text>
<rect x="855" y="542" width="165" height="42" rx="4" class="result"/>
<text x="937" y="569" text-anchor="middle" class="bartext">G1 C[0..15]</text>
<rect x="1020" y="542" width="165" height="42" rx="4" class="result"/>
<text x="1102" y="569" text-anchor="middle" class="bartext">G2 C[0..15]</text>
<rect x="1185" y="542" width="320" height="42" rx="4" class="result"/>
<text x="1345" y="569" text-anchor="middle" class="bartext">G3 ... G4999;完成即退休</text>
<!-- CRC decoupling -->
<rect x="690" y="622" width="815" height="42" rx="4" class="crc"/>
<text x="1097" y="649" text-anchor="middle" class="bartext">每个66位C元素入FIFO;队列接近阈值时反压乘加发射</text>
<rect x="710" y="702" width="925" height="42" rx="4" class="crc"/>
<text x="1172" y="729" text-anchor="middle" class="bartext">递归CRC32:每个元素分两步处理,共12字节;末组之后继续排空</text>
<!-- Disabled writeback -->
<rect x="470" y="782" width="1165" height="42" rx="4" class="disabled"/>
<line x1="485" y1="815" x2="1620" y2="791" stroke="#8a949e" stroke-width="2"/>
<text x="1052" y="809" text-anchor="middle" class="bartext" fill="#68737d">快速通道:跳过192 B/组的C结果写回(标准模式才启用)</text>
<!-- Dependency arrows -->
<path d="M 645 264 L 670 302" class="arrow"/>
<path d="M 825 264 L 850 382" class="arrow"/>
<path d="M 815 504 L 835 542" class="arrow"/>
<path d="M 855 584 L 875 622" class="arrow"/>
<path d="M 1505 584 L 1550 702" class="arrow"/>
<path d="M 1635 723 L 1660 184" class="arrow"/>
<!-- Legend -->
<g transform="translate(42 884)">
<rect x="0" y="-17" width="28" height="20" class="load"/><text x="38" y="0" class="small">ExtRAM到Bank装载</text>
<rect x="220" y="-17" width="28" height="20" class="compute"/><text x="258" y="0" class="small">乘加计算</text>
<rect x="410" y="-17" width="28" height="20" class="result"/><text x="448" y="0" class="small">C结果/退休</text>
<rect x="600" y="-17" width="28" height="20" class="crc"/><text x="638" y="0" class="small">CRC缓冲与更新</text>
<rect x="835" y="-17" width="28" height="20" class="disabled"/><text x="873" y="0" class="small">快速模式禁用路径</text>
<text x="1160" y="0" class="small" fill="#52606d">系统时钟:50 MHz</text>
</g>
</svg>