Domanda:
Il bus ISA (o il bus PC / XT) ha alcuni mezzi di arbitraggio per risolvere i conflitti sul bus?
Chris_F
2019-12-27 21:02:17 UTC
view on stackexchange narkive permalink

La mia comprensione del bus ISA è che la CPU pone un indirizzo sul bus e qualsiasi scheda di espansione è libera di rispondere a quell'indirizzo assumendo il controllo del bus dati.Presumo che vengano utilizzati buffer a tre stati.Quindi la mia domanda è: ci sono meccanismi di arbitrato in ISA e / o PC / XT-bus per impedire a due schede di rispondere allo stesso indirizzo?La mia comprensione della logica a tre stati è che, se ciò dovesse accadere, i buffer a tre stati verrebbero probabilmente fritti.Forse c'era una sorta di mitigazione minore per prevenire tali danni in caso di contesa?

Guardando online non vedo alcun accenno all'arbitrato o alla mitigazione dei danni, eppure non conosco nemmeno storie di persone con schede di espansione ISA fritte a causa di sovrapposizioni di indirizzi.

Il termine "arbitrato" rispetto agli autobus è usato per indicare qualcosa di completamente diverso.Quello che stai chiedendo è qualcosa come la funzionalità plug-and-play.
I PC avevano un grande interruttore frontale rosso per risolvere i problemi di contesa del bus irrecuperabili :)
No, chiunque potrebbe rispondere, e questo è ciò che ha portato alla soluzione PCI sovra-ingegnerizzata.Schede ISA costruite per anni, mai fritte, lo spazio degli indirizzi non era troppo difficile da risolvere, c'erano alcune persone con soluzioni di rilevamento automatico (che avrebbero interferito con le soluzioni di rilevamento automatico di altre persone), le interruzioni erano il PITA ...
alcuni elementi che hanno ancora gli stessi indirizzi legacy oggi sono stati, diciamo, codificati in modo rigido risalendo all'originale.quindi per articoli diversi da quello sarebbe diventato un servizio gratuito per tutti, non c'erano standard per quello.Normalmente usavi i ponticelli, alcune persone codificavano hardcoded e potresti non essere in grado di usare quella scheda, e come accennato alcuni avevano schemi di rilevamento automatico.
Cinque risposte:
jonk
2019-12-28 02:32:51 UTC
view on stackexchange narkive permalink

PC e XT

Il PC IBM originale ha semplicemente esteso il bus del chipset Intel ai connettori utilizzando i driver del buffer. La frequenza di clock sul bus della scheda era esattamente la stessa di quella utilizzata per un ciclo della CPU. Quindi con circa \ $ 4.77 \: \ text {MHz} \ $ (derivato dividendo per 3 a \ $ 14.31818 \: \ text {MHz} \ pm 5 \: \ text {ppm} \ $ crystal rate) sulla CPU del PC, ciò significava che una tipica transazione del bus I / O a 6 cicli e 8 bit avrebbe richiesto circa \ $ 1.26 \: \ mu \ text {s} \ $ . Ciò era coerente con la tecnologia dell'epoca, quindi le schede potevano decodificare e bloccare gli indirizzi utilizzando dispositivi a metà strada (in termini di velocità) ea prezzi ragionevoli. IBM alla fine avrebbe pubblicato un set abbastanza completo di documentazione su PC IBM, XT e PC / AT che includeva schemi dettagliati ben strutturati e comprensibili e un elenco completo del codice sorgente del BIOS (in assembly).

Il PC e XT hanno semplicemente utilizzato il design del bus che riflette il design del chip di Intel, senza funzionalità di estensione (di cui sono a conoscenza.) Se si prova ad aumentare la frequenza di clock della CPU, la frequenza di clock del bus lo farebbe aumentano anche e questo mette sotto pressione le tavole. Ma non ricordo che molti abbiano tentato di farlo, quindi non è stato un problema.

AT

Con l'avvento del PC / AT e dell'80286, sono diventate disponibili una nuova transazione di I / O a 16 bit e una transazione di memoria a 16 bit. Intel è anche passata al nuovo chip 82284 di generazione di clock e al chip di controllo del bus 82288. Altri canali DMA e linee di segnale di interrupt sono stati aggiunti da IBM e an transazione di arbitrato è stata aggiunta in modo che le schede aggiuntive potessero sostituire la CPU della piattaforma come proprietario del bus. )

Il nuovo limite standard per la CPU ora era \ $ 6 \: \ text {MHz} \ $ . La tariffa del bus è stata aumentata in modo simile e sono state necessarie schede più recenti per tenere il passo. IBM ha anche introdotto una serie di nuove schede per il sistema.

L'80286 aveva altre quattro linee di indirizzo (che andavano da 20 a 24) e ora poteva entrare in una nuova modalità operativa protetta per ottenere l'accesso a queste nuove linee. Sebbene Intel sia stata in grado di consentire il passaggio dal funzionamento in modalità reale alla modalità protetta utilizzando istruzioni software appropriate, sono stati affrettati a portare il chip sul mercato e non sono riusciti a mettere in campo con successo la nuova CPU con la possibilità di tornare alla modalità reale . Di conseguenza, l'unico modo per tornare dalla modalità protetta alla modalità reale era tramite un ripristino del processore. IBM ha gestito questo problema tramite l'interfaccia della tastiera, utilizzando la tastiera (e la memoria nel circuito integrato del calendario che hanno utilizzato) per forzare un ripristino dell'hardware quando richiesto. Il BIOS supportava le transizioni avanti e indietro tra le modalità ed era in grado di nascondere il fatto che la tastiera doveva ripristinare la CPU ogni volta che veniva richiesta per tornare al funzionamento in modalità reale.

Trasferimenti bus più ampi sul bus PC / AT ora supportano anche velocità di ciclo del bus più elevate; un "byte swapper" è stato utilizzato per trasferire byte di ordine basso e di ordine alto sul bus; e la nuova logica del ciclo di aggiornamento utilizzava circuiti discreti.

La corsa per una maggiore velocità della CPU

Le persone scoprirono rapidamente che potevano aumentare la frequenza di clock del loro costoso PC / AT IBM a circa \ $ 8 \: \ text {MHz} \ $ semplicemente sostituendo il cristallo dell'orologio. L'ho fatto e ho scoperto che potevo spingere con successo il sistema e le schede che usavo su \ $ 8.5 \: \ text {MHz} \ $ prima che le cose iniziassero a diventare incerte . (Non sono riuscito a raggiungere un \ $ 9 \: \ text {MHz} \ $ coerente sul mio sistema, quindi ho optato per \ $ 8 \: \ text {MHz} \ $ e lasciato lì.)

Il livello di abilità necessario (e gli strumenti richiesti) per progettare una scheda madre erano relativamente bassi all'epoca. Quasi chiunque potrebbe trovare parti poco costose e fare un layout decente che funzionerebbe bene a queste frequenze. E un sacco di produttori di schede madri "mamma e pop" iniziarono presto a entrare sulla scena. (Il prezzo di IBM era molto alto per la maggior parte delle persone.)

