Gå til innhold

Kan lage 5- eller 7-kjerne-prosessor


Anbefalte innlegg

Err... Tråder kjører bare tilsynelatende samtidig da to kjerner aldri vil kunne aksessere samme fysiske minnecelle samtidig. Lær deg hvordan ting fungerer før du kommer med dine utbrudd om hvordan du tror ting er.

Det er som å si at flere biler ikke kan kjøre på samme veien fordi de ikke kan stå oppå hverandre.

Tror jeg fikk med meg hvordan dette fungerte i løpet av TDT4260 for en del år siden.

Fortell meg gjerne hvor du finner denne interessante definisjonen av parallellitet i H&P:QA. Jeg ønsker ikke på generelt grunnlag å være vanskelig, men du har nå ganske konsekvent over lengre tid "informert" dette forumet med dine missforståelser og det begynner vel nå å bli på tide at du selv sjekker fakta før du glatt går hen og villeder andre.

Joda, er snart ferdig med bachelor i datateknikk selv. Hvis du først leser gjennom denne om hvordan tråder virker også neste side om Thread scheduling så vil du få et genrelt inntrykk av hvordan ting fungerer. Jeg vet at disse sidene er spesifikt for java men er likt i andre språk. Generelt om Thread scheduler til windows xp finner du her. Mine "missforståelser" kan du mer en gjerne lese mer om rett under Introduction på denne siden hvor det står veldig enkelt forklart. :dontgetit:

Lenke til kommentar
Videoannonse
Annonse
Err... Tråder kjører bare tilsynelatende samtidig da to kjerner aldri vil kunne aksessere samme fysiske minnecelle samtidig. Lær deg hvordan ting fungerer før du kommer med dine utbrudd om hvordan du tror ting er.

Det er som å si at flere biler ikke kan kjøre på samme veien fordi de ikke kan stå oppå hverandre.

Tror jeg fikk med meg hvordan dette fungerte i løpet av TDT4260 for en del år siden.

Fortell meg gjerne hvor du finner denne interessante definisjonen av parallellitet i H&P:QA. Jeg ønsker ikke på generelt grunnlag å være vanskelig, men du har nå ganske konsekvent over lengre tid "informert" dette forumet med dine missforståelser og det begynner vel nå å bli på tide at du selv sjekker fakta før du glatt går hen og villeder andre.

Joda, er snart ferdig med bachelor i datateknikk selv. Hvis du først leser gjennom denne om hvordan tråder virker også neste side om Thread scheduling så vil du få et genrelt inntrykk av hvordan ting fungerer. Jeg vet at disse sidene er spesifikt for java men er likt i andre språk. Generelt om Thread scheduler til windows xp finner du her. Mine "missforståelser" kan du mer en gjerne lese mer om rett under Introduction på denne siden hvor det står veldig enkelt forklart. :dontgetit:

 

Du har nok misforstått dette. Du sier at Windows mangler teknologi for at flere prosessorer skal kunne jobbe samtidig, noe som er helt på jordet og som den siste msdn-lenken du viser til ikke handler om. Den handler to eller flere tråder som vil endre på samme register. Det er jo klart at de ikke kan gjøre dette samtidig og det har ingenting med Windows å gjøre, det er generell datateknikk. For å ungå at man får feil verdi i registerene/cache/etc. må aksessene gjøres i rett rekkefølge.

 

Dette stopper ikke kjøring av to eller flere uavhengige tråder.

 

Edit: Virtuelt minne er et annet stikkord som er viktig for moderne OSer.

Endret av Bludd
Lenke til kommentar

Interessant å se at Intel nå har klonet AMD-teknologi som de forsøkte å latterliggjøre for et år siden. Det var visst ingen som hadde behov for 3-kjerne-prosessorene til AMD...

 

Neeeida, men 7-kjerner, ja der har vi marked! :thumbup:

 

Intel = fail

 

