Standarder

1979 skapade Shugart Associates ett gränssnitt som de kallade för SASI, Shugart Associates Systems Interface. SASI skulle senare byta namn till SCSI och bli en ganska omfattande standard. Det finns tre stycken SCSI-standarder, med de kliniska namnen SCSI-1, SCSI-2 och SCSI-3, som underhålls av T10. SCSI-1 och SCSI-2 är väldigt små. SCSI-3 är för att använda den rätta tekniska termen gigantisk och täcker sådant som man absolut inte tänker på när man tänker på SCSI (ni förstår vad jag menar). För att krångla till det lite finns det flera olika varianter av samma standard som stödjer olika funktioner och överföringslägen. Om ni inte förstår så mycket på det här sidan behöver ni inte vara ledsna eftersom det dels inte är livsviktigt och ni förmodligen inte är ensamma. Först lite termer.

Wide och Narrow

En SCSI-buss kan vara Wide eller Narrow, alltså antingen 16 bitar eller 8 bitar bred. I början var alla SCSI-enheter Narrow och eftersom det var det enda valet så är Narrow mer ett inofficiellt namn. När SCSI-2 kom infördes termen Wide SCSI för att visa att bredden på bussen ökat till 16 bitar. Nu för tiden är Wide den vanligaste bredden, Narrow försvinner mer och mer eftersom den dels inte klarar av lika höga hastigheter och dels inte klarar av lika många enheter (8 enheter mot 16 enheter). SCSI-2 införde 32 bitar bredd med det informella namnet "very wide". På grund av priset försvann detta helt i SPI-3.

SCSI-1 och SCSI-2

SCSI-1 utvecklades från SASI och utnämndes av ANSI som en standard 1986. SCSI-1 definierade flera aspekter av vad som gäller för standarden, exempelvis hur lång kablarna får vara, vilken signalering som ska användas, vilka kommandon som finns och olika överföringslägen. SCSI-1 hade en 8 bitar bred buss (Narrow) med en maximal överföringshastighet av 5 MB per sekund. SCSI-1 använde uteslutande SE-signalering. SCSI-1 är urmodig och används inte längre. Det är väl fel att säga att SCSI-1 var en onödig standard, men i dagsläget är den tillräckligt gammal för att man inte behöver veta så mycket om den. Om ni läst om SCSI tidigare har ni kanske hört talas om Wide SCSI, Ultra SCSI och så vidare, men dessa har inget med SCSI-1 att göra som vi kommer att se snart.

SCSI-2 utvecklades som mest från 1985 till 1990 och blev en standard 1994. SCSI-2 har många förbättringar jämfört med SCSI-1. SCSI-2 introducerade Fast SCSI och Wide SCSI. Fast SCSI ökade överföringshastigheten till ca 10 MB per sekund och Wide SCSI ökade denna ytterliggare till 20 MB per sekund genom att göra bussen dubbelt så bred, från 8 bitar (kallas ibland Narrow SCSI) till 16 bitar. SCSI-2 stödjer upp till 16 enheter till skillnad från SCSI-1 som bara stödjer 8. Andra förbättringar var stöd för HVD och Command Queuing (mer om det senare). SCSI-2 har inget med Ultra2 SCSI att göra utan är också en sådan där gammal standard som man väldigt sällan kommer att träffa på. Det intressanta är SCSI-3 och SCSI-1 och SCSI-2 nämndes mest för att få komma till just SCSI-3. Innan dess en liten tabell över de äldre standarderna.

Namn

Standard

Hastighet

Signalering

Kabel

SCSI

SCSI-1

5 MB/s

SE

50-pin

Wide SCSI

SCSI-2

10 MB/s

SE/HVD

68-pin

Fast SCSI

SCSI-2

10 MB/s

SE/HVD

50-pin

Fast Wide SCSI

SCSI-2

20 MB/s

SE/HVD

68-pin

SPI

