CDC BR3B5 Pär Emanuelsson Vad är nu detta för något?? Jo: LYSATORs gamla skivminnen! De är stora, gula och fina och drar 39A vid start (nä, inget skämt...). I alla fall så har vi planerat att använda dem också! Vi har nämligen ett antal gigabyte i diskpackar som står och samlar damm och de kan ju hellre få samla nånting annat. Det första vi ska göra är en anpassning till SCSI-bussen. Det är en populär standard för kommunikation mot yttre enheter, som bandstation, skivminne etc. Vår blivande dator Awke (CD3200) har t.ex. en sådan buss. Det finns färdiga kontrollerkretsar att köpa och arbetsinsatsen bör inte bli speciellt stor. Jag tänkte här beskriva hur vi kan gå till väga. Kommunikation För det första kan man konstatera att de inte är så uråldriga som de verkar. Snittet mot skivminnena är en föregångare till SMD-bussen, som faktiskt utvecklades av CDC. SMD-bussen används när högre prestanda önskas. Faktum är att bussen faktiskt är mer avancerad än standard SMD, men det har man nog bara nytta av vid felsökning (se annan artikel). Standard SMD! Jaha, då kanske det finns färdiga kretsar för det? Jodå. Jag har letat, men än så länge bara hittat en, tillverkad av Western Digital, som heter WD1050. Den verkar dock passa utmärkt för ändamålet. Konfigurationen blir lite översiktligt: fig 2. Blockschema över kommunikationen mellan SCSI-porten och WD1050 All kommunikation med kretsen sker på databussen. Man bör också ha en RAM-buffert med plats för minst en sektor för att förbättra prestanda. Att polla en diskkontroller för varje byte är mycket kostsamt och därför har WD1050 möjlighet att lägga en sektor från disken direkt i bufferten och sedan signalera till SCSI-kapseln. Denna kan därefter överföra innehållet, t.ex. med DMA. Lagringsformat Det kanske kan vara intressant att se hur WD1050 lagrar information på diskarna. För det första kan ju alla se att diskpackarna är uppbyggda med 12 st skivor, 14" stora, som snurrar med 3600 varv/min. Nu används inte översta och understa skivan (skydd) vilket ger 20 st skivsidor som man kan tänka sig att lagra information på. För att styrlogiken ska kunna hålla reda på var på skivan huvudena befinner sig har en skivsida ett fabriksskrivet antal spår. Genom att ett av huvudena befinner sig där kan logiken kontrollera att alla de andra ligger rakt över avsett spår. Även lite synkpulser och sånt tas från det spåret. Det ger alltså 19 st huvuden kvar att använda. De ligger-över varsitt spår (track) och läser data. Genom att skriva i ett register i skivminnet kan man välja vilket av huvudena man vill läsa ifrån. Det går alltså mycket snabbt att växla huvud och man kan se det som om man läser från utsidan av en cylinder. En cylinder består alltså av 19 spår och det finns 411 cylindrar totalt. Nu används dock bara 404 av dessa och resten är reserv. Det kan nämligen t.ex. hända att ett av de förut nämnda synkspåren pajar och då blir hela den cylindern oanvändbar. Logiken kan ju då inte placera huvudena rätt på den cylindern. Det finns då en möjlighet att man (antingen i hårdvara eller mjukvara) låter en av reservcylindrama ta den trasigas plats. Det kanske nu är dags att avslöja det magiska talet som alla väntar på: 13440. Det är alltså 13440 bytes på varje spår. En snabb matematisk kalkyl ger vid handen att den totala lagringskapaciteten borde vara 103.165.440 bytes/packe, men det kommer man inte upp i av orsaker som snart blir uppenbara. Det är nämligen så att man vill dela upp varje spår i ett antal sektorer, där varje sektors storlek är en jämn tvåpotens. I alla fall vill WD1050 det... Nå, förutom data så måste det finnas en massa kontrollinformation runt varje sektor. Kontrollinformationen genereras när man formaterar skivan: (figur över hur datat sparas i varje spår (history-red. anmärkning)) Som synes är det inte så mycket, bara 59 bytes extra per sektor (CYL = 2 bytes). En del av informationen kan tyckas onödig, t.ex. vilket huvud och cylinder sektorn ligger på, det vet man ju redan! Men det är förstås för felkontroll. Det inses också att ju mindre sektorer man har, desto mer "spill" blir det. I extremfallet 128 byte data (71 sektorer) blir det 33% spill och för 1024 byte data (12 sektorer) 9O. Det verkar alltså klart att det är 1024 bytes som är den perfekta storleken. Genom lite aritmetik på högskolenivå kan man sedan komma fram till lagringskapaciteten 94*10"6 bytes (92 Mb), vilket inte är alltför illa. Jag hoppas nu att du har blivit intresserad av det här projektet och vill hjälpa till. Du är mer än välkommen! Vi har nämligen inte kommit så mycket längre än så här!