2016-11-26 30 views
5

Niedawno natknąłem się na instrukcję o nazwie tlbiel i jestem ciekaw co to znaczy i do czego służy. Po przeprowadzeniu intensywnych poszukiwań w Google zobaczyłem jeden dokument IBM, który doprowadził mnie do przekonania, że ​​jest to hiperwizor. Obecna instrukcja, którą mam do czynienia to tlbiel r3, 1 i po przestudiowaniu kodu operacyjnego (0x7C201A24), doszedłem do wniosku, że z grubsza tłumaczy się na mtspr 3, 1; jedyna różnica polega na tym, że oczekiwana wartość 467 na 21-30 w opcju mtspr zmieniła się na 274. Zanim jednak tlbiel zostanie wykonany, instrukcje są wprowadzane bezpośrednio przed, powodując, że r3 zawiera 0x00003FF000000000.Co to jest instrukcja tlbiel i co robi?

O ile mi wiadomo, nie ma SPR o wartości 3 i nie ma prawdziwej dokumentacji na tlbiel w ogóle (że mogę znaleźć). Co osiąga ta instrukcja?

+1

O ile mogę powiedzieć, jest to lokalna wersja unieważnienia wpisu TLB (tlbie), gdzie lokalne oznacza, że ​​nie ma wpływu na inne procesory w systemie. Ale jest bardzo dziwne, że ta instrukcja nie jest jasno wyjaśniona przez IBM ... –

+1

Jest to prawdopodobnie związane z instrukcją TLBIE i unieważnia wpisy TLB. –

+1

@SamiKuhmonen, aby być uczciwym, platforma działa na procesorze Xenon (Xbox 360), więc może to być przyczyną braku dokumentacji. Powinienem dodać, że 'li r3, 0x3FF' i' sldi r3, r3, 32' są wykonywane zaraz przed funkcją Tlbiel. Czy ta wartość (0x00003FF000000000) wygląda w jakiś sposób znajomo? Dziękuję za informacje. –

Odpowiedz

6

to "Lokalny wpis unieważniający TLB": unieważnia wpis w TLB [Translation Look-aside Buffer]. W komentarzach do tego pytania zakłada się, że jest to normalne unieważnienie TLB, ale jest "lokalne", ponieważ unieważnia tylko wpisy TLB w wątku wykonującym instrukcję tlbiel .

W celu uzyskania dalszych informacji, zwykle używane jest Power ISA. Wyjaśnia to instrukcję bardzo szczegółowo, włączając w to, co robi z określonym rejestrem.

Istnieje kilka wersji ISA. Te dwie, które są najłatwiejsze do znalezienia są:

trzeba będzie zarejestrować się dla identyfikatora IBM do pobierania plików, ale są one bezpłatne. Jeśli tworzysz poziom assemblera na mikroprocesorze PowerPC, są one absolutnie bezcenne.

Kilka rzeczy ostatecznych:

  • Wspominałeś, że używasz na Xbox 360. który obsługuje nieco inny zestaw instrukcji. Jeśli możesz znaleźć ISA odpowiadający temu konkretnemu procesorowi, tym lepiej: podczas gdy większość rzeczy pozostaje taka sama, niektóre szczegóły zmieniają się. (Nie mam żadnego doświadczenia z czymś starszym niż Power8 - przepraszam, że nie mogę być bardziej konkretny tutaj!)
  • Jądro Linux jest zdecydowanie najlepszą dokumentacją typu open source, jak robić niskopoziomowe rzeczy na procesorach mocy. Jest tam kod, który zajmuje się unieważnianiem TLB, a zwłaszcza gdy wystarcza tlbiel i gdy wymagana jest wersja inna niż lokalna.