Autore Topic: PCI64 SATA per computer non-x86  (Letto 79 volte)

Offline legacy

  • Human Debugger
  • *****
  • Post: 5091
  • Karma: +14/-2
    • Mostra profilo
    • DTB
PCI64 SATA per computer non-x86
« il: 16 Maggio 2019, 12:13:00 »
Stiamo cercando di portare avanti un progetto veramente titanico di cui uno degli attuali scogli e' trovare un controller PCI64 SATA che funzioni su hardware non-x86

Detta cosi' sembra banale perche' si potrebbe pensare che il PCI-X sia uguale o comunque retrocompatibile con il PCI64: e invece no!

Nel protocollo ci sono delle differenze tali che provare ad infilare una scheda PCI-X in uno slot PCI64 ... espone una probabilita' di schinatare l'intero bus nel caso (raro) in cui il chip sul controller SCSI voglia giocarsi la carta di stopparsi un attimo per svuotare i propri buffer. PCI64 e PCI-X lo fanno in modo diverso!

E non solo, anche gli interrupt sono gestiti un pelo diversamente!

Si e' visto dai test che stiamo facendo, pubblicati su DTB.


Si potrebbe quindi pensare che basti un qualsiasi controller PCI64 per risolvere la faccenda. Ecco, pare che di PCI64 ne abbiano fatti solo alcuni ad altissime prestazioni. Non abbiamo trovato alcuno software RAID, solo hardware RAID, con sopra MPU o CPU a dirigere diversi chip SATA. Ne abbiamo individuati un paio, di Adaptec, con sopra una CPU i960. Il PCI64 ci risolve le rogne del protocollo, ma questa volta il problema e' il come inizializzare quei *cosi*.

Tipicamente necessitano di una BIOS extension. Hanno cioe' una flash contenente del codice x86 che il PC prende in considerazione all'avvio. Quel codice inizializza il controller, carica il firmware, e fa trovare al kernel-driver di linux un oggetto pronto per essere registrato tra i device!

Ne abbiamo provate un paio, C3600 PA-RISC, PowerMac-G4 PowerPC, si vede molto bene che su una macchina non-x86 il controller sata si presenta non inizializzato al device-probe del kernel Linux e la faccenda si conclude con un nulla di fatto.

Ci ha scritto Alan Cox, facendoci capire che se ne potrebbe uscire solo con il reverse engineering, faccenda lunga in cui saremmo praticamente da soli perche' oggi sono tutti su PCIe.

Quindi, stringendo il cerchio, ora e' chiaro di cosa abbiamo bisogno
  • chip e specifiche PCI64 e non PCI-X
  • massima frequenza 66Mhz
  • minima frequenza 33Mhz
  • software RAID e non hardware RAID


Se ve ne capita qualcuno, fatemi sapere!  :D

Offline saimon69

  • Guru
  • *****
  • Post: 1709
  • Karma: +23/-3
  • Web Dev e musicista da camera (da letto)
    • Mostra profilo
    • binarydoodles Blog
Re:PCI64 SATA per computer non-x86
« Risposta #1 il: 16 Maggio 2019, 17:52:52 »
Quali sarebbero state le macchine che usavano quel tipo di connessione?
AROS : mica bau bau micio micio =^x^=

Offline Z80Fan

  • Administrator
  • Guru
  • *****
  • Post: 1666
  • Karma: +13/-2
    • Mostra profilo
    • http://z80fan.altervista.org
Re:PCI64 SATA per computer non-x86
« Risposta #2 il: 16 Maggio 2019, 20:50:19 »
Più che raid hardware/software il termine giusto da cercare è Controller JBOD (Just a Bunch Of Disks), che indica quel tipo di controller che riporta 1:1 i dischi collegati sul bus di sistema; il termine generico è HBA (Host Bus Adapter).

E' obbligatorio che sia PCI64? Sembra ci sia molta più scelta se si rimane su PCI 32bit liscio.
Questo chipset VIA ad esempio è a 32 bit e può fare anche da JBOD, e supporta PCI 2.2 che, secondo Wikipedia, include le estensioni a 64 bit (quindi su un sistema PCI64 non dovrebbe spaventarsi).

Se includa al suo interno una ROM x86 non lo so, però su Amazon si trovano schede con quel chipset a prezzo modico, al peggio hai sempre 30 giorni di restituzione gratuita...

Offline legacy

  • Human Debugger
  • *****
  • Post: 5091
  • Karma: +14/-2
    • Mostra profilo
    • DTB
Re:PCI64 SATA per computer non-x86
« Risposta #3 il: 16 Maggio 2019, 23:39:00 »
Quali sarebbero state le macchine che usavano quel tipo di connessione?

PCI64?
  • Workstation HP PA-RISC, tipo C3xxx { C3600, C3700, C3750 }
  • Workstation Apple PowerMac G4, tipo QuickSilver, MDD
  • Workstation SGI Octane 1 e 2, entrambi i tipi di cestello XIO-PCI
« Ultima modifica: 25 Maggio 2019, 00:09:59 da legacy »

Offline legacy

  • Human Debugger
  • *****
  • Post: 5091
  • Karma: +14/-2
    • Mostra profilo
    • DTB
Re:PCI64 SATA per computer non-x86
« Risposta #4 il: 16 Maggio 2019, 23:44:30 »
E' obbligatorio che sia PCI64? Sembra ci sia molta più scelta se si rimane su PCI 32bit liscio.

Per la banda! Il PCI che abbiamo e' a 33Mhz, almeno con 64bit riesce a spostare un pelo piu' di roba.
Su DTB abbiamo una lista di chip testati. Abbiamo trovato un chip che funziona bene, pero' e' a 32bit.

Se questa dovesse essere l'unica opzione, allora useremo due schede PCI32bit su linee PCI indipendenti.
Fortunatamente sulle workstation ci sono, e alla fine avremo 4 canali SATA, su due schede fisiche.


Intanto provo a studiarmi un attimo il VIA. Ne abbiamo gia' testato uno, ma a 32bit: funziona!

Offline legacy

  • Human Debugger
  • *****
  • Post: 5091
  • Karma: +14/-2
    • Mostra profilo
    • DTB
Re:PCI64 SATA per computer non-x86
« Risposta #5 il: 25 Maggio 2019, 00:00:23 »
In questi giorni, a tempo perso (cioe' un paio di orette dopo cena), stiamo cercando di sistemare un gravissimo bug che affligge i sistemi PA-RISC!

Pensa che non se ne erano nemmeno accorti, ed e' un baco esite da 11 anni! I sintomi non si manifestano subito, ma dopo un po' che stressi il PCI. C'e' una bassissima probabilita, ma catastrofica, che le cose non si incastrino bene. Pero', nella pratica, se copi almeno 8Gbyte hai una probabilita' molto alta di inciamparci. Eppure nessuno se ne e' mai accorto: significa che nessuno ha mai generato I/O.

E questo e' molto strano perche' i back degli stage4 sono mediamente di 5Gbyte. Quindi se ne copi due, tipicamente da disco SCSI, piccolo e costoso, a disco SATA, largo ed economico, dovresti inciamparci.

Abbiamo individuato un probabile problema di "barriera", e se e' davver cosi', allora non e' dovuto al PCI, ma a faccende di concorrenza hw. Quindi servira' rivedere i blocchi critici (in assembly) contenenti istruzioni di barriera.

Per ora stiamo puntellando il kernel con hack bovini, e committando la cosa  :D

Tags: