Bank Switching. Att nå multipla adressrymder. Av: Drazen Mijatovic

Relevanta dokument
Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Hantering av hazards i pipelines

Emil Kristiansson Kurs: EDT621 Delmoment: Rapport. En introduktion till Smart cache

Introduktion till Arduino

Digital- och datorteknik

Introduktion till Arduino

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Multi-ported cache En rapport om några lösningar till att få flera minnesaccesser simultant.

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15.

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Hyper-Threading i Intelprocessorer

Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet.

Datorarkitekturer med Operativsystem

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

Utvecklingen från en 8 bitars till en 16 bitars mikroprocessor

Rapport (1,5 HP) Lunds Universitet HT15

Föreläsningsanteckningar till Konstruktionsmetoder

DEC Alpha instruktions Arkitektur

Cacheminne i en Intel Core 2 Duo-processor

Arm Cortex-A8 Pipeline

Pipelining i Intel Pentium II

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

Datorsystemteknik Föreläsning 7DAVA14

ALU:n ska anslutas hur då?

Övning2 Datorteknik, HH vt12 - Programmering

Schemaläggnings metoderna AMP & SMP i en Multiprocessor

HF0010. Introduktionskurs i datateknik 1,5 hp

32 Bitar Blir 64 Sammanfattning

Tentamen den 18 mars svar Datorteknik, EIT070

LV6 LV7. Aktivera Kursens mål:

Polling (cyklisk avfrågning) Avbrott

Multithreading in Intel Pentium 4 - Hyperthreading

Cacheminne i en AMD Opteron Processor

0.1. INTRODUKTION Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

SIMD i Intel s P5- baserade Pentium MMX

Labyrintspelet EDI021 Grupp 5

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

TETRIS. LTH, Campus Helsingborg EITA15 Digitala System

Lösningsförslag till Tenta i Mikrodator

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Hantering av hazards i multi-pipelines

Läsminne Read Only Memory ROM

IT-GUIDE Version 1.0 Författare: Juha Söderqvist

Moment 2 Digital elektronik. Föreläsning Inbyggda system, introduktion

Komma över Memory wall med 3D stacked minne LTH Ingenjörshögskolan vid Campus Helsingborg Institutionen för datavetenskap

Digital- och datorteknik

Ladderprogrammering steg för steg

Introduktion till programmering

Datorsystemteknik DAV A14 Föreläsning 1

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

PARALLELLISERING AV ALGORITMER PROCESSORER FÖR FLERKÄRNIGA

Program som ska exekveras ligger i primärminnet. Processorn hämtar instruk7on för instruk7on. Varje instruk7on, som är e= antal 1:or och 0:or, tolkas

VHDL 1. Programmerbara kretsar

Ett minneselements egenskaper. F10: Minneselement. Latch. SR-latch. Innehåll:

Digital- och datorteknik

Datorhistorik. Föreläsning 3 Datorns hårdvara EDSAC. Eniac. I think there is a world market for maybe five computers. Thomas Watson, IBM, 1943

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

Digital- och datorteknik

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Cacheminne Intel Core i7

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Minnen delas in i två huvudgrupper, permanenta och icke permanenta. Non-volatile and volatile.

Hur det går att minska effektutvecklingen i en processor genom att ändra pipeline

F8: Undantagshantering

'HOWHQWDPHQ 6\VWHPNRQVWUXNWLRQ

Mål. Datorteknik. Introduktion. Innehåll. Verklig situation - pappaledighet. Introduktion (forts)

Institutionen för elektro- och informationsteknologi, LTH

Övningsuppgifter i Mikrodatorteknik 4p/5p

Digital- och datorteknik

Parallellism i CDC 7600, pipelinens ursprung

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

Modbus över Ethernet. WAGO Contact SA TSS STR

Assemblerprogrammering del 3

Ett urval D/A- och A/D-omvandlare

Tenta i Digitalteknik

Tentamen PC-teknik 5 p

2 UPPBYGGNAD OCH FUNKTION

Tentamen PC-teknik 5 p Lösningar och kommentarer

F9: Minne. Sammansättning av minnesgrupper Ansluta minne till Interface till olika typer av minnen Användningsområden.

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

Genetisk programmering i Othello

RemoteBud. Inlämnas: Patrik Johnsson, e01pjo Viktor Karlsson, e01vk

Digital- och datorteknik

Konstruktionsmetodik för sekvenskretsar

Mälardalens högskola

Adressrum, programmerarens bild

3. Mikroprogrammering II

Hannes Larsson - IDA 2, LTH Campus Helsingborg. NEC V R 4300i. Interlock-handling EDT621

Digitala projekt rapport

LEU240 Mikrodatorsystem

Parallellism i NVIDIAs Fermi GPU