Forse il primo sostituto del PC di vero successo (in grado di emulare l'hardware IBM con il 99% di compatibilità) è stato il prodotto 286i di Kaypro. Prima di questo, di solito c'erano troppi "problemi" per rendere i prodotti sufficientemente accettabili per il mercato aziendale (sebbene gli hobbisti spesso andassero bene). L'ingresso di Kaypro costava circa $ 2k in meno rispetto a quello di IBM, quindi è stato lanciato molto rapidamente.

Man mano che sempre più concorrenti risolvono i problemi di compatibilità e iniziano a competere, Intel ha iniziato a lanciare anche CPU 80286 con specifiche più veloci. I produttori di schede incorporavano queste nuove CPU, includevano chip logici più veloci in modo che il bus potesse funzionare più velocemente, e abbiamo iniziato a vedere \ $ 8 \: \ text {MHz} \ $ , \ $ 10 \: \ text {MHz} \ $ e anche \ $ 12 \: \ text {MHz} \ $ offerte. Ma questo ha quasi immediatamente messo sotto pressione le schede aggiuntive. Le carte più vecchie semplicemente non potevano essere utilizzate e quelle più nuove erano troppo poche, troppo distanti tra loro e i consumatori dovevano acquistare un sistema più veloce che riduceva notevolmente il numero di carte aggiuntive che potevano acquistare e utilizzare con successo.

Mentre alcune aziende hanno tentato di isolare la velocità del bus della scheda aggiuntiva dalla velocità del bus Intel interna con chip discreti (con un certo successo), il numero enorme di produttori di schede madri "mamma e pop" e la necessità di separare l'orologio La velocità della CPU dal tempo di ciclo del bus ha aperto le porte a una nuova società, Chips and Technology (aka C&T), per produrre un ASIC che ha fatto questo lavoro. Molto rapidamente, nuove schede madri sono entrate nel mercato consentendo di mantenere il tempo di ciclo del bus ISA (relativamente) indipendente dalla frequenza di clock della CPU Intel. Dal momento che Intel nel frattempo continuava ad aumentare la frequenza massima della CPU, questa è stata una manna dal cielo per i molti concorrenti, che non avevano la potenza interna o il finanziamento per sviluppare ASIC ma che potevano certamente usarli in nuovi prodotti.

Di conseguenza, le "guerre di frequenza" sono iniziate sul serio e non passava quasi un mese in cui non c'erano nuove offerte di schede madri con velocità di clock della CPU in aumento. Il disaccoppiamento della frequenza della CPU dalla frequenza del bus è stata una grande vittoria anche per C&T, che ha fatto abbastanza bene nel processo.

Come nota, credo che il bus ISA disaccoppiato operi in modo asincrono rispetto alla CPU della piattaforma con un'eccezione : la linea RESET alla CPU della piattaforma.

I / O e memoria e DMA

Le transazioni di I / O e bus di memoria sono distinte, ma per molti versi abbastanza simili tra loro. È solo che diverse schede risponderebbero. La transazione I / O originale a 8 bit, ad esempio, era lunga 6 cicli di bus. Ma con il PC / AT un bus più nuovo e più ampio è stato incluso un I / O a 3 cicli.

Era compito di ogni scheda aggiuntiva bloccare e decodificare l'indirizzo e i segnali associati a cui erano interessati (IOR o IOW, ad esempio, per le schede che rispondevano ai cicli del bus di I / O). numero di orologi per rispondere a una transazione standard. Una scheda I / O potrebbe, tuttavia, affermare IOCHRDY se desidera aggiungere cicli di bus per completare la transazione.

Con l'avvento delle transazioni sia a 8 bit che a 16 bit con il bus PC / AT ISA, sono sorti alcuni problemi. Ad esempio, un componente aggiuntivo slave I / O a 16 bit non può forzare il master del bus (che può essere o meno la CPU della piattaforma) ad eseguire un accesso a 16 bit quando il proprietario desidera solo un 8 bit. Allo stesso modo, un proprietario di bus che intende ottenere un accesso a 16 bit non può ordinare a un componente aggiuntivo slave a 8 bit di eseguire un accesso a 16 bit. Quindi ci sono linee di segnale aggiunte per aiutare in queste circostanze.

I cicli di accesso al DMA erano leggermente diversi dagli altri due in questo senso: DMA utilizzava l'attivazione simultanea di linee di segnale di comando di I / O e memoria per consentire che i dati venissero inseriti e recuperati dal bus durante lo stesso ciclo. Qui, ad esempio, l'indirizzo posto sul bus è per la memoria e NON per la scheda I / O (che non dovrebbe usarlo.) (L'AEN è attivato per indicare alla scheda I / O di non usare l'indirizzo.)

Le schede aggiuntive che rispondono agli indirizzi di I / O sono state impostate in posizioni uniche per evitare conflitti. IBM ha fornito indicazioni in merito per schede importanti (display video, porta seriale, porta parallela, controller di interrupt e così via), ma molti produttori di schede aggiuntive includerebbero anche mezzi per regolare l'indirizzo I / O in modo che se ne usassi due o più delle loro schede, lavorerebbero bene insieme. In generale, il sistema funzionava abbastanza bene e c'erano pochi problemi. (La maggior parte dei problemi relativi alla memoria grafica richiesta per vari tipi di schede controller dello schermo.)

Arbitrato

Tecnicamente, esiste effettivamente IS un ciclo di arbitrato.Non è solo quello che stai chiedendo.Invece, è un mezzo con cui un altro bus master (presumibilmente residente su una scheda aggiuntiva) può rivendicare la proprietà del bus come master.Questo ciclo inizia effettivamente con l'aspetto di un ciclo di trasferimento DMA ed è il controller DMA che per primo risponde.L'aspirante bus master ha quindi un tempo fisso in cui affermare MASTER e ottenere la proprietà.Il controller DMA quindi triplica i propri segnali di indirizzo, comando e dati.(Ho lavorato con un team su una scheda aggiuntiva MIPS R2000 per IBM PC / AT, circa 1986.)

_ "Una scheda I / O potrebbe, tuttavia, affermare IOCHRDY se volesse aggiungere cicli di bus per completare la sua transazione." _ Quindi teoricamente una scheda I / O potrebbe rimanere sul bus ** per sempre **?Senza alcun arbitraggio di ** indirizzo I / O **, due schede sullo stesso indirizzo potrebbero pilotare le linee dati a livelli logici differenti in modo continuo.Anche i buffer TTL come il 74LS245 non sono classificati per questo.
@BruceAbbott No. Una scheda I / O non può contenere il bus per sempre.Ci sono alcuni problemi di confusione (DMA ha regole diverse - solo 2 attese) ma ci sono limiti specificati.IBM nella sua documentazione specificava un'attesa massima di \ $ 2.5 \: \ mu \ text {s} \ $ ma la specifica ISA (che non era solo IBM a scriverla) consentiva un periodo più lungo di \ $ 15.6 \: \ mu \ text{s} \ $ per evitare conflitti con i periodi di ciclo della DRAM che erano in pratica in quel momento.Non ricordo di aver mai visto più di tre orologi di autobus per un'attesa.Ho usato un orologio un paio di volte, ma di solito ho cercato di "tenere il passo".
@BruceAbbott La cosa triste per me è che l'ISA era facile da capire e che IBM forniva schede prototipi vuote belle, costose (e performanti) progettate per essere inserite direttamente in uno slot ISA.Un sacco di fori sulla griglia placcati da posizionare e avvolgere o semplicemente saldare i tuoi circuiti.E le assi erano economiche, inoltre.(Molto meno di quanto chiunque altro li avrebbe fatti per me, all'epoca - circa $ 40). Dimensioni dello slot completo.Includevano anche tutto il cablaggio di decodifica standard utilizzando le solite parti della serie 7400, quindi è stato davvero facile eseguire la decodifica degli indirizzi.Il PCI l'ha ucciso.
@BruceAbbott Non ci sono equivalenti ora per nessuna macchina.Non è possibile accedere all'I / O a velocità di bus MHz con un'interfaccia "fattibile" dagli hobbisti.Invece, tutto è Bluetooth, USB, ecc. E dato il periodo di 1 ms per USB, ad esempio, NON è LA STESSA COSA.Mi piacerebbe vedere ISA restituito.Ma Intel voleva VERAMENTE ucciderlo.Il south bridge è stato la fonte di più della metà dei loro bug di silicio su ogni giro del chipset.Quindi era una spina continua che volevano davvero uccidere.
Sono d'accordo che l'autobus ISA sia molto più bello per gli hobbisti.Non ci ho lavorato da solo ma ho interfacciato un controller del disco rigido MFM bus ISA all'Amiga ed è stato abbastanza facile (l'Amiga ha 'Autoconfig' per allocare indirizzi hardware, ma puoi comunque usare indirizzi fissi se vuoi).Doveva andare però perché era troppo limitante.I PC moderni hanno poco in comune con l'architettura XT / AT originale.
@BruceAbbott Hanno molto poco in comune, ora.(Ho lavorato su chipset BX.) Ma il PC IBM era un dispositivo per appassionati.L'IBM ha documentato il bus, fornito gli schemi, elencato il codice sorgente del BIOS e lo ha reso completamente aperto a tutti.È stato un periodo molto bello per noi hobbisti.Il PC ora si è lasciato tutto alle spalle e non è più accessibile a un hobbista.Gli strumenti sono troppo costosi (l'attrezzatura per il test delle onde di riflessione è molto più costosa e richiede molte conoscenze rispetto all'onda incidente.) Sarebbe bello avere ancora un autobus per hobbisti mentre si utilizzano strumenti di programmazione moderni e un PC.Sono solo triste, tutto qui.
Secondo la specifica Intel ISA del 1989 IOCHRDY non dovrebbe essere affermato per più di 15us altrimenti l'aggiornamento della DRAM sarà compromesso.Quindi le carte _non dovrebbero_ rimanere sul bus per sempre (sebbene non ci sia hardware per impedirlo).Alcuni dei timori che avevamo sui danni causati dai conflitti del bus di I / O erano probabilmente infondati (la maggior parte dei guasti erano più probabilmente causati da scariche statiche o semplicemente da schede scadenti).
@BruceAbbott Hai letto il mio commento sopra ????Ho già menzionato i numeri.\ $ 15 \: \ mu \ text {s} \ $ è molto vicino alla mia \ $ 15.6 \: \ mu \ text {s} \ $ figura che ho menzionato (che ricordo abbastanza bene.) Stai dicendo che la mia cifra è sbagliatadi \ $ 600 \: \ text {ns} \ $?Inoltre, la specifica IBM (che ho sul mio scaffale in un set di tre volumi che ho comprato quando è uscito per la prima volta) fornisce \ $ 2.5 \: \ mu \ text {s} \ $.Ma era intorno al 1984.
_ "Hai letto il mio commento sopra ???? Ho già menzionato i numeri." _ - scusa il tuo commento non mostra alcun numero qui (sembra essere troncato dopo "consentito per un periodo più lungo di").Forse il mio Firefox non riconosce qualcosa che hai incorporato nel commento?(sarebbe colpa mia se rimango con XP).
@BruceAbbott Oh.È strano.Lo vedo bene e sto usando anche Firefox.Ma XP ???Wow!!!Sì, potrebbe essere così.Mi chiedo cos'altro ti manchi, allora.Potrebbe essere molto.
@BruceAbbott La parte rimanente è: * "IBM nella sua documentazione specificava un'attesa massima di 2.5μs ma la specifica ISA (che non era solo IBM a scriverla) consentiva un periodo più lungo di 15.6μs per evitare conflitti con i periodi di ciclo della DRAM che eranoin pratica in quel momento. Non ricordo di aver mai visto più di tre orologi di autobus per un'attesa. Ho usato un orologio un paio di volte ma di solito ho cercato di 'tenere il passo' ". * Spero che aiuti.
È interessante notare che il primo chipset di C&T (nel 1986) non ha separato i clock del bus ISA come descrivi.Ovviamente, il loro secondo sì.
@YuhongBao Non ricordavo la differenza.Ma ha senso, quando lo dici.Tutte le schede precedenti di cui sono a conoscenza prima di C&T, come la KayPro 286i, erano pesantemente popolate con serie 7400 con socket e altri circuiti integrati a 14 pin, 16 pin e più grandi.E nel momento in cui qualcuno ha inventato un chipset di semplificazione, è stato un ovvio "must do" per tutti coloro che progettavano schede più recenti.Grazie per l'indizio.Apprezzato.
Justme
2019-12-27 21:28:00 UTC
view on stackexchange narkive permalink

