Образовательный портал «Кафедра онлайн» НИЯУ «МИФИ», Обнинск"

Компьютерные сказки. Оперативная память

Е.В. Крылов, доцент ИАТЭ НИЯУ «МИФИ», Обнинск

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

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

Группа американских учёных, работавших над проектом EDVAC, сформулировала принципы функциональной организации компьютера. Эти принципы стали называть принципами фон Неймана, так звали одного из участников этой группы. Крупные открытия опасно связывать с именем одного человека. Чаще всего работают крупные коллективы, и кому-то удаётся проломить стену. В данном случае фон Нейман был единственным незасекреченным сотрудником, он и написал соответствующие публикации (1945г.). Приведём принципы фон Неймана в упрощенной форме:

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

Ну, однако, чепуха получается! Если команды и данные принципиально неразличимы, то кто и как их различает?

Существуют ЭВМ, которые называются не фоннеймановскими. В оперативной памяти таких ЭВМ команды и данные кодируются по-разному, их нельзя смешивать. Читатель! А как бы ВЫ организовали такую память? А что лучше?

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

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

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

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

На рис. 2 показаны процессор, оперативная память и внешние устройства, подсоединённые к общей шине через разъёмы. Для процессора не существует принтера, диска, клавиатуры и т.д. Все внешние устройства одинаково подсоединяются к общей шине. Мудрые говорят: «разделяй и властвуй». Нам, однако, власть не нужна. Мы хотим понять, что кроется за мигающими лампочками. И мы то соединяем, то разъединяем. Сейчас снова начнём разъединять.

Начнём с общей шины (рис. 3). Настало время дать ответ на вопрос, поставленный в предыдущей сказке. Вы вспомните! Как передать по шине ноль? Ответ прост. Кроме информационных линий существует синхролиния. Вместе с пакетом по синхролинии передаётся импульс. Если на приёмник приходит синхроимпульс, он начинает принимать пакет. Следовательно, хотя бы по одной линии импульс всегда приходит. Но я пока не рисую картинку, т.к. боюсь напутать.

Я не понимаю: надо ли основной пакет и синхроимпульс рисовать на одном уровне? Может быть кто-то должен по времени опережать? Подскажите, читатели.

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

Мы не будем перечислять все управляющие линии. И я по-прежнему не гарантирую, что в реальном компьютере всё делается точно так. Но я приглашаю электронщиков критиковать описанную логику. Выделим три необходимые нам линии. Линия З/С (занято или свободно) определяет занята в данный момент шина, или свободна. Линия ОП/ВУ – определяет направление пакета: пакет направлен в оперативную память, или на внешнее устройство. R/W – определяет операцию: R (read) – читать, W (write) – писать.

По шине адреса (ША) передаётся адрес оперативной памяти, или внешнего устройства. К этим понятиям мы ещё вернёмся. Число линий шины, как правило, кратно степени 2. Может быть 8,16,32,64. Если число линий N, максимальный адрес, который может быть передан по ША определяется формулой.

По шине данных (ШД) передаётся данное. Количество линий шины обычно кратно степени 2. Может быть 8,16,32,64. Если число линий N, максимальное двоичное число, передаваемое по шине, определяется формулой . Далее нам придётся не раз возвращаться к шине, но сейчас разберёмся с оперативной памятью.

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

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

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

Второй уровень. Неразрывная последовательность байт называется полем. Адрес поля совпадает с адресом первого байта поля.

Третий уровень. Машинная программа, состоящая из области кода и области данных (рис. 5). На рис. 5 область кода состоит из машинных команд (К1 К2 … КN). Команды могут иметь разную длину: 1,2,4 байта. Команды должен выбирать процессор для выполнения.  Уважаемый читатель! Как Вы думаете, кто и как определяет длину команды?

Здесь читатели должны засыпать меня вопросами. Иначе это сделаю я.

На рис. 6 показан формат команды. И снова несуразица! Я же объявил, что в оперативной памяти только двоичные целые без знака. И вдруг заговорил о каком-то формате поля. Формат поля это способ обработки поля процессором. Процессор выбирает поле из оперативной памяти и придаёт ему определённый смысл. На рис.6 КОП – код операции. Обычно занимает один байт. Уважаемые, сколько различных кодов операций может иметь процессор?

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

Область данных состоит из полей (P1 P2 …). Поля также могут иметь различную длину. Хотя поля содержат двоичные целые без знака, процессор после выборки присваивает им определённый формат. Как и ранее формат есть способ интерпретации поля процессором. Процессор может определять формат фиксированной или переменной длины, формат целого или вещественного числа, целого без знака или целого со знаком. Не забывайте только вопрос: Кто и как различает поле команды и поле данного. Но Вы, уважаемые читатели слабо спрашиваете. И у меня созрел следующий вопрос: Как определить длину поля? И до кучи. В пределах одной команды одно и тоже поле может иметь различные форматы? А поля могут перекрываться?

А теперь поговорим о надёжности хранения. Надо ли контролировать оперативную память? И, если надо, какое событие надо фиксировать?

Вспомним довольно приятную игру «принц», в которой он бегает по этажам с мечом и убивает всех своих противников. Как всякий, уважающий себя герой, от некоторых убегает. На двенадцатом этаже он встречает принцессу, и они обнимаются. Теперь представим себе, что на третьем этаже принц побежал в одну сторону, а рука с мечом в другую. Ну и что? Игра продолжается. Лишь бы они все встретились на последнем этаже, чтобы было чем обнимать принцессу. Случай, когда заботится о высокой надёжности не нужно. Следует помнить, что надёжность стоит дорого!

Теперь поставим компьютер контролировать процессы ядерного реактора. Сможет ли Аганбегян просчитать убытки от Чернобыльской аварии? Сможет, я уверен, только поздно. Считать надо было до того. Другой вариант. Летит баллистическая ракета, управляемая компьютером. В оперативной памяти компьютера сгорел один бит, в результате ракета сменила направление полёта и полетела на Москву. Пусть Аганбегян посчитает убытки, если успеет. Думаю, вывод очевиден. Наращивать надёжность следует тогда, когда высока цена технической катастрофы.

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

Разберём один из способов, который носит название «контроль по нечёту» (рис. 7). Традиционно считается, что байт содержит 8 разрядов, на самом деле их 9. Только девятый бит программно недоступен, с ним работает только контроллер оперативной памяти. Придётся ввести операцию: суммирование по модулю 2. Операция определяется таблицей  или . Здесь знаком  обозначается операция сложения по модулю 2. Предположим, что по общей шине на контроллер оперативной памяти поступил байт, который надо записать в оперативную память. Этот байт состоит пока из восьми разрядов. Контроллер оперативной памяти складывает биты по модулю 2, к результату прибавляет 1 и полученное двоичное число записывает в контрольный разряд.

Можно сообразить, что количество единиц в девяти разрядах нечётно. Сумма по модулю 2 девяти разрядов сразу после записи равна единице. При чтении контроллер суммирует девять разрядов по модулю 2 и, если результат отличен от единицы, прерывает работу компьютера. Уважаемый читатель! Подскажите, какое событие при этом проверяется?

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

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

Уважаемые читатели! Мы разобрали парочку способов контроля оперативной памяти. А как контролировать передачу данных (поток информации)?

И ещё. Мы заговорили о событиях и процессах. Эти понятия, как будет видно далее, являются базовыми для операционных систем. А кто мог бы дать точное определение понятий «событие» и «процесс» ?

Были заданы вопросы, на которые пока нет ответа:

  1. Команды и данные принципиально неразличимы, то кто и как их различает?
  2. Читатель! А как бы ВЫ организовали не фон-неймановскую оперативную память?
  3. Как же тогда процессор будет общаться с внешними устройствами? Попробуйте сообразить.
  4. Надо ли основной пакет и синхроимпульс рисовать на одном уровне? Может быть кто-то должен по времени опережать?
  5. Уважаемый читатель! Как Вы думаете, кто и как определяет длину команды?
  6. сколько различных кодов операций может иметь процессор?
  7. Кто и как различает поле команды и поле данного
  8. Как определить длину поля? В пределах одной команды одно и тоже поле может иметь различные форматы? А поля могут перекрываться?
  9. Уважаемый читатель! Подскажите, какое событие проверяет контроль по нечёту?
  10. Как контролировать передачу данных (поток информации)?
  11. А кто мог бы дать точное определение понятий «событие» и «процесс» ?

Получены ответы на вопросы:

  1. Вопрос: Скажите, как передать ноль. Как приёмник опознает, что пришёл пакет? Ноль – это отсутствие импульсов по всем линиям!
    Ответ: Кроме информационных линий существует синхролиния. Вместе с пакетом по синхролинии передаётся импульс. Если на приёмник приходит синхроимпульс, он начинает принимать пакет. Следовательно, хотя бы по одной линии импульс всегда приходит.

 Список литературы

Крылов Е.В., Типикин Н.Г. Принципы функционирования ЭВМ. Учебное пособие по курсам «Технология программирования» и «Операционные системы» для заочного отделения. — Обнинск: ИАТЭ, 2002- 134с.

Продолжение следует.

Комментариев нет

Похожие публикации
 
 

Комментариев нет

Вы можете быть первым, кто оставит комментарий.

 
 

Вы можете оставить комментарий

 





 
 

Выполните простое задание (антиспам). Картинки можно сибирать приблизительно, без точной подгонки фрагментов.


 
 
 

Наверх