One embodiment of the present invention provides a system for compiling
source code into executable code that performs prefetching for memory
operations within critical sections of code that are subject to mutual
exclusion. The system operates by compiling a source code module
containing programming language instructions into an executable code
module containing instructions suitable for execution by a processor.
Next, the system identifies a critical section within the executable code
module by identifying a region of code between a mutual exclusion lock
operation and a mutual exclusion unlock operation. The system schedules
explicit prefetch instructions into the critical section in advance of
associated memory operations. In one embodiment, the system identifies the
critical section of code by using a first macro to perform the mutual
exclusion lock operation, wherein the first macro additionally activates
prefetching. The system also uses a second macro to perform the mutual
exclusion unlock operation, wherein the second macro additionally
deactivates prefetching.
Uma incorporação da invenção atual fornece um sistema para o código de fonte compilando no código executável que executa prefetching para operações de memória dentro das seções críticas do código que são sujeitas à exclusão mútua. O sistema opera-se compilando um módulo do código de fonte que contem instruções da língua de programação em um módulo executável do código que contem as instruções apropriadas para a execução por um processador. Em seguida, o sistema identifica uma seção crítica dentro do módulo executável do código identificando uma região do código entre uma operação mútua do fechamento da exclusão e uma exclusão mútua destrave a operação. O sistema programa instruções explícitas do prefetch na seção crítica adiantado de operações de memória associadas. Em uma incorporação, o sistema identifica a seção crítica do código usando um primeiro macro executar a operação mútua do fechamento da exclusão, wherein o primeiro macro ativa adicionalmente prefetching. O sistema usa também um segundo macro executar a exclusão mútua destrava a operação, wherein o segundo macro desativa adicionalmente prefetching.