Mówiąc prościej, konflikt banków to przypadek, w którym jakikolwiek wzorzec dostępu do pamięci nie rozprowadza operacji we / wy w bankach dostępnych w systemie pamięci. Następujące przykłady rozwijają koncepcję:
Załóżmy, że mamy dwuwymiarową tablicę liczb całkowitych 512x512, a nasz DRAM lub system pamięci ma 512 banków. Domyślnie dane tablicy zostaną rozmieszczone w taki sposób, że arr [0] [0] trafia do banku 0, arr [0] [1] trafia do banku 1, arr [0] [2] do banku 2 .... arr [0] [511] trafia do banku 511. Aby uogólnić, arr [x] [y] zajmuje numer banku y. Teraz jakiś kod (jak pokazano poniżej) zaczyna uzyskiwać dostęp do danych w głównej kolumnie, tj. zmieniając x przy zachowaniu stałej y, wynikiem końcowym będzie to, że cały kolejny dostęp do pamięci trafi do tego samego banku - stąd konflikt banku.
int arr[512][512];
for ( j = 0; j < 512; j++ ) // outer loop
for ( i = 0; i < 512; i++ ) // inner loop
arr[i][j] = 2 * arr[i][j]; // column major processing
Kompilatory zazwyczaj unikają takich problemów, buforując tablicę lub używając liczby pierwszej elementów tablicy.