|
Адресация памяти
В компьютерах
с процессором х86 исторически сложилась довольно сложная система адресации
памяти. Мы постепенно разберем все основные варианты, а сейчас, просто отметим,
что хотя с каждым новым поколением процессоров внедрялись новые принципы управления
памятью, но даже самый современный Pentium 4 должен уметь работать с памятью
так же, как любой из его предшественников. Это, конечно, не всегда удобно для
пользователей, которые не используют старого программного обеспечения, но зато
гарантирует, что любую программу, созданную для компьютеров, совместимых с IBM
PC, можно заставить работать на новом персональном компьютере (бывают исключения,
связанные с особенностью архитектуры некоторых старых компьютеров).
Одна из особенностей
процессоров х86 заключается в том, что в процессоре 8086 с целью сокращения
общего числа контактов для шины адреса и шины данных использовались одни и те
же контакты. Соответственно, для получения информации из памяти вначале процессор
должен был выработать адрес нужного байта, который запоминался одной из микросхем
системной платы, а уже потом его прочитать. Начиная с процессора 80286, шина
адреса получила на корпусе процессора отдельные контакты. Но по традиции все
равно приходится считать, что процессор сначала устанавливает адрес, а уж потом
данные. (Ограничения на количество контактов коснулись также и ряда микросхем
оперативной памяти, где одни и те же контакты используются для адресации и ввода/вывода
данных.)
Другая особенность
процессоров х86 — это различная размерность шины данных и адреса. Для 16-разрядного
процессора 8086 использовалась 20-разрядная шина адреса, а для 80286 — 24-разрядная.
В 32-разрядных процессорах 386 и 486 шина адреса была увеличена до 32 битов,
а в процессорах Pentium до 64 битов.
Так как компьютеры оперируют
адресным пространством, кратным 2", где п — разрядность шины, то
получается следующий практический ряд:
- 16 линий (битов) — 65
536 байтов, или 64 Кбайт;
- 20 линий (битов) — 1
048 576 байтов, или 1 Мбайт;
- 22 линии (бита) — 4
194 304 байтов, или 4 Мбайт;
- 24 линии (бита) — 16
777 216 байтов, или 16 Мбайт;
- 26 линий (битов) — 67
108 864 байтов, или 64 Мбайт;
- 28 линий (битов) — 268
435 456 байтов, или 256 Мбайт;
- 30 линий (битов) — 1
073 741 824 байт, или 1024 Мбайт, или 1 Гбайт;
- 32 линии (бита) — 4
294 967 296 байтов, или 4 Гбайт.
Кроме всего
прочего, у первых микропроцессоров количество выводов было ограничено, поэтому
адрес передавался по шине данных в два этапа — сначала младшую половину бита,
а потом старшую. В дальнейшем от такого способа отказались, но потом снова стали
использовать для адресации ячеек памяти в микросхемах динамической памяти.
Обычно полагают,
что матрица запоминающей микросхемы имеет квадратный вид, поэтому принято считать,
что младшая половина адреса — это сигнал CAS (Column Access Strobe), или адрес
столбца запоминающей матрицы, а старшая половина адреса — это сигнал RAS (Row
Access Strobe), или адрес строки матрицы. Если матрица памяти по каким-либо
причинам является прямоугольной, то сокращается размерность адреса RAS.
При обращении
к запоминающему устройству с микросхемами динамической памяти контроллер памяти,
который может быть в чипсете или в самой микросхеме памяти, устанавливает сигнал
RAS, а потом — CAS (рис. 3.20). В разных типах микросхем DRAM длительности сигналов
RAS и CAS и порядок их следования различны. Излюбленным приемом повышения производительности
ОЗУ является однократная установка сигнала RAS, а последовательным изменением
сигнала CAS считывается вся строка. В более новых микросхемах присутствует счетчик,
который автоматически увеличивает адрес RAS при считывании большого массива
данных.
В программе
настройки BIOS предусмотрена установка параметров сигналов CAS и RAS, а также
возможность указания порядка их чередования. Для настройки пакетного режима
с памятью служит установка параметров, например, 5-3-3-3 или 5-1-1-1. Первый
случай предусматривает 5 тактов для задания базового адреса блока памяти и по
3 такта для чтения или записи каждого машинного слова (байта), второй, соответственно,
только по 1 такту для чтения или записи каждого байта. Если "поиграть"
параметрами пакетного режима, можно получить значительный выигрыш в производительности,
правда, при этом следует пользоваться тестовыми программами, чтобы удостовериться
в устойчивой работе компьютера с новыми настройками.
|
|