10
Шина данных
Одной ид самых общих характеристик процессора является разрядность его шины данных и шины адреса. Шина — это набор соединений, по которым передаются различные сигналы. В обычном компьютере есть несколько внутренних и внешних шин, а в каждом процессоре — две основные шины для передачи данных и адресов памяти: шина данных и шина адреса.
Когда говорят о шине процессора, чаще всего имеют в виду шину данных, представленную как набор соединений (или выводов) для передачи или приема данных. Чем больше сигналов одновременно поступает на шину, тем больше данных передается по ней за определенный интервал времени и тем быстрее она работает.
Данные в компьютере передаются в виде логического нуля и логической единицы через одинаковые промежутки времени — циклы. Для передачи логическй единицы в определенный временной интервал устанавливается высокий уровень напряжения (около 5 В), а для передачи логического нуля — сигнал напряжения низкого уровня (около 0 В). Чем больше линий (выводов) в шине, тем больше битов можно передать за одно и то же время. В процессорах 286 и 386 SХ для передачи и приема двоичных данных используется 16 соединений, поэтому у них шина данных называется 16-разрядной. У 32-разрядного процессора, например 386 DХ или 486, таких соединений вдвое больше, поэтому за единицу времени он передает вдвое больше данных, чем 16-разрядный процессор. Процессоры типа Pentium имеют 64-разрядные внешние шины данных. Эго означает, что процессоры Pentium могут передавать в системную память (или получать из нее) одновременно 64 бита (8 байт) данных. Если в руководстве или техническом описании говорится о 16или 32-разрядном компьютере, то обычно имеется в виду разрядность шины данных процессора. По ней можно приблизительно оценить производительность процессора, а значит, и всего компьютера.
Разрядность шины данных процессора определяет также разрядность банка памяти. Это означает, что 32-разрядный процессор, например класса 486, считывает из памяти или записывает в память 32 бита одновременно. Процессоры класса Pentium, включая Pentium II, считывают из памяти или записывают в па-
11
мять 64 бита одновременно. Поскольку разрядность стандартных 72-контактных модулей памяти SIММ равна всего лишь 32 разрядам, в большинстве систем класса 486 устанавливают по одному модулю, а в большинстве систем класса Pentium — по два модуля одновременно. Разрядность модулей памяти DIММ равна 64, поэтому в системах класса Pentium устанавливают по одному модулю, что облегчает процесс конфигурирования системы, так как эти модули можно устанавливать или удалять по одному. Каждый модуль DIММ имеет такую же производительность, как и целый банк памяти в системах Pentium.
Внутренние региcтры
Количество битов данных, которые может обработать процессор за один прием, характеризуется разрядностью внутренних регистров. Регистр — это, по существу, ячейка памяти внутри процессора; например, процессор может складывать числа, записанные в двух различных регистрах, а результат сохранять в третьем регистре. Разрядность регистра определяет количество разрядов обрабатываемых процессором данных. Разрядность регистра также определяет характеристики программного обеспечения и команд, выполняемых чипом. Например, процессоры с 32-разрядными внутренними регистрами может выполнять 32-раз- рядные команды, которые обрабатывают данные 32-разрядными порциями, а процессоры с 16-разрядными регистрами этого делать не могут.
В некоторых процессорах разрядность внутренней шины данных (а шина состоит из линий передачи данных и регистров!) больше, чем разрядность внешней. Так, например, в процессорах 8088 и 386 SХ разрядность внутренней шины только вдвое больше разрядности внешней шины. Такие процессоры (их часто называют половинчатыми или гибридными) обычно являются более дешевыми вариантами исходных. Например, в процессоре 386 SХ внутренние операции 32-разрядные, а связь с внешним миром осуществляется через 16-разрядную внешнюю шину. Это позволяет разработчикам проектировать относительно дешевые системные платы с 16-разрядной шиной данных, сохраняя при этом совместимость с 32-разрядным процессором 386.
12
Если разрядность внутренних регистров больше разрядности внешней шины данных, то для их полной загрузки необходимо несколько циклов считывания. Например, в процессорах 386 DХ и 386 SХ внутренние регистры 32-разрядные, но процессору 386 SХ для их загрузки необходимо выполнить два цикла считывания, а процессору 386 DХ достаточно одного. Аналогично передаются данные от регистров к системной шине. В процессорах Pentium шина данных 64-разрядная, а регистры 32-раз- рядные. Такое построение, на первый взгляд, кажется странным, если не учитывать, что в этом процессоре для обработки информации служат два 32-разрядных параллельных конвейера. Pentium во многом подобен двум 32-разрядным процессорам, объединенным в одном корпусе, а 64-разрядная шина данных позволяет быстрее заполнить рабочие регистры. Архитектура процессора с несколькими конвейерами называется суперскалярной.
Современные процессоры шестого поколения, например Pentium Рго и Pentium II/III, имеют целых шесть внутренних конвейеров для выполняющихся команд. Хотя некоторые из указанных внутренних конвейеров специализированы (т.е. предназначены для выполнения специальных функций), эти процессоры могут все же выполнять три команды за один цикл.
Шина адреса
Шина адреса так же представляет собой набор проводников; по ним передается адрес ячейки памяти, в которую или из которой пересылаются данные. Как и в шине данных, по каждому проводнику передается один бит адреса, соответствующий одной цифре в адресе. Увеличение количества проводников (разрядов), используемых для формирования адреса, позволяет увеличить количество адресуемых ячеек. Разрядность шины адреса определяет максимальный объем памяти, адресуемой процессором.
Например, в процессорах 8086 и 8088 используется 20-разрядная шина адреса, поэтому они могут адресовать 1 048 576 байт (1 Мбайт) памяти.
Шины данных и адреса независимы, и разработчики микросхем выбирают их разрядность по своему усмотрению, но, чем больше разрядов в шине данных, тем больше их и в шине адреса. Разрядность этих шин является показателем возможностей про-
13
цессора: количество разрядов в шине данных определяет способность процессора обмениваться информацией, а разрядность шины адреса — объем памяти, с которым он может работать.
1.1.4 Кэш-память
Кэш (cache, запас) — это быстродействующая буферная память, находящаяся между процессором и основной памятью. Кэш первого уровня (Level I) служит для частичной компенсации разницы в скорости процессора и основной памяти — в него помещаются наиболее часто используемые данные. Когда процессор первый раз обращается к ячейке памяти, ее содержимое параллельно копируется в кэш, и в случае повторного обращения в скором времени может быть с гораздо большей скоростью выбрано из кэша. Обращения к встроенной кэш-памяти происходят без состояний ожидания, поскольку его быстродействие соответствует возможностям процессора. Благодаря этому обмен данными с относительно медленной системной памятью значительно ускоряется. Процессору не нужно ждать, пока очередная порция программного кода или данных поступит из основной области памяти, а это приводит к ощутимому повышению производительности компьютера. При отсутствии кэш-памяти такие паузы возникали бы довольно часто. В современных процессорах встроенный кэш играет еще более важную роль, потому что он часто является единственным типом памяти во всей системе, который может работать синхронно с процессором.
В большинстве современных процессоров используется множитель тактовой частоты, следовательно, они работают на частоте, в несколько раз превышающей тактовую частоту системной платы, к которой подключены эти процессоры. Например, тактовая частота 333 МГц, на которой работает процессор Pentium II, в пять раз превышает тактовую частоту системной платы, равную 66 МГц. Поскольку оперативная память подключена к системной плате, она также может работать только на тактовой частоте, не превышающей 66 МГц. В такой системе из всех видов памяти только встроенный кэш может работать на тактовой частоте 333 МГц. Рассмотренный в этом примере процессор
14
Pentium II на 333 МГц имеет встроенный кэш общим объемом 32 Кбайт (в двух отдельных блоках по 16 Кбайт).
Кэш первого уровня представляет собой интегрированный в процессор кэш-контроллер с быстродействующей статической кэш-памятью, доступ к которой обеспечивается за единицы наносекунд.
Очевидно, что кроме потока команд процессору своевременно нужен и поток данных, который обрабатывается по мере поступления, а не разбивается препроцессором в многотактовые последовательности микрокоманд для арифметического — логического устройства. Поэтому пришлось, наряду с большими массивами медленной динамической памяти, организовывать небольшие буферные статические массивы, широко известные как кэш второго уровня (Level II). Последние поначалу располагались на плате и работали на внешней тактовой частоте через контроллер памяти. Но с приходом процессоров Pentium Pro их перенесли сначала поближе к кристаллу процессора, а потом вообще интегрировали в сам кристалл, заставив работать на внутренней тактовой частоте ядра.
Если необходимые данные в кэше первого уровня отсутствуют, процессор обращается за ними в кэш-память второго уровня или непосредственно к системной шине. Что позволяет обращаться к различным участкам памяти с максимальной скоростью (на частоте процессора), а к остальным участкам — на частоте системной платы.
В системах Pentium пятого поколения кэш-память второго уровня устанавливается на системной плате и работает на частоте системной платы. В процессорах шестого поколения кэш-память второго уровня устанавливается в корпусе процессора. В процессорах Хеоn и Сеleron кэш-память второго уровня работает на частоте процессора. В оригинальных процессорах Pentium II кэш-память второго уровня работает на половинной частоте процессора.
Архитектура Кэш-памяти
Память для кэша состоит из собственно области данных, разбитой на блоки (строки), которые являются элементарными единицами информации при работе кэша, и области признаков (tag), описывающей состояние строк (свободна, занята, помечена