[phobos] byte alignment for arrays

Sean Kelly sean at invisibleduck.org
Mon Jun 28 12:26:14 PDT 2010


Yes. I think OSX may actually require 16 byte alignment in some cases.  SSE seems like a major issue as well. 

Sent from my iPhone

On Jun 28, 2010, at 11:36 AM, Steve Schveighoffer <schveiguy at yahoo.com> wrote:

> Recently, this bug has surfaced: http://d.puremagic.com/issues/show_bug.cgi?id=4400
> 
> In a nutshell, sometimes the byte alignment of arrays is 8 bytes instead 16 bytes.
> 
> This was caused by my array append patch, because in large arrays, I store the length at the front of the array.  With some queries before I created my patch, I was told that 8 byte alignment was fine.  However, the alignment is easy to change since it's a couple specific functions that determine the padding and alignment.  So changing to 16 bytes is not an issue technically, and functionally, this is only on PAGE sized arrays and larger, so 16 bytes vs. 8 bytes isn't likely to cause problems.
> 
> Bearophile's main argument stems from this.  I am not a processor or assembly expert, so I have no idea about this at all:
> 
> -----------------
> The 16 bytes alignment was introduced because instructions like the SSE2 movapd
> need 16 byte alignment:
> http://en.wikipedia.org/wiki/MOVAPD
> 
> I have recently used it here:
> http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=112670
> 
> And some other SSE* instructions work with 8 byte alignment too, but they are
> slower (future CPUs can remove such alignment requirements, some of it has
> being removed already, so in that future the GC can go back giving 8 bytes
> aligned memory).
> -----------------
> 
> So should I change it?
> 
> -Steve
> 
> 
> 
> 
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos


More information about the phobos mailing list