Skip to content

Commit

Permalink
Deploying to gh-pages from @ d07b8dd 🚀
Browse files Browse the repository at this point in the history
  • Loading branch information
Dolu1990 committed Sep 8, 2024
1 parent d70a769 commit 63347f0
Show file tree
Hide file tree
Showing 63 changed files with 452 additions and 442 deletions.
2 changes: 1 addition & 1 deletion master/.buildinfo
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 6ed152ca14bbff66d5bd76982b97c0dc
config: 3e6a844c07a3927961e313365b2069b5
tags: 645f666f9bcd5a90fca523b33c5a78b7
Binary file modified master/.doctrees/VexiiRiscv/BranchPrediction/index.doctree
Binary file not shown.
Binary file modified master/.doctrees/VexiiRiscv/Debug/index.doctree
Binary file not shown.
Binary file modified master/.doctrees/VexiiRiscv/Debug/jtag.doctree
Binary file not shown.
Binary file modified master/.doctrees/VexiiRiscv/Decode/index.doctree
Binary file not shown.
Binary file modified master/.doctrees/VexiiRiscv/Execute/custom.doctree
Binary file not shown.
Binary file modified master/.doctrees/VexiiRiscv/Execute/fpu.doctree
Binary file not shown.
Binary file modified master/.doctrees/VexiiRiscv/Execute/index.doctree
Binary file not shown.
Binary file modified master/.doctrees/VexiiRiscv/Execute/introduction.doctree
Binary file not shown.
Binary file modified master/.doctrees/VexiiRiscv/Execute/lsu.doctree
Binary file not shown.
Binary file modified master/.doctrees/VexiiRiscv/Execute/plugins.doctree
Binary file not shown.
Binary file modified master/.doctrees/VexiiRiscv/Fetch/index.doctree
Binary file not shown.
Binary file modified master/.doctrees/VexiiRiscv/Framework/index.doctree
Binary file not shown.
Binary file modified master/.doctrees/VexiiRiscv/HowToUse/index.doctree
Binary file not shown.
Binary file modified master/.doctrees/VexiiRiscv/Introduction/index.doctree
Binary file not shown.
Binary file modified master/.doctrees/VexiiRiscv/Performance/index.doctree
Binary file not shown.
Binary file modified master/.doctrees/VexiiRiscv/Soc/index.doctree
Binary file not shown.
Binary file modified master/.doctrees/VexiiRiscv/Soc/litex.doctree
Binary file not shown.
Binary file modified master/.doctrees/VexiiRiscv/Soc/microsoc.doctree
Binary file not shown.
Binary file modified master/.doctrees/environment.pickle
Binary file not shown.
Binary file modified master/.doctrees/index.doctree
Binary file not shown.
12 changes: 6 additions & 6 deletions master/VexiiRiscv/BranchPrediction/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@
<li class="toctree-l2"><a class="reference internal" href="../Framework/index.html#scala-spinalhdl">Scala / SpinalHDL</a></li>
<li class="toctree-l2"><a class="reference internal" href="../Framework/index.html#plugin">Plugin</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../Framework/index.html#simple-all-in-one-example">Simple all-in-one example</a></li>
<li class="toctree-l3"><a class="reference internal" href="../Framework/index.html#negociation-example">Negociation example</a></li>
<li class="toctree-l3"><a class="reference internal" href="../Framework/index.html#negotiation-example">Negotiation example</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../Framework/index.html#database">Database</a></li>
Expand Down Expand Up @@ -254,7 +254,7 @@ <h1>Branch Prediction<a class="headerlink" href="#branch-prediction" title="Perm
<ul class="simple">
<li><p>During fetch, a BTB, GShare, RAS memory is used to provide an early branch prediction (BtbPlugin / GSharePlugin)</p></li>
<li><p>In Decode, the DecodePredictionPlugin will ensure that no “none jump/branch instruction”” predicted as a jump/branch continues down the pipeline.</p></li>
<li><p>In Execute, the prediction made is checked and eventualy corrected. Also a stream of data is generated to feed the BTB / GShare memories with good data to learn.</p></li>
<li><p>In Execute, the prediction made is checked and eventually corrected. Also a stream of data is generated to feed the BTB / GShare memories with good data to learn.</p></li>
</ul>
<p>Here is a diagram of the whole architecture :</p>
<img alt="../../_images/branch_prediction.png" src="../../_images/branch_prediction.png" />
Expand All @@ -266,11 +266,11 @@ <h2>BtbPlugin<a class="headerlink" href="#btbplugin" title="Permalink to this he
<li><p>Implement a branch target buffer in the fetch pipeline</p></li>
<li><p>Implement a return address stack buffer</p></li>
<li><p>Predict which slices of the fetched word are the last slice of a branch/jump</p></li>
<li><p>Predict the branch/ĵump target</p></li>
<li><p>Predict the branch/jump target</p></li>
<li><p>Use the FetchConditionalPrediction plugin (GSharePlugin) to know if branch should be taken</p></li>
<li><p>Apply the prediction (flush + pc update + history update)</p></li>
<li><p>Learn using the LearnPlugin interface. Only learn on missprediction. To avoid write to read hazard, the fetch stage is blocked when it learn.</p></li>
<li><p>Implement “ways” named chunks which are staticaly assigned to groups of word’s slices, allowing to predict multiple branch/jump present in the same word</p></li>
<li><p>Learn using the LearnPlugin interface. Only learn on misprediction. To avoid write to read hazard, the fetch stage is blocked when it learn.</p></li>
<li><p>Implement “ways” named chunks which are statically assigned to groups of word’s slices, allowing to predict multiple branch/jump present in the same word</p></li>
</ul>
</section>
<section id="gshareplugin">
Expand Down Expand Up @@ -326,7 +326,7 @@ <h2>LearnPlugin<a class="headerlink" href="#learnplugin" title="Permalink to thi
<!-- source/_templates/footer.html -->

