GPUÎn ultimul timp GPU-urile (unitate de procesare video) sunt folosite şi pentru alte calcule decât cele necesare generării unei imagini pe ecran. Un procesor al plăcii video este folosit, de exemplu, în mecanica fluidelor şi implicit la simularea video a rezultatelor.

 

 

 

 

GPU - Graphic Processing Unit, unitate de procesare video.
CPU - Central Processing Unit, unitate de procesare centrală.

Aceste calcule pot fi utile în industria auto pentru reprezentarea aerodinamicii, în industria jocurilor şi cea a filmelor pentru a reda imaginilor generate de computer (computer generated images) un comportament virtual cât mai apropiat de realitate, ţinând cont de legile fizicii. PgysX, de la nVIDIA, oferă aceste simulări realistice folosind legile fizicii.

Astfel, ne întrebăm ce rol mai are utilizarea unui CPU (Central Processing Unit -  unitate de procesare centrală) în arhitectura hardware a computerului?

Pentru a răspunde la întrebare va trebui să înţelegem diferenţa de arhitectură dintre GPU şi CPU.

GPU-urile au mai multe nuclee faţă de CPU-uri, dar nu sunt potrivite pentru calculele pe care le efectuează o unitate centrală de calcul pentru că fiecare nucleu din procesoarele video funcţionează la frecvenţe mult mai mici faţă de cele ale procesoarelor centrale. De asemenea, seturile de instrucţiuni diferă. Un sistem de operare, aplicaţiile acestuia, necesită anumite seturi de instrucţiuni, moduri de adresare pe care un GPU standard nu le are în arhitectură.

 

De exemplu, cipul GeForce GT640 are 384 de nuclee cu arhitectură CUDA (Compute Unified Device Architecture), iar ceasul grafic are o frecvenţă de 900 MHz.

Un GPU poate lucra cu un set de date foarte vast, efectuând operaţii relativ simple dar nu este capabil să proceseze operaţii complexe pentru una sau mai multe secvenţe de date. Un CPU are nuclee de procesare mult mai rapide (instrucţiuni/secundă) şi pot efectua operaţii complexe pentru una sau mai multe secvenţe de date, mult mai uşor, dar nu poate gestiona (eficient, simultan) foarte multe date paralelizate aşa cum o face un GPU.

Ca urmare, GPU-urile nu aduc beneficii semnificative aplicaţiilor ce nu sunt programate pentru calculul paralelizat, aplicaţii ca cele de uz comun cum ar fi procesoarele de text. Un CPU este mult mai potrivit pentru astfel de calcule strict secvenţiale, efectuate în serie. În plus, aşa cum am spus mai sus, GPU-urile folosesc arhitecturi fundamental diferite. Pentru a înlocui CPU cu GPU, programarea unei aplicaţii pentru GPU se va face cu tehnici diferite, tehnici impuse de arhitectură şi modul de lucru. Aceste tehnici implică limbaje de programare diferite, modificări ale limbajelor de programare existente şi noi concepte de programare pentru a favoriza viteza de calcul în paralel efectuată de procesoare.

GPU-urile moderne sunt capabile să efectueze operaţii de tip vector şi virgulă mobilă iar cele de ultimă generaţie pot manipula numere în virgula mobilă cu dublă precizie (64 biţi). Arhitecturile precum CUDA şi OpenCL (Open Computing Language - limbaj deschis de programare) fac posibilă scrierea programelor pentru GPU, iar natura GPU-urilor, cu mai multe nuclee, asigură un paralelism operaţional mult mai bun pentru calculul ştiinţific, cluster computing și grid computing. Utilizatorii de GPU-uri moderne, care sunt familiarizaţi cu proiectul Folding@home, le pot folosi participând la cercetarea mecanismelor de pliere a proteinelor, oferind avantajele de simulare pe care aceste GPU-uri moderne le deţin.

Cei de la AMD deschid un nou drum spre relaţia CPU-GPU cu iniţiativa numită APU (Accelerated Processing Unit – Unitate de Procesare Accelerată) ce combină nucleele convenţionale din CPU x86 cu cele din GPU. Aceasta ar putea permite componentelor CPU şi GPU să funcţioneze împreună şi să mărească performanţa sistemelor limitate de spaţiul componentelor separate. Pe măsură ce tehnologia continuă să avanseze, vom putea fi martorii unei convergenţe a sistemelor separate. Totuşi, multe sarcini efectuate de sistemele de operare şi de aplicaţiile PC sunt convenabile încă pentru CPU-uri, fiind nevoie de multă muncă pentru a accelera un program în cazul GPU-urilor. De vreme ce majoritatea software-ului foloseşte arhitectura x86 şi pentru că GPU-urile impun tehnici diferite de programare şi duc lipsă de proprietăţi importante cerute de sistemele de operare, o tranziţie generală de la CPU la GPU pentru computerele pentru uz casnic este extrem de dificilă.

De asemenea, trebuie să luăm în calcul rolul CPU-ului în relaţie cu tot sistemul PC. Toate datele generate de placa de reţea, placa de sunet, TV-tuner, toate datele ce vin de la componentele periferice (tastatură, mouse, imprimantă, modem, sursă de semnal video) sunt întâi procesate de CPU. În acest caz este nevoie de nuclee cu frecvenţe de calcul mai mari decât cele ale GPU-ului. CPU-ul procesează, în acelaşi timp, datele interogate din memoria RAM şi HDD sau SSD şi asigură comunicarea între acestea prin arhitectura lui, la această comunicare participând şi celelalte cipuri cunoscute sub numele de NorthBridge şi SouthBridge. Varietatea tipurilor de date provenite de la aceste componente, cu care o unitate de calcul trebuie să lucreze, este gestionată cel mai eficient de către CPU.



Articol adaptat de Bogdan Mihalcea după why-are-we-still-using-cpus-instead-of-gpus. Alte surse folosite:
en.wikipedia.org/wiki/CUDA
en.wikipedia.org/wiki/OpenCL
en.wikipedia.org/wiki/Stream_processing
www.geforce.com/hardware/desktop-gpus/geforce-gt640/specifications