# NCUBE

nCUBE è una serie di computer paralleli sviluppati dall'omonima ditta. Le prime generazioni erano basate su microprocessori custom. Attualmente nCUBE non progetta microprocessori per le sue macchine ma si appoggia a prodotti di altre ditte per realizzare macchine massivamente parallele utilizzate principalmente per realizzare video on-demand.

## Storia

nCUBE venne fondata nel 1983 a Breavertob in Oregon da un gruppo di impiegati Intel frustrati dal diniego della società ad entrare nel mercato del calcolo parallelo (da società infine entrò nel mercato nel 1989). Nel dicembre del 1985 la prima generazione di nCUBE venne presentata. La seconda versione venne distribuita nel giugno del 1989 e la terza venne presentata del 1995.
Nel 1988 Larry Ellison investì pesantemente nella società e divenne l'azionista di maggioranza della società. La sede della società venne rilocata a Foster City in California per poter essere più vicina alla Oracle Corporation la società di Ellison. Negli novanta la società spostò il proprio target di mercato dal calcolo parallelo al video on demand (VOD) e nello specifico nella realizzazione dei server per questi servizi. Nel 1994+ Robert Dilbeck divenne CEO della società e si preparò per la sua quotazione in borsa.
Nel 1996 Ellison ridusse il proprio supporto alla società e Dilbert abbandonò la società. Ellison allora assunse la direzione della società e fece diventare la società una divisione della Oracle. Dopo essere diventata una divisione Oracle la società sviluppo il primo server VOD per l'hotel Burj al-Arab a Dubai.
Nel 1999 nCUBE annunciò di aver acquisito la società SkyConnect Inc, sviluppatrice di pubblicità digitale e software VOD per televisioni via cavo e partner della nCUBE nello sviluppo del sistema per l'hotel. La compagnia cercò nuovamente di quotarsi in borsa ma venne fermata dall'esplosione della bolla speculativa delle società dot.com del 2000. SeaChange International intentò una causa contro nCUBE accusando la società di aver realizzato l'nCUBE MediaCube-4 infrangendo sei suoi brevetti. I giudici diedero ragione alla SeaChange ma la corte di appello emise un nuovo giudizio e il 29 giugno 2005 assolse la nCUBE.
Dopo l'esplosione della bolla speculativa la recessione costrinse la società nell'aprile del 2001 a licenziare il 17% della propria forza lavoro e a chiudere alcuni uffici. Nel 2001 dopo aver acquisito i brevetti della Oracle interactive television division nCUBE accusò di infrazione dei propri brevetti la SeaChange. I brevetti contesi vertevano sui set-top box e nCUBe vinse la causa ricevendo oltre 2 milioni di dollari di danni.
Nel 2002 Ellison abbandono la carica di CEO e nominò Michael J. Pohl presidente della società fin dal 1999 (il precedente CEO della SkyConnent) nuovo CEO. Nel gennaio 2005 nCUBE acquisì C-COR per circa 89,5 milioni di dollari.

## Modelli prodotti

Il primo nCUBE che venne prodotto era l'nCUBE 10 e venne presentato alla fine del 1985. Era basato su chip custom, includeva un ALU a 32 bit e una FPU a 64 bit IEEE 754 con 128 kilobyte di RAM combinata in un modulo. Ogni modulo sviluppava circa 2 milioni di istruzioni, 500.000 istruzioni in virgola mobile a singola precisione e 300.000 istruzioni in virgola mobile a doppia precisione. Il sistema utilizza il sistema operativo Vertex.
Il nome si riferisce alla capacità della macchina di gestire un ipercubi di ordine 10 con in totale 1024 CPU. Alcuni moduli erano utilizzati per l'input/output e includevano nChannel un modulo di memorizzazione, dei moduli fornivano un frame buffer e servivano anche a fornire un supporto per il fissaggio meccanico degli altri moduli. Almeno un modulo serviva come terminale della macchina. La macchina poteva essere divisa in sub cubi in modo da assegnarla a diversi utenti.
La seconda serie il in nome venne modificato e venne creato un singolo chip contenente il processore nCUBE 2. Concettualmente era simile all'nCUBE 10 ma funzionando a 25 megahertz sviluppava 7 MIPS e 3,5 MageFLOPS. In seguito venne migliorato portandolo a 30 megahertz nel modello 2S. La RAM venne incrementata portandola da 4 a 16 megabyte in un modulo singolo di 2,6 per 8 centimetri. Il doppio in un modulo largo il doppio e il quadruplo in un modulo a doppio strato e a doppia larghezza. Le schede di I/O avevano normalmente meno RAM e erano dotate di diverse interfacce come la SCSI, l'HIPPI, ecc.
Ogni CPU nCUBE-2 era dotata di 13 canali di I/O a 20 Mbit/s. Uno era dedicato all'I/O mentre gli altri dodici erano dedicati alle comunicazioni con le altre CPU. Ogni canale utilizzava un wormhole routing per il passaggio dei messaggi. Ogni macchina era in grado di gestire un ipercubo di ordine 12 con in totale 4096 CPU.
In ogni modulo vi era un microkernel da 200 kilobyte chiamato nCX ma il terminale di comando era una stazione Sun Microsystems a quindi non era più necessario il supporto di un file system parallelo a 96 vie per ottenere alte prestazioni. Il linguaggio C e C++ sono supportati nativamente grazie a compilatori forniti con la macchina.
Il più grande nCUBE-2 venne installato presso i Sandia National Laboratory, il sistema era composto da 1024 CPU e era in grado di sviluppare 1,91 gigaflops.
La CPU dell'nCUBe-3 includeva molte migliorie come una ALU a 64 bit. Altre migliorie e un nuovo processo produttivo a 0,5 micrometri permisero alla macchina di funzionare a 50 MHz (con piani per 66 e 100 MHz). La CPU era superscalare e includeva 16 kilobyte di cache per le istruzioni e i dati oltre a un gestore di MMU per la gestione della memoria virtuale.
Linee addizionali di I/O vennero aggiunte, due dedicate alle operazioni di I/O e 16 per le interconnessioni permettendo di realizzare macchine con 65.536 CPU in configurazione ipercubo. I canali operavano a 100 megabit/s e ne venivano utilizzati due in parallelo per fornire al sistema nCUBE 3 una protezione contro i guasti.
Un sistema nCUBE-3 completo è in grado di gestire 65 000 processori, potrebbe produrre in teoria 6,5 teraflops. Il massimo della memoria accettabile era di 65 terabyte e i sistemi di I/O erano in grado di trasmettere 24 terabit/s. Quindi il fattore limitante era l'I/O come è normale in macchine massivamente parallele. Ogni CPU dedicata all'I/O era in grado di gestire 16 linee di I/O da 20 megabyte/s ognuna.