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

Podobne dokumenty