Edit: Må forøvrig si det er svak journalistikk av artikkelforfatter å ikke få med at AMD har hatt denne teknologien såpass lenge, og istedet presentere dette som noe nytt. Er det på bestilling fra Intel?

Endret av Visjoner
Lenke til kommentar
Interessant å se at Intel nå har klonet AMD-teknologi som de forsøkte å latterliggjøre for et år siden. Det var visst ingen som hadde behov for 3-kjerne-prosessorene til AMD...

 

Neeeida, men 7-kjerner, ja der har vi marked! :thumbup:

 

Intel = fail

 

Edit: Må forøvrig si det er svak journalistikk av artikkelforfatter å ikke få med at AMD har hatt denne teknologien såpass lenge, og istedet presentere dette som noe nytt. Er det på bestilling fra Intel?

Må si jeg ble litt overrasket over at Intel var så negativ til 3 kjerne designet da AMD kom med det, da det var ganske opplagt at de måtte gjøre noe lignende selv etter hvert for å holde svinn i prosessen nede på et minimum. På den annen side er det drygt å referere til mangelen på en kjerne som teknologi.

 

"Oi se den mannen med krykketeknologi. Han må være heldig du..."

 

Også enig i at 7 kjerne markedet kan være heller lite. Software på Xeon MP maskiner er svindyrt og lisensieres per sokkel. Da vil du ha flest mulig kjerner siden du betaler like mye uansett hvor mange du har. En mulig fordel er at de resterende kjernene kan kjøre litt raskere, hvilket kan være en større fordel enn å ha nok en kjerne. Dette kan videre bli forsterket av utviklere som ikke forstår flertråding...

 

icc: Håper du bruker siste del på skolen flittig. Det er et mildt sagt et trangt marked for javautviklere som bare kan utnytte én kjerne på windows maskiner i disse moderne finanskrisetider.

Endret av Anders Jensen
Lenke til kommentar

Anders Jensen og bludd:

Leser dere godt gjennom postene mine vil dere se at det jeg kommenterer er at ett program ikke kan ha mer så en trå som kjører samtidig. Derfor kan ikke progammer utnytte flere kjerner, derfor blir jeg irritert over ignorante folk som skylder på dårlig programmering. Selvfølgelig kan andre tråder fra andre programmer kjøre samtidig da de har reserverte andre plasser i minnet. Lær dere å lese før dere på poster!

Endret av icc
Lenke til kommentar
Anders Jensen og bludd:

Leser dere godt gjennom postene mine vil dere se at det jeg kommenterer er at ett program ikke kan ha mer så en trå som kjører samtidig. Derfor kan ikke progammer utnytte flere kjerner, derfor blir jeg irritert over ignorante folk som skylder på dårlig programmering. Selvfølgelig kan andre tråder fra andre programmer kjøre samtidig da de har reserverte andre plasser i minnet. Lær dere å lese før dere på poster!

Det er feil. En prosess med flere uavhengige tråder kan ha alle trådene kjørende samtidig.

 

Edit: Tror du skal lære deg terminologien først og fremst.

Endret av Bludd
Lenke til kommentar

bludd ++, icc --, Forresten noe ironisk å kalle seg icc og ikke kjenne til flertråding. Intel C Compiler (ICC) kan jo faktisk gjøre dette for deg helt automagisk selv om du ikke har skrevet koden for flertråding. Krever imidlertid en anstendig mengde løkker for at det skal være noe nevneverdig å hente på det, og det er vel fortsatt begrenset hvor komplekse de løkkene kan være.

Lenke til kommentar
Anders Jensen og bludd:

Leser dere godt gjennom postene mine vil dere se at det jeg kommenterer er at ett program ikke kan ha mer så en trå som kjører samtidig. Derfor kan ikke progammer utnytte flere kjerner, derfor blir jeg irritert over ignorante folk som skylder på dårlig programmering. Selvfølgelig kan andre tråder fra andre programmer kjøre samtidig da de har reserverte andre plasser i minnet. Lær dere å lese før dere på poster!

