misaligned read handling on various processors
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Tue Oct 6 08:05:09 PDT 2009
Don wrote:
> Andrei Alexandrescu wrote:
>> Consider:
>>
>> struct A {
>> char a;
>> align(1) int b;
>> }
>>
>> Accesses to b will be rather slow because it's a misaligned read. My
>> question is, how exactly is that handled on various processors? I seem
>> to recall various anecdotes (including that misaligned reads on Intel
>> cause a trap that does the needed double reading, shifting, and
>> masking), but Google search has surprisingly little on the matter.
>
> Not on Intel. IIRC the trapping happens on Sparc. Misalignment on x86
> doesn't hurt much at all, except for doubles and reals.
> For the case you mention there'll probably be no misalignment penalty at
> all, the latency gets hidden in the early stages of the pipeline.
> Although there may be a penalty if you cross a cache line boundary.
>
Thanks! Are there some online docs that discuss that in detail?
Andrei
More information about the Digitalmars-d
mailing list