Architectures with strict alignment?
Erich Dollansky
oceanare at pacific.net.sg
Mon Dec 31 04:30:45 PST 2007
Hi,
Kostik Belousov wrote:
> On Mon, Dec 31, 2007 at 05:38:43PM +0800, Erich Dollansky wrote:
>> Kostik Belousov wrote:
>>> On Sat, Dec 29, 2007 at 01:12:04PM +0200, Kostik Belousov wrote:
>>>> On Sat, Dec 29, 2007 at 12:14:11AM -0800, Kip Macy wrote:
>>> I.e., it seems that gcc does not feel too guilty generating unaligned
>>> half-word writes on i386. :(
>> this should not be a problem inside a cache line.
>>
>> If the access goes accross two cache lines and the other cache line is
>> not in the cache, it becomes real difficult.
>>
>> I can't tell you what the hardware actually does in this case.
>>
>> It should read the second affected cache line into the cache. But what
>> happens if the second affected cache line is blocked by another CPU
>> while the current CPU blocks the first cache line?
>
> From the manual, 253668, 7.1.1:
>
> I think we might get any half of the operation as a result.
so, both CPUs are blocked as none can access the other cache line.
Is there really nothing in a normal PC to handle this?
I do not know. The hardware I developed earlier was able to handle this
by aborting both bus cycles.
It was then task of the operating system to handle this.
Erich
More information about the freebsd-hackers
mailing list