Hannes Larsson - IDA 2, LTH Campus Helsingborg NEC V R 4300i Interlock-handling EDT621 Läsperiod 2, 2017
Innehållsförteckning s.2 - Förord s.2 - Inledning s.2 - NEC VR-4305 s.3 - Pipeline s.4 - Interlocks s.6 - Diskussion s.7 - Källförteckning 1
Förord Rapporten hänvisar ofta till två manualer publicerade av NEC (NEC, VR4305 User Manual, 2000) och MIPS (MIPS Technologies, R4300i, 1997). För effektivare läsning så kommer dessa endast hänvisas till NEC och MIPS om inte annan källa nämns. Inledning NEC V R 4305 är en RISC processor som, bland annat, användes i nintendo 64 konsolen. Den är skapad av MIPS technologies, och utnyttjar MIPS III instruction set architecture. Till skillnad från dess flera föregångare i R4000 familjen, som mest användes i workstations, så utvecklades V R 4305 för användning i konsumentinriktade produkter, dvs billigare slutprodukt utan att offra allt för mycket prestanda. Denna rapport ämnar ge en överblick över hur pipelinen ser ut i processorn, med mera fokus på interlock- och exceptionhandling då interlocks ej har diskuterats på föreläsningarna. Vidare diskuteras även relationen mellan interlocks och exceptions, samt vad som skiljer dem åt. NEC VR4305 Först kommer en överblick över hårdvaran ges. I sitt datablad över processorn skriver MIPS att denne använder sig av en förenad datapath för integer och floating point units. För att skilja dessa åt så har registerna delats upp: 32 register för integer units och 32 register för floating point units. Vidare förklarar MIPS att registernas bredd beror på vilket läge processorn är i, om den är i 32-bitarsläge så får registerna bredden 32 bitar, annars får de bredden 64 bitar. Utöver dess 64 general purpose registers så har processorn dessutom sex stycken register för speciella funktioner, bland annat program countern och multiply/division register. MIPS beskriver vidare att processorn kan ha upp till tre coprocessorer (MIPS, s. 2). Coprocessor noll hanterar det virtuella minnet och exception-handling, och coprocessor ett hanterar värden för floating point units, medans den sista sparas för framtida användning. Mer utveckling finns på MIPS s.9. Processorn har två sorters cacheminnen på chippet, Instruction cache på 16 KB och Data cache på 8 KB, samt ett yttre Write Back cache system (NEC User Manual, 2000) och TLB (translation lookaside buffer) cache (NEC, 2000, s. 32). 2
Pipeline VR4305 använder sig av en femstegs RISC-pipeline (Reduced Instruction Set Computer), vilken nyttjar sig av instruktionerna Instruction Cache Fetch, Register Fetch, Execution, Data cache fetch och Writeback. Detta låter processorn (i bästa fall) hantera fem instruktioner samtidigt. Figur 1, fem-stegs RISC pipeline Varje pipeline-steg tar en pcycle att utföra, vilket ger instruktioner en latency på fem pcycles (R4300i, 1997). MIPS påpekar ytterligare i sitt datablad att pcycles kan gå upp till tre gånger snabbare än frekvensen masterclock, beroende på status på DivMode 1:0 signaler. DivMode är input signaler som fastställer förhållandet mellan masterclock och pclock. NEC förklarar att pclock har två faser (fas ett och två) som representeras av klockan när den är hög respektive låg. De olika pipeline stegen har bestämda faser då deras operationer börjar utföras. DC, EX och RF har operationer som påbörjas i båda faser, medans ICs och WBs operationer endast påbörjas i en fas, två för IC och ett för WB. Vidare beskrivs att floating point unit instructions behandlas på samma sätt som multicycle integer instructions i pipelinen. Detaljerade exempel på hur olika instruktioner behandlas ges i källa två av NEC, sida 95-102. 3
Interlocks Som tidigare sagt så kan fem instruktioner i bästa fall behandlas samtidigt pga pipelinen, men ibland uppkommer fel som förhindrar smidig exekvering av instruktionerna. Beroende på vad för fel det är, så kan dessa klassas som antingen exception eller interlocks, och behandlas därmed olika. Generellt kan sägas att interlocks behandlas i hårdvaran och exceptions behandlas i mjukvaran, NEC s. 103. Processorn söker efter interlocks och exceptions i alla instruktioner varje pcycle, och då alla interlockoch exceptionförhållanden är kartlagda till specifika faser i pipelinestegen så kan felet lokaliseras snabbt. Figur 2, Correspondence of Pipeline Stage to Interlock and Exception Condition Exempelvis, när förhållandet för ICB (Instruction Cache Busy) är uppfyllt så vet processorn att det är instruktionen som för tillfället är i steg två av pipelinen (Register Fetch). NEC (s. 106) skriver att om ett interlock förhållande uppfylls så fördröjer denne hela pipelinen fram tills hårdvaran rättat till det, medans instruktioner som uppfyller exceptionförhållanden och alla följande instruktioner avbryts tills förhållandet har lösts av mjukvaran, startar om pipelinen och fyller den på nytt. 4
Figur 3, Instruction TLB Miss Interlock För att förtydliga hur en interlock kan hanteras så används ITM (Instruction TLB Miss) interlock som exempel. David Patterson och John Hennessy skriver att translation lookaside buffer (TLB) är ett cacheminne som används för att spara nyligen använda adresser, för att försöka undvika att hämta värden från primärminnet (David A. Patterson, John L. Hennessy, 2011, s. 502). Primärminnet är mycket långsammare än cacheminnen, särskilt i nintendo 64 s fall som fortfarande använde sig av kassetter som primärminne, vilket gör detta fel till ett av de viktigare att hantera prestandamässigt. TLB är i VR-4305 uppdelad i två delar, nämligen joint-tlb och instruction micro-tlb (NEC s.122 och MIPS s.15-17). JTLB kallas joint då den kan innehålla både data- och instruktionsadresser. ITLB används som ett bihang till JTLB som hjälp vid översättning av adresser. ITLB har ett minne på 4KB medans JTLB har upp till 16MB. NEC skriver att flaggan för ITM interlocken hissas när den virtuella adressen för nästa instruktion inte hittas i ITLB i register fetch steget av pipelinen (NEC, s.107). Pipeline kontrollern pausar då pipelinen och meddelar ITLB att lösa problemet. ITLB söker efter den virtuella adressen i JTLB och hämtar den därifrån om den finns. Om den finns så inför interlocken en fördröjning på tre pcycles, däremot om den virtuella adressen inte heller finns i JTLB så hämtar den datan från primärminnet, och initierar därefter om interlocken, vilket leder till ytterligare fördröjning i värsta fall. 5
Diskussion Även om skillnaden rent praktiskt mellan interlocks och exceptions är stor, så är principen densamma: om möjligt förebygga, annars åtgärda, fel som uppstår under programmets gång. Intressant om interlocking är dock att MIPS, som står för Microprocessors without Interlocked Pipeline Stages och som är en av de största producenterna av RISC processorer, trots sitt namn faktiskt använder sig av interlocking i sina processorer. Detta eftersom att Hennessy trodde det skulle öka längden på MIPS cycles med 10%, enligt Ichikawa Tadao (Ichikawa Tadao, Baiardi F, Lapriore L, 1992, s.139). Jari Nurmi skriver att MIPS ämnade från början att utveckla processorer som kunde utföra single-cycle instruktioner, eller med hjälp av mjukvara som kallas pipeline reorganizer automatiskt införa NOP operationer där detta inte gick, specifikt load operationer (Jari Nurmi, 2007, s.52). Jari Nurmi förklarar vidare att då multi-cycle instructions hade inkluderat ett mångfald NOP instruktioner och varit väldigt svåra att jobba med utan interlocks, så exkluderade MIPS användningen av dessa instruktioner vilket är anledningen till att MIPS grundkoncept av en processor saknade Floating Point Unit instructions och divide, och använde sig av delay-slots för att undvika Control-Hazards. Jag vet inte säkert exakt var och när det blev för omständigt att undvika interlocks för MIPS, men det kan ses att det redan var i full kraft när VR 4305 producerades. Det hade varit ett intressant ämnesområde att för fortsatta studier vid senare tillfälle. 6
Källförteckning 1. R4300i. (1997). [pdf] MIPS Technologies, pp. http://www.datasheetarchive.com/pdf/download.php?id=672c570c0811bb63dbd25012a4ad0b 54d5a32b&type=M&query=R4300i 2. V R 4300, 4305, 4310 64-Bit Microprocessor UM. (2000). [pdf] NEC pp. http://datasheets.chipdb.org/nec/vr-series/vr43xx/u10504ej7v0umj1.pdf 3. Computer Organization and Design, 4th edition. (2011). David A. Patterson, John L. Hennessy 4. Language Architectures And Programming Environments, (1992). Baiardi F, Ichikawa Tadao, Lapriore L 5. Processor Design: System-On-Chip Computing for ASICs and FPGAs, (2007). Jari Nurmi Figurer 1. Figure 4-2, Instruction Execution in the Pipeline, (User Manual, NEC, 2000) 2. Figure 4-12, Correspondence of Pipeline Stage to Interlock and Exception Condition, (User Manual, NEC, 2000) 3. Figure 4-13, Instruction TLB Miss Interlock, (User Manual, NEC, 2000) 7