]> granicus.if.org Git - php/commit
opcache: Patch SSE based fast_memcpy() implementation
authorBogdan Andone <bogdan.andone@intel.com>
Wed, 29 Jul 2015 11:19:04 +0000 (14:19 +0300)
committerBogdan Andone <bogdan.andone@intel.com>
Wed, 29 Jul 2015 11:51:57 +0000 (14:51 +0300)
commit68185bafbe2c7ab025703917d259c4c19ce456eb
tree7925372b64ce2f9ac0ff88079384cbd76b625569
parent4e66cce87ce0e57a7394486412e61abcfc5f3520
opcache: Patch SSE based fast_memcpy() implementation

Use _mm_store_si128() instead of _mm_stream_si128(). This ensures that copied memory
is preserved in data cache, which is good as the interpretor will start to use this
data without the need to go back to memory. _mm_stream* is intended to be used for
stores where we want to avoid reading data into the cache and the cache pollution;
in our scenario it seems that preserving the data in cache has a positive impact.

Tests on WordPress 4.1 show ~1% performance increase with fast_memcpy() in place
versus standard memcpy() when running php-cgi -T10000 wordpress/index.php.

I also updated SW prefetching on target memory but its contribution is almost negligible.
The address to be prefetched will be used in a couple of cycles (at the next iteration)
while the data from memory will be available in >100 cycles.
ext/opcache/zend_accelerator_util_funcs.c