Programowanie mikroprocesorów jednoukładowych
Transkrypt
Programowanie mikroprocesorów jednoukładowych
Programowanie mikroprocesorów jednoukładowych Pamięć cache Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 1 / 22 Plan I Cache Architektura pamięci cache Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 2 / 22 Relacje między pamięcią cache, procesorem i główną pamięcią Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 3 / 22 Pamięc cache i jednostka MMU(przed) Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 4 / 22 Pamięc cache i jednostka MMU(za) Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 5 / 22 Architektura pamięci cache I I achitektura Von Neumanna I achitektura Harwardzka (I-cache i D-cache) Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 6 / 22 Podstawowa architektura pamięci cache Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 7 / 22 Kontroler cache Zadaniem kontrolera jest automatyczne odczytywanie danych z pamięci głównej do pamięci cache oraz zapis z pamięci cache do pamięci głównej. Przechwytuje on żądania do pamięci głównej i porównuje je z zawarością pól w linii cache. Kontroler porównuje bit statusu by sprawdzić czy linia cache jest aktywna, następnie porównuje cache-tag z żadanym adresem, jężeli prównanie okaże się trafne wtedy oznacz się to jako ćache hit", jeżeli porównanie jest nieprawdzie traktuje się to jako ćache miss". Jeżeli nastąpi ćache miss", wtedy zawartość z pamięci głównej jest kopiowana do pamięci cache. Kopiowanie z pamięci głównej do pamięci cache nazywa się ćache line fill". W przypadku ćache hit"dane lub kod przenoszone są z pamięci cache do procesora. Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 8 / 22 Relacje między pamięcią cache a pamięcią główną Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 9 / 22 Cache trashing Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 10 / 22 Pamięć cache z dodatkowymi modyfikacjami Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 11 / 22 Przykład pamięci cache w ARM940T—4 Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 12 / 22 Pomiar wydajności cache hit rate = ( Mariusz Naumowicz cache hits ) × 100 memory requests Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 13 / 22 Writethrough Kiedy kontroler korzysta z zasad zapisu writethrough, dane które trafiają podczas zapisu do pamięci cache trafiają również do pamięci głównej, odbywa się to przy każdym zapisie, przez co działa to wolno. Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 14 / 22 Writeback Kiedy kontroler korzysta z zasad zapisu writeback, dane są zapisywane do pamięci cache, a nie są zapisywane do głównej pamięci, przez co zawartość pamięci cache i głównej mogą się różnić. Zaletą takiego rozwiązania jest częste korzystanie ze zmiennych tymczasowyh lokalnych w podprocedurach. Zmienne takie nie muszą być zapisywane do głównej pamięci, bowiem są one przezroczyste dla systemu z natury. Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 15 / 22 Zastępowanie danych w liniach cache I round-robin lub cykliczna - wybór następnej linii danych do podmiany danych. I pseudolosowe - losowy wybór linii danych do podmiany danych. Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 16 / 22 Polityka pamięci podręcznej I Rdzeń ARM720T ARM740T ARM920T ARM940T ARM926EJS ARM946E ARM10202E ARM1026EJS Intel StrongARM Intel XScale Mariusz Naumowicz Polityka zapisu writethrough writethrough writethrough, writeback writethrough, writeback writethrough, writeback writethrough, writeback writethrough, writeback writethrough, writeback writeback writethrough, writeback Polityka nadpisywania random random random, round-robin random random, round-robin random, round-robin random, round-robin random, round-robin round-robin round-robin Programowanie mikroprocesorów jednoukładowych Polityka alokacji read-miss read-miss read-miss read-miss read-miss read-miss read-miss read-miss read-miss read-miss, write-miss 19 grudnia 2016 17 / 22 Polityka alokacji na podstawie cache miss I read allocate - alokuje linię cache podczas odczytu danych z pamięci, zawartość linii cache zapisywana jest do pamięci, a następnie wartość odczytana jest zapisywana do pamięci cache I read-write allocate - alokuje linię cache podczas odczytu/zapisu z/do pamięci pod warunkiem, że jej zawartość nie znajduje się już w pamięci cache. Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 18 / 22 Koprocesor 15 i pamięć podręczna I Funkcja Clean and flush cache Drain write buffer Cache lockdown Round-robin replacement Pierwszy rejestr c7 c7 c9 c15 Drugie rejestry c5, c6, c7, c10, c13, c14 c10 c0 c0 Opcode 0, 1, 2 4 0, 1 0 Flush cache oznacza wyczyszczenie pamięci podręcznej z jej zawartości, fizycznie następuje czyszczenie statusu valid. Clean cache oznacza wymuszenie zapisu linii o statusie dirty do głownej pamięci i wyczyszenie statusu dirty. Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 19 / 22 Flush cache I Komenda Flush cache Instrukcja MCR MCR p15, 0, Rd, c7, c7, 0 Flush data cache MCR p15, 0, Rd, c7, c6, 0 Flush instruction cache MCR p15, 0, Rd, c7, c5, 0 Mariusz Naumowicz Wspierane rdzenie ARM720T, ARM920T, ARM922T, ARM926EJ-S, ARM1022E, ARM1026EJ-S, StrongARM, XScale ARM920T, ARM922T, ARM926EJ-S, ARM940T, ARM946E-S, ARM1022E, ARM1026EJ-S, StrongARM, XScale ARM920T, ARM922T, ARM926EJ-S, ARM940T, ARM946E-S, ARM1022E, ARM1026EJ-S, StrongARM, XScale Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 20 / 22 Clean cache Komenda Flush instruction cache line Flush data cache line Clean data cache line Instrukcja MCR MCR p15, 0, Rd, c7, c5, 2 MCR p15, 0, Rd, c7, c6, 2 MCR p15, 0, Rd, c7, c10, 2 Clean and flush data cache line MCR p15, 0, Rd, c7, c14, 2 Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych Wspierane rdzenie ARM926EJ-S, ARM940T, ARM1026 ARM926EJ-S, ARM940T, ARM1026 ARM920T, ARM922T, ARM926EJARM940T, ARM946E-S, ARM1022E ARM1026EJ-S ARM920T, ARM922T, ARM926EJARM940T, ARM946E-S, ARM1022E ARM1026EJ-S 19 grudnia 2016 21 / 22 References Andrew Sloss, Dominic Symes, and Chris Wright. ARM System Developer’s Guide: Designing and Optimizing System Software. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 2004. Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 19 grudnia 2016 22 / 22