Under det senaste året har vi rapporterat om Simultaneous Multi-Threading (SMT)-teknik på Intel-processorer. Även om det ursprungligen började som en potentiell betydelse bakom kodnamnet Jackson Technology, avslöjade Intel officiellt sin SMT-teknik vid förra höstens IDF. Kodnamnet Jackson ersattes med en mycket mer passande titel, Hyper-Threading. Men innan du kan förstå hur Hyper-Threading fungerar måste du förstå grunden för det, mer specifikt vad trådar är och hur de fungerar.
Vad får en applikation att köras? Vad talar om för din CPU vilka instruktioner som ska utföras och på vilka data? All denna information finns i den kompilerade koden för applikationen du kör och när du (användaren) ger applikationen input, skickar applikationen i sin tur trådar till din CPU som talar om för den vad den ska göra för att svara på den inmatningen . För CPU:n är en tråd en samling instruktioner som måste utföras. När du träffas av en raket i Quake III Arena eller när du klickar på öppna i Microsoft Word, skickas processorn en uppsättning instruktioner att utföra.
CPU:n vet exakt var den ska få dessa instruktioner ifrån på grund av ett litet nämnt register som kallas Program Counter (PC). PC:n pekar på platsen i minnet där nästa instruktion som ska exekveras lagras; när en tråd skickas till CPU:n laddas trådens minnesadress in i PC:n så att CPU:n vet var den ska börja exekvera. Efter varje instruktion inkrementeras datorn och denna process fortsätter till slutet av tråden. När tråden är klar skrivs datorn över med platsen för nästa instruktion som ska opereras. Trådar kan avbryta varandra och tvingar CPU:n att lagra det aktuella värdet på datorn i en stack och ladda ett nytt värde i datorn. Men den enda begränsningen som återstår är att endast en tråd kan köras vid varje given tidpunkt.
Det finns en allmänt känd väg runt detta, och det är att använda sig av två CPU:er; om varje CPU kan exekvera en tråd åt gången, kan två CPU:er exekvera två trådar. Det finns många problem med detta tillvägagångssätt, många av dem bör du redan vara bekant med. Till att börja med är flera processorer dyrare än bara en. Det finns också en overhead förknippad med hanteringen av de två CPU:erna samt delning av resurser mellan de två. Till exempel, fram till lanseringen av AMD 760MP-kretsuppsättningen, delade alla x86-plattformar med multiprocessorstöd den tillgängliga FSB-bandbredden mellan alla tillgängliga processorer. Men den största nackdelen av alla råkar vara det faktum att applikationer och operativsystem måste kunna stödja denna typ av exekvering. Att kunna skicka flera exekveringstrådar till hårdvara kallas generellt för multithreading; OS-stöd krävs för att möjliggöra multithreading medan programstöd är nödvändigt för att få en påtaglig prestandaökning genom att ha flera processorer (i de flesta fall). Tänk på det när vi pratar om ett annat tillvägagångssätt för samma mål – att kunna köra mer än en tråd åt gången – det är dags att introducera Intels Hyper-Threading-teknik.