Вы находитесь на странице: 1из 81

Архитектура вычислительных систем

1. 1.Логические функции, используемые в


вычислительной технике, понятие и примеры
функционально полных систем.

Лекция от 9 сен. С 0.00 – 23.10

Логические функции
Основным понятием алгебры логики является высказывание.
Высказывание - это предположение, относительно которого имеет смысл утверждение
истинно оно или ложно. Высказывание не может быть одновременно истинно и
ложно. Аналогом равенства в алгебре логики является эквивалентность (=). Значение
высказывания может быть переменным в зависимости от значений других
высказываний входящих в его состав.
При логическом описании цифровых схем значения высказываний
обозначают цифрами. Как правило, истина описывается цифрой 1, а ложность –
цифрой 0.

Произвольное высказывание рассматривается как некоторая величина принимающая


значение либо 0 (ложь) либо 1(истина). Поэтому при использовании сложных
логических зависимостей вместо термина «произвольное высказывание» используют
термин «двоичная (логическая) переменная».
Кроме постоянных высказываний, которые всегда имеют одно и то же
значение, рассматривают еще простые и сложные высказывания. Высказывание,
значение истинности которого не зависит от значений истинности других
высказываний, называется простым. Простое высказывание считается независимой
переменной

Все функции пронумерованы, как бы стандартизированы


Значение функции принимает инверсное значение по отношению к аргументу
инверсное или

инверсное и
С помощью девятой функции осуществляется побитовой сложение двоичных чисел
(0+0=0, 0+1=1, 1+0=1, 1+1=0 (как бы складываем в столбик: 0 пишем 1 переносим в
десятки))

Ситстемы

Таким образом, можно одни функции выражать через другие.


Все рассмотренные функции являются элементарными. Этими функциями можно
выразить любую сложную логическую функцию. Для этого можно использовать не все
элементарные функции, а только некоторую часть из них. Эта часть называется
системой.
Система называется функционально полной, если через нее можно выразить
любую функцию алгебры логики. Как правило этот набор является минимальным.
Примеры полных систем:
Примеры выражения разных функций через другие:

(можно с помощью таблицы по типу предыдущей их доказать)


2. Основные законы алгебры логики и формы
логических функций.
Лекция от 9 сен. С 23.10 – 40.00

Законы алгебры логики

Можно доказать с пом. таблицы истинности или теории множеств

формы логических функций.


Любая логическая функция может быть выражена различными
формулами. Для первой полной системы удобно применять так называемые
нормальные формы логических функций. Их строят на основе
элементарных конъюнкций и элементарных дизъюнкций.

1. Элементарная конъюнкция Q. Это логическое произведение,


состоящее из переменных и их отрицаний, причем каждая
переменная встречается только один раз.
Число переменных называется рангом конъюнкции.

2. Элементарная дизъюнкция D. Это логическая сумма, состоящее из


переменных и их отрицаний, причем каждая переменная встречается
только один раз.

Число переменных называется рангом конъюнкции.

3. Дизъюнктивная нормальная форма (ДНФ). Это логическая сумма


элементарных конъюнкций.

Эта форма существует для любой логической формулы.


Эта форма легче, чем КНФ, тк не надо раскрывать скобки (т.е. она проще
для вычисления)

4. Конъюнктивная нормальная форма (КНФ). Это логическое


произведение элементарных дизъюнкций.

Эта форма существует для любой логической формулы.


5.
повторяющиеся конъюнкции

6.

В практике используется редко, поэтому примера нет.


Используется в системах автоматизированных построений.
3. Синтез логических систем.
Различные логические функции отражают условия работы компьютера и возможный
его состав, если каждой элементарной логической операции ставится в соответствие
реальный физический элемент. Это означает, что логические функции можно
использовать в качестве тех аналитических форм, по которым строятся логические
схемы различных узлов ЭВМ.

Любая сложная логическая функция может быть выражена через


элементарные функции, составляющие функционально полную систему. Любая
сложная логическая функция может представлять собой реализацию некоторой части
компьютера, если эта часть построена с помощью набора элементов, реализующего
все функции одной из функционально полных систем. Набор элементов, отвечающий
любой функционально полной системе элементарных логических функций,
называется функционально полным набором логических элементов.

Для построения узлов компьютера чаще всего используются элементы,


обеспечивающие реализацию таких элементарных логических операций (функций),
как отрицание, конъюнкция, дизъюнкция, операция Шеффера и операция Пирса.

Для реализации логических функций, заданных своими дизъюнктивными


нормальными формами, можно использовать набор элементов И, ИЛИ, НЕ. Элементы
И реализуют элементарные конъюнкции, элементы ИЛИ — дизъюнкции, элементы НЕ
используются для инвертирования значений соответствующих переменных.

Ясно, что реализация д. н. ф. возможна только тогда, когда элементы И имеют


количество входов, не меньшее ранга реализуемых конъюнкций, а элемент ИЛИ имеет
количество входов, не меньшее числа конъюнкций в реализуемой д. н. ф. Если эти
условия не выполняются, то конъюнкции и дизъюнкция реализуются по частям, что
усложняет общую логическую схему.

К усложнению схемы ведет и увеличение числа конъюнкций в д. н. ф., так как


для реализации каждой конъюнкции требуется, по крайней мере, один элемент И.
Следовательно, в общем случае более простой логической функции отвечает и более
простая логическая схема. Для упрощения начальных форм логических функций
проводятся специальные действия, или минимизация логических функций.

Основная цель минимизации логических функций — получение их минимальных


нормальных форм, дизъюнктивных или конъюнктивных.

В общем случае минимальная форма определяется следующим образом:


дизъюнктивная или конъюнктивная нормальная форма логической функции
называется минимальной, если она содержит наименьшее число двоичных
переменных, их отрицаний и логических операций по сравнению со всеми другими
эквивалентными дизъюнктивными или соответственно конъюнктивными нормальными
формами.

Минимизация исходной логической функции осуществляется в результате


понижения ранга конъюнкций (дизъюнкций) в результате использования основных
законов алгебры логики, их следствий или же логических тождеств, например P + 1 ≡ P,
P * 0 ≡ 0 или же P + P ≡ P, P * P ≡ P.
При проведении эквивалентных преобразований необходимо получить
минимальную форму функции (формулы), т. е. такую, которая не содержит «лишних»
двоичных переменных и «лишних» членов. При этом «лишними» двоичными
переменными и членами логической формулы называются такие, значения которых не
влияют на значение преобразуемой формулы.

Так, например, в формуле F = x1 * x2 * x4 + x1 * x2 * не x4 лишней является


переменная x4 т. к. значение истинности рассматриваемой функции не зависит от
значений этой переменной. F = x1 * x2 (x4 + не x4) = x1 * x2

В примере мы провели так называемую «склейку», т.е. удалили элемент x4 + не x4 ≡ 1

Синтез логической схемы заключается в ее построении по заданным условиям


работы соответствующего узла компьютера. Эти условия определяют количество
входов и выходов узла, а также закон соответствия наборов входных и выходных
сигналов. Алгоритм синтеза может включать в себя следующие шаги:

1.
Формирование логических условий работы рассматриваемого узла пу-
тем составления таблицы его работы, или таблицы истинности, для
соответствующих логических функций. Таблица работы узла со-
ставляется непосредственно по заданным условиям его работы

2. Получение по таблицам истинности аналитических представлений логи-


ческих функций, описывающих рассматриваемый узел, в виде совер-
шенных д. н. ф. или к. н. ф.

3. Минимизация логических функций, проводимая с целью получения


в конечном итоге наиболее простой логической схемы. Минимизированные
функции приводятся к виду, который отвечает наиболее простой их
реализации с помощью логических элементов заданного набора.

4. Построение логической схемы по минимизированным логическим функ-


циям.

Чаще используют элементарные конъюнкции и, соответственно, С. Д. Н. Ф. в силу


того, что в этом случае удобнее проводить необходимые преобразования. В этом
случае обычно стараются выявить так называемые «соседние» конъюнкции, т.е.
элементарные конъюнкции одного ранга, состоящие из одних и тех же логических
переменных и отличающихся инвертированием только одной переменной, т.е. если в
некоторую конъюнкцию входит переменная Xi, то в «соседнюю» входит Xi Например,
конъюнкции X1 * X3 * X4 и X1 * X3 * X4 являются «соседними».

В цифровой схемотехнике элементарным логическим функциям соответствуют


физические устройства (элементы устройств), которые их реализуют. На базе этих
элементов построены все сложные цифровые системы. Графически эти элементы
изображаются так:
Правила получения из таблицы истинности, по которым производится построение
дизъюнктивных и конъюнктивных нормальных форм.

Правило 1. Для построения совершенной дизъюнктивной нормальной формы


логической функции от двоичных переменных, заданной таблицей истинности,
необходимо по каждому набору двоичных переменных, на котором функция
принимает значение единицы, записать конъюнкцию k-го ранга, включающую все
переменные, и полученные конъюнкции соединить знаками дизъюнкции; при записи
конъюнкций двоичные переменные равные нулю инвертируются, т.е. в конъюнкцию
включаются их отрицания, а остальные включаются без изменений.

Правило 2. Для построения совершенной конъюнктивной нормальной формы


логической функции от двоичных переменных, заданной таблицей истинности,
необходимо по каждому набору двоичных переменных, на котором функция
принимает значение нуля, записать дизъюнкцию k-го ранга, включающую все
переменные, и полученные дизъюнкции соединить знаками конъюнкции; при записи
дизъюнкций двоичные переменные равные единице инвертируются, т.е. в дизъюнкцию
включаются их отрицания, а остальные включаются без изменений.

Пример — мультиплексор. Это устройство с n входами и одним выходом

ДНФ

Y = Q0 + Q3 + Q4 + Q5 + Q7 =

X1* X2* X3 + X1* X2* X3 + X1* X2* X3 + X1* X2* X3 + X1* X2* X3

Здесь для реализации схемы надо 5 элементов И, 3 инвертора, один элемент ИЛИ

КНФ

Y = D1 * D2 * D7 = (X1 + X2 + X3) * (X1 + X2 + X3) * (X1 + X2 + X3)


Здесь для реализации схемы надо 3 элемента ИЛИ, 3 инвертора, 2 элемента И

Проведем минимизацию ДНФ.

Y = X1 * X2 * X3 + X1 * X2 * X3 + X1 * X2 * X3 + X1 * X2 * X3 + X1 * X2 * X3 =

= X2 * X3 (X1 + X1) + X2 * X3 (X1 + X1) + X1 *X3 (X2 + X2) = X2 * X3 + X2 * X3 + X1 *X3 =


X2 * X3 + X3 (X2 + X1)

Здесь надо уже 2 инвертора три

элемента ИЛИ и 2 элемента И,

т. е. всего 6 элементов.

Вспомним закон инверсии

для дизъюнкции, тогда

Y = X2 * X3 + X3 (X2 + X1) = (X1+X2) + X3(X2 + X1)

В этом случае надо 3 элемента ИЛИ один инвертор и один элемент И

При проектировании различных устройств обычно проводят минимизацию


дизъюнктивных, а не конъюнктивных совершенных нормальных форм.

4. Классификация триггеров
Триггер (триггерная система) — класс электронных устройств, обладающих способностью
длительно находиться в одном из двух устойчивых состояний и чередовать их под
воздействием внешних сигналов. Каждое состояние триггера легко распознаётся по
значению выходного напряжения.
5.Функциональные свойства и реализация
триггеров, RS-триггеры.
Триггер — это запоминающий элемент с двумя (или более) устойчивыми состояниями,
изменение которых происходит под действием входных сигналов и предназначен для
хранения одного бита информации, то есть имеет состояния логического 0 или логической
1.
синхронный RS-тригер

асинхронный RS-тригер
RS-триггер, или SR-триггер (от англ. Set/Reset — установить/сбросить) — асинхронный
триггер, который сохраняет своё предыдущее состояние при неактивном состоянии обоих
входов и изменяет своё состояние при подаче на один из его входов активного уровня.
При подаче на оба входа активного уровня состояние триггера вообще говоря
неопределённо, но в конкретных реализациях на логических элементах оба выхода
принимают состояния либо логического нуля, либо логической 1. В зависимости от
конкретной реализации активным входным уровнем может быть как логическая 1, так и
логический 0. Так, в RS-триггере выполненном на 2 элементах 2И-НЕ активным входным
уровнем является логический 0.
При подаче активного уровня на вход S (от англ. Set — установить) выходное состояние
становится равным логической единице. А при подаче активного уровня на вход R (от англ.
Reset — сбросить) выходное состояние становится равным логическому нулю. Состояние,
при котором на оба входа R и S одновременно поданы активные уровни не определено и
зависит от реализации, например в триггере на элементах «или-не» оба выхода переходят
в состояние логической 0, которое сохраняется пока на входах удерживаются логические
1. Перевод одного из входов в неактивное состояние, в данном примере в логическую 0,
переводит триггер в одно из разрешённых устойчивых состояний. Одновременный
перевод обоих входов из активного в неактивное состояние вызывает непредсказуемое
переключение триггера в одно из устойчивых состояний.
RS-триггер используется для формирования сигнала с положительным и отрицательным
фронтами, отдельно управляемыми посредством подачи импульсов на входы, которые
разнесены во времени. Также RS-триггеры часто используются для исключения ложного
срабатывания цифровых устройств от так называемого «дребезга контактов».

6. D-триггеры, T-триггеры, JK-триггеры.


