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

Podobne dokumenty