Det er feil. En prosess med flere uavhengige tråder kan ha alle trådene kjørende samtidig.

 

Edit: Tror du skal lære deg terminologien først og fremst.

Err.. Les siste side som jeg linka til. Gidder ikke dette lengre, hvis du absolutt vil gå rundt og tro det så for all del. Men en ting er sikkert DU TAR FEIL!

Lenke til kommentar

icc: Jeg tror du er litt på bærtur angående terminologi. Et program kan gjerne bestå av tusenvis av tråder med mye eller lite interaksjon mellom trådene. Trådene i programmet trenger ikke å ha samtidig skrivetilgang til en bestemt minneadresse på nøyaktig samme tidspunkt for å bli kalt flertrådet. Tråder utveksler informasjon ved å lese fra og skrive til de samme minneadressene, men det er en del begrensninger angående samtidighet. Likevel beskrives slike programmer som ekte flertrådede programmer. Skaleringen er ofte ikke 100% pga blant annet forsinkelser og koherens, men det er fortsatt ekte flertrådede programmer. Trådene kan kjøre samtidig på samme kjerne (SMT) eller samtidig på hver sine kjerner (SMP) eller begge deler. I tillegg til dette utføres hver enkelt tråd med en viss grad av parallellitet der det er mulig. Ofte regner man med 2-2,5 instruksjoner per tråd per klokkesyklus. Altså et gjennomsnitt på 2-2,5 parallelle instruksjoner for hver tråd. Dette skjer automatisk i prosessoren ved at avhengigheter sjekkes og instruksjoner stokkes slik at de kan utføres mest mulig parallelt. Kompilatorer bruker ulike taktikker for å maksimalisere denne effekten. For å gå ennå lengre så finnes det en del instruksjoner (f.eks en del SSE-instruksjoner) som er "parallelle" versjoner av en serie med gamle x86-instruksjoner. Med andre ord utføres parallellitet på mange plan.

Lenke til kommentar
Err.. Les siste side som jeg linka til. Gidder ikke dette lengre, hvis du absolutt vil gå rundt og tro det så for all del. Men en ting er sikkert DU TAR FEIL!

 

Du får fortsette å gå rundt og tro det.

 

IPC og superskalaritet betyr vel heller ingenting for deg, icc.

Endret av Bludd
Lenke til kommentar

icc: den siste siden du linket til snakker om låsing av delte minneområder for at flere tråder skal kunne skrive til samme adresse kontrollert. Man prøver gjerne å gjøre disse kritiske seksjonene så små som mulig, for at trådene skal kunne jobbe mest mulig uavhengig. Så lenge de to trådene ikke prøver å aksessere samme adresse på samme tid kjører begge helt fint samtidig.

 

Jeg tror ikke du bør argumentere slik du gjør her i noen eksamen i datateknikk på bachelornivå.

Lenke til kommentar

icc: Jeg har selv skrevet java programmer som utnytter flere kjerner på windows helt fint. Dette er ikke akkurat revolusjonerende nyheter.

 

Videre gjetter jeg på at du nettopp har hatt kurs i monitors i java og lært at ting kan gå veldig galt hvis du ikke syncer mot delte datastrukturer. Det er forsåvidt greit, men syncing mot delte datastrkturer er bare en liten del av et program og når du ikke gjør dette så er det fritt frem. Hvis du ikke skriver til strukturen, hvilket er ganske vanlig, så kan du også unngå dette.

 

Hvordan du klarer å blande inn windows i dette er imidlertid et totalt mysterium for meg. Særlig siden du bruker Java som eksempel da dette kjører likt enten du er på wintel eller aix+power eller noe annet rart som Solaris+sparc.

 

Forøvrig er det riktig at flertråding ikke er en endelig løsning på alle problemer for datamaskiners ytelse. Men jeg foreslår at du legger dette OS tullet bak deg og heller sjekker ut Amdahl's lov i den sammenheng.

