3 ms·
And I believe all the major 64-bit instruction sets actually use 48-bit addresses at present, so software/compilers can use the top 16 as tag bits. (In addition
by smitherfield 9y ago
And I believe all the major 64-bit instruction sets actually use 48-bit addresses at present, so software/compilers can use the top 16 as tag bits. (In addition to the bottom 3, assuming alignment on 8-byte boundaries).
- JoshTriplett 9y ago> And I believe all the major 64-bit instruction sets actually use 48-bit addresses at present, so software/compilers can use the top 16 as tag bits. Not at all a safe assumption in general; architectures evolve over time, and in addition, that address space is split such that kernel addresses have those bits set, not cleared.
- smitherfield 9y agoDidn't mean to imply that was a good idea, just that it's possible. It looks like the top supercomputers are getting close to surpassing 64 petabytes (56 bits byte-addressed) of virtual memory space, so 16-bit tags are right out. A 48-bit byte-addressed memory space is 256 terabytes, which is getting snug for high-end servers but still 15±5 years out for consumer hardware. 48-bit byte-addressed: 256 terabytes 48-bit word-addressed: 2 petabytes 56-bit byte-addressed: 64 petabytes 56-bit word-addressed: 512 petabytes
- justincormack 9y agoNVDIMMs are about to change this, addressed like memory but with around 10 times as much data, so address space is about to jump.
- dbcurtis 9y agoDecades ago I read an article that pointed out that a corollary to Moore's law is that address bits will be consumed at the rate of 1.5 address bits per year, so it is easy to predict when an architecture will run out of address bits.
- wvenable 9y agoThe address space in x86-64 is specifically designed to prevent the use of unused address bits for tag bits. "The AMD specification requires that the most significant 16 bits of any virtual address, bits 48 through 63, must be copies of bit 47 (in a manner akin to sign extension). If this requirement is not met, the processor will raise an exception." https://en.wikipedia.org/wiki/X86-64#Virtual_address_space_details https://en.wikipedia.org/wiki/X86-64#Virtual_address_space_d...
- userbinator 9y agoThat applies only when you are actually using such an address for an access; you are free to store anything in those upper 16 bits as long as they are masked off when it's actually used to access memory.