Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
524 views
in Technique[技术] by (71.8m points)

x86 64 - Why floating point registers are different than general purpose ones

Most architectures have different set of registers for storing regular integers and floating points. From a binary storage point of view, it shouldn't matter where things are stored right? it's just 1's and 0's, couldn't they pipe the same general purpose registers into floating point ALUs?

SIMD (xmm in x64) registers are capable of storing both Floating point and regular integers, so why doesn't the same concept apply to regular registers?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

For practical processor design, there are a lot more issues to consider than "a binary storage point of view".

For example, wire lengths matter, both because parallel paths that can move dozens of bits at a time take chip space, and because getting a signal along a wire takes time. Not much time for fractions of an inch, but still significant when a cycle is a fraction of a nanosecond. For comparison, light in a vacuum can travel about 11.8 inches in one nanosecond. Electrical signals in wires are slower.

That makes it a good idea to put registers close to the arithmetic unit that is going to use their contents. With separate integer and floating point registers the processor can have integer registers close to the general ALU, and floating point registers close to the floating point unit.

There are also issues of limited numbers of paths for reading and writing registers. With separate register banks, the ALU and the floating point unit have independent register access paths, allowing for more things to happen at the same time. Cycle times are no longer dropping rapidly, and one of the other sources of processor speed improvement is doing more in parallel.

I don't know which of these issues matter currently, but in general separating the register banks gives processor designers opportunities they would not have if the banks were combined.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...