Temporal multithreading

Поделись знанием:
Перейти к: навигация, поиск

Временна́я многопоточность (англ. Temporal multithreading) — одна из двух главных форм многопоточности, которая может быть реализована в процессорах аппаратно. Второй формой является одновременная многопоточность. Различие между этими двумя формами состоит в максимальном количестве потоков, которые исполняются на каждой стадии вычислительного конвейера в определенный тактовый цикл процессора. При временной многопоточности в каждый данный момент исполняется только один поток, а при одновременной многопоточности — несколько. Некоторые специалисты используют термин super-threading в качестве синонима временной многопоточности.[1]

На обычном процессоре управление потоками осуществляется операционной системой. Поток исполняется до тех пор, пока не произойдет аппаратное прерывание, системный вызов или пока не истечёт отведённое для него операционной системой время. После этого процессор переключается на код операционной системы, который сохраняет состояние потока (его контекст) и переключается на состояние следующего в очереди потока, которому тоже выделяется время на исполнение. При такой многопоточности достаточно большое количество тактов процессора тратится на код операционной системы, переключающий контексты. Если поддержку потоков реализовать аппаратно, то процессор сам сможет переключаться между потоками, а в идеальном случае — выполнять несколько потоков одновременно за каждый такт.





Варианты

Временная многопоточность делится на две главные под-формы:

Крупнозернистая (Coarse-grained multithreading (CGMT), Blocked multithreading)

В конвейере процессора исполняется только один поток некоторый продолжительный промежуток времени. В момент, когда этому потоку требуются например данные из памяти, а данные отсутствуют в кэше, процессор сохраняет состояние потока и переключается автоматически на другой поток, пока тому тоже не понадобится что-то из памяти. Другимим причинами переключения на другой поток могут является заданное количество тактов процессора. Таким образом конвейер процессора не простаивает и почти всегда занят исполнением кода того или иного потока.

Тонкозернистая (Fine-grained multithreading (FGMT), Interleaved multithreading )

Процессор переключается между потоками программы при каждом такте. Тонкозернистая многопоточность гарантирует исполнение всех потоков, приписанных к процессору. Выполнение каждого конкретного потока замедляется, но общая пропускная способность процессора — увеличивается. Многопоточные процессоры, реализующие тонко-зернистую многопоточность, хорошо справляются с программами, где присутствует множество потоков, например сервера баз данных, веб-сервера, сервера приложений, обрабатывающие множество одинаковых запросов от множества клиентов. Такие процессоры ещё называются barrel processors (исполнение потоков в процессоре чередуется каждый цикл как клёпки бочки по кругу).

Реализации

Процессоры с крупно-зернистой многопоточностью: в 1998 году компания IBM выпустила RS64-II (Northstar) — первый микропроцессор на рынке, в котором аппаратно поддерживалась многопоточность. Процессор поддерживал попеременное выполнение 2 потоков. Из недавних: двух-ядерный процессор Montecito (2006 г.) компании Intel с ядрами на основе Itanium 2, где каждое ядро исполняет два потока крупно-зернисто; Fujitsu SPARC64 VI (2007 г.).

Примерами процессоров, в которых была реализована тонко-зернистая многопоточность, могут быть процессор Denelcor HEP (1982 г.) — 8 потоков. В процессоре Cray/Tera MTA (1988 г.) могло выполняться поочередно 128 потоков. Из недавних: Sun UltraSPARC T1 (2005 г., 4 потока на ядро) и T2 (2008 г.), Oracle SPARC T3 (2010 г., 8 потоков), SPARC M7 (2015 г., 8 потоков).

Сравнение с одновременной многопоточностью

Временная многопоточность имеет преимущество перед одновременной в том, что из-за неё меньше греется процессор; однако недостатком является то, что в каждый данный такт процессора исполняется код только одного потока.

На скалярном процессоре тонко-зернистая многопоточность неотличима от одновременной. Для реализации одновременной многопоточности процессору требуется суперскалярный конвейер, и чем больше потоков одновременно планируется исполнять, тем выше должна быть суперскалярность конвейера, что повышает сложность процессорной логики.

Напишите отзыв о статье "Temporal multithreading"

Примечания

  1. [arstechnica.com/articles/paedia/cpu/hyperthreading.ars/3 Superthreading with a multithreaded processor]

Литература

  • (1999) Processor Architecture - From Dataflow to Superscalar and Beyond (ISBN 3540647988(англ.) - Глава 5: Future Processors to use Fine-Grain Parallelism и Глава 6: Future Processors to use Coarse-Grain Parallelism
  • David A. Patterson, John L. Hennessy. [books.google.com/books?id=v3-1hVwHnHwC Computer Architecture: A Quantitative Approach, 5th Edition]. — Morgan Kaufmann, 2011. — 856 p. — ISBN 012383872X. (англ.) — Глава 3.12 Multithreading: Exploiting Thread-Level Parallelism to Improve Uniprocessor Throughput
  • под ред. David Padua. [books.google.com/books?isbn=0387098445 Encyclopedia of Parallel Computing]. — Springer, 2012. — 2366 p. — ISBN 0387098445. (англ.) — стр.1223, статья Multi-Threaded Processors

Ссылки

  • [equipe.nce.ufrj.br/thome/grad/so/mataux/What%20is%20Simultaneous%20Multithreading.pdf What is Simultaneous Multithreading] (англ.) — описание проекта SMT для процессора Alpha 21464 (EV8), в котором дается хорошее описание понятий всех видов аппаратной многопоточности
  • [citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.96.9105&rep=rep1&type=pdf A Survey of Processors with Explicit Multithreading], ACM, March 2003, by Theo Ungerer, Borut Robi and Jurij Silc (англ.)

Отрывок, характеризующий Temporal multithreading



Был осенний, теплый, дождливый день. Небо и горизонт были одного и того же цвета мутной воды. То падал как будто туман, то вдруг припускал косой, крупный дождь.
На породистой, худой, с подтянутыми боками лошади, в бурке и папахе, с которых струилась вода, ехал Денисов. Он, так же как и его лошадь, косившая голову и поджимавшая уши, морщился от косого дождя и озабоченно присматривался вперед. Исхудавшее и обросшее густой, короткой, черной бородой лицо его казалось сердито.
Рядом с Денисовым, также в бурке и папахе, на сытом, крупном донце ехал казачий эсаул – сотрудник Денисова.
Эсаул Ловайский – третий, также в бурке и папахе, был длинный, плоский, как доска, белолицый, белокурый человек, с узкими светлыми глазками и спокойно самодовольным выражением и в лице и в посадке. Хотя и нельзя было сказать, в чем состояла особенность лошади и седока, но при первом взгляде на эсаула и Денисова видно было, что Денисову и мокро и неловко, – что Денисов человек, который сел на лошадь; тогда как, глядя на эсаула, видно было, что ему так же удобно и покойно, как и всегда, и что он не человек, который сел на лошадь, а человек вместе с лошадью одно, увеличенное двойною силою, существо.
Немного впереди их шел насквозь промокший мужичок проводник, в сером кафтане и белом колпаке.
Немного сзади, на худой, тонкой киргизской лошаденке с огромным хвостом и гривой и с продранными в кровь губами, ехал молодой офицер в синей французской шинели.
Рядом с ним ехал гусар, везя за собой на крупе лошади мальчика в французском оборванном мундире и синем колпаке. Мальчик держался красными от холода руками за гусара, пошевеливал, стараясь согреть их, свои босые ноги, и, подняв брови, удивленно оглядывался вокруг себя. Это был взятый утром французский барабанщик.
Сзади, по три, по четыре, по узкой, раскиснувшей и изъезженной лесной дороге, тянулись гусары, потом казаки, кто в бурке, кто во французской шинели, кто в попоне, накинутой на голову. Лошади, и рыжие и гнедые, все казались вороными от струившегося с них дождя. Шеи лошадей казались странно тонкими от смокшихся грив. От лошадей поднимался пар. И одежды, и седла, и поводья – все было мокро, склизко и раскисло, так же как и земля, и опавшие листья, которыми была уложена дорога. Люди сидели нахохлившись, стараясь не шевелиться, чтобы отогревать ту воду, которая пролилась до тела, и не пропускать новую холодную, подтекавшую под сиденья, колени и за шеи. В середине вытянувшихся казаков две фуры на французских и подпряженных в седлах казачьих лошадях громыхали по пням и сучьям и бурчали по наполненным водою колеям дороги.
Лошадь Денисова, обходя лужу, которая была на дороге, потянулась в сторону и толканула его коленкой о дерево.
– Э, чег'т! – злобно вскрикнул Денисов и, оскаливая зубы, плетью раза три ударил лошадь, забрызгав себя и товарищей грязью. Денисов был не в духе: и от дождя и от голода (с утра никто ничего не ел), и главное оттого, что от Долохова до сих пор не было известий и посланный взять языка не возвращался.
«Едва ли выйдет другой такой случай, как нынче, напасть на транспорт. Одному нападать слишком рискованно, а отложить до другого дня – из под носа захватит добычу кто нибудь из больших партизанов», – думал Денисов, беспрестанно взглядывая вперед, думая увидать ожидаемого посланного от Долохова.
Выехав на просеку, по которой видно было далеко направо, Денисов остановился.
– Едет кто то, – сказал он.
Эсаул посмотрел по направлению, указываемому Денисовым.
– Едут двое – офицер и казак. Только не предположительно, чтобы был сам подполковник, – сказал эсаул, любивший употреблять неизвестные казакам слова.
Ехавшие, спустившись под гору, скрылись из вида и через несколько минут опять показались. Впереди усталым галопом, погоняя нагайкой, ехал офицер – растрепанный, насквозь промокший и с взбившимися выше колен панталонами. За ним, стоя на стременах, рысил казак. Офицер этот, очень молоденький мальчик, с широким румяным лицом и быстрыми, веселыми глазами, подскакал к Денисову и подал ему промокший конверт.
– От генерала, – сказал офицер, – извините, что не совсем сухо…
Денисов, нахмурившись, взял конверт и стал распечатывать.
– Вот говорили всё, что опасно, опасно, – сказал офицер, обращаясь к эсаулу, в то время как Денисов читал поданный ему конверт. – Впрочем, мы с Комаровым, – он указал на казака, – приготовились. У нас по два писто… А это что ж? – спросил он, увидав французского барабанщика, – пленный? Вы уже в сраженье были? Можно с ним поговорить?
– Ростов! Петя! – крикнул в это время Денисов, пробежав поданный ему конверт. – Да как же ты не сказал, кто ты? – И Денисов с улыбкой, обернувшись, протянул руку офицеру.
Офицер этот был Петя Ростов.
Во всю дорогу Петя приготавливался к тому, как он, как следует большому и офицеру, не намекая на прежнее знакомство, будет держать себя с Денисовым. Но как только Денисов улыбнулся ему, Петя тотчас же просиял, покраснел от радости и, забыв приготовленную официальность, начал рассказывать о том, как он проехал мимо французов, и как он рад, что ему дано такое поручение, и что он был уже в сражении под Вязьмой, и что там отличился один гусар.