# Home    # nevrax.com   
Nevrax
Nevrax.org
#News
#Mailing-list
#Documentation
#CVS
#Bugs
#License
Docs
 
Documentation  
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Search  

NLMISC::CFastMem Class Reference

Functions for Fast Memory manipulation with Pentium-class processors. More...

#include <fast_mem.h>

List of all members.

Static Public Methods

void precache (const void *src, uint nbytes)
 Fast precaching of memory in L1 cache using SSE or MMX where available (NB: others methods don't do the test) nbytes should not override 4K. More...

void * memcpySSE (void *dst, const void *src, size_t nbytes)
 Fast memcpy using SSE instructions: prefetchnta and movntq. More...

void precacheSSE (const void *src, uint nbytes)
 Fast precaching of memory in L1 cache using MMX/SSE instructions: movq and prefetchnta Result is typically 880 Mo/s (surely slower because of overhead). More...

void precacheMMX (const void *src, uint nbytes)
 Fast precaching of memory in L1 cache using MMX instructions only: movq Result is typically 720 Mo/s (surely slower because of overhead). More...


Detailed Description

Functions for Fast Memory manipulation with Pentium-class processors.

From http://www.sgi.com/developers/technology/irix/resources/asc_cpu.html

Author:
Lionel Berenguier , Nevrax France
Date:
2002

Definition at line 44 of file fast_mem.h.


Member Function Documentation

void * NLMISC::CFastMem::memcpySSE void *    dst,
const void *    src,
size_t    nbytes
[static]
 

Fast memcpy using SSE instructions: prefetchnta and movntq.

Can be called only if SSE and MMX is supported NB: Copy per block of 4K through L1 cache Result is typically 420 Mo/s instead of 150 Mo/s.

Definition at line 205 of file fast_mem.cpp.

References src.

void NLMISC::CFastMem::precache const void *    src,
uint    nbytes
[static]
 

Fast precaching of memory in L1 cache using SSE or MMX where available (NB: others methods don't do the test) nbytes should not override 4K.

Definition at line 218 of file fast_mem.cpp.

References src.

void NLMISC::CFastMem::precacheMMX const void *    src,
uint    nbytes
[static]
 

Fast precaching of memory in L1 cache using MMX instructions only: movq Result is typically 720 Mo/s (surely slower because of overhead).

Hence prefer precacheSSE() when available. nbytes should not override 4K

Definition at line 214 of file fast_mem.cpp.

References src.

void NLMISC::CFastMem::precacheSSE const void *    src,
uint    nbytes
[static]
 

Fast precaching of memory in L1 cache using MMX/SSE instructions: movq and prefetchnta Result is typically 880 Mo/s (surely slower because of overhead).

nbytes should not override 4K

Definition at line 210 of file fast_mem.cpp.

References src.


The documentation for this class was generated from the following files: