Lunds Universitet Pipelining i Intel 80486 EITF60 Datorarkitekturer med operativsystem Martin Wiezell 2017-12-04 Abstract This paper gives a brief description of the instruction pipeline of the Intel 80486 microprocessor as well as describes some of its distinct features. Two key characteristics of the processor s pipeline are examined and explained, these being the fact that there is no data load delay and one of its drawbacks is also looked upon, this being its pointer load delay.
Innehåll Inledning 2 Syfte 2 Instruktions pipelinen 3 Överblick 3 Utmärkande egenskaper 3 Referenser 5 1
Inledning Intel släppte sin första 80486 processor, även känd som i486, 1989. Den var efterföljaren till 80386 som släpptes 1985. (Burt, Jeff, (2013), 30 Years Ago: Intel 386, 486 Chips Set the Stage for Windows Dominance, http://www.eweek.com/pc-hardware/30-years-ago-intel-386-486-chips-set-the-stage-for-wind ows-dominance (hämtad 2017-12-04)) Det finns ett antal olika varianter av processorn som kom ut de följande åren, som skiljer sig åt till viss del. (Necasek, Michal, (2015), Intel OverDrive Part 1: 486 OverDrive, http://www.os2museum.com/wp/486-overdrive/ (hämtad 2017-12-04)) Syfte Den här rapporten ska ge en inblick i Intels 80486 instruktions pipeline. De pipeline steg som processorn använder sig av ska kort förklaras och några av de nya och utmärkande funktionerna i pipelinen och hur de har löst vissa problem ska även beskrivas. 2
Instruktions pipelinen Överblick 80486 instruktions pipelinen består av 5 olika steg, dessa är följande; FI, Fetch Instructions, det första steget som utförs. I det här steget hämtas en instruktion eller flera instruktioner från minnet. D1, Main Instruction Decode, första instruktionsdekodnings steget. Upp till tre bytes dekodas i detta steg. Instruktioner med en OP-kod på två bytes tar två klockcykler att dekoda i detta steg. D2, Secondary Instruction Decode är andra instruktionsdekodnings steget. Det dekodar klart det som påbörjades i D1, då den inte hinner dekoda klart på 1 klockcykel. Här beräknas även adresser. EX, Execute Stage, den cykel eller cykler, som exekveringen sker. WB, Write-Back Stage skriver resultat till register, antingen från cachen eller med ett resultat från ALUn. Utmärkande egenskaper Ett vanligt förekommande problem bland de RISC processorer som fanns när 486an var ny var att det kunde uppstå fördröjningar i pipelinen vid inladdning av data. Detta på grund av att datan var lagrad i en off-chip cache. Inladdning av data från denna cache tog vanligtvis en eller två klockcykler att utföra. Denna fördröjning kunde dock undvikas med hjälp av kompilatorn som upptäckte fördröjningen, och såg till att data som laddas inte behövs i nästa instruktion. För att processorn skulle kunna köra gammal kod som redan var kompilerad för äldre processorer, och samtidigt vara snabbare än de äldre, var man tvungen att i pipelinen utveckla ett system för att undvika dessa fördröjningar. I processorn finns därför en förbikopplings väg som tillåter att man både kan skriva till ett register och till ALUn samtidigt, vilket tar bort detta problem. 3
Figur 1: exempel på instruktioner som hade orsakat fördröjning utan en förbikopplings väg. (Crawford, John, (1990), The execution pipeline of the Intel i486 CPU, Intel Corporation, s.256) Fördröjning kan även förekomma vid längre, enstaka instruktioner, och elimineras då med hjälp av det faktum att processorn har en on-chip cache som den kan hämta data ifrån på 1 klockcykel. Detta är möjligt då de adresser som data ska hämtas ifrån kan beräknas under D2, det andra dekodnings steget. Figur 2: exempel på instruktion som hade orsakat fördröjning om processorn inte hade en on-chip cache eller förbikopplings väg. (Crawford, John, (1990), The execution pipeline of the Intel i486 CPU, Intel Corporation, s.256) Ett annat problem i pipelinen är det faktum att det kan uppstå fördröjningar när värden som används för beräkning av adresser ska laddas. Värdena måste finnas tillgängliga senast i början av nästa instruktions andra dekoder steg, eftersom att adresser beräknas då. Om värdet skrivs till ett register som kommer att användas som bas register av följande instruktion, måste processorn vänta en klockcykel för att hinna hämta data från cachen i exekvering steget och sedan skriva till registret i write-back steget. Eftersom att det finns en bypass kan den hämta det som ligger i ett register samtidigt som föregående instruktion skriver till det, i sitt write-back steg, och undviker därför en ytterligare fördröjning på en klockcykel. (Crawford, John, (1990), The execution pipeline of the Intel i486 CPU, Intel Corporation, s.254-258) Figur 3: exempel på instruktioner som orsakar fördröjning på grund av att adresser beräknas i andra dekodnings steget. (Crawford, John, (1990), The execution pipeline of the Intel i486 CPU, Intel Corporation, s.257) 4
Referenser Burt, Jeff, (2013), 30 Years Ago: Intel 386, 486 Chips Set the Stage for Windows Dominance, http://www.eweek.com/pc-hardware/30-years-ago-intel-386-486-chips-set-the-stage-for-wind ows-dominance (hämtad 2017-12-04) Necasek, Michal, (2015), Intel OverDrive Part 1: 486 OverDrive, http://www.os2museum.com/wp/486-overdrive/ (hämtad 2017-12-04) Crawford, John, (1990), The execution pipeline of the Intel i486 CPU, Intel Corporation, s.254-258 5