J'ai une nouvelle hypothèse.
Sur le floorplan du GT-200, on voit 8 paires de blocs pour les bancs de registres. Je suppose que veut dire qu'il contient 8 banks.
On pense tout de suite 8 banks pour 8 SP, 1 bank pour chaque SP, logique non?
Sauf que la doc de CUDA dit :
Pourquoi il me parlent de conflits si chaque SP a sa bank dédiée? Si ça se trouve c'est pas comme ça que ça marche.
Jusqu'ici, j'ai surtout fait mes tests avec peu de threads (64 ou 128), parce qu'après j'ai plus assez de Crayolas pour dessiner les pipelines

.
Dans ces tests-là, ça se passe comme si j'avais 1 seul port dans le RF.
Maintenant si je lance plus de threads (256), oh miracle, des nouveaux ports qui apparaissent.

256 threads, ça fait 8 warps. Tiens, autant que de banks dans le RF...
Donc la nouvelle hypothèse de travail, c'est que le RF est divisé en 8 banks de 256x512-bit, voire 128x1024-bit. Entre le RF et les SP on a un gros crossbar qui scatter les 512-bit/1024-bit lus en 8 SPx2 clocksx32-bit/64-bit.
Chaque bank appartient exclusivement à un warp ou groupe de warps (jusqu'à 4). Tiens et le nombre de registres adressables par un thread c'est 128.
Chaque bank étant en 1R/1W, les opérandes d'une instruction doivent bien êtres lus séquentiellement. Par contre, c'est overlappable avec les lectures d'opérandes d'autres threads, mais à condition d'avoir assez de threads.