<div class="doc-footer-current-version"><p>
Version: master git~867f372 2024-09-05
Version: master git~d07b8dd 2024-09-08
</p></div>


Expand Down
4 changes: 2 additions & 2 deletions master/VexiiRiscv/Debug/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@
<li class="toctree-l2"><a class="reference internal" href="../Framework/index.html#scala-spinalhdl">Scala / SpinalHDL</a></li>
<li class="toctree-l2"><a class="reference internal" href="../Framework/index.html#plugin">Plugin</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../Framework/index.html#simple-all-in-one-example">Simple all-in-one example</a></li>
<li class="toctree-l3"><a class="reference internal" href="../Framework/index.html#negociation-example">Negociation example</a></li>
<li class="toctree-l3"><a class="reference internal" href="../Framework/index.html#negotiation-example">Negotiation example</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../Framework/index.html#database">Database</a></li>
Expand Down Expand Up @@ -286,7 +286,7 @@ <h1>Debug<a class="headerlink" href="#debug" title="Permalink to this heading">
<!-- source/_templates/footer.html -->

<div class="doc-footer-current-version"><p>
Version: master git~867f372 2024-09-05
Version: master git~d07b8dd 2024-09-08
</p></div>


Expand Down
4 changes: 2 additions & 2 deletions master/VexiiRiscv/Debug/jtag.html
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@
<li class="toctree-l2"><a class="reference internal" href="../Framework/index.html#scala-spinalhdl">Scala / SpinalHDL</a></li>
<li class="toctree-l2"><a class="reference internal" href="../Framework/index.html#plugin">Plugin</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../Framework/index.html#simple-all-in-one-example">Simple all-in-one example</a></li>
<li class="toctree-l3"><a class="reference internal" href="../Framework/index.html#negociation-example">Negociation example</a></li>
<li class="toctree-l3"><a class="reference internal" href="../Framework/index.html#negotiation-example">Negotiation example</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../Framework/index.html#database">Database</a></li>
Expand Down Expand Up @@ -289,7 +289,7 @@ <h1>JTAG<a class="headerlink" href="#jtag" title="Permalink to this heading">
<!-- source/_templates/footer.html -->

<div class="doc-footer-current-version"><p>
Version: master git~867f372 2024-09-05
Version: master git~d07b8dd 2024-09-08
</p></div>


