Gå til innhold
  
      
  
  
      
  
  • blogginnlegg
    2
  • kommentarer
    0
  • visninger
    13 844

Innledning


Gjest

380 visninger

I begynnelsen av 2005 skrev jeg en artikkel om prosessorarkitektur med hovedvekt rundt det som kalles ”Execution Units”, hva en pipeline er, og pekte på noen av forskjellene mellom AMD og Intels prosessorer.I ettertid ser jeg behov for en mer utfyllende forklaring på mange av de tingene som foregår i prosessorkjernen. Jeg tenkte derfor å bruke denne bloggen som ett lite lagringssted for ”notater”, så får vi se etter hvert hvordan det utvikler seg. Jeg har for så vidt ikke noe annet mål enn å skrive når jeg har lyst og det passer slik. Det kan med andre ord ta lang tid før jeg sier meg ferdig, om jeg noen gang gjør det.Selv om det ikke handler om de mer perifere enhetene prosessoren har kontakt med, tenkte jeg det kunne være greit å illustrere sammenhengen for å plassere cpu i ett større bilde. En sammenlikning som ofte brukes er den hvor man har en butikk (cpu) som selger varer til kundene. I butikken har man ett lite varelager (Cache) som igjen får varer fra ett større lager i utkanten av byen (RAM). Dette lageret får på sin side varene fra en fabrikk i en annen by (Harddisken). CPU-RAM-HDD.jpgSelv liker jeg ikke denne analogien noe særlig siden vareflyten i butikksammenheng stort sett går én vei, mens dataflyten mellom cpu-RAM- og harddisk i langt større grad går begge veier.Men analogien er egnet til én ting; å vise at jo lenger vekk ”lageret” befinner seg, jo lenger tid tar det før butikken (cpu) får varene (dataene). Det er med andre ord om å gjøre å ha mest mulig data nærmest mulig prosessoren, og helst på selve kjernen, i ett av ”Cache” nivåene. Det vil si, det er om å gjøre å få de dataene som prosessoren til en hver tid trenger nærmest mulig det som kalles ”Execution Units”, altså den delen av kjernen som står for selve utførelsen av ”regneoppgavene”. Som vi gikk gjennom i den forrige artikkelen er alt annet som foregår mer eller mindre bare forberedelser og etterbehandling av instruksjoner og data knyttet til selve utførelsen i ”Execution Units”.fig2.jpgMen, for å gjenta; ”det er om å gjøre å få de dataene som prosessoren til en hver tid trenger til å befinne seg nærmest mulig Execution Units”. Da begynner kanskje noen av leserne å ane at her ligger spiren til noe mer. For hvordan i helsike vet prosessoren på forhånd hva den kommer til å trenge av data og instruksjoner? Ikke noe problem tenker du kanskje, det er jo bare å lagre alt i Cache. Teknisk kunne nok det la seg gjøre, men siden Silisium er dyrt og RAM er billig (relativt) er ikke dette mulig uten at prosessorene ville kostet mer enn noen er villig til å betale. Dessuten handler det som alltid om tid og penger, jo større "lager", jo mer kreves det for å holde styr på det som ligger der. Derfor begrenses lagringsplassen til noen hundre kiloByte eller noen få MegaByte i Cache, mens det man ikke trenger med det første plasseres lenger vekk, i RAM. Da er vi kommet til sakens kjerne. Det handler om ulike teknikker for å ha det prosessoren skal arbeide med tilgjengelig når det er er behov for det.

0 kommentarer


Anbefalte kommentarer

Det er ingen kommentarer å vise.

×
×
  • Opprett ny...