
- •Введение
- •Системы счисления и представление данных
- •Числа конечной точности
- •Системы счисления
- •Преобразование чисел из одной системы счисления в другую
- •Правило замещения
- •Правило деления-умножения
- •Правило деления
- •Правило умножения
- •Упрощенные правила
- •Двоичная арифметика
- •Отрицательные двоичные числа
- •Сложение двоичных чисел
- •Числа с плавающей точкой
- •Принципы представления с плавающей точкой
- •Округление чисел
- •Стандарт ieee 754
- •Организация компьютерных систем
- •Архитектура и структура вычислительных машин
- •Языки, уровни и виртуальные машины
- •Компиляция
- •Интерпретация
- •Виртуальные машины
- •Многоуровневые машины
- •Многоуровневая организация компьютеров
- •Уровень 0
- •Уровень 1
- •Уровень 2
- •Уровень 3
- •Уровень 4
- •Уровень 5
- •Аппаратное и программное обеспечение
- •Структура компьютера
- •Организация памяти вычислительных машин
- •Адреса основной памяти
- •Упорядочение байтов
- •Цифровой логический уровень
- •Вентили и булева алгебра
- •Вентили
- •Булева алгебра
- •Реализация булевых функций
- •Основные цифровые логические схемы
- •Интегральные схемы
- •Комбинационные схемы
- •Мультиплексоры
- •Декодеры
- •Компараторы
- •Арифметические схемы Схемы сдвига
- •Сумматоры
- •Арифметико-логические устройства
- •Тактовые генераторы
- •Защелки
- •Синхронные sr-защелки
- •Синхронные d-защелки
- •Триггеры
- •Регистры
- •Организация большого объема памяти
- •Микроархитектурный уровень
- •Пример микроархитектуры: организация
- •Поток управления
- •Последовательный поток управления и переходы
- •Процедуры
- •Модель памяти
- •Набор команд
- •Пример микроархитектуры: управление микрокомандами
- •Тракт данных
- •Синхронизация тракта данных
- •Работа памяти
- •Микрокоманды
- •Управление микрокомандами
- •Уровень архитектуры команд
- •Уровень команд процессора Pentium II
- •Регистры
- •Выравнивание адресов
- •Типы данных
- •Форматы команд
- •Адресация
- •Непосредственная адресация
- •Прямая адресация
- •Регистровая адресация
- •Косвенная регистровая адресация
- •Базовая адресация
- •Индексная адресация
- •Команды процессора Pentium II
- •Команды перемещения
- •Арифметические команды
- •Двоично-десятичные команды
- •Логические команды
- •Команды сдвига/циклического сдвига
- •Команды тестирования/сравнения
- •Команды передачи управления
- •Команды для операций над цепочками
- •Команды управления флаговым регистром
- •Прочие команды
- •Уровень языка ассемблера
- •Формат оператора в языке ассемблера
- •Команды
- •Операнды
- •Комментарии
- •Директивы
- •Макросы
- •Процесс ассемблирования
- •Архитектуры компьютеров параллельного действия
- •Организация конвейерных и параллельных вычислений
- •Конвейеры
- •Параллелизм на уровне процессоров
- •Мультикомпьютеры
- •Классификация вычислительных платформ, типы процессоров
- •Классификация компьютеров параллельного действия
Адреса основной памяти
Память состоит из ячеек, каждая из которых может хранить некоторую порцию информации. Каждая ячейка имеет номер, который называется адресом. По адресу программы могут ссылаться на определенную ячейку. Если память содержит n ячеек, они будут иметь адреса от 0 до n-1. Все ячейки памяти содержат одинаковое число битов. Если ячейка состоит из k битов, она может содержать любую из 2k комбинаций. На Рис. 2 .7 показаны 3 различных способа организации 96-битной памяти. Отметим, что соседние ячейки по определению имеют последовательные адреса.
Рис. 2.7. Три способа организации 96-битной памяти
Ячейка – минимальная единица, к которой можно обращаться. В последние годы практически все производители выпускают компьютеры с 8-битными ячейками, которые называются байтами. Байты группируются в слова. Компьютер с 32-битными словами имеет 4 байта на каждое слово, а компьютер с 64-битными словами – 8 байтов на каждое слово. Такая единица, как слово, необходима, поскольку большинство команд производят операции над целыми словами (например, складывают два слова). Таким образом, 32-битная машина будет содержать 32-битные регистры и команды для манипуляций с 32-битными словами, тогда как 64-битная машина будет иметь 64-битные регистры и команды для перемещения, сложения, вычитания и других операций над 64-битными словами.
Упорядочение байтов
Байты в слове могут нумероваться слева направо или справа налево. На Рис. 2 .8, а) изображена часть памяти 32-битного компьютера, в котором байты пронумерованы слева направо (как у компьютеров SPARC или больших IBM). Рис. 2 .8, б) показывает аналогичную репрезентацию 32-битного компьютера с нумерацией байтов справа налево (как у компьютеров Intel).
Рис. 2.8. Память с нумерацией байтов слева направо (а); память с нумерацией байтов справа налево (б)
Подобные различия могут создавать определенные трудности при пересылке (например, по сети) данных с компьютера одной платформы, на компьютер другой платформы. Эту задачу решает протокол обмена данных.
Кэш-память
При выполнении каждого цикла команды процессор, по крайней мере, один раз обращается к памяти, чтобы произвести выборку команды. Часто это происходит повторно, причем возможны случаи нескольких повторных обращений, при которых извлекаются операнды и/или сохраняются результаты. Частота, с которой процессор исполняет команды, ограничена временем обращения к памяти. Годами это ограничение было существенной проблемой из-за постоянного несоответствия между скоростью процессора и скоростью доступа к основной памяти – скорость процессора возрастала быстрее, чем скорость доступа к памяти. Постоянно нужно было искать компромисс между скоростью, стоимостью и емкостью памяти. В идеале основная память должна была бы производиться по той же технологии, что и регистры процессора, чтобы время цикла памяти было сравнимо со временем цикла процессора. Однако эта стратегия приводит к слишком большим затратам. Решением проблемы стало использование принципа локализации, при котором между процессором и основной памятью помещается память с небольшой емкостью и быстрым временем доступа, а именно – кэш (Рис. 2 .9).
Рис. 2.9. Кэш и основная память
Кэш предназначен для того, чтобы приблизить скорость доступа к памяти к максимально возможной, и в то же время обеспечить большой объем памяти по цене более дешевых типов полупроводниковой памяти. В кэше хранится копия фрагмента основной памяти. Когда процессор пытается прочесть слово из памяти, выполняется проверка на наличие этого слова в кэше. Если оно там есть, слово передается процессору. Если же его там нет, в кэш считывается блок основной памяти, состоящий из слов с определенными адресами. Вследствие локализации обращений при считывании в кэш блока данных, содержащего одно из требуемых слов, последующие обращения к данным с высокой вероятностью тоже будут выполняться к словам из этого блока.
На Рис. 2 .10 показана структура основной памяти и кэша. Основная память состоит из 2n адресуемых слов, каждое из которых характеризуется своим уникальным n-битовым адресом. Предполагается, что вся память состоит из определенного количества блоков фиксированной длины, в каждый из которых входит К слов. Таким образом, всего имеется М=2n /К блоков. Кэш состоит из С слотов, по К слов в каждом. При этом количество слотов намного меньше количества блоков. Некоторое подмножество блоков основной памяти хранится в слотах кэша. Если нужно прочесть из памяти слово, находящееся в определенном блоке, которого нет в кэше, то этот блок передается в один из слотов кэша. Из-за того, что блоков больше, чем слотов, нельзя закрепить за каждым блоком свой слот. Поэтому каждый слот должен содержать дескриптор (числовой код), идентифицирующий хранящийся в нем блок. В роли дескриптора обычно выступает число, состоящее из старших битов адреса, и по нему происходит обращение ко всем адресам, которые начинаются этой последовательностью битов.
Рис. 2.10. Структура кэша (а) и основной памяти (б)
Рассмотрим простой пример, в котором адреса состоят из шести битов, а дескрипторы – из двух. Дескриптор 01 указывает на то, что в слоте находится блок, в который входят адреса 010000(2)… 011111(2).
Подведем итоги
память состоит из байтов, каждый из которых имеет номер, который называется адресом;
байты группируются в слова – порядок байтов в слове и длина слова зависит от конкретной реализации компьютера;
чтобы приблизить скорость доступа к памяти к максимально возможной, и в то же время обеспечить большой объем памяти по низкой цене используют кэш-память – между процессором и основной памятью помещается память с небольшой емкостью и быстрым временем доступа;
конфигурация памяти компьютера определяется тремя параметрами: объем, быстродействие, стоимость – на их основе строится идеология иерархии запоминающих устройств, когда к более дорогим устройствам с меньшей емкостью и более высокой производительностью добавляются более емкие, дешевые, но менее производительные.
Вопросы для самоконтроля
Что такое основная память?
Что такое адрес ячейки памяти?
Как Вы думаете, каким ОЗУ является кэш-память – статической или динамической? Объясните почему.
Адреса компьютера состоят из 8 бит, а дескрипторы кэш-памяти – из 3. Какая длина блока кэш-памяти?
Что такое вспомогательная память?
Объясните принципы организации запоминающих устройств. Приведите пример такой организации.