Skip navigation

Közös Memória

Átetkintés

A közös memória a blokkon multiprocesszoron belül taláható tároló memória, amin a blokkok szálai osztoznak. Mérete tipikusan 16-48 Kbyte, lehet.

GPU memória szintekAkkor szoktuk használni, amikor a blokk szálai közös számításokat tudnak végezni, mert például az egyik szál részeredményét a másik szál fel tudja használni. Segítségével a szálak közösen hatékonyabban tudják kezelni a globális memóriát is.

A közös memória fontos tulajdonsága, hogy 32 memóriabankba szervezetten tárolja az adatokat. A bankok úgy vann ak elrendezve, mintha egy 32 float szélességű 2D tömböt kezelnénk, vagyis egymás mellett 4 byteonként kezdődik egy új oszlop (memória bank), és a 32. bank után jön újra az első.

A struktúra azért fontos, mert a közös memória bankjai 4 órajelenkéént tudnak egy-egy kérést kiszolgálni, és ha két szál egyszerre ugyanazt a bankot próbálja elérni akkor úgynevezett bank-konfliktus keletkezik. Ilyenkor a kérések sorba rendeződnek, és több időt vesznek igéánybe. Ezért ha a fenti 2D tömbös formáűban képzeljük el a memóriát akkor úgy kell belőle olvasnunk, hogy a blokk egymás után következő szálai a közös memória eg-egy-sorát dolgozzák fel.

Memória bankok és bank konfliktusok