SATA och IDE

Om man vill förstå SCSI kan det vara bra att ha grundläggande kunskaper om ATA och SATA.

IDE/ATA

Innan vi börjar så bör det noteras att det inte finns något som heter "IDE/ATA", utan är ett namn som används i den här artikeln för att beskriva ATA-gränssnittet, som något felaktigt ofta kallas för IDE. Eftersom viss förvirrning skulle kunna uppstå om jag skrev ATA-hårddiskar så används en kombination av de båda namnen så de som är vana med IDE inte behöver stanna upp i läsningen och fundera på vad som menas. Om man ska vara riktigt petig så är IDE, eller Integrated Drive Electronics, enbart ett namn för att visa att ett styrkort sitter på enheten vilket inte var självklart för ett par årtionden sedan (det var inte självklart att datorn hade en hårddisk över huvud taget). Om man vill kan man kalla en SCSI-hårddisk för en IDE-hårddisk, men det är inte snällt för de som redan kallar ATA för IDE. Att ATA-hårddiskar kallas för IDE var för att de var de första IDE-hårddiskarna, alltså hårddiskar med styrkort direkt på enheten.

Standarden som ATA-enheter använder heter ATA/ATAPI. ATA står för AT Attachment och är hårddiskprotokollet och ATAPI står för ATA Packet Interface och är ett tillägg till ATA som möjliggör kommunikation med optiska enheter, eftersom ATA från början enbart var till för att kommunicera med hårddiskar. AT betyder inget särskilt utan härstammar från IBM:s dator PC/AT som var den första datorn med en ISA-buss, som ATA använde. Vissa brukar säga att AT står för Advanced Technology och det kanske det gör också, men T13 själva som utvecklar ATA/ATAPI-standarden skriver enbart AT Attachment i sina dokument. Den vanligaste standarden just nu är ATA/ATAPI-6, som fått marknadsföringsnamnet Ultra ATA/100 men som oftare är känd som enbart ATA100. I och med Ultra DMA 5 (UDMA5) tillåts överföringshastigheter upp till 100 MB per sekund. ATA/ATAPI-7 är under utveckling men har inte accepterats som en standard än. Den största skillnaden är en överföringshastighet på upp till 133 MB per sekund, men eftersom SATA kom något år efter så blev det inte så mycket av den.

ATA använder (Ultra) DMA för överföring av data. DMA är en bra idé. Innan DMA användes en metod som heter PIO, eller Programmed I/O, något som många av oss stött på i och med felaktigt konfigurerade IDE-kontrollerkort. PIO tar hjälp av processorn för att överföra data från hårddisken till minnet vilket är enormt slöseri med resurser. PIO ger en maximal överföringshastighet på max cirka 16 MB per sekund och vid överföring måste processorn arbeta väldigt mycket vilket inte är acceptabelt. Den enda direkta fördelen med PIO är att det inte krävs någon speciell drivrutin, så om inget annat fungerar kan man i alla fall använda PIO. Problemen med PIO löser DMA som står för Direct Memory Access och är är en metod att flytta data från hårddisken till datorns minne direkt utan att processorn måste arbeta så mycket. Först löstes detta genom att använda en extern DMA-kontroller, men en bättre och effektivare metod var att låta hårddisken och minnet kommunicera direkt utan vare sig extern DMA-kontroller eller processor. Detta kallas för first-party DMA (jämför med third-party DMA för extern DMA-kontroller) eller bus mastering. DMA hade från början inte högre överföringshastigheter än PIO utan det var först när Ultra DMA infördes som hastigheterna ökade ordentligt, detta genom att använda bättre kablar och skicka mer data per elektrisk signal. Ultra DMA kunde öka överföringshastigheter i olika nivåer upp till de 100 MB per sekund som används idag.

ATA/ATAPI-6 stödjer ett par olika funktioner, exempelvis CRC och SMART. CRC används för felkorrigering och SMART är ett litet program i hårddisken som undersöker om prestanda degrederas genom användning. Denna information används för att informera användaren om hårddisken håller på att gå sönder. AAM, eller Acoustic Management, är en funktion för att sänka ljudnivå på hårdvarunivå genom att ge sämre prestanda.

SATA

Serial ATA, eller SATA, är något nytt och häftigt. Egentligen är det inte vidare nytt eftersom det började diskuteras redan i början av 2000-talet, men relativt ATA och SCSI är det ett spädbarn i jämförelse. Serial ATA är en uppdatering av ATA för att kunna öka överföringshastigheterna mer än tidigare. Seriell ATA är fortfarande ATA, fast med tillräckligt många skillander från tidigare uppdateringar för att få ett eget namn.

Som namnet antyder är SATA ett seriellt gränssnitt till skillnad från vanlig ATA som är parallellt. På en fysisk nivå började det bli väldigt svårt att öka hastigheterna på "Parallell ATA" (PATA) utan att förlora integriteten hos de elektriska signalerna som skickas i kablarna för kommunikation mellan kontrollerkortet och hårddisken. Den ursprungliga 40-pinnars ATA-kabeln tillverkades för att klara överföringshastigheter på ca 5 MB per sekund. 80-pin kabeln som PATA använder nu för tiden är precis samma kabel som tidigare fast med 40 extra jordade kablar som ligger mellan de andra kablarna, för att minska interferens. För att inte ATA skulle halka efter och inte kunna utvecklas längre behövdes ett designskifte och SATA var svaret.

PATA har en 16 bitar bred buss och är parallell vilket innebär att 16 bitar data kan skickas samtidigt per klockcykel. Ultra DMA införde dock något som heter "double transition clocking" (fråga mig inte vad det heter på svenska) vilket praktiskt dubblade mängden data som skickades per klockcykel genom att använda både den stigande och fallande delen av den elektriska signalen för att representera data. 32 bitar data per överföring gör att PATA bara behöver arbeta i 25 MHz för överföringshastigheten av 100 MB per sekund (32 bitar är som vi vet 4 bytes). 25 MHz är i princip vad PATA maximalt klarar av utan att data blir korrupt. Principen med PATA är att skicka mycket data per klockcykel i långsamma hastigheter. Seriell ATA fungerar precis tvärt om.

SATA är som sagt seriell. Här sker inget samtidigt, utan SATA skickar enbart 1 bit per klockcykel. Å andra sidan så innebär detta att frekvensen kan vara mycket högre än för PATA eftersom ett seriellt gränssnitt inte har problem som att de olika "kanalerna" stör varandra. Den vanligaste Serial ATA-standarden SATA150 har en klockfrekvens på 1500 MHz. All data "komprimeras" dessutom något, vilket gör att trots bara 1 bit överförs per klockcykel blir överföringshastigheten 150 MB per sekund. Just för att SATA inte är parallell finns det tillräckligt med fördelar för att hastigheten ska kunna ökas ännu mer. En Serial ATA-standard med en överföringshastighet på 300 MB per sekund kommer snart standardiseras och en version på 600 MB per sekund är under utveckling.

En tydligt fördel med SATA är att ett seriellt gränssnitt behöver väldigt få kablar, SATA-kabeln är väldigt liten och består enbart av 4 kablar, jämfört med en typisk IDE-kabel som har 80 kablar. SATA-kabeln är liten, smidig och precis så som IDE eller SCSI-kablar inte är. Eftersom SATA är seriellt är det en enhet per SATA-kanal som gäller, vilket innebär att det inte finns master/slave-konfigurationer. Vill man installera en SATA-enhet ansluter man bara en SATA-kabel mellan kontrollerkortet och hårddisken, sen behöver man inte göra så mycket mer. SATA är dessutom hotswapbart till skillnad från PATA, vilket innebär att man kan ansluta eller koppla från en SATA-hårddisk när datorn är i användning. Detta förutsätter dock att datorns mjukvara stödjer det. Utöver överföringshastigheterna och skillnaderna ovan är det rätt liten skillnad mellan ATA och SATA. ATA och SATA talar samma språk, alltså de förstår samma kommandon och är alltså relativt kompatibla. Vill en hårddisktillverkare skapa en SATA-hårddisk är det bara att ta en ATA-ditto och byta det fysiska gränssnittet till SATA.