Tips for making the most of 64-bit architectures in langage design, libraries or garbage collection
This work addresses low-level programming challenges for language designers and library developers by leveraging unused bits in 64-bit architectures, offering incremental improvements rather than a paradigm shift.
The paper tackles the underutilization of 64-bit address registers by proposing three concrete applications: multi-precision integers for better performance and RAM savings, UTF-8 string handling for easier indexing, and enhancements to garbage collectors like mark & sweep. It demonstrates these ideas through examples in language design and libraries, though specific numerical results are not provided.
The 64-bit architectures that have become standard today offer unprecedented low-level programming possibilities. For the first time in the history of computing, the size of address registers far exceeded the physical capacity of their bus.After a brief reminder of the possibilities offered by the small size of addresses compared to the available 64 bits,we develop three concrete examples of how the vacant bits of these registers can be used.Among these examples, two of them concern the implementation of a library for a new statically typed programming language.Firstly, the implementation of multi-precision integers, with the aim of improving performance in terms of both calculation speed and RAM savings.The second example focuses on the library's handling of UTF-8 character strings.Here, the idea is to make indexing easier by ignoring the physical size of each UTF-8 characters.Finally, the third example is a possible enhancement of garbage collectors, in particular the mark \& sweep for the object marking phase.