Float Self-Tagging
summary
Introduces an invertible bitwise transform called self-tagging that maps a subset of IEEE754 doubles into tagged machine words so value and type share one word, implemented as a fast-float predicate (fastonium_p) in two Scheme compilers. Experiments on four microarchitectures show the approach avoids heap allocation for nearly all floats, uses three contiguous exponent intervals for fast cases, yields almost 2× speedup on a collector-heavy compiler and small slowdowns that vanish when a live allocation prelude runs.
AI-written summary · about
chapters (10)
- 0:00Introduction
- 1:45Boxed float performance issues
- 3:09NaN tagging limitations
- 4:57Pointer bias for floats
- 5:37Fast float self-tagging method
- 7:26Risks of arbitrary bit selection
- 8:09Optimal exponent intervals
- 9:10Experimental results and gains
- 10:52Summary and future work
- 11:13Q&A
related talks
36mSelf-Tagging Numbers
58mPortable floating-point calculations
16mWhat About the Integer Numbers?
19mTowards Tagless Interpretation of Stratified System F (Extended Abstract)
30mTaming the Flat Float Array Optimization: Tracking Separability in the Type System
17mMiniFloat-NN: A RISC-V ISA Extension for Low-Precision NN Training
57mFloating-Point to String Conversion in C++: Exploring Algorithms & Performance
31mDependent tagless final
