Commit c45164be authored by Connor Abbott's avatar Connor Abbott
Browse files

bifrost: Add patent on branch convergence/divergence

parent 51f37726
......@@ -16,6 +16,7 @@ Usually, for our purpose, it's better to skip the claims section and focus on th
-[US Patent Application US 2016-0364209 A1], describing a way to implement more efficient argument reduction for logarithms using a lookup table. It seems that the Itanium math libraries used the exact same technique, described in a paper[here], specifically in the "novel reduction" section. Yes, this means the patent application is probably bogus. No, I'm not a lawyer.
-[WO2017125700A1]. This seems to describe encoding two different commutative operations with the same opcode, differentiating between them by whether the larger source comes first (what about when the sources are the same?). This is used for encoding the abs modifier for fp16 instructions.
-[US20140354644A1]. This describes the scoreboard dependency method described in "Dependency tracking."
-[US20170286107A1]. Describes how divergence/reconvergence is handled, before describing a modification to handle single-thread locking.
= Overview
Bifrost is a clause-oriented architecture. Instructions are grouped into _clauses_ that consist of instructions that can be executed back-to-back without any scheduling decisions. A clause consists of a _clause header_ with information required for scheduling followed by a series of instructions and constants (immediates) referenced by the instructions. Instead of choosing instructions to run, the scheduler chooses clauses to run. As we'll see, instruction decoding is also per-clause instead of per-instruction. Instructions and immediates are packed into a clause and unpacked at run-time. That way, instructions can be packed to save space, and the unpacking cost is amortized over the entire clause.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment