Итак, для получения стабильной опорной частоты на системной плате компьютера могут находиться один или два кварцевых генератора. Генерируемая ими тактовая частота используется, в частности, для синхронизации работы микропроцессора и системной шины. Как правило, имеются фиксированные величины тактовых частот для каждой модели микропроцессора. Например, существуют модели микропроцессоров, работающие на внешних тактовых частотах 33, 40, 50, 60 66, 100, 133 МГц. Повышение частоты свыше установленного предела может привести к возникновению ошибок и сбоям в работе, причем не только микропроцессора. Кстати, заметим, что для многих микропроцессоров существует и нижний уровень ограничения на тактовую частоту. Дело в том, что отдельные узлы микропроцессора могут быть построены по принципу динамической памяти и требовать постоянной регенерации.
Системная шина компьютера может тактироваться сигналом либо CLK2IN, либо CLK2IN/2, либо ATCLK (BBUSCLK). Для каналов прямого доступа в память DMA на системной плате используется еще один тактовый сигнал — SCLK, который зависит от частоты сигналов CLK2IN и ATCLK. Для часов же реального времени на системной плате используется свой "часовой" кварц (обычно 32 768 кГц).
В первых компьютерах IBM PC использовалась микросхема контроллера прерываний I8259 (Interrupt Controller), которая имеет восемь входов для сигналов прерываний (IRQO-IRQ7). Как известно, в одно и то же время микропроцессор может обслуживать только одно событие, и в этом ему помогает контроллер прерываний, который устанавливает для каждого из своих входов определенный уровень важности — приоритет. Наивысший приоритет имеет линия запроса прерывания IRQO, а наименьший — IRQ7, то есть приоритет убывает в порядке возрастания номера линии.
В IBM PC/AT восьми линий прерывания оказалось уже недостаточно, и их количество было увеличено до 15 путем каскадного включения двух микросхем контроллеров прерываний 18259. Такое каскадное включение осуществлялось путем соединения выхода второго контроллера ко входу IRQ2 первого. Важно понять следующее: линии прерывания IRQ8—IRQ15 (то есть входы второго контроллера) имеют приоритет ниже, чем IRQ1, но выше IRQ3.
В таблице 2 приведено распределение номеров прерываний по устройствам для большинства IBM РС/АТ - совместимых компьютеров.
IRQ | INT | Доступно | Использование |
0 | 08h | нет | Системные часы (18,2 Гц) |
1 | 09h | да | Клавиатура |
2 | OAh | да | Второй блок IRQ8-15 |
8 | 70h | нет | Таймер (1024 Гц) |
9 | 71h | да | Переадресовано на IRQ2 |
10 | 72h | да | - |
11 | 73h | да | - |
12 | 74h | 'да | - |
13 | 75h | нет | Сопроцессор |
14 | 76h | да | Контроллер винчестера |
15 | 77h | да | - |
3 | OBh | да | COM2 или COM4 |
4 | OCh | да | СОМ1 или COM3 |
5 | ODh | да | LPT2 |
6 | OEh | да | Контроллер флоппи |
7 | OFh | да | LPT1 |
Таблица 2. Таблица прерываний |
Для компьютеров, совместимых с PC/AT, обычно свободны всего четыре линии запроса прерываний: IRQ 10, 11, 12 и 15. Это, разумеется, касается только полноразмерных плат (16 разрядов данных). Для шин ISA и PCI используется одинаковый набор IRQ. Однако для PCI обычно используются прерывания, активные не по фронту, а по уровню, хотя и первая возможность также не исключается. Это позволяет использовать одну линию для передачи нескольких сигналов прерываний. Обычно для устройств PCI автоматически используются оставшиеся прерывания после установки ISA-плат.
Помимо прерываний, есть еще один способ вызывать какие-то события внутри PC без прямого вмешательства CPU. Это канал DMA.
1.6.3 Контроллер прямого доступа в память
Пересылка байта информации из одной области памяти в другую или из памяти в порт обычно проходит в два шага. На первом шаге CPU получает этот байт, из памяти и записывает в один из своих регистров. На втором шаге он записывает байт в место назначения.
Немного подумав, сразу же можно назвать два основных недостатка подобного подхода: Первый из них заключается в том, что во время перемещения байта CPU ни чем другим заниматься не может. Второй — на перемещение байта требуется два шага. Кажется, мелочь, но если нужно переместить не один байт, а целый блок, мелочью это уже не назовешь.
Внутри PC есть несколько типов устройств, которым нужно пересылать именно большие группы байт. Устройство чтения гибких дисков, например. Звуковые карты также очень интенсивно пересылают байты, настолько интенсивно, что часто они используют сразу несколько каналов DMA. Многие сканеры пользуются каналом DMA, и кто знает, какие еще подобные устройства появятся в дальнейшем.
Осознавая важность проблемы, разработчики первого PC решили завести дополнительный микропроцессор, называемый контроллером прямого доступа к памяти. Этот микропроцессор занимается тем, что по команде CPU перемещает заданное количество байт из одной последовательности адресов памяти в указанный порт, начиная с определенного адреса памяти.
Он может и принять из порта последовательность, байт определенной длины и поместить ее в память, начиная с указанного адреса. Все подобные пересылки происходят через каналы DMA, иначе говоря, каждой пересылкой занимается определенная часть контроллера DMA. Какая именно это будет часть, т. е. какой; канал займется этим, решает не сам контроллер, а устройство (CPU или какое-либо устройство, ввода-вывода), запросившее доступ к нему. А именно, перед тем как пользоваться DMA-контроллером для пересылки данных, такое устройство обязано сказать контроллеру, какой канал будет им использоваться. Так что каналы DMA — это ресурс, требующий аккуратного обращения, иначе при обращении к ним могут начаться конфликты устройств, которые ни к чему хорошему не приведут.
Разумеется, DMA подверглась улучшению, позволившему более эффективно использовать пропускную способность существующих шин. Новейшая версия, названная UltraDMA, может передавать данные IDE-устройствам со скоростью до 33 Мб/с (мегабайт в секунду), т. е. в два раза быстрее старой версии.
1.6.4 Другие вспомогательные микросхемы
К вспомогательным микросхемам в первую очередь можно отнести таймеры (реализованные раньше на микросхеме i8254) и часы реального времени (МС146818А). В зависимости от типа процессора на системной плате могут располагаться контроллеры шины и памяти, системный и периферийный контроллеры, кэш-Контроллер, а также буфера для данных и адресов.
1.6.5 Асинхронные и синхронные компьютеры
Несмотря на всю потрясающую скорость, электронным схемам все-таки требуется некоторое время на выполнение своих операций. Как много — варьируется от типа к типу. По большому счету, можно сделать компьютер вообще без часов. Скорость работы такого компьютера будет полностью зависеть от скорости работы его частей: чем быстрее части, тем быстрее компьютер. Данные, запрошенные из памяти, будут использованы, как только они появятся там, где их ждут. Результаты вычислений будут отправлены обратно в память, как только они станут доступны. Очень быстрые части, уже выполнившие свою работу, не будут простаивать без дела, дожидаясь, пока стрелки на главных часах разрешат им двигаться дальше. Спроектировать и сделать такой асинхронный компьютер можно, но сложно. Гораздо легче спроектировать компьютер, все части которого работают синхронно с некоторыми главными часами. Если эти часы тикают достаточно медленно, то можно быть уверенным, что все части компьютера смогут закончить назначенные им задачи до поступления сигнала продвинуться еще на один шаг вперед — следующего такта часов. Синхронные компьютеры настолько легче в проектировании и производстве, что практически каждый компьютер являет собой пример подобного подхода.
Самые знаменитые часы - это часы, тикающие внутри CPU. Это те самые 266 МГц (или 300 МГц, или 1800 МГц, или те, что стоят внутри вашего PC), о которых вы столь много слышите. От них зависит, насколько быстро работают самые быстрые части вашего PC. На сегодня лишь некоторые схемы CPU работают с этой скоростью, остальные части PC даже близко к ней не приближаются, исключая процессор Pentium Pro, кэш L2 которого, расположенный внутри модуля СРU также работает с этой скоростью. В Pentium II кэш L2 работает на половине частоты часов CPU. Во всех остальных процессорах х86 внешний кэш работает с такой же скоростью, как шина памяти.