Metode pentru creșterea performanțelor de calcul

Vă mulțumim pentru sprijinul dvs.!

Tot timpul existența calculatoarelor, pornind de la aritmometre, creatorii au dorit întotdeauna să le accelereze. În ce mod au reușit să o obțină și să o obțină? Desigur, nu există o metodă de bază pentru creșterea vitezei computaționale, în același timp, aproape toate cele găsite până acum sunt aplicate. Prin urmare, clasificarea necesită accelerație calitativă (intensivă) și cantitativă (extensivă). Separarea este foarte condiționată - nu există o limită clară între metodele de creștere a productivității, iar în interiorul lor ele sunt împărțite și în diferite subclase. pentru că Unul sau mai mulți procesoare centrale (CPU) sunt responsabili de prelucrarea datelor, iar performanța este caracteristica principală - cele mai multe metode se referă într-un fel la această parte a sistemului. În prealabil, avertizează că sub procesor se înțelege un microcircuit cu un corp și pini inserați în soclu (soclu).







Prima diviziune se referă la numărul de procesoare: metode calitative implică accelerarea CPU cu nemodificat cantitativ său / lor cantitate - capacitatea procesorului în scopul împăturit eforturile. arhitecturi multiprocesor sunt utilizate atunci când alte metode sunt deja în vigoare și nu mai sunt eficiente, și cu competență de ingineri și programatori produc rezultate excelente (cu excepția cazului, desigur, sarcina este parallelized bun) - totalul crește performanța sistemului de aproape liniar cu numărul de procesoare prin sincronizare atent coordonate de interacțiuni calcula noduri. În problemele recente de rang cel mai rapid supercomputere Top500 din lume aproape toate mașinile folosesc arhitectura cluster bazat pe conceptul de paralelism masiv (MPP, procesare masiv paralela). În aceste monștri de calcul care ocupă camere întregi, zeci de lucru, în același timp, și, în curând, probabil, sute de mii de procesoare.

Metode pentru creșterea performanțelor de calcul

Cu toate acestea, nu fiecare program, mai ales o orientare non-specializată la domiciliu, este paralealizat la mai multe fire, folosind toate kernelurile disponibile. Până în prezent, multe jocuri (și cele mai multe programe cu programe intensive din programele populare) nu sunt aproape accelerate atunci când numărul de nuclee este mai mare de două, fără a menționa creșterea liniară a performanțelor cu mai multe dintre ele. Deci accelerarea nucleului în sine este necesară, mai ales dacă este una. Aceasta este sarcina cea mai dificilă. Deja în primele sisteme de calcul, imediat după apariție, s-au folosit diferite metode, care vor fi discutate mai târziu - calea a fost lungă. Și apoi este necesară o nouă diviziune în îmbunătățirea calitativă și cantitativă. Pentru a cuantifica creșterea frecvenței CPU, ca principalele sale caracteristici numerice ("megahertz cumpărat" în anii 80), și la calitativ - numărul de acțiuni efectuate pentru fiecare ciclu de ceas.

Creșterea frecvenței este realizabilă în două moduri. Fizic: prin reducerea standardelor de proiect, adică dimensiunile minime ale conductoarelor și tranzistori pe un cip - în detrimentul celor din urmă sunt mai rapide și consumă mai puțină energie (acesta este principalul motiv pentru care la un moment dat din lume abandonat TTL și ECL familiile logice în favoarea CMOS - cei cu o scădere a dimensiunii acestor privilegii nu scară era). Și arhitectural: creșterea plafonului de frecvență prin împărțirea procesorului în etape separate, adică organizarea conductei computaționale. Și dacă există deja, o creștere a numărului acestor etape.

Metode pentru creșterea performanțelor de calcul

Luați în considerare, de exemplu, o fabrică care produce un anumit detaliu. În timp ce pe ea 1 mașină care procesează piesa în 6 minute. Performanță - 10 părți / oră. Cu toate acestea, procesul poate fi împărțit în trei etape separate separat, care pot fi efectuate simultan pe trei detalii - fiecare în stadiul său propriu. Am pus trei mașini în loc de una: una peste fiecare lucru bucata 1 minut, secundă 3 și a treia bandă transportoare 2. Performanța generală este limitată de cel mai lent parte din ea - o a doua mașină. Și, deși restul sunt adesea inactivi, fabrica noastră produce 20 de părți / oră. Pentru a optimiza conducta, ar trebui să facă lucrarea pașii lui cât mai mult posibil uniformă - transferul lucrărilor de la a doua mașină la primul, astfel încât ambele a lucrat timp de 2 minute. Cu toate acestea, acest lucru nu funcționează întotdeauna, dar se constată că putem cel mai lent parte a sistemului ( „strangulare“) împărțit în 2 etape - încep de la 1 și 2 minute fiecare. Acum avem 4 mașini cu o rată de lucru de 1, 1, 2 și 2 minute. respectiv. Toate ar fi bine, dar cantitatea de fier a crescut de patru ori, dar viteza de lucru - doar de trei ori. Și nu tăiați transportorul chiar mai mic - vom pune 6 mașini de lucru timp de un minut. Acum am cheltuit de 6 ori numărul mijloacelor de producție și am obținut o producție de 6 ori a produsului.

Deci, plafonul de frecvență crește tare. În același timp, o frecvență mai mare necesită o tensiune de alimentare mai mare, ceea ce crește consumul de energie cu aproximativ 5 ori pentru fiecare dublare a frecvenței. (FET ideal are o dependență liniară a frecvenței maximă a tensiunii de alimentare, o dependență liniară a consumului de energie asupra frecvenței și pătratic - .. Consumul de putere al tensiunii pentru a da creștere de 8 ori a consumului și de izolare wați dublare hertz Cu toate acestea, capacitate parazitare, scurgeri de curent și alte non-idealitate face dependență netezit în direcția Abilitatea pătratic și nu cubic.) pentru a prăji un ou pe CPU radiatorului cu greu să fie evaluate ca un avantaj important al noii generații de procesoare, și un telefon mobil Electronice cu ei toate-out pentru a salva pe tot ceea ce necesită o eficiență energetică, fără a compromite viteza - este necesar să existe modalități de accelerare performanță atunci când frecvența existentă.







Performanța per ceas este caracterizată de două valori inverse reciproce - numărul mediu de ceasuri per instrucțiune (CPI) și numărul mediu de instrucțiuni pe ceas (IPC). Înainte de apariția procesoarelor superscalare, principala modalitate de a accelera în plus față de cursele de frecvență a fost reducerea IPC (sau creșterea IPC, deși un astfel de termen nu a fost încă aplicat ca inutil). Acest lucru poate fi atribuit unei îmbunătățiri calitative, deoarece metoda principală este una - în loc de înmulțire sau overclockare a structurilor existente, se adaugă altele noi, hardware (adică, mai repede) care calculează ceea ce a fost făcut lent anterior în blocuri cu scop general.

La 386 procesor de comandă presarcina rândul său dublat (coadă prefetch) la 12 octeți extins la 3 octeți decodor lungime cuvânt, adăugat după tamponul microinstrucțiunii (acum un procesor cu o conducta 3 trepte) și înlocuite cu deplasare serial registru paralel (baril shifter, produce orice fel de schimbare prin orice număr de biți pentru o perioadă fixă). 486 înzestrată execuție pipeline, unitate reală încorporat, și tampon de scriere cache L1 internă (cea de pe placa de acum L2). 486DX2 a avut o șansă în cache L1 de înregistrare (write-back, nu pe toate modelele) și 486DX4 - de două ori memoria cache și un factor de multiplicare matrice (până în prezent doar număr întreg și jumătate de lățime - 16 · 16). Toate aceste îmbunătățiri sunt încă în desfășurare - de exemplu, înainte de apariția de arhitecturi AMD K10 și procesor Intel Core 2 efectuează instrucțiuni aritmetice peste date reale vectoriale, cu o rată de 2 cicluri - ALU vector și multiplicatori acolo jumătate, lățimea de 64-biți, iar la K10 și Core 2 acestea au devenit pe deplin lungime.

Principalul astfel de carja - executarea comenzii (out-of-order execuție, OoOE sau OOO): mopuri sunt acumulate într-un tampon special de amestecare (tampon reordona, ROB) și citire nu este în ordinea de program specificat și în mod aleatoriu atunci când un capabilități de execuție simultane. pentru că tampon poate stoca zeci de mopuri, acest lucru va fi de ajuns pentru 3-4 alerga pentru echipa ciclu, chiar și departe de a se confruntă cu unele de altele (în cazul în care au fost deja citite și decodate). OOO deosebit de bine funcționează cu un alt mecanism pentru a îmbunătăți - înregistra redenumire elimină interdependența falsă pentru operanzi de comenzi ulterioare de cel anterior. Cu toate acestea, acest lucru nu permite încă ridicarea IPC peste 4 ani. Parțial pentru că mopuri mai mult de comenzi, astfel încât citirea celor 4 echipe, vom obține 5-10 mopuri, stocarea și executarea care va necesita aceeași cantitate de resurse gratuite la fiecare ciclu de ceas. Prin urmare, schema de fuziune a inventat (fuziune), vă permite să combinați în perioada de pre-tratament, un cuplu de echipe (pana la un cuplu, dar este posibil ca nimeni altcineva nu va funcționa). Pentru acest mopuri Micro fuziune: fuziune generează mopuri decodor că alocarea rula într-un cuplu de diferite operații diferite performante IF acolo, care memorează numărul de angajați mopami pipeline celule de autobuz și tampoane. Pentru comenzi externe ea makrosliyanie: un decodor interpretează unele cuplu de comenzi ca unul, care produc pentru ei mop 1 (eventual, de asemenea, o fuziune), care, în cazuri rare, ridică, de asemenea, IPC.

Dar, de asemenea, aceste metode sunt insuficiente atunci când apar astfel de evenimente de rupere a performanței, cum ar fi tranziția prezisă incorect, lipsa cache-ului (informațiile cerute nu sunt stocate în cache), comanda de execuție lungă etc. - cu un blocaj într-o etapă, ceilalți așteaptă până când resursele necesare vor deveni disponibile. Apoi între etape adăugați numeroase tampoane și cozi, netezind diferența în performanța etapelor individuale și menținând pe întregul transportor pe parcursul primelor cicluri de ceas după un blocaje fatale. Și mai trebuie să luați comenzi și date de undeva. Și dacă nu putem face nimic cu programul curent, până când rezolvarea congestiei se rezolvă, putem trece la altul, deoarece toate procesoarele sunt multitasking?

Metode pentru creșterea performanțelor de calcul

Prin numărul de puncte de mai sus, este clar că adăugarea de seturi suplimentare de comenzi este una dintre principalele metode de creștere a vitezei procesorului. Deja, numărul total de comenzi din arhitectura x86 a depășit 1000, ceea ce a dus la o complicație excepțională a decodoarelor și a FU, precum și la marea dificultate în programarea și optimizarea în asamblare. Cu toate acestea, Intel (și anume, a introdus marea majoritate a acestor seturi) continuă să furnizeze noilor procesoare următoarele tipuri de instrucțiuni, forțând-o pe aceleași persoane să facă competitorul.

Metode pentru creșterea performanțelor de calcul

Prezice ramificarea idei tehnice de ingineri, arhitecți și mikroelektronschikov încearcă să găsească o altă cale de a accelera procesor - sarcina nu este mai ușor decât pentru a prezice ramura CPU în program executabil, cu o precizie de 99%. Cu toate acestea, dacă te uiți de sus la istoria metodelor de accelerare de calcul, a observat un model curios: în primul rând o modalitate de a apărea în mașini mai mari - mainframe-uri și supercalculatoare, în cazul în care acesta este testat și perfecționate. Apoi, datorită progresului în domeniul microelectronicii, ceea ce a avut anterior dulapuri si sali, a devenit posibil să se potrivească pe o carte, apoi în carcasa procesorului, și apoi la cip lui. Transportoare, cache-uri, superscalaritate, OOO, SIMD și restul - toate provin din anii 60-80. Trebuie să presupunem că acest lucru va continua să se întâmple - trebuie doar să vă uitați la supercomputerele de astăzi și să încercați să faceți același lucru în 10-20 de ani într-un singur chip. Cu toate acestea, aici există un rezultat neașteptat - majoritatea celor mai puternice computere de pe planetă astăzi se bazează pe arhitectura x86. Pur și simplu, a fost atât de succes și versatil, atât de repede absorbit toate cele bune de la concurenți care, dimpotrivă, este supercalculatoare sunt acum realizate pe arhitectura, creat inițial pentru desktop-uri. De fapt, tehnologia informatică, care a făcut un cerc complet, sa odihnit în sine.

Poate că mântuirea va fi un nou microelectronică, non-siliciu (de fapt, a fost mult timp „nano“) - sau nanotuburi de carbon și grafen, sau tranzistori spintronice cuantice pe sau particule „încurcate“. Sau poate, și nu de energie electrică, la toate - Photonics a studiat în mod activ același Intel, care a atins deja crearea de ghiduri de undă integrate și explorează metode de a face tranzistor fotonică. Toate acestea sunt în măsură să ridice plafonul frecvenței (de fapt renunțe la ideea de calculatoare sincrone nu vor, deși, de exemplu, creierul uman este „mașină de calcul netaktiruemoy“), dar ceea ce va fi ideea de calitate (în afară de SSE8 regulate) - nimeni nu știe. Prin urmare, legea infamul lui Moore (care nu au nici o lege, iar regularitatea empirică nu este foarte clar, dar încă respectă timp de zeci de ani), recent, în mod constant sub semnul întrebării - se va extinde chiar cinci ani scurt, sau să vină același capăt al creșterii exponențiale?

Cu toate acestea, este posibil ca creșterea să nu fie necesară. Așa cum a spus în 90 de un utilizator, care a avut o relație cu industria de apărare, „computerul meu cu 486 procesor cu un cap ar fi suficient pentru a gestiona întregul grup de sateliți militari sovietici, dar nu a fost suficient pentru tipizarea simultană și tipărirea de text în Word.“ Zeci de gigaflops și disponibilitatea de programare în limbaje de nivel înalt, ascund complexitatea subtilitățile hardware, atât de corupt mulți programatori, ei cred că mai despre un fel de economisire și optimizare - de ce, în cazul în care utilizatorul pur și simplu poate aștepta șase luni și de upgrade, și în acest timp nu mai bun decât optimizați versiunea curentă a programului, creați unul nou și vindeți-l mai ieftin. Când programați din lucrarea sa transformat în linie ambarcațiuni (PC înseamnă masiv software masiv masiv și programator), oțelul principal nu este calitatea, viteza și comoditatea, și modalități mai rapide de a face bani. Se pare că, după introducerea unei performanțe acceleratoare relativ simple și ieftine într-un mod important de a face computerul mai rapid poate fi programe de optimizare și economiile deja resursele disponibile. Dar acesta este subiectul unui alt articol.







Articole similare

Trimiteți-le prietenilor: