Scheduler, reordonare buffer, unități de execuție. Impactul inversării prioritare

Traducem... Traduceți Chineză (simplificată) Chineză (tradițională) Engleză Franceză Germană Italiană Portugheză Rusă Spaniolă Turcă

Din păcate, nu putem traduce aceste informații în acest moment - vă rugăm să încercați din nou mai târziu.

Introducere

Software-ul conceput pentru comunicare și transfer de date necesită performanțe foarte înalte în timpul transferului sumă uriașă pachete mici de date. Una dintre provocările dezvoltării aplicațiilor de virtualizare a funcției de rețea (NFV) este că trebuie să utilizați virtualizarea în cea mai mare măsură posibilă, dar și să optimizați aplicația pentru hardware-ul pe care îl utilizați, acolo unde este cazul.

În acest articol, voi evidenția trei caracteristici ale procesoarelor Intel® care sunt utile pentru optimizarea performanței aplicațiilor NFV: Tehnologii de alocare cache (CAT), Intel® Advanced Vector Extensions 2 (Intel® AVX2) pentru procesarea vectorială și Intel® Extensii de sincronizare tranzacțională (Intel® TSX).

Rezolvarea problemei inversării priorității folosind CAT

Când o funcție cu prioritate scăzută fură resurse dintr-o funcție cu prioritate înaltă, numim această „inversie de prioritate”.

Nu tot funcții virtuale la fel de important. De exemplu, funcția de rutare este importantă pentru timpul de procesare și performanță, în timp ce funcția de codificare media nu este la fel de importantă. Această funcție ar putea foarte bine să fie permisă să piardă periodic pachete fără a afecta experiența utilizatorului, deoarece oricum nimeni nu va observa scăderea ratei cadrelor video de la 20 la 19 cadre pe secundă.

Cache-ul implicit este proiectat în așa fel încât cel mai activ consumator îl primește cea mai mare parte. Dar cel mai activ consumator nu este întotdeauna cea mai importantă aplicație. De fapt, opusul este adesea adevărat. Aplicațiile cu prioritate înaltă sunt optimizate, volumul lor de date redus la cel mai mic set posibil. Aplicațiile cu prioritate scăzută nu au atât de mult efort pentru optimizarea lor, așa că tind să consume mai multa memorie. Unele dintre aceste funcții consumă multă memorie. De exemplu, funcția de vizualizare a pachetului pentru analize statistice are prioritate scăzută, dar consumă multă memorie și folosește foarte mult memoria cache.

Dezvoltatorii presupun adesea că, dacă pun o aplicație cu prioritate ridicată într-un anumit nucleu, atunci aplicația va fi în siguranță acolo și nu va fi afectată de aplicațiile cu prioritate scăzută. Din păcate, nu este. Fiecare nucleu are propriul cache de prim nivel (L1, cel mai rapid cache, dar cel mai mărime mică) și un cache de al doilea nivel (L2, ceva mai mare ca dimensiune, dar mai lent). Există zone separate de cache L1 pentru date (L1D) și cod de program (L1I, „I” înseamnă instrucțiuni). Al treilea nivel cache (cel mai lent) este comun tuturor nucleelor ​​de procesor. Pe arhitecturile de procesoare Intel® până la familia Broadwell inclusiv, memoria cache L3 este complet incluzivă, ceea ce înseamnă că conține tot ce este conținut în cache-urile L1 și L2. Datorită modului în care funcționează cache-ul inclusiv, dacă ceva este eliminat din cache-ul de al treilea nivel, acesta va fi, de asemenea, eliminat din cache-urile corespunzătoare de primul și al doilea nivel. Aceasta înseamnă că o aplicație cu prioritate scăzută care are nevoie de spațiu în memoria cache L3 poate înlocui datele din memoria cache L1 și L2 ale unei aplicații cu prioritate înaltă, chiar dacă rulează pe un nucleu diferit.

În trecut, a existat o abordare pentru a rezolva această problemă numită „încălzire”. Când accesul la memoria cache L3 concurează, „câștigătorul” este aplicația care accesează cel mai des memoria. Prin urmare, soluția este să aveți o funcție cu prioritate înaltă să acceseze în mod constant memoria cache, chiar și atunci când este inactiv. Aceasta nu este o soluție foarte elegantă, dar de multe ori a fost destul de acceptabilă și până de curând nu existau alternative. Dar acum există o alternativă: familia de procesoare Intel® Xeon® E5 v3 introduce Tehnologia de alocare a memoriei cache (CAT), care vă oferă posibilitatea de a aloca memoria cache pe baza aplicațiilor și claselor de servicii.

Impactul inversării prioritare

Pentru a demonstra impactul inversării priorității, am scris un microbench simplu care rulează periodic o parcurgere a listei conectate pe un fir cu prioritate mare, în timp ce firul cu prioritate scăzută rulează constant funcția de copiere a memoriei. Aceste fire sunt alocate unor nuclee diferite ale aceluiași procesor. Aceasta simulează cel mai rău scenariu pentru conflictul de resurse: operațiunea de copiere necesită multă memorie, așa că este probabil să perturbe firul de execuție mai important care accesează lista.

Iată codul în C.

// Construiește o listă legată de dimensiunea N cu un model pseudo-aleatoriu void init_pool(list_item *head, int N, int A, int B) ( int C = B; list_item *current = head; for (int i = 0; i< N - 1; i++) { current->bifa = 0; C = (A*C + B) % N; curent->next = (articol_lista*)&(cap[C]); curent = curent->next; ) ) // Atinge primele N elemente dintr-o listă conectată void warmup_list(list_item* current, int N) ( bool write = (N > POOL_SIZE_L2_LINES) ? true: false; for(int i = 0; i< N - 1; i++) { current = current->Următorul; if (scrie) curent->tick++; ) ) void măsură (list_item* head, int N) ( fără semn __long long i1, i2, avg = 0; for (int j = 0; j)< 50; j++) { list_item* current = head; #if WARMUP_ON while(in_copy) warmup_list(head, N); #else while(in_copy) spin_sleep(1); #endif i1 = __rdtsc(); for(int i = 0; i < N; i++) { current->bifat++; curent = curent->next; ) i2 = __rdtsc(); medie += (i2-i1)/50; in_copy = adevarat; ) rezultate=avg/N )

Conține trei funcții.

  • Funcția init_pool() inițializează o listă legată într-o zonă mare de memorie liberă alocată folosind generator simplu pseudo numere aleatorii. Acest lucru împiedică elementele din listă să fie aproape unul de celălalt în memorie, ceea ce ar crea o localitate spațială, ceea ce ar afecta măsurătorile noastre, deoarece unele elemente ar fi preluate automat în prealabil. Fiecare element de listă este exact o linie de cache.
  • Funcția warmup() iterează continuu peste lista construită. Există date specifice care trebuie accesate care ar trebui să fie în cache, astfel încât această funcție împiedică alte fire de execuție să elimine lista compusă din memoria cache L3.
  • Funcția measure() măsoară parcurgerea unui element de listă, apoi fie inactivează timp de 1 milisecundă, fie apelează funcția warmup() în funcție de ce test rulăm. Funcția measure() face apoi media rezultatelor.

Rezultatele microbenchmark-ului pe procesorul Intel® Core™ i7 din a 5-a generație sunt prezentate în graficul de mai jos, unde axa X este numărul total de linii cache din lista legată, iar axa Y este numărul mediu de cicluri CPU pe acces la lista de linkuri. Pe măsură ce dimensiunea listei conectate crește, aceasta iese din memoria cache de date de primul nivel în memoria cache de nivel al doilea și apoi al treilea, apoi în memoria principală.

Indicatorul de bază este linia roșu-maro, corespunde unui program fără un fir de copiere în memorie, adică fără dispută. Linia albastră arată consecințele inversării priorității: datorită funcției de copiere în memorie, accesarea listei durează mult mai mult. Impactul este deosebit de mare dacă lista se încadrează într-un cache L1 sau L2 de mare viteză. Dacă lista este atât de mare încât nu se încadrează în cache-ul de al treilea nivel, impactul este neglijabil.

Linia verde arată efectul de încălzire atunci când funcția de copiere a memoriei rulează: timpul de acces scade brusc și se apropie de valoarea de bază.

Dacă activați CAT și alocați părți din memoria cache de al treilea nivel utilizare exclusivă fiecare nucleu, rezultatele vor fi foarte aproape de linia de bază (prea aproape pentru a fi afișate pe diagramă), care este scopul nostru.

IncluderePISICĂ

În primul rând, asigurați-vă că platforma acceptă CAT. Puteți utiliza instrucțiunea CPUID verificând adresa 7, sub-foaia 0 adăugată pentru a indica disponibilitatea CAT.

Dacă tehnologia CAT este activată și acceptată, există registre MSR care pot fi programate pentru a fi alocate părți diferite cache al treilea nivel pentru diferite nuclee.

Fiecare soclu de procesor are registre MSR IA32_L3_MASKn (de exemplu, 0xc90, 0xc91, 0xc92, 0xc93). Aceste registre stochează o mască de biți care indică cât de mult cache L3 ar trebui să fie alocat pentru fiecare clasă de serviciu (COS). 0xc90 stochează alocarea cache-ului pentru COS0, 0xc91 pentru COS1 etc.

De exemplu, această diagramă arată câteva posibile măști de biți pentru diferite clase serviciu pentru a demonstra modul în care memoria cache poate fi împărțită: COS0 primește jumătate, COS1 primește un sfert, iar COS2 și COS3 primesc fiecare o opteme. De exemplu, 0xc90 ar conține 11110000, iar 0xc93 ar conține 00000001.

Algoritmul de intrare/ieșire directă a datelor (DDIO) are propria masca de biți ascunsă care permite transferul de date de la dispozitive PCIe de mare viteză, cum ar fi adaptoarele de rețea, în anumite zone ale memoriei cache L3. Cu toate acestea, există posibilitatea unui conflict cu clasele definite de servicii, așa că trebuie să țineți cont de acest lucru atunci când creați aplicații NFV de înaltă calitate. lățime de bandă. Pentru a testa conflictele, utilizați pentru a detecta erorile din memoria cache. Unele BIOS au o setare care vă permite să vizualizați și să schimbați masca DDIO.

Fiecare nucleu are un registru MSR IA32_PQR_ASSOC (0xc8f) care indică ce clasă de servicii se aplică acelui nucleu. Clasa implicită de serviciu este 0, ceea ce înseamnă că se folosește masca de biți din MSR 0xc90. (În mod implicit, masca de bit 0xc90 este setată la 1 pentru a asigura disponibilitatea maximă a memoriei cache.)

Cel mai model simplu Folosirea CAT în NFV înseamnă alocarea unor bucăți de cache L3 către diferite nuclee folosind măști de biți izolate și apoi atribuirea de fire sau mașini virtuale nucleelor. Dacă mașinile virtuale trebuie să partajeze nuclee pentru a fi executate, este, de asemenea, posibil să faceți o remediere banală la planificatorul OS, să adăugați o mască de cache la firele pe care rulează mașinile virtuale și să o activați dinamic la fiecare eveniment de programare.

Mai este unul mod neobisnuit folosind CAT pentru a bloca datele din cache. Mai întâi, creați o mască de cache activă și accesați datele din memorie pentru a le încărca în memoria cache L3. Apoi dezactivați biții care reprezintă această parte a memoriei cache L3 în orice mască de biți CAT care este utilizată în viitor. Datele vor fi blocate în cache-ul de al treilea nivel, deoarece acum este imposibil să le evacuați de acolo (în afară de DDIO). Într-o aplicație NFV, acest mecanism permite blocarea tabelelor de căutare de dimensiuni medii pentru rutare și analizarea pachetelor în memoria cache L3 pentru a asigura accesul persistent.

Folosind Intel AVX2 pentru procesarea vectorială

Instrucțiunile SIMD (o instrucțiune - multe date) vă permit să efectuați simultan aceeași operațiune cu în fragmente diferite date. Aceste instrucțiuni sunt adesea folosite pentru a accelera calculele cu virgulă mobilă, dar sunt disponibile și versiuni întregi, booleene și de date ale instrucțiunilor.

În funcție de procesorul pe care îl utilizați, veți avea la dispoziție diferite familii de instrucțiuni SIMD. Mărimea vectorului procesat de comenzi va diferi, de asemenea:

  • SSE acceptă vectori pe 128 de biți.
  • Intel AVX2 acceptă instrucțiuni întregi pentru vectori pe 256 de biți și implementează instrucțiuni pentru operațiunile de colectare.
  • În extensiile AVX3 în viitor Arhitecturi Intel Vectorii ® pe 512 biți vor fi acceptați.

Un vector de 128 de biți poate fi utilizat pentru două variabile de 64 de biți, patru variabile de 32 de biți sau opt variabile de 16 biți (în funcție de instrucțiunile SIMD utilizate). Vectorii mai mari vor găzdui mai multe elemente de date. Având în vedere cerințele ridicate ale aplicațiilor NFV, ar trebui să utilizați întotdeauna cele mai puternice instrucțiuni SIMD (și hardware asociat), în prezent Intel AVX2.

Instrucțiunile SIMD sunt cel mai adesea folosite pentru a efectua aceeași operație pe un vector de valori, așa cum se arată în figură. Aici, operația de creare X1opY1 la X4opY4 este o singură instrucțiune, procesând simultan elementele de date X1 la X4 și Y1 la Y4. În acest exemplu, accelerarea va fi de patru ori mai rapidă decât execuția normală (scalară), deoarece patru operații sunt procesate simultan. Accelerarea poate fi la fel de mare pe cât este mare vectorul SIMD. Aplicațiile NFV procesează adesea mai multe fluxuri de pachete în același mod, astfel încât instrucțiunile SIMD oferă o modalitate naturală de optimizare a performanței.

Pentru bucle simple, compilatorul va vectoriza adesea automat operațiunile utilizând cele mai recente instrucțiuni SIMD disponibile pentru un anumit CPU (dacă utilizați steagurile de compilator potrivite). Vă puteți optimiza codul pentru a utiliza cel mai modern set de instrucțiuni acceptat de hardware în timpul execuției sau puteți compila codul pentru o anumită arhitectură țintă.

Operațiunile SIMD acceptă și încărcări de memorie, copiend până la 32 de octeți (256 de biți) din memorie într-un registru. Acest lucru permite transferul datelor între memorie și registre, ocolind memoria cache și colectarea datelor din diferite locații din memorie. De asemenea, puteți face diverse operatii cu vectori (schimbarea datelor într-un registru) și salvarea vectorilor (scrierea a până la 32 de octeți dintr-un registru în memorie).

Memcpy și memmov - pe scară largă exemple celebre rutine de bază care au fost implementate cu instrucțiuni SIMD de la început, deoarece instrucțiunea REP MOV a fost prea lentă. Codul memcpy a fost actualizat în mod regulat în bibliotecile de sistem pentru a fi utilizat cel mai mult cele mai recente instrucțiuni SIMD. Tabelul de manager CPUID a fost folosit pentru a obține informații despre care dintre cele mai recente versiuni a fost disponibilă pentru utilizare. În același timp, implementarea noilor generații de instrucțiuni SIMD în biblioteci este de obicei întârziată.

De exemplu, următoarea rutină memcpy, care utilizează o buclă simplă, se bazează pe funcții încorporate (în loc de codul bibliotecii), astfel încât compilatorul să o poată optimiza pentru cea mai recentă versiune a instrucțiunilor SIMD.

Mm256_store_si256((__m256i*) (dest++), (__m256i*) (src++))

Compilează în următorul cod de asamblare și are performanțe de două ori mai mari decât bibliotecile recente.

C5 fd 6f 04 04 vmovdqa (%rsp,%rax,1),%ymm0 c5 fd 7f 84 04 00 00 vmovdqa %ymm0.0x10000(%rsp,%rax,1)

Codul de asamblare dintr-o funcție inline va copia 32 de octeți (256 de biți) folosind cele mai recente instrucțiuni SIMD disponibile, în timp ce codul de bibliotecă care utilizează SSE va copia doar 16 octeți (128 de biți).

Aplicațiile NFV trebuie adesea să efectueze o operațiune de colectare prin încărcarea datelor din mai multe locații în locuri diferite amintiri neconsecutive. De exemplu, adaptor de retea poate stoca în cache pachetele primite folosind DDIO. O aplicație NFV poate avea nevoie doar de acces la porțiunea IP de destinație a antetului rețelei. Cu operația de colectare, aplicația poate colecta date pentru 8 pachete în același timp.

Nu este nevoie să folosiți funcții inline sau cod de asamblare pentru operația de colectare, deoarece compilatorul poate vectoriza codul, ca și pentru programul prezentat mai jos, pe baza unui test de însumare a numerelor din locații pseudoaleatoare din memorie.

Int a; int b; pentru (i = 0; i< 1024; i++) a[i] = i; for (i = 0; i < 64; i++) b[i] = (i*1051) % 1024; for (i = 0; i < 64; i++) sum += a]; // This line is vectorized using gather.

Ultima linie este compilat în următorul cod de asamblare.

C5 fe 6f 40 80 vmovdqu -0x80(%rax),%ymm0 c5 ed fe f3 vpaddd %ymm3,%ymm2,%ymm6 c5 e5 ef db vpxor %ymm3,%ymm3,%ymm3 c5 d5 76 ed vpcmpeqd %ymm5, ymm5,%ymm5 c4 e2 55 90 3c a0 vpgatherdd %ymm5,(%rax,%ymm4,4),%ymm7

O singură operațiune de colectare este semnificativ mai rapidă decât o secvență de descărcări, dar acest lucru are sens doar dacă datele sunt deja în cache. În caz contrar, datele vor trebui preluate din memorie, ceea ce necesită sute sau mii de cicluri CPU. Dacă datele sunt în cache, este posibilă o accelerare de 10 ori
(adică 1000%). Dacă datele nu sunt în cache, accelerarea este de numai 5%.

Când utilizați tehnici ca acestea, este important să analizați aplicația pentru a identifica blocajele și pentru a înțelege dacă aplicația petrece prea mult timp copiend sau colectând date. Poți să folosești .

O altă caracteristică utilă pentru NFV în Intel AVX2 și alte operațiuni SIMD sunt operațiunile bit și logice. Ele sunt folosite pentru a accelera codul de criptare non-standard, iar verificarea biților este convenabilă pentru dezvoltatorii ASN.1 și este adesea folosită pentru date în telecomunicații. Intel AVX2 poate fi folosit pentru comparații mai rapide de șiruri folosind algoritmi avansați, cum ar fi MPSSEF.

Extensiile Intel AVX2 funcționează bine mașini virtuale. Performanța este aceeași și nu există ieșiri eronate de mașină virtuală.

Folosind Intel TSX pentru o scalabilitate mai mare

Una dintre probleme programe paralele este de a evita coliziunile de date, care pot apărea atunci când mai multe fire de execuție încearcă să folosească același element de date și cel puțin un thread încearcă să schimbe datele. Pentru a evita rezultate de frecvență imprevizibile, se folosește blocarea: primul fir care folosește un element de date îl blochează de alte fire până la finalizarea lucrării sale. Dar această abordare poate să nu fie eficientă dacă există încuietori frecvente concurente sau dacă încuietorile controlează o zonă de memorie mai mare decât este necesar.

Intel Transactional Synchronization Extensions (TSX) oferă instrucțiuni procesorului pentru a ocoli blocările tranzacțiilor din memoria hardware. Acest lucru ajută la obținerea unei scalabilitati mai mari. Modul în care funcționează este că atunci când un program intră într-o secțiune care folosește Intel TSX pentru a proteja locațiile de memorie, toate încercările de acces la memorie sunt înregistrate, iar la sfârșitul sesiunii protejate sunt fie confirmate automat, fie anulate automat. Un rollback este efectuat dacă, în timpul executării dintr-un alt fir de execuție, a existat un conflict de acces la memorie care ar putea cauza o condiție de cursă (de exemplu, scrierea într-o locație din care o altă tranzacție citește date). De asemenea, poate apărea o derulare înapoi în cazul în care înregistrarea de acces la memorie devine prea mare pentru implementarea Intel TSX, dacă există o instrucțiune I/O sau un apel de sistem sau dacă sunt aruncate excepții sau mașinile virtuale sunt oprite. Apelurile I/O sunt anulate atunci când nu pot fi executate în mod speculativ din cauza interferențelor externe. Un apel de sistem este o operațiune foarte complexă care modifică inelele și mânerele de memorie și este foarte dificil de retras.

Un caz comun de utilizare pentru Intel TSX este controlul accesului pe o tabelă hash. De obicei, o blocare a tabelului cache este utilizată pentru a garanta accesul la tabelul cache, dar acest lucru crește latența pentru firele de execuție care concurează pentru acces. Blocarea este adesea prea grosieră: întreaga masă este blocată, deși este extrem de rar ca firele să încerce să acceseze aceleași elemente. Pe măsură ce numărul de nuclee (și fire) crește, blocarea grosieră împiedică scalabilitatea.

După cum se arată în diagrama de mai jos, blocarea grosieră poate face ca un fir să aștepte ca un alt fir să elibereze tabelul hash, chiar dacă firele folosesc elemente diferite. Utilizarea Intel TSX permite ambelor fire de execuție să funcționeze, rezultatele acestora fiind înregistrate după ce se ajunge cu succes la finalul tranzacției. Hardware-ul detectează conflictele din mers și anulează tranzacțiile ofensive. Când utilizați Intel TSX, firul 2 nu trebuie să aștepte, ambele fire se execută mult mai devreme. Blocarea pe tabelele hash este convertită în blocare reglată, rezultând o performanță îmbunătățită. Intel TSX acceptă precizia de urmărire a conflictelor la nivelul unei singure linii cache (64 de octeți).

Intel TSX folosește două interfețe de programare pentru a specifica secțiuni de cod pentru a efectua tranzacții.

  • Hardware Lock Bypass (HLE) este compatibil cu versiunea inversă și poate fi utilizat cu ușurință pentru a îmbunătăți scalabilitatea fără a face modificări majore în biblioteca de blocare. HLE are acum prefixe pentru instrucțiunile blocate. Prefixul instrucțiunii HLE semnalează hardware-ului să monitorizeze starea lacătului fără a o achiziționa. În exemplul de mai sus, efectuarea pașilor descriși va asigura că accesul la alte intrări din tabelul hash nu va mai duce la o blocare decât dacă există un acces de scriere conflictual la o valoare stocată în tabelul hash. Drept urmare, accesul va fi paralelizat, astfel încât scalabilitatea va fi crescută în toate cele patru fire.
  • Interfața RTM include instrucțiuni explicite de pornire (XBEGIN), commit (XEND), anulare (XABORT) și testare a stării (XTEST) tranzacțiilor. Aceste instrucțiuni oferă bibliotecilor de blocare o modalitate mai flexibilă de a implementa ocolirea blocării. Interfața RTM permite bibliotecilor să utilizeze algoritmi flexibili de anulare a tranzacțiilor. Această caracteristică poate fi folosită pentru a îmbunătăți Performanță Intel TSX utilizând reporniri optimiste ale tranzacțiilor, derulări ale tranzacțiilor și alte tehnici avansate. Folosind instrucțiunea CPUID, biblioteca poate reveni la o implementare mai veche a blocărilor non-RTM, menținând în același timp compatibilitatea cu codul la nivel de utilizator.
  • Pentru mai multe informații despre HLE și RTM, vă recomand să consultați următoarele articole Intel Developer Zone.

La fel ca și optimizarea primitivelor de sincronizare folosind HLE sau RTM, caracteristicile planului de date NFV pot beneficia de Intel TSX atunci când se utilizează kitul de dezvoltare a planului de date (DPDK).

Atunci când utilizați Intel TSX, principala provocare nu este în implementarea acestor extensii, ci în evaluarea și determinarea performanței acestora. Există contoare de performanță care pot fi utilizate în programe Linux* perf, și pentru a evalua succesul execuției Intel TSX (numărul de cicluri finalizate și numărul de cicluri anulate).

Intel TSX ar trebui utilizat cu prudență și testat cu atenție în aplicațiile NFV, deoarece operațiunile I/O într-o zonă protejată de Intel TSX implică întotdeauna rollback, iar multe caracteristici NFV folosesc o mulțime de operațiuni I/O. Blocarea concomitentă ar trebui evitată în aplicațiile NFV. Dacă sunt necesare blocări, atunci algoritmii de ocolire a blocării vor ajuta la îmbunătățirea scalabilității.

Despre autor

Alexander Komarov lucrează ca inginer de dezvoltare de aplicații în Grupul de software și servicii al Intel Corporation. În ultimii 10 ani, activitatea principală a lui Alexander a fost optimizarea codului pentru a obține cea mai înaltă performanță pe platformele de server Intel existente și viitoare. O astfel de muncă include utilizarea instrumentelor de dezvoltare Intel software: Acestea includ profilere, compilatoare, biblioteci, cele mai recente seturi de instrucțiuni, nanoarhitectură și îmbunătățiri arhitecturale pentru cele mai recente procesoare și chipset-uri x86.

Informații suplimentare

Pentru mai multe informații despre NFV, vedeți următoarele videoclipuri.

Data: 13-08-2014 22:26

În 2007, AMD a lansat o nouă generație de procesoare Phenom. Aceste procesoare, după cum s-a dovedit mai târziu, conțineau o eroare în blocul TLB (tampon pentru traducere, un buffer pentru conversia rapidă a adreselor virtuale în cele fizice). Compania nu a avut de ales decât să rezolve această problemă printr-un patch sub forma unui patch BIOS, dar acest lucru a redus performanța procesorului cu aproximativ 15%.

Ceva similar s-a întâmplat acum cu Intel. În procesoarele din generația Haswell, compania a implementat suport pentru instrucțiunile TSX (Transactional Synchronization Extension). Ele sunt concepute pentru a accelera aplicațiile cu mai multe fire și ar fi trebuit utilizate în principal în segmentul serverelor. În ciuda faptului că procesoarele Haswell sunt pe piață de mult timp, acest set Practic nu au fost folosite instrucțiuni. Aparent, nu se va întâmpla în viitorul apropiat.

Faptul este că Intel a făcut o „greșeală”, așa cum o numește compania însăși, în instrucțiunile TSX. Eroarea, de altfel, nu a fost descoperită de specialiștii din gigantul procesoarelor. Poate duce la instabilitate a sistemului. Compania poate rezolva această problemă doar într-un singur fel, prin actualizarea BIOS-ului, care dezactivează acest set de instrucțiuni.

Apropo, TSX este implementat nu numai în procesoarele Haswell, ci și în primele modele de procesoare Broadwell, care ar trebui să apară sub numele Core M. Un reprezentant al companiei a confirmat că Intel intenționează să implementeze o versiune „fără erori” a instrucțiunilor TSX. în următoarele produse în viitor.

Etichete: Comentariu

Știri anterioare

2014-08-13 22:23
Sony Xperia Z2 „a supraviețuit” după o ședere de șase săptămâni pe fundul unui iaz sărat

Smartphone-urile devin adesea eroii poveștilor incredibile în care încearcă rolul unei armuri de buzunar, oprind un glonț și salvând

2014-08-13 21:46
IPhone 6 a intrat în etapa finală de testare

Conform celor mai recente date de la agenția de presă Gforgames, iPhone 6 a sosit stadiu final testare înainte de lansarea în masă a unui nou smartphone în producție. Să vă reamintim că iPhone 6 va fi asamblat în fabrici din China...

2014-08-12 16:38
Tableta octa-core iRU M720G acceptă două carduri SIM

Tableta are 2 GB RAM și 16 GB memorie flash încorporată. Există două camere la bord: principala de 8 megapixeli și frontală de 2 megapixeli. iRU M720G este echipat cu module 3G, GPS, Wi-Fi, Bluetooth, radio FM, precum și un slot pentru două cartele SIM, care îi permite să execute...

2014-08-10 18:57
LG a lansat un smartphone ieftin L60 în Rusia

Fără multă fast și fanfară, LG Electronics a introdus în Rusia un nou model al Seria L III - LG L60. Acest smartphone ieftin prezentat în gama de prețuri de la 4 la 5 mii de ruble de la cel mai mare rus...

Cu fiecare nouă generație, procesoarele Intel încorporează tot mai multe tehnologii și funcții. Unele dintre ele sunt binecunoscute (cine, de exemplu, nu știe despre hyperthreading?), în timp ce majoritatea nespecialiștilor nici măcar nu știu despre existența altora. Să deschidem binecunoscuta bază de cunoștințe pentru produsele Intel Automated Relational Knowledge Base (ARK) și să selectăm un procesor acolo. Vom vedea o listă bogată de caracteristici și tehnologii - ce se află în spatele numelor lor de marketing misterioase? Vă invităm să aprofundați problema, întorcându-vă Atentie speciala pe tehnologii puțin cunoscute - cu siguranță vor fi o mulțime de lucruri interesante acolo.

Comutare bazată pe cerere Intel

Împreună cu tehnologia Intel SpeedStep îmbunătățită, tehnologia Intel Demand Based Switching este responsabilă pentru a se asigura că, în orice moment, în timpul încărcării curente, procesorul funcționează la frecvența optimă și primește o frecvență adecvată. alimentare electrică: nici mai mult nici mai puțin decât este necesar. Acest lucru reduce consumul de energie și generarea de căldură, ceea ce este important nu numai pentru dispozitive portabile, dar și pentru servere - aici este folosită comutarea bazată pe cerere.

Acces rapid la memorie Intel

Funcția de controler de memorie pentru a optimiza performanța RAM. Este o combinație de tehnologii care permite, prin analiza aprofundată a cozii de comenzi, identificarea comenzilor „suprapuse” (de exemplu, citirea din aceeași pagină de memorie), iar apoi reordonarea execuției efective astfel încât comenzile „suprapuse” să fie executate una după alta. În plus, comenzile de scriere în memorie cu prioritate mai mică sunt programate pentru momentele în care coada de citire este estimată să se golească, făcând procesul de scriere a memoriei și mai puțin restrictiv în ceea ce privește viteza de citire.

Acces la memorie Intel Flex

O altă funcție a controlerului de memorie, care a apărut pe vremea când era un cip separat, în 2004. Oferă posibilitatea de a lucra în modul sincron cu două module de memorie în același timp și, spre deosebire de modul simplu cu două canale care exista înainte, modulele de memorie pot fi de dimensiuni diferite. În acest fel, s-a obținut flexibilitate în dotarea computerului cu memorie, ceea ce se reflectă în denumire.

Reluare a instrucțiunilor Intel

O tehnologie foarte profundă care a apărut pentru prima dată în procesoare Intel Itanium. În timpul funcționării conductelor de procesor, poate apărea o situație când instrucțiunile au ajuns deja să fie executate, dar datele necesare nu sunt încă disponibile. Instrucțiunea trebuie apoi „reluată”: îndepărtată de pe transportor și rulată la începutul acestuia. Ceea ce este exact ceea ce se întâmplă. Încă unul functie importanta IRT – corectarea erorilor aleatoare pe conductele procesorului. Citiți mai multe despre această caracteristică foarte interesantă.

Tehnologia Intel My WiFi

Tehnologie de virtualizare care vă permite să adăugați WiFi virtual adaptor la fizicul existent; astfel, ultrabook-ul sau laptopul poate deveni un punct de acces sau un repetor cu drepturi depline. Componentele mele software WiFi sunt incluse cu driverul Intel PROSet Wireless Software versiunea 13.2 și ulterioară; trebuie avut în vedere că doar unele dintre tehnologii sunt compatibile Adaptoare WiFi. Instrucțiunile de instalare, precum și o listă de compatibilitate software și hardware, pot fi găsite pe site-ul web Intel.

Tehnologia Intel Smart Idle

O altă tehnologie de economisire a energiei. Vă permite să dezactivați blocurile de procesor neutilizate în prezent sau să le reduceți frecvența. Un lucru indispensabil pentru un procesor de smartphone, care este exact acolo unde a apărut - în procesoarele Intel Atom.

Platformă Intel Stable Image

Un termen care se referă la procesele de afaceri mai degrabă decât la tehnologie. program Intel SIPP asigură stabilitatea software-ului, asigurându-se că componentele și driverele de bază ale platformei rămân neschimbate timp de cel puțin 15 luni. Prin urmare, clienti corporativi au posibilitatea de a utiliza aceleași imagini de sistem implementate în această perioadă.

Intel QuickAssist

Setat de hardware funcții implementate, care necesită cantități mari de calcul, de exemplu, criptare, compresie, recunoaștere a modelelor. Scopul QuickAssist este de a ușura lucrurile pentru dezvoltatori, oferindu-le blocuri funcționale și de a-și accelera aplicațiile. Pe de altă parte, tehnologia vă permite să nu încredințați sarcinilor „grele”. procesoare puternice, care este deosebit de valoros în sistemele încorporate care sunt foarte limitate atât în ​​ceea ce privește performanța, cât și consumul de energie.

Intel Quick Resume

Tehnologie dezvoltată pentru calculatoare pe baza Platforme Intel Viiv, care le-a permis să se pornească și să se oprească aproape instantaneu, precum receptoare TV sau DVD playere; în același timp, în starea „oprit”, computerul putea continua să efectueze unele sarcini care nu necesitau intervenția utilizatorului. Și deși platforma în sine a trecut fără probleme în alte forme odată cu evoluțiile care au însoțit-o, linia este încă prezentă în ARK, pentru că nu a fost cu mult timp în urmă.

Cheie de securitate Intel

Un nume generic pentru instrucțiunile RDRAND pe 32 și 64 de biți care utilizează o implementare hardware a generatorului digital de numere aleatorii (DRNG). Instrucțiunea este folosită în scopuri criptografice pentru a genera chei aleatoare frumoase și de înaltă calitate.

Intel TSX-NI

Tehnologia cu denumirea complexă Intel Transactional Synchronization Extensions - New Instructions presupune un add-on la sistemul cache al procesorului care optimizează mediul de execuție al aplicațiilor multi-threaded, dar, bineînțeles, doar dacă aceste aplicații folosesc interfețe software TSX-NI. Din partea utilizatorului această tehnologie nu este vizibil direct, dar oricine poate citi descrierea acestuia limbaj accesibil pe blogul lui Stepan Koltsov.

În concluzie, dorim să vă reamintim încă o dată că Intel ARK există nu doar ca site web, ci și ca aplicație offline pentru iOS și Android. Rămâneți pe subiect!

#Xeon

Destul de des atunci când alegeți un server cu un singur procesor sau stație de lucru Se pune întrebarea ce procesor să utilizați - un server Xeon sau un Core ix obișnuit. Avand in vedere ca aceste procesoare sunt construite pe aceleasi nuclee, alegerea cade destul de des pe procesoarele desktop, care au de obicei un cost mai mic cu performante similare. Atunci de ce Intel lansează procesoare Xeon E3? Să ne dăm seama.

Specificații

Pentru început, să luăm modelul junior al procesorului Xeon din gama actuală de modele - Xeon E3-1220 V3. Adversarul va fi Procesor de bază i5-4440. Ambele procesoare se bazează pe nucleul Haswell și au aceeași bază frecvența ceasului si preturi similare. Diferențele dintre aceste două procesoare sunt prezentate în tabel:

Disponibilitatea grafică integrată. La prima vedere, Core i5 are un avantaj, dar tot serverul plăci de bază au o placă video încorporată care nu este necesară cip graficîn procesor, iar stațiile de lucru nu folosesc de obicei grafică integrată din cauza performanței lor relativ scăzute.

Suport ECC. Viteza mare și cantitățile mari de memorie RAM cresc probabilitatea erorilor software. De obicei, astfel de erori sunt invizibile, dar, în ciuda acestui fapt, ele pot duce la modificări ale datelor sau blocări ale sistemului. Dacă astfel de erori nu sunt periculoase pentru computerele desktop din cauza apariției lor rare, atunci ele sunt inacceptabile în serverele care funcționează non-stop de câțiva ani. Pentru a le corecta, se folosește tehnologia ECC (cod de corectare a erorilor), a cărei eficiență este de 99,988%.

Puterea termică de proiectare (TDP). În esență, consumul de energie al procesorului la capacitate maximă. Xeons au, de obicei, o anvelopă termică mai mică și algoritmi mai inteligenți de economisire a energiei, ceea ce duce în cele din urmă la facturi mai mici de energie electrică și o răcire mai eficientă.

cache L3. Memoria cache este un fel de strat între procesor și RAM, care are un foarte de mare viteză. Cu cât este mai mare dimensiunea memoriei cache, cu atât mai rapid rulează procesorul, deoarece chiar și RAM foarte rapidă este semnificativ mai lentă decât memoria cache. Procesoarele Xeon au în mod obișnuit dimensiuni mai mari ale memoriei cache, ceea ce le face preferabile pentru aplicațiile care necesită mult resurse.

Frecvență / Frecvență în Modul Turbo Boost. Totul este simplu aici - cu cât frecvența este mai mare, cu atât procesorul funcționează mai repede, toate celelalte lucruri fiind egale. Frecvența de bază, adică frecvența la care procesoarele funcționează la sarcină completă este aceeași, dar în Turbo Boost, adică atunci când lucrezi cu aplicații care nu sunt proiectate pentru procesoare multi-core, Xeon este mai rapid.

Suport Intel TSX-NI. Intel Transactional Synchronization Extensions New Instructions (Intel TSX-NI) este un add-on la sistemul de cache al procesorului care optimizează mediul de execuție al aplicațiilor multi-threaded, dar, bineînțeles, doar dacă aceste aplicații folosesc interfețe de programare TSX-NI. Seturile de instrucțiuni TSX-NI vă permit să implementați mai eficient lucrul cu Date mareși baze de date - în cazurile în care mai multe fire accesează aceleași date și apar situații de blocare a firelor de execuție. Accesul la date speculative, care este implementat în TSX, vă permite să construiți astfel de aplicații mai eficient și să scalați mai dinamic performanța atunci când creșteți numărul de fire executate concomitent prin rezolvarea conflictelor la accesarea datelor partajate.


Suport Trusted Execution. Tehnologia Intel Trusted Execution îmbunătățește execuția securizată a comenzilor prin îmbunătățiri hardware ale procesoarelor și chipset-urilor Intel. Această tehnologie oferă platformelor de birou digitale caracteristici de securitate, cum ar fi lansarea măsurată a aplicației și executarea securizată a comenzilor. Acest lucru se realizează prin crearea unui mediu în care aplicațiile rulează izolat de alte aplicații din sistem.

La beneficii procesoare Xeon modelele mai vechi pot adăuga și mai multă capacitate L3, până la 45 MB, mai multe nuclee, până la 18 și mai multă memorie RAM acceptată, până la 768 GB per procesor. În același timp, consumul nu depășește 160 W. La prima vedere, aceasta este o valoare foarte mare, însă, având în vedere că performanța unor astfel de procesoare este de câteva ori mai mare decât performanța aceluiași Xeon E3-1220 V3 cu un TDP de 80 W, economiile devin evidente. De asemenea, trebuie menționat că niciunul dintre procesoarele din familia Core nu acceptă multiprocesare, adică este posibil să instalați nu mai mult de un procesor într-un singur computer. Majoritatea aplicațiilor pentru servere și stații de lucru se scalează bine pe nuclee, fire și procesoare fizice, astfel încât instalarea a două procesoare va oferi o creștere de aproape două ori a performanței.