Den klassiske, von Neuman computer maskinarkitektur består af en processor og en adresserbar lagerenhed til lagring af programmer og data, hvilket har været og stadig er tilstrækkelig til mange computerbaserede løsninger. Med denne simple maskinarkitektur er en programmeringsmodel med programmer der bearbejder data og eventuelt programmer i et adresserbart lagerområde umiddelbart oplagt, enkel og fleksibel, og dette har været den dominerende programmeringsmodel.
Med øgede krav til processorkapacitet, hvor en enkelt, tilstrækkelig kraftig processor ikke umiddelbart er tilgængelig og eventuelt slet ikke er fysisk mulig, er det nødvendigt med en mere avanceret maskinarkitektur med flere processorer. Med denne maskinarkitektur opstår der problemer med den klassiske programmeringsmodel i forbindelse med timing problemer mellem programmerne på de forskellige processorer i forbindelse med deling af lagerområdet. Optimal udnyttelse af maskinarkitekturen komplicerer desuden programmeringsmodellen yderligere.
Med tilsvarende øgede krav til lagerkapacitet, hvor en enkelt lagerenhed ikke er tilstrækkelig på grund af transmissionsbegrænsninger mellem lagerenheden og et antal processorer, er en yderligere avanceret maskinarkitektur med flere lagerenheder nødvendig. Denne maskinarkitektur kræver kompliceret, resourcekrævende simulering af en enkelt lagerenhed eller en udvidet programmeringsmodel med eksplicit transmission af data mellem programmerne på de forskellige processorer. Optimal udnyttelse af maskinarkitekturen komplicerer ligeledes programmeringsmodellen yderligere.
Ved massivt parallelle maskinarkitekturer med mange processorer og lagerenheder samt geografisk adskilte computere, der skal fungere som ét distribueret system, er simulering af en enkelt lagerenhed ikke praktisk mulig, og den udvidede programmeringsmodel med eksplicit transmission af data mellem programmerne på de forskellige computere er nødvendig. Dette bliver iøvrigt det centrale i programmeringsmodellen, og den klassiske programmeringsmodel er kun et lokalt fænomen i den enkelte computer. Det kan derfor ses som en nødvendig, fundamentalt anderledes programmeringsmodel i forhold til den klassiske.
Andre avancerede maskinarkitekturer bryder på tilsvarende måde fundamentalt med den klassiske ved at fjerne/minimere den adresserbare lagerenhed til data således at data udelukkende/primært eksisterer og bearbejdes som inddata og uddata, der transmitteres mellem processorerne (eventuelt også kun en enkelt processor).
Selvom den klassiske maskinarkitektur og programmeringsmodel har været dominerende, er en fundamentalt anderledes maskinarkitektur og programmeringsmodel nødvendig i forbindelse med store, avancerede computersystemer. Den fundamentalt anderledes maskinarkitektur og programmeringsmodel er desuden også mulig og eventuelt hensigtsmæssig i forbindelse med enkeltstående computere og mindre, simplere computersystemer.
|