thumb|200px|Złącze ATA thumb|200px|upright|Taśmy ATA 80- i 40-żyłowe
ATA (, ) – 16-bitowy interfejs systemowy w komputerach klasy PC i Amiga przeznaczony do komunikacji z dyskami twardymi, zaproponowany w 1983 przez firmę Compaq i wprowadzony w ich komputerach, we współpracy z Western Digital, w 1986 pod nazwą IDE (ang. Integrated Drive Electronics). Nazwa ta pochodzi od innowacyjnego podejścia Western Digital do sterowania dyskiem twardym, czyli zintegrowania go z kontrolerem – wcześniej kontrolery dysków były umieszczane na kartach rozszerzeń montowanych w sloty magistrali ISA. Od 2003 (kiedy to wprowadzono Serial ATA) standard ten jest określany jako Parallel ATA, lub w skrócie PATA, aby uniknąć jego pomylenia ze standardem SATA.
Dyski twarde w technologii ATA/IDE w rozmiarze 5,25" i 3,5" zasilane są napięciem 5 V i 12 V poprzez złącze typu Molex, a w rozmiarze 2,5" napięciem 5 V poprzez pomniejszone złącze ATA z dodatkowymi 4 pinami.
Standard ATA nie jest już rozwijany w kierunku zwiększania szybkości transmisji. Początkowo stosowano oznaczenia ATA-1, ATA-2 itd., natomiast później były używane określenia związane z przepustowością interfejsu – ATA/33, ATA/66, ATA/100, ATA/133.
Wersje standardu ATA W ciągu ponad 2 dekad gdy standard ATA był stosowany, powstały następujące jego wersje: ATA - pierwotna wersja standardu wykorzystywana w komputerach IBM PC/AT pozwalająca na podłączanie wyłącznie dysków twardych przepustowość 8,3 MB/s 16-bitowa szyna danych max. 2 podłączone urządzenia (master i slave) ATA-2 - rozszerzenie ATA wprowadzone w 1994 roku przepustowość 16,6 MB/s sprzętowa kontrolna przepływu danych nowe tryby transmisji PIO i DMA nowa metoda adresowania sektorów - LBA ATA-3 - ulepszenie ATA-2, głównie bezpieczeństwa składowania danych, dodano zarządzanie energią oraz technologię S.M.A.R.T. ATA-4 - nowa specyfikacja wprowadzona w 1997 roku nowy tryb komunikacji Ultra DMA mode 2, maks. przepustowość 33,3 MB/s dodanie mechanizmu korekcji i detekcji błędów CRC, w razie wykrycia błędu zmniejszano prędkość przesyłu danych (podobny mechanizm stosowano w napędach CD-ROM) ATA-5 - kolejna wersja standardu z 1999 roku dwa nowe tryby DMA o przepustowościach maks. 44,4 oraz 66,6 MB/s nowy standard kabla połączeniowego - 40-żyłowy zastąpiono 80-żyłowym pozwalającym na eliminację błędów transmisji (złącza pozostały 40-pinowe)
Opis złączy Pin Oznaczenie Kierunek Opis Pin Oznaczenie Kierunek Opis1 -RESET → Sprzętowa inicjacja (RESET) dysku stałego 2 GND Masa3 DD7 ↔ Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym 4 DD8 ↔ Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym5 DD6 ↔ Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym 6 DD9 ↔ Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym7 DD5 ↔ Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym 8 DD10 ↔ Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym9 DD4 ↔ Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym 10 DD11 ↔ Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym11 DD3 ↔ Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym 12 DD12 ↔ Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym13 DD2 ↔ Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym 14 DD13 ↔ Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym15 DD1 ↔ Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym 16 DD14 ↔ Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym.17 DD0 ↔ Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym 18 DD15 ↔ Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym19 GND Masa 20 Pin nie wykorzystany21 DMARQ ← żądanie przesyłania w trybie DMA 22 GND Masa23 -DIOW → Przepisanie zawartości linii danych DDx do wybranego rejestru napędu 24 GND Masa25 -DIOR → Przepisanie zawartości wybranego rejestru napędu na line danych DDx 26 GND Masa27 IORDY ← Sygnał gotowości urządzenia wejścia/wyjścia tylko w trybie PIO 3,4 28 CSEL → wybór napędu master/slave za pomocą kabla (ustawia się to za pomocą zworki-z tyłu napędu)29 -DMACK → Sygnał przyjęcia żądania DMA przez hosta 30 GND Masa31 INTRQ ← żądanie obsługi przerwania(znaczenie tylko jeśli jest wykorzystywany system przerwań) 32 IOCS16 obecnie pin przestarzały – był zdefiniowany w specyfikacji ATA-233 DA1 → Linia adresowa używana do adresowania rejestrów napędu 34 -PDIAG ← Sygnalizuje zakończenie inicjacji drugiego dysku35 DA0 → Linia adresowa używana do adresowania rejestrów napędu 36 DA2 → Linia adresowa używana do adresowania rejestrów napędu37 -CS0 → Umożliwia komunikację z rejestrami komend 38 -CS1 → Umożliwia komunikację z rejestrami kontrolnymi39 -DASP ← Informuje pierwszy dysk fizyczny (MASTER) o obecności drugiego dysku (SLAVE) 40 GND Masa - oznacza negację pinów → pin ustawia host ← pin ustawia napęd ↔ pin dwukierunkowy: kierunek zależny od operacji
W 2,5" dyskach (z laptopów) stosowane są cztery dodatkowe piny: {| class="wikitable" ! Pin ! Funkcja ! Pin ! Funkcja |- | 41 || +5VDC (logic) || 42 || +5VDC (motor) |- | 43 || GND || 44 || Type (0==ATA)
Widok złącza PATA dysku 2,5", X oznacza pin nr 1
{| class="wikitable" | .....................x .. |- | ............ ......... ..
Opis rejestrów napędów ATA Ogólnie można wyróżnić dwa rodzaje napędów ze złączem ATA: dyski twarde – czyli urządzenia, które nie obsługują komend pakietowych napędy optyczne CD/DVD – czyli urządzenia, które obsługują komendy pakietowe
Rejestry dla urządzeń 1) {| class="wikitable" ! Adres ! ----- ! ----- ! ----- ! ----- ! Funkcje ! ----- |- | !CS0 || !CS1 || DA2 || DA1 || DA0 || Odczyt !DIOR || Zapis !DIOW |- | || || || || || Rejestry kontrolne || |- | N || A || N || x || x || Zwolniony || Nieużywany |- | N || A || A || N || x || Zwolniony || Nieużywany |- | N || A || A || A || N || Alternate Status || Device Control |- | N || A || A || A || A || Przestarzały || Nieużywany |- | || || || || || Rejestry komend || |- | A || N || N || N || N || Data || Data |- | A || N || N || N || A || Error || Features |- | A || N || N || A || N || Sector Count || Sector Count |- | A || N || N || A || A || LBA Low || LBA Low |- | A || N || A || N || N || LBA Mid || LBA Mid |- | A || N || A || N || A || LBA High || LBA High |- | A || N || A || A || N || Device Select || Device Select |- | A || N || A || A || A || Status || Command |- | A || A || x || x || x || Zwolniony || Nieużywany
Rejestry dla urządzeń 2) {| class="wikitable" ! Adres ! ----- ! ----- ! ----- ! ----- ! Funkcje ! ----- |- | !CS0 || !CS1 || DA2 || DA1 || DA0 || Odczyt !DIOR || Zapis !DIOW |- | || || || || || Rejestry kontrolne || |- | N || A || N || x || x || Zwolniony || Nieużywany |- | N || A || A || N || x || Zwolniony || Nieużywany |- | N || A || A || A || N || Alternate Status || Device Control |- | N || A || A || A || A || Przestarzały || Nieużywany |- | || || || || || Rejestry komend || |- | A || N || N || N || N || Data || Data |- | A || N || N || N || A || Error || Features |- | A || N || N || A || N || Interrupt Reason || Sector Count |- | A || N || N || A || A || * || * |- | A || N || A || N || N || Byte Count Low || Byte Count Low |- | A || N || A || N || A || Byte Count High || Byte Count High |- | A || N || A || A || N || Device Select || Device Select |- | A || N || A || A || A || Status || Command |- | A || A || x || x || x || Zwolniony || Nieużywany |} A = sygnał ustawiony (logiczna 1) N = sygnał zanegowany (logiczne 0) x = stan dowolny (0 lub 1)
Rejestrów o nazwach Zwolniony, Przestarzały, Nieużywany nie należy używać.
!CS0, !CS1 – oznacza negację pinów – to oznacza, że w rzeczywistości (na interfejs ATA) należy podawać wartości zanegowane z tabeli (tam gdzie A podawać N, tam gdzie N podawać A)
„*” rejestr używany przez dyski twarde (urządzenia nie obsługujące komend pakietowych) Rejestr nieużywany przez napędy CD/DVD (urządzenia obsługujące komendy pakietowe)
Rejestry kontrolne Alternate Status
ZASTOSOWANIE: odczyt podstawowych informacji o stanie urządzenia bez kasowania obsługi przerwania rejestr jest tylko do odczytu, a w czasie zapisu dane trafiają do Device Control kiedy bit BSY=1 wtedy inne bity z tego rejestru nie powinny być interpretowane, zawartość tego rejestru nie jest prawdziwa gdy urządzenie jest w trybie uśpienia odczyt tego rejestru nie spowoduje skasowania obsługi przerwania zawartość tego rejestru jest identyczna z zawartością rejestru Status
Device Control ZASTOSOWANIE: rejestr ten umożliwia wykonanie programowego resetu oraz włączenie obsługi przerwania rejestr jest tylko do zapisu, w czasie odczytu jest to Alternate Status rejestr powinien być zapisywany tylko gdy DMACK=0 zawartość tego rejestru będzie zinterpretowana przez napęd od razu po jego zapisaniu Bity 7 6 5 4 3 2 1 0 Opis HOB r r r r SRST nIEN 0 HOB (HighOrderByte)znaczenie tylko w przypadku dysków twardych – adres LBA 48-bitowy – gdy HOB=0 to napęd interpretuje młodszą część (0–23) adresu LBA 48-bitowego, gdy HOB=1 część starszą (24–47) r(6:3) (reserved) zarezerwowane SRST (SoftwareReSeT) reset programowy napędu nIEN (notInterruptENable) bit włącza przerwanie(gdy nIEN=0 i urządzenie jest wybrane) lub wyłącza przerwanie(gdy nIEN=1 lub urządzenie nie jest wybrane) Bit 0 zawsze powinien mieć wartość 0
Rejestry komend Data ZASTOSOWANIE: transfer danych(tylko w trybie PIO), dostęp do rejestrów rejestr ten służy do zapisu lub odczytu dostęp do rejestru powinien odbywać się w czasie przesyłania danych w trybie PIO, gdy DRQ=1 oraz BSY=0 oraz DMACK=0 rejestr 16-bitowy dostęp (odczyt/zapis) do rejestrów jest realizowany właśnie poprzez ten rejestr tylko w trybie PIO; ponieważ rejestry są 8-bitowe to dane jakie chcemy zapisać (odczytać) do tych rejestrów ustawiamy na części młodszej rejestru (Bity DD7–DD0), część starsza nie jest interpretowana; natomiast gdy transferujemy dane z napędu to musimy korzystać z całej szerokości rejestru (Bity DD15–DD0) – nie ma możliwości pracy w trybie 8-bitowym. Bity 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Opis DD15 DD14 DD13 DD12 DD11 DD10 DD9 DD8 DD7 DD6 DD5 DD4 DD3 DD2 DD1 DD0
Error ZASTOSOWANIE: określenie przyczyny błędu rejestr tylko do odczytu; gdy jest zapisywany – dane trafiają do rejestru Features zawartość rejestru jest poprawna gdy BSY=0 oraz DRQ=0 oraz ERR=1 lub SE=1, po włączeniu zasilania, wykonaniu sprzętowego lub programowego resetu, po wykonaniu komend EXECUTE DEVICE DIAGNOSTICS lub DEVICE RESET zawartość rejestru jest niewłaściwa w trybie uśpienia {| class="wikitable" ! Bity ! 7 ! 6 ! 5 ! 4 ! 3 ! 2 ! 1 ! 0 |- | Opis || # || # || # || # || # || ABRT || # || # |} # zawartość tych bitów zależy od wykonanej operacji(komendy) ABRT (ABoRT) ABRT=1 gdy nastąpiło anulowanie wykonania komendy (na skutek niewłaściwej komendy, niewłaściwego parametru w komendzie, błędu odczytu itd.)
Features ZASTOSOWANIE: zależnie od komendy rejestr jest tylko do zapisu, w czasie odczytu jest to Error rejestr powinien być zapisywany tylko gdy BSY=0 oraz DRQ=0 oraz DMACK=0 zawartość tego rejestru staje się parametrem komendy po zapisaniu rejestru Command {| class="wikitable" ! Bity ! 7 ! 6 ! 5 ! 4 ! 3 ! 2 ! 1 ! 0 |- | Opis || # || # || # || # || # || # || # || # |} # zawartość tych bitów zależy od komendy
Sector Count / Interrupt Reason ZASTOSOWANIE: zależnie od komendy rejestr jest do zapisu lub odczytu rejestr powinien być zapisywany tylko gdy BSY=0 oraz DRQ=0 oraz DMACK=0, zawartość rejestru jest niepoprawna gdy urządzenie jest w trybie uśpienia zawartość tego rejestru staje się parametrem komendy po zapisaniu rejestru Command w przypadku dysku twardego jest to rejestr Sector Count, w przypadku napędu CD/DVD jest to Interrupt Reason w czasie odczytu i Sector Count w czasie zapisu (patrz tabela) {| class="wikitable" ! Bity ! 7 ! 6 ! 5 ! 4 ! 3 ! 2 ! 1 ! 0 |-