Hyper-Threading i Intelprocessorer

Relevanta dokument
Hyper Threading Intels implementation av SMT. Datorarkitekturer med operativsystem - EITF60. Felix Danielsson IDA2

What Is Hyper-Threading and How Does It Improve Performance

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Prestandapåverkan på databashanterare av flertrådiga processorer. Jesper Dahlgren

Multithreading in Intel Pentium 4 - Hyperthreading

MESI i Intel Core 2 Duo

Öka prestanda i Shared-Cache multi-core processorer

Emil Kristiansson Kurs: EDT621 Delmoment: Rapport. En introduktion till Smart cache

Parallellprogrammering i C++ 17 EDT621 Datorarkitekturer med Operativsystem Viktor Lindgren

Schemaläggningsmetodik för multi-core inom Windows 7 OS Vad är scheduling och hur schemalägger Windows OS sina processer?

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

Schemaläggnings metoderna AMP & SMP i en Multiprocessor

Processor pipelining genom historien (Intel i9-intel i7)

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar

Cacheminne i en Intel Core 2 Duo-processor

Hantering av hazards i pipelines

Datorarkitekturer med operativsystem ERIK LARSSON

Parallellism i CDC 7600, pipelinens ursprung

Pipelining i Intel Pentium II

Aktivitetsschemaläggning för flerkärninga processorer

Cacheminne Intel Core i7

Cache-koherens protokoll MESI och MOSI

Datorteknik ERIK LARSSON

Introduktion till programmering

PARALLELLISERING AV ALGORITMER PROCESSORER FÖR FLERKÄRNIGA

SIMD i Intel s P5- baserade Pentium MMX

Hur det går att minska effektutvecklingen i en processor genom att ändra pipeline

Utvecklingen från en 8 bitars till en 16 bitars mikroprocessor

Effektivitetsmätning av multitrådning på ARM Cortex-A53 mikroarkitektur

Minnesisolering för virtuella maskiner en hypervisorstudie

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Hantering av hazards i multi-pipelines

Datorarkitekturer med operativsystem ERIK LARSSON

Improved-MOESI Cache koherens Protokoll

Multiprocessorer. DEL2 TEKNIK Nr november BRANSCHTIDNINGEN FÖR NORDENS ELEKTRONIKER. förändringar

Datorhårdvaruteknik 1DV426 - Seminarie 1

Datorteknik ERIK LARSSON

SYNKRONISERING I EN SHARED MEMORY MULTIPROCESSOR

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

Pipelining i Intel 80486

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

MESI protokollet och dess derivater

Superscalar Bra: Hårdvaran löser allt: Hårdvara detekterar poten6ell parallellism av instruk6oner Hårdvara försöker starta exekvering (issue) av så

Datorteknik ERIK LARSSON

Tentamen den 18 mars svar Datorteknik, EIT070

Pipeline hos ARM Cortex-A53 och ARM Cortex-A73

Fetch-Execute. Datorteknik. Pipelining. Pipeline diagram (vid en viss tidpunkt)

Cacheminne i en AMD Opteron Processor

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

HF0010. Introduktionskurs i datateknik 1,5 hp

Hannes Larsson - IDA 2, LTH Campus Helsingborg. NEC V R 4300i. Interlock-handling EDT621

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

DIG IN TO Dator och nätverksteknik

Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall

Operativsystem. Informationsteknologi sommarkurs 5p, Agenda. Slideset 7. Exempel på operativsystem. Operativsystem

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn?

Datorsystem. Tentamen

Systemkrav Tekis-Bilflytt 1.3

MESI-Protokollet. Richard Elvhammar. Lund Universitet 4/12-16

Arm Cortex-A8 Pipeline

Föreläsning 2. Operativsystem och programmering

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

Datorarkitekturer med operativsystem ERIK LARSSON

Systemkrav WinServ II Edition Release 2 (R2)

Från utredning till implementation av Open Source inom Polisen

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

Datorarkitekturer med Operativsystem

Anujan Balasingam IDA14 NAND flashminnen

Närliggande allokering Datorteknik

Datorsystem. Laboration 3: Operativsystem Senast uppdaterad: 14 oktober 2012 Version 1.3. Student: Underskrift: Underskrift: Datum:

Parallellism i NVIDIAs Fermi GPU

Datorarkitekturer med operativsystem ERIK LARSSON

Multi-ported cache En rapport om några lösningar till att få flera minnesaccesser simultant.

Operativsystem. Hierarkin för hårdvara läses nerifrån

IBM POWER4, den första flerkärniga processorn och dess pipelines.

Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2015.Q1

DVG A06. Operativsystem, mm. Karlstads universitet Datavetenskap. DVG A06 Johan Eklund. Datavetenskap, Karlstads universitet 1

Bank Switching. Att nå multipla adressrymder. Av: Drazen Mijatovic

Operativsystem DVG A06. Definition. Varför operativsystem? - Vad är ett operativsystem?

Inledande programmering med C# (1DV402) Introduktion till programmering

Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2013.Q2

Olika OS. Unix, Linux och Windows. Unix. Unix. En översikt av ett par OS. Titt på hur de gör. Många varianter. Mycket gemensamt. En del som skiljer

Prestandamätning av RAID-lösningar

MESI-protokollets funktion i multiprocessorer

Definition DVG A06. Varför operativsystem? Operativsystem. Översikt. - Vad är ett operativsystem?

Jämförelse av skrivtekniker till cacheminne

CDC en jämförelse mellan superskalära processorer. EDT621 Campus Helsingborg av: Marcus Karlsson IDA

Systemkrav Bilflytt 1.3

Realtidssystem HT03. Vad är realtidssystem? Inbyggda system. Att programmera, Tasks (Uppgifter) Realtidssystem kräver analys

Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2013.Q3

Pipelining i RISC-processorn. Joakim Lindström Institutionen för informationsbehandling Åbo Akademi E-post: jolindst@abo.fi

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.)

Datorteknik ERIK LARSSON

Filöverföring i Windowsmiljö

Operativsystem - Processkedulering

Anpassad för Avaya INDeX, Avaya IP Office och Lake IX.

Systemrekommendation. Artvise Contact Center

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

TDDIU81. Processer och trådar. Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Transkript:

Lunds Tekniska Högskola Campus Helsingborg DATORARKITEKTURER MED OPERATIVSYSTEM EITF60 RAPPORT Hyper-Threading i Intelprocessorer 4 december 2017 Rasmus Hanning IDA2

Sammanfattning Det har sedan den första processorn skapades funnits ett intresse för en ökad processorhastighet och prestanda. En teknik för att uppnå detta kallas Hyper-Threading och är en teknik som gör att varje fysisk processorkärna kan ses och utnyttjas som två logiska processorkärnor, på bekostnaden av en minimal mängd extra hårdvara. Schemaläggningen av trådar för Hyper-Threading sköts av operativsystemets egen trådschemaläggare och fungerar identiskt med schemaläggningen för en processor med flera fysiska kärnor. Prestandamässigt så gäller det att prestandan generellt ökar lite, men för att kunna dra full nytta av Hyper-Threading så krävs att mjukvaran är optimerad för att exekveras med tekniken.

Introduktion I samband med jakten på allt snabbare datorsystem så har många olika möjliga förbättringar i processorer identifierats, bland annat en ökad klockfrekvens, högre instruktionsparallellism och förbättrad cachedesign. Problemet med dessa är att de antingen tar upp en stor snittyta på hårdvaran eller att de ökar strömförbrukningen för mycket. Istället så försöker man hitta tekniker för att öka prestandan utan att öka snittytan eller strömförbrukningen så mycket och en av dessa kallas Hyper-Threading. Hyper-Threading introducerades först år 2002 av Intel på deras Xeon-processor samt i Pentium 4-serien och hade därefter ett uppehåll fram tills 2008 då det kom tillbaka i Nehalemarkitekturen (Core i7). Tekniken liknar till viss del en teknik som kallas Symmetric Multiprocessing, men skiljer sig huvudsakligen i hårdvara och kostnad (Marr et. al 2002). Symmetric Multiprocessing (SMP) innebär en arkitektur där man har flera fysiska processorkärnor som alla har en egen uppsättning av cacheminnen, register och exekveringsenheter men som delar primärminne, se figur 1. Detta innebär att processorn kan arbeta med flera trådar parallellt men på bekostnad av en större mängd extra hårdvara och ökad strömförbrukning (Marr et. al 2002). Figur 1 (Marcraft International 2005). Överblick över en processorarkitektur som stödjer SMP. Hyper-Threading är Intels proprietära version av en teknik som kallas Simultaneous Multithreading (SMT). Det minsta kravet för att ett operativsystem ska kunna utnyttja SMT är att det redan stödjer Symmetric Multiprocessing. SMT innebär att man försöker efterlikna funktionen hos en flerkärnig processor med SMP-arkitektur fast i en enkelkärnig processor istället. Detta görs genom att man med hjälp av några mindre hårdvarumodifikationer skapar två logiska kärnor för varje fysisk kärna, och dessa ses sedan av operativsystemet som två fysiska kärnor. Dessa logiska kärnor delar cacheminnen och exekveringsenheter men varje logisk kärna har en egen uppsättning register för att kunna spara sina s.k. architectural states, d.v.s. nuvarande tillståndet på processorn, se figur 2. Alltså delar de två logiska kärnorna i en processor med stöd för SMT en stor del av resurserna vilket ökar den totala användningen av resurser i processorn (Marr et. al 2002 & Intel 2002). Figur 2 (Intel, 2009). Jämförelse av en enkärnig processor (grön ruta) med och utan Hyper-Threading.

Funktion I ett operativsystem så delas program upp i trådar vilka helt enkelt är serier av instruktioner. I en enkelkärnig processor utan Hyper-Threading så kan enbart en tråd bearbetas i taget. För att ändå kunna uppnå en till synes parallellism så används time sliceing vilket innebär att processorn tilldelar varje tråd ett litet tidsintervall i processorn. I en flerkärnig processor utan Hyper-Threading så kan lika många trådar som antalet kärnor bearbetas helt och hållet parallellt utan att behöva jobba med tidsintervall. I figur 3 visas detta i de två vänstra illustrationerna där orange och lila representerar en tråd var. Om man istället har en enkelkärnig processor som stödjer Hyper- Threading så kan dessa båda trådar i teorin bearbetas på samma tidsintervall som det hade tagit för den flerkärniga processorn, vilket visas i den högra illustrationen i figur 3. Huvudtanken är att minska tiden som processorn inte har något att göra. (Marr et. al 2009 & Intel 2002) Figur 3 (Intel, 2002). Jämförelse av schemaläggning hos en tvåkärnig processor och en processorkärna med stöd för Hyper- Threading. Schemaläggning Schemaläggning av trådar för processorer med Hyper-Threading sköts av operativsystemet och är i princip identiskt med hur schemaläggningen ser ut för flerkärniga processorer. Det exempel jag har valt att använda är Windows egen schemaläggare. Denna schemaläggare använder sig av ett prioritetssystem med en skala 0 31 där 31 är maximum. Vid start av en process så tilldelas denna en basprioritet (Real-time, High, Above Normal, Normal, Below Normal, and Idle) och denna process består sedan i sin tur av trådar som också har en individuell basprioritet (Time-critical, Highest, Above-normal, Normal, Below-normal, Lowest, and Idle). Korrelationen mellan denna terminologi för prioritet och prioritetsskalan 0 31 visas i figur 4. Utöver basprioriteten så har trådarna också en dynamisk prioritet, vilken från början utgår från basprioriteten och är den som används vid schemaläggning och som sedan justeras under exekvering. Vid schemaläggningen så bearbetas de trådar med högst prioritet först och alla trådar med samma prioritet precis likadant. (Microsoft Press Store, 2009). Schemaläggaren har också ett API som tillåter programmerare att skriva kod som är anpassad till processorer med Hyper-Threading. Med hjälp av denna kan man bland annat manuellt öka prioriteten på en tråd eller bestämma att en tråd enbart skall bearbetas på en specifik logisk kärna i processorn.

Schemaläggningen sköts därefter av några algoritmer som utgår ifrån ovanstående (The Microsoft Press Store, 2009) Figur 4 (The Microsoft Press Store 2009). Korrelation mellan prioritetsterminologi och prioritetsskalan 0-31 i Windows schemaläggare. Prestanda En påtalad fördel med Hyper-Threading är en ökad prestanda i hela systemet då dubbelt så många trådar kan exekveras samtidigt, men i praktiken så är det inte så enkelt. Eftersom de båda logiska kärnorna i en processor med Hyper-Threading delar på alla hårdvaruresurser så måste koden som skall exekveras vara anpassad efter detta. En annan faktor är att desto större del av koden som kan exekveras parallellt, desto högre kommer prestandaökningen att vara. Om koden inte är skriven för Hyper-Threading så finns en risk att systemet kan gå långsammare än det hade gjort utan Hyper- Threading då de båda logiska kärnorna frekvent försöker utnyttja samma hårdvaruresurser samtidigt. I figur 3 så visas en prestandajämförelse för en server som behandlar onlinetransaktioner där en genomsnittlig prestandaökning på 21% observerades i fallen med 1 eller 2 processorer med Hyper- Threading (Marr et. al, 2002).

Figur 5 (Marr et. al, 2002). Graf som visar prestandaökningen hos ett serversystem när Hyper-Threading är aktiverat. Diskussion Överlag så bidrar Hyper-Threading med en viktig teknik för förbättrad prestanda i system med endast små förändringar i hårdvaran. På senare år så har Hyper-Threading också börjat användas i redan flerkärniga system, t.ex. får en processor med 4 fysiska kärnor med hjälp av Hyper-Threading istället 8 logiska kärnor att arbeta med. Det enda egentliga problemet med Hyper-Threading är att det krävs en del kunskap och omsorg för att överhuvudtaget uppnå en prestandaökning i mjukvaran då koden måste anpassas för ändamålet. Det finns dock en stor potential ifall det blir praxis att skriva kod som kan exekveras så parallellt som möjligt och utan resurskonflikter, då det redan finns verktyg för att göra detta.

Referenser 1. Arkiverad version av Intels information om prestanda i Hyper-Threading, 2009 https://web.archive.org/web/20150217050949/https://software.intel.com/enus/articles/performance-insights-to-intel-hyper-threading-technology/ 2. Intels egen handledning för Hyper-Threading, 2002 https://software.intel.com/en-us/articles/introduction-to-hyper-threading-technology 3. Marcraft International, 2005, Server+ Certification Exam Cram, 1st Edition. Pearson IT Certification 4. Marr, D, Binns, F, Hill, D, Hinton, G, Koufaty, D, Miller, J, & Upton, M 2002, Hyper-Threading Technology Architecture and Microarchitecture, Intel Technology Journal, 6, 1, p. 1, Business Source Complete 5. Microsofts beskrivning av deras egen schemaläggare, The Microsoft Press Store 2009 https://www.microsoftpressstore.com/articles/article.aspx?p=2233328&seqnum=7