Jämförelse av skrivtekniker till cacheminne

Ladderprogrammering steg för steg

LABORATION. Datorteknik Y

Transkript:

Bank Switching Att nå multipla adressrymder Av: Drazen Mijatovic 2016-12-06 Abstrakt: Adressbussen hos processorer och mikrokontroller som används inom inbäddade applikationer utgör en begränsning för storleken på adressrymden. Det är i många fall önskvärt att ha tillgång till mer minne. Med bank switching kan man nå multipla adressrymder.

Innehållsförteckning Inledning... 1 Problemet... 1 Lösningen... 2 Slutsats... 5 Källförteckning... 6

Inledning Inbäddade system har blivit en viktig del av dagens infrastruktur eftersom de finns inom allt fler områden. För att nämna ett fåtal exempel finns de bland annat inom hemelektronik, mätsystem, bilar, kommunikationssystem och inom industrin (Scholz, et al. 2008:2). Många av dessa användningsområden kräver inte mycket manipulation av data. Exempelvis kommer en termostat att vara i viloläge större delen av tiden och bara vakna då och då för att mäta temperaturen och möjligtvis ta beslutet om ett relä ska aktiveras eller inte. I dessa användningsområden är låga kostnader och strömsnålhet ett krav. En flerkärnig 64-bitars processor som finns i moderna skrivbordsdatorer hade varit inte bara onödigt dyr utan också olämplig. Ett bättre val hade varit olika 8- och 16-bitars processorer. Dessa är ofta klassiska designer från 70- och 80-talet som exempelvis Intel 8051, Intel 8080, 6502 och Z-80. De är snabbare och strömsnålare tack vare modernare tillverkningsmetoder än vad de var vid processorernas introduktion. Dessutom har långa produktionsserier som sträcker sig över årtionden också lett till att de är förhållandevis billiga. Tack vare den långa användningsperioden finns också stora mängder dokumentation och tillbehör att tillgå. Allt detta gör dessa processorer lämpade för inbäddade applikationer. Tidsmässigt mer moderna designer som olika DSP från exempelvis Texas Instruments eller PIC mikrokontroller kretsar finns naturligtvis och har ungefär samma styrkor och svagheter. Ofta har man också integrerat mycket av det som brukade finnas externt inuti själva processorn. Problemet Vissa applikationer är minneskrävande och ett problem för 8- och 16-bitars processorer är storleken på adressrymden, dvs. den mängd minne som processor kan adressera. En 8-bitars processor kan adressera 2 8 = 256 byte minne och en 16-bitars processor kan adressera 2 16 = 65536 byte minne. Detta är inte mycket minne och utgör ett problem om den inbäddade applikationen behöver behandla data på mer komplicerade sätt. 1

Lösningen Det mest uppenbara sättet att lösa problemet hade varit genom att lägga till mer adresslinjer. Detta hade tillåtet en större adressrymd. Dock är denna lösning problematisk eftersom en processor kommer färdig från fabriken och att modifiera den i efterhand är inte praktiskt. Ett sätt att öka storleken på minnet utan att utöka adressbussens storlek hos processorn är bank switching (Aspinall & Dagless, 1977:64-65). I bank switching delas adressrymden upp i minnesbanker med samma storlek. Vid ett givet tillfälle är bara en minnesbank i bruk och kan nås av processorn. Denna bank kallas för den aktiva banken. Valet av minnesbank görs genom att driva den relevanta adresslinjen. Applikationen växlar den aktiva banken vid behov. Minneskarta för Dragon datorn från tidiga 1980-talet (Heath 2003:123). För att illustrera konceptet tittar vi på ett historiskt exempel spelkonsolen Atari 2600. Den är utvald för att dess processor bara kan adressera en begränsad mängd minne, men användningsområdet, dvs. spel, är väldigt minneskrävande. Atari 2600 har också en av de enklaste möjliga implementationerna av bank switching vilket gör den särskilt lämpad för just illustration. 2