SCSI-1 och SCSI-2 var båda parallella gränssnitt. När arbetet på SCSI-3 påbörjades insåg man tidigt att man kunde använda SCSI till mycket mer än parallell överföring av data genom flatkablar. För att skilja på mer traditionell "vanlig SCSI" och nyare SCSI infördes namnet SPI, som står för SCSI-3 Parallel Interface (-3 försvann från namnet senare). Det är alltså SPI man pratar om när man menar "vanlig SCSI-3". Det är SPI som är intressant och vanligt när man talar om SCSI och hårddiskar och det vi kommer att koncentrera oss på. SCSI-3 är en väldigt bred standard som omfattar mycket mer än SPI. Mer om detta senare.

SPI (eller "SPI-1") är inte så konstigt som det låter utan är vanligen känt under namnen Ultra SCSI eller Ultra Wide SCSI. Kom ihåg att SPI står, eller stod rättare sagt eftersom –3 försvann efter ett tag, för SCSI-3 Parallel Interface, så Ultra SCSI har inget med SCSI-1 att göra. Vi kommer tillbaka till det här senare, men först ska vi prata om SPI-2, eftersom jag antar att det här med SPI är lite rörigt. SPI-2 är även känt som Ultra2 SCSI eller Wide Ultra2 SCSI. Vi hoppar till SPI-3, som ibland är känd som Ultra3 SCSI, men ännu oftare Ultra160. SPI-x är bara de egentliga namnen för alla marknadsföringstermer som används för att definiera olika funktioner från SPI-x. Att jag nämner detta nu är för att uteslutande alla som kan lite om SCSI hört talas om Ultra160, Ultra3 och så vidare utan att veta att dessa egentligen är samma sak och från samma generation fast den ena kanske stödjer en funktion den andra inte stödjer och vice versa. "Funktioner" kan i detta fallet vara allt från felkorrigering till hastigheter. De som utvecklade SCSI-3-standarden bestämde helt enkelt funktionaliteten hos SPI-3, olika tillverkare skapade sedan hårdvara med stöd för vissa av alla tillgängliga funktioner och gav det ett namn för att visa vilken "substandard" den stödjer.

SPI-1 introducerade Fast-20 (detta kan ses som en funktion) för överföringshastigheter på 20 MB per sekund för en Narrow buss och 40 MB per sekund för Wide. Andra nyheter var nya kablar som påminner lite om de 68-pin kablar som SCSI-enheter oftast använder idag. "Substandarder" inom SPI-1 inkluderar "Ultra SCSI" och "Ultra Wide SCSI". SPI-2 standardiserades 1999 och placerade allting om parallell SCSI i ett och samma dokument. Rent tekniskt så introducerade SPI-2 Fast-40 vilket ökar överföringshastigheterna till 40 MB per sekund (för Narrow, 8 bitar bredd) och 80 MB per sekund (för Wide, 16 bitar bredd). SPI-2 introducerade även LVD-signalering, nya kabelanslutningar på enheterna och enheter som stödjer både LVD och SE.

SPI-3 är ungefär vart vi är nu och är även känt som Ultra160 eller Ultra3 SCSI. SPI-3 introducerades 1999 och blev en standard ungefär 2001. SPI-3 har fem huvudfunktioner, bland annat Fast-80, CRC och Domain Validation. Överföringshastigheter ökade till 160 MB per sekund för en Wide buss i och med Fast-80. SPI-3 tog även bort en hel del gamla onödiga tekniker från standarden som HVD och busbreddar på 8 bitar och 32 bitar. Narrow SCSI togs egentligen inte bort från standarden, men eftersom den inte klarar av de högre överföringshastigheterna brukar de inte användas längre. Marknadsföringstermen Ultra3 SCSI infördes. Dessvärre så tillät SCSI Trade Organization, som har hand om marknadsföringstermerna/"substandarderna" vi diskuterat, att bara om en enhet inkluderade en av någon av de fem huvudfunktionerna fick den kallas för Ultra3 SCSI, vilket innebär att två Ultra3 SCSI-enheter kunde ha olika funktionalitet eller till och med olika hastigheter, eftersom Fast-80 var en av huvudfunktionerna. Detta förstörde ju hela principen med "substandarder". Hårdvarutillverkare gillade inte detta så de införde termerna Ultra160 och Ultra 160+. Ultra160+ måste stödja alla fem funktionerna. Ultra160 måste stödja de tre funktionerna jag nämnde ovan.

Sen har vi SPI-4, som brukar kallas Ultra320. SPI-4 inkluderar Fast-160 vilket ger en överföringshastighet på 320 MB per sekund, samt en hel del funktioner som är till för att minska overhead. Alla som programmerar vet nog vad overhead är. Om ni inte vet vad det är så kan ni tänka er overhead som lite extra arbete eller längre tid som krävs för att göra något som i vissa situationer kan ge bra prestanda. Låt säga att ni står i en okänd by och ska gå till den lokala pizzerian för att köpa en kebabpizza. För att gå till pizzerian kan ni antingen börja gå på en gång och eventuellt komma fram via en lång omväg, eller så kan ni stanna upp, plocka fram en karta och kolla hur du bäst kommer till platsen. Först då börjar du gå. I de flesta situationer kommer du ta dig till pizzerian på kortast tid om du plockar fram kartan, men i situationer där du står precis utanför pizzerian så kommer du slösa en enorm tid på att först försöka lista ut hur du ska gå dit. Detta är overhead.

Kommer ni ihåg delen om snabba hårddiskar och hur accesstider delas in i söktider, latens och "command overhead"? Command overhead är ett litet problem som SCSI haft tidigare. SCSI är ett "intelligent" gränssnitt som kan ta flera kommandon, som att läsa eller skriva från en hårddisk och sedan köra dessa i optimal ordning (jämför med att plocka fram kartan för att gå till pizzerian istället för att bara gå). Detta kallas Command Queing och är ganska aktuellt eftersom många SATA-hårddiskar nu fått stöd för detta i och med NCQ. I vilket fall så kan SCSI (och andra hårddiskar med CQ), som är till för att vara intelligent och ge bra prestanda, ta lite egna initiativ när den upptäcker att operativsystemet eller användaren försöker använda hårddisken på något uppenbart korkat vis. Eftersom hårddisken och SCSI-kontrollern vet väldigt mycket om sådant som hårddiskar och SCSI-kontrollerkort gör är det oftast en bra idé att låta den få sin vilja igenom. Detta är oftast den bästa idén, men inte alltid! När SCSI-hårddisken försöker göra något intelligent bildas det ofta lite overhead. Istället för att bara göra som operativsystemet vill som en dummare IDE/ATA-hårddisk stannar SCSI-hårddisken upp och funderar hur den smartast kan göra arbetet och sedan göra det. Om SCSI-hårddisken ska göra något väldigt enkelt som tar väldigt kort tid kan detta vara ett problem, arbetet skulle gå snabbare om den bara gjorde det med råstyrka istället för att tänka efter hur problemet kan lösas med finess. SPI-4 med Ultra320 i spetsen har därför flera funktioner som är till för att minimera just overhead.

Namn

Standard

Hastighet

Signalering

Kabel

Ultra SCSI

SPI

20 MB/s

SE/HVD

50-pin

Wide Ultra SCSI

SPI

40 MB/s

SE/HVD

68-pin

Ultra2 SCSI

SPI-2

40 MB/s

LVD/HVD

50-pin

Wide Ultra2 SCSI

SPI-2

80 MB/s

LVD/HVD

68-pin

Ultra3 SCSI

SPI-3

160 MB/s

LVD

68-pin

Ultra160 SCSI

SPI-3

160 MB/s

LVD

68-pin

Ultra320 SCSI

SPI-4

320 MB/s

LVD

68-pin

Ultra640 SCSI

SPI-5

640 MB/s

LVD

68-pin

Ultra640 finns inte än, men snart. Notera även hur enhetlig signaleringen och kablarna blivit bland de senaste standarderna. SCSI är inte så himla rörigt i dagsläget, nu finns det inte lika många kablar att välja mellan. Alltid något.

En tabell med överföringshastigheter.

Namn

"Standard"

Narrow

Wide

Fast

SCSI-2

10 MB/s

20 MB/s

Fast-20

Ultra

20 MB/s

40 MB/s

Fast-40

Ultra2

40 MB/s

80 MB/s

Fast-80

Ultra160

-

160 MB/s