Endret av Anders Jensen
Lenke til kommentar

To eller fler tråder fra samme program kan fortsatt ikke kjøres parallelt. Dette er bare simulert og brukeren vil tilsynelatende merke det som om de kjøres samtidig. Er hvertfall det forleserne våre lærer oss og det som står på msdn-sidene om dere faktisk hadde orket å lest alt. Hva skjer om to eller fler tråder henter ut samme variabel fra minnet og endrer på den? Nei det går ikke an pga. synkronisering.

Grunnen til at det går kjappere med flere tråder og kjerner er så enkelt som at det er mindre overhead og at trådene fortrekker hver sin kjerne og ligger klar til å bli kjørt når forrige tråd fra samme program er ferdig.

 

Anders: Er snart to år siden jeg lærte om synkronisering, monitorer osv. i java, men det er egentlig helt urelevant. Lær deg om scheduling.

Endret av icc
Lenke til kommentar
To eller fler tråder fra samme program kan fortsatt ikke kjøres parallelt. Dette er bare simulert og brukeren vil tilsynelatende merke det som om de kjøres samtidig. Er hvertfall det forleserne våre lærer oss og det som står på msdn-sidene om dere faktisk hadde orket å lest alt. Hva skjer om to eller fler tråder henter ut samme variabel fra minnet og endrer på den? Nei det går ikke an pga. synkronisering.

Grunnen til at det går kjappere med flere tråder og kjerner er så enkelt som at det er mindre overhead og at trådene fortrekker hver sin kjerne og ligger klar til å bli kjørt når forrige tråd fra samme program er ferdig.

Du klarer fortsatt ikke å forstå at en prosess kan ha mange tråder som ikke trenger å interaktere med hverandre fordi de er uavhengige. Det du beskriver er når tråder har avhengigheter og vi får låsing av ressurser.

Lenke til kommentar

icc: hvis foreleserne dine lærer deg dette, så er det på tide å finne andre forelesere. Evt. så prøver de å lære deg noe annet. Det er trivielt å lage et flertrådet program som bruker så mange kjerner man måtte ha tilgjengelig fullt ut, ved å unngå at de bruker delt minne. I nyttige programmer er man imidlertid som regel avhengig av å kunne dele informasjon mellom trådene, så da ender man opp med at små deler av en tråd ikke kan kjøre samtidig som små deler av en annen tråd.

Lenke til kommentar
Tror dere virkelig Windows XPs Scheduler er så smart? Hvis dere leser siste link jeg ga vil dere se at det jeg sier stemmer. Uavhengig om de låner ressurser av hverandre vil den ene bli utestengt når den andre kjører.

Ut av nysgjerrighet hadde det vært interessant om du kunne gjøre en link + quote til et offisielt MS dokument som beskriver at XP ikke kan kjøre flere tråder fra samme program samtidig på en multicore maskin. Så kan vi i alle fall få ryddet dette av veien.

Lenke til kommentar

icc: jeg tror det er du som trenger å lese teksten i linkene dine. Den andre linken din omhandler:

 

The Microsoft® Windows® family of operating systems provides a variety of mechanisms that drivers can use for synchronization. Synchronization is required for:

* Any shared data that multiple threads might access, unless all threads access it in a read-only manner.

* A set of operations that must be performed atomically.

 

I andre tilfeller kan flere tråder i samme program kjøre helt fint samtidig, og også i når disse punktene slår til, kan trådene kjøre samtidig bortsett fra når begge trådene prøver å bruke samme ressurs samtidig. En tråd kan gjerne holde på med andre ting mens den andre skriver til det delte minneområdet.

 

Den første linken din viser helt tydelig eksempler på at to tråder kjører samtidig på et multiprosessor-system:

Processor 0 is running Thread A, while Processor 1 is running Thread B. Both threads run at IRQL=PASSIVE_LEVEL.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...