När Atari 2600 designades valde man att använda 6507 processorn. Denna är jämförbar med en 16-bitars 40-pin 6502 processor, fast i en mindre och billigare 28-pin kapsel. För att åstadkomma detta tog man bort ett flertal pinar vilket resulterade bland annat i att adresslinjerna A15 till A13 försvann. Med bara A12 till A0 kunde 6507 processorn bara adressera 2 13 = 8192 byte minne. I Atari 2600 var hälften av adressrymden reserverad för spelkassetten vilket tillät 4 KB av externt adressbart minne, medan resten av adressrymden var för internt RAM och I/O. Ingenjörerna hos Atari ansåg 4 KB minne vara fullt tillräckligt eftersom dåtidens spel var relativt enkla (Grand, Russell & Mitnick, 2004:229). Det här var något som skulle visa sig stämma när spelkonsolen började säljas 1977. 1979 började Atari sälja arkadspelet Asteroids som visade sig vara extremt populärt och över 70 000 arkadskåp såldes. Atari tjänade därmed över 150 miljoner dollar varpå intresset att porta spelet till Atari 2600 väcktes. Problemet var att arkadskåpet använde en fullfjädrad 6502 processor och kunde därför adressera mer minne än 6507 processorn som fanns i Atari 2600. Spelet var för stort. För att lösa problemet användes bank switching och spelet som släpptes 1981 var det första Atari 2600 spel att använda bank switching. Metoden krävde speciell hårdvara på spelkassetten och i fallet Asteroids användes det som numera är känt som F8 metoden (8 KB). Senare tillkom också F6 (16 KB) och F4 (32 KB). Bank switching fungerar genom att vissa platser i minnet reserveras för växlandet av minnesbanker. I F8 metoden växlade man mellan två 4 K minnesbanker. Två 4 K minnesbanker gav 8 K av tillgängligt utrymme. Om spelet adresserade adress 1FF8 användes den första 4 K banken, medan om spelet adresserade adress 1FF9 valdes den andra 4 K banken. Detta var den enklaste och mest använda bank switching metoden. Varför var dessa adresser speciella? Därför att det var väldigt enkelt att implementera hårdvarumässigt. Låt oss ta en titt. 3

Pin A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Hex Adress 1 1 1 1 1 1 1 1 1 1 0 0 0 1FF8 1 1 1 1 1 1 1 1 1 1 0 0 1 1FF9 Ritningen är förenklad men illustrerar ändå hur F8 metoden fungerar. Om spelet försöker nå adressen 1FF8 blir A12-A3 ettor och A2-A0 nollor. A2 och A1 inverteras och därmed blir A12-A1 vid AND grinden ettor vilket gör att utgången hos AND grinden blir en etta. Detta ger en klockpuls till D-vippan vilken då tar A0, vilket är en nolla, och skickar ut den kontinuerligt till ROM Enable. Vid 1FF9 sker samma sak, fast A0 blir en etta och D-vippan skickar då ut en etta till ROM Enable. På andra sidan ROM Enable finns två 4 K ROM och en inverterare på en av ROM chippen vilket beroende på om det kommer in en etta eller nolla växlar Enable på chippen. På detta sätt kan mängden tillgängligt minne fördubblas. Dock så finns vissa komplikationer. För att bank switching ska fungera måste ett av två förhållanden inträffa. Antigen är en bank fixerad för att viktig kod alltid ska vara tillgänglig eller är den viktiga koden duplicerad över ett flertal banker vid identiska adresser. Bank switching kräver också noggrann planering för att säkerställa att data finns på rätt plats vid rätt tid. Om exempelvis processorn är upptagen med att läsa data för uppspelandet av musik och minnesbanken växlas kommer datorn möjligtvis att läsa något helt annat med resultatet att oljud spelas upp. I andra fall, exempelvis bankväxling som sker när en subrutin exekveras kan programräknaren returnera till en oväntad adress vilket leder till att programmet kraschar (Altice 2015:211). 4

Slutsats Bank switching har nackdelar. Programmeraren måste uttryckligt hålla reda på vilken del av minnet som används och manuellt växla banker. Beroende på implementation kan själva processen att växla in en ny minnesbank också ta relativt lång tid. Om processorn måste vänta på att minnet blir tillgängligt är det då önskvärt att undvika onödigt växlande av minnesbanker. Till stor del kan dock dessa nackdelar kompenseras för genom att använda utvecklingsverktyg som hjälper programmeraren att hantera minnesbanker (Scholz, et al. 2008:3), samt hårdvara som klarar av att snabbt växla banker för att processorn inte ska behöva vänta. Överlag är bank switching ett enkelt och effektivt sätt att ge 8- och 16-bitars processorer tillgång till mer minne. 5

Källförteckning Scholz, B. Burgstaller, B. & Jingling, X. (2008), Minimal Placement of Bank Selection Instructions for Partitioned Memory Architectures, ACM Transactions On Embedded Computing Systems, Volume 7, Issue 2. Steve Heath (2003), Embedded Systems Design (Second Edition). Newnes. Aspinall, D. & Dagless, E.L. [Ed] (1977), Introduction to Microprocessors. Pitman Publishing, London. Joe Grand, Ryan Russell, Kevin Mitnick (2004), Hardware Hacking Have Fun While Voiding Your Warranty. Syngress Publishing, Rockland MA. Nathan Altice (2015), I AM ERROR The Nintendo Family Computer / Entertainment System Platform. The MIT Press, Cambridge, Massachusetts / London, England. 6