Bus — kompyuter komponentlari orasida ma’lumot, manzil va boshqaruv signallarini uzatadigan umumiy aloqa tizimi. Bus fizik signal yo‘llari, protocol va controllerlardan tashkil topadi.
Protsessor, xotira, storage, network adapter va boshqa qurilmalar bus orqali bog‘lanadi.
Tarixiy tizimlarda ko‘p qurilma bitta parallel busni bo‘lishgan. Zamonaviy kompyuterlarda esa ko‘pincha point-to-point serial linklar ishlatiladi, lekin umumiy atama sifatida “bus” saqlanib qolgan.
Data bus
Data bus haqiqiy ma’lumot bitlarini tashiydi.
Masalan:
- CPUdan RAMga yozilayotgan qiymat;
- disk controllerdan xotiraga kelayotgan blok;
- qurilma registeridan o‘qilgan holat.
Data bus width bir uzatishda nechta bit tashilishini ko‘rsatadi.
Address bus
Address bus qaysi memory location yoki qurilma registeri tanlanganini bildiradi.
Address width nazariy address space hajmiga ta’sir qiladi.
Masalan, 32-bit address:
2^32 = 4 GiB
manzil kombinatsiyasini ifodalaydi.
Real platformada barcha addresslar RAM uchun ishlatilmaydi; device va rezerv hududlar ham mavjud.
Control bus
Control signallar operatsiya turini boshqaradi.
Misollar:
Data va addressning ma’nosi control signal bilan aniqlanadi.
Parallel bus
Parallel bus bir nechta bitni alohida signal chiziqlarida bir vaqtda uzatadi.
Misollar:
- eski PCI;
- parallel ATA;
- memory bus;
- front-side bus tarixan.
Frequency oshganda signal chiziqlari orasidagi timing farqi va interference muammo bo‘ladi.
Serial bus
Serial bus bitlarni kamroq signal jufti orqali yuqori tezlikda ketma-ket uzatadi.
Misollar:
Yuqori tezlikli serial linklar differential signaling va encodingdan foydalanadi.
Shared bus
Bir nechta qurilma bir xil busni bo‘lishadi.
Bir vaqtda qaysi master uzatishi arbitration orqali belgilanadi.
Ko‘p qurilma band bo‘lsa contention va bandwidth sharing yuz beradi.
Point-to-point link
PCIe kabi tizimda har endpoint yoki switch port o‘rtasida alohida link mavjud.
Bu shared electrical bus emas, ammo software nuqtai nazaridan PCI bus topologiyasi sifatida ko‘rinishi mumkin.
Point-to-point link yuqori frequency va parallel trafikni yaxshi qo‘llaydi.
Bus master
Bus master transferni boshlash huquqiga ega komponent.
CPU, DMA controller yoki PCIe device memoryga murojaat qilishi mumkin.
Bus slave yoki target so‘rovga javob beradi.
Zamonaviy interconnect atamalarida requester va completer ishlatilishi mumkin.
Arbitration
Bir nechta master busni so‘rasa, arbiter navbatni belgilaydi.
Siyosatlar:
- fixed priority;
- round-robin;
- time slice;
- quality of service;
- deadline.
Yuqori priority qurilma past priority qurilmani uzoq kutdirishi mumkin.
Clocked bus
Synchronous bus umumiy clock bo‘yicha ishlaydi.
Signal ma’lum clock edge’da o‘qiladi.
Frequency va timing margin barcha qurilma uchun mos bo‘lishi kerak.
Asynchronous bus
Umumiy clockga tayanmaydi.
Request va acknowledge handshake orqali transfer yakunlanadi.
Turli tezlikdagi qurilmalar uchun qulay, ammo har transferda qo‘shimcha protocol overhead bo‘lishi mumkin.
Bandwidth
Nazariy bandwidth:
transfer rate × har transferdagi data hajmi
Masalan, 64-bit bus va 1 milliard transfer/soniya:
8 bayt × 1 GT/s = 8 GB/s
Encoding, protocol overhead, idle cycle va direction sabab amaliy bandwidth pastroq.
Latency
Bandwidth ko‘p data hajmini, latency esa bitta so‘rovning qancha vaqtda tugashini bildiradi.
Yuqori bandwidth bus ham arbitration, bridge va queue sabab yuqori latencyga ega bo‘lishi mumkin.
Front-side bus
Eski kompyuterlarda CPU northbridge orqali memory va boshqa qurilmalarga front-side bus bilan ulangan.
Zamonaviy tizimlarda memory controller CPU ichiga ko‘chgan va point-to-point interconnectlar ishlatiladi.
Memory bus
CPU memory controller bilan DRAM modullari orasidagi aloqa.
Xususiyatlari:
- channel;
- width;
- data rate;
- command/address;
- rank;
- timing;
- ECC.
Dual-channel ikki mustaqil channel orqali aggregate bandwidthni oshiradi.
PCI Express
PCIe lane full-duplex differential pairlardan iborat.
Link width:
- x1;
- x4;
- x8;
- x16.
Har avlod transfer rate va encoding samaradorligini oshiradi.
PCIe switch bir nechta endpointni bog‘laydi.
USB
USB host-controlled serial bus.
Host qurilmalarni enumeratsiya qiladi va transferlarni schedule qiladi.
Transfer turlari:
- control;
- bulk;
- interrupt;
- isochronous.
USB hub ko‘p qurilmani bitta host controllerga ulaydi.
SATA
SATA storage qurilma va host controller orasidagi point-to-point serial interfeys.
Eski parallel ATA shared cable modelini almashtirgan.
SATA protocol storage commandlarni tashiydi.
I2C
I2C ikki signal chizig‘idan foydalanadi:
- clock;
- data.
Bir busda bir nechta controller va target bo‘lishi mumkin.
Address orqali device tanlanadi.
Sensor va embedded qurilmalarda keng qo‘llanadi.
SPI
SPI odatda:
- clock;
- controller output;
- controller input;
- chip select
signallaridan foydalanadi.
Full-duplex va tez, ammo har target uchun alohida chip select talab qilishi mumkin.
DMA
Direct Memory Access qurilmaga CPU har baytni ko‘chirmasdan RAM bilan data almashish imkonini beradi.
Device bus master bo‘lib, memoryga o‘qish/yozish so‘rovi yuboradi.
IOMMU DMA manzillarni nazorat qiladi.
Bus error
Noto‘g‘ri address, alignment yoki device response yo‘qligi bus errorga olib kelishi mumkin.
Unix tizimda ayrim holatda process SIGBUS signal oladi.
Hardware error logda transaction failure ko‘rinishi mumkin.
Diagnostika
Bus muammosida:
- link width;
- negotiated speed;
- error counter;
- signal integrity;
- device enumeration;
- lane sharing;
- power;
- firmware;
- driver;
- IOMMU;
- bandwidth;
- latency
tekshiriladi.
PCIe x16 karta x1 rejimda ishlasa, slot, lane sharing yoki signal muammosi bo‘lishi mumkin.
Bog‘liq tushunchalar
Data bus, Address bus, Control bus, PCI Express, USB, SATA, I2C, SPI, DMA, Bandwidth, Latency