Nesne: «Task Konfigürasyonu»
Günümüz kontrolörlerinin giderek daha fazlası birden fazla CPU çekirdeğine sahip işlemcilere sahip. IEC programı için bundan yararlanmak ve performansı artırmak amacıyla, CODESYS IEC task’lerini bu CPU çekirdekleri üzerinde dağıtmak için seçenekler sunar. Ayrıca, IEC programı birden fazla task’e bölünmelidir.
CODESYS adresinde IEC task’lerini CPU çekirdeklerine dağıtmak için iki temel farklı strateji bulunmaktadır:
-
Bir IEC task’inin bir CPU çekirdeğine bağlanması düzeltildi:
Task her zaman bu belirli CPU çekirdeği üzerinde yürütülür. Bu durumda, IEC programı henüz aynı anda birden fazla CPU çekirdeğinde yürütülemiyorsa, birden fazla task bir ve aynı CPU çekirdeğine de paketlenebilir.
-
IEC task’i tüm CPU çekirdeklerinde yürütülür:
İşletim sistemi, task’i CPU çekirdeklerine dağıtma kontrolünü üstlenir.




NOT

IEC task’leri CPU çekirdekleri üzerinde dağıtıldığında, IEC programındaki davranışta dikkate alınması gereken bazı değişiklikler ortaya çıkar.
-
IEC task’lerinin önceliğe göre işlenmesi artık söz konusu değildir. Task’ler yalnızca bir CPU çekirdeğinde bir araya getirildiklerinde önceliğe göre işlenirler.
-
En yüksek önceliğe sahip IEC task’indeki verilerin döngü tutarlılığı artık belirli değildir. Bu nedenle, değerlerin döngü sırasında değişmemesi gerekiyorsa, verilerin IEC task döngüsünün başında lokal olarak kopyalanması gerekir.
-
Tutarlı sayaçlar için (artırıcı, azaltıcı), atomik harici kütüphane işlevi
SysCpuAtomicAdd()her zaman kullanılmalıdır (daha fazla ayrıntı için bkz.SysCpuHandling.library).




NOT

Veri tutarlılığı
-
Bit erişimi (veri türü
BIT) IEC programındaki çok çekirdekli CPU'larda tutarlı bir şekilde (atomik olarak) işlenmez. Bunun içinSysCpuTestAndSetBit()harici kütüphane fonksiyonunu kullanmanızı tavsiye ederiz. (Ayrıntılar için bakınız:SysCpuHandling.library) -
Genişliği 32 bite kadar olan basit veri türleri (
BYTE, WORD/INT, DWORD/DINT, vb.) IEC programında çok çekirdekli CPU'larda da tutarlı bir şekilde (atomik olarak) işlenir. -
64 bitlik veri türleri (
LINT, LWORD, LREAL)yalnızca 64 bitlik sistemlerde ve çok çekirdekli sistemlerde IEC programında tutarlı bir şekilde (atomik olarak) işlenir. Bunu yapmak için herhangi bir önlem almanıza gerek yoktur. -
Karmaşık veri türlerine (
STRINGs, FBs, STRUCTs, ARRAYs) erişmek için, senkronizasyon/tutarlılık için kendiniz düzenlemeler yapmanız gerekir. -
«Değişken Kullanımı» sekmesindeki task konfigürasyonuna, bir IEC task’indeki bir değişkenin okuma veya yazma erişimine sahip olup olmadığını tanımlayabilirsiniz.
-
Çok çekirdekli sistemlerde, bir "bellek yeniden sıralama etkisi" oluşabilir. Daha fazla bilgi için IEC operatörüne bakın
__MemoryBarrier().
-
Ayrıca bakınız: ⮫ Task Grupları
-
Task’leri birden fazla işlemci çekirdeğine dağıtma
-
İzlemede işlemci çekirdeği başına işlemci yükünün görüntülenmesi