Multi-core computing speeds up computation by parallelizing tasks amongst several simultaneously-running compute cores. With multiple cores, data should be near-simultaneously and rapidly accessible by each core; this puts excessive stresses on the CPU-memory bus. Data formats are typically uncompressed, e.g., they assign a fixed number of bits to a data type, no matter how small the actual values are, and without regard to the distribution of those values. Data in uncompressed form consumes substantial memory, cache capacity, and memory bandwidth. This disclosure describes techniques that enable a compute core to fetch data in units of bits, rather than bytes. The core operates directly on compressed, prefix-encoded, data streams; fetches only a few bits (instead of one or more bytes, as is typical); and operates on that compressed data. The techniques improve the efficiency of multi-core computing by reducing the load on the cache, the memory, and the core-memory buses.

Creative Commons License

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 License.