No, non esiste alcun controllo di integrità per gli indirizzi.Se si impostano due o più carte sullo stesso indirizzo, vengono scritte tutte con gli stessi dati.La lettura causerà un conflitto in cui una carta tira bassa e un'altra alta.Ma utilizza principalmente chip dell'era LSTTL in cui i chip possono sopravvivere a questo, e il periodo / dovere della lettura in conflitto è così breve.

Sicuramente ** ESISTE ** un ciclo di arbitrato per ISA!Le schede possono diventare bus master.E non solo per DMA.Ma hai ragione sul problema della risposta all'indirizzo.
La logica alta non è così debole su un LS245 ... stresseresti l'hardware.
Ho cambiato la parola arbitraggio perché questa domanda riguardava i conflitti di indirizzo, non l'arbitrato per diventare bus master.E infatti l'LS245 ha una forza motrice molto più forte rispetto alla logica LS standard.Ma i chip continuano a non rompersi immediatamente quando c'è un conflitto di indirizzi.
Non li brucerà all'istante, vero ... Mi aspetto che un 245 cucini lentamente, tuttavia, se guidi 8 canali direttamente in un buffer in conflitto ... o peggio, un gruppo di buffer in conflitto ...
Kevin White
2019-12-27 23:09:06 UTC
view on stackexchange narkive permalink

Non esiste alcun meccanismo per impedire a più di una scheda di rispondere a un indirizzo dal bus master.Non è un problema significativo e non conosco nessun bus di computer che avesse un tale meccanismo. Anche se più schede sono state abilitate contemporaneamente, la possibilità di danni è molto bassa e i dispositivi buffer sono generalmente progettati per sopravvivere a tali cortocircuiti.

L'arbitrato è il termine usato per consentire a un bus master di possedere il bus dove ce n'è più di uno che richiede l'accesso.Nel caso del bus ISA, questo arbitraggio viene eseguito dal controller DMA sulla scheda madre.Quando l'accesso è concesso, l'indirizzo può essere fornito dal controller DMA o dal nuovo bus master.

TimWescott
2019-12-28 01:33:50 UTC
view on stackexchange narkive permalink

In generale, per qualsiasi schema di comunicazione computerizzata, i punti finali devono avere indirizzi univoci.I telefoni (o almeno le linee telefoniche per i fissi) hanno numeri di telefono univoci, i computer hanno indirizzi MAC univoci (e vengono assegnati indirizzi Ethernet univoci, o tutte le h *** si liberano), ecc.

Quindi in generale , non solo per ISA e PCI, gli endpoint hanno indirizzi univoci.L'unico posto in cui puoi farla franca non dando a uno specifico pezzo di hardware un indirizzo univocoè quando il suo indirizzoèdato da dove si trova nel sistema (cioè, i progettisti del bus ISA potrebbero averehanno scelto di assegnare a ogni slot per schede un numero univoco che sarebbe stato aggiunto all'indirizzo della scheda. Per motivi di flessibilità e riduzione dei tempi di progettazione, hanno chiaramente scelto di non farlo).

Grumpyoldgeek
2019-12-29 11:33:12 UTC
view on stackexchange narkive permalink

Per rispondere alla tua domanda in modo semplice e accurato, non è presente alcun arbitrato sul bus PC / XT.Se si esegue una lettura di I / O o memoria e sono presenti più adattatori con lo stesso indirizzo, entrambi guideranno il bus con i rispettivi dati.Per quanto riguarda i danni, non ricordo di aver mai danneggiato una scheda o una scheda madre e ho configurato e costruito dozzine di computer PC / XT e progettato e costruito 3 schede adattatrici.Avere due driver tristate che guidano un autobus in direzioni diverse farà surriscaldare i chip e genererà grandi transitori Vcc e terra, ma generalmente non causa danni a lungo termine.

Questo sembra non aggiungere nulla rispetto alle risposte precedentemente pubblicate che hanno fatto gli stessi punti
Ho aggiunto alle risposte.Se non lo vedi, non l'hai letto o capito.Il mio post era una specie di post di prova per vedere se StackExchange era pieno di se stesso come ho letto.Hai dimostrato che in effetti lo è.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 4.0 con cui è distribuito.
Loading...