Expand Down
16 changes: 8 additions & 8 deletions master/VexiiRiscv/Decode/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@
<li class="toctree-l2"><a class="reference internal" href="../Framework/index.html#scala-spinalhdl">Scala / SpinalHDL</a></li>
<li class="toctree-l2"><a class="reference internal" href="../Framework/index.html#plugin">Plugin</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../Framework/index.html#simple-all-in-one-example">Simple all-in-one example</a></li>
<li class="toctree-l3"><a class="reference internal" href="../Framework/index.html#negociation-example">Negociation example</a></li>
<li class="toctree-l3"><a class="reference internal" href="../Framework/index.html#negotiation-example">Negotiation example</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../Framework/index.html#database">Database</a></li>
Expand Down Expand Up @@ -265,17 +265,17 @@ <h2>DecodePipelinePlugin<a class="headerlink" href="#decodepipelineplugin" title
</section>
<section id="alignerplugin">
<h2>AlignerPlugin<a class="headerlink" href="#alignerplugin" title="Permalink to this heading"></a></h2>
<p>Decode the words froms the fetch pipeline into aligned instructions in the decode pipeline. Its complexity mostly come from the necessity to support having RVC [and BTB], mostly by adding additional cases to handle.</p>
<p>Decode the words from the fetch pipeline into aligned instructions in the decode pipeline. Its complexity mostly come from the necessity to support having RVC [and BTB], mostly by adding additional cases to handle.</p>
<ol class="arabic simple">
<li><p>RVC allows 32 bits instruction to be unaligned, meaning they can cross between 2 fetched words, so it need to have some internal buffer / states to work.</p></li>
<li><p>The BTB may have predicted (falsly) a jump instruction where there is none, which may cut the fetch of an 32 bits instruction in the middle.</p></li>
<li><p>The BTB may have predicted (falsely) a jump instruction where there is none, which may cut the fetch of an 32 bits instruction in the middle.</p></li>
</ol>
<p>The AlignerPlugin is designed as following :</p>
<ul class="simple">
<li><p>Has a internal fetch word buffer in oder to support 32 bits instruction with RVC</p></li>
<li><p>First it scan at every possible instruction position, ex : RVC with 64 bits fetch words =&gt; 2x64/16 scanners. Extracting the instruction length, presence of all the instruction data (slices) and necessity to redo the fetch because of a bad BTB prediction.</p></li>
<li><p>Then it has one extractor per decoding lane. They will check the scanner for the firsts valid instructions.</p></li>
<li><p>Then each extractor is feeded into the decoder pipeline.</p></li>
<li><p>Then each extractor is fed into the decoder pipeline.</p></li>
</ul>
<img alt="../../_images/aligner.png" src="../../_images/aligner.png" />
</section>
Expand All @@ -284,7 +284,7 @@ <h2>DecoderPlugin<a class="headerlink" href="#decoderplugin" title="Permalink to
<p>Will :</p>
<ul class="simple">
<li><p>Decode instruction</p></li>
<li><p>Generate ilegal instruction exception</p></li>
<li><p>Generate illegal instruction exception</p></li>
<li><p>Generate “interrupt” instruction</p></li>
</ul>
</section>
Expand All @@ -301,13 +301,13 @@ <h2>DispatchPlugin<a class="headerlink" href="#dispatchplugin" title="Permalink
<li><p>Collect instruction from the end of the decode pipeline</p></li>
<li><p>Try to dispatch them ASAP on the multiple “layers” available</p></li>
</ul>
<p>Here is a few explenation about execute lanes and layers :</p>
<p>Here is a few explanation about execute lanes and layers :</p>
<ul class="simple">
<li><p>A execute lane represent a path toward which an instruction can be executed.</p></li>
<li><p>A execute lane can have one or many layers, which can be used to implement things as early ALU / late ALU</p></li>
<li><p>Each layer will have static a scheduling priority</p></li>
</ul>
<p>The DispatchPlugin doesn’t require lanes or layers to be symetric in any way.</p>
<p>The DispatchPlugin doesn’t require lanes or layers to be symmetric in any way.</p>
</section>
</section>

Expand Down Expand Up @@ -340,7 +340,7 @@ <h2>DispatchPlugin<a class="headerlink" href="#dispatchplugin" title="Permalink
<!-- source/_templates/footer.html -->

<div class="doc-footer-current-version"><p>
Version: master git~867f372 2024-09-05
Version: master git~d07b8dd 2024-09-08
</p></div>


Expand Down
Loading

0 comments on commit 63347f0

Please sign in to comment.