1 Wst¦p 2 Formaty rozkazów
Transkrypt
1 Wst¦p 2 Formaty rozkazów
Bli»sze spojrzenie na architektury zbioru rozkazów 1 Wst¦p Z poprzedniego wykªadu wiemy ju», »e rozkazy maszynowe skªadaj¡ si¦ z kodu operacji (co zrobi¢?) i operandów (gdzie w rejestrach lub pami¦ci s¡ argumenty operacji?). Na tym wykªadzie przyjrzymy si¦ nieco dokªadniej zbiorom ISA. Oka»e si¦, »e listy rozkazów s¡ jednym z najwa»nieszych elemetnów odró»niaj¡cych poszczególne architektury. 2 Formaty rozkazów Przypomnij sobie formaty rozkazów MARIE. Byªy one bardzo proste. W rzeczywisto±ci architektury rozkazów s¡ oczywi±cie bardziej zªo»one. Mog¡ by¢ bardzo zró»nicowane. Podstawowe cechy, którymi mog¡ si¦ ró»ni¢: • sposób przechowywania danych przez CPU (rejestry lub stos) • liczba operandów okre±lanych jawnie w instrukcji (0,1,2,3); nie zawsze staªa w konkretnej ISA • dªugo±ci¡ rozkazów(16,32,64 bity; czy dªugo±¢ jest staªa w danej ISA) • poªo»enie operandów (rejestr-rejestr, rejestr-pami¦¢, pami¦¢-pami¦¢) • instrukcjami (rodzaj instr., które mog¡ si¦ga¢ do pami¦ci, a które nie,...) • rodzajem i rozmiarami operandów (operandy mog¡ by¢ liczbami, adresami, nawet znakami) 2.1 Decyzje podejmowane przy projektowaniu ISA Jak wspomnieli±my projekt ISA jest kluczowy dla caªego projektu architektury procesora. Jak si¦ okazuje raz zaprojektowana ISA mo»e by¢ wykorzystywana pó¹niej przez wiele lat (mimo ulepsze« procesora). Projektuj¡c ISA warto zwróci¢ uwag¦ na nast¦puj¡ce zagadnienia: • dªugo±¢ instrukcji: krótkie s¡ szybciej wykonywane i zajmuj¡ mniej miejsca, ale nie mo»e ich by¢ zbyt du»o (bo potrzebujemy pewnej liczby bitów na kody operacji) i nie mog¡ mie¢ zbyt wielu operandów; • staªa czy zmienna dªugo±¢ instrukcji: instrukcje o staªej dªugo±ci upraszczaj¡ architektur¦, ale marnuje si¦ wtedy zazwyczaj miejsce. • organizacja pami¦ci (bajtowa, sªowowa) • liczba operandów w rozkazie: nie musi by¢ staªa (nawet je±li dªugo±ci rozkazów s¡ staªe) • tryby adresowania: w MARIE: bezpo±rednie (argumentem rozkazu jest adres operandu) i po±rednie (argumentem jest adres adresu operandu); w praktyce u»ywa si¦ jeszcze kilku typów • sªowo maszynowe to zazwyczaj kilka bajtów (2,4,8); w jakiej kolejno±ci przechowywa¢ bajty sªowa (little endian, big endian) • 2.2 liczba rejestrów i ich organizacja Little endian i big endian Wi¦kszo±¢ wspóªczesnych komputerów adresuje pami¦¢ bajtowo. Istotne jest zatem w jakiej kolejno±ci le»¡ bajty sªowa. Dwie mo»liwo±ci: kolejno±¢ naturalna (big endian) i odwrotna (little endian). Wi¦kszo±¢ komputerów unixowych jest zgodna z big endian, wi¦kszo±¢ pecetów z little endian. Niektóre procesory obsªuguj¡ oba standardy. Przykªad: jak pami¦ta¢ szesnastkow¡ warto±¢ 12345678 w obu standardach. Rysunek 1. 1 Rysunek 1: Little endian i big endian 2.3 Format rozkazów Liczba operandów i liczba dost¦pnych rejestrów ma bezpo±redni wpªyw na dªugo±¢ rozkazów. Jak wspomnieli±my dªugo±¢ rozkazów mo»e by¢ staªa lub zmienna. Oba rozwi¡zania maj¡ wady i zalety. Najcz¦±ciej wybiera si¦ rozwi¡zanie po±rednie: mamy ustalone z góry 2-3 mo»liwe dªugo±ci rozkazów. Najcz¦±ciej spotykane formaty rozkazów przewiduj¡ od zera do trzech operandów: • sam kod operacji • kod operacji + jeden adres (zazwyczaj w pami¦ci) • kod operacji + dwa adresy (2 rejestry lub rejestr, pami¦¢) • kod operacji + trzy adresy (3 rejestry lub rejestry i pami¦¢) Architektura MARIE posiadaªa rozkazy bez argumentów lub jednym argumencie. Istniej¡ ISA, w których prawie wszystkie instrukcje u»ywaj¡ zera operandów chodzi o architektury stosowe. Rozwa»my wyra»enie Z = (X · Y ) + (W · U ) i spróbujmy napisa¢ programy, które je wylicza u»ywaj¡¢ kolejno ISA bazuj¡cych na rozkazach o ró»nych liczba operandów. Na pocz¡tek trzy operandy (tego typu rozkazy przewa»aj¡ w architekturze MIPS, któr¡ niedªugo poznamy): Mult R1, X, Y Mult R2, W, U Add Z, R2, R1 Teraz ISA dwuargumentowa. Zazwyczaj wtedy jeden argument jest w rejestrze, a drugi jest rejestrem lub jest w pami¦ci. Load R1, X Mult R1, Y Load R2, W Mult R2, U Add R1, R2 Store Z, R1 W powy»szych przykªadzie pierwszy operand okre±la adres docelowy. Tak zorganizowane s¡ rozkazy Intela. W Motoroli jest odwrotnie. Teraz nasz program napiszemy dla ISA jednoargumentowej (typu MARIE): Load X Mult Y Store Temp Load W Mult U Add Temp Store Z I na koniec architektura stosowa: Push X Push Y Mult 2 Push W Push U Mult Add Pop Z 3 Rodzaje rozkazów Standardowy podziaª rozkazów: • przenosz¡ce dane (pami¦¢-rejestry, rejestry-rejestry; mo»emy mie¢ osobne rozkazy dla obu grup) • arytemtyczne (caªkowitoliczbowe i zmiennoprzecinkowe; ró»ne rozkazy dla danych ró»nej dªugo±ci; inne rozkazy na rejestrach, inne na pami¦ci; ró»ne rozkazy dla ró»nych trybów adresowania) • logiczne (AND, OR, NOT, XOR) • manipuluj¡ce bitami (przesuwanie bitów arytmetyczne i logiczne, obracanie) • I/O (bardzo zró»nicowane w ró»nych architekturach; obsªuga programowa, przerwania, urz¡dzenia DMA) • przekazuj¡ce sterowanie (skoki warunkowe i bezwarunkowe, rozkazy pomini¦cia, wywoªania procedur) • specjalne (przetwarzanie ªa«cuchów znaków, wspomaganie j¦zyków wysokiego poziomu, zapewniaj¡ce ochron¦, steruj¡ce rejestrem agowym, zarz¡dzaj¡ce pami¦ci¡ podr¦czn¡) 4 Adresowanie 4.1 Podstawowe tryby adresowania 1. adresowanie natychmiastowe warto±ci przechowywane w rozkazie to rzeczywiste argumenty staªe (a nie ich adresy) 2. adresowanie bezpo±rednie warto±¢ w rozkazie to adres rzeczywistego argumentu w pami¦ci 3. adresowanie rejestrowe warto±¢ w rozkazie to numer (adres) rejstru 4. adresowanie po±rednie warto±¢ w rozkazie to adres adresu rzeczywistego argumentu 5. adresownaie po±rednie rejestrowe warto±¢ w rozkazie to numer rejestru, w którym jest adres rzeczywistego argumentu w pami¦ci 6. adresowanie indeksowe i adresowanie wzgl¦dem bazy w adresowaniu indeksowym wykorzystuje si¦ rejestr indeksowym (domy±lny lub okre±lony w rozkazie), w którym przechowywana jest warto±¢ przesuni¦cia, któr¡ trzeba doda¢ do operandu, aby uzyska¢ rzeczywisty adres argumentu; w adreswoaniu bazowym adres wylicza si¦ identycznie; ró»nica polega na ogólnej koncepcji u»ycia: rejestr indeksowy zawiera przesuni¦cie, rejestr bazowy baz¦); oba tryby przydaj¡ si¦ przy operacjach na tablicach i ªa«cuchach. 7. adresowanie stosowe operand na stosie 8. inne tryby adresowania: po±rednie indeksowe, automatycznie zwi¦kszaj¡ce si¦ lub malej¡ce adresy, wzgl¦dne adres wzgl¦dem aktualnej instrukcji; Przykªad ró»nych trybów adresowanie na rysunku 2 3 Rysunek 2: Podstawowe tryby adresowania 4