Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
Podrobnější popis sběrnice PCI

dustin
dustin (neregistrovaný)
16. 10. 2008 8:56 Nový

DMA?

celé vlákno
Děkuji za velice zajímavý článek. Souvisí nějak bus-master režim s přenosem pomocí DMA? Díky za informaci.
Pavel Tišnovský aura:98
16. 10. 2008 13:46 Nový

Re: DMA?

celé vlákno
Jj, pomocí bus-master i pass thru se dají data pomocí DMA přenášet. Jde přesně o to, jaké DMA máte na mysli, jestli to iniciované řadičem PCI nebo iniciované samotnou kartou. V tom druhém případě se jedná přesně o postup popsaný v článku - čip AMCC dokáže blokové přenosy sám "uřídit".
X
X (neregistrovaný)
16. 10. 2008 9:03 Nový

RE: Podrobnější popis sběrnice PCI

celé vlákno
Toto je ten typ clanku,kterych by tady melo byt mnohem vice o HW a SW.Autor odvadi perfektni praci.
Peppa1
Peppa1 (neregistrovaný)
16. 10. 2008 9:46 Nový

PCI-X 64/100 a 64/133

celé vlákno
o PCI-X zase nic :(
Pavel Tišnovský aura:98
16. 10. 2008 11:03 Nový

Re: PCI-X 64/100 a 64/133

celé vlákno
nebojte, nacpu do další části :-) do dnešního článku už se to nevešlo, 26 kB textu je až moc...
uživatel si přál zůstat v anonymitě
16. 10. 2008 15:21 Nový

Re: PCI-X 64/100 a 64/133

celé vlákno
moment a aky je rozdiel medzi 64 bit PCI a PCI-X, podla mna je to totiz to iste?
Pavel Tišnovský aura:98
16. 10. 2008 15:38 Nový

Re: PCI-X 64/100 a 64/133

celé vlákno
Zvyšuje se tam frekvence z 66/133 až na 266 či dokonce 533 MHz, trošku se upravila specifikace a přenosový protokol, takže se dají od sběrnice "odstavit" vadné karty (pro servery někdy dost podstatná vlastnost) popř. testovat, zda se data přenesla v pořádku (CRC), ale - máte pravdu - zpětná kompatibilita je zachována, přesněji je zachována pro 3,3 V karty.
Ja
Ja (neregistrovaný)
16. 10. 2008 10:31 Nový

Vinikající článek

celé vlákno
Toto je článek, který mě potěšil nejen tématem, alel i vysokou kvalitou zpracování. Toto jsou články které tu chybí. Žádná povrchnost pěkně do hloubky a odborně.

Díky
yossarian
yossarian (neregistrovaný)
16. 10. 2008 11:23 Nový

Re: Vinikající článek

celé vlákno
1) vYnikajici se pise
2) tentokrat me p. Tisnovsky kvalitou zpracovani trochu zklamal, prijde mi, ze prvni pulka clanku (vysvetleni rozdilu 3.3/5) je popsani jedne veci 4x po sobe ruznymi vetami a vypada to dost neucesane.

Nicmene obsahove jde porad o jedny z nejlepsich clanku na rootu ;)
Medvěd
Medvěd (neregistrovaný)
16. 10. 2008 11:14 Nový

dotaz k činnosti PCI

celé vlákno
Pořád mně není úplně jasné, jak na PCI sběrnici proběhne taková typická činnost jako třeba čtení a zápis do portu, které procesor realizuje pomocí instrukcí IN a OUT.
Představme si, že máme PCI kartu - třeba adaptér pro paralelní port, jaké se ještě používají na tiskárnách. Kartu dáme do slotu, pustíme počítač a paralelní port je tam vidět na nějakých adresách portů, normálně s tím pracujeme pomocí IN a OUT, jakoby ty registry byly připojeny přímo k lokální sběrnici procesoru. Kdo toto zařídí ? BIOS nějak ve spolupráci s chipsetem základní desky vyčte z karty na jakých adresách mají být ty porty/registry vidět ? A chipset pak podle toho nějak na lokální sběrnici emuluje pro procesor existenci těch portů ? Jak tohle vlastně funguje ?
uživatel si přál zůstat v anonymitě
16. 10. 2008 12:02 Nový

Re: dotaz k činnosti PCI

celé vlákno
Podle meho nazoru je to podobne jako pri ISA sbernici. Pri zapnuti PC BIOS nebo OS nakonfiguruje PCI kartu tak ze jeji adresny dekoder bude reagovat na vybranou hodnotu ktera se objevi na zbernici. Pro tohle je na karte EEPROM kde je ulozena default PCI konfigurace, kterou BIOS a OS precte.
Potom zapis/cteni probiha zhruba nasledovne: na sbernici se objevi adresa, jestli existuje karta ktera spada do nastaveneho adresniho prostoru tak se provede cteni/zapis. Karta muze mit namapomavanou interni pamet a/nebo HW registry nebo do pametoveho prostoru v PC ve dvou modech: v adresnim a v registrovem modu, v prvnim pripade se do karty zapisuji data pres instrukci mov, etc a v druhem pripade pres instrukce procesoru in a out.
Medvěd
Medvěd (neregistrovaný)
16. 10. 2008 13:21 Nový

Re: dotaz k činnosti PCI

celé vlákno
Nojo, ale PCI je prece od adresni sbernice procesoru oddelena (!!) Karta, pripojena k PCI prece nemuze detekovat spravnou adresu, ktera se objevi na adresni sbernici procesoru. To by musel nejak delat chipset, ve kterem je zaroven i nejaky "radic PCI" ~ bridge. Chipset by detekoval na sbernici procesoru spravnou adresu a pak by nalezite na PCI vygeneroval cykly pro presun dat - jenze to uz je neco docela jineho nez na sbernici procesoru.
A prave toto me zajima - jak presne to funguje ?
Na ISA sbernici je to predstavitelne docela dobre - ta je totiz ke sbernici procesoru mnohem blize.
atarist
atarist (neregistrovaný)
16. 10. 2008 18:43 Nový

Re: dotaz k činnosti PCI

celé vlákno
Podle me to prave takto funguje, ovsem s tim rozdilem, ze spravna karta je dopredu vybrana svoji pozici v PCI slotu. Prime mapovani instrukci IN a OUT procesoru je tak rozlozeno na dve casti - cesta od mikroprocesoru k north bridge a nasledne cesta od north bridge k PCI karte.

Mimochodem, dnes je ISA prave dal od procesoru nez byla v dobach 88/86/286/386, v podstate je cela emulovana v south bridgi.
uživatel si přál zůstat v anonymitě
16. 10. 2008 19:05 Nový

Re: dotaz k činnosti PCI

celé vlákno
Kazda karta ma BAR registry ktere nakonfiguruje OS. Tyhle BAR registry se prave pouzivaji k urceni toho, jake fyzicke I/O porty a memory regiony bude karta pouzivat. Pak je tam jeste PCI configuration space jestli si dobre pamatuji, s fixnimi adresami, ktere se prave pouziva pro zjisteni pevne danych informaci o PCI karte (a taky jake prostredky potrebuje priradit)
Medvěd
Medvěd (neregistrovaný)
16. 10. 2008 22:12 Nový

Re: dotaz k činnosti PCI

celé vlákno
Pochopitelně. Měl jsem na mysli ISA v její ryzí podobě. Mimochodem se takto vyskytovala i na základních deskách s 486 - ano, zpočátku se desky pro 486 dělaly pouze s ISA sběrnicí.
Pavel Tišnovský aura:98
16. 10. 2008 19:31 Nový

Re: dotaz k činnosti PCI

celé vlákno
Pokusím se to popsat podrobněji:

Každá PCI karta má přístupné PCI konfigurační registry. Jedním z těchto registrů je i PCI command register neboli PCICMD, v něm se dá nastavit, zda má karta reagovat (a správně dekódovat) paměťové adresy a adresy IO portů (konfigurace jsou nezávislé, možné jsou všechny čtyři kombinace).

Dále jsou zde umístěny v článku popsané registry Base Address Registers neboli BADR (BADR0-BADR5). V těchto registrech jsou po resetu karty umístěny požadované rozsahy adres, například grafická karta bude požadovat dejme tomu v BADR0 rozsah 16 MB. Kromě toho je v nultém bitu flag, zda se jedná o paměťový region nebo o I/O region. To znamená, že nějaká karta může mít například tři paměťové regiony a tři regiony I/O. Kromě toho je prvním bitem nastaveno, zda se má region mapovat pod 1 MB či ne - opět se u grafických karet minimálně jeden region mapuje pod 1 MB do rozsahu a0000-b0000, tj. tam kde očekává video RAM jak BIOS, tak i DOSové programy.

Takže typicky se třeba pro paralelní port na PCI kartě vytvoří I/O region mapovaný pod 1 MB.
Pavel Tišnovský aura:98
16. 10. 2008 19:36 Nový

Re: dotaz k činnosti PCI

celé vlákno
ještě pokračujeme:

Jak se provádí vlastní adresování?

Na PCI sběrnici neexistují signály typu memory-read, memory-write, IO-read, IO-write apod. Vše se místo toho - jak je u universálních sběrnic zvykem - řeší příkazy, které jsou posílány po vodičích C/BE0 až C/BE3. Díky tomu je možné rozeznat 16 příkazů, mezi jinými i:

I/O READ
I/O WRITE
Memory READ
Memory WRITE
Configuration Read
atd.

Nás zajímají I/O READ a I/O WRITE. Právě ty slouží k adresování I/O portů. O překlad mezi instrukcí IN a OUT mikroprocesoru a vysláním nějakého příkazu na PCI kartu, se musí postarat north bridge. Ten je z jedné strany připojený na mikroprocesor a zdetekuje vykonávání příslušné instrukce (hlídá si adresovací "nožičky" :-) a provede překlad.
Medvěd
Medvěd (neregistrovaný)
16. 10. 2008 22:10 Nový

Re: dotaz k činnosti PCI

celé vlákno
Díky. Docela mě potěšilo, že jsem nebyl ve svých úvahách příliš daleko od pravdy. Už léta jsem občas přemýšlel, jak to vlastně je a že instrukce IN a OUT musí vlastně konvertovat chipset (north bridge).
tomas z.
tomas z. (neregistrovaný)
16. 10. 2008 12:16 Nový

Jak to zkoušet?

celé vlákno
Lze si s PCI kartami hrát nějakým způsobem v Linuxu v userspace? (přesun dat, zápis/čtení registrů...)

Jinak se připojuji k poděkování autorovi za hezké články (nejen tento).
BLEK.
BLEK. (neregistrovaný)
16. 10. 2008 12:56 Nový

Re: Jak to zkoušet?

celé vlákno
Na I/O porty můžeš lézt z userspace normálně instrukcemi assembleru in a out (poté, co si povolíš přístup na porty pomocí syscallu iopl --- na to musíš být root). Do paměťově-mapovaných registrů tak, že si namapuješ příslušnou část /dev/mem pomocí syscallu mmap a pak k ní přistupuješ. Co se týče PCI-konfiguračního prostoru, tak buď přes I/O porty --- tam ovšem hrozí, že se popereš s kernelem, který na ty PCI porty bude přistupovat současně (steré Xservery to tak dělaly), nebo přes sysfs (třeba /sys/bus/pci/devices/0000:00:01.0/config).
Medvěd
Medvěd (neregistrovaný)
16. 10. 2008 13:24 Nový

Re: Jak to zkoušet?

celé vlákno
A co treba /dev/port ?
To je prece taky cesta.
tomas z.
tomas z. (neregistrovaný)
16. 10. 2008 13:54 Nový

Re: Jak to zkoušet?

celé vlákno
Díky, nevím proč jsem si myslel že přímé I/O instrukce jdou jen z jádra.
Petr Tesařík aura:77
16. 10. 2008 17:21 Nový

Re: Jak to zkoušet?

celé vlákno
Asi proto, že dokud nezměníš IOPL pro daný proces, tak opravdu jen z userspace opravdu nejdou. Jinak pozor, iopl() opravdu nastavuje bity IOPL v EFLAGS, což má i jiné vedlejší efekty, např. povolení instrukce "cli".

BTW ví někdo, jak to funguje na jiných architekturách než x86? Co třeba powerpc?
Pavel Tišnovský aura:98
16. 10. 2008 19:09 Nový

Re: Jak to zkoušet?

celé vlákno
Buď to jde řešit způsobem, jaký naznačili předřečníci, nebo je možné použít nějaký dummy driver, který funkce nějaké karty zpřístupní v user space. Podobná věc, jakýsi universální driver pro PCI zařízení (s podporou pass thru i bus-masteru) v Linuxu, před pár lety řešili v rámci diplomek na VUT v Brně na automatizaci, asi by se dalo zjistit, v jakém je celá věc stavu. Viděl jsem zdrojáky ještě neodladěné verze (ta byla určena pro jednu konkrétní kartu) a bylo to docela čitelné, hlavně v porovnání s funkčně stejnými zdrojáky určenými pro Windows (DDK) :-)
Otas
Otas (neregistrovaný)
16. 10. 2008 17:21 Nový

64bit -> 32bit slot?

celé vlákno
Z článku mi není jasné, zda jde použít 64bit PCI kartu v běžném 32bit PCI slotu?
Vím, asi to není moc typické a čisté, protože část konektorů na kartě tak visí nezapojena "ve vzduchu", ale nebrání-li tomu na boardu nic mechanicky... ?

Každopádně díky za článek.
Pavel Tišnovský aura:98
16. 10. 2008 19:01 Nový

Re: 64bit -> 32bit slot?

celé vlákno
Pracovat by taková karta měla, v módu kompatibility s 32bitovou PCI. Co se týče adresování, tam 32 bitů dostačuje, datová část přenosu bude probíhat poloviční rychlostí. Ovšem za předpokladu, že se tam 64bitová karta doopravdy vleze, protože těsně za PCI konektory bývají na základní desce další součástky.

Třeba (když bych se měl vrátit k předchozím částem seriálu) mám doma stařičkou funkční 486ku s VESA Local Busem na které je dlouhatááánskááá grafická karta, která buď musí být trošičku ohnutá nebo ne zcela zastrčená do konektoru, zavazí další součástky :-)
AX
AX (neregistrovaný)
17. 10. 2008 11:04 Nový

Re: 64bit -> 32bit slot?

celé vlákno
Jednou jsem takhle updatoval ve stolnim kompu s 32b PCI firmware na 64b RAID radici, takze to skutecne funguje.
pc2005
pc2005 (neregistrovaný)
18. 10. 2008 17:10 Nový

Tiskařský šotek

celé vlákno
... je maximální rychlost stanovena na 10 GBps-1. ...

podle mě by tam mělo být buď GBs-1 nebo jen GBps. Ale je to jen drobnost, každopádně opět skvělý článek :-).
SB
SB (neregistrovaný)
24. 10. 2008 10:44 Nový

jazyk

celé vlákno
Pěkný článek, tentokrát podrobnější a odbornější. Akorát ty amerikanismy jsou tam navíc ("Pass Thru operace", "PCI sběrnice" a podobně).
honza
honza (neregistrovaný)
11. 3. 2009 18:40 Nový

USB

celé vlákno
Dobry den prosim Vas moc o radu, potrebuju vyrobit USB do PCI slotu dostal jsem to za ukol na dlouhodobou praci ve skole a potrebuju s tim poradit kde sezenu nejake veci k tomu uz jsem se dival a nic jsem nenasel jsem uplne bezradny prosim Vas o pomoc dekuji
na jan.priky@seznam.cz
nebo na ICQ 311695456
kdyby jste vedeli o cemkoliv jak to vyresit tak budu moc rad, prosim Vas vsechny o rady diky
Zasílat nově přidané příspěvky e-mailem