Harvardarkitektur

Från Wikipedia
(Omdirigerad från Harvardarkitekturen)
Förenklat blockschema över en Harvard-processor

Harvard-arkitekturen är en datorarkitektur med fysiskt separata bussar för programinstruktioner och arbetsdata. Termen kommer ursprungligen från Harvard Mark I, en relä-baserad dator från 1944, som använde instruktioner sparade på hålremsa och data i elektromekaniska minnen.

Minnesdetaljer[redigera | redigera wikitext]

I en Harvard-arkitektur finns det frihet att låta data- och instruktionsminnen vara utformade på skilda sätt, till exempel kan ordbredden, hastigheten, tekniken och adressrymden vara helt olika. Instruktionsminnet kan ofta vara bredare än dataminnet. Det kan ibland finnas mer än en buss för data. Ofta lagras instruktionerna i ett ROM och/eller flash-ROM, eller RAM ifall det ofta ändras, medan arbetsdata nästan uteslutande lagras i ett RAM-minne.

Svenska harvardarkitekturer[redigera | redigera wikitext]

Den första svenska datorn BARK var en harvardarkitektur, vilket var föga förvånande eftersom den konstruerades med Harvard Mark II som förebild.[1] Datasaabs första egna dator Datasaab D2 var också en harvardmaskin.

Jämförelse med andra datorarkitekturer[redigera | redigera wikitext]

I en dator med alternativa arkitekturen von Neumann (och utan cache) ligger instruktionerna i samma minnesstruktur som arbetsdata, varför CPUn inte kan läsa både instruktion och läsa/skriva data precis samtidigt. En Harvard-arkitektur kan därför bli snabbare än en von Neumann-arkitektur. Programräknaren är ändå skild från datapekare och kan adressera helt skilda minnesområden. En mindre nackdel är dock att programminne och arbetsdata normalt inte kan fyllas med en enkel laddningsoperation som i von Neumann-fallet, när minnena är åtskilda.

Internt i moderna mikroprocessorer används ofta skilda bussar enligt Harvardprincipen, så att flera saker kan göras simultant. De yttre minnena innebär flaskhals snarare än de inre bussarna på kiselbrickan.

Den modifierade Harvard-arkitekturen påminner mycket om Harvard-arkitekturen, men har en dataväg från instruktionsminnet till processorn, som tillåter instruktionsord att behandlas som data. Detta tillåter att konstanta data, till exempel textsträngar, kan hämtas utan att först behöva kopieras till dataminnet, varför mer minne kan användas till variabla data. De flesta processorer som uppges ha Harvard-arkitektur har egentligen en modifierad Harvard-arkitektur.

Hastighet[redigera | redigera wikitext]

De senaste åren har hastigheten på processorer ökat snabbare än hastigheten på externa dataminnet (till exempel RAM), utanför mikroprocessorns kiselbricka. Därför bör antalet skrivningar/läsningar till/från externa dataminnet minimeras för att inte tappa fart. Om till exempel alla instruktioner i ett program använder externt minne, tjänar man inget på att processorn behandlar instruktionerna snabbt, då den ändå måste vänta på externa minnet.

Det är möjligt att tillverka väldigt snabba minnen, men dessa görs ofta små av ekonomiska och arkitekturmässiga skäl. Främst används dessa som cache-minne, en kopia av en liten del av 'riktiga' minnet, som det går väldigt mycket snabbare att skriva till/läsa från. Sådant cache-minne används både till dataminnet och till programminnet. Det sparar tid ifall flera läsningar sker på samma sida, alltså det block som redan hämtats till cacheminnet.

Moderna högpresterande datorer har ofta en kombination av Harvard- och von Neumann-arkitekturen. Själva CPU:n är internt av Harvard-typ, med ett cacheminne (i samma integrerade krets) till databussen, och ett till instruktionsbussen. Dessa två cacheminnen samarbetar om ett gemensamt externt minne, vilket gör att kretsen utåt ser ut som en von Neumann-processor.

Se även[redigera | redigera wikitext]

Referenser[redigera | redigera wikitext]

  1. ^ Kjellberg, Göran; Neovius, Gösta (1951-01). ”The BARK, A Swedish General Purpose Relay Computer”. Mathematical Tables and Other Aids to Computation V (33): sid. 29-34. http://www.treinno.se/pers/okq/bark_spec.pdf. Läst 3 mars 2020.