Oggetto: «Configurazione dell'attività»
Sempre più controllori di oggi sono dotati di processori con più core di CPU. Per sfruttare questo vantaggio per il programma IEC e migliorare le prestazioni, CODESYS offre opzioni per distribuire i compiti IEC su questi core della CPU. Inoltre, il programma IEC dovrebbe essere suddiviso in più compiti.
In CODESYS esistono due strategie di base per distribuire i compiti IEC sui core della CPU:
- 
                           
Corretto il collegamento di un task IEC a un core della CPU:
Il task viene sempre eseguito su questo specifico core della CPU. In questo caso, è possibile accorpare più task a uno stesso core della CPU se il programma IEC non è ancora in grado di essere eseguito su più core della CPU contemporaneamente.
 - 
                           
Il task IEC viene eseguito su tutti i core della CPU:
Il sistema operativo assume il controllo della distribuzione dei compiti sui core della CPU.
 




AVVISO

Quando i compiti IEC sono distribuiti sui core della CPU, si verificano alcuni cambiamenti nel comportamento del programma IEC, che devono essere presi in considerazione.
- 
                                             
L'elaborazione dei compiti IEC per priorità non è più scontata. Vengono elaborati in base alla priorità solo se i task sono raggruppati in un unico core della CPU.
 - 
                                             
La coerenza del ciclo dei dati nel task IEC con la priorità più alta non è più un dato di fatto. Pertanto, i dati devono essere copiati localmente all'inizio del ciclo del task IEC se i valori non devono cambiare durante il ciclo.
 - 
                                             
Per i contatori coerenti (incrementatore, decrementatore), si deve sempre utilizzare la funzione di libreria esterna atomica
SysCpuAtomicAdd()(per maggiori dettagli, vedereSysCpuHandling.library). 




AVVISO

Coerenza dei dati
- 
                                             
L'accesso ai bit (tipo di dati
BIT) non viene elaborato in modo coerente (atomico) sulle CPU multicore nel programma IEC. A questo scopo si consiglia di utilizzare la funzione di libreria esternaSysCpuTestAndSetBit(). (Per maggiori dettagli, vedere:SysCpuHandling.library) - 
                                             
I tipi di dati semplici fino a una larghezza di 32 bit (
BYTE, WORD/INT, DWORD/DINT, ecc.) vengono elaborati in modo coerente (atomico) nel programma IEC anche su CPU multicore. - 
                                             
I tipi di dati a 64 bit (
LINT, LWORD, LREAL)vengono elaborati in modo coerente (atomico) nel programma IEC solo su sistemi a 64 bit e multicore. Per farlo, non è necessario prendere alcuna precauzione. - 
                                             
Per accedere a tipi di dati complessi (
STRINGs, FBs, STRUCTs, ARRAYs), è necessario prendere provvedimenti per la sincronizzazione/consistenza. - 
                                             
Nella configurazione del task, nella scheda «Variable Usage», è possibile definire se una variabile in un task IEC ha accesso in lettura o in scrittura.
 - 
                                             
Sui sistemi multicore può verificarsi un "effetto di riordino della memoria". Per ulteriori informazioni, consultare l'operatore IEC
__MemoryBarrier(). 
- 
                           
Vedi anche: ⮫ Gruppi di attività
 
- 
                        Distribuzione dei compiti su più core del processore
 - 
                        Visualizzazione del carico del processore per core del processore nella traccia