www.eprace.edu.pl » ia64 » Mechanizmy zastosowane w architekturze IA-64 » Cechy zestawu instrukcji

Cechy zestawu instrukcji

Każda instrukcja jak to zostało zauważone przy okazji omawiania paczkowania instrukcji ma długość 41 bitów. Istnieją jednakże tak zwane instrukcje rozszerzone (extended) które zajmują 82 bity czyli dwa miejsca w paczce instrukcji. Instrukcje w IA-64 są podzielone na 6 kategorii. Każda instrukcja może być wykonana przez jeden lub więcej typów jednostek wykonawczych.

Tabela przedstawiająca powiązania pomiędzy typem instrukcji a jednostką wykonawczą, do która wykonuje daną instrukcję.

Typ instrukcji

Opis

Typ jednostki wykonawczej
A stałoprzecinkowa arytmetyczno-logiczna stałoprzecinkowa lub zarządzająca pamięcią
I stałoprzecinkowa, nie arytmetyczno-logiczna stałoprzecinkowa
M operująca na pamięci zarządzająca pamięcią
F zmiennoprzecinkowa zmiennoprzecinkowa
B skok zarządzająca skokami
L+X rozszerzona stałoprzecinkowa

Ogólnie format instrukcji kodowany za pomocą 41 bitów można przedstawić za pomocą następującego schematu:

0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
opcode misc pole3 pole2 pole1 qp
  0-5 qp – (qualifying predicate register source) - pole zawierające adres odpowiedniego
    rejestru predykatów
  6-12 pole1 – pole które jest w większości typów instrukcji wykorzystywane do
    przechowywania adresu źródłowego lub docelowego odpowiedniego rejestru (ogólnego przeznaczenia lub zmiennoprzecinkowego). Inaczej jest w przypadku instrukcji skoków, pole to jest wtedy dodatkowo podzielone. Pierwsze 3 bity zajmuje zakodowany typ skoku, lub adres źródłowy albo docelowy rejestru skoków, następne 3 bity są ignorowane, a ostatni bit pola zawiera kod operacji wcześniejszego pobierania. Jeszcze inaczej interpretuje się to pole w przypadku instrukcji porównania. Wtedy pierwsze 6 bitów to adres docelowego rejestru skoków, a ostatni bit kod komplementarnej relacji porównania
  13-19 pole2 – pole to jest przez większą część instrukcji używane do przechowywania
    adresu źródłowego lub docelowego odpowiedniego rejestru (ogólnego przeznaczenia lub zmiennoprzecinkowego). W przypadku instrukcji alokacji w polu tym zapisana jest wielkość ramki. W tym polu mogą się także znajdować w zależności od instrukcji takie informacje jak: pozycja bitu testowego, lub bitu uzyskanego, przewidziana najbliższa maska
  20-26 pole3 – pole to jest przez większą część instrukcji używane do przechowywania
    adresu źródłowego lub docelowego odpowiedniego rejestru (ogólnego przeznaczenia, zmiennoprzecinkowego lub aplikacyjnego). Instrukcje multimedialne wykorzystują to pole do zakodowanie stanu licznika przesunięć. Może być to pole także wykorzystane do zapisania najbliższej przewidzianej maski, pozycji bitu testowego
  27-36 misc – pole różnego przeznaczenia, w tym polu mogą znajdować się najróżniejsze
    informacje. Przykładem może być: rozszerzenie pola opcode, różne flagi wykorzystywane przez instrukcje, licznik przesunięć, podpowiedzi przy instrukcjach skoku, itp.
  37-40 opcode – (major opcode) główny kod instrukcji, opisany niżej dokładniej

Każde 4 ostatnie bity (37:40) w instrukcji to tak zwany główny kod instrukcji (major opcode).

główny kod instrukcji typ instrukcji  
I/A M/A F B L+X
0 00 Misc mem mgnt FP misc Misc/indi branch misc
1 01   mem mgnt FP misc indirect call  
2 02       Nop  
3 03          
4 04 Deposit Int Ld +Reg/getf FP Compare IP-rel branch  
5 05 Shift/Test bit Int Ld/St + Imm FP Class IP-relative call  
6 06   FP Ld/St+Reg/setf     movl
7 07 MM Mpy/Shift FP Ld.St+lmm      
8 08 ALU/MM ALU ALU/MM ALU fma    
9 09 Add Imm Add Imm fma    
10 0A     fms    
11 0B     fms    
12 0C Compare Compare fnma    
13 0D Compare Compare fnma    
14 0E Compare Compare fselect/xma    
15 0F          

Nieużywane pola głównego kodu (czyli puste miejsca w tabeli) można interpretować na trzy sposoby:

    instrukcja jest interpretowana jako NOP
    zarezerwowana wartość pola, wystąpienie takiej wartości powoduje
    generowanie błędu
    generowanie błędu, jeśli rejestr predykatowy specyfikowany przez pole qp
    instrukcji (bity 0:5) ma wartość 1, lub interpretowanie instrukcji jako NOP w przeciwnym wypadku


komentarze

Copyright © 2008-2010 EPrace oraz autorzy prac.