# Heterogeneous Element Processor

L'Heterogeneous Element Processor (HEP) è un sistema presentato dalla società Denelcor nel 1982 ed è noto per essere stato il primo computer commerciale MIMD. Il sistema HEP come indicato dal nome era composto da un insieme eterogeneo di elementi - processori, moduli di memoria e moduli di I/O collegato tramite una rete informatica.
Un processore HEP (fino a 16 ne potevano essere collegati) era un tipo di processore poco convenzionale, tramite una particolare coda fino a 50 processi potevano essere caricati in un singolo processore. Il processore era dotato di una pipeline a otto stadi e dato che l'istruzione di un singolo processo poteva occupare al massimo un singolo stadio della pipeline servivano almeno otto processi per sviluppare la piena potenza di 10 MIPS del sistema. Inoltre ogni processo poteva ottenere al massimo 1.25 MIPS dal processore. Questo tipo di multithreading classificava i moduli HEP come barrel processor.
I singolo processi venivano classificati come livelli utente o livelli supervisore. I livelli utente potevano creare i livelli supervisore, questi erano utilizzati per coordinare i processi a livello utente o per le operazioni di I/O. I processi della stessa classe venivano raccolti in gruppi, vi erano sette gruppi utente e sette gruppi supervisore.
Ogni processore in aggiunta alla coda d'istruzioni caricata dalla pipeline contiene una memoria per le istruzioni. Questa memoria è formata da 2048 registri a 64 bit e da 4096 registri "costanti". Questi registri si differenziano dagli altri unicamente per il fatto che solo i processi supervisore sono in grado di modificarli. È da notare che i processori non contengono memoria per i dati, questi vanno caricati nei moduli di memoria che sono inseriti nella rete informatica che crea il computer.
Il sistema HEP gestisce la memoria in mutua esclusione. Ad ogni registro e a ogni locazione di memoria è associato uno stato. Questo stato può essere del tipo "libero" o "occupato". Se la locazione viene letta questa viene settata nello stato "libero" mentre se viene scritta questa viene settata allo stato "occupato". Usando questi stati i programmatori potevano scrivere dei programmi che gestissero l'elaborazione di dati comuni.
La rete informatica che collega i vari moduli ricorda molto una moderna rete telematica. Ogni nodo a tre collegamenti a altri nodi, quando un pacchetto di dati arriva a un nodo questo consulta una tabella di routing e decide dove smistarlo, nel caso il collegamento di un nodo sia congestionato questo può passare i pacchetti ad altri nodo al fine di aggirare il collo di bottiglia. I pacchetti hanno una priorità il pacchetto a più alta priorità viene servito per prima.
Il sistema era noto per l'elevato costo rispetto alle modeste prestazioni ma comunque divenne noto nell'ambiente informatico per la sua rivoluzionaria architettura. Il sistema HEP venne acquisito dai Los Alamos National Laboratory, dagli Argonne National Laboratory, dal Ballistic Research Laboratory e da altri laboratori.
Il sistema fu acquisito da molti centri di ricerca nonostante le sue modeste prestazioni per via delle sue peculiarità che facilitavano la realizzazione di programmi paralleli. La tedesca Messerschmitt AG fu l'unica società che utilizzò il computer per applicazioni reali, gli altri enti utilizzavano il sistema per lo studio degli algoritmi paralleli.