Hyperthreading процесори intel и C

Ако не използвам многонишкови парадигми, когато проектирам кода си, хипернишката ще раздели ли натоварването автоматично върху логическите ядра или ще трябва да бъда специално написана, за да се възползвам от другите ядра, както би трябвало да бъде за физическите ядра?


person Woodstock    schedule 09.09.2013    source източник
comment
Няма такава магия. Суперскаларните процесори, особено OOO процесорите правят магия - но това е вътре в едно ядро. Hyperthreading може да се разглежда като (много опростено) два тръбопровода пред едно пълно ядро... Освен това не съм напълно сигурен, че този въпрос в тази форма принадлежи на този сайт в мрежата на stackexchange.   -  person ppeterka    schedule 09.09.2013
comment
@ppeterka66 Мисля, че това е добър въпрос за Stackoverflow и вашият коментар би бил добър отговор на този въпрос.   -  person us2012    schedule 09.09.2013
comment
@us2012 Добре, публикувах го и му добавих малко блясък, тъй като беше малко обикновен..   -  person ppeterka    schedule 09.09.2013


Отговори (1)


По предложение на @us2012 публикувам това тук от моя коментар...

Няма такава магия. Суперскаларни процесори, особено OOO (Out Of Order Execution) процесорите правят магия - но това е вътре в едно ядро.

Напротив, Hyperthreading може да се разглежда като (много опростено) два конвейера отпред от едно пълно ядро.

процесорите AMD Bulldozer имат подобен бит, но те отидоха крачка по-далеч: целочисленото ядро ​​също е разделено на две, но двата конвейера + целочислените ядра споделят една единица с плаваща запетая. Това цяло се нарича модул, имащ две нишки.

TL;DR

Суперскаларна (от Wiki)

Суперскаларната CPU архитектура прилага форма на паралелизъм, наречена паралелизъм на ниво инструкции в рамките на един процесор. Следователно позволява по-бърза пропускателна способност на процесора, отколкото иначе би било възможно при дадена тактова честота. Суперскаларният процесор изпълнява повече от една инструкция по време на тактов цикъл чрез едновременно изпращане на множество инструкции към излишни функционални единици на процесора. Всяка функционална единица не е отделно ядро ​​на процесора, а ресурс за изпълнение в рамките на един процесор, като например аритметична логическа единица, превключвател на битове или умножител.

Неправилно изпълнение (от Wiki)

В компютърното инженерство изпълнението извън ред (OoOE или OOE) е парадигма, използвана в повечето високопроизводителни микропроцесори, за да се използват цикли на инструкции, които иначе биха били пропилени от определен тип скъпо забавяне. В тази парадигма процесорът изпълнява инструкции в ред, управляван от наличността на входните данни, а не от първоначалния им ред в програмата. По този начин процесорът може да избегне бездействие, докато данните се извличат за следващата инструкция в програмата, като вместо това обработва следващите инструкции, които могат да се изпълняват незабавно.

Hyperthreading (от... знаете откъде...)

Hyper-Threading (официално Hyper-Threading Technology или HT Technology, съкратено HTT или HT) е патентована реализация на едновременна многонишковост (SMT) на Intel, използвана за подобряване на паралелизирането на изчисленията (извършване на множество задачи наведнъж), изпълнявани на микропроцесори за персонални компютри. За първи път се появява през февруари 2002 г. на сървърни процесори Xeon и през ноември 2002 г. на настолни процесори Pentium 4.1 По-късно Intel включи тази технология в процесорите от сериите Itanium, Atom и Core 'i', наред с други.

Булдозер (не от уикито)

Bulldozer е първият основен редизайн на процесорната архитектура на AMD от 2003 г., когато фирмата пусна своите K8 процесори, и също така включва два 128-битови FMA-съвместими FPU, които могат да бъдат комбинирани в един 256-битов FPU. Този дизайн е придружен от два целочислени клъстера, всеки с 4 конвейера (етапът на извличане/декодиране е споделен). Bulldozer също ще въведе споделен L2 кеш в новата архитектура. Маркетинговата услуга на AMD нарича този дизайн модул. Дизайнът на процесор с 16 нишки ще включва осем от тези модули, [7] но операционната система ще разпознае всеки модул като две логически ядра.

person ppeterka    schedule 09.09.2013
comment
Благодаря за приноса, оценявам. - person Woodstock; 09.09.2013