b'\n_START_ARTICLE_\nFermi (arquitectura)\n_START_PARAGRAPH_\nFermi \xc3\xa9s el nom que identifica una arquitectura de GPU desenvolupada per Nvidia com a successora de l\xe2\x80\x99arquitectura Tesla. Va ser usada a les s\xc3\xa8ries GeForce 400 i GeForce 500. Tamb\xc3\xa9 va compartir s\xc3\xa8rie amb la seva predecessora Kepler, a les GeForce 600, GeForce 700 i GeForce 800. La tecnologia de fabricaci\xc3\xb3 de les GPUs Fermi va ser de 40 nm per a les versions d\xe2\x80\x99escriptori, i de 40 nm i 28 nm per a les versions m\xc3\xb2bils. Es van comercialitzar dues generacions, la GF100 i la GF104.\n_START_SECTION_\nStreaming Multiprocessor de tercera generaci\xc3\xb3\n_START_PARAGRAPH_\nEs tracta d\xe2\x80\x99un innovador SM programable i eficient._NEWLINE_Cada nucli CUDA consta d\xe2\x80\x99una ALU i d\xe2\x80\x99una FPU. A m\xc3\xa9s, implementa l\xe2\x80\x99est\xc3\xa0ndard de coma flotant IEEE 754-2008. Tamb\xc3\xa9 disposa de la instrucci\xc3\xb3 FMA (fused multiply-add), que realitza una multiplicaci\xc3\xb3 i una suma amb un arrodoniment final. Per altra banda, l\xe2\x80\x99ALU suporta 32 bits per a totes les seves instruccions._NEWLINE_Es disposen 16 unitats load/store per a poder efectuar l\xe2\x80\x99adre\xc3\xa7ament a mem\xc3\xb2ra per a 16 threads a cada cicle._NEWLINE_Tamb\xc3\xa9 hi ha 4 unitats de funcions especials (SFU), com poden ser calcular un sinus o un cosinus. Una SFU calcula una operaci\xc3\xb3 per thread i cicle._NEWLINE_Una de les millores m\xc3\xa9s rellevants d\xe2\x80\x99aquesta arquitectura \xc3\xa9s la seva implementaci\xc3\xb3 per a suport de coma flotant doble. Amb la segona versi\xc3\xb3 de Tesla (GT200), tot i tamb\xc3\xa9 suportar coma flotant doble, el rendiment de Fermi \xc3\xa9s 4x m\xc3\xa9s r\xc3\xa0pid._NEWLINE_Per altra banda, disposa d\xe2\x80\x99un planificador de warps dual. Un warp \xc3\xa9s un grup de 32 threads paral\xc2\xb7lels, els quals l\xe2\x80\x99SM planifica conjuntament. Tamb\xc3\xa9 disposa de 2 unitats de dispatch d\xe2\x80\x99instruccions, per tant, es poden planificar i executar dos instruccions de warps diferents concurrentment, les quals es poden enviar a un grup de 16 nuclis, 16 unitats de load/store o a les 4 unitats SFU._NEWLINE_Respecte a la mem\xc3\xb2ria de l\xe2\x80\x99SM, disposa d\xe2\x80\x99un xip de 64 KB programable. Tamb\xc3\xa9 es disposa d\xe2\x80\x99un banc de registres de 32768 registres de 32 bits cada un.\n_START_SECTION_\nParallel Thread Execution ISA de segona generaci\xc3\xb3\n_START_PARAGRAPH_\nFermi \xc3\xa9s la primera arquitectura que suporta el conjunt d\xe2\x80\x99instruccions Parallel Thread eXecution (PTX) 2.0. PTX \xc3\xa9s una m\xc3\xa0quina virtual de baix nivell i un ISA que permet suportar instruccions de processadors de threads paral\xc2\xb7lels. Per tal de fer-ne \xc3\xbas, en el moment que s\xe2\x80\x99instal\xc2\xb7la l\xe2\x80\x99aplicaci\xc3\xb3, les instruccions PTX s\xc3\xb3n tradu\xc3\xafdes pel driver de la GPU a instruccions m\xc3\xa0quina. Degut a l\xe2\x80\x99\xc3\xbas de PTX, la programabilitat de la GPU augmenta, aix\xc3\xad com l\xe2\x80\x99efici\xc3\xa8ncia i la precisi\xc3\xb3. Les caracter\xc3\xadstiques de PTX a remarcar s\xc3\xb3n: espai d\xe2\x80\x99adreces unificats per a variables i punters, adre\xc3\xa7ament de 64 bits, noves instruccions per a OpenCL i DirectCompute, instruccions de coma flotant IEEE de 32 bits, i donar suport complet al llenguatge C++.\n_START_SECTION_\nJerarquia de mem\xc3\xb2ria\n_START_PARAGRAPH_\nL\xe2\x80\x99arquitectura Fermi, usa el sistema NVIDIA Parallel DataCache, el qual t\xc3\xa9 la cau L1 configurable i la cau L2 unificada. Cada SM disposa d\xe2\x80\x99un xip de mem\xc3\xb2ria programable per a mem\xc3\xb2ria compartida o cau L1, els quals es poden distribuir entre 16 KB de mem\xc3\xb2ria compartida i 48 KB de cau L1 o viceversa. Aquest disseny est\xc3\xa0 pensat pels diferents tipus d\xe2\x80\x99aplicacions, ja que tenen comportaments diferents. S\xe2\x80\x99hi poden realitzar accessos load i store._NEWLINE_Per altra banda, el seg\xc3\xbcent nivell de jerarquia \xc3\xa9s la cau L2, la qual est\xc3\xa0 unificada per a tots els SMs i permet servir totes les operacions, \xc3\xa9s a dir, load, store i textures._NEWLINE_L\xe2\x80\x99\xc3\xbaltim nivell de la jerarquia \xc3\xa9s la mem\xc3\xb2ria DRAM. _NEWLINE_Fermi \xc3\xa9s la primera GPU a incorporar Error Correcting Code (ECC) per tal de protegir les dades. Si troba que un bit de mem\xc3\xb2ria ha estat modificat, el corregeix. Aquesta tecnologia s\xe2\x80\x99ha aplicat a tots els nivells de la jerarquia de mem\xc3\xb2ria._NEWLINE_Les operacions at\xc3\xb2miques s\xe2\x80\x99han millorat per tal de fer-les m\xc3\xa9s r\xc3\xa0pides que la seva antecessora, la GT200. Concretament, s\xc3\xb3n 20x m\xc3\xa9s r\xc3\xa0pides.\n_START_SECTION_\nPlanificador de threads GigaThread\n_START_PARAGRAPH_\nCada Streaming Multiprocessor disposa d\xe2\x80\x99un planificador de threads. Malgrat aix\xc3\xb2, Fermi disposa d\xe2\x80\x99una planificaci\xc3\xb3 de 2 nivells, ja que en t\xc3\xa9 un altre a nivell global per a tots els SMs, el GigaThread. La primera versi\xc3\xb3 d\xe2\x80\x99aquest es va usar a la G80 (primera versi\xc3\xb3 de Tesla), el qual podia gestionar fins a 12288 threads en temps real. Aquesta nova versi\xc3\xb3 pot gestionar m\xc3\xa9s threads, el canvi de context \xc3\xa9s m\xc3\xa9s r\xc3\xa0pid, suporta execuci\xc3\xb3 concurrent de kernels d\xe2\x80\x99una mateixa aplicaci\xc3\xb3 i es millora la planificaci\xc3\xb3 de thread blocks.'