Стартую. Микропроцессоры. Часть первая.
реклама
Вся информация взята с
overclockers.ru
ixbt.com
fcenter.ru
ferra.ru
terralab.ru
Если кого забыл - извиняйте!
Часть первая. Принципиальное устройство процессора
Архитектуру ЭВМ в целом и главного процессора (CPU – Central Processor Unit) впервые описал в 1946 году американский учёный Джон Фон Нейман, опиравшийся на исследования Беркса, Голдстайна, Моучли, Эккерта и других учёных, работавших над созданием первой ЭВМ. С тех пор принято считать, что современные процессоры имеют логическую структуру «неймановского» типа:
•Арифметико-логическое устройство (АЛУ)
•Блок управления
•Блок памяти
•Устройства ввода-вывода
Арифметико-логическое устройство.
Главные события в процессоре разворачиваются в так называемом "Арифметико-Логическом Устройстве" или просто АЛУ. Это именно тот отдел процессора, где происходит непосредственно обработка данных. Данные же, АЛУ получает из регистров. Оно считывает данные из регистров, производит определенные вычисления (например, сложение, вычитание, увеличение на единицу, логическое "или", и т.д.), а затем заносит результаты вычислений обратно в регистры. Впоследствии эти данные (посредством кэша) возвращаются в основную память.
Как известно, все современные микропроцессоры являются синхронными. Иными словами там есть счетчик, который регулярно посылает сигналы, представляющие собой, в идеале, чередование прямоугольных импульсов. При "падении" импульса мы выставляем затворы регистров (черные и синие стрелки), делается это для того, чтобы данные, поступающие из L1 кэша (синие стрелки, указывающие на регистры) записались в верный регистр. Помимо этого, если, вы обратили внимание, на рисунке изображены четыре горизонтальных стрелки слева от АЛУ. Это – шина команд. По ней передаются инструкции для АЛУ. (На нашем процессоре мы можем сделать до 2^4=16 различных команд). На все это уходит очень малое время Dsignal. Оно занимает лишь небольшую часть такта.
(кликните по картинке для увеличения)
Затем надлежащие данные следует отправить по шине (красно-желтая стрелка) в АЛУ. На доставку также уходит некоторое время (DB), так как прежде чем АЛУ начнет производить вычисления, значения чисел в регистрах должны хорошо установиться.
Коль скоро все выполнено, АЛУ приступает к работе. После вычислений (DАЛУ) результаты передаются шине данных регистров (еще DR). При "подъеме" следующего импульса они загружаются в регистры.
(кликните по картинке для увеличения)
для статьи
В этом заключается основная концепция современных микропроцессоров: в каждом цикле есть сигнал, который переключает определенные триггеры. Например, в регистры можно загружать данные лишь в начале ("подъеме") импульса, а считывать только в конце (загрузка в это время блокируется). Именно поэтому АЛУ может в течении одного цикла и считать, и записать данные в регистр.
Глядя на картину становится ясно, что высокая частота значит малое время между последовательными импульсами. Ясно также, что это время не может быть меньше чем сумма времен DSig, DB, DALU, и DR (плюс еще немного, для подстраховки). В противном случае, может оказаться так, что мы, например, начнем загружать новые данные, прежде чем результаты будут соответствующим образом занесены в регистры.
Соответственно, для того, чтобы наш блок АЛУ смог быстрее работать, нам надо или:
- сделать так, чтобы атомы ходили быстрее;
- уменьшить время вычислений;
- делать минимум операций за такт.
Последнее звучит крайне странно, но тем не менее рассмотрим это. Вот например, вместо 5 операций за цикл можно делать один. Следовательно можно будет сократить итоговое время. Этот принцип называется конвейеризацией. Использование конвейера позволяет всем устройствам процессора выполнять свою работу одновременно. Пусть, например, в нашем процессоре есть 4 устройства:
Fetcher – ищет следующую инструкцию.
Декодер – выясняет смысл инструкции.
АЛУ – выполняет инструкции.
Retire блок – возвращает результаты в память.
Итак, если в нашей схеме используются конвейеры, процесс будет выглядеть так: fetcher получает инструкцию 4, decoder декодирует инструкцию 3, АЛУ выполняет инструкцию 2, а результат инструкции 1 отправляется назад в память. И таким образом, в конце каждого такта мы имеем выполненную инструкцию.
ТактFetcherDecoderАЛУRetire
1инструкция 1
2инструкция 2инструкция 1
3инструкция 3инструкция 2инструкция 1
4инструкция 4инструкция 3инструкция 2инструкция 1
5инструкция 5инструкция 4инструкция 3инструкция 2
6инструкция 6инструкция 5инструкция 4инструкция 3
7инструкция 7инструкция 6инструкция 5инструкция 4
8инструкция 8инструкция 7инструкция 6инструкция 5
9инструкция 9инструкция 8инструкция 7инструкция 6
Суперконвейеризация, или разбиение конвейера на большое число стадий, позволяет делать за один цикл меньше, притом, что снаружи все выглядит так, что процессор делает все тот же объем работы за один цикл. Напомню, что это позволяет очень сильно увеличить частоту.
Шина.
Как данные, так и команды для их обработки процессор получает из ячеек оперативной памяти по системной шине. В составе системной шины различают шину данных, адресную шину и шину управления. По шине данных в регистры процессора копируются данные из ячеек памяти. По адресной шине процессор выбирает, начиная с какой ячейки он может получить данные. По шине управления процессор получает из оперативной памяти команды для обработки данных.
Во время работы компьютера, данные и программы хранятся в разных областях оперативной памяти. За тем, по каким адресам хранятся исполняемы команды, процессор следит сам с помощью специального регистра, отсчитывающего команды. Указания, из каких адресов брать данные, процессор получает от программ.
Кэш-память.
Внутри процессора все операции происходят в десятки раз быстрее, чем при обмене данными с оперативной памятью. Это означает, что чем реже процессор обращается к памяти, тем быстрее он способен работать. Чтобы сократить количество обращений, в ядро процессора встраивают сравнительно небольшой блок сверхоперативной памяти, способной работать на частоте ядра. Этот блок называется кэш-памятью.
При обращении к ячейкам оперативной памяти процессор получает не только те данные, которые он запросил для загрузки в регистры, но и ещё что-то «с запасом». Этот запас записывается в кэш-память. Если запасены данные потребуются процессору – процессор заберёт их из кэш. Если понадобятся другие – он их возьмёт из оперативной памяти, а содержимое кэша обновится.
Основные недостатки кэш-памяти – высокая стоимость и большое количество транзисторов, затрачиваемых на организацию самого кэша. А следовательно, огромные размеры. Обычно в процессоры ставятся два блока оперативной памяти, Кэш-память первого уровня (L1) обычно разделяется на область команд и область данных, а кэш-память второго уровня (L2) служит только для хранения данных. У последнего уровня кэша существуют два способа организации: инклюзивный (от англ. inclusive) и эксклюзивный (соответственно от англ. exclusive). Различия заключаются в том, что в первом случае данные из L1 копируются в L2, во втором же нет.
На организацию одной ячейки кэш-памяти обычно расходуется 6 транзисторов (архитектура 6T). Поэтому при общем её объёме 256-2176 эти самые транзисторы занимают львиную долю площади ядра: от 85 и до 95 процентов.
Разъём процессора.
Предположим, что мы собираем процессор и нам требуется обеспечить его соединение с другими устройствами посредством материнской платы. Все сигналы, как известно, в компьютере передаются посредством электрических импульсов (ток есть / тока нет – 1/0). Соответственно, нам требуются контакты для передачи всех этих сигналов. Для обеспечения этого взаимодействия нам потребуются шины данных, адреса, служебная шина и шина питания.
Для передачи данных используется шина данных – параллельная шина, то есть каждый разряд данных передаётся по своей выделенной линии. Следовательно, чем выше разрядность шины данных – тем более линий. Например, в процессоре i286 была 16-разрядная шина, а с первого пентиума и до последнего используется 64-разрядная шина, хотя ядро так и остаётся 32-разрядным.
Вторая группа сигналов – адресная. Здесь описываются номера ячеек, в которых хранятся данные. Шина является так же параллельной, то есть как и в предыдущей шине чем больше разрядность – тем больше контактов. Чем больше разрядность – тем больше процессор может адресовать под свои вычислительные нужды. Тот же i286 мог адресовать до 16 Мб памяти, а Pentium III до 64 Гб. При этом количество ножек увеличилось с 24 до 36.
Также существует служебная шина – шина, необходимая для работы процессора. По этой шине происходит обмен данными процессора с чипсетом, по ней же происходит тактирование и синхронизация процессора, управление напряжением, подаваемым на процессор.
Остаётся ещё одна шина, необходимая для функционирования процессоров – шина питания, ток необходим для открывания и закрывания затворов триггеров и работы транзисторов. Транзисторов миллионы, и каждый из них необходимо обеспечить хотя бы минимальным током, в доли микроампера. Таким образом, максимальный ток, потребляемый самым быстрым одноядерным процессором AMD Athlon 64 FX-57, составляет 80 ампер. При расчёте числа выводов на шину питания можно использовать мнемоническое правило: «Четыре вывода на один ампер потребляемого тока».
реклама
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Сейчас обсуждают