--
You received this message because you are subscribed to the Google Groups "Unum Computing" group.
To unsubscribe from this group and stop receiving emails from it, send an email to unum-computin...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/unum-computing/bee81482-5049-4029-a2d7-1c2d42bca86d%40googlegroups.com.
48-bit posits with es = 2 (the proposed choice for all posit sizes in the Posit Standard 4.0 Draft) would have almost 14 decimals of accuracy in the "sweet spot" (magnitudes between 1/16 and 16) and a dynamic range about about 4e–56 to 2.5e+55. Sounds pretty good for HPC codes currently using 64-bit floats.The big downside of using a word size that is not a power of 2 is that division becomes very ugly. If you know a binary size and want to know how many words that is, you need to divide by 48. There is probably no way, ever, to make this as cheap as a shift operation. In the early IBM and UNIVAC days, people learned about this cost with their 36-bit architectures, leading to IBM's wrenching decision to go to 32-bit architectures with their System/360 mainframe family in the 1960s.Whenever dabbling in architectures where something is not an integer power of 2, make sure you will seldom need to divide!John
On May 27, 2020, at 5:05 AM, jfcg...@gmail.com wrote:
Hi,What would you think of an imaginary 48-bit architecture with native support for:- 48 bit pointers- 48 bit integers- 16 / 32 / 48 bit positsthat will target embedded, mobile, desktop & server market? all with single architecture? Designed with concurrency and efficiency in mind as first class citizens..Does that make sense?--
You received this message because you are subscribed to the Google Groups "Unum Computing" group.
To unsubscribe from this group and stop receiving emails from it, send an email to unum-co...@googlegroups.com.
I’ve a 52-bit architecture based around 13-bit bytes (with variable length instructions). I’ve been toying with the idea of retro-fitting it to use 52-bit posits instead of regular fp. There are about 8-bits available for an immediate posit value. The 52-bit core is about 30% smaller than a 64-bit core would be while offering much the same functionality.
I like 40-bit better. That gives you 1 TiB of memory addressing. 40-bits would be ideal for mobile, and maybe desktop, other than the power-of-two problem. (Servers need more memory long-term, as some of them are already hitting 1 TiB.)
I think 40-bit integers, floats, and posits would be ideal for lots of everyday computing (and for encoding image formats and graphics). In this scenario I'd also have 20-bit number types instead of 16-bit. I'm also intrigued by logarithmic number systems.It's not optimal to have one architecture for embedded, mobile, desktop, and server. Embedded doesn't need 48 bits, or even 40. Or even 32 in many cases.Note that the "64-bit" address space on Intel/AMD is actually 48-bit or thereabouts on actual systems.
--
You received this message because you are subscribed to the Google Groups "Unum Computing" group.
To unsubscribe from this group and stop receiving emails from it, send an email to unum-computin...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/unum-computing/1bc30cb6-b952-497c-a827-0c73de2c74d1n%40googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to unum-computin...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/unum-computing/427d4898-34c7-4039-a7ec-d816ab24abf3o%40googlegroups.com.
There is a very simple reason why computer architectures favor storage for which the bit size is a power of 2: Address calculationIf you need to access X[i] where X is an indexed array of, say, 40-bit values, then you need to computer 40 × i plus the base address of X. Integer multiplication is slow and expensive in general. If the data are an integer power of 2, the multiplication can be done with a left shift, one of the cheapest instructions there is.
While it occurs less often, there are times when an address must be converted back to an index. Dividing by 40 is even more painful than multiplying by 40, whereas with power-of-two sizes, it's simply a right shift.
I've had to explain this to computer architects of multicore processors when they produce things like 48-core processors. Data parallelism requires distributing arrays across processors, and by providing a number of cores that is not a power of 2, they force the use of integer multiply and divide operations in parallel application code.