Fast-160

Ultra320

-

320 MB/s

Mer SCSI-3

Som nämnt tidigare så var SCSI-1 och SCSI-2 relativt små standarder som inte omfattade så många olika tekniska tillämpningar. När arbetet på SCSI-3 påbörjades med alla nya idéer om hur SCSI kunde förbättras insåg man snabbt att det var för mycket nytt för att kunna skapa enbart en standard, därför delade man upp SCSI-3 så flera olika standarder kunde utvecklas samtidigt. Fördelen med detta var att vanligare standarder som SPI kunde utvecklas oberoende av lite mer obskyra standarder som SPB (eller någon annan rolig bokstavskombination som ni inte behöver komma ihåg) och utvecklingsarbetet blev inte lika klumpigt. En standard är ju bara en standard om den accepterats som en sådan och standardiseringsprocessen tar tid. Som jämförelse kan nämnas att SCSI-2 var åtta år gammalt när arbetet på SCSI-3 påbörjades 1993 och inte standardiserades förrän ett år senare. Det var då i utvecklingsgruppens intresse att vara oberoende någon svag länk med lång utvecklingstid vilket gjorde att snabbt utvecklade standarder kunde fortsätta att vara det. Ingen ville spela fotboll med den där tjocka killen eftersom han var en last och gjorde så att divorna med SPI i spetsen inte kunde utvecklas i lagom snabb takt.

För att organisera alla olika standarder finns det en struktur som brukar kallas SCSI-3-arkitekturen och beskrivs faktiskt i ett eget dokument som heter SAM, eller SCSI-3 Architecture Model. SAM bestämmer också vad alla SCSI-3 standarder måste klara av och gällande terminologi. SCSI-3 standarderna brukar delas in i tre kategorier; kommandon (commands), protokoll (protocols) och fysiska lager (physcal layers eller interconnects). Kommandon är själva språket SCSI-enheter förstår. Protokoll är ungefär som TCP eller SMTP och beskriver hur enheter kommunicerar med varandra. Fysiska lager beskriver hårdvarudelen för olika gränssnitt, exempelvis signalering eller hur data överförs på en fysisk nivå. Vi kan ta SPI som exempel. SPI är ett fysiskt lager. Själva protokollet som SPI använder heter SIP (SCSI-3 Interlaced Protocol) men brukar räknas till SPI i och med att det lades till i SPI-2 dokumenten. Protokoll och fysiska lager är ofta väldigt nära bundna till varandra.

Detta kan vara bra att veta, eftersom SCSI-3 inte bara är hårddiskar anslutna till kontrollerkort med kablar med roligt utseende. FireWire använder exempelvis vissa element av SCSI-3, i det här specifika fallet SPB som är ett seriellt protokoll som precis som SPI finns i olika versioner. Fibre Channel är inte direkt SCSI, men kan användas till vissa SCSI-enheter. Fibre Channel använder "nätverkskabel" för kommunikation och används mest i stora lagringsnätverk eller superdatorer där man behöver enorma hastigheter mellan enheterna. Som en intressant detalj kan nämnas att kablarna i en Fibre Channel-konfiguration kan vara upp till en mil, vilket får 12 meter för LVD SCSI och dryga halvmetern för IDE/ATA att framstå som ganska mesiga. MP3-spelare brukar ofta förstå SCSI-kommandon vilket förklarar varför många MP3-spelare som kräver drivrutiner heter någonting med SCSI när drivrutinen väl är installerad. Programmerare brukar ofta föredra att använda SCSI-språket när de kommunicerar med enheter. Många av er som använder program som Nero Burning Rom eller Exact Audio Copy har förmodligen varit tvunget att installera ett ASPI-lager. Detta kan användas för att prata SCSI med ATAPI-enheter som CD-brännare. Undertecknad har själv programmerat en IDE-CD-enhet på låg nivå med ett ASPI-lager och SCSI-kommandon, men på grund av bristfällig kunskap och dumdristig nyfikenhet så slutade det i att CD-brännaren försökte läsa från en skiva som inte fanns. Jag har aldrig sett en sådan blå skärm i hela mitt liv som efter den incidenten.