Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilRadka Vávrová
1
Kontakty Webpage přednášky: –http://ulita.ms.mff.cuni.cz/mff/sylaby/PRG017.HTML Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické informace (manuály ap.): –ftp://ulita.ms.mff.cuni.cz/techdoc/index.html Mail: –Jakub.Yaghob@mff.cuni.cz
2
Správa více procesorů Mechanismy –podpora pro atomické operace v hlavní paměti: zamykání sběrnice a udržování koherence cache –serializující instrukce (Pentium+) –APIC –L2 cache (P6+ internal, i486 & Pentium external) –L3 cache (Xeon) –Hyper-threading (P4 HT, Xeon HT) Cíle –udržení koherence hlavní paměti –udržení koherence cache –predikovatelné pořadí zápisů do paměti –distribuce přerušení mezi procesory –zvýšení výkonu systému podporou vícevláknových a víceprocesových aplikací současnosti
3
Uzamčené atomické operace Tři nezávislé mechanismy pro provedení uzamčených atomických operací: –zaručené atomické operace –zamknutí sběrnice signálem LOCK# nebo prefixem instrukce LOCK –protokoly pro udržení koherence cache při atomických operacích na cachované datové struktury (cache lock) (P6+)
4
Zaručené atomické operace i486+ –R/W bytu –R/W wordu (2B) zarovnaného na word –R/W doublewordu (4B) zarovnaného na doubleword Pentium+ –R/W quadwordu (8B) zarovnaného na quadword –R/W wordu z/do necachované paměti spadající do 32-bitové datové sběrnice P6+ –nezarovnaný R/W z/do wordu, doublewordu, quadwordu do cachované paměti uvnitř 32-bytové řádky cache
5
Zamykání sběrnice Automatické zamykání –XCHG s pamětí –nastavení B (busy) příznaku v popisovači TSS –změna popisovačů segmentů (příznak A, ostatní) –změna stránkovacích tabulek –přerušení (zaslání vektoru přerušení) Zamykání řízené SW (prefix LOCK ) –automaticky pro XCHG –BTS, BTR, BTC –XADD, CMPXCHG, CMPXCHG8B –INC, DEC, NOT, NEG, ADD, ADC, SUB, SBB, AND, OR, XOR –jinak výjímka #UD (invalid-opcode) –pro P6+ jsou atomické operace serializující
6
Samomodifikující se kód Možnost 1 –zapsat modifikovaný kód jako data do kódového segmentu –skok na nový kód nebo na „mezistanici“ –provádění nového kódu Možnost 2 –zapsat modifikovaný kód jako data do kódového segmentu –provedení serializující instrukce –provádění nového kódu Požadováno pro P6+ Velmi snižuje výkon Cross-modifikující kód –jeden CPU mění kód, druhý ho vykonává –nutno synchronizovat CPU a vykonat serializující instrukci
7
Pořadí paměťových operací Program-ordering –alias strong-ordering –R/W na sběrnici ve stejném pořadí jako v proudu instrukcí za všech okolností –i386 Processor-ordering –cílem je zvýšení rychlosti vykonávání instrukcí při udržení koherence paměti –individuálně podle procesoru Pentium a i486 –využívají procesor-ordering –při většině situací se chovají jako program-ordered –R miss předběhne W, pokud jsou všechny W cache hity
8
Processor-ordering pro P6+ - 1 1 CPU a paměť WB –R se provádí spekulativně v jakémkoliv pořadí –R mohou předběhnout bufferované W, ale procesor je konzistentní –W do paměti prováděny vždy v pořadí instrukcí kromě CLFLUSH, MOVNTI, MOVNTQ, MOVNTDQ, MOVNTPS, MOVNTPD –W mohou být bufferovány –W nejsou spekulativní, pouze pro skutečně prováděné instrukce –Data z bufferovaných W se mohou podstrčit čekajícím R uvnitř procesoru –R/W nemohou předběhnout I/O, zamknuté a serializující instrukce –R nemohou předběhnout LFENCE a MFENCE –W nemohou předběhnout SFENCE a MFENCE Více procesorů: –jednotlivé procesory jako samostatný procesor –zápisy z jednoho CPU jsou viditelné ve stejném pořadí všemi CPU –zápisy z jednotlivých CPU NEJSOU seřazeny mezi sebou
9
Processor-ordering pro P6+ - 2
10
„Fast string“ operace pro P6+ MOVS nebo STOS CPU uvažuje po řádcích cache - bude celá neplatná Přerušení pouze na hranicích řádků cache Podmínky –EDI a ESI zarovnány na 8B (PIII), EDI zarovnáno na 8B (P4) –vzestupné pořadí ( DF =0) –počáteční nastavení ECX >=64 –zdroj a cíl se nesmí překrývat o méně než řádka cache (64B pro P4 a Xeon, ostatní 32B) –paměť typu WB nebo WC
11
Zesílení nebo zeslabení modelu paměti I/O instrukce, zamknuté instrukce, LOCK a serializující instrukce zesilují ordering SFENCE (PIII), LFENCE a MFENCE (P4) poskytují možnosti pro určení pořadí paměťových operací a serializaci –SFENCE - všechny W dokončeny před touto instrukcí –LFENCE - všechny R dokončeny před touto instrukcí –MFENCE - všechny R a W dokončeny před touto instrukcí MTRR (Memory Type Range Registers) zesilují nebo zeslabují ordering (P6+) pro oblasti fyzické paměti PAT (Page Attribute Table) zesilují ordering pro stránky (PIII)
12
Změna stránkovacích tabulek pro více CPU „TLB shootdown“ Jednoduchá metoda –zaslat všem procesorům IPI (interprocessor interrupt) –zastavit všechny kromě aktivního –aktivní procesor provede změny –všechny procesory zneplatní příslušné položky v TLB –probudit všechny procesory Složitější ale rychlejší –na různých procesorech nesmí být během změny jiné TLB mapování –OS musí počítat se situací, kdy procesor použije „vyčpělou“ adresu během změny
13
Serializující instrukce CPU dokončí všechny změny příznaků, registrů a paměti Vyčistí všechny bufferované W Pentium+ Privilegované –MOV CRx, MOV DRx, WRMSR, INVD, INVLPG, WBINVD, LGDT, LIDT, LTR Neprivilegované serializující –CPUID, IRET, RSM Neprivilegované instrukce pro paměťové pořadí –SFENCE, LFENCE, MFENCE
14
MPS 1.4 Multiple-processor specification Start více procesorů bez speciálního HW HW může zahájit start bez speciálního signálu předdefinovanému startovacímu procesoru Všechny IA-32 procesory mají stejný start (včetně HT) Rozdílné mechanismy pro různé rodiny CPU (P4 x Xeon starý x Xeon nový) BSP = Bootstrap Processor AP = Application Processor
15
Hyper-threading - 1 Jeden fyzický procesor je schopen vykonávat 2 nebo více proudů instrukcí Lze rozeznat pomocí CPUID Části procesoru jsou odděleny, části jsou sdíleny
16
Hyper-threading - 2 Lokální věci pro logický procesor –obyčejné registry EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP –segmentové registry CS, DS, ES, FS, GS, SS –EFLAGS a EIP –x87 ( ST0 - ST7 ), MMX ( MM0 - MM7 ) a XMM registry ( XMM0 - XMM7 ) –řídící registry CRx, GDTR, IDTR, LDTR –ladící registry DRx –time stamp –většina MSR (včetně PAT ) –lokální APIC Sdílené věci –MTRR –TLB –cache, sběrnice –některé MSR
17
Hyper-threading - 3 Vyžaduje podporu OS Používání PAUSE ve spin-locku –kódováno jako REP NOP –starší IA-32 procesory chápou PAUSE jako NOP –AMD procesory to tak NECHÁPOU Využití HLT –stojící logický procesor nesmí čekat aktivně, ale musí stát na HLT Plánování –plánovat nejdříve na všechny logické procesory 0 na fyzických procesorech, pak teprve na logické 1, atd. Neměřit rychlost procesoru aktivní smyčkou Locky a semafory umisťovat samostatně zarovnaně do 128B paměti
18
APIC Lokální APIC –interně v procesorech –přijímá přerušení z nožiček, z vnitřních zdrojů a od I/O APICu –posílá a přijímá IPI (interprocessor interrupt) I/O APIC –součást chipsetu –přijímá přerušení z externích zdrojů a převádí je na IPI –distribuuje IPI mezi různé procesory xAPIC –nová architektura –extended APIC –P4 a Xeony
19
APIC – xAPIC xAPIC systém (P4 a Xeony)
20
APIC – „tradiční“ APIC APIC systém (Pentium a P6+)
21
APIC – blokové schéma lokálního APICu
22
Reset Nastaví registry CPU na definovaný stav CPU je v reálném režimu Zneplatní vnitřní cache, TLB a BTB Teď už to závisí na CPU –P6+, P4 a Xeony – všechny procesory spustí inicializační protokol, jeden z nich je zvolen jako BSP a pokračuje v inicializaci OS, ostatní AP stojí a čekají na IPI „Wait for Startup“ –Pentium a i486 – HW ví, který CPU je BSP, ostatní AP stojí a čekají na SIPI INIT –obdoba reset –vnitřní cache, MSR, MTRR, x87, SSE se nezmění –přechod do reálného režimu
23
Reset – stav registrů EFLAGS00000002hCR060000010h EIP0000FFF0hCRx0 CSF000hEAX,...0 BázeFFFF0000hEDX000006xxh LimitFFFFhSTx+0.0 xS0000x87 CW0040h Báze00000000x87 SW0000 LimitFFFFhx87 Tag5555h GDTR,IDTR00000000XMMx0 LimitFFFFhMXCSR1F80h LDTR,TR0000DRx0 Báze00000000DR6FFFF0FF0h LimitFFFFhDR700000400h
24
Mikrokód P6+ má rozhraní na nahrání bloku mikrokódu s opravami do CPU Mikrokód dodává Intel přímo výrobcům BIOSů Správný mikrokód do správného CPU Mikrokód musí být načten před spuštěním L2 cache a ještě další různá omezení (např. nesmí překračovat limit segmentu)
25
Vnitřní cache Struktura vnitřních cache pro P4 a Xeony
26
Co je co a kolik čeho? Typ cachePentiumPentium Pro & spol.P4 a Xeon Trace cacheN/A 12Kμops; 8ca L1 instrukce8(2ca)/16K(4ca);32B16K; 32B; 4caN/A L1 data8(2ca)/16K(4ca);32B 8K; 64B; 4ca L2 společnáexterní128K-2M; 32B; 4ca256,512K; 64B; 8ca L3 společnáN/A Xeon 512K,1M; 64B; 8ca Instr TLB 4K32; 4ca/full32; 4ca128; 4ca Data TLB 4K64; 4ca/full64; 4ca64; full ca Instr TLB LP==ITLB4K2; full cafragmentováno?? Data TLB LP8; 4ca/==DTLB4K8; 4ca==DTLB4K Store buffer2*1/4*41224 WC bufferN/A46
27
Něco terminologie Cache používají MESI protokol k udržení koherence Naplnění řádky cache (cache line fill) –operand se čte z cachovatelné paměti –načte se celá řádka Zásah cache (cache hit) –operand je stále ještě v cache –příští přístup je do cache místo do hlavní paměti Minutí cache (cache miss) –operand není v cache Zásah zápisu (write hit) –pokud je platná řádka cache, zapíše se do ní, příp. i do hlavní paměti –provede se cache line fill, a pak viz výše Čmuchání (snooping) –CPU na sběrnici kontrolují přístupy do paměti s adresami v cache
28
Typy paměti - přehled Typ paměti Možnost cachování Možnost cachování zápisů Spekulativní čtení Pořadí paměťových operací Strong Uncacheable (UC) NE strong ordering Uncacheable (UC-) NE strong ordering, lze změnit pomocí WC v MTRR Write Combining (WC) NE ANOweak ordering Write Through (WT)ANONEANOspekulativní Write Back (WB)ANO spekulativní Write Protected (WP)ANO (R)NEANOspekulativní Pentium nemá UC-, WC, WP (řízení pomocí NW,CD) UC- až od PIII (řízení pomocí PAT)
29
Typy paměti - 1 Strong Uncacheable (UC) –hlavní paměť není cachovaná –všechny čtení i zápisy mají program ordering, žádné spekulace –paměťově mapované I/O –velmi snižuje výkon systému Uncacheable (UC-) –jako UC, ale lze změnit změnou MTRR na WC –pouze P4, Xeon, PIII, pomocí PAT Write Combining (WC) –hlavní paměť není cachovaná –žádný protokol na udržení koherence –spekulativní čtení povoleno, NENÍ zaručeno pořadí zápisů –zápisy jsou pozdrženy a spojovány v WC bufferech –vhodné pro video frame buffery
30
Typy paměti - 2 Write Through (WT) –R a W hlavní paměti cachovány –R při zásahu cache z řádky cache, při minutí naplnění řádky, spekulativní R –W při zásahu do cache i do hlavní paměti, při minutí nenaplňuje řádku –WC povoleno –vhodné pro frame buffery nebo zařízení, co neumí snooping Write Back (WB) –R a W hlavní paměti cachovány –R při zásahu cache z řádky cache, při minutí naplnění řádky, spekulativní R –W při zásahu do cache, při minutí naplní řádku –protokol pro cache koherenci Write Protected (WP) –R při zásahu cache z řádky cache, při minutí naplnění řádky, spekulativní R –W propagovány na sběrnici
31
MESI Každá řádka cache má 2 bity pro stav Transparentní pro program L1 instrukcí má pouze SI Přechod snoopingem –detekuji zápis do řádky s M - zrušit transakci, zápis řádky přímo jinému CPU s odbočkou do paměti, přechod do I Stav řádkyM (Modified)E (Exclusive)S (Shared)I (Invalid) Je platná?ANO NE Kopie v paměti je......mimo...přesná N/A Kopie u jiných CPU?NE Možná Zápis do řádky...... nejde na sběrnici...nejde na sběrnici, přechod na M...přechod na E...přímo do hlavní paměti
32
Řízení cache CR0[CD] –=0 - cachování povoleno pro celou paměť, může být dále omezeno –=1 - cachování zrušeno pro Pentium, pro ostatní omezeno CR0[NW] –=0 - WB povoleno, může být dále omezeno –=1 - není WB PCD a PWT ve stránkovacích tabulkách a adresářích –zakazuje cachování/WB pro stránky nebo stránkovací tabulky PCD a PWT v CR3 –zakazuje cachování/WB pro stránkovací adresáře G ve stránkovacích tabulkách a adresářích –neruší mapování v TLB při implicitním čištění (task switch, mov CR3,eax) CR4[PGE] –povoluje funkci G ve stránkovacích tabulkách a adresářích MTRR (P6+) –typy paměti pro oblasti fyzické paměti PAT (PIII+) –typy paměti pro stránky
33
Omezení typu paměti Je-li CR0[CD]=1, pak je cachování zakázáno Při CR0[CD]=0 je dále omezení podle PAT (nebo PCD a PWT ) a MTRR Vždy se vybere nejvíce omezující mechanismus WT „vyhrává“ nad WB WC „vyhrává“ nad WT i WB
34
MTRR (Memory Type Range Registers) Přiřazení typu paměti oblastem fyzické paměti Kontrola vlastnosti MTRR pomocí CPUID MSR r/o registr IA32_MTRRCAP –podpora pro pevné rozsahy –počet volných rozsahů (P6+ má 8) –podpora typu WC Mimooblast –MSR IA32_MTRR_DEF_TYPE udává typ paměti pro oblasti fyzické paměti nepokryté pevnými i volnými rozsahy Pevné rozsahy –8 rozsahů po 64KB v nejnižších 512KB (00000000-0007FFFF) –16 rozsahů po 16KB v následujících 256KB (00080000-000BFFFF) –64 rozsahů po 4KB v následujících 256KB (000C0000-000FFFFF) Volné rozsahy –adresa & PHYSMASKn = PHYSBASEn & PHYSMASKn –pokud se překrývají s pevným rozsahem, vyhrává pevný rozsah
35
PAT (Page Attribute Table) Přiřazení typu paměti oblastem lineárního adresového prostoru Kontrola vlastnosti PAT pomocí CPUID MSR IA32_CR_PAT definuje 8 typů Příslušný typ vybrán z IA32_CR_PAT indexací pomocí PAT (4), PCD (2), PWT (1) ze stránkovacích tabulek Nelze zapnout/vypnout Počáteční nastavení po RESET odpovídá zpětně PCD a PWT –2 * WB, WT, UC-, UC
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.