D-триггер.
- D-триггер (задержки -delay) устанавливается в состояние, соответствующее логическому
уровню на информационном входе D(при наличии разрешающего сигнала на тактовом
входе C)
- D-триггер - тактируемый (вход с)
-построен на базе rs-триггера где вход д соответствует входу s, а на вход r он подается
через доп. инвертор,следовательно исключается возможность возникновения
запрещенного состояния а вместо двух информационных входов образуется один
- триггер описывается следующим соотношением между входом и выходом: Q(n+1)=D .
-Индексы и подчеркивают, что выходной сигнал Q изменяется не сразу после изменения
входного сигнала D , а только с приходом тактового сигнала С (n+1)
Тактируемый фронтом D-триггер строится по двухступенчатой схеме:

-Построение тактируемого импульсом триггера по такой схеме, а не при помощи введения


обратных связей, обусловлено тем, что сигнал обратной связи может измениться до
окончания тактирующего импульса. Поэтому может произойти дополнительное,
незапланированное переключение триггера.
-Двухступенчатая схема называется master-slave (хозяин – раб), подчеркивая тем самым
то, что триггер состоит из двух частей. Одна часть ведущая (master), как бы заставляет
другую ведомую (slave)
повторять свои действия.
(он говорил еще про треугольничек у входа С и что возможно попросит объяснить, что
если он повернут так как на схеме то это задний фронт, а если в другую то передний)
(в оригинале неплохо разжевано но я тоже попробую):
1) на тактовом входе (С) ведущего (левого) триггера значение 0, а на правом 1,
следовательно левый в режиме хранения а правый в режиме записи приложенного к его
входу D предыдущего значения ведущего триггера т. е. тоже в том состоянии
2) на тактовый вход поступает импульс (у ведущего 1 у ведомого 0) теперь ведущий в
режиме записи а ведомый в режиме хранения того состояния которому соответствовало
уровню на своем входе D)
3) когда тактовый импульс заканчивается(становится 0) ведущий в режиме хранения
нового значения а ведомый в режиме его записи (поэтому можно сказать что изменение
всего двухступенчатого тригера происходит по заднему фронту тактового импульса)
4) в таком состоянии триггер находится до прихода нового тактового импульса.

T-триггер

- у Т-триггера (счетный) нет информационных входов(имеет только тактовый вход).

-с каждым тактовым импульсом он меняет состояние на противоположное

- T-триггер описывается следующим выражением, связывающим его текущее и


предыдущее состояния Qn+1 =не Qn .

Реализация - инверсный выход тактируемого фронтом D-триггера соединен с


его же информационным входом . Поэтому после первого тактового импульса триггер
переходит из состояния в состояние . После второго импульс триггер возвращается в
исходное состояние. Этот процесс происходит и дальше при поступлении следующих
тактовых импульсов. Иными словами в ответ на два импульса на входе появляется
один импульс на выходе

Если тактовые импульсы являются периодическими с частотой повторения f(t) , то на


выходе также имеем периодические импульсы, но с частотой повторения f(t)/2. Поэтому
счетный триггер можно рассматривать как делитель частоты с коэффициентом
деления 2. Такой режим работы триггера, как и образовавшийся при этом вход
называют счетным. Счетный триггер можно получить, используя и другие триггеры.

(счетный триггер делит частоту повторений на 2 (4, 8...))

JK-триггеры

-JK-триггер это наиболее универсальный триггер, из всех рассмотренных выше.

-имеет, как счетный вход, так и информационные входы, управляющие счетным.

-Аббревиатура JK, используемая для обозначения информационных входов


происходит от английских слов Jump – прыжок и Keep – держать.

-Структура JK-триггера напоминает счетный триггер на базе тактируемого фронтом


RS-триггера. Однако обратные связи заводятся на входы S и R через дополнительные
двухвходовые схемы И. На другие входы этих схем И подаются информационные
сигналы J и K. Если J=1 и K=1, то триггер полностью эквивалентен предыдущей схеме
и работает как счетный. В противном случае он работает как тактируемый фронтом
триггер с установочными входами.

(как я могу объяснить он построен на базе счетного но обратные связи


контролируются дополнительными входами J и K(значения в различных
случаях см. по таблице истинности))

7. Регистры.
Регистр - это элемент памяти, предназначенный для хранения и выдачи
информации представленной в виде двоичного кода. (хранение двоичных чисел)
Кроме того, регистры используются для преобразования последовательного кода в
параллельный и наоборот, для сдвига кода вправо или влево, что бывает необходимо
при выполнении арифметических операций и нормализации.

-Регистр состоит из триггеров, каждый из которых хранит один разряд двоичного


числа.
-Каждому триггеру может быть поставлен в соответствие весовой коэффициент (вес),
связанный с номером двоичного разряда. Таким образом, с помощью весов
обеспечивается позиционное представление двоичного числа.

-В чисто двоичном n-разрядном регистре веса триггеров равны 20, 21, 23... , т.е. 1, 2, 4, 8,
… . Причем счет разрядов начинается с 0 – младший разряд и продолжается до n –
старший разряд регистра.

-Регистры строятся на базе тактируемых триггеров. Такие регистры должны по


тактовому сигналу (сигналам) принимать код двоичного числа и хранить его до
прихода следующего тактового сигнала (сигналов).

По способу записи двоичного числа:

Параллельные регистры
Параллельные регистры принимают на входе n-разрядное двоичное число, все
разряды которого записываются в регистр одновременно (параллельно) за один такт.

В параллельном регистре разряды двоичного числа, поступающие, например, с


выходов другого регистра, соединены с информационными входами D-триггеров,
тактовые входы, которых объединены между собой и представляют собой единый
тактовый вход регистра. Таким образом, после подачи импульса на тактовый вход,
происходит запись информации с входов Di на выходы Qi.

Последовательные регистры
Последовательные регистры, их называют также сдвигающими, принимают
разряды числа последовательно, по очереди, начиная с младшего, за n-тактов.(на
основе D-тригеров более просто осуществляется)
Этот регистр — сдвигающий. Он осуществляет сдвиг вправо. Выход предыдущего
триггера присоединяется к входу D последующего. Благодаря такому включению,
каждый тактовый импульс устанавливает последующий триггер в состояние, в котором
до этого находился предыдущий, осуществляя тем самым сдвиг информации на разряд
вправо. (можно модифицировать и получить сдвиг влево)

-Если веса триггеров фиксированы, то сдвиг на одну позицию вправо ~ деление числа
на 2, влево ~ умножение на 2.

-Сдвигающие регистры широко используются в арифметико-логических устройствах


процессоров для организации операций двоичного умножения и деления. При этом
используются универсальные сдвигающие регистры, в которых есть сигнал управления
направлением сдвига

-сигнал управления сдвигом N. Если он на этом входе равен 1 то уровень на входе D


данного триггера определяется выходом триггера, стоящего слева от него(сдвиг
информации вправо), если же N = 0, то справа(сдвиг информации влево)

Di = Qi-1*N + Qi+1 * (*отрицание N)


С — тактовый вход

P - управление режимом записи

N — направление сдвига

В схему универсального сдвигающего регистра введены дополнительные элементы


И-ИЛИ. Эти элементы разрешают или запрещают подачу параллельного кода PDi на
входы Di триггеров, в зависимости от сигнала P управления режимом работы.
8. Счетчики.
Счетчики - разновидность регистров, изменяющих свое состояние при подаче на их
вход импульсных сигналов. В компьютерах счетчики применяются в устройствах
управления для формирования адресов ячеек ЗУ, в которых хранятся команды и
программы, в аналого-цифровых преобразователях и т. п. Различают:


суммирующий счетчик (каждый импульс на входе увеличивает код
хранимого в нем числа на единицу)

● вычитающий счетчик (каждый импульс на входе уменьшает код


хранимого в нем числа на единицу)

● Реверсивный счетчик (импульс на вход суммирования «+» или на вход


вычитания «–»)
Эти простейшие счетчики реализованы на T-триггерах. В них все подлежащие
переключению триггеры изменяют свое состояние не одновременно, а
последовательно друг за другом. Например, если все три триггера простого
суммирующего счетчика находятся в единице, то очередной входной импульс
опрокинет первый триггер. Изменение уровня на выходе первого триггера опрокинет
второй триггер, выходной сигнал которого, заставит опрокинуться третий. Поэтому
счетчики, построенные по такому принципу, называются асинхронными.

Минусы: задержка в установлении соответствующего кода после прихода счетного


импульса; при переходе от одного кода к другому счетчик на короткое время
принимает промежуточные состояния.

Например, рассмотрим работу суммирующего счетчика, начиная с состояния 011.


Тогда, при приходе счетного импульса код в данном счетчике будет меняться сле-
дующим образом: 011 – 010 – 000 – 100. В данном случае переходной процесс от
кода 011 к коду 100 содержит два промежуточных состояния 010 и 000. В случае если
к выходам счетчика подключены другие устройства, например дешифратор
параллельного кода, эти промежуточные состояния вызовут ложные срабатывания
этих устройств.

Эти недостатки устраняются при использовании синхронных счетчиков, в которых


срабатывание триггеров происходит одновременно. Это достигается благодаря тому,
что триггеры синхронного счетчика опрокидываются под воздействием входного
импульса, а не от сигнала предыдущего триггера.

Счетчик строится так, чтобы каждому импульсу соответствовали срабатывания только


определенных триггеров. Счетчик со сквозным переносом является одним из
вариантов построения синхронного счетчика.

В этом счетчике на счетные входы триггеров подаются входные тактовые импульсы.


Эти импульсы проходят через схемы «И», на другие входы в которых поступают
сигналы с выходов соответствующих триггеров. Основная идея такого включения
состоит в том, что из тактового сигнала формируется так называемый импульс
переноса, который проходит только на те триггера, которые должны опрокидываться.

Пусть начальное состояние 011. Первый и второй триггер находятся в 1, поэтому на


выходах соответствующих им схем И из тактовых импульсов сформируются еще до их
опрокидывания сигналы переноса. Эти сигнал переноса с первой схемы И опрокинет
второй триггер, а сигнал переноса со второй, схемы И опрокинет третий триггер,
первый триггер опрокинется непосредственно от тактового сигнала. Таким образом,
переход счетчика от состояния 011 в состояние 100 произойдет без промежуточных
состояний практически синхронно с задним фронтом тактового импульса. На самом
деле триггеры срабатывают не совсем синхронно из-за задержек, вносимых схемами
И, но эта несинхронность на порядок ниже, чем у асинхронных счетчиков.

Счетчик из n триггеров имеет 2n устойчивых состояний и может хранить числа в


диапазоне от 0 до 2n - 1, при этом сам счетчик называется двоичным.

Число m называют коэффициентом пересчета или коэффициентом деления счетчика.


Если необходимо построить счетчик с коэффициентом деления меньшим чем 2n, то
некоторые состояния счетчика можно запретить, используя, например обратные связи.
Счетчик, в котором имеется только десять устойчивых состояний, называют десятич-
ным или декадным. Несколько включенных друг за другом декад образуют
многоразрядный счетчик, работающий в десятичной системе счисления.

Пример десятичного счетчика. В этом счетчике запрещены состояния, начиная с 1010


и кончая состоянием 1111. Таким образом, после состояния 1001 (код цифры 9
десятичной системы) следует состояние 0000 (код цифры 0). Этот счетчик работает в
так называемом двоично-десятичном коде.
Можно исключать не только последние состояния, но и любые другие, однако это
приводит к усложнению структуры счетчика. Включая последовательно, друг за другом
счетчики с различными коэффициентами деления, можно получить многоразрядный
счетчик с любым необходимым коэффициентом деления.

Любой счетчик можно использовать как делитель частоты входных импульсов.


Частота выходных импульсов fвых, снимаемых с последнего триггера счетчика в m раз
ниже частоты входных импульсов, т.е. fвых = fвх/m. Это свойство используют в
процессорах для реализации программируемого таймера, представляющего собой
счетчик с программируемым коэффициентом деления и стабильной известной
частотой, поступающей на вход этого счетчика.

Счетчик с управляемым коэффициентом деления, задаваемым кодом.

9. Дешифраторы и шифраторы.
Дешифраторы это логические узлы со многими входами и
выходами, переводящие некоторый многоразрядный
двоичный код в единичный позиционный код. При этом на
каждом из выходов сигнал равен единице (или нулю) только при
определенном сочетании входных сигналов. В общем случае для
n
n-разрядного кода полный дешифратор имеет n входов и 2
выходов. Рассмотрим трехразрядный двоичный дешифратор.
Таблица его состояний имеет вид:
Будем считать, что входной код на дешифратор подается с
некоторого регистра, имеющего как прямые, так и инверсные
выходы для хранимого кода. При этом схема дешифратора,
реализующая его таблицу состояний, упрощается, т.к. инверсные
сигналы можно не формировать, а использовать уже имеющиеся

инверсии.
Шифраторы реализуют преобразование из единичного
позиционного кода в взвешенный двоичный код, т.е. выполняют
обратную по oтношению к дешифраторам функцию. Рассмотрим
восьмиразрядный шифратор. Он преобразует входные сигналы в
трехразрядный двоичный код, поэтому его таблица истинности
такая же, как у соответствующего ему дешифратора. С той
только разницей, что входы и выходы в ней меняются местами.
10. Полусумматор и сумматор.
Сумматоры предназначены для проведения операций
суммирования с многоразрядными двоичными числами. Часто
сумматоры работают во взаимодействии с регистрами,
обеспечивающими хранение исходных кодов и результатов их
сложения. Операция вычитания сводится к суммированию чисел
в прямом и дополнительном коде и поэтому также выполняется
при помощи сумматора.
Рассмотрим операцию суммирования одноразрядного двоичного
числа, с помощью которой можно реализовать суммирование
многоразрядных чисел. Пусть складываем два одноразрядных
числа a и b. Операция их суммирования характеризуется
следующей таблицей истинности:

