Rzut oka na zagadnienia zwi zane z projektowaniem list rozkazów 1 Wst p Przypomnijmy,»e komputer skªada si z procesora, pami ci, systemu wej±cia-wyj±cia oraz po- ª cze«mi dzy nimi. W procesorze mo»emy wyró»ni jednostk steruj c, zestaw rejestrów oraz jednostk arytmetyczno-logiczn (oczywi±cie komponenty te s ze sob poª czone). Na pami patrze b dziemy jak na liniow tablic, do której pól odwoªujemy si podaj c ich adresy. Program to ci g rozkazów. Rozkazy umieszczone s w pami ci. Wykonanie programu polega na realizacji nast puj cego cyklu: Pobranie rozkazu zaªadowanie do znajduj cego si w procesorze rejestru rozkazów rozkazu znajduj cego si w pami ci pod adresem wskazywanym przez inny rejestr licznik rozkazów. Zdekodowanie rozkazu wygenerowanie na podstawie kodu rozkazu odpowiednich sygna- ªów, które spowoduj prawidªowe wykonanie rozkazu Wykonanie rozkazu np. wykonanie odpowiednich operacji arytmetycznych, przesªanie danych, itp. Po wykonaniu rozkazu nast puje zwi kszenie licznika rozkazów (wyj tkiem s rozkazy skoku, które same ustawiaj warto± licznika rozkazów) i cykl si powtarza. Rozkazy s kodowane oczywi±cie za pomoc ci gów zero-jedynkowych. Cz ± rozkazu to kod operacji (co zrobi?), reszta to zazwyczaj opis operandów (gdzie w rejestrach lub pami ci s argumenty operacji?). Na tym wykªadzie zwrócimy uwag na kilka zagadnie«zwi zanych z projekotwaniem listy rozkazów. Listy rozkazów s jednym z najwa»nieszych elemetnów odró»niaj cych poszczególne architektury. Co wi cej, listy rozkazów s zazwyczaj trwalsze od konkretnych implementacji sprz towych. 1.1 Decyzje podejmowane przy projektowaniu list rozkazów 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; liczba operandów w instrukcji (0,1,2,3), nie zawsze staªa staªa czy zmienna dªugo± instrukcji: instrukcje o staªej dªugo±ci upraszczaj architektur, ale marnuje si wtedy zazwyczaj miejsce. 1
organizacja pami ci (bajtowa, sªowowa) sªowo maszynowe to zazwyczaj kilka bajtów (2,4,8); w jakiej kolejno±ci przechowywa bajty sªowa (little endian, big endian) tryby adresowania liczba rejestrów i ich organizacja poªo»enie operandów (rejestr-rejestr, rejestr-pami, pami -pami ) rodzaje instrukcji rodzaje argumentów (liczby, adresy, znaki,...) 1.2 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. Rysunek 1: Little endian i big endian 1.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 ) Istniej architektury, 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): 2
R1, X, Y 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 R1, Y Load R2, W 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 za pomoc rozkazów jednoargumentowych (drugi argument i adres docelowy s domy±lne specjalny rejestr akumulatorowy) : Load Store Load Add Store Add Pop X Y W U Temp Temp Z I na koniec architektura stosowa: Z X Y W U 2 Rodzaje rozkazów Standardowy podziaª rozkazów: przenosz ce dane (pami -rejestry, rejestry-rejestry; mo»emy mie osobne rozkazy dla obu grup) arytmetyczne (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) 3
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 ) 3 Adresowanie 3.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 indeksowy (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; Ilustracja ró»nych trybów adresowania na rysunku 2 4
Rysunek 2: Podstawowe tryby adresowania 5