Data structure alignment: Difference between revisions

Content deleted Content added
Aij (talk | contribs)
No edit summary
Wiarthurhu (talk | contribs)
restore examples of doomed architecture due to alignment problems.
Line 17:
==Compatibility==
 
Because the main (only?) advantage to supporting unaligned access is that some memory can be used which would otherwise be lost as padding, and because the cost of supporting it is so high, many modern [[computer architecture]] designs don't support it at all. Most (all?) of the ones that do, require the [[operating system|OS]] to do most of the work. Older designs (notably [[x68]]) stilldo need tonot implement full support in hardware.
 
Some programs which were written for an architecture that did not enforce aligmnent may use unaligned memory access (either intentionally or not). This can be a problem when porting said programs.
 
One way to increase in [[RISC]] processors which
are designed to maximize raw performance is to require data to loaded or
stored on a word boundary. So though memory is commonly addressed by
8 bit bytes, loading a 32 bit integer or 64 bit floating point number
would be required to be start at every 64 bits on a 64 bit machine.
The processor could flag a fault if it were asked to load a number
which was not on such a boundary, but this would result in a slower call to a routine which would effectively
figure out which word or words contained the data and extract the equivalent
value.
 
This caused difficulty when the team from [[Mosaic Software]] ported
their [[Twin Spreadsheet]] to the [[68000]] based Atari. The Intel [[8086]]
architecture had no such restrictions.
 
It would also
cause difficulties in porting Microsoft Office to Windows NT on [[MIPS]]
and [[PowerPC]] for [[NEC]] and [[IBM]]. Since the software was not written with such restrictions
in mind, designers had to set a bit in the O/S to enable non-aligned data.
However since this bit was masked with other flags, it was impossible to
keep the O/S from faulting on non-aligned data. Both platforms ulimately
failed as platforms for hosting Windows applications. This may be
one reason for the continued dominance of the x86 architecture over rivals.
 
 
==Typical aligment of C structs on x86==