S - значение суммы в данном разряд, P - перенос в следующий разряд


Перенос возникает при сложении двух единиц одного разряда,
если a и b являются некоторыми разрядами многоразрядного
числа. При этом S = не a * b + a * не b P = a * b.
Устройства, реализующие эту таблицу истинности называются
полусумматорами, т.к. они не имеют входа переноса из
предыдущего разряда. Преобразуем формулу для реализации на
элементах И-НЕ
S = не a * b + a* не b = не a * b + a* не b + a * не a + b * не b =
не a(b + a) + не b (a +b) ?= a * не(ab) + b * не(ab) = не(a *не(ab))
* не(b* не(ab))

Одноразрядный сумматор в отличие от полусумматора, должен


воспринимать не два, а три входных сигнала – два слагаемых и
сигнал переноса из предыдущего разряда. Полный
одноразрядный сумматор может быть построен на двух
полусумматорах и схеме ИЛИ.
Первый полусумматор производит сложение i-тых разрядов
слагаемых ai и bi . Он вырабатывает промежуточные сигналы
’ ’
суммы si и переноса pi . Второй полусумматор складывает

промежуточную сумму si и сигнал переноса pi-1 из
предыдущего разряда . На его выходе формируются сигнал

суммы si и второго промежуточного переноса pi . Общий сигнал
’ “
переноса представляет собой дизъюнкцию сигналов pi и pi .
Схему полного сумматора можно также построить, если
подходить к нему как логическому устройству
воспринимающему три входных сигнала. Таблица истинности
для полного сумматора будет иметь вид:
Проведя соответствующие преобразования, можно представить
логические функции, реализуемые полным одноразрядным
сумматором как:

Si = ai * bi * pi-1 + ai * bi * pi-1 + ai * bi * pi-1 + ai * bi * pi-1

pi = ai * pi-1 + ai *bi + bi * pi-1


11. Архитектура фон Неймана. Арифметико-
логическое устройство и устройство
управления.
Абсолютное большинство всех современных вычислительных систем,
начиная с больших и мини-ЭВМ, некоторых суперкомпьютеров,
различных серверов и заканчивая персональными компьютерами, относят
к системам, имеющим архитектуру фон Неймана или традиционную
(классическую). Их работа основывается на трех базовых принципах,
предложенных Джоном фон Нейманом — принцип программного
управления, принцип, принцип однородности памяти и принцип
адресности памяти.

Принцип программного управления.


Согласно данному принципу, программа состоит из набора команд,
которые выполняются процессором автоматически друг за другом в
заданной последовательности.
Выборка программы из памяти осуществляется с помощью
специального регистра процессора— счетчика команд. В этом регистре
адрес хранящейся в нем очередной команды последовательно
увеличивается на ее длину.
Команды программы расположены в памяти друг за другом, поэтому
организуется выборка цепочки команд из последовательно
расположенных ячеек памяти. При переходе не к следующей, а к какой-
либо другой команде, используются команды условного или безусловного
переходов, которые заносят в счетчик команд адрес ячейки памяти,
содержащей следующую команду. Выборка команд из памяти
прекращается после достижения и выполнения команды "стоп". Таким
образом, процессор исполняет программу автоматически, без
вмешательства человека.

Принцип однородности памяти.


Программы и данные хранятся в одной и той же памяти. Таким
образом, компьютер не различает, что хранится в данной ячейке памяти:
число, символ или команда. Над командами можно выполнять такие же
действия, как и над данными. В этом случае, программа в процессе своего
выполнения также может подвергаться изменениям, что позволяет
задавать в самой программе правила получения некоторых ее частей
(подпрограмм).
Кроме того, команды одной программы могут быть получены как
результаты исполнения другой программы.

Принцип адресности.
Основная память состоит из перенумерованных ячеек, и процессору в
произвольный момент времени доступна любая ячейка.
Отсюда следует возможность давать имена областям памяти так, чтобы к
запомненным в них значениям можно было впоследствии обращаться или
менять их в процессе выполнения программ с использованием
присвоенных имен.
Обработка информации на ЭВМ сводится к логическим и арифметическим
операциям над двоичными числами.

Арифметико-логическое устройство
Часть процессора, в которой выполняются операции, называется
арифметико-логическим устройством (АЛУ).
Операции
Арифметические Логические
Сложение Сравнение
Сдвиг двоичных чисел Выделение части числа
С помощью дополнительного кода Арифметический и логический сдвиг
все остальные

В принципе, в состав процессора могут входить несколько АЛУ для


реализации операций с целочисленными данными (командами) и
выполнения операций над данными с плавающей точкой.
Устройство управления
Устройство управления (УУ) служит для автоматического выполнения
заданной программы или координации работы всех устройств ЭВМ. Все
устройства управления имеют общую структуру, поскольку все они
выполняют одни и те же основные функции. Одной из основных задач
устройства управления является подача в АЛУ операндов и кода
операции, которая должна быть выполнена над операндами.
Реализация "внутренних" операций, связанных с выборкой очередной
команды, хранением команды в течение цикла, преобразованием ее
адресной части, выделяется в отдельный блок, обычно называемый
блоком управления командами (БУК). Преобразование операционной
части команды осуществляется с помощью второго основного блока
устройства управления— блока микрокоманд (БМК). В структуру УУ
может входить блок прерываний.
Блок микрокоманд служит для преобразования операционной части
команды и формирования всех, необходимых для выполнения заданной
операции, наборов управляющих сигналов.
В блоке управления командами формируется адрес очередной команды,
хранится код исполняемой команды и осуществляется преобразование
адресных частей команд, включая действия по образованию
исполнительных адресов, по которым осуществляется непосредственная
выборка операндов.
Аппаратура и цепи передачи информации БУК обеспечивают также
изменение естественной последовательности команд. Это необходимо при
выполнении команд условной или безусловной передачи управления и
других.
В состав блоков управления командами включаются регистры, счетчики,
сумматоры, и другие логические элементы.
Блоки прерываний представляют собой аппаратную часть общих систем
прерываний, обеспечивающих в компьютерах прерывание выполнения
текущих программ и переход к выполнению других программ.
Прерывания нужны также для разделения машинного времени между
различными рабочими программами и для быстрого реагирования на
ситуации, связанные с выполнением текущих программ и состояниями
устройств компьютера. К таким ситуациям относятся: переполнение
разрядной сетки, нарушение защиты оперативной памяти, выявление
неисправности какого-либо устройства, наличие ошибки в операционной
части команды и т. п.
План:
1. Архитектура Фон Неймана: три принципа

2. Арифметически логическое устройство

3. Устройство управления и составляющие


12. Системы команд. Методы адресации,
применяемые в ЭВМ.
Система команд любой ЭВМ обязательно содержит следующие группы
команд обработки информации:
• Команды передачи данных
Команды этой группы позволяют копировать информацию из одного
места в другое.
• Арифметические операции
К основным арифметическим действиям обычно относятся сложение и
вычитание, сводимое к сложению, а также умножение и деление, которые
сводятся к сложению и сдвигу.
• Логические операции
Простейшими примерами команд рассматриваемой группы могут служить
сравнение, а также известные логические операции И, ИЛИ, НЕ. Кроме
того, к ним часто добавляются такие операции, как анализ отдельных
битов кода, их сброс и установка.
• Сдвиги двоичного кода влево и вправо.
Команды данной группы используются, прежде всего, при реализации
умножения и деления. В некоторых частных случаях умножение и деление
вообще может быть заменено сдвигом.
• Команды ввода и вывода информации для обмена с внешними
устройствами
В некоторых ЭВМ подключаемые внешние устройства представляются
специальными служебными адресами памяти, поэтому ввод и вывод
информации реализуется с помощью команд передачи данных.
• Команды управления, реализующие нелинейные алгоритмы
К этой группе, прежде всего, следует отнести условный и безусловный
переход, а также команды обращения к подпрограмме (переход с
возвратом) и программные прерывания.

Любая команда ЭВМ обычно состоит из двух частей: операционной и


адресной.
Операционная часть (иначе она еще называется кодом операции — КОП)
указывает, какое действие необходимо выполнить с информацией.
Адресная часть описывает, где используемая информация хранится и куда
поместить результат. У некоторых команд управления адресная часть
может отсутствовать, например, в команде останова.
Операционная часть команды имеется всегда. Код операции можно
представить себе как некоторый условный номер в списке системы
команд.
Под форматом команды понимают совокупность размера всех полей и их
расположения в команде. Команды могут быть одно-, двух- и
трехадресные, в зависимости от количества возможных операндов.
Первые ЭВМ имели наиболее простую и наглядную трехадресную
систему команд, содержащую кроме кода операции три адреса. Первый
адрес A1 указывает на первый операнд, второй A2 на второй операнд, а
третий A3, задает адрес размещения результата выполненной команды.

Трехадресная команда легко расшифровывалась и была удобна в


использовании при программировании, но с ростом объемов ОЗУ ее длина
становилась слишком большой
Например для 32 разрядного компьютера и линейной адресации памяти
для записи только адресной части команды нужно 3 * 32 = 96 бит
Кроме того, использование ячеек памяти, которая имеет гораздо меньшее
быстродействие, чем процессор, существенно замедляет работу всей
вычислительной системы.
Поэтому появились двухадресные машины, длина команды в которых
сокращалась за счет исключения адреса записи результата. В подобных ЭВМ
результат операции оставался в специальном регистре (сумматоре или
аккумуляторе Σ) и мог быть использован в последующих вычислениях. В
некоторых машинах результат записывался вместо одного из операндов.
Дальнейшее упрощение команды привело к созданию одноадресных машин .
Возможна реализация безадресной (нуль-адресной) машины, использующей
особый способ организации памяти — стек.

Методы адресации:
Непосредственная Вместо адреса сам операнд
Абсолютная(прямая) Полный адрес ячейки
Косвенная Ссылка на ссылку на ячейку
Регистровая Регистр указывает на операнд
Косвенно-регистровая Указатель на адрес операнда
Регистровая относительная Сумма данных регистра и смещения
указывает на операнд
Базово индексная Сумма в базовом и индексном
регистре указывает на операнд
Относительно базово индексная Сумма базового регистра, индексного
регистра и смещения указывает на
операнд

План:
1. 6 систем команд
2. Команда ЭВМ: одно-, двух-, трех-адресные
3. Методы адресации

13. Классификация и виды постоянной памяти


Виды памяти:

● Постоянная
● Оперативная
● Кэш-память

Постоянная память – хранит записанные данные и при отсутствии


питающего напряжения, чем принципиально отличается от статической и
динамической полупроводниковой памяти. Виды различаются способом
построения запоминающих ячеек, и сферами применения.
Программирование – запись информации в энергонезависимую память.

Виды постоянной памяти:

● ROM

Микросхемы, программируемые при изготовлении (масочные ПЗУ,


ROM). Имеют самое высокое быстродействие, но не позволяют
модифицировать записанную в них информацию.

● PROM

Микросхемы, программируемые однократно после изготовления. Они


называются программируемыми (прожигаемыми) ПЗУ или PROM
(Programmable ROM). Эти микросхемы программируются на
специальных устройствах — программаторах. Однократно
программируемые ППЗУ или PROM имеют аналогичные c ПЗУ и ROM
параметры.

● EPROM

Микросхемы, стираемые и программируемые многократно


(репрограммируемые) РПЗУ или EPROM (Erasable PROM) -
микросхемы, стираемые ультрафиолетовым облучением. Микросхемы
EPROM программируются на программаторах, но относительно
простой интерфейс записи позволяет их программировать и
непосредственно в устройстве при подключении внешнего
программатора. Стирание таких микросхем осуществляется
ультрафиолетовым облучением в течение нескольких минут(Стирание
информации происходит сразу для всей микросхемы под воздействием
облучения и занимает несколько минут. Стертые ячейки имеют
единичные значения всех бит, Запись может производиться в любую
часть микросхемы побайтно. В пределах байта можно маскировать
запись отдельных бит, устанавливая им единичные значения данных.).
Благодаря возможности их программирования изготовителем
оборудования, они находят более широкое применение для хранения
кодов BIOS и в графических адаптерах.

● EEPROM

Электрически стираемые микросхемы EEPROM (Electrical Erasable или


ЭСПЗУ), в том числе и флэш-память. Микросхемы EEPROM
относительно небольшого объема широко применяются в качестве
энергонезависимой памяти конфигурирования различных адаптеров.
Современные EEPROM имеют более сложную внутреннюю структуру,
в которую входит управляющий автомат, что, позволяет упростить
внешний интерфейс, делая возможным их непосредственное
подключение к микропроцессорной шине.

● Flash Memory

К классу EEPROM относится и флэш-память, использующая особую


технологию построения запоминающих ячеек на базе полевых
транзисторов. Наиболее известны типы флэш-памяти, запоминающие
транзисторы в которых подключены к разрядным шинам,
соответственно, параллельно и последовательно. Первый тип имеет
относительно большие размеры ячеек и быстрый произвольный доступ,
что позволяет выполнять программы непосредственно из этой памяти.
Второй тип имеет меньшие размеры ячеек и быстрый
последовательный доступ, что дает возможность реализовывать флэш-
диски.

Для флэш-памяти характерна матричная организация, такая же, как и


для других видов полупроводниковой памяти. Разрядность данных для
микросхем составляет 1-2 байта. Операция чтения из флэш-памяти
выполняется как в обычных ЗУ с произвольным доступом. Однако
процедура записи сохраняет в себе особенности ПЗУ.

Перед записью данных ячейки, в которые будет производиться запись,


должны быть очищены. Стирание заключается в переводе элементов
памяти в состояние единицы и возможно только сразу для целого блока
ячеек. Ячейки группируются в блоки, допускающие независимое
стирание.

Стирание информации происходит достаточно долго. Выборочное


стирание невозможно. В процессе записи информации
соответствующие элементы памяти переключаются в нулевое
состояние.

Так же, как и в ПЗУ, без стирания можно записать нули в уже
запрограммированные ячейки. Фактически при операции записи
производится два действия: запись и считывание, но управление этими
операциями производится внутренним автоматом и "прозрачно" для
процессора.

Разбиение адресного пространства микросхемы флэш-памяти на блоки


бывает двух видов: симметричное и асимметричное.

В первом случае, называемом также Flash File, все блоки (стирание в


пределах каждого из которых производится только для всего блока
сразу) имеют одинаковый размер, например. Количество блоков
зависит от емкости микросхемы.

В случае асимметричной архитектуры, называемой иначе Boot Block,


микросхемы памяти имеют однобайтную или же переключаемую
разрядность 8/16 бит. Один из блоков, на которые разбито адресное
пространство микросхемы, дополнительно разбивается на меньшие
блоки. Этот блок имеет дополнительные аппаратные средства защиты
от модификации и предназначается для хранения жизненно важных
данных, не изменяемых при запланированных модификациях
остальных областей.

Эти микросхемы специально предназначены для хранения системного


программного обеспечения (BIOS), а привилегированный блок (Boot
Block) хранит минимальный загрузчик, позволяющий загрузить
систему и выполнить утилиту программирования основного блока
флэш-памяти.

Основной блок и блоки параметров по защите равноправны. Выделение


больших блоков параметров позволяет хранить в них часто сменяемую
информацию

ОСАТКИ ПРЕЗЕНТАЦИИ
Энергонезависимую память, запись в которую производят при регулярной
работе, называют NVRAM (Non-Volatile Random Access Memory). Это
название подчеркивает возможность произвольной смены информации не
только во всей ее области, но и в отдельной ячейке или небольшом блоке.

Запоминающие ячейки энергонезависимой памяти обычно позволяют


записывать только нули (реже — только единицы) в предварительно
стертые (чистые) ячейки. Однократно программируемые микросхемы
позволяют изменять только исходное (после изготовления) состояние
ячеек.

Стирание ячеек выполняется либо для всей микросхемы, либо для


определенного блока, либо для одной ячейки (байта) и приводит все биты
стираемой области в одно состояние (обычно в единичное). Процедура
стирания занимает время существенно большее, чем время записи. В
зависимости от способа стирания различают:

Энергонезависимая память применяется для хранения неизменяемой


информации — системного программного обеспечения, - BIOS, таблиц
знакогенераторов графических адаптеров и т.п.
Энергонезависимую память, запись в которую производят при регулярной
работе, называют NVRAM (Non-Volatile Random Access Memory). Это
название подчеркивает возможность произвольной смены информации не
только во всей ее области, но и в отдельной ячейке или небольшом блоке.

14. Принципы работы и способы повышения


быстродействия оперативной памяти.
Оперативное запоминающее устройство (ОЗУ)
Оперативную память называют также RAM (Random Access
Memory)
В настоящее время для реализации ОЗУ используют микросхемы
динамической памяти (DRAM — Dynamic RAM). Такое название
связано с особенностями организации хранения информации.
Ячейка стандартного динамического ОЗУ представляет собой
конденсатор, хранящий электрический заряд. Как известно,
конденсаторы могут самопроизвольно разряжаться, что приводит
к потере информации. Чтобы этого не происходило, информацию
нужно постоянно обновлять. Так работают практически все типы
оперативной памяти
Обычно ячейки памяти конфигурируются в матрицу строк и
столбцов. Полный адрес ячейки данных, содержащий один бит
информации, делится на два компонента: адрес строки (row
address) и адрес столбца (column address).
Для передачи на микросхему памяти адреса строки служит
сигнал RAS (Row Address Strobe), а для столбца — сигнал CAS
(Column Address Strobe).
При чтении данных на входы микросхемы поступает сигнал OE
(Output Enabled), а затем подается адрес строки и сигнал RAS.
Считанная со всей строки информация помещается в буфер
ввода/вывода. После сигнала RAS, с незначительной задержкой,
на входы памяти подается код адреса столбца, сопровождаемый
сигналом CAS. Данные выбираются из буфера ввода/вывода и
поступают на выход памяти в соответствии с адресом столбца.
Время доступа к блоку DRAM определяется в первую очередь
временем чтения (разряд конденсатора) и регенерации (заряд
конденсатора).
Т.к. информация хранится в виде заряда конденсатора, то для
того, чтобы считать записанную в ячейке информацию,
требуется считывающий усилитель, подключенный к каждой
общей шине столбца динамической памяти.
При считывании информация в ячейках разрушается, поэтому
считанная информация перезаписывается.
Если ячейка имела заряд, то она снова будет заряжена еще до
завершения цикла чтения. На ячейки, которые не имели заряда,
напряжение не подается.
При выполнении записи в память, подается строб WE (Write
Enable), и информация поступает на соответствующую шину
столбца.
Таким образом, прохождение данных при записи задается
комбинацией сигналов, определяющих адрес столбца и строки, а
также сигналом разрешения записи данных в память
Чаще всего доступ к ячейкам памяти происходит не случайным
образом, а последовательно. В современных процессорах эта
операция оптимизирована: для считывания нескольких подряд
идущих слов памяти передается адрес только первого, а не всех
требуемых слов. Соответственно уменьшается число передач
данных по шине.
К тому же, чем больше слов пересылается за один раз (так
называемый пакетный режим), тем больше выигрыш. Сделано
это в первую очередь для повышения скорости обмена между
оперативной и кэш-памятью. Для ускорения работы памяти в
пакетном режиме были разработаны различные способы
хранения информации: страничный режим, расслоение банков,
быстрый страничный режим и другие.
Страничный режим использует тот факт, что каждый
поступающий в процессор байт находится вблизи от уже
считанного из ОЗУ и логически связан с ним. Следовательно,
повторения сигнала RAS можно избежать, если адрес строки
лежит в пределах одной страницы, то есть адрес строки
неизменен. При организации работы страничного режима,
память делится на страницы, обычно размером 16 Кб.
Микросхемы памяти, реализующие страничный режим,
получили название PM (Page Mode). Широкое распространение
получили модернизированные модули PM — FPM (Fast Page
Mode)
Следующим способом, повышающим быстродействие RAM,
является пакетный режим. Суть его в том, что при обращении к
ячейке с каким-либо адресом, автоматически генерируется пакет
данных, включающий как эту, так и несколько последующих
ячеек. В результате при обращении к ним, память сразу же, без
задержек, готова выдать требующуюся информацию. Размер
пакета обычно состоит из 32 или 64 бит.
Улучшение способа заключается в разбиении памяти на
отдельные области (банки). Тогда при последовательном доступе
одно слово будет выдаваться первым банком, следующим
банком — второе и т.д. К тому моменту, когда снова нужно
будет обратиться к первому банку, пройдет полный цикл, и он
будет готов выдать данные без задержки.
Следующим способом повышения быстродействия стало
создание микросхем, работающих синхронно с центральным
процессором.
Раньше производились только асинхронные микросхемы DRAM,
то есть такие, работа которых не синхронизирована с частотой
работы системной шины. Асинхронные элементы имеют только
информационные входы и срабатывают непосредственно после
изменения сигнала на входах. Сигнал на выходе появляется через
некоторое время.
Все рассмотренные выше элементы памяти работают асинхронно
с тактовой частотой системной шины.
У них для передачи данных из памяти в CPU необходимо
подтверждение связи между CPU и контроллером памяти.
Процесс чтения данных организован следующим образом.
Центральный процессор сообщает контроллеру памяти, с
помощью соответствующего сигнала, что ему необходимы
данные, располагающиеся по конкретному адресу. Далее
осуществляется цикл чтения данных из оперативной памяти.
Когда данные прочитаны и находятся на выходных линиях
DRAM, контроллер памяти посылает процессору сигнал
готовности, и только тогда данные поступают на CPU. Если
данные еще не готовы, то процессор вынужден осуществлять
холостые циклы (Weitstate) в ожидании данных.
Для срабатывания синхронных элементов смены сигналов на
входах недостаточно. Необходим дополнительный тактирующий
сигнал, который подается на соответствующий вход. В качестве
такого сигнала выбран тактовый сигнал системной шины. Этот
сигнал задает частоту смены информации в определенные
моменты времени. В эти же моменты обновляется информация
на выходах элементов. Таким образом, процессы записи и
считывания информации в память строго привязаны к тактам
CPU или шины.
Совместное использование синхронизации работы, расслоения
банков и пакетно-конвейерного режима способствует
значительному ускорению работы системы памяти.
Второе поколение элементов памяти SDRAM получило название
DDR SDRAM (Double Date Rate— удвоенная передача данных).
При использовании микросхем DDR SDRAM данные
считываются как по фронту, так и по спаду тактового сигнала
системной шины. Таким образом, за время одного цикла
выполняются два обращения к данным. Для синхронизации
пересылки данных наряду с тактовым сигналом используется
дополнительный сигнал DQS, поступающий параллельно с
данными.
Другая модификация данной памяти является двухканальной, что
позволяет в четыре раза повысить скорость передачи данных по
сравнению с обычной SDRAM

15. Логическая организация оперативной


памяти (на примере IBM PC)
До сих пор в архитектуре IBM PC на базе Intel поддерживаются решения,
принятые из-за ограниченности адресного пространства старых
процессоров, которое составляло тогда 1Мб. Шина адреса была 20-
разрядной, а процессор 16-разрядный. В архитектуру включили
поддержку модели «сегмент — смещение» (Физический Адрес = Номер
Сегмента *4 + Смещение)
Распределение адресного пространства в 1Мб было сделано так (по
порядку):

· Conventional Memory — стандартная память-640 Кб

· UMA (Upper Memory Area) — верхняя память-384 Кб

· HMA (High Memory Area) — высокая память-64 Кб

· XMS (Extended Memory) — расширенная память

В Conventional memory находятся (по порядку):

· Таблица векторов прерываний, 1024 байт = 256 элементов по 4 байт -


вектора прерываний, т. е. адреса сервисных программ, входящих в состав
операционной системы и BIOS

· Место для области данных BIOS, 768 байт. Здесь размещены, например,
счетчик таймера, буфер клавиатуры и другая внутренняя информация

· Ядро операционной системы DOS, его местоположение и размер памяти,


зависят от версии операционной системы. Имеется возможность
оптимизировать стандартную память, поместив ядро DOS в другие
области памяти

· Остальное пространство до адреса A0000, принадлежит только


программам и данным

Upper Memory Area содержит информацию для сопряжения прикладных


программ с различными картами расширений, установленными в PC.
Располагается по адресам от A0000 до FFFFF. В ней также могут
размещаться ROM BIOS (в последних 64 кб), модули постоянной и
оперативной памяти (виртуально), конструктивно расположенные на
картах расширения. Логически верхняя память делится на блоки, часть из
них зарезервированы (пользователь не может их использовать), а другие
свободны. Свободные блоки называют UMB (Upper Memory Block). В
UMA имеются "дырки" - свободная память, самостоятельно не
идентифицируемая системой.

High Memory Area - первый блок величиной 64 Кб непосредственно выше


границ 1 Мб оперативной. Своему существованию эта область целиком
обязана несколько "ущербной" эмуляции процессора 8088 процессором
80286.

Вся память может быть представлена в виде 16 неперекрываемых блоков


размером 64 Кб, или в виде перекрываемых 64-Кб областей, называемых
сегментами. Максимальный полный адрес в виде сегмент:смещение, по
которому может обратиться процессор i8088 — это FFFF:000Fh (20
адресных линий). При увеличении этого значения хотя бы на единицу
произойдет циклический перенос, и значение адреса станет 0000:0000. Для
CPU 80286 и выше этого не случится, так как адресная шина этих
процессоров больше 20 разрядов, но адрес памяти при этом превысит
1Мб. Таким образом, PC с CPU не ниже 80286 в реальном режиме может
адресовать дополнительно практически целый сегмент размером 64 Кб
минус 16 байт.

В Extended Memory может располагаться эмулируемая память, фактически


отображаемая через блоки UMA. Появилась для поддержки расширения
адресного пространства больше 1 Мб. В ней можно сформировать память
согласно спецификации EMS и разместить данные. Подобная
фрагментация сохраняется в силу декларированной поддержки старого ПО
новыми моделями PC, хотя в настоящее время наметился негласный отход
от этой поддержки.

Windows на современных процессорах такое разделение эмулируют


программно при реализации «командной строки». Вообще все они
работают с памятью в линейном режиме.

16. Кэширование оперативной памяти


Оперативная память, используемая в вычислительных системах,
реализуется на микросхемах динамической памяти, обладающих
относительно низким быстродействием.
С другой стороны, микросхемы статической памяти SRAM по
быстродействию приближаются к быстродействию процессоров
и могут работать с ним практически синхронно, не внося в обмен
существенных задержек.
Реализация основной памяти как статической не оправдана ни
экономически, ни технически. Разумным компромиссом для
повышения скорости является включение в тракт обмена между
процессором и основной памятью дополнительного
относительно небольшого, но быстродействующего
накапливающего буфера.
Этот буфер называется кэш-памятью (cache) и реализуется на
основе статической памяти SRAM. Использование для обмена с
памятью кэш-буфера называется кэшированием памяти.
С точки зрения выполнения программ этот кэш "прозрачен", так
как не представляет собой адресуемую часть памяти и работает
так, что при обменах с основной памятью, его присутствие
можно обнаружить только на аппаратном уровне. Этот буфер
хранит копию блоков информации из основной памяти, к
которым с большой вероятностью будет в ближайшее время
происходить обращение. Кэш не может хранить копию всей
основной памяти, поскольку его объем относительно невелик.
Кэшироваться может не вся память доступная процессору, а
только ее часть. Управляет работой кэш-памяти так называемый
кэш-контроллер, входящий в тот или иной чипсет.
При каждом обращении к кэшируемой памяти кэш-контроллер с
помощью каталога проверяет, находится ли действительная
копия затребованных данных в кэш-буфере. Если она там есть, то
идет только к кэш-памяти.
В соответствии с алгоритмом кэширования этот блок, считанный
из основной памяти, заместит один из блоков кэш.
Алгоритм кэширования определяет условия и порядок действий
по замещению данных в кэш на данные из памяти. От
эффективности этого алгоритма зависит относительное
количество кэш-попаданий и, следовательно, эффективность
использования кэш-памяти.
Существуют два подхода к замещению блоков в кэш-памяти. В
первом - обращение к основной памяти начинается
одновременно с поиском в каталоге, и в случае кэш-попадания,
прерывается. Архитектура кэш, поддерживающая этот поиск,
называется одновременной (архитектура Look Aside). В этом
случае кэш работает быстро, но, за счет постоянного обращения
к основной памяти увеличивается.
При втором подходе обращение к основной памяти происходит
только после обнаружения кэш-промаха. Это архитектура
сквозного поиска (Look Through). В этом случае теряется, по
крайней мере, такт процессора, но снижается энергопотребление.
Эффективность работы кэш зависит от соотношения объемов
основной и кэш-памяти. Чем больше относительный объем кэш-
памяти, тем меньше промахов и больше быстродействие системы
процессор-память. Однако в силу экономических, а также и
технических соображений размер кэш не может быть слишком
большим.
Поэтому в современных системах применяют двойную
буферизацию, разделяя кэш на два уровня. Кэш первого уровня
(L1 Cache) имеет небольшой объем, работает на внутренней
тактовой частоте процессора и встраивается непосредственно в
процессор.
Первичный кэш, как правило, состоит из двух буферов, причем
один применяется для кэширования команд, а другой для
кэширования данных. Такое разделение повышает
эффективность работы конвейера команд процессора.
Кэш второго уровня (L2 Cache) размещается вне процессора и
работает на внешней тактовой частоте процессора. При такой
двойной буферизации, когда происходит промах для первичного
кэш, поиск продолжается во вторичном кэш, а не в медленной
основной памяти.
При этом возможно упреждающее чтение блока информации,
которая вероятно скоро может понадобиться процессору, во
вторичный кэш.
В современных процессорах Intel вторичный кэш размещается в
одном корпусе с процессором и работает уже на внутренней
частоте процессора. Кроме того, в современных системах на
материнских платах может располагаться дополнительный кэш
третьего уровня (L3 Cache).
Контроллер кэш обеспечивает обмен, как с памятью, так и с
процессором только пакетом, то есть строкой фиксированной,
для данной архитектуры длины.
Строка может быть действительной (valid), то есть она в данный
момент времени достоверно отображает соответствующий ей
блок основной памяти, или недействительной (invalid)— в этом
случае она не отображает никакого блока и может быть
использована для копирования.
Информация о том, какой именно блок основной памяти
соответствует действительной строке, а также флаги ее
состояния называется тэгом (tag). Эта информация хранится в
специальной памяти тэгов (tag RAM), называемой также кэш-
каталогом.
Секторирование позволяет экономить память, необходимую для
хранения каталога при увеличении объема кэш, так как под тэг
отводится несколько большее количество бит и, выгоднее
использовать дополнительные биты действительности, чем
увеличивать количество элементов каталога.
Поведение кэш-контроллера при реализации операций записи в
основную память, когда копия блока памяти находится в какой
либо строке кэш, называется политикой записи.
Различают сквозную (WT — write through) и обратную (WB —
write back) политики записи.
Алгоритм сквозной записи WT выполняет каждую операцию
записи, попадающей в кэшированный блок одновременно и в
строку кэш, и в основную память.
В этом алгоритме в каждой операции записи процессору
приходится ждать момента окончания записи в медленную
основную память.
Алгоритм прост в реализации и легко позволяет достичь
целостности данных, поскольку копии данных в кэш и блоке в
основной памяти всегда совпадают. В этом случае отпадает
необходимость хранения флагов действительности, так как
любая строка всегда полностью соответствует отображаемому
блоку памяти. Однако за эту простоту приходится
расплачиваться низкой эффективностью кэш при операциях
записи.
Алгоритм обратной записи WB позволяет уменьшить количество
операций записи на шине основной памяти. В случае если блок
памяти, в который должна производится запись, имеет
отображение в кэш, то запись будет произведена только в эту
строку кэш.
В основную память данные переписываются только целой
строкой непосредственно перед её замещением в кэш или после
заполнения всех её секторов в случае секторированного кэш.
Данный алгоритм существенно эффективнее алгоритма сквозной
записи, но более сложен в реализации.

17. Кэш прямого отображения, наборно-


ассоциативный и ассоциативный кэш.
3 архитектуры реализации кэш-памяти, отличающиеся по способу установления
взаимного соответствия между строками кэш и блоками в основной памяти:
a) кэш прямого отображения ( direct-mapped cache)
В этой архитектуре адрес памяти, по которому происходит обращение,
однозначно определяет строку кэш, в которой будет находиться отображение
требуемого блока.

Условно кэшируемая основная память разбивается на страницы (их размер


совпадает с размером кэш-памяти). Каждая страница также условно разбивается на
строки (их размер совпадает с размером строки кэш). Каждая строка кэш-памяти
может отображать только соответствующую ей строки их множества страниц
основ.памяти.

Так как объем основ.памяти > объема кэш, то на каждую строку кэш может
претендовать множество соответствующих ей строк основ.памяти, находящихся на
разных страницах. 1 строка кэш в определенный момент времени может содержать
копию только одной соответствующей ей строки из множества страниц основ.памяти.

№ строки в кэш памяти – индекс строки, № страницы в основ.памяти - тэг

Информация о том, какому именно тэгу соответствует в данный момент строка


кэш, хранится в связанной с данной строкой ячейке специальной памяти тэгов (tag
RAM)

По адресу ячейки в основ.памяти определяется тэг и индекс. Младшие биты


этого адреса задают смещение байта в условной памяти. Средние биты адреса
представляют собой индекс, а старшие – её тэг.

Память тэгов обязательно должна иметь кол-во ячеек, равное количеству строк
кэша, а её разрядность должна быть достаточной для хранения значений тэгов, а
также флагов действительности и модификации. Пример: рис.1 пусть имеем кэш,
объемом 256 Кб с размером строки 32 байта, а объем кэшируемой памяти составляет
64 Мб. Тогда такой кэш содержит 256К/32 = 8К строк. При этом основная память
условно будет разбита на 256 страниц, содержащих по 8К строк каждая.
В кэш-каталоге хранятся: бит признака действительности V и бит признака
модифицированности данных M.

В начале обращения к памяти за данными контроллер сначала считывает


ячейку каталога с заданным индексом и сравнивает значение тэга в этой ячейке со
старшими битами адреса памяти и анализирует признак действительности. (т.е
обращается к тэгу и индексу). Если требуемый блок не находится в кэш (кэш-промах),
то контроллер генерирует обращение к основ.памяти. в случае кэш-попадания запрос
обслуживается кэш памятью.

В случае промаха, после считывания из основной памяти новые данные


помещаются в соответствующую строку кэш, если она «чистая». Тэг этой строки
записывается в кэш-каталог и устанавливается признак действительности данных.
При этом в кэш-память переписывается вся строка целиком, а признак
действительности относится ко всей строке.

Если контроллер кэш реализует упреждающее чтение, то в последующие


свободные циклы шины, обновится и следующая за ней строка, при условии, что она
также является «чистой». Такая организация обмена позволяет осуществить пакетный
цикл чтения из кэш через границу строки. (пример в записи на 30:40)

Изменение данных в оперативной памяти может производиться контроллером


в соответствии с алгоритмами либо сквозной, либо обратной записи.

Кэш прямого отображения имеет серьезный недостаток. Пусть в ходе


выполнения программы процессору требуются данные, находящиеся на разных
страницах, но имеющие один и тот же индекс. В этом случае очередное обращение
будет замещать строки, считанные в предыдущем и требующиеся в следующем
обращении. При этом кэш все время будет работать в режиме кэш-промаха, его
работа будет интенсивна, но бесполезна (cache trashing). (пример в записи 32:35) С
этим недостатком можно бороться, увеличивая размер кэш прямого отображения, но
это дает незначительный эффект в многозадачных системах, так как разные задачи
могут претендовать на одни и те же строки кэш.

(прямое отображение – прямо отображает строку на соответствующую страницу)

Архитектура прямого отображения применяется, как правило, для кэш второго


уровня.

б) наборно-ассоциативный кэш ( set-associative cache)


Он позволяет каждому блоку кэшируемой памяти отображаться на одну из
нескольких строк кэш-памяти, объединенных в набор. Его можно рассматривать как
несколько параллельно и согласованно работающих каналов кэш прямого
отображения, в которой контроллер принимает решение о том, в какую из строк
набора надо помещать очередной блок данных из памяти.

В самом простом случае набор состоит из двух строк, и блок из памяти может
помещаться в одну из них. Кэш должен содержать 2 банка тэгов, а кэш-каталог должен
состоять из двух частей.

1-ая часть каталога связана с первым банком тэга, а 2-ая со вторым. Также в
кэш-каталоге дополнительно должен быть признак, определяющий, какая строка из
набора подлежит замещению.

Номер набора (индекс), на который может отображаться затребованная строка


оператив.памяти, определяется средней частью адреса. Старшая часть (тэг)
записывается в ячейку одного из двух банков тэга этого набора. Строка набора,
отображающая требуемый блок, определяется сравнением тэгов, выполняемым
параллельно для всех каналов кэш. (после этого следовал рис.2) (38:30)

В случае кэш-промаха обычно замещается та строка из набора, последнее обращение


к которой было раньше. LRU(Last Recently Used) – алгоритм замещения наиболее
старой строки из набора, реализуется с помощью признака. Этот признак требует а)
один бит в случае набора из 2 строк, б) нескольких бит, если кол-во строк в наборе > 2.
(42:30)При относительно большом количестве строк возможно применение алгоритма
замещения типа FIFO или даже случайного набора.

Наборно-ассоциативная архитектура применяется как для первичного, так и для


вторичного кэш.
РИС.2

в) полностью ассоциативный кэш (fully associative cache)


Он отображает любую строку кэш-памяти на любую строку оператив.памяти.
Это повышает эффективность кэширования при ограниченных объемах кэш-памяти.
Все биты адреса кэшированного блока хранятся в памяти тэгов, кроме битов,
определяющих смещение данных в строке.

Для определения наличия затребованных данных в кэш-памяти здесь


требуется сравнение со старшей частью адреса тэгов всех строк (а не одной или
нескольких, как при прямом отображении или наборно-ассоциативной архитектуре).

Чтобы сравнение производилось быстро, нужен параллельный анализ всех ячеек, а


это является затратной аппаратной задачей. Эта задача решена пока только для
небольших объемов первичного кэш некоторых процессоров. Для достаточно
большого вторичного кэш применение данной архитектуры пока не оправдано из-за
сложности и дороговизны её реализации.

*есть скрин с названием записи и таймкодом


18. Архитектура CISC, 16-ти разрядные
процессоры.
В презентации Arch3 слайд 2-11.

CISC (complex instruction set computing или complex instruction set computer) —
компьютер со сложным (полным) набором команд (инструкций), тип процессорной
архитектуры, которая характеризуется следующим набором свойств:

● нефиксированное значение длины команды;

● арифметические действия кодируются в одной команде;

● небольшое число регистров, каждый из которых выполняет строго


определённую функцию.

Типичными представителями CISC-архитектуры являются процессоры на основе


команд x86, процессоры Motorola MC680x0, процессоры мейнфреймов zSeries.

При этом поздние х86-процессоры (Intel Pentium 4, Pentium D, Core, AMD Athlon,
Phenom), хотя и CISC-совместимы, но являются процессорами с RISC-ядром, и в
формальном смысле считаются гибридными. В таких гибридных CISC-процессорах
CISC-инструкции преобразовываются в набор внутренних RISC-команд, при этом одна
команда x86 может порождать несколько RISC-команд, исполнение команд происходит
на суперскалярном конвейере одновременно по несколько штук.

Основной недостаток CISC-архитектуры в сравнении с RISC — более сложный подход


к распараллеливанию вычислений.

Разрядность процессора – число битов, обрабатываемых процессором одновременно.


Примеры известных 16-разрядных процессоров: DEC F11, J11, T11, Intel 8086, 80286,
WDC 65C816, Texas Instruments TMS9900, Zilog Z8000. Intel 8088 был программно-
совместим с Intel 8086, и имел 16-разрядные инструкции, хотя его внешняя шина была
8-разрядная.

В силу того, что сам процессор 16-ти разрядный, а шина 20-тиразрядная, он мог
адресовать напрямую только 64 Кб памяти. Для устранения противоречия в
процессоре реализован сегментный механизм адресации.

Сегментация памяти и порядок L, Н являются характерной чертой процессоров Intel.


Все пространство памяти разбивается на параграфы, то есть области из 16 смежных
байт, начиная с нулевого адреса. Очевидно, что любой сегмент может начинаться
только на границе параграфа (четыре младших бита адреса нулевые).
Процессор имел два режима работы - реальный (Real Address Mode, Real Mode) и
защищенный (Protected Virtual Address Mode, Protected Mode).

В первом случае он воспринимался как быстрый 8086 с несколько расширенной


системой команд и прекрасно подходил тем потребителям, для которых, помимо
скоростных характеристик, жизненно важным было сохранение существующего задела
программного обеспечения.

В реальном режиме по адресации памяти была заявлена полная


совместимость с процессором 8086. На самом же деле, 80286 имеет ошибку,
"узаконенную" и в следующих поколениях процессоров.

Работа в защищенном режиме позволяла использовать большой объем основной


памяти, дающий возможность CPU работать в многозадачном варианте.

Ограниченная прямоадресуемая память, недостаточная разрядность данных,


небольшое количество команд, отсутствие в системе команд операций умножения и
деления и др. существенно влияют на производительность микропроцессорной
системы в целом. Расширение функциональных возможностей микропроцессора
прямо связано с совершенствованием технологии их производства, обеспечивающей
более плотную компоновку транзисторов на кристалле МП. В 16-разрядных МП
удалось изменить архитектуру МП и расширить их функциональные возможности.

Ряд отличий
Кроме более плотной компоновки кристалла и повышения тактовой частоты, 16-
разрядные микропроцессоры имеют ряд отличий, не использовавшихся в
микропроцессорах предыдущих поколений:

1) увеличена разрядность шины адресов, что позволило увеличить адресное


пространство прямоадрессуемой памяти до 1-7-16 Мбайт;

2) увеличена разрядность шины данных до 16 разрядов;

3) реализован принцип совмещения шины адреса и шины данных;

4) реализован конвейерный принцип выполнения команд;

5) расширены способы адресации и набор команд.

19. Архитектура CISC, 32-х и 64-х разрядные


процессоры.
В презентации Arch3 слайд 11-43.

Процессор 80386, а так же 80486, Pentium, Celeron, Athlon, Duron, и Pentium 4


сохранили все свойства 16-разрядных предшественников 8086/88 и 80286 для
обеспечения программной совместимости с громадным объемом ранее написанного
программного обеспечения. Они могут адресовать 4 Гб оперативной памяти.

Эти процессоры имеют 64-х разрядную шину данных (80386 — 32-х разрядную) и 32-х
разрядную шину памяти, поэтому их нельзя считать полноценными 64-х разрядными
процессорами. Они могут оперировать с 8, 16, 32-битными операндами, строками
байт, слов, двойных слов, битами, битовыми полями и строками бит. В архитектуру
процессоров введены средства отладки и тестирования.

Регистры 32-х разрядного процессора делятся на следующие категории:

• регистры общего назначения (EAX, EBX, ECX, EDX-32, 64-разрядные);

• указатель инструкций и регистр флагов;

• регистры сегментов (CS, SS, DS, ES, FS, GS-16-разрядные);

• управляющие регистры, системные адресные регистры;

• регистры отладки;

• регистры тестирования.

В дальнейшем, с появлением процессоров пятого поколения (Pentium), количество


регистров процессора увеличилось, расширилась и усложнилась система команд,
были добавлены команды для работы с большими потоками данных (MMX, SSE,
SSE2, SSE3).

Начиная с 80486 в процессорах стала использоваться так называемая конвейерная


архитектура, позволяющая выполнять выборку кодов инструкций из памяти и их
декодирование во время выполнения внутренних операций, тем самым, повышая его
производительность за счет сокращения времени простоя операционных узлов.

Процессоры, имеющие конвейер, получили название скалярных, или процессоры


скалярной архитектуры.

В процессорах пятого и шестого поколений для повышения производительности


количество конвейеров было увеличено. Подобную архитектуру стали называть
суперскалярной.

Теперь суперскалярными называют процессоры, способные запускать несколько


команд (зачастую от четырех до шести) за один тактовый цикл. Естественно, чтобы
передавать все эти команды, в суперскалярном процессоре должно быть несколько
функциональных блоков. В процессорах этого типа, как правило, предусматривается
один конвейер.

О 64-разрядных. Ответом Intel на появление процессора от AMD стал CPU Pentium 4.


Это был последний 32-х разрядный процессор Intel с одной стороны, а с другой — его
последние модификации стали первыми 64-х разрядными процессорами семейства
x86 от Intel.
20. RISC-процессоры.
Одна из ключевых идей RISC — переложить тяжелую работу на компилятор.

Философия RISC
Оперативная память стала дешеветь, компиляторы стали лучше, а большинство
разработчиков перестало писать на ассемблере.

Эти технологические изменения спровоцировали появление философии RISC.

Сперва люди анализировали программы и заметили, что большинство сложных


инструкций CISC не используются большинством программистов.

Разработчики компиляторов затруднялись в выборе правильной сложной инструкции.


Вместо этого они предпочли использовать комбинацию нескольких простых
инструкций для решения проблемы.

Вы можете сказать, что здесь применимо правило 80/20: примерно 80% времени
тратится на выполнение 20% инструкций.

Идея RISC заключается в замене сложных инструкций на комбинацию простых. Так не


придется заниматься сложной отладкой микрокода. Вместо этого разработчики
компилятора будут решать возникающие проблемы.

Есть разногласия в том, как понимать слово «сокращенный» (reduced) в аббревиатуре


RISC. Люди думают, что сокращено количество инструкций. Но более правильная
интерпретация — это уменьшение сложности команд.

RISC-код может быть непростым для человека. Много лет назад я совершил ошибку,
когда решил, что самостоятельное написание ассемблерного кода для PowerPC
(архитектура IBM RISC с огромным количеством инструкций) сэкономит мое время.
Это принесло мне множество лишней работы и разочарований.

Одним из аргументов RISC было то, что люди перестали писать ассемблерный код,
поэтому необходимо создать набор инструкций, удобный для компиляторов.
Архитектура RISC оптимизирована для компиляторов, но не для людей.

Хотя есть некоторые наборы команд RISC, при использовании которых людям
кажется, что они просты для изучения. С другой стороны, при использовании RISC
часто нужно писать больше команд, чем в случае CISC.

Если рассмотреть ARM RISC-процессор, то мы обнаружим пятиступенчатый конвейер


инструкций.


(Fetch) Извлечение инструкции из памяти и увеличение счетчика
команд, чтобы извлечь следующую инструкцию в следующем
такте.

● (Decode) Декодирование инструкции — определение, что эта


инструкция делает. То есть активация необходимых для выполнения этой
инструкции частей микропроцессора.

● (Execute) Выполнение включает использование арифметико-


логического устройства (АЛУ) или совершение сдвиговых операций.

● (Memory) Доступ к памяти, если необходимо. Это то, что делает


инструкция load.

● (Write Back) Запись результатов в соответствующий регистр.

Особенности RISC:
1)Инструкции ARM состоят из секций, каждая из которых работает с одним из этих
этапов, а выполнение этапа обычно занимает один такт. То есть инструкции ARM
очень удобно конвейеризировать.
Конвейеризация — это особенность, которая позволила первым RISC-процессорам на
голову обогнать своих конкурентов в тестах производительности.
2)Чтобы количество тактов, необходимых для каждой инструкции, было примерно
одинаковым и удобным для конвейеризации, набор инструкций RISC четко отделяет
загрузку из памяти и сохранение в память от остальных инструкций.
3)Большая проблема для RISC — это упрощение инструкций, что ведет к увеличению
их количества. Больше инструкций требуют больше памяти — недорогой, но
медленной. Если программа RISC потребляет больше памяти, чем программа CISC, то
она будет медленнее, так как процессор будет постоянно ждать медленного чтения из
памяти. Инструкции RISC проще для компилятора но сложнее для человека.
4)Для оптимизации памяти были придуманы сжатые наборы инструкций.
5)Кэши — это специальная форма очень быстрой памяти, которая располагается на
микросхеме процессора. Они занимают дорогостоящую кремниевую площадь,
необходимую процессору, поэтому есть ограничения по размеру кэшей.
Таким образом, имея большие кэши, процессоры RISC компенсировали то, что их
программы больше, чем программы CISC.
6)Набор инструкций CISC не проектировался для конвейеризации. Следовательно,
разбиение этих инструкций на микрооперации — сложная задача, которая не всегда
решается эффективно. Перевод инструкций RISC в микрооперации обычно бывает
более простым.

Читает тут чтобы понять лучше


21. Архитектура VLIW.
Архитектура VLIW (от Very Large Instruction Word — очень длинное командное слово)
является разновидностью RISC-архитектуры. Основным ее отличием является
возможность объединения нескольких простых команд в так называемую связку.
Входящие в нее команды должны быть независимы друг от друга, то есть их можно
выполнять одновременно, параллельно. Таким образом, из нескольких независимых
машинных команд транслятор формирует одно «очень длинное командное слово».
Программа для VLIW-процессоров содержит в себе явные указания, какие
блоки команд нужно исполнять одновременно, на каких исполнительных
устройствах. В этой архитектуре всю работу за процессора делает компилятор
–он выделяет блоки независимых инструкций, которые можно исполнять
параллельно, и выдает их в виде одного длинного командного слова. За счет
сложности компилятора можно значительно упростить сам процессор,
поскольку больше не нужно реализовывать

функции по распределению ресурсов непосредственно на кристалле.

Плюсы и минусы:
За счет выноса работы по распределению ресурсов в компилятор можно
сделать саму аппаратную часть процессора проще, больше места на
кристалле останется на собственно исполнительные блоки, регистры, кэш-
память. Во-вторых, компилятор может провести более тщательный анализ
программы, и лучше распределить ресурсы.
В то же время код для VLIW обладает невысокой плотностью. Из-за большого
количества пустых инструкций для простаивающих устройств программы для
VLIW-процессоров могут быть гораздо длиннее, чем аналогичные программы
для традиционных архитектур. (ещё длиннее чем у RISC)
Архитектура VLIW выглядит довольно экзотической и непривычной для
программиста. Из-за сложных внутренних зависимостей кода
программирование вручную, на уровне машинных кодов для VLIW-архитектур,
является достаточно сложным. Приходится полагаться на оптимизацию
компилятора.

Конвейер у VLIW процессоров проще, чем у суперскаляров(к ним относиться


ARM = RISC). В нем нет таких этапов, как переименование регистров,
переупорядочивание и распараллеливание. Все это выполняется
компилятором.

Много софта, в том числе, коммерческого, написано под x86 и

распространяется в бинарном виде, т.е. желательно, чтобы процессоры


умели исполнять x86 код. Intel Itanium один из представителей использующих
данную архитектуру) имел режим совместимости с x86, но производительность
его при этом была весьма низкой.

22. Мультипроцессоры и мультикомпьютеры


Для чего? Для организации обмена информации о разных частях задачи
между процессорами в системах параллельной разработки

1. Мультипроцессоры или системы с совместно используемой


памятью – системы, в которых все процессоры разделяют общую
физическую память. Мультипроцессорная модель
распространяется и на программное обеспечение. Все процессы ,
работающие вместе на мультипроцессоре, могут разделять одно
виртуальное адресное пространство, отображенное в общую
память . Любой процесс может считывать слово из памяти или
записывать слово в память с помощью команд LOAD и STORE.

Два процесса могут обмениваться информацией, если один из них


будет просто записывать данные в память, а другой будет считывать
эти данные. (Благодаря такой возможности взаимодействия двух и
более процессов мультипроцессоры весьма популярны)

Пример: Sun Enterprise 10000 и HP/Convex Exemplar


2.
Мультикомпьютер или система с распределенной памятью -
каждый процессор имеет свою собственную память, доступную
только этому процессору.

Мультикомпьютеры обычно (не всегда ) являются системами со


слабой связью. Отличие мультикомпьютера от
мультипроцессора : каждый процессор в мультикомпьютере имеет
свою собственную локальную память , к которой этот процессор
может обращаться , выполняя команды LOAD и STORE, но никакой
другой процессор не может получить доступ к этой памяти с
помощью тех же команд LOAD и STORE. Таким образом,
мультипроцессоры имеют одно физическое адресное
пространство, разделяемое всеми процессорами, а
мультикомпьютеры содержат отдельное физическое адресное
пространство для каждого центрального процессора.

Поскольку процессоры в мультикомпьютере не могут


взаимодействовать друг с другом просто путем чтения из общей
памяти и записи в общую память , они посылают друг другу
сообщения, используя сеть межсоединений.
Примеры: IBM SP/2, Intel/Sandia Option Red и Wisconsin COW

- При отсутствии памяти совместного использования в


аппаратном обеспечении предполагается определенная структура
программного обеспечения . В мультикомпьютере невозможно
иметь одно виртуальное адресное пространство, из которого все
процессы могут считывать информацию и в которое все процессы
могут записывать информацию просто путем выполнения команд
LOAD и STORE.

- В мультикомпьютере для взаимодействия между процессорами


часто используются примитивы send и receive.

- В мультипроцессоре размещение частей не влияет на правильность


выполнения задачи , хотя может повлиять на производительность

Таким образом, мультикомпьютер программировать гораздо


сложнее, чем мультипроцессор .
Но гораздо проще и дешевле построить большой мультикомпьютер,
чем мультипроцессор с таким же количеством процессоров. Р

Практически все исследования в области архитектур с параллельной


обработкой направлены на создание гибридных форм, которые
сочетают в себе преимущества обеих архитектур.

Сходство систем: в обоих случаях применяется передача


сообщений

В больших мультипроцессорах взаимодействие между


процессорами и удаленной памятью почти всегда состоит в том , что
процессор посылает в память сообщение, так называемый пакет,
который запрашивает определенные данные, а память посылает
процессору ответный пакет.

Сети межсоединений могут состоять максимум из пяти


компонентов:

1. Центральные процессоры .

2. Модули памяти .

3. Интерфейсы.

4. Каналы связи.

5. Коммутаторы.

При разработке и анализе сети межсоединений важно учитывать


несколько ключевых моментов


топология (то есть способ расположения компонентов,
например, кольцо, решетка или сетка, двойной тор, куб)

● как работает система переключения и как осуществляется


связь между ресурсами

● какой алгоритм выбора маршрута используется для доставки


сообщений в пункт назначения
23. Классификация ЭВМ параллельного
действия
Чаще всего используется классификация Флинна, но она является
достаточно грубым приближением. В основе классификации лежат два
понятия: потоки команд и потоки данных. Потоки команд и данных в
какой-то степени независимы‚ поэтому существует 4 комбинации:


SISD (Single Instruction stream Single Data stream) -
классический последовательный компьютер фон Неймана -
может выполнять только одно действие в конкретный момент

● SIMD (Single Instruction stream Multiple Data Stream) - один блок


управлений, выдающий по одной команде нескольким
АЛУ, обрабатывающим данные одновременно. Машины SIMD
состоят из большого числа идентичных процессоров,
имеющих собственную память и выполняющих одну и
ту же программу. Часто упоминается как data-parallel, т. к.
параллельность достигается при наличии одинакового потока
команд, действующего одновременно на несколько частей
данных

● MISD (Multiple Instruction stream Single Data Stream) -


несколько странная категория. Машин такого класса
практически нет. Один из немногих примеров -
систолический массив процессоров

● MIMD (Multiple Instruction stream Multiple Data Stream) - n


процессоров, независимо исполняющих n потоков команд и
обрабатывающих n потоков данных. Это, например,
симметричные параллельные вычислительные системы, рабочие
станции с несколькими процессорами, кластеры рабочих станций

Таненбаум расширил классификацию Флинна:


UMA - однородный доступ к памяти. Все слова памяти считываются с одинаковой скоростью.
Однородность делает производительность предсказуемой, что важно для написания
эффективной программы

NUMA - неоднородный доступ к памяти. Обычно модуль памяти расположен близко к


каждому процессору и доступ к нему происходит быстрее

COMA - доступ только к кэш-памяти, тоже неоднородный

Мультикомпьютеры не имеют общей памяти. Обращаются к другим модулям памяти через


команды load и store

MPP - дорогостоящие суперкомпьютеры, из большого количества процессоров, связанных


высокоскоростной коммуникационной сетью

COW (или NOW) - рабочие станции, связанные с помощью уже имеющейся технологии
соединения

24. Компьютеры SIMD


SIMD (Single Instruction stream Multiple Data stream — один поток команд,
несколько потоков данных) содержат один блок управления, выдающий
по одной команде, но при этом есть несколько АЛУ, которые могут
обрабатывать несколько наборов данных одновременно.

Машины типа SIMD состоят из большого числа идентичных


процессорных элементов, имеющих собственную память. Все
процессорные элементы в такой машине выполняют одну и ту же
программу.
Компьютеры SIMD используются для решения задач с векторами и
массивами. Такая машина содержит один блок управления , который
выполняет команды по одной, но каждая команда оперирует несколькими
элементами данных. Два основных типа компьютеров SIMD — это
массивно - параллельные (матричные) процессоры (array processors) и
векторные процессоры (vector processors).

В массивно-параллельном процессоре содержится один блок


управления , который передает сигналы, чтобы запустить несколько
обрабатывающих элементов. Каждый обрабатывающий элемент состоит
из процессора или усовершенствованного АЛУ и, как правило, локальной
памяти .

Хотя все массивно -параллельные процессоры соответствуют этой общей


модели , они могут отличаться друг от друга в некоторых моментах .
Первый вопрос — это структура обрабатывающего элемента . Она может
быть различной — от чрезвычайно простой до чрезвычайно сложной.
Самые простые обрабатывающие элементы — 1- битные АЛУ. В такой
машине каждый АЛУ получает два 1-битных операнда из своей локальной
памяти плюс бит из слова состояния программы (например , бит
переноса ). Результат операции — 1 бит данных и несколько флаговых
битов. Чтобы совершить сложение двух целых 32- битных чисел, блоку
управления нужно транслировать команду 1-битного сложения 32 раза .
Если на одну команду затрачивается 300 нс , то для сложения целых чисел
потребуется 9.6 мкс,. Но при наличии 65 536 обрабатывающих элементов
можно получить более трех миллиардов сложений в секунду при времени
сложения 300 пикосекунд.

Второй вопрос — как связываются обрабатывающие элементы друг с


другом . Здесь применимы практически все топологии, рассмотренные
выше. Чаще всего используются прямоугольные решетки, поскольку они
подходят для задач с матрицами и отображениями и хорошо применимы к
большим размерам, так как с добавлением новых процессоров
автоматически увеличивается пропускная способность .

Третий вопрос — какую локальную автономию имеют


обрабатывающие элементы. Блок управления сообщает, какую команду
нужно выполнить, но во многих массивно -параллельных процессорах
каждый обрабатывающий элемент может выбирать на основе некоторых
локальных данных ( например , на основе битов кода условия), выполнять
ему эту команду или нет. Эта особенность придает процессору
значительную гибкость.

Второй тип машины SIMD — векторный процессор.

Обычно подобная ЭВМ на входе получает два n - элементных вектора и


обрабатывает соответствующие элементы параллельно, используя
векторное АЛУ, которое может оперировать элементами одновременно. В
результате получается вектор . Входные и выходные векторы могут
сохраняться в памяти или в специальных векторных регистрах.
Суперкомпьютеры обычно содержат несколько АЛУ, каждое из которых
предназначено для выполнения определенной операции, и все они могут
работать параллельно.

В качестве примера рассмотрим суперкомпьютер Cray-l(Смотри в


пятую презентацию)

25. Компьютеры MIMD. Модели


согласованности – строгая согласованность и
согласованность по последовательности.
MIMD (Multiple Instruction stream Multiple Data stream — несколько потоков
команд, несколько потоков данных). MIMD компьютер имеет N процессоров,
независимо исполняющих N потоков команд и N обрабатывающих потоков данных.
Каждый процессор функционирует под управлением собственного потока команд, то
есть MIMD компьютер может параллельно выполнять совершенно разные программы.
MIMD архитектуры далее классифицируются в зависимости от физической
организации памяти, то есть, имеет ли процессор свою собственную локальную память
и обращается к другим блокам памяти, используя коммутирующую сеть, или
коммутирующая сеть подсоединяет все процессоры к общедоступной памяти.
Системы MIMD можно разделить на мультипроцессоры и мультикомпьютеры.
Мультипроцессор — это компьютерная система, которая содержит несколько процессоров и
одно адресное пространство, видимое для всех процессоров. Он запускает одну копию
операционной системы с одним набором таблиц, в том числе таблицами, которые следят, какие
страницы памяти заняты, а какие свободны. Когда процесс блокируется, его процессор
сохраняет свое состояние в таблицах операционной системы, а затем просматривает эти
таблицы для нахождения другого процесса, который нужно запустить. Именно наличие одного
отображения и отличает мультипроцессор от мультикомпьютера. Существует три типа
мультипроцессоров. Они отличаются друг от друга по способу реализации памяти совместного
использования. Их называют UMA, NUMA и СОМА.

Если все процессоры имеют равный доступ ко всем модулям памяти и всем
устройствам ввода-вывода и каждый процессор взаимозаменим с другими процессорами, то
такая система называется SMP (Symmetric Multiprocessor — симметричный мультипроцессор).

Во вторую группу машин MIMD попадают мультикомпьютеры, которые в отличие от


мультипроцессоров не имеют памяти совместного использования на архитектурном уровне, то
есть операционная система в процессоре мультикомпьютера не может прямо получить доступ
к памяти, относящейся к другому процессору. Ему приходится отправлять сообщение и ждать
ответа.

Тем не менее, даже в мультикомпьютере пользовательские программы могут


обращаться к другим модулям памяти с помощью команд LOAD и STORE, что достигается
средствами операционной системы. Разница незначительна, но очень важна. Так как
мультикомпьютеры не имеют прямого доступа к отдаленным модулям памяти, они иногда
называются машинами NORMA (NO Remote Memory Access — без доступа к отдаленным
модулям памяти).

Мультикомпьютеры можно разделить на две группы. Первая группа содержит


процессоры МРР (Massively Parallel Processors — процессоры с массовым параллелизмом ) —
дорогостоящие суперкомпьютеры, которые состоят из большого количества процессоров,
связанных высокоскоростной коммуникационной сетью. Вторая группа мультикомпьютеров
включает рабочие станции, которые связываются с помощью уже имеющейся технологии
соединения. Эти ЭВМ называются NOW (Network of Workstations — сеть рабочих станций)
или COW (Cluster of Workstattions — кластер рабочих станций).

Модели согласованности
Параллельность накладывает некоторые трудности: основная проблема здесь — каковы
должны быть правила в согласовании единых данных между процессорами при совместном
использовании данных (в кэше и оперативной памяти). Эти правила называются моделями
согласованности. Было предложено и разработано множество таких правил.

Процессор 0 записывает значение 1 в какое-то слово памяти, а немного позже


процессор 1 записывает значение 2 в то же самое слово. Процессор 2 считывает это слово и
получает значение 1 или 2?. Это зависит от того, что обещано в соглашении.

Самая простая модель — строгая согласованность. В такой модели при любом


считывании из адреса х всегда возвращается значение самой последней записи в х.
Программистам очень нравится эта модель, но реализовать на практике можно лишь
следующим образом: должен быть один модуль памяти, который просто обслуживает все
запросы по мере поступления ( первым поступил — первым обработан), без кэш-памяти и без
дублирования данных. К несчастью, это очень сильно замедляет работу памяти.

Следующая модель называется согласованностью по последовательности. Здесь при


наличии нескольких запросов на чтение и запись аппаратное обеспечение определяет порядок
всех запросов, но все процессоры наблюдают одну и ту же последовательность запросов.
(порядок записи влечет порядок чтения: 1 записывает “A”, 2 записывает “B”, 3 читает
“B”,“A” (ввиду, например, правила, что, если пришли данные с 1 и 2, то данные 2
приоритетнее), тогда 4 тоже прочитает “B”,“A”)

Процессорная согласованность — более проигрышная модель, но зато ее легче реализовать


на больших мультипроцессорах. Она имеет два свойства:

1.
Все процессоры воспринимают записи любого процессора в том
порядке, в котором они начинаются.

2. Все процессоры видят записи в любое слово памяти в том же


порядке, в котором они происходят.

(Под запись пришли A(hh:mm:ss:5183), B(hh:mm:ss:5197), C(hh:mm:ss:6204) и другие


процессоры увидели сперва A, потом B, потом C(в порядке их постуления) причем
данные для процессоров будут видны в реальном времени по мере поступления(сперва
A, потом B, потом C; а не сперва A, потом C))

Два или более процессоров и один или несколько модулей памяти используют для
взаимодействия одну и ту же шину. Если процессору нужно считать слово из памяти, он
сначала проверяет, свободна ли шина. Если шина свободна, процессор помещает адрес
нужного слова на шину, устанавливает несколько сигналов управления и ждет, когда память
поместит на шину нужное слово. Если шина занята, процессор просто ждет, когда она
освободится. Это все упирается в пропускную способность шины, что ограничивает
производительность, если процессоров много.
Чтобы разрешить эту проблему, нужно добавить кэш-память к каждому процессору.
Поскольку теперь считывать слова можно из кэш-памяти, движения в шине будет меньше, и
система сможет поддерживать большее количество процессоров.

Еще одна возможность — каждый процессор имеет не только кэш-память, но и свою


локальную память. Чтобы оптимально использовать такую конфигурацию, компилятор должен
поместить в локальные модули памяти программу, константы, другие данные,
предназначенные только для чтения, стеки и локальные переменные. Общая разделенная
память используется только для общих переменных.

Предположим, что память согласована по последовательности. Что произойдет, если


процессор 1 содержит в своей кэш-памяти строку, а процессор 2 пытается считать слово из той
же строки кэш-памяти?

При отсутствии специальных правил процессор 2 получит копию этой строки в свою
кэш-память. В принципе помещение одной и той же строки в кэш-память дважды вполне
приемлемо. А теперь предположим, что процессор 1 изменяет строку, и сразу после этого
процессор 2 считывает копию этой строки из своей кэш-памяти. Он получит устаревшие
данные, нарушая контракт между программным обеспечением и памятью. Ни к чему хорошему
это не приведет.

Эта проблема, которую называют непротиворечивостью кэш, очень важна. Если ее не


разрешить, нельзя будет использовать кэш-память, и число мультипроцессоров,
подсоединенных к одной шине, придется сократить до двух- трех. Было предложено
множество различных решений, но все эти алгоритмы, называемые протоколами
когерентности кэширования, различаются в некоторых деталях, и не допускают
одновременного появления разных вариантов одной и той же строки в разных блоках кэш-
памяти.

Во всех решениях контроллер кэш-памяти разрабатывается так, чтобы кэш-память


могла перехватывать запросы на шине, контролируя все запросы шины от других процессоров
и других блоков кэш-памяти и предпринимая те или иные действия в определенных случаях.
Эти устройства называются кэш-памятью с отслеживанием (snooping caches или snoopy
caches). Набор правил, которые выполняются кэш-памятью, процессорами и основной
памятью, чтобы предотвратить появление различных вариантов данных в нескольких блоках
кэш-памяти, формируют протокол когерентности кэширования. Единица передачи и хранения
кэш-памяти называется строкой кэш-памяти .

Самый простой протокол когерентности кэширования называется сквозным кэшированием.


Рассмотрим 4 случая, приведенные в таблице. Если процессор пытается считать слово,
которого нет в кэш-памяти, контроллер кэш-памяти загружает в кэш-память строку,
содержащую это слово. Строку предоставляет основная память, которая в этом протоколе
всегда обновлена. В дальнейшем информация может считываться из кэш-памяти.

В случае промаха кэш-памяти при записи слово, которое было изменено, записывается в
основную память. Строка, содержащая нужное слово, не загружается в кэш-память . В случае
результативного обращения к кэш-памяти при записи кэш обновляется, а слово плюс ко всему
записывается в основную память . Суть протокола состоит в том, что в результате всех
операций записи записываемое слово обязательно проходит через основную память, чтобы
информация в основной памяти всегда обновлялась.

Кэш-память с отслеживанием – имеется кеш-1 (с которым происходит основная работа) и


отслеживающий кэш(кэш-2)(кэш – используемый как индикатор наличия того или иного
слова) пока “ кэш-1 не записывает слово, которое присутствует в кэш-2” кэш-1 работает как
простой кэш, кэш-2 ничего не делает, но если “кэш-1 записывает слово, которое присутствует в
кэш-2”: кэш-2, содержащий измененное слово, помечается как недействительный.
Соответствующая единица просто удаляется из кэш-памяти. Все кэш отслеживают все запросы
шины, и всякий раз, когда записывается слово, нужно обновить его в кэш-памяти инициатора
запроса, обновить его в основной памяти и удалять его из всех других кэш. Таким образом,
неправильные варианты слова исключаются.

Возможны различные вариации этого основного протокола. Например, при успешной записи
отслеживающий кэш обычно объявляет недействительным элемент, содержащий данное слово.
С другой стороны, вместо того чтобы объявлять слово недействительным, можно принять
новое значение и обновить кэш-память . По существу, обновить кэш-память — это то же
самое, что признать слово недействительным, а затем считать нужное слово из основной
памяти.

Во всех кэш-протоколах нужно сделать выбор между стратегией обновления и


стратегией с признанием данных недействительными. Эти протоколы работают по-
разному. Сообщения об обновлении несут полезную нагрузку и, следовательно, они больше по
размеру, чем сообщения о недействительности, но зато они могут предотвратить дальнейшие
промахи кэш-памяти.

Другой вариант — загрузка отслеживающей кэш-памяти при промахах. Такая загрузка


никак не влияет на правильность выполнения алгоритма. Она влияет только на
производительность. Возникает вопрос: какова вероятность, что только что записанное слово
вскоре будет записано снова? Если вероятность высока, то можно говорить в пользу загрузки
кэш-памяти при промахах записи (политика заполнения по записи). Если вероятность мала,
лучше не обновлять кэш-память в случае промаха при записи. Если данное слово скоро будет
считываться, оно все равно будет загружено после промаха при считывании, и нет смысла
загружать его в случае промаха при записи.

Это решение не очень эффективно. Каждая операция записи должна передаваться в


основную память по шине, а при большом количестве процессоров это затруднительно.
Поэтому были разработаны другие протоколы. Все они характеризуются одним общим
свойством: не все записи проходят непосредственно через основную память. Вместо этого при
изменении строки кэш-памяти внутри кэш-памяти устанавливается бит, который указывает,
что строка в кэш-памяти правильная, а в основной памяти — нет. В конечном итоге эту строку
нужно будет записать в основную память, но перед этим в память можно произвести много
записей. Такой тип протокола называется протоколом с обратной записью.

26. Компьютеры MIMD. Протокол MESI.


Один из популярных протоколов с обратной записью называется MESI. В его основе лежит
протокол однократной записи. Протокол MESI используется в Pentium II и других процессорах
для отслеживания шины. Каждый элемент кэш-памяти может находиться в одном из
следующих четырех состояний:

1.
Invalid — элемент кэш-памяти содержит недействительные данные.
2. Shared — несколько кэш могут содержать данную строку; основная
память обновлена.
3. Exclusive — никакой другой кэш не содержит эту строку; основная
память обновлена.
4. Modified — элемент действителен; основная память недействительна;
копий элемента не существует.

При загрузке процессора все элементы кэш-памяти помечаются как недействительные.


При первом считывании из основной памяти нужная строка вызывается в кэш-память данного
процессора и помечается как Е (Exclusive), поскольку это единственная копия в кэш-памяти
При последующих считываниях процессор использует эту строку и не использует шину.
Другой процессор может вызвать ту же строку и поместить ее в кэш-память, но при
отслеживании исходный держатель строки (процессор 1) узнает, что он уже не единственный,
и объявляет, что у него есть копия. Обе копии помечаются состоянием S (Shared). При
последующих чтениях кэшированных строк в состоянии S процессор не использует шину и не
меняет состояние элемента.

Посмотрим, что произойдет, если процессор 2 произведет запись в строку кэш-памяти,


находящуюся в состоянии S. Тогда процессор помещает сигнал о недействительности на шину,
который сообщает всем другим процессорам, что нужно отбросить свои копии.
Соответствующая строка переходит в состояние М (Modified) Эта строка не записывается в
основную память. Отметим, что, если записываемая строка находится в состоянии Е, никакого
сигнала о недействительности на шину передавать не следует, поскольку известно, что других
копий нет.

А теперь рассмотрим, что будет, если процессор 3 считывает эту строку. Процессор 2, который
в данный момент содержит строку, знает, что копия в основной памяти недействительна,
поэтому он передает на шину сигнал, чтобы процессор 3 подождал, пока он запишет строку
обратно в память. Как только строка записана в основную память, процессор 3 вызывает из
памяти копию этой строки, и в обоих кэш строка помечается как S. Затем процессор 2
записывает эту строку снова, что делает недействительной копию в кэш-памяти процессора 3.
Затем процессор 2 записывает эту строку снова, что делает недействительной копию в кэш-
памяти процессора 3 .

Наконец, процессор 1 производит запись в слово в этой строке. Процессор 2 видит это и
передает на шину сигнал, который сообщает процессору 1, что нужно подождать, пока строка
не будет записана в основную память. Когда это действие закончится, процессор помечает
собственную копию строки как недействительную, поскольку он знает, что другой процессор
собирается изменить ее. Появляется ситуация, в которой процессор записывает что-либо в
некэшированную строку. Если применяется политика write-allocate, строка будет загружаться в
кэш-память и помечаться как М. Если политика write-allocate не применяется, запись будет
производиться непосредственно в основную память, а строка в кэш-памяти сохранена не будет.

27. Компьютеры UMA. Коммутаторы.


(a) Uniform memory access (UMA) architecture. (b) Non-uniform memory access (NUMA)
architecture.

*(В пятой презентации есть пример работы компьютера в целом (слайды


20-31). Фактически он подводит к тому, зачем нам нужны коммутаторы.
Кароче, если вы открыли этот вопрос на экзамене, то ладно, а если вы
еще готовитесь, то советую посмотреть презентацию)
28. Компьютеры NUMA и CC-NUMA.
29. Мультикомпьютеры
- это параллельные компьютеры, в которых каждый процессор имеет свою
собственную память, к которой другие процессоры не могут получить
прямой доступ. Программы на разных процессорах в мультикомпьютере
взаимодействуют друг с другом с помощью примитивов send и receive,
которые используются для передачи сообщений.

Каждый узел в мультикомпьютере состоит из одного или нескольких


процессоров, ОЗУ, диска и(или) других устройств ввода-вывода, а также
процессора передачи данных. Процессоры передачи данных связаны
между собой по высокоскоростной коммуникационной сети. Используется
множество различных топологий, схем коммутации и алгоритмов выбора
маршрута. Все мультикомпьютеры сходны в одном: когда программа
выполняет примитив send, процессор передачи данных получает
уведомление и передает блок данных в целевую машину.

Мультикомпьютеры бывают разных типов и размеров , поэтому очень


трудно привести хорошую классификацию. Тем не менее можно назвать
два общих типа: МРР и COW.

МРР — процессоры с массовым параллелизмом.


СгауТЗЕ - использует процессоры DEC Alpha 21164. Это суперскалярный
процессор RISC, способный выдавать 4 команды за цикл. Alpha — это 64-
битная машина с 64- битными регистрами. Размер виртуальных адресов
ограничен до 43 битов, а физических — до 40 битов. Таким образом,
возможен доступ к 1 Тбайт физической памяти.
Каждый процессор Alpha имеет двухуровневую кэш-память, встроенную в
микросхему процессора. Кэш-память первого уровня содержит 8 Кбайт
для команд и 8 Кбайт для данных. Кэш -память второго уровня — это
смежная трех входовая ассоциативная кэш-память на 96 Кбайт,
содержащая и команды и данные вместе . Кэш - память обоих уровней
содержит команды и данные только из локального ОЗУ, а это может быть
до 2 Гбайт на процессор. Поскольку максимальное число процессоров
равно 2048, общий объем памяти может составлять 4 Тбайт.

Каждый процессор Alpha заключен в особую схему, которая называется


оболочкой. Оболочка содержит память, процессор передачи данных и 512
специальных регистров (так называемых Е-регистров). Эти регистры
могут загружаться адресами удаленной памяти с целью чтения или записи
слов из удаленной памяти. Непротиворечивость памяти гарантируется,
поскольку слова, считываемые из удаленной памяти , не попадают в кэш -
память .

Узлы в машине ТЗЕ связаны двумя разными способами. Основная


топология — дуплексный 3-мерный тор.

Узлы также связаны одним или несколькими GigaRings — подсистемами


ввода-вывода с коммутацией пакетов, обладающими высокой пропускной
способностью. Узлы используют эту подсистему для взаимодействия друг
с другом, а также с сетями, дисками и другими периферическими
устройствами. Они по ней посылают пакеты . Каждый GigaRing состоит из
пары колец шириной в 32 бита, которые соединяют узлы процессоров со
специальными узлами ввода-вывода. Узлы ввода-вывода содержат гнезда
для сетевых карт, дисков и других устройств.

В системе ТЗЕ может быть до 2048 узлов, поэтому неисправности будут


происходить регулярно. По этой причине в системе на каждые 128
пользовательских узлов содержится один запасной узел. Испорченные
узлы могут быть замещены запасными во время работы системы без
перезагрузки. Кроме пользовательских и запасных узлов есть узлы,
которые предназначены для запуска серверов операционной системы,
поскольку пользовательские узлы запускают не всю систему, а только
ядро . В данном случае используется операционная система UNIX.

Дополнительно про Intel/Sandia Option Red в презентации Arch5 44-46


слайды
COW — Clusters of Workstations (кластеры рабочих
станций)
Второй тип мульти компьютеров — это системы COW или NOW (Network
of Workstations — сеть рабочих станций ). Обычно он состоит из
нескольких сотен персональных компьютеров или рабочих станций,
соединенных посредством сетевых плат.

Различие между МРР и COW аналогично разнице между большой


вычислительной машиной и персональным компьютером. У обоих есть
процессор, ОЗУ, диски, операционная система и т. д. Но в большой
вычислительной машине все это работает гораздо быстрее ( за
исключением, может быть, операционной системы).

Преимущество системы COW над МРР в том, что COW полностью


состоит из доступных компонентов, которые можно купить. Эти части
выпускаются большими партиями. Вероятно, системы COW постепенно
вытеснят ММР.

Существует множество различных видов COW, но доминируют два из


них: централизованные и децентрализованные.

Централизованные системы COW представляют собой кластер рабочих


станций или персональных компьютеров, смонтированных в большой
блок в одной комнате. Как правило, эти машины гомогенны и не имеют
никаких периферических устройств, кроме сетевых карт и, возможно,
дисков.

Децентрализованная система COW состоит из рабочих станций или


персональных компьютеров, которые раскиданы по зданию или по
территории учреждения. Обычно они связаны через локальную сеть. Они
гетерогенны и имеют полный набор периферийных устройств. Самое
важное, что многие компьютеры имеют своих владельцев.

Вам также может понравиться