Но вернемся к истории. Создатели PCI отказались от традиционной концепции, введя еще одну шину между процессором и обычной шиной ввода-вывода. Вместо того чтобы подключить ее непосредственно к шине процессора, весьма чувствительной к подобным вмешательствам (что отмечалось в предыдущем разделе), они разработали новый комплект микросхем контроллеров для расширения шины, смотрим рисунок
PCI добавляет к традиционной конфигурации шин еще один уровень. При этом обычная шина ввода-вывода не используется, а создается фактически еще одна высокоскоростная системная шина с разрядностью, равной разрядности данных процессора. Ком-пьютеры с шиной PCI появились в середине 1993 года, и вскоре она стала неотъемлемой частью компьютеров высокого класса.
Тактовая частота стандартной шины PCI равна 33 МГц, а разрядность соответствует разрядности данных процессора. Для 32-разрядного процессора пропускная способность составляет 132 Мбайт/с:
33 МГц х 32 бит = 1 056 Мбит/с; 1056 Мбит/с : 8 = 132 Мбайт/с.
В настоящее время 64-разрядные шины или шины с рабочей частотой 66 и 133 МГц используются только в системных платах серверов или рабочих станций. Одно из основных преимуществ шины PCI заключается в том, что она может функционировать одновременно с шиной процессора. Это позволяет процессору обрабатывать данные внешней кэш- памяти одновременно с передачей информации по шине PCI между другими компонентами системы.
Для подключения адаптеров шины PCI используется специальный разъем (рисунок). Платы PCI могут быть тех же размеров, что и платы для обычной шины ввода-вывода.
Стандарт PCI предлагает три вида плат для компьютеров разных типов и с различным напряжением питания. Платы с напряжением 5 В предназначены для стационарных компьютеров, а с напряжением 3,3 В — для портативных. Предусмотрены также уни-версальные адаптеры и системные платы, которые могут работать в компьютерах обоих типов.
Сравнить 32- и 64-разрядные варианты стандартного разъема PCI (5 В) с 64-разрядным универсальным разъемом PCI поможет рисунок. На нем показано расположение выводов 64-разрядной универсальной платы PCI по отношению к 64-разрядному разъему
PCI.
Обратите внимание, что универсальная плата PCI может устанавливаться в разъем, предназначенный для любой платы с фиксированным напряжением питания. Если напря жение, подаваемое на те или иные контакты, может быть разным, то оно обозначается +В I/O. На эти контакты подается опорное напряжение, определяющее уровни выходных логических сигналов.
Другим важным свойством платы PCI является то, что она удовлетворяет спецификации Plug and Play компании Intel. Это означает, что PCI не имеет перемычек и переключателей и может настраиваться с помощью специальной программы настройки. Системы с Plug and Play способны самостоятельно настраивать адаптеры, а в тех компьютерах, в которых отсутствует система Plug and Play, но есть разъемы PCI, настройку адаптеров нужно выполнять вручную с помощью программы Setup BIOS. С конца 1995 года в большинстве компьютеров устанавливается BIOS, удовлетворяющая спецификации Plug and Play, которая обеспечивает автоматическую настройку.
пятница, 26 сентября 2008 г.
Шины ввода-вывода. Часть 2.PCI
В начале 1992 года Intel организовала группу разработчиков, перед которой была поставлена та же задача, что и перед группой VESA, — разработать новую шину, в которой были бы устранены все недостатки шин ISA и EISA.
В июне 1992 года была выпущена спецификация шины PCI версии 1.0, которая с тех пор претерпела несколько изменений.
Небольшое отступление, ниже перечислю версии PCI.
Версии шины PCI PCI 2.0 - первая версия базового стандарта, получившая широкое распространение, использовались как карты, так и слоты с сигнальным напряжением только 5В.
PCI 2.1 - отличалась от 2.0 возможностью одновременной работы нескольких bus-master устройств (т.н. конкурентный режим), а также появлением универсальных карт расширения, способных работать как в 5В, так и в 3.3В слотах. Способность работать с 3.3В картами и наличие соответствующих линий питания в версии 2.1 являлась опциональной.Появились расширения PCI66 и PCI64.
PCI 2.2 - версия базового стандарта шины, допускающая подключение карт расширения с сигнальным напряжением как 5В, так и 3.3В. 32-битные версии этих стандартов являлись наиболее распространённым типом слотов на материнских платах на момент написания FAQ. Используются слоты типа 32-бита, 5В. Cделанные в соответствии с этими стандартами карты расширения имеют универсальный разъём и способны работать практически во всех более поздних разновидностях слотов шины PCI, а также, в некоторых случаях, и в слотах 2.1.
PCI 2.3 - следующая версия общего стандарта на шину PCI, слоты расширения, соответствующие этому стандарту, несовместимы с картами PCI 5В, несмотря на продолжающееся использование 32-битных слотов с 5В-ключом. Карты расширения имеют универсальный разъём, но не способны работать в 5В-слотах ранних версий (до 2.1 включительно). Напоминаем, что напряжение питания (не сигнальное!) 5В сохраняется абсолютно на всех версиях разъёмов шины PCI.
PCI 64 - расширение базового стандарта PCI, появившееся в версии 2.1, удваивающее число линий данных, и, следовательно, пропускную способность. Cлот PCI64 является удлинённой версией обычного PCI-слота. Формально совместимость 32-битных карт с 64-битным слотами (при условии наличия общего поддерживаемого сигнального напряжения) полная, а совместимость 64-битной карты с 32-битным слотами является ограниченной (в любом случае произойдёт потеря производительности), точные данные в каждом конкретном случае можно узнать из спецификаций устройства.
Первые версии PCI64 (производные от PCI 2.1)использовали слот PCI 64-бита 5В и работали на тактовой частоте 33МГц.
PCI 66 - появившееся в версии 2.1 расширение стандарта PCI с поддержкой тактовой частоты 66МГц, также, как и PCI64 позволяет удвоить пропускную способность. Начиная с версии 2.2 использует 3.3В-слоты (32-битый вариант на ПК практически не встречается), карты имеют универсальный либо 3.3В форм-фактор. (Имелись и основанные на версии 2.1 казуистически редкие на рынке ПК 5В 66МГц решения, подобные слоты и платы были совместимы только между собой)
PCI 64/66 - комбинация двух вышеописанных технологий, позволяет учетверить скорость передачи данных по сравнению с базовым стандартом PCI, и использует 64 бита 3.3В слоты, совместимые только с универсальными и 3.3В 32-битными картами расширения. Карты стандарта PCI64/66 имеют универсальный (имеющий ограниченную совместимость с 32-битными слотами) либо 3.3В форм-фактор(последний вариант принципиально не совместим с 32-битными 33МГц слотами популярных стандартов) В настоящее время под термином PCI64 подразумевается именно PCI64/66, поскольку 33МГц 5В 64-битные слоты не применяются уже достаточно давно.
Ярлыки:
Материнские платы
Шины ввода-вывода. Часть 1. Вступление
За время, прошедшее после появления первого PC, особенно за последние годы, было разработано довольно много вариантов шин ввода-вывода. Объясняется это просто: для повышения производительности компьютера нужна быстродействующая шина ввода-вывода. Производительность определяется тремя основными факторами:
-быстродействием процессора;
-качеством программного обеспечения;
-возможностями мультимедиа-компонентов.
Одной из главных причин, препятствующих появлению новых структур шин ввода-вывода, является их несовместимость со старым стандартом PC, который, подобно крепкому морскому узлу, связывает нас с прошлым. В свое время успех компьютеров класса PC предопределила стандартизация — многие компании разработали тысячи плат, соответствующих требованиям этого стандарта. Новая, более быстродействующая шина должна быть совместимой с прежним стандартом, иначе все старые платы придется просто выбросить. Поэтому технология производства шин эволюционирует медленно, без резких скачков.
Шины ввода-вывода различаются архитектурой.
Различия между этими шинами в основном связаны с объемом одновременно передаваемых данных (разрядностью) и скоростью передачи (быстродействием).
-быстродействием процессора;
-качеством программного обеспечения;
-возможностями мультимедиа-компонентов.
Одной из главных причин, препятствующих появлению новых структур шин ввода-вывода, является их несовместимость со старым стандартом PC, который, подобно крепкому морскому узлу, связывает нас с прошлым. В свое время успех компьютеров класса PC предопределила стандартизация — многие компании разработали тысячи плат, соответствующих требованиям этого стандарта. Новая, более быстродействующая шина должна быть совместимой с прежним стандартом, иначе все старые платы придется просто выбросить. Поэтому технология производства шин эволюционирует медленно, без резких скачков.
Шины ввода-вывода различаются архитектурой.
Различия между этими шинами в основном связаны с объемом одновременно передаваемых данных (разрядностью) и скоростью передачи (быстродействием).
Ярлыки:
Материнские платы
Назначение разъемов расширения
Шина ввода-вывода позволяет процессору взаимодействовать с периферийными устройствами. Эта шина и подключенные к ней разъемы расширения предназначены для того, чтобы компьютер мог выполнить все предъявляемые запросы. Шина ввода-вывода позволяет подключать к компьютеру дополнительные устройства для расширения его возможностей. В разъемы расширения устанавливают такие жизненно важные узлы, как контроллеры накопителей на жестких дисках и платы видеоадаптеров; к ним можно подключить и более специализированные устройства, например звуковые платы, сетевые интерфейсные платы, адаптеры SCSI и др.
Замечание
В большинстве современных компьютеров некоторые устройства ввода-вывода установлены непосредственно на системной плате. Это может быть контроллер жесткого диска, порт с интерфейсом SCSI, последовательный порт, порт мыши, параллельные порты и сетевой интерфейс. Если эти устройства поддерживаются компонентами South Bridge или Super I/O, то дополнительные разъемы на шине ввода-вывода им уже не нужны. Тем не менее при взаимо-действии с процессором эти встроенные котроллеры и порты используют ту же самую шину.
Замечание
В большинстве современных компьютеров некоторые устройства ввода-вывода установлены непосредственно на системной плате. Это может быть контроллер жесткого диска, порт с интерфейсом SCSI, последовательный порт, порт мыши, параллельные порты и сетевой интерфейс. Если эти устройства поддерживаются компонентами South Bridge или Super I/O, то дополнительные разъемы на шине ввода-вывода им уже не нужны. Тем не менее при взаимо-действии с процессором эти встроенные котроллеры и порты используют ту же самую шину.
Ярлыки:
Материнские платы
Шина памяти. Часть6. Работа процессора с памятью
Первое, что сразу бросается в глаза – без диска (без хранилища вытесненных страниц) эта схема не работает вообще. Где-то нужно иметь этот самый "файл подкачки". Второе – объём реального ОЗУ влияет на быстродействие машины, поскольку чем он больше, тем реже приходится обращаться к загрузке страниц. А вот объём действительно доступной памяти уже не определяется ОЗУ – он определяется именно объёмом "файла подкачки". И может быть сделан хоть на весь доступный диапазон адресов - 4 Гб для 32-хразрядного адреса. Именно это обычно и называется "механизм виртуальной памяти".
Но то, что приведено выше – только принципиальная схема. Действительность ещё сложнее – поскольку современные процессоры изначально ориентированы на "многозадачность" к схеме виртуальной памяти предъявляется и ещё одно требование – разные процессы должны обладать разными "адресными пространствами", т.е. схема адресации физической памяти должна быть такой, чтобы ни при каких обстоятельствах один процесс не мог адресовать память, принадлежащую другому процессу. Хочется подчеркнуть – это требование не вытекает из требований ни к машине, ни к памяти, ни вообще к аппаратной части. Оно вытекает из существующей технологии создания надёжных программ, а машина – должна поддерживать его. Модель такой памяти предполагает, что один и тот же логический адрес со значением X , но порождённый в разных процессах, должен приводить на разные страницы физической памяти. Такой режим адресации процессора носит название "режима защищенного адреса", так что полное название режима в котором процессор может делать всё вышеупомянутое звучит как "режим защищённого виртуального адреса" - именно он и есть основной рабочий режим процессора под управлением современных операционных систем.
Поэтому нарисованная на рисунке схема усложняется. В блоке преобразования адреса (фактически, конечно, это хранится в некоторой статически распределённой области ОЗУ , той, которая никогда не участвует в страничном обмене) имеется не вообще одна таблица преобразования страничного адреса, а – ещё по одной таблице на процесс, в которых отмечается, какие страницы каким процессам принадлежат. И при переключении процессов эти таблицы в блоке преобразования адреса тоже переключаются. Фактически преобразование адреса и поиск нужной страницы происходят в два этапа – сначала выясняется является ли для данного процесса адресуемой запрашиваемая страница, а потом – где именно она расположена. Делается это аппаратно и элементы процессора, которые выполняют это сложное преобразование оптимизированы настолько, что физический адрес байта преобразователь вычисляет чуть ли не за такт до того, как получит себе на вход логический адрес подлежащий преобразованию. Так что вся эта сложность не приводит к уменьшению абстрактного быстродействия машины. Хотя, конечно, машина с виртуальной памятью в среднем работает медленнее, чем аналогичная машина с памятью исключительно реальной – на страничный обмен тратится время, которое недополучает исполняющаяся "программа пользователя".
Сказанное выше есть только близкая к реальному воплощению в существующих процессорах принципиальная схема, так как нельзя охватить сразу все. Более подробное и точное знание о том, как функционирует обозначенный механизм нужно немногим программистам, а они его знают и так, а для нас вполне хватит и такого обьема информации.
Но то, что приведено выше – только принципиальная схема. Действительность ещё сложнее – поскольку современные процессоры изначально ориентированы на "многозадачность" к схеме виртуальной памяти предъявляется и ещё одно требование – разные процессы должны обладать разными "адресными пространствами", т.е. схема адресации физической памяти должна быть такой, чтобы ни при каких обстоятельствах один процесс не мог адресовать память, принадлежащую другому процессу. Хочется подчеркнуть – это требование не вытекает из требований ни к машине, ни к памяти, ни вообще к аппаратной части. Оно вытекает из существующей технологии создания надёжных программ, а машина – должна поддерживать его. Модель такой памяти предполагает, что один и тот же логический адрес со значением X , но порождённый в разных процессах, должен приводить на разные страницы физической памяти. Такой режим адресации процессора носит название "режима защищенного адреса", так что полное название режима в котором процессор может делать всё вышеупомянутое звучит как "режим защищённого виртуального адреса" - именно он и есть основной рабочий режим процессора под управлением современных операционных систем.
Поэтому нарисованная на рисунке схема усложняется. В блоке преобразования адреса (фактически, конечно, это хранится в некоторой статически распределённой области ОЗУ , той, которая никогда не участвует в страничном обмене) имеется не вообще одна таблица преобразования страничного адреса, а – ещё по одной таблице на процесс, в которых отмечается, какие страницы каким процессам принадлежат. И при переключении процессов эти таблицы в блоке преобразования адреса тоже переключаются. Фактически преобразование адреса и поиск нужной страницы происходят в два этапа – сначала выясняется является ли для данного процесса адресуемой запрашиваемая страница, а потом – где именно она расположена. Делается это аппаратно и элементы процессора, которые выполняют это сложное преобразование оптимизированы настолько, что физический адрес байта преобразователь вычисляет чуть ли не за такт до того, как получит себе на вход логический адрес подлежащий преобразованию. Так что вся эта сложность не приводит к уменьшению абстрактного быстродействия машины. Хотя, конечно, машина с виртуальной памятью в среднем работает медленнее, чем аналогичная машина с памятью исключительно реальной – на страничный обмен тратится время, которое недополучает исполняющаяся "программа пользователя".
Сказанное выше есть только близкая к реальному воплощению в существующих процессорах принципиальная схема, так как нельзя охватить сразу все. Более подробное и точное знание о том, как функционирует обозначенный механизм нужно немногим программистам, а они его знают и так, а для нас вполне хватит и такого обьема информации.
Ярлыки:
Материнские платы
Шина памяти. Часть5. Работа процессора с памятью
Логический адрес делится на две части, простым проведением границы между битами. Старшая часть адреса называется "адрес страницы", а младшая "адрес внутри страницы". Страница и есть та самая порция информации, которую обработчик прерывания "несуществующие данные" (точное название этого прерывания - "страничная ошибка") загружает с диска в ОЗУ . Её размер не должен быть очень маленьким, поскольку иначе "страничная ошибка" будет возникать часто и машина просто будет гонять данные из памяти на диск и обратно. Но, с другой стороны, её размер не должен быть и слишком большим – на загрузку тратится время. А программе на странице может понадобиться всего-то сотня байт, а потом она перейдет по другому адресу, который соответствует уже другой странице – и снова загрузка. В блоке преобразования адреса ведётся специальная таблица, в которой адресу страницы (старшей части логического адреса) соответствует реальный адрес физической памяти, где эта страница расположена. Каждая строка этой таблицы – адрес загруженной в ОЗУ страницы, т.е. страницы физически доступной в данный момент для обращения. Преобразователь адреса "режет" поступивший логический адрес на части "страничный" и "внутри страницы" и пытается найти в этой таблице соответствие – какой же физический адрес соответствует данному страничному. Если такое соответствие находится, то к физическому адресу страницы прибавляются младшие биты "адрес внутри страницы" и получается адрес физического байта, который в данный момент соответствует данному логическому адресу – адресация возможна и проходит, как и в системе с "реальным адресом" - программа и не узнает, что в действительности "срабатывала" ячейка не с тем адресом, который был указан в программе.
Если же соответствие не находится, т.е. обнаруживается, что нужная страница не значится в таблице как "загруженная", блок преобразования адреса возбуждает прерывание "страничная ошибка" и сообщает обработчику какую страницу необходимо загрузить. Обработчик должен: отыскать на диске ту самую страницу, найти ей место в физической памяти, загрузить страницу и исправить в блоке преобразования адреса адрес страницы в таблице. Когда в физической памяти есть не занятые страницы – всё просто. А если всё место уже занято другими страницами? Тогда обработчик должен какую-то страницу вытеснить – записать её на диск с тем, чтобы на её место вписать нужную. Какую? Мнения на сей счёт могут быть различными, но наиболее употребительный алгоритм вытесняет ту страницу, к которой давно не было обращений. С этой целью в "страничной таблице" ведётся и счётчик времени обращения – исключительно аппаратное решение, которое не удлиняет цикла памяти. Когда обработчик вернёт управление процессор вновь исполнит ту же команду, попытка обращения которой к памяти оказалась неуспешной, но в блоке преобразования адреса требуемая страница уже будет числиться "загруженной" - обращение к памяти пройдёт успешно.
Поэтому общая схема программно-аппаратного механизма, обеспечивающего описанным способом создание иллюзии наличия большей оперативной памяти, чем есть в действительности, приведена на рисунке
Если же соответствие не находится, т.е. обнаруживается, что нужная страница не значится в таблице как "загруженная", блок преобразования адреса возбуждает прерывание "страничная ошибка" и сообщает обработчику какую страницу необходимо загрузить. Обработчик должен: отыскать на диске ту самую страницу, найти ей место в физической памяти, загрузить страницу и исправить в блоке преобразования адреса адрес страницы в таблице. Когда в физической памяти есть не занятые страницы – всё просто. А если всё место уже занято другими страницами? Тогда обработчик должен какую-то страницу вытеснить – записать её на диск с тем, чтобы на её место вписать нужную. Какую? Мнения на сей счёт могут быть различными, но наиболее употребительный алгоритм вытесняет ту страницу, к которой давно не было обращений. С этой целью в "страничной таблице" ведётся и счётчик времени обращения – исключительно аппаратное решение, которое не удлиняет цикла памяти. Когда обработчик вернёт управление процессор вновь исполнит ту же команду, попытка обращения которой к памяти оказалась неуспешной, но в блоке преобразования адреса требуемая страница уже будет числиться "загруженной" - обращение к памяти пройдёт успешно.
Поэтому общая схема программно-аппаратного механизма, обеспечивающего описанным способом создание иллюзии наличия большей оперативной памяти, чем есть в действительности, приведена на рисунке
Ярлыки:
Материнские платы
Шина памяти. Часть4. Работа процессора с памятью
Общий принцип архитектурного решения, удовлетворяющего сформулированным требованиям можно описать так. В процессоре должен быть особый узел – блок преобразования адреса ( БПА ). Программа указывает свой адрес (его теперь естественно назвать "логическим"), он попадает в этот блок, блок что-то с ним делает такое, чтобы из этого адреса сделать "физический" - адрес заведомо существующей в системе физической ячейки памяти, и лишь затем такой преобразованный адрес попадает на шину адреса. Шина данных – не изменяется. А схема "цикла памяти" расширяется на фазу преобразования адреса. Такой режим работы процессора получил название "режим виртуального адреса".
А как можно выполнить такое преобразование? Когда логический адрес соответствует какому-то физическому – всё понятно. Например, всякий логический адрес мы можем складывать с константой (операция быстрая, делается "на лету") – диапазон физических адресов просто сдвинется (будет отличаться от тех адресов, что указаны в командах), но соответствие-то останется. А ведь мы хотим раздвинуть диапазон! Это означает, что когда-то на вход преобразователя адреса придёт такой логический адрес, которому соответствует несуществующая физическая ячейка. Верно. В таком случае процессор должен сделать два дополнительных действия – во-первых, он должен вызвать особое прерывание "запрашиваемой памяти – нет", т.е. вызвать специальную программу-обработчик. Во-вторых, он должен "открутить назад" свой счётчик команд – прерывание вызвано считанной командой, которая попыталась обратиться к несуществующим данным. В "нормальной системе" такое событие – фатально, а здесь процессор должен "сделать вид" что он эту самую команду только собирается исполнить.
Что должен делать обработчик этого прерывания? Он должен... обеспечить ранее не существовавшие, а теперь понадобившиеся данные. Как??? Например, взять и загрузить их откуда-нибудь на то самое место физической памяти, которое действительно есть, сообщить в блок преобразования адреса, что этому самому запрошенному "логическому адресу" теперь соответствует вот такой физический и ... просто вернуть управление. Поскольку процессор перед этим свой счётчик команд "открутил назад", то, после возврата из прерывания, он повторно выбирает ту самую команду, которая прерывание вызвала - теперь эти данные уже существуют – и исполнение программы продолжится как ни в чём ни бывало. Вот и почти всё аппаратное решение! Тем не менее, в нём пока непонятны две вещи – во-первых, сам алгоритм преобразования адреса. Во-вторых – откуда загружать эти "виртуальные данные" и как. Делать это побайтно и пословно – фактически иметь "запасное ОЗУ " (которого мы как раз иметь-то и не хотим), поскольку единственной просматриваемой альтернативой ОЗУ (другим устройством, умеющим хранить данные – чудес на свете не бывает) является диск, а он – устройство блочное, байты адресовать не умеет.
Обе проблемы решаются в комплексе – ведь и преобразование адреса не может быть выполнено "с точностью до байта" - это тоже означает, что для однозначного преобразования нужно иметь "второй комплект байтов". Поэтому преобразование адреса производится по таблице – выборка из таблицы ничуть не более медленная операция, чем сложение. А само преобразование логического адреса делается так, как показано на рисунке
А как можно выполнить такое преобразование? Когда логический адрес соответствует какому-то физическому – всё понятно. Например, всякий логический адрес мы можем складывать с константой (операция быстрая, делается "на лету") – диапазон физических адресов просто сдвинется (будет отличаться от тех адресов, что указаны в командах), но соответствие-то останется. А ведь мы хотим раздвинуть диапазон! Это означает, что когда-то на вход преобразователя адреса придёт такой логический адрес, которому соответствует несуществующая физическая ячейка. Верно. В таком случае процессор должен сделать два дополнительных действия – во-первых, он должен вызвать особое прерывание "запрашиваемой памяти – нет", т.е. вызвать специальную программу-обработчик. Во-вторых, он должен "открутить назад" свой счётчик команд – прерывание вызвано считанной командой, которая попыталась обратиться к несуществующим данным. В "нормальной системе" такое событие – фатально, а здесь процессор должен "сделать вид" что он эту самую команду только собирается исполнить.
Что должен делать обработчик этого прерывания? Он должен... обеспечить ранее не существовавшие, а теперь понадобившиеся данные. Как??? Например, взять и загрузить их откуда-нибудь на то самое место физической памяти, которое действительно есть, сообщить в блок преобразования адреса, что этому самому запрошенному "логическому адресу" теперь соответствует вот такой физический и ... просто вернуть управление. Поскольку процессор перед этим свой счётчик команд "открутил назад", то, после возврата из прерывания, он повторно выбирает ту самую команду, которая прерывание вызвала - теперь эти данные уже существуют – и исполнение программы продолжится как ни в чём ни бывало. Вот и почти всё аппаратное решение! Тем не менее, в нём пока непонятны две вещи – во-первых, сам алгоритм преобразования адреса. Во-вторых – откуда загружать эти "виртуальные данные" и как. Делать это побайтно и пословно – фактически иметь "запасное ОЗУ " (которого мы как раз иметь-то и не хотим), поскольку единственной просматриваемой альтернативой ОЗУ (другим устройством, умеющим хранить данные – чудес на свете не бывает) является диск, а он – устройство блочное, байты адресовать не умеет.
Обе проблемы решаются в комплексе – ведь и преобразование адреса не может быть выполнено "с точностью до байта" - это тоже означает, что для однозначного преобразования нужно иметь "второй комплект байтов". Поэтому преобразование адреса производится по таблице – выборка из таблицы ничуть не более медленная операция, чем сложение. А само преобразование логического адреса делается так, как показано на рисунке
Ярлыки:
Материнские платы
Шина памяти. Часть3. Работа процессора с памятью
"Цикл памяти" в общем виде выглядит так. Процессор, желающий прочитать содержимое ячейки с адресом M устанавливает этот адрес на "шину адреса" и ставит на "шину управления" сигнал "чтение". ОЗУ , получив этот сигнал, выставляет содержимое своей ячейки с таким номером на "шину данных" и ставит на шину управления сигнал "готово". Получив этот сигнал процессор воспринимает состояние шины данных и убирает сигнал "чтение". Запись в ОЗУ происходит аналогично – процессор ставит на шину данных число, подлежащее записи, на шину адреса – номер записываемой ячейки, а на шину управления – сигнал "запись". ОЗУ , получив этот сигнал, воспринимает состояние шины данных и сохраняет его в ячейке с номером M . Здесь мы не будем касаться вопроса, как процессор "считывает байт", когда ширина шины данных фактически – несколько байтов. Не очень грубое для программиста допущение состоит в том, что из ОЗУ всегда считываются столько байтов, сколько составляют ширину шины, а из них процессором выбирается только один...
Естественно, что количество ячеек в одном устройстве памяти – ограничено. Физически это выражается в том, что не всякое возможное на шине адреса число приведёт к "срабатыванию ячейки" - возможно, что ячейки с таким адресом просто физически не существует. Обычно диапазон "вообще возможных адресов" значительно больше того диапазона адресов, на которое в состоянии откликнуться "физическое ОЗУ " - сравните, например 2 32 (4Гб) и 2 27 (128Мб). Причина этого – исключительно экономическая и техническая. Память и стоит каких-то денег и занимает какой-то объём. Возможность же процессора адресовать больше – в данном случае есть не что иное, как нереализованный резерв.
Описанную модель обращения с физической памятью легко "поднять выше" - на уровень программиста. Ведь "читать слово" и "писать слово" - разные команды процессора, это его дело какие числа на какие шины ставить, программист только снабжает процессор эти самым "адресом" прямо или косвенно указывая его в самой команде. А модель набора ячеек как раз и получается в виде непрерывной строки с диапазоном адресов от какого-то "младшего" до какого-то "старшего" - программисту-то какое дело ОЗУ1 хранит данную ячейку или ОЗУ2 ?
И в ранних процессорных системах именно так оно и было – адреса, которые программист указывал в командах были именно теми, которые процессор выставлял на шину адреса. И, хотя программист мог, например, в качестве адреса указать число 2 21 он этого не делал, ибо знал, что последняя "срабатывающая" ячейка располагается по адресу 2 20 -1. Попытка обратиться по адресу большему приносила либо "мусор", либо прерывание – это зависело от конструкции машины. Операционная система MS DOS – как раз и есть пример такой программы, работающей с процессором в т.н. "режиме реального адреса".
Шло время, процессоры становились мощнее, программы – требовали всё большего объёма памяти. Это – совершенно закономерный процесс, поскольку процессор, могущий перерабатывать большой объём информации нет смысла укомплектовывать малым объёмом памяти – чтобы много информации перерабатывать надо прежде всего уметь много информации и хранить. И - мощность процессоров росла гораздо быстрее, чем возможность технологии производить большие и дешёвые ОЗУ . "Узким местом" всей процессорной системы стала физическая память.
В этих обстоятельствах внимание архитекторов обратилось к неиспользуемому резерву – если процессор по ширине своей шины может адресовать 4Г разных ячеек, то нельзя ли каким-нибудь способом сделать так, что они "как бы есть", хотя на самом деле их и нет? Т.е. речь шла о механизме (архитектурном решении), который бы позволил эмулировать больший объём памяти, чем тот объём физических ОЗУ , которым на самом деле располагала машина. Понятно, что такую иллюзию нужно было создать только у самого "источника адресов" - у программы, обращающейся в память. Ведь если она сможет указать в команде (по другому задать адрес программа не может) число 2 30 (1Г) и получить осмысленное значение данных, то она по прежнему может считать, что у неё есть ОЗУ объёмом 1Г, какая ей разница, какое аппаратное устройство на этот адрес "срабатывает" и как именно?
Поэтому речь шла прежде всего об аппаратном решении – в описанной выше архитектуре памяти "что поставил - то и прочитал", а для создания требуемой иллюзии нужно было, чтобы адрес, который задаётся в команде процессора и адрес, который процессор ставит на шину адреса – как-то соотносились друг с другом, но были разными . И это преобразование одного в другое должно было быть однозначным, незаметным для программы и очень быстрым – ведь такое преобразование должно было применяться к каждому адресу, выставляемому процессором!
Естественно, что количество ячеек в одном устройстве памяти – ограничено. Физически это выражается в том, что не всякое возможное на шине адреса число приведёт к "срабатыванию ячейки" - возможно, что ячейки с таким адресом просто физически не существует. Обычно диапазон "вообще возможных адресов" значительно больше того диапазона адресов, на которое в состоянии откликнуться "физическое ОЗУ " - сравните, например 2 32 (4Гб) и 2 27 (128Мб). Причина этого – исключительно экономическая и техническая. Память и стоит каких-то денег и занимает какой-то объём. Возможность же процессора адресовать больше – в данном случае есть не что иное, как нереализованный резерв.
Описанную модель обращения с физической памятью легко "поднять выше" - на уровень программиста. Ведь "читать слово" и "писать слово" - разные команды процессора, это его дело какие числа на какие шины ставить, программист только снабжает процессор эти самым "адресом" прямо или косвенно указывая его в самой команде. А модель набора ячеек как раз и получается в виде непрерывной строки с диапазоном адресов от какого-то "младшего" до какого-то "старшего" - программисту-то какое дело ОЗУ1 хранит данную ячейку или ОЗУ2 ?
И в ранних процессорных системах именно так оно и было – адреса, которые программист указывал в командах были именно теми, которые процессор выставлял на шину адреса. И, хотя программист мог, например, в качестве адреса указать число 2 21 он этого не делал, ибо знал, что последняя "срабатывающая" ячейка располагается по адресу 2 20 -1. Попытка обратиться по адресу большему приносила либо "мусор", либо прерывание – это зависело от конструкции машины. Операционная система MS DOS – как раз и есть пример такой программы, работающей с процессором в т.н. "режиме реального адреса".
Шло время, процессоры становились мощнее, программы – требовали всё большего объёма памяти. Это – совершенно закономерный процесс, поскольку процессор, могущий перерабатывать большой объём информации нет смысла укомплектовывать малым объёмом памяти – чтобы много информации перерабатывать надо прежде всего уметь много информации и хранить. И - мощность процессоров росла гораздо быстрее, чем возможность технологии производить большие и дешёвые ОЗУ . "Узким местом" всей процессорной системы стала физическая память.
В этих обстоятельствах внимание архитекторов обратилось к неиспользуемому резерву – если процессор по ширине своей шины может адресовать 4Г разных ячеек, то нельзя ли каким-нибудь способом сделать так, что они "как бы есть", хотя на самом деле их и нет? Т.е. речь шла о механизме (архитектурном решении), который бы позволил эмулировать больший объём памяти, чем тот объём физических ОЗУ , которым на самом деле располагала машина. Понятно, что такую иллюзию нужно было создать только у самого "источника адресов" - у программы, обращающейся в память. Ведь если она сможет указать в команде (по другому задать адрес программа не может) число 2 30 (1Г) и получить осмысленное значение данных, то она по прежнему может считать, что у неё есть ОЗУ объёмом 1Г, какая ей разница, какое аппаратное устройство на этот адрес "срабатывает" и как именно?
Поэтому речь шла прежде всего об аппаратном решении – в описанной выше архитектуре памяти "что поставил - то и прочитал", а для создания требуемой иллюзии нужно было, чтобы адрес, который задаётся в команде процессора и адрес, который процессор ставит на шину адреса – как-то соотносились друг с другом, но были разными . И это преобразование одного в другое должно было быть однозначным, незаметным для программы и очень быстрым – ведь такое преобразование должно было применяться к каждому адресу, выставляемому процессором!
Ярлыки:
Материнские платы
Шина памяти. Часть2. Работа процессора с памятью
Любая процессорная (микроконтроллерная) система устроена, в общем-то, одинаково. Существует устройство, называемое "процессор", которое умеет в самом общем смысле "перерабатывать информацию" - получая на вход информацию одну, на выходе оно создаёт информацию другую. Естественно, вполне детерминированную – алгоритм этого самого преобразования описывается "программой". Но для нас сейчас это не важно, сейчас нас интересует ответ только на один вопрос – как именно "процессор" обменивается с "внешним миром". И принцип на котором это взаимодействие построено коротко именуется "архитектура общая шина". Он изображён на рисунке, на котором показано три устройства – процессор и два ОЗУ :
Видно, что в составе этой шины выделяется три группы линий (которые есть не что иное, как самые обычные электрические проводники) – "шина управления", по которой процессор подаёт сигналы управления, "шина данных", по которой передаются двоичные числа, которые считаются "данными" и "шина адреса", по которой передаются такие же числа, но они считаются "адресом". Разрядность шины (число линий, по которым одновременно передаются биты) обычно совпадает с разрядностью самого процессора. Так, у 32-хразрядного процессора обычно же и 32-хразрядная шина, хотя можно построить и иную конфигурацию.
Видно, что в составе этой шины выделяется три группы линий (которые есть не что иное, как самые обычные электрические проводники) – "шина управления", по которой процессор подаёт сигналы управления, "шина данных", по которой передаются двоичные числа, которые считаются "данными" и "шина адреса", по которой передаются такие же числа, но они считаются "адресом". Разрядность шины (число линий, по которым одновременно передаются биты) обычно совпадает с разрядностью самого процессора. Так, у 32-хразрядного процессора обычно же и 32-хразрядная шина, хотя можно построить и иную конфигурацию.
Физическое ОЗУ (Random Access Memory, RAM ) представляет собой компонент, "разделёный" на некоторое количество ячеек, которые могут хранить в себе комбинации битов. Ячейки отличаются друг от друга номером, который ОЗУ воспринимает с "шины адреса", а связь содержимого ячейки с внешним миром осуществляется посредством "шины данных". Принципиальная схема организации ОЗУ приведена на рисунке:
Видно, что в составе этой шины выделяется три группы линий (которые есть не что иное, как самые обычные электрические проводники) – "шина управления", по которой процессор подаёт сигналы управления, "шина данных", по которой передаются двоичные числа, которые считаются "данными" и "шина адреса", по которой передаются такие же числа, но они считаются "адресом". Разрядность шины (число линий, по которым одновременно передаются биты) обычно совпадает с разрядностью самого процессора. Так, у 32-хразрядного процессора обычно же и 32-хразрядная шина, хотя можно построить и иную конфигурацию.
Видно, что в составе этой шины выделяется три группы линий (которые есть не что иное, как самые обычные электрические проводники) – "шина управления", по которой процессор подаёт сигналы управления, "шина данных", по которой передаются двоичные числа, которые считаются "данными" и "шина адреса", по которой передаются такие же числа, но они считаются "адресом". Разрядность шины (число линий, по которым одновременно передаются биты) обычно совпадает с разрядностью самого процессора. Так, у 32-хразрядного процессора обычно же и 32-хразрядная шина, хотя можно построить и иную конфигурацию.
Физическое ОЗУ (Random Access Memory, RAM ) представляет собой компонент, "разделёный" на некоторое количество ячеек, которые могут хранить в себе комбинации битов. Ячейки отличаются друг от друга номером, который ОЗУ воспринимает с "шины адреса", а связь содержимого ячейки с внешним миром осуществляется посредством "шины данных". Принципиальная схема организации ОЗУ приведена на рисунке:
Ярлыки:
Материнские платы
Шина памяти. Часть1
Шина памяти предназначена для передачи информации между процессором и основной памятью системы. Эта шина соединена с набором микросхем системной платы North Bridge или микросхемой Memory Controller Hub. В зависимости от типа памяти, используемой набором микросхем (и, следовательно, системной платой), шина памяти может работать с различными скоростями. Наилучший вариант, если рабочая частота шины памяти совпадает со скоростью шины процессора. Пропускная способность систем, использующих память PC133 SDRAM, равна 1066 Мбайт/с, что совпадает с пропускной способностью шины процессора, работающей на частоте 133 МГц. Рассмотрим другой пример: в системах Athlon и некоторых Pentium III используется шина процессора с частотой 266 МГц и память PC2100 DDR SDRAM, имеющая пропускную способность 2133 Мбайт/с — такую же, как и у шины процессора. В системе Pentium 4 используется шина процессора с частотой 400 МГц, а также двухканальная память RDRAM со скоростью передачи данных для каждого канала 1 600 или 3 200 Мбайт/с при одновременной работе обоих каналов памяти, что совпадает с пропускной способностью шины процессора Pentium 4. В системах Pentium 4, содержащих шину процессора с тактовой частотой 533 МГц, могут использоваться модули RIMM4200, параметры которых соответствуют пропускной способности шины процессора, равной 4 266 Мбайт/с.
Память, работающая с той же частотой, что и шина процессора, позволяет отказаться от расположения внешней кэш-памяти на системной плате. Именно поэтому кэш-память второго и третьего уровней была интегрирована непосредственно в процессор. Некоторые мощные процессоры, к числу которых относятся новые версии Itanium и Itanium 2, содержат встроенную кэш-память третьего уровня объемом 2-4 Мбайт, работающую на полной частоте процессора. Со временем подобные изменения будут внесены в большинство серийно выпускаемых настольных систем.
Память, работающая с той же частотой, что и шина процессора, позволяет отказаться от расположения внешней кэш-памяти на системной плате. Именно поэтому кэш-память второго и третьего уровней была интегрирована непосредственно в процессор. Некоторые мощные процессоры, к числу которых относятся новые версии Itanium и Itanium 2, содержат встроенную кэш-память третьего уровня объемом 2-4 Мбайт, работающую на полной частоте процессора. Со временем подобные изменения будут внесены в большинство серийно выпускаемых настольных систем.
Ярлыки:
Материнские платы
Шина процессора. Часть2
Система Pentium 4 (Socket 423 или Socket 478), создана на основе hub-архитектуры. Основной особенностью этой конструкции является шина процессора с тактовой частотой 400 или 533 МГц и пропускной способностью соответственно 3 200 или 4 266 Мбайт/с. Также обратите внимание на двухканальные модули PC-800 RDRAM RIMM, пропускная способность которых (3 200 Мбайт/с) соответствует пропускной способности шины процессора, что позволяет максимально повысить производительность системы. В более производительных системах, включающих в себя шину с пропускной способностью 4 266 Мбайт/с, используются двухканальные модули RIM-4200 с тактовой частотой 1 066 МГц, благодаря чему общая пропускная способность шины памяти достигает 4 266 Мбайт/с. Соответствие пропускной способности шины памяти рабочим параметрам шины процессора является условием оптимальной работы.
Поскольку шина процессора должна обмениваться информацией с процессором с максимально высокой скоростью, в компьютере она функционирует намного быстрее любой другой шины. Сигнальные линии (линии электрической связи), представляющие шину, предназначены для передачи данных, адресов и сигналов управления между отдельными компонентами компьютера. Например, в компьютере с процессором Pentium шина состоит из 64 линий данных, 32 линий адреса и соответствующих линий управления. Компьютеры с процессорами Pentium Pro и Pentium II имеют по 36 линий адреса.
Тактовая частота, используемая для передачи данных по шине процессора, соответствует его внешней частоте. Это следует учитывать, поскольку в большинстве процессоров внутренняя тактовая частота, определяющая скорость работы внутренних блоков, может превышать внешнюю. Так, например, Celeron 766 имеет внутреннюю частоту процессора 766 МГц, в то время как внешняя частота составляет всего 66 МГц. Процессор Pentium III 1 ГГц имеет внутреннюю частоту 1 ГГц, в то время как внешняя частота составляет всего 133 МГц. В большинстве современных компьютеров соотношение частоты процессора и частоты шины соответствует одному из коэффициентов: 1,5х, 2х, 2,5х, 3х и т. д.
Шина процессора, подключенная к процессору, по каждой линии данных может передавать один бит данных в течение одного или двух периодов тактовой частоты. Таким образом, в компьютерах с современными процессорами за один такт передается 64 бит.
Для определения скорости передачи данных по шине процессора необходимо умножить разрядность шины данных (64 для Celeron/Pentium III/4 или Athlon/Duron) на тактовую частоту шины (она равна базовой (внешней) тактовой частоте процессора).
Например, при использовании процессора Pentium III с тактовой частой 1,13 ГГц, установленного на системной плате, частота которой равна 133 МГц, максимальная мгновенная скорость передачи данных будет достигать примерно l066 Мбайт/с. Этот результат можно получить, используя следующую формулу:
И для системы Pentium 4 (Socket 423/478):
400 МГц х 8 байт (64 бит) = 3200 Мбайт/с;
533,33 МГц х 8 байт (64 бит) = 4 266 Мбайт/с.
Скорость передачи данных, называемая также пропускной способностью шины (bandwidth) процессора, представляет собой максимальную скорость передачи данных.
Ярлыки:
Материнские платы
Подписаться на:
Сообщения (Atom)