|
Intr-un efort continuu de imbunatatire, arhitectura von Nuemann a fost dezvoltata in mai multe directii, rezultand sisteme de calcul cu posibilitati noi si adaptate noilor cerinte cerute de societate. Pentru a vedea aceste noi directii, ne vom folosi de o clasificare a sistemelor dupa arhitectura interna, propusa de Flynn:
SISD (Single Instruction Single Data - o singura instructiune, o singura data de prelucrat)
Sunt sistemele uzuale cu un singur microprocesor. Aici se incadreaza microprocesoarele clasice cu arhitectura von Neumann pe 8, 16, 32, 64 biti cu functionare ciclica - preluare instructiune, executie instructiune (rezulta prelucrarea datelor) s.a.m.d.
Tot in aceasta categorie trebuie incluse si asa-numitele procesoare de semnal DSP (Digital Signal Processors) folosite actualmente pe scara larga in placile de sunet, telefonia mobila etc.
SIMD (Single Instruction Multiple Data - o singura instructiune, mai multe date)
Sunt sistemele cu microprocesoare matriceale, la care aceleasi operatii aritmetice se executa in paralel pentru fiecare element al matricei, operatia necesitand o singura instructiune (se mai numesc si sisteme de procesare vectoriala). Privita ca o cutie neagra, o arhitectura SIMD arata ca in figura 2.2:
Fig. 2.2.
Daca intram in detalii arhitecturale, devine evident faptul ca exista mai multe unitati de executie, capabile sa execute acelasi tip de prelucrare in paralel pe date diferite, coordonate de o singura unitate de control. Deoarece datele prelucrate de o unitate de executie sunt independente de datele celorlalte unitati, devine clar faptul ca fiecare unitate de executie are memoria sa proprie. Evident, trebuie sa existe totusi si o forma de interconectare intre unitati. Arhitectura SIMD are deci urmatoarea schema de principiu:
Fig. 2.3.
Eficienta SIMD-urilor se dovedeste a fi ridicata in cazul unor programe cu paralelism de date masiv, pus in evidenta cel mai adesea de anumite bucle de programe.
Exemplu: arhitectura de tablou sistolic construita in 1984 de General Electric, un tablou de 64 64 elemente, rezultand o viteza de procesare de 1 miliard de operatii pe secunda.
MISD (Multiple Instruction Single Data - mai multe instructiuni, o singura data)
Sunt sistemele care folosesc microprocesoare de tip pipeline (conducta), metoda folosita de catre procesoarele recente (Pentium sau echivalente). La un astfel de microprocesor, de exemplu, in paralel se executa instructiunea n, se decodifica instructiunea n+1 si se aduce in memorie instructiunea n+2. Aceasta arhitectura a fost inspirata de banda de montaj a automobilelor.
Celebrele supercomputere Cray din anii 1970 foloseau de asemenea arhitectura MISD.
MIMD (Multiple Instruction Multiple Data - mai multe instructiuni, mai multe date) sunt acele sisteme in care se incadreaza atat supercalculatoarele cu procesoare dedicate, cat si sistemele multiprocesor (figura 2.4). Sunt cunoscute si sub denumirea de arhitecturi paralele.
Fig. 2.4.
In cazul arhitecturilor MIMD, procesoarele pot avea fiecare propria sa memorie locala, dar exista si o memorie globala, accesata prin intermediul retelei de interconectare (figura 2.5). Complexitatea retelei de interconectare poate varia intr-o plaja larga, mergand de la simpla arhitectura de tip bus comun (in care un singur procesor poate avea acces la memoria globala) si pana la retelele de tip crossbar (care permit accesul simultan al tuturor procesoarelor la memoria globala, dar la module diferite pentru fiecare procesor).
Fig. 2.5.
Acest tip de arhitecturi necesita existenta unor sisteme de operare capabile sa asigure rularea in paralel a diferitelor procese, altfel potentialul lor de performanta ar ramane in mare parte neexploatat. Astfel, avem mai multe tipuri de sisteme de operare:
- master-slave - la care functiile sistemului de operare sunt atasate unui procesor distinct (master), iar restul procesoarelor (numite slave) acceseaza aceste functii indirect, prin intermediul procesorului master
- divizat - nu exista un procesor evidentiat, fiecare procesor avand functiile de sistem plasate separat in memorie
- flotant - cand functiile sistemului de operare sunt plasate in memoria comuna, putand fi accesate de oricare microprocesor al sistemului; acest model de calcul poata denumirea de multiprocesare simetrica (Symmetrical Multiprocessing - SMP)
Tot in cadrul acestei ultime categorii trebuie amintite asa-numitele transputere, care sunt de fapt microcalculatoare integrate intr-un singur circuit, cu memorie proprie si retea de conectare punct la punct cu alte transputere din aceeasi categorie. Cu acestea se pot construi masini SIMD sau MIMD, folosindu-se limbaje de programare specifice proceselor paralele (de exemplu OCCAM), precum si algoritmi paraleli.
Putem aminti aici, in afara clasificarii propuse de Flynn, si de sistemele distribuite. Un sistem distribuit este de fapt un grup de calculatoare legate in retea, care coopereaza intr-un mod asemanator cu procesoarele ditnr-un sistem multiprocesor. Desigur, exista si diferente, legate in principal de eterogenitatea sistemului distribuit (este putin probabil ca toate calculatoarele dintr-o retea sunt identice, putand fi chiar foarte diferite) si de particularitatile modului de comunicare intr-o retea de calculatoare. In mod paradoxal, in acest moment sistemele distribuite sunt in general mai eficiente economic decat sistemele multiprocesor. Evident, o retea de n calculatoare este aproape intotdeauna mai scumpa decat un sistem cu n procesoare; eficienta vine insa din faptul ca practic in orice institutie exista deja o baza instalata de calculatoare, cu care se poate realiza un sistem distribuit, in timp ce sistemele multiprocesor trebuie achizitionate. Din acest motiv sistemele distribuite cunosc o dezvoltare remarcabila (de altfel, ele nu apareau in clasificarea lui Flynn deoarece, la momentul cand a fost propusa aceasta clasificare, inca nu existau sisteme distribuite).