Jump to content
Forum Roportal
Herr Spiegellman

Despre cache

Recommended Posts

Cache-ul mare nu foloseste la mai nimic acum dar poate folosi pe viitor. 256 kb e putin, 512 kb e foarte ok.

Share this post


Link to post
Share on other sites
Cache-ul mare nu foloseste la mai nimic acum dar poate folosi pe viitor. 256 kb e putin, 512 kb e foarte ok.

Asta e valabil doar la AMD si la Prescott. la C2D nu e asa. :offtopic:

Share this post


Link to post
Share on other sites

Daca te referi la concept, ala e universal valabil, si nu doar pentru procesoare de PC.

 

Daca te referi strict la cantitatile de memorie descrise mai sus... pai da, sunt relative la felul in care lucreaza procesorul, la felul in care isi gestioneaza acel cache.

Share this post


Link to post
Share on other sites
Cache-ul mare nu foloseste la mai nimic acum dar poate folosi pe viitor. 256 kb e putin, 512 kb e foarte ok.

Cred că avem din nou o problemă :offtopic:

La ce crezi că se foloseşte memoria cache, concret?

 

P.S. Independent de programul sau jocul pe care vrei să-l rulezi

Edited by harald

Share this post


Link to post
Share on other sites

Jur ca ma simt ca la scoala, cand nu catadicseste nimeni sa raspunda :unknw:

 

As far as I know, cacheul e memorie tampon pentru procesor, unde se stocheaza o anumita cantitate de informatie si ceva din comenzile care urmeaza sa fie executate. Procesoarele Klamath (slot1) aveau 512 kb, un Celeron are 128. Preferabil este in jurul valorilor de 256 sau 512.

 

Ce trece peste 512 ajunge in cache-ul de level 3, care are o latenta suficient de mare incat sa nu-l faca folositor decat serverelor sau masinilor care cer o putere imensa de procesare, extremely streamlined. Unui home-user nu vad cu ce-i aduce concret un spor de performanta.

 

Asteptam si pe Herr sa dea cu explicatia..

 

@Loop : procesoarele dual-core au avantajul exact asta, al capacitatii de a rula mai multe fire de executie simultan - nu stiu si de cache sa fie cu ceva diferit. Daca tot e diferit, mai mare, poti spune si la ce frecvente? Si ce impact ar avea?

 

@Harald: nenea, cauti cearta cu lumanarea? :doh:

Share this post


Link to post
Share on other sites
@Harald: nenea, cauti cearta cu lumanarea? :unknw:

 

Edited by harald

Share this post


Link to post
Share on other sites

Pai daca ce este peste 512 trece in level 3, nu mai are un rol atat de decisiv, nu?

Edit: ain't sure, poate ma insel cu level 3 ala .. Parca erau niste Pentium4 cu lvl 2 de 1MB, versiuni denumite sugestiv extreme, ale unor procesoare altfel normale :unknw:

 

PS Offtopic: procesorul meu e Descutes, nu Klamath

Edited by daemon

Share this post


Link to post
Share on other sites

Vad ca tot scapa mini-aberatii pe aici.

http://en.wikipedia.org/wiki/CPU_cache

Mai ales: http://en.wikipedia.org/wiki/CPU_cache#Multi-level_caches

Lectura placuta.

 

@daemon:

Idee de impact: http://computer.howstuffworks.com/cache3.htm

 

Apropo , prescottul meu care nu e extreme edition vine cu L1: 16 KB si L2: 1 MB.

 

Pe scurt: Procesoarele devin din ce in ce mai rapide si in numere din ce in ce mai mari. Procesoarele proceseaza date. Datele ocupa memorie. Daca memorie este insuficienta sau prea lenta datele nu pot ajunge la procesor cand este nevoie de ele si drept urmare procesorul ala mai mult sta degeaba decat sa isi faca treaba.

Cand ai mai multe procesoare este un lucru destul de intelept sa le dai cacheuri mai mari astfel incat sa poata procesa in voie fara sa piarda timpul din cazua latentelor (care sunt destul de mari mai ales in cazul memoriilor DDR2).

Concluzia este: Cu cat mai multa memorie cache , cu atat mai bine. (preferabil separat in diverse layere pentru ca asa cum s-a mentionat mai devreme si chiar si pe wikipedia , cu cat e mai mult la un loc cu atat devine mai lent)

Edited by Looop

Share this post


Link to post
Share on other sites

Explicatia lui Loop este scurta si la obiect. Problema e simpla si inspre aia bateam => un cache mare tinda sa devina mai lent. Activitati la care ai nevoie de cache enorm ar fi procesarea video, pentru aia sunt de acord, ar fi ok cam 1-2 MB... desi tot la regula de "mai mare => mai incet se incadreaza."

 

Ceea ce este descris pe Wikipedia este manipularea datelor. Pe How Stuff Works este descrisa si executia datelor. Ei bine... daca programele ar fi concepute cu simtul responsabilitatii sau pur si simplu cu bun simt, nu v-ati crede ochilor ce ati putea face cu un PC...

 

Un soft bun dpdvd al executiei ar face asa : la pornire verifica suma totala de RAM si cat din ei este liber, aloca memorie pentru sine cat are nevoie pentru initializare si functionalitatile de baza intr-un singur bloc, se incarca de pe hdd in memorie, se executa mai departe. Pentru fiecare bloc de procesare, fir de executie sau plugin aloca un singur bloc de memorie, incarca si execute. Dupa terminarea executiei unui bloc / plugin / fir de executie, memoria este dezalocata, se sterg atat instructiunile cat si structurile de date folosite.

 

Problema insa este ca in ziua de azi 90% din programatori se bazeaza pe capacitatea limbajului de programare de a produce un executabil cu management de memorie integrat, pe care il ajuta si Windows-ul. Este foarte usor asa pentru ca pur si simplu decizi sa uiti acest aspect si faci programul de ca si cum ai avea ram la discretie... acestia stimuleaza necesarul de mult cache.

 

Am vazut la un moment dar un soft demo pentru niste librarii de grafica 3D in miscare scrise de un rus in Pascal dar cu blocurile functionale principale in Assembler. Era o demonstratie de 2-3 minute. Softul care facea asta in MS-DOS cu tot cu librariile aferente ocupa 29 kb. Rula foarte rapid pe 486-le pe care il aveam atunci... undeva la 28 fps. Explicatia lui era simpla : la inceput softul incerca sa detecteze pe langa ce am zis despre rami si tipul de procesor si dimensiunile cache-ului. algoritmul era facut sa incapa complet in cache L1 iar memoria necesara resurselor era citita in functie de L2. Parea foarte fantezist la vremea aia... but it works !

Share this post


Link to post
Share on other sites
Un soft bun dpdvd al executiei ar face asa : la pornire verifica suma totala de RAM si cat din ei este liber, aloca memorie pentru sine cat are nevoie pentru initializare si functionalitatile de baza intr-un singur bloc, se incarca de pe hdd in memorie, se executa mai departe. Pentru fiecare bloc de procesare, fir de executie sau plugin aloca un singur bloc de memorie, incarca si execute. Dupa terminarea executiei unui bloc / plugin / fir de executie, memoria este dezalocata, se sterg atat instructiunile cat si structurile de date folosite.

Da, dacă ar fi singur pe maşina aia :o: Şi cu celelalte 220 - 300 threads, fiecare cu prioritatea lui şi cu necesităţile lui variabile, ce s-ar

Edited by harald

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×