Bus

Moderne elektroniske systemer, og især edb-udstyr, er gerne modulært opbyggede for at begrænse kompleksiteten af dem og for at give mulighed for valg mellem forskellige konfigurationsalternativer. Dette vil for computere bl.a. sige, at de konstrueres som et sæt af moduler, der sammenkobles via en fælles transportvej for data. Dette kan ske på mange niveauer, og sædvanligvis skelnes mellem busser på komponentniveau, busser på modulniveau (backplane bus, systembus) og busser på systemniveau (I/O bus).

En bus er således en kommunikationsvej, ad hvilken al transport af digital information mellem de tilsluttede enheder sker. Betegnelsen er hentet fra trafikkens verden med busser, der transporterer passagerer. Navnet er en forkortelse af det latinske ord "omnibus", der ordret betyder "for alle".

En bus kan være parallel eller seriel. En parallel bus har adskillige ledere og overfører data, adresse-information og styreinformation på én gang. Den parallelle bus anvendes typisk som internt transportsystem for data, der skal transporteres mellem de enkelte dele af en computer, f.eks. mellem arbejdslager og CPU. Parallelle busser anvendes også ofte til at forbinde mikroprocessorbaserede instrumenter og laboratorieudstyr over korte afstande.

En seriel bus overfører al information (data, adresser og kommandoer) én bit ad gangen på en enkelt ledning. En seriel bus anvendes typisk, hvor der er lange ledningsstrækninger mellem de enheder, der skal sammenkobles, f.eks. i industrielt udstyr, i fly og i biler. Der pågår endvidere standardiseringsaktiviteter for at definere serielle busser til sammenkobling af privat elektronisk udstyr i hjemmet. Der er i øvrigt en meget svævende overgang mellem serielle busser og egentlige lokalnet.

Interne busser på komponentniveau benyttes til at sammenkoble de enkelte kredsløbskomponenter (f.eks. CPU, I/O- controllere, lagerkredsløb) på en struktureret måde inden for en chip eller et printkorts afgrænsede område. Disse busser er normalt bestemt af den type mikroprocessor, der anvendes. Der har uden held været gjort forsøg på at definere standard komponentniveaubusser. Visse subset af komponentniveaubusser er dog blevet de-facto standard, f.eks. de busser, der definerer ledningsføringen til SIMM lagermoduler.

En backplane bus (systembus, motherboard) benyttes til at sammenkoble de forskellige printkort, der anvendes i en computer. Igennem edb-historien har de enkelte leverandører udformet individuelle backplane busser, knyttet til en given computerserie eller endog en enkelt computer. F.eks. var GIER designet omkring en bus. Fremkomsten af mikroprocessoren gav imidlertid anledning til en helt ny udvikling i løbet af 1970-erne, hvor en række egentlige standarder så dagens lys. Flere af disse standarder blev defineret af leverandører, og en overgang havde næsten hver halvleder-leverandør sit eget forslag til busstandard. Kun ganske få af disse busser fik større udbredelse, bl.a. multibus, VMEbus og STD bus.

Andre backplane busser opstod i amatør-kredse eller på undervisningsinstitutioner. Et typisk eksempel er S100 bussen, som er et af de mest forbløffende eksempler på, hvordan en ad hoc samling af signaler og mekaniske formater, der har været kopieret og modificeret ("forbedret") af et utal af fabrikanter, blev taget op af en gruppe entusiaster og ændret til en entydig teknisk kompetent og brugbar standard, som siden opnåede officiel status som IEEE 696 standard. Flere andre leverandørspecifikke standarder opnåede status som de-facto standarder. Apple var en af de første leverandører, der indså behovet for at levere en computer med en offentlig tilgængelig busspecifikation, og Apple's bus (NuBus) og S100 startede hele markedet for tredjepartsleverandører af indstikskort. IBM gjorde det samme med introduktionen af den første IBM PC, og XT-bussen blev hurtigt en af de mest brugte de-facto standarder. Den senere AT-bus opnåede samme status, endskønt definitionen af denne ikke var entydig.

De første busspecifikationer har for de flestes vedkommende været teknologibestemte, dvs. knyttet til 8-bit eller 16-bit mikroprocessorer. De har derfor ikke kunnet holde trit med den hurtige overgang til 32-bit processorer. I visse tilfælde, især for PC'er, har dette betydet brug af en række proprietære 32-bit busser sammen med de eksisterende 16-bit busser (især AT-bussen). For mindre PC'er, har EISA hidtil været den mest udbredte af 32-bit busserne.

For dagens systemer knytter interessen sig derfor til rækken af standardiserede 32-bit backplane busser. I starten af 1990'erne opstod idéen om at lave en simpel, men hurtig bus, der ikke indeholdt forsinkende elementer i form af buffere, driverkredsløb mv., men hvor signalledningerne fra controllere stort set var galvanisk forbundet direkte til processorchippens signalledninger. Bustypen blev kaldt for lokalbus, og forskellige implementeringer blev forsøgt. En formel og fremtidssikret definition kom med PCI lokalbussen. PCI er i dag den dominerende bus.

En backplane bus specifikation består af en række delspecifikationer:

  • En mekanisk specifikation, der definerer mulige standardstørrelser af printkort, konnektorer, monteringshuller, fremføringsskinner, bagplader etc.
  • En elektrisk specifikation, der definerer signalniveauer, stigetider, terminering og i visse tilfælde layoutet af kredsløbsbanerne på det backplane kort, der forbinder systemkort i computeren.
  • En signalspecifikation, der definerer, hvilke data-, adresse- og kontrolsignaler der befinder sig på hvilken konnektor.
  • En protokolspecifikation, som nøje specificerer kravene til formatering, sekvens og varighed af de signaler, som kan transmitteres gennem bussen. Protokollerne definerer således reglerne for, hvorledes læsning, skrivning, interrupts, DMA-overførsler og arbitrering sker via bussens kontrolsignaler. Sådanne regler kaldes ofte handshake-procedurer.

Backplane busser differentierer sig på en lang række parametre. Bus protokollen kan være synkron eller asynkron. Med synkron protokol styres transaktionerne på bussen af en fast klokke, der hermed sætter en øvre grænse for bussens overførselshastighed. Med en asynkron protokol tilpasses transaktionsudvekslingen de enkelte kort formåen. Overførselshastigheden er således teknologibestemt. Udveksling af data mellem to kort med hurtige kredsløb sker derfor med maksimal hastighed, mens udveksling af data med et ældre kort automatisk tilpasses dette korts hastighed for de specifikke transaktioner, der vedrører kortet. EISA og ISA er synkrone og benytter en 8,33 MHz klokke. PCI er asynkron og benytter en 33 eller 66 MHz klokke.

Nogle busser har separate databusser og adressebusser, mens andre benytter en multiplekseret adresse/databus, hvor adresser og data overføres via de samme signalledninger. Multiplekserede busser reducerer antallet af signalledninger, men har en øget kompleksitet af de kontrolkredsløb, der styrer bussen. EISA benytter separate busser, mens PCI benytter en multiplekseret bus.

Traditionelt har de fleste backplane busser understøttet afvikling af instruktioner via bussen, dvs. hvor et systemkort med computerens processor kan hente instruktioner fra arbejdslager, som befinder sig på andre systemkort. Moderne busser tillader imidlertid multiprocessing, ved at flere processorer kan dele bussen. Dette sker sædvanligvis via det såkalde bus master princip, hvor den enkelte processor efter tur kan gøre sig til "herre" over bussen. En af de væsentlige forskelle er her, hvorledes arbitreringen foregår, dvs. styringen af tilgangen til bussen. Nogle backplane busser er primært beregnet til beskedudveksling mellem intelligente systemkort, der indeholder selvstændige processorer, f.eks. Multibus II og Futurebus+.

Almindeligvis er bustransaktioner enkeltstående ved, at et ord (f.eks. en 8-, 16-, 32- eller 64-bit dataværdi) læses eller skrives på en given adresse, der er en del af transaktionen. Specielt for beskedudveksling, eller overførsel af større sekventielle blokke af data, understøtter visse busser afsendelse af pakker, hvor bustransaktionen består af en startadresse, efterfulgt af en række dataværdier. Denne teknik kaldes ofte "burst mode" og giver mulighed for meget store overførselshastigheder.

Et bussystem kan også have den specielle opgave at identificere og automatisk konfigurere adaptere og systemkort tilsluttet bussen (se f.eks. plug and play). Det gælder f.eks. PCI. Et aspekt i denne forbindelse er "live insertion", som dækker det forhold, at printkort kan indsættes eller fjernes fra en bus, mens systemet kører i drift.

Busprotokollerne for de forskellige 32-bit busser er i flere tilfælde forholdsvis komplekse. Protokolhåndteringen varetages derfor af specialdesignede integrerede kredsløb. De fleste moderne backplane busser har i øvrigt formaliseret busprotokoller, beskedudveksling og andre egenskaber i OSI-lignende systemarkitekturbeskrivelser for bussen.

Hvor backplane busser definerer sammenkoblingen mellem systemkort i en computer, definerer I/O busser en sammenkoblingsmetodik for ydre enheder. I/O busser kaldes også for interface busser og er ofte defineret mod anvendelse sammen med specifikke ydre enheder som diske (f.eks. ST-506, SMD, ESDI) eller printere (f.eks. Centronics interface). En meget udbredt I/O bus er IEEE-488, der oprindeligt blev udviklet til at sammenkoble måleinstrumenter, men som i dag benyttes mere generelt. SCSI er en anden betydningsfuld standard, der benyttes til at sammenkoble flere ydre enheder som diske, tape backup enheder og printere til en enkelt kontroller. Med USB forventer leverandørerne at have specificeret en robust og fleksibel I/O-bus.

Samlet findes i dag et ret stort antal de-facto bus standarder, og inden for en enkelt computer kan flere af disse standarder være anvendt samtidigt, f.eks. i form af en backplane bus standard og en eller flere I/O busser. I de fleste tilfælde har de-facto standarderne også resulteret i nationale eller internationale normer. Således har CCITT, den internationale elektrotekniske komité IEC, de amerikanske EIA og IEEE, det tyske DIN og det engelske BSI alle udgivet normer for serielle eller parallelle busser.

Busarkitekturer har i løbet af 1980-erne opnået at blive en af de mest fundamentale forudsætninger for computer design. Uden de standardiserede busser ville dagens edb-udstyr befinde sig i en helt anden, og dyrere, prisklasse. Interessant nok er det de færreste, der tænker på busser, når der tales om såkaldte åbne systemer. Men faktisk er busser det, der har gjort de fleste af dagens computere (måske bortset fra mainframes) åbne, ikke kun udadtil, men også indadtil.

Forfattere: 
Tue Bertelsen
Casper Thomsen