Render Back-Ends
Il render back-ends è quella parte di core che si occupa di applicare i filtri alle scene da creare.
Come sapete i filtri come ad esempio l’AntiAliasing che è un post-processing e serve per ridurre le seghettature dei bordi degli oggetti in modo da avvicinarci il più possibile alla realtà.
Con R600 si è deciso di utilizzare le risorse shader disponibili per applicare al sample i filtri e generare i pixel finali che andranno a creare la scena 3D, portando ad avere non più solo i classici filtri ma anche ad avere altri tipi di filtri personalizzati a seconda del sample pixel.
Il tutto viene racchiuso nella dicitura CFAA (Costum Filter AA) dando la possibilità di utilizzare filtri personalizzati per ogni pixel, e quindi variando la tipologia di filtraggio delle varie componenti di una scena 3D, che sarà poi calcolata tramite hardware.
Questa tecnica si prefigge quindi come risultato il miglioramento del filtraggio, non usando i soliti filtri tradizionali, che all’aumentare dei sample diminuiscono di efficacia ma un metodo di filtraggio personalizzato per ogni pixel.
Questo metodo ha quindi solo dei limiti dati dalla potenza dell’hardware, quindi all’aumentare della potenza hardware si avrà un filtraggio sempre migliore.
Interfaccia di memoria (RingBus)
AMD introduce per la prima volta su una scheda grafica di segmento enthusiast un collegamento con la memoria a 512Bit portando avanti concetti che si erano già visti nella serie x1000 e poi in R500 Xenon come il RingBus.
Con R520 (x1800) ATI aveva usato un approccio ibrido che eseguiva letture della memoria attraverso l’anello esterno (Ring Bus) mentre per la scrittura utilizzava un metodo crossbar che era quello usato fino ali per la gestione del bus.
Con R600 ATI ha definitivamente accantonato il metodo crossbar, che con l’aumentare dei client presenti peggiorava la precisione, portando avanti il concetto di RingBus che adesso svolge sia scritture che letture dalla memoria.

Il RingBus quindi ha un ampiezza di 512Bis, a fronte dei vecchi 256Bit , su otto canali.
I dati scorrono su 4 set di piste a seconda che siano set di dati in lettura o scrittura creando cosi un flusso bidirezionale con un ampiezza totale di 1024Bit dove avremo 4 piste per la scrittura a 512bit più 4 piste a 512bit per la lettura.
A livello pratico il RingBus può essere immaginato come una rotonda con 4 uscite, i dati entrano in rotonda sia dalla memoria che dal core e girano dentro all’anello fino a che non si trovano all’altezza dell’uscita giusta e escono verso la memoria o verso il core.
L’obbiettivo è di fornire quanta più banda possibile a tutti i client interni, sempre per il solito discorso della diminuzione delle latenze, che porta ad avere ogni client indipendente dall’altro e quindi capace di richiedere banda per la scrittura o lettura di dati.
R600 in questa configurazione può gestire fino a 80 client lettura e 70 in scrittura.
Ovviamente come ogni tecnologia anche questa non è esente da controindicazioni.
Per prima cosa il ringbus richiede molto spazio sul pcb per il posizionamento dei path di I/O che essendo analogici non rimpiccioliscono con l’avanzamento della tecnologia, in ogni caso AMD ha fatto un ottimo lavoro creando dei path da 512bit delle stesse dimensioni di quelli a 256bit mantenendo quindi le vecchie dimensioni e raddoppiando la banda.
Altra controindicazione viene dalla quantità di logica che deve essere inglobata nella GPU per la gestione del ring bus che ha portato a un ingrossamento notevole della GPU.
AMD avrebbe potuto ovviare al problema adottando le GDDR4 ma a preferito aumentare la logica interna alla GPU e adottare le ormai collaudatissime GDDR3 che sono facili da trovare e all’atto pratico costano meno dando così la possibilità di contenere il prezzo finale della scheda.
Troviamo quindi delle GDDR3 hynix da 1.1ns, praticamente le stesse della serie GeForce 8800, operanti a frequenze abbastanza basse (1.650MHz) che però consentono una banda passante molto elevata (106Gb/s) visto l’uso del bus a 512bit.
La frequenza cosi bassa delle ram potrebbe far pensare a una scarsa qualità delle memorie ma non è così, anzi a livello pratico, all’aumentare delle frequenze, le ram perdono in efficienza e quindi devono adottare timing molto più alti, richiedendo più cicli per accedere ai dati.
AMD ha optato per una frequenza più bassa che garantisce quindi più efficienza e timing più spinti, nonchè un abbattimento delle richieste energetiche che servirebbero per mantenere le memorie a frequenze più elevate riducendo al minimo i “difetti” di un bus di memoria cosi ampio.