Magistrala danych to jedno z tych pojęć, które brzmią akademicko, ale opisują bardzo praktyczny mechanizm: sposób, w jaki procesor, pamięć, układy wejścia-wyjścia i urządzenia peryferyjne wymieniają informacje. Gdy komputer odczytuje plik z dysku, zapisuje dane w pamięci RAM albo przesyła je przez USB do telefonu, w tle pracują interfejsy złożone z linii sygnałowych, kontrolerów i protokołów. Ten przewodnik porządkuje podstawy: czym jest magistrala danych, czym różni się od magistrali adresowej i sterującej oraz dlaczego szerokość magistrali, taktowanie i integralność sygnału mają znaczenie także w projektowaniu płytek PCB.
1. Magistrala danych
1.1 Co to jest magistrala danych?
Słowo „magistrala” można potraktować jak techniczną wersję wspólnej drogi. W systemie komputerowym nie przewozi ona pasażerów, lecz bity danych między blokami układu: procesorem, pamięcią, kontrolerami, kartami rozszerzeń lub urządzeniami zewnętrznymi. W najprostszym ujęciu magistrala jest zestawem połączeń oraz reguł, które pozwalają kilku elementom korzystać ze wspólnego kanału komunikacyjnego.
Fizyczna realizacja magistrali zależy od technologii. W starszych komputerach były to często równoległe grupy ścieżek na płycie głównej. W układach scalonych są to metalowe połączenia wewnątrz struktury krzemowej. W nowoczesnych interfejsach zewnętrznych rolę magistrali mogą pełnić szybkie pary różnicowe, które przesyłają dane szeregowo, ale zgodnie z określonym protokołem.
Najważniejszym parametrem magistrali danych jest jej szerokość, czyli liczba bitów przesyłanych równolegle w jednym cyklu. Magistrala 8-bitowa przenosi jednorazowo 8 bitów, czyli jeden bajt. Magistrala 16-, 32- lub 64-bitowa może w pojedynczym cyklu przenieść odpowiednio większą porcję informacji, o ile pozostałe elementy systemu są w stanie ją obsłużyć.
Dane mogą być przesyłane równolegle albo szeregowo. W transmisji równoległej wiele bitów jedzie jednocześnie osobnymi liniami, co jest intuicyjne, ale trudniejsze przy wysokich częstotliwościach ze względu na przesłuchy, opóźnienia i konieczność dopasowania długości ścieżek. W transmisji szeregowej bity są wysyłane kolejno, zwykle bardzo szybko, często parami różnicowymi. Dlatego współczesne systemy łączą oba podejścia: wewnątrz układów stosują szerokie magistrale równoległe, a na zewnątrz coraz częściej szybkie łącza szeregowe.

Rysunek 1. Przykładowa magistrala danych.
W praktyce sama liczba bitów nie mówi jeszcze wszystkiego. O przepustowości decyduje również częstotliwość pracy, liczba transferów w cyklu zegara, narzut protokołu oraz opóźnienia. Magistrala 32-bitowa w wolnym systemie może być mniej wydajna niż węższy, ale szybciej taktowany interfejs szeregowy. Z tego powodu opis magistrali powinien obejmować zarówno szerokość, jak i sposób synchronizacji oraz zasady dostępu do medium.
W elektronice pojęcie magistrali pojawia się także poza komputerami PC. Mikrokontrolery komunikują się z czujnikami przez I2C lub SPI, pamięci DDR korzystają z własnych, precyzyjnie taktowanych magistral, a urządzenia przemysłowe mogą wymieniać dane przez CAN, RS-485 lub Ethernet. W każdym przypadku chodzi o to samo: uporządkowane przesyłanie informacji między układami.
Dla projektanta PCB magistrala nie jest abstrakcją. To konkretne ścieżki, impedancje, długości, odstępy, warstwy odniesienia i złącza. Im szybszy interfejs, tym bardziej projekt elektryczny zaczyna decydować o tym, czy dane dotrą bez błędów.
2. Zewnętrzna magistrala danych
Zewnętrzna magistrala danych łączy procesor lub kontroler systemowy z elementami poza jego strukturą: pamięcią, układami wejścia-wyjścia, kartami rozszerzeń albo urządzeniami podłączanymi przez porty. Historycznie była to widoczna część architektury komputera, prowadzona przez płytę główną i dostępna dla wielu układów jednocześnie. Dziś wiele takich połączeń zostało zintegrowanych w procesorze lub chipsecie, ale zasada pozostaje podobna.
Jeżeli system używa 8-bitowej magistrali danych, w jednym transferze może przesłać jeden bajt. Wraz z rozwojem komputerów szerokość magistrali rosła do 16, 32 i 64 bitów, bo większa liczba linii pozwalała przenieść większą porcję danych w tym samym czasie. To podobne do dodania pasów na drodze: przy tym samym rytmie ruchu więcej pojazdów może przejechać przez dany odcinek.
Płyta główna komputera jest miejscem, w którym takie połączenia są rozprowadzane między procesorem, pamięcią, układami pomocniczymi i złączami rozszerzeń. Sloty rozszerzeń pozwalają podłączyć dodatkowe karty, na przykład kontroler sieciowy, kartę graficzną albo interfejs pomiarowy. Współczesnym przykładem takiej koncepcji jest PCI Express, choć technicznie jest to szybkie łącze szeregowe punkt-punkt, a nie klasyczna równoległa magistrala współdzielona przez wiele urządzeń.
Karty rozszerzeń, moduły pamięci i urządzenia peryferyjne korzystają z określonych złączy oraz protokołów. Złącze nie jest tylko mechanicznym uchwytem; definiuje też liczbę linii, zasilanie, masy odniesienia, kolejność pinów i wymagania sygnałowe. Błędy w tej części projektu mogą skutkować niestabilną pracą, problemami z kompatybilnością albo całkowitym brakiem komunikacji.
Złącza na płycie głównej zapewniają dostęp do magistral i interfejsów dla urządzeń peryferyjnych, takich jak drukarki, skanery, modemy, klawiatury, myszy oraz nośniki zewnętrzne.

Rysunek 2. Przykładowe połączenia magistrali danych.
Aby zrozumieć działanie magistrali, można wyobrazić sobie każdą linię jako przełącznik przyjmujący jeden z dwóch stanów logicznych. W elektronice cyfrowej stan niski i stan wysoki są interpretowane jako 0 i 1, zgodnie z poziomami napięć ustalonymi dla danej rodziny układów. Odbiornik nie „widzi” tekstu ani liczb dziesiętnych; odczytuje sekwencję stanów logicznych, które dopiero procesor lub kontroler interpretuje jako instrukcje, adresy, dane pikseli, próbki audio albo bajty pliku.
Na wspólnej magistrali ważne jest również to, kto ma prawo nadawać w danym momencie. Jeżeli dwa układy próbowałyby jednocześnie wymusić różne stany na tych samych liniach, powstałby konflikt elektryczny. Dlatego system stosuje arbitraż, sygnały wyboru układu, bufory trójstanowe albo architekturę punkt-punkt, w której ryzyko konfliktu jest mniejsze.

Rysunek 3. Połączenia magistrali w systemie komputerowym.
3. Przewodnik po magistrali danych: magistrala adresowa
Magistrala danych odpowiada za przenoszenie wartości, ale system musi jeszcze wiedzieć, skąd te wartości odczytać albo gdzie je zapisać. Do tego służy magistrala adresowa. Procesor wystawia na niej adres komórki pamięci, rejestru urządzenia lub obszaru wejścia-wyjścia, a pozostałe układy rozpoznają, czy dany transfer jest skierowany do nich.
Adres również jest liczbą binarną. Jeżeli procesor chce odczytać bajt z pamięci, najpierw ustawia odpowiedni adres, następnie sygnalizuje operację odczytu, a pamięć wystawia dane na magistrali danych. Przy zapisie kolejność jest podobna: procesor wskazuje adres, wystawia dane i aktywuje sygnał zapisu.
Magistrala adresowa jest częścią architektury procesora, pamięci i płyty głównej; jej szerokość wpływa na maksymalną przestrzeń adresową systemu.

Rysunek 4. Przykład starszej magistrali ISA.
Szerokość magistrali adresowej opisuje się liczbą linii adresowych. Przy adresowaniu bajtowym magistrala 32-bitowa pozwala teoretycznie wskazać 232 bajtów, czyli 4 GiB przestrzeni adresowej. Magistrala 64-bitowa daje teoretycznie 264 adresów, czyli 16 EiB, choć rzeczywiste procesory i systemy operacyjne zwykle obsługują mniejszą, praktycznie ograniczoną przestrzeń fizyczną i wirtualną.
W dokumentacji układów można spotkać magistrale adresowe prowadzone jako osobne linie albo multipleksowane z liniami danych. Multipleksowanie zmniejsza liczbę wyprowadzeń układu, ale wymaga dodatkowych sygnałów i układów zatrzaskowych, które rozdzielają w czasie adres i dane.
Dobrym przykładem jest mikroprocesor Intel 8085. Ma on 16-bitową przestrzeń adresową, więc może zaadresować 216, czyli 65 536 komórek pamięci. Starsza część adresu jest wyprowadzona liniami A8-A15, natomiast młodsza część adresu A0-A7 jest multipleksowana z magistralą danych na liniach AD0-AD7. W pierwszej fazie cyklu te linie przenoszą adres, a w kolejnej dane.
4. Przewodnik po magistrali danych: magistrala sterująca

Poza danymi i adresami system potrzebuje jeszcze informacji o tym, jaka operacja ma zostać wykonana i w którym momencie. Tę rolę pełni magistrala sterująca. Obejmuje ona sygnały odczytu, zapisu, zegara, resetu, przerwań, potwierdzeń, wyboru urządzenia oraz inne linie zależne od konkretnej architektury.
Magistrala sterująca koordynuje pracę procesora, pamięci i urządzeń peryferyjnych. Procesor może za jej pomocą zasygnalizować, że chce odczytać dane z pamięci, zapisać wynik do rejestru urządzenia albo rozpocząć cykl wejścia-wyjścia. Urządzenia mogą z kolei zgłaszać gotowość, błąd, zajętość albo przerwanie wymagające obsługi.
Właśnie dzięki sygnałom sterującym wspólna magistrala nie zamienia się w chaotyczny zbiór przewodów. Linie danych i adresowe niosą wartości, ale to sterowanie określa ich znaczenie: czy aktualny stan linii danych jest daną do zapisu, wynikiem odczytu, kodem instrukcji, czy częścią cyklu arbitrażu.
Nie wszystkie sygnały sterujące mają ten sam kierunek. Część wychodzi z procesora, część wraca z urządzeń, a niektóre mogą być współdzielone lub obsługiwane przez kontroler magistrali. Dlatego w opisach technicznych spotyka się osobne oznaczenia dla sygnałów READ, WRITE, CLOCK, RESET, READY, IRQ, DMA request czy bus acknowledge.
Wiele procesorów używa podobnych kategorii sygnałów sterujących, choć ich nazwy, poziomy aktywne i dokładne przebiegi czasowe zależą od konkretnej rodziny układów.

IRQ, czyli żądanie przerwania, pozwala urządzeniu zgłosić procesorowi zdarzenie wymagające obsługi. Może to być odebrany bajt z portu szeregowego, zakończony transfer, naciśnięcie klawisza albo sygnał z kontrolera. Procesor przerywa wtedy bieżący tok programu, zapisuje kontekst i wykonuje procedurę obsługi przerwania, po czym wraca do poprzedniego zadania.
Bez magistrali sterującej procesor nie wiedziałby, czy ma odczytywać, zapisywać, czekać na gotowość urządzenia, czy oddać magistralę kontrolerowi DMA. W typowym cyklu odczytu procesor ustawia adres, aktywuje sygnał odczytu, czeka na poprawne dane i dopiero wtedy je próbuje. W cyklu zapisu wystawia adres oraz dane, a następnie aktywuje sygnał zapisu na czas wymagany przez pamięć lub urządzenie.
Układy DMA, czyli bezpośredniego dostępu do pamięci, pokazują, że magistralą nie zawsze steruje wyłącznie procesor. Kontroler DMA może przejąć transfer danych między urządzeniem a pamięcią, odciążając CPU. Nadal jednak potrzebuje arbitrażu i sygnałów sterujących, aby nie wejść w konflikt z innymi uczestnikami systemu.
5. Przewodnik po magistrali danych: inwersja magistrali danych (DBI)
W szybkich interfejsach równoległych problemem nie jest tylko liczba bitów, ale także to, ile linii zmienia stan jednocześnie. Każde przełączenie wymaga energii i powoduje zakłócenia, a wiele przełączeń naraz może pogorszyć integralność zasilania oraz sygnału. Z tego powodu w niektórych magistralach stosuje się technikę DBI, czyli Data Bus Inversion.
DBI polega na warunkowym odwróceniu przesyłanego słowa danych. Jeżeli w danym cyklu więcej niż połowa bitów miałaby zmienić stan, nadajnik wysyła odwrócony wzór i ustawia dodatkowy sygnał informujący odbiornik, że dane trzeba ponownie odwrócić. W efekcie zmniejsza się liczba jednoczesnych przełączeń, a wraz z nią pobór mocy dynamicznej i zakłócenia związane z szybkim przełączaniem linii.

Rysunek 5. Zasada ograniczania przełączeń na magistrali danych.
Przewodnik po magistrali danych: podsumowanie
Prosta, współdzielona magistrala dobrze tłumaczy podstawy komunikacji cyfrowej, ale ma ograniczenia. Wszystkie urządzenia podłączone bezpośrednio do takiej magistrali muszą respektować wspólne zasady czasowe i elektryczne. Jeżeli szybki procesor ma czekać na wolne urządzenie peryferyjne, wydajność całego systemu spada. Z tego powodu nowoczesne komputery używają hierarchii magistral, mostków, kontrolerów i buforów, które rozdzielają ruch o różnych wymaganiach.
W systemach wbudowanych prosta magistrala bywa nadal dobrym rozwiązaniem, bo ogranicza koszt, liczbę pinów i złożoność projektu. W komputerach ogólnego przeznaczenia oraz urządzeniach o wysokiej przepustowości stosuje się jednak bardziej wyspecjalizowane interfejsy: osobne kontrolery pamięci, szybkie łącza punkt-punkt, magistrale lokalne i porty zewnętrzne dopasowane do konkretnego typu urządzeń.

Rysunek 6. Lokalny kontroler magistrali.
Tradycyjny mikroprocesor ma wiele wyprowadzeń, które obsługują dane, adresy, sygnały sterujące, zasilanie i taktowanie.
W klasycznym układzie procesor wybiera adres w pamięci, ustala kierunek transferu i wymienia dane przez wspólny zestaw linii. Procesor i pamięć działają wtedy według precyzyjnych przebiegów czasowych opisanych w dokumentacji. Projektant musi zapewnić, aby opóźnienia propagacji, obciążenia pojemnościowe i poziomy napięć mieściły się w dopuszczalnych granicach.
Magistrala łącząca procesor i pamięć jest często nazywana magistralą systemową. Urządzenia rozszerzeń mogą komunikować się z procesorem i pamięcią przez odpowiednie kontrolery lub mostki, a w starszych architekturach także przez wspólną magistralę rozszerzeń. Standardowe złącza elektryczne ułatwiają rozbudowę, ale wprowadzają dodatkowe wymagania dotyczące sygnałów, zasilania i kompatybilności.
Różnica wydajności między procesorem, pamięcią i urządzeniami peryferyjnymi wymaga warstw pośrednich. Bufory, kontrolery DMA, mostki magistral oraz cache pomagają ograniczyć sytuacje, w których wolne urządzenie blokuje szybki rdzeń procesora. W miarę wzrostu liczby urządzeń coraz mniej praktyczne staje się podłączanie każdego z nich jako osobnej karty rozszerzeń.
Dlatego obok magistral wysokiej wydajności rozwijają się także interfejsy prostsze i tańsze, przeznaczone dla urządzeń o niewielkich wymaganiach. Mysz, klawiatura, czujnik temperatury czy prosty moduł komunikacyjny nie potrzebują takiej samej przepustowości jak pamięć operacyjna lub karta graficzna. USB, I2C, SPI, UART, CAN czy PCI Express różnią się zakresem zastosowań, ale wszystkie rozwiązują ten sam problem: jak niezawodnie przesłać dane między elementami systemu.