Busos del sistema

De Jose Castillo Aliaga
Ir a la navegación Ir a la búsqueda

El cor d'una placa base són els busos i el Xipset és la implementació principal dels busos.

Els busos són un conjunt de línies de transmissió en paral·lel o en sèrie, que serveixen per a intercomunicar els diferents blocs (unitat central de processament, memòria, equips perifèrics, etc.) que componen un ordinador. Els busos proporcionen el camí per a comunicar el processador amb la resta de dispositius integrats o connectats a la placa base i aquests amb aquells.

Els busos es poden clasificar per les següents categories:

  • En paral·lel:
    • Transmetre molts bits simultàniament per diversos fils (FSB, ISA, ATA, SCSI, PCI…).
    • Hi ha amplades de bus diferents (8, 16, 32 i, actualment, 64 bits).
  • En sèrie:
    • Transmeten un bit darrere l’altre.
    • En són exemples els busos USB, FireWire, Serial ATA, PCI Express…


Trobem actualment aquests principals busos:

Bus del processador

També anomenat FSB (Front Side Bus) és el més ràpid del sistema i connecta amb la memòria principal i el xipset.


Busos d'entrada eixida

Des del primer PC han aparegut molts busos distints. L'augment de la velocitat en els dispositius d'entrada'eixida necessitava millors comunicacions en xipset i el processador.

Bus ISA

Industry Standard Architecture (ISA) és el primer bus per a PC. De 8 bits fins 16 en el PC/AT de 1984.

Bus Micro Channel Architecture

Els processadors de 32 bits necessitaven altres busos. Aquests poden anar en 32 bits cada cicle i ISA sols 16. MCA era molt superior a ISA, però al ser sols fabricat per IBM no va arribar a ser estàndard.

Bus EISA

Com que els fabricants no volien pagar el drets del MCA van inventar el seu estàndard.

El EISA era, en essència una versió de 32 bits del ISA. I era retro-compatible en els ISA de 8 i 16 bits.

Busos Locals (VESA, PCI, PCI-E, AGP)

La limitació en la velocitat dels ISA, MCA o EISA ve dels primers PCs on el bus d'entrada/eixida anava a la mateixa velocitat que el bus del processador.

Un bus local és aquell que està dissenyat per interactuar més directament amb el processador.

En realitat, les primeres versions de ISA ja eren locals, ja que anaven a la velocitat del bus del sistema, però al incrementar la velocitat del processador es van tindre que desacoblar. Fins l'arribada de VESA que torna a fer busos a la velocitat del bus del sistema. PCI, desenvolupat quasi al mateix temps va ser el que el va desplaçar fins l'arribada del PCI-E.

En els sistemes dels 90, era típic tindre PCs amb combinacions de PCI, ISA o VESA i AGP per al vídeo.

VESA

Video Electronics Standards Association (VESA) és un bus local de 32 bits. Era utilitzat per al vídeo i per als disc PATA. Va ser desnvolupat per al 486. Encara que era barat, el PCI el va desplaçar ràpidament.

PCI

En 1992, Intel va formar un grup empresarial per desenvolupar PCI.

El bus PCI va redissenyar els busos del sistema insertant un altre bus entre la CPU i el bus de E/S.

El bus PCI típicament va a 33MHz i és un bus de 32 bits, per tant: 133MBps.

Un altra millora important de PCI és el suport per a PnP que perment no tindre que tocar Jumpers o Switches i configurar-ho tot per software.

Els PC moderns poden tindre PCI, però està obsolet i reemplaçat per PCI-E

AGP

Accelerated graphics port (AGP) és un bus per a gràfics basat en PCI però separat d'ell en l'implementació.

Està dissenyat no com un bus, sino com una connexió punt a punt i sols hi havia un per placa base.

La primera versió era de 66MHz fins a la AGP 8x a 2133MBps. Això és la meitat que el primer PCIe x16.

PCI-E

Es tracta de la tercera generació del PCI. En 2001, un grup de empresses comandades per Intel van especificar el 3GIO que va ser renombrat a PCI-Express 1.0 en 2002. Fins al moment tenim la 1.1 (2005), 2.0 (2007) 3.0 en 2011 i 4.0 en 2017 i 5.0 (~2019).

Les seues característiques fonamentals són:

  • Compatibilitat en els PCI i els drivers.
  • Connexions per coure, óptic o altres.
  • Màxima velocitat per pin. Permitint menys pins.
  • El seu propi rellotge, que permet millors velocitats que el rellotge síncron.
  • L'ample de banda incrementa a més freqüència o més Lanes.
  • Baixa latència.
  • Connexions en calent.
  • Capacitat de gestionar l'alimentació elèctrica.

El PCI-E és un dels exemples del canvi de busos paral·lels a serie. Les connexions paral·leles donen problemes de sincronia en connexions llargues o ràpides. Un bus serie és més simple i sols envia 1 bit cada cicle en un sol cable. Però les velocitats poden ser molt majors. Amés, es poden paral·lelitzar els busos serie per augmentar la velocitat.

La seua velocitat depèn de les Lanes. Cada Lane proporciona fins a 10Gbs en PCIe versió 3 i pot ser de x1, x4, x8, x16 o x32 Lanes. Per exemple, una connexió x16 de PCIe 2.0 a 500MBps per Lane dona 8000MBps.

Com que ha sigut dissenyat per ser implementar per cables, es poden fre combinacions molt interessants, com tindre la targeta gràfica fora d'un portàtil, per exemple.

Recursos del Sistema

Es tracta dels canals, direccions o altres senyals que els dispositius usen per comunicar-se en el bus. Es classifiquen en:

  • Direccions de memòria
  • IRQ Canals d'Interrup Request
  • Canals DMA o Direct memory Access
  • Port I/O

Aquests recursos són necessaris per a que targetes d'expansió es comuniquen en el sistema. No tots ho necessiten tot, per exemple, el por serie necessita un IRQ i un port I/O i una targeta de só necessita també un canal DMA.

Al augmentar la complexitat dels sistemes, van augmentar les necessitats de resoldre conflictes. Per això van passar de la configuració manual al PnP. Aquest detectava, administraca i configurava maquinari sense que l'usuari tinguera que fer gran cosa. PnP va ser ampliat per l'ACPI, el qual combina la configuració i el control de l'alimentació. Els sistemes moderns per PCIe no solen fallar.

Interrupcions

Les interrupcions són utilitzades per els perifèrics per comunicar a la placa base que tenen una petició. Les interrucions van per canals que són cables en la placa base i en el connector de l'slot. Quan arriba una interrupció, el Sistema operatiu ha de fer ús d'una subrutina per atendre-la. Però abans, la CPU ha de guardar tot el seu contingut en una pila i després buscar la interrupció en un vector d'interrupcions. Les direccions del vector d'interrupcions apunten als drivers dels dispossitius. Després d'atendre la interrupció, torna al curs normal d'execució i retorna tot el que ha deixat en la pila.

Pensem que aixó significa que cada vegada que un port té alguna cosa que enviar al sistema, genera una interrupció. Per evitar moltes d'elles, alguns controladors de dispositius tenen buffers que guarden el que van rebent fins que tenen suficient per fer una interrupció i resoldre tot d'una.

Les interrupcions de maquinari generalment es prioritzen pel seu número. Les que més prioritat tenen tenen un número menor.

En ISA, cada dispositiu tenia una interrupció que indicava per un cable en el connector. Per saber quin dispositiu ha enviat la interrupció, es reservava prèviament. Si aquesta reserva no es feia correctament, com el sistema no podia saber quin port era el que havia enviat la interrupció, podien haver problemes si més d'una targeta utilitzava una mateixa interrupció. En ISA, les interrupcions en la majoria dels casos no es compartien. En PCI són compartides, de fet, en principi, tots els PCI van per una única interrupció. El problema és que, al principi, els PC tenien dos tipus diferents d'interrupcions i es podia fer mapant les PCI en interrupcions ISA però donava problemes inclús en els PnP. La solució va vindre després de Windows 98 amb PCI IRQ Steering que permet mapar dinàmicament varies interrupcions PCI en una. En ISA de 8 bits sols tenien 8 possibles interrupcions, en el de 16 van utilitzar 2 controladors d'interrupcions 8259 per tindre fins a 16 interrupcions.

Per exemple, la targeta controladora del bus de la impressora compartia interrupció amb la Sound Blaster i podien haver problemes si escoltaves música al mateix temps que imprimir.

Per a reemplaçar el controlador d'interrupcions 8259, Intel va inventar el Advanced Programmable Interrupt Controller (APIC). Ha de ser suportat per la BIOS i per el sistema Operatiu i estar present en el xipset i en el processador. El major benefici és que pot suportar IRQs PCI virtuals per damunt de 15. La majoria de 24. A partir de Windows XP, es limita la compartició d'interrupcions i de la 0-15 es deixa per als ISA tradicionals. Les versions x64 de Windows necessiten tindre el APIC habilitat en la BIOS.

Les interrupcions es poden desactivar temporalment per a que la CPU realitze operacions crítiques.

Canals DMA

Els busos serveixen per a comunicar els dispositius amb el processador i altres dispositius. Però quant volem una comunicació més ràpida entre dispositius i la RAM o entre dispositius, es necessiten els canals Direct Memory Access.

Direccions de ports I/O

A diferència de les interrupcions o el DMA. El sistema té 65536 ports de comunicació d'entrada/eixida. Aquests estan numerats del 0000h al FFFFh segons el diseny del x86. Alguns dispositius utilitzen més de 8 ports.

Una confusió respecte als ports és que, al estar numerats poden parèixer direccions de memòria. La diferència és que una direcció de memòria va al DIMM i un port va per el bus en eixe canal a l'espera de que el implicat escolte.

Els drivers interactuen en les direccions dels ports i han de saber la direcció del port. La placa base i el xipset solen utilitzar de la 0h a la FFh i els altres dispositius de la 100h a la FFFFh.