Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Принстонская (фон Неймановская) архитектура





Принстонская (фон Неймановская) архитектура

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

1. Центральное арифметико-логическое устройство (АЛУ).

2. Центральное устройство управления (УУ).

3. Запоминающее устройство (ЗУ, память).

4. Устройство ввода данных.

5. Устройство вывода данных.

Кроме того, фон Нейман зафиксировал следующие положения:

1. ВС должна быть электронным устройством.

2. ВС должна работать с двоичными числами.

3. ВС должна выполнять операции последовательно.

4. Программа выполнения этих операций должна храниться в памяти ВС совместно с данными (принцип однородности памяти).

Выше перечисленные положения стали называть принципами фон Неймана. Следует понимать, что фон Нейман не придумал их, а систематизировал и обобщил то, что было создано и придумано инженерами и учёными до него. Поскольку первые ВС в основном использовались для вычислений, их стали называть компьютерами (computer -вычислитель, тот, кто считает), в СССР использовался термин ЭВМ. Принципы фон Неймана стали общепринятыми, но не единственно возможными принципами создания компьютера. Например, нарушение четвертого принципа приводит к так называемой Гарвардской архитектуре[1]. Ее отличительным признаком является раздельное хранение и обработка команд и данных.

Более полное представление об архитектуре можно почерпнуть из книги В.Г. Баула «Введение в архитектуру ЭВМ и системы программирования».

Учебная машина УМ-3

Используя принципы Фон Неймана в качестве базовых, начнём конструировать учебную ЭВМ. Назовем эту машину УМ-3, смысл этого названия – учебная машина трёхадресная. УМ-3 будет удовлетворять всем принципам Фон Неймана.

Для построения конкретной ЭВМ необходимо строго определить, как будет устроена память этой машины, задать набор машинных команд, описать устройство центрального процессора, определить правила взаимодействия с "внешним миром" (возможности ввода/вывода) и т.д.

Память УМ-3

Память УМ-3 будет состоять из 512 ячеек, имеющих адреса от 0 до 511. Каждая ячейка состоит из 32 двоичных разрядов. По современным понятиям это очень маленькая память (всего 2 Kb). Записанное в ячейке машинное слово может рассматриваться как одно целое или вещественное число или как одна команда. Машинное слово, трактуемое как команда, будет разбиваться на четыре поля, и представляться в следующей форме:

КОП A1 A2 A3
5 разрядов 9 разрядов 9 разрядов 9 разрядов

Номера ячеек, кодов операций и адресов операндов будем для удобства записывать в десятичном виде, хотя первые программисты использовали для этого восьмеричную или шестнадцатеричную системы счисления. Первое поле с именем КОП (Код ОПерации) содержит число от 0 до 31. Это число задаёт номер (код) операции машинной команды, а поля с именами A1, A2 и A3 задают адреса операндов (это целые числа от 0 до 511). Таким образом, в каждой команде могут задаваться адреса двух аргументов (это A2 и A3)и адрес результата операции A1.

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

• РA – регистр, называемый счётчиком адреса, он имеет 9 разрядов и после выполнения текущей команды будет содержать адрес команды, которая должна будет выполняться следующей;

• РK – регистр команд имеет 32 разряда и содержит текущую выполняемую команду, которая, как мы определили, содержит код операции КОП и адреса операндов A1, A2 и A3;

• w – регистр длиной два бита, его название произносится как "омега" (его ещё называют регистр-признак результата). В этот регистр после выполнения некоторых команд (в УМ-3 это будут арифметические команды сложения, вычитания, умножения и деления) записывается число от 0 до 2 по следующему правилу (s – числовой результат арифметической операции, полученной на регистре-сумматоре АЛУ):

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

Схема выполнения команд

Кроме того, надо задать все команды учебной машины УМ-3. Множество всех таких команд называется, как мы уже говорили, языком машины. С полной системой познакомимся на практических занятиях. Рассмотрим схему работы центрального процессора. В соответствии с принципом Фон Неймана последовательного выполнения команд, центральный процессор выполняет одну команду за другой, пока не выполнит команду СТОП или же пока очередная команда не зафиксирует при своём выполнении аварийную ситуацию, установив в единицу регистр Err в устройстве управления нашей машины. Выполнение всей программы мы для наглядности запишем в виде цикла языка Паскаль, причём тело этого цикла соответствует выполнению одной команды:

Repeat

1. РK:= <РА>; {чтение очередной команды из ячейки памяти с адресом РA на регистр команд РK в устройстве управления.}

2. РА:= РА + 1; {увеличение счётчика адреса на единицу, чтобы следующая команда (если текущая команда не является командой перехода) выполнялась из следующей ячейки памяти.}

3. {Выполнение операции, заданной в коде операции (КОП) в АЛУ; при несуществующем коде операции или других ошибках при выполнении команды (например, делении на ноль) выполнение команды прекращается и производится присваивание Err:= 1.}

until (Err=1) or (КОП=СТОП)

АЛУ УМ-3

Уточним теперь работу арифметико-логического устройства УМ-3. Все бинарные операции (т.е. те, которые имеют два аргумента и один результат) выполняются в АЛУ нашей учебной машины по схеме:

<A1>:=<A2>U<A3>

(U – любая бинарная операция). Для реализации таких операций в арифметико-логическом устройстве предусмотрены регистры первого (R1) и второго (R2) операндов, а также регистр сумматора (S), на котором размещается результат операции. Таким образом, как и в машине Фон Неймана, АЛУ, подчиняясь управляющим сигналам со стороны УУ, выполняет бинарную операцию по схеме

R1:= <A2>; R2:= <A3>; S:= R1⊗R2; <A1>:= S;

Формирование регистра w для арифметических операций

Begin

Read(x);

y:=sqr(x+1) mod (2*x);

Writeln(y)

end.

В качестве примера в таблице 1 запишем только операции с целыми числами.

Таблица 1. Команды учебной машины УМ-3
КОП Смысл операции и её мнемоническое обозначение
  СЛЦ – сложение целых чисел
  ВЧЦ – вычитание целых чисел
  УМЦ – умножение целых чисел
  ДЕЦ – деление целых чисел (то же, что и divв Паскале)
  МОД – остаток от деления (то же, что и modв Паскале)
  ПЕР – пересылка: <A1>:=<A3>
  СТОП – остановка выполнения программы
  ВВЦ – ввод A2 целых чисел в память, начиная с адреса A1 fori:=1 toА2 doReadln(<А1+i-1>)
  ВЫЦ – вывод A2 целых чисел, начиная с адреса A1 fori:=1 toА2 doWriteln(<А1+i-1>)

 

Текст первой программы с комментариями (напомним, что все числа – десятичные):

Команда Комментарий
          Read(x)
        008 r1:= (x+1)
          r1:= sqr(x+1)
          r2:= (x+x)=2*x
          y:= r1 modr2
          Write(y)
          Стоп (ОСТ)
          Целая константа 1

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

Var x, y: integer;

Теперь придётся распределять память под хранения переменных самим. Сделаем сначала естественное предположение, что наша программа будет занимать не более 100 ячеек памяти. Поэтому, начиная со 101 ячейки, память будет свободна. Пусть тогда для хранения значения переменной x мы выделим 101 ячейку, а переменной y – 102 ячейку памяти. Остальные переменные при необходимости будем размещать в последующих ячейках памяти. Для реализации этой программы нам понадобятся дополнительные (как говорят, рабочие) переменные r1 и r2, которые мы разместим в ячейках 103 и 104 соответственно.

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

Важно понять, что в начале работы программы имеют значения только те ячейки памяти, в которые произведён ввод данных по кнопке ПУСК[4]. Отсюда следует, что константы, как и переменные с начальным значением, следует располагать в тексте программы ("маскируя" их под команды) и загружать в память вместе с программой при нажатии кнопки ПУСК. Разумеется, такие константы, и переменные с начальными значениями следует располагать в таком месте программы, чтобы устройство управления не начало бы выполнять их как команды. Чтобы избежать этой неприятности, мы будем размещать их в конце программы, после команды с кодом операции (СТОП).

Далее, используя принцип неразличимости команд и чисел, целочисленная константа 1 представлена в виде команды 00 000 000 001. Этот приём позволил ввести эту константу, "замаскировав" её в виде команды (обычно так и поступали программисты первых ЭВМ).

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

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

Для ввода программы в ЭВМ первые программисты кодировали все машинные слова в двоичном виде и переносили их на какой-нибудь носитель данных для устройства ввода (например, на картонные перфокарты). После этого оставалось снабдить такую, как говорили, колоду перфокарт, перфокартой-признаком конца ввода, поместить на устройство ввода и нажать кнопку ПУСК. В нашем случае надо поместить на устройство ввода два массива машинных слов – саму программу (8 машинных слов с признаком конца ввода) и число x (одно машинное слово). Как уже говорилось, первый массив заканчивался специальным признаком конца ввода, так что устройство ввода само знало, сколько машинных слов надо ввести в память по кнопке ПУСК.

Операция исключающее «ИЛИ»

Исключающее «ИЛИ», сложение по модулю 2, XOR, логическое сложение, строгая дизъюнкция, поразрядное дополнение, побитовый комплемент — такое количество названий говорит о важности этой операции. Для двух переменных результат выполнения операции является истинным тогда и только тогда, когда лишь один из аргументов является истинным. Приоритет операции такой же, как у дизъюнкции Таблица истинности
A B A xor B
     
     
     
     

 

Название операции «исключающее ИЛИ» обусловлено тем, что результат данной операции отличается от результата «ИЛИ» только в одном случае из четырех случаев входа — случай одновременной истинности обоих аргументов «исключается». Ещё в русской грамматике значение данной логической связки передаётся союзом «либо». Обозначение Å, конечно, короче.

Пример. Докажите, что операция xor является обратимой: (A xor B) xor B = A. Составим таблицу истинности

x y x XOR y (x XOR y) XOR y
       
       
       
       

 

В Си операция ^ - побитовое исключающее ИЛИ. Например, результатом выполнения операции 65^98 будет число 35, потому что 1000001 ^ 1100010 = 0100011 = 25 + 2 + 1 = 35. Однако логической операции исключающего ИЛИ в Си нет. Операцию надо будет представить в нормальной форме. http://neerc.ifmo.ru/wiki/index.php?title=Категория:Булевы_функции

Полусумматор и сумматор

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

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

a b С S
       
       
       
       

 

Полусумматор собран из сумматора по модулю 2 с добавлением элемента AND для получения сигнала переноса; его действие можно описать следующим логическим выражением:

S = a XOR b; С = a AND b,

где a и b – содержимое входов, S – содержимое выхода «сумма», С – содержимое выхода «перенос».

Теперь, если реализовать этот двоичный сумматор (полусумматор) в виде интегральной схемы (ИС), то она будет иметь не менее 7-ми внешних контактов (см. рис. 1.). Это входные контакты a и b, выходные s и с, один контакт для подачи тактовых импульсов (о них мы уже говорили, когда объясняли работу вентилей), два контакта для подачи электрического питания (ясно, что без энергии ничего работать не будет) и, возможно, другие контакты.

Рисунок 1. Пример ИС двоичного сумматора

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

Полный сумматор

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

Каскадный сумматор

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

С помощью полного сумматора можно сложить 2 одноразрядных двоичных числа. Для сложения двух -разрядных двоичных чисел можно использовать полных сумматоров.

При сложении двух чисел в -том разряде складываются , и входной бит переноса (carry-in bit) . Младший разряд суммы записывается в -й разряд ответа (), а старший становится выходным битом переноса (carry-out bit) и используется при сложении в следующем разряде.

При этом в первый входной бит переноса подаётся ноль, а последний бит переноса даёт старший разряд суммы.

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

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

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

Теперь Вы должны почувствовать разницу в ви́дении, например, центрального процессора, системным программистом (на внутреннем уровне по нашей классификации), от ви́дения того же процессора инженером-конструктором ЭВМ. Для системного программиста архитектура центрального процессора представляется в виде устройств УУ и АЛУ, имеющих регистры, обменивающихся командами и числами с основной памятью, выполняющим последовательность команд программы по определённым правилам и т.д. В то же время для инженера-конструктора центральный процессор представляется в виде сложной структуры, состоящей из узлов-вентилей, соединённых проводниками и такими радиотехническими элементами, как сопротивлениями, конденсаторами и индуктивностями. По этой структуре распространяются электрические сигналы, которые в дискретные моменты времени (при приходе на вентили тактовых импульсов) преобразуются логическими операциями.

Принстонская (фон Неймановская) архитектура

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

1. Центральное арифметико-логическое устройство (АЛУ).

2. Центральное устройство управления (УУ).

3. Запоминающее устройство (ЗУ, память).

4. Устройство ввода данных.

5. Устройство вывода данных.

Кроме того, фон Нейман зафиксировал следующие положения:

1. ВС должна быть электронным устройством.

2. ВС должна работать с двоичными числами.

3. ВС должна выполнять операции последовательно.

4. Программа выполнения этих операций должна храниться в памяти ВС совместно с данными (принцип однородности памяти).

Выше перечисленные положения стали называть принципами фон Неймана. Следует понимать, что фон Нейман не придумал их, а систематизировал и обобщил то, что было создано и придумано инженерами и учёными до него. Поскольку первые ВС в основном использовались для вычислений, их стали называть компьютерами (computer -вычислитель, тот, кто считает), в СССР использовался термин ЭВМ. Принципы фон Неймана стали общепринятыми, но не единственно возможными принципами создания компьютера. Например, нарушение четвертого принципа приводит к так называемой Гарвардской архитектуре[1]. Ее отличительным признаком является раздельное хранение и обработка команд и данных.

Более полное представление об архитектуре можно почерпнуть из книги В.Г. Баула «Введение в архитектуру ЭВМ и системы программирования».

Учебная машина УМ-3

Используя принципы Фон Неймана в качестве базовых, начнём конструировать учебную ЭВМ. Назовем эту машину УМ-3, смысл этого названия – учебная машина трёхадресная. УМ-3 будет удовлетворять всем принципам Фон Неймана.

Для построения конкретной ЭВМ необходимо строго определить, как будет устроена память этой машины, задать набор машинных команд, описать устройство центрального процессора, определить правила взаимодействия с "внешним миром" (возможности ввода/вывода) и т.д.

Память УМ-3

Память УМ-3 будет состоять из 512 ячеек, имеющих адреса от 0 до 511. Каждая ячейка состоит из 32 двоичных разрядов. По современным понятиям это очень маленькая память (всего 2 Kb). Записанное в ячейке машинное слово может рассматриваться как одно целое или вещественное число или как одна команда. Машинное слово, трактуемое как команда, будет разбиваться на четыре поля, и представляться в следующей форме:

КОП A1 A2 A3
5 разрядов 9 разрядов 9 разрядов 9 разрядов

Номера ячеек, кодов операций и адресов операндов будем для удобства записывать в десятичном виде, хотя первые программисты использовали для этого восьмеричную или шестнадцатеричную системы счисления. Первое поле с именем КОП (Код ОПерации) содержит число от 0 до 31. Это число задаёт номер (код) операции машинной команды, а поля с именами A1, A2 и A3 задают адреса операндов (это целые числа от 0 до 511). Таким образом, в каждой команде могут задаваться адреса двух аргументов (это A2 и A3)и адрес результата операции A1.

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

• РA – регистр, называемый счётчиком адреса, он имеет 9 разрядов и после выполнения текущей команды будет содержать адрес команды, которая должна будет выполняться следующей;

• РK – регистр команд имеет 32 разряда и содержит текущую выполняемую команду, которая, как мы определили, содержит код операции КОП и адреса операндов A1, A2 и A3;

• w – регистр длиной два бита, его название произносится как "омега" (его ещё называют регистр-признак результата). В этот регистр после выполнения некоторых команд (в УМ-3 это будут арифметические команды сложения, вычитания, умножения и деления) записывается число от 0 до 2 по следующему правилу (s – числовой результат арифметической операции, полученной на регистре-сумматоре АЛУ):

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

Схема выполнения команд

Кроме того, надо задать все команды учебной машины УМ-3. Множество всех таких команд называется, как мы уже говорили, языком машины. С полной системой познакомимся на практических занятиях. Рассмотрим схему работы центрального процессора. В соответствии с принципом Фон Неймана последовательного выполнения команд, центральный процессор выполняет одну команду за другой, пока не выполнит команду СТОП или же пока очередная команда не зафиксирует при своём выполнении аварийную ситуацию, установив в единицу регистр Err в устройстве управления нашей машины. Выполнение всей программы мы для наглядности запишем в виде цикла языка Паскаль, причём тело этого цикла соответствует выполнению одной команды:

Repeat

1. РK:= <РА>; {чтение очередной команды из ячейки памяти с адресом РA на регистр команд РK в устройстве управления.}

2. РА:= РА + 1; {увеличение счётчика адреса на единицу, чтобы следующая команда (если текущая команда не является командой перехода) выполнялась из следующей ячейки памяти.}

3. {Выполнение операции, заданной в коде операции (КОП) в АЛУ; при несуществующем коде операции или других ошибках при выполнении команды (например, делении на ноль) выполнение команды прекращается и производится присваивание Err:= 1.}

until (Err=1) or (КОП=СТОП)

АЛУ УМ-3

Уточним теперь работу арифметико-логического устройства УМ-3. Все бинарные операции (т.е. те, которые имеют два аргумента и один результат) выполняются в АЛУ нашей учебной машины по схеме:

<A1>:=<A2>U<A3>

(U – любая бинарная операция). Для реализации таких операций в арифметико-логическом устройстве предусмотрены регистры первого (R1) и второго (R2) операндов, а также регистр сумматора (S), на котором размещается результат операции. Таким образом, как и в машине Фон Неймана, АЛУ, подчиняясь управляющим сигналам со стороны УУ, выполняет бинарную операцию по схеме

R1:= <A2>; R2:= <A3>; S:= R1⊗R2; <A1>:= S;

Формирование регистра w для арифметических операций







Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все...

Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем...

Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам...

Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.