title: CDC Advanced Flexible Processor
text: # CDC Advanced Flexible Processor
  
  Il CDC Advanced Flexible Processor (AFP) detto anche CYBERPLUS fu una linea di processori sviluppata dalla Control Data Corporation e basata sugli array processor, questi processori utilizzano un'architettura VLIW.
  
  ## Flexible Processor
  
  Il progetto venne avviato nel 1972 e vennero prodotti i primi modelli funzionanti nel 1976. Il progetto prevedeva parole di 48 bit con indirizzo dati a 16 bit. Il bus era a due porte a 16 bit e i processori per comunicare usavano un bus comune.
  
  Il sistema era formato da 8 unità funzionali, ALU a 32 bit, moltiplicatori a 8 bit, due serie di registri 16 registri a 16 bit. L'unità di gestione della memoria conteneva almeno due banchi da 2048 parole a 16 bit. La porta di ingresso era un registro FIFO contenente 16 parole. I bus di connessione erano quattro a 32 bit. L'unità di controllo aveva una memoria di 4096 istruzioni, due contatori con due comparatori per la gestione dei loop. Conteneva un registro a 12 bit per il program counter ed un registro a 16 bit per memorizzare l'indirizzo di ritorno dello stack. Il sistema funzionava a 8 MHz ed era alloggiato in un rack da 19 pollici con raffreddamento ad aria.
  
  ## Advanced Flexible Processor
  
  Prodotto nel 1979 era un sistema che utilizzava indirizzi a 16 bit e istruzioni raggruppate in parole di 200 bit. Ogni processore aveva internamente un bus crossbar 16x18, i processori erano interconnessi tramite una rete ad anello. Ogni processore aveva 15 unità funzionali; due sommatori che potevano essere configurati per eseguire quattro somme a 8 bit per ciclo, due somme a 16 bit per ciclo o una somma a 32 bit per ciclo. Due unità logiche in grado di eseguire le sei funzioni logiche su due variabili. Un'unità di moltiplicazione a pipeline, un'unità contenente due banchi di registri, ogni banco ha 16 registri a 16 bit. Quattro unità di memoria dati, ogni memoria ha 1024 parole di 16 bit e 16 registri indice, i registri indice gestivano il post incremento e il post decremento dopo l'uso. Due memorie generiche da 1 MB ognuna. Due porte di intercomunicazione per la rete ad anello. Ogni pacchetto inviato nell'anello conteneva 4 bit di controllo, 8 bit di indirizzo e 16 bit di dati, un bit di errore indicava che il pacchetto aveva effettuato il giro della rete più di una volta. Ogni unità è dotata di un registro di comparazione e di bit di stato da utilizzare per la gestione di salti condizionati. Il bus crossbar collegava le unità interne e poteva trasferire 16 bit per linea, il bus aveva sedici linee di ingresso, due linee erano assegnate per i risultati delle unità di moltiplicazione, due linee per i registri e una linea era condivisa tra le due porte di uscita del bus ad anello. Le 16 linee di uscita erano condivise tra le varie unità e quindi potevano esserci conflitti. Il processore utilizzava parole di 200 bit, 48 bit per il clock (il clock serviva anche per gestire la lettura da registri e il bus crossbar, difatti 18 bit erano usati per la gestione delle unità funzionali), 16 bit per memorizzare una costante da inviare a un'unità funzionale, quattro campi 16 bit per le istruzioni e 72 bit per gestire il bus crossbar. Ogni campo delle istruzioni a 16 bit conteneva un sottocampo a 4 bit che identifica l'unità funzionale e 12 bit che potevano indicare un registro dati o poteva essere utilizzato per definire un salto condizionato. Il sistema veniva programmato utilizzando l'assembler MICA che permetteva di gestire direttamente le unità di elaborazione. Il sistema funzionava a 46 MHz, le somme, le operazioni logiche e gli shift dei bit richiedevano due cicli di clock, le moltiplicazioni richiedevano tre cicli di clock. Il sistema era implementato con logica ECL LSI, ogni pannello era un processore e ogni processore era formato da 500 chip da 200 000 transistor e 1100 chip da 100 000 transistor. Il sistema per dissipare il calore usava un'unità a raffreddamento liquido derivata dal CDC Cyber 200.
  
  ## CYBERPLUS
  
  I processori CYBERPLUS vennero messi in commercio nel 1983; essi aggiungevano al predecessore tre unità in virgola mobile (sommatori, moltiplicatori e divisori a singola e doppia precisione). Fu aggiunta inoltre un'unità con registri a 64 bit, un secondo bus crossbar per ogni processore e un ulteriore bus ad anello tra i processori con larghezza di 64 bit. Il processore utilizzava parole di 240 bit. La programmazione era svolta tramite un compilatore Fortran appositamente adattato. Il sistema era raffreddato a liquido.
  
  ## Parallel Modular Signal Processor
  
  Il Parallel Modular Signal Processor (PMSP) venne utilizzato nel micro-AFP, venne prodotto nel 1988, era stato miniaturizzato per poter essere utilizzato in applicazioni militari e spaziali. Utilizzava parole di 232 bit, ogni scheda occupava 6 x 6 pollici e utilizzava circa 6000 porte logiche CMOS.
  
  