Конвейеризация вычислений

Основные направления в архитектуре процессоров

 

Ранее уже были рассмотрены основные составляющие центрального процессора. Б данном разделе основное внимание уделено вопросам общей архитектуры про­цессоров как единого устройства и способам повышения их производительности.

Совершенствование элементной базы уже не приводит к кардинальному росту производительности ВМ. Более перспективными в этом плане представляются архитектурные приемы, среди которых один из наиболее значимых — конвейери­зация.

Для пояснения идеи конвейера сначала обратимся к рис. 50, а, где показан от­дельный функциональный блок (ФБ). Исходные данные помещаются во входной регистр Ргвх, обрабатываются в функциональном блоке, а результат обработки фик­сируется в выходном регистре Ргвых. Если максимальное время обработки в ФБ равно Ттaх, то новые данные могут быть занесены во входной регистр Рвх не ранее, чем спустя Тmax.

 

Теперь распределим функции, выполняемые в функциональном блоке ФБ (см рис. 50, а), между тремя последовательными независимыми блоками: ФБ1, ФБ2 и ФБ3, причем так, чтобы максимальное время обработки в каждом ФБ, было одинаковым и равнялось Tmax/3. Между блоками разместим буферные регистры Ргi (рис.50, б), предназначенные для хранения результата обработки в ФБi, на случай, если следующий за ним функциональный блок еще не готов использовать этот результат. В рассмотренной схеме данные на вход конвейера могут подаваться с интервалом Tmax/3 (втрое чаще), и хотя задержка от момента поступления первой единицы данных в Ргвх до момента появления результата ее обработки на выходе Ргвых по-прежнему составляет Ттaх, последующие результаты появляются на выхо­де Ргвых уже с интервалом Ттах/3.

На практике редко удается добиться того, чтобы задержки в каждом ФБi были одинаковыми. Как следствие, производительность конвейера снижается, посколь­ку период поступления входных данных определяется максимальным временем их обработки в каждом функциональном блоке. Для устранения этого недостатка или, по крайней мере, частичной его компенсации каждый буферный регистр Ргi, сле­дует заменить буферной памятью БПi, способной хранить множество данных и орга­низованной по принципу FIFO — «первым вошел — первым вышел» (рис. 50, в). Обработав элемент данных, ФБi заносит результат в БПi, извлекает из БПi-1 новый элемент данных и приступает к очередному циклу обработки, причем эта последо­вательность осуществляется каждым функциональным блоком независимо от дру­гих блоков. Обработка в каждом блоке может продолжаться до тех пор, пока не ликвидируется предыдущая очередь или пока не переполнится следующая оче­редь. Если емкость буферной памяти достаточно велика, различия во времени об­работки не сказываются на производительности, тем не менее желательно, чтобы средняя длительность обработки во всех ФБi была одинаковой.

В архитектуре вычислительных машин можно найти множество объектов, где конвейеризация обеспечивает ощутимый прирост производительности ВМ. Ранее уже рассматривались два таких объекта — операционные устройства и память, од­нако наиболее ощутимый эффект достигается при конвейеризации этапов машин­ного цикла.

По способу синхронизации работы ступеней конвейеры могут быть синхронными и асинхронными. Для традиционных ВМ характерны синхронные конвейеры. Связано это, прежде всего, с синхронным характером работы процессоров. Ступе­ни конвейеров в процессоре обычно располагаются близко друг от друга, благода­ря чему тракты распространения сигналов синхронизации получаются достаточ­но короткими и фактор «перекоса» сигналов становится не столь существенным. Асинхронные конвейеры оказываются полезными, если связь между ступенями не столь сильна, а длина сигнальных трактов между разными ступенями сильно рознится. Примером асинхронных конвейеров могут служить систолические массивы (систолическая обработка будет рассмотрена в последующих разделах).