Принципы архитектуры фон Неймана; системная шина и общая схема типовой ЭВМ, основанной на архитектуре фон Неймана; гарвардская архитектура; комбинирова-ние фон Неймановской и гарвардской архитектур в современных вычислительных систе-мах.
Традиционно, под архитектурой ЭВМ понимают полную и детальную спецификацию ин-терфейса пользователя ЭВМ. При этом пользователями считались как люди - в основном, програм-мисты, работающие с ЭВМ, - так и технические средства, взаимодействующие с ЭВМ. Это опреде-ление было дано Фредериком Бруксом в 1975 году в его знаменитой книге "Мифический чело-веко-месяц" и стало общепринятым в индустрии. Однако оно, на наш взгляд, выглядит не-сколько архаично и не вполне вписывается в контекст нашего курса.
Будем называть архитектурой ЭВМ основные принципы организации вычислительных устройств, их основные узлы и интерфейсы, а также технологии и методы, с помощью которых они
Большинство современных ЭВМ созданы на основе архитектуры фон Неймана, предложенной Джоном фон Нейманом и его коллегами из университета Принстона. Эта архитектура была создана для ЭВМ под названием EDVAC, разрабатываемого в рамках Манхэт-тенского проекта (проект по созданию атомной бомбы в США, осуществлялся в конце второй миро-вой войны). Отчет, описывающий основные принципы организации этого компьютера, был написан фон Нейманом в 1945 году и, с разрешения американских военных, разослан в основные ведущие мировые университеты. Этот отчёт оказал решающее влияние на развитие индустрии и исследований в компьютерной сфере. Ниже представлены основные принципы архитектуры фон Неймана.
Программное управление работой ЭВМ. Любое сложное оборудование имеет интерфейс для взаимодействия с оператором, и чем сложнее задачи, для решения которых оборудование предназначено, тем более сложный интерфейс взаимодействия с оператором оно име-ет. Посредством этого интерфейс человек управляет оборудованием - принимает решения, которые последнее принять не в состоянии, проводит диагностику, перезапуск и т.д. Например, многие со-временные самолёты обладают интеллектуальными системами автопилотирования, но, даже умея самостоятельно решать сложные навигационные задачи, эти системы требуют от экипажа задания начальных условий маршрута, отдельных параметров режима полёта и т.д. ЭВМ также является сложным оборудованием, которое помогает конечному пользователю решать его задачи, как прави-ло, уже не лежащие в области программирования и вычислительной техники, как, например, рас-сматриваемая выше задача управления самолетом. Другим примером являются многочисленные за-дачи управления бизнес-организацией - учёт различных ресурсов, мониторинг индустриальных процессов и пр. Можно также вспомнить про мобильные устройства, которые решают задачу обще-ния людей, помогают ориентироваться на местности, удобно производить покупки и выполнять платежи и т.д.
Принцип программного управления ЭВМ архитектуры фон Неймана утверждает, что управление вычислительной техникой - мобильными устройствами, ноутбуками, рабочими станциями и серверами и пр. - может осуществляться оператором не напрямую, а с помощью программ. В идеале программы вообще освобождают оператора (конечного пользователя) от участия в управлении работой ЭВМ, требуя лишь задания начальных данных. Но даже последние часто считываются программой автоматически, являясь, так сказать параметрами контекста.
Программа, исполняемая на ЭВМ, состоит из отдельных команд (действий), и каждая ко-манда позволяет осуществить единичный акт преобразования информации над некоторыми данны-ми. Команды, которые могут исполняться конкретной ЭВМ, составляют её машинный язык.
Машинный язык ЭВМ должен был обладать выразительной силой: требуется, чтобы с его помощью было возможно и удобно задавать соответствующие алгоритмы. С другой стороны, он должен позволять эффективное выполнение на соответствующей ЭВМ. Компромисс между нагляд-ностью и выразительной силой, с одной стороны, и вычислительной эффективностью, с другой сто-роны, является одной из главных проблем современных языков программирования (будем считать, что читателю очевидно, что современные языки программирования являются надстройкой над ма-шинными языками ЭВМ, а программы, созданные с их помощью, относительно несложно превра-щаются в команды ЭВМ).
Один из пионеров вычислительной техники Чарльз Бэббидж пытался реализовать данный принцип ещё в XIX веке, но потерпел неудачу. Технологии XX века позволили успешно создать сложные программируемые устройства. Соответственно, для них стали разрабатываться специаль-ные "понятные" им языки (машинные языки), с помощью которых стало возможно выра-зить вычислительные алгоритмы.
Принцип хранимой программы. Этот принцип утверждает, что в процессе исполнения программа вместе со своими данными хранится в ЭВМ, а не передается через оператор-ский интерфейс по одной команде. При этом важным является то, что и код, и данные программы находятся в одном и том же месте - в оперативной памяти. В процессе исполнения программы про-цессор выбирает из оперативной памяти команды и их операнды (то есть данные). При этом имеется возможность сделать команду операндом и тогда над ней можно выполнять различные операции, и таким образом появляется возможность преобразовывать программы при их выполнении. Также сле-дует отметить, что принцип хранимой программы обеспечивает одинаковое время выборки команд и операндов из памяти, позволяет использовать косвенные системы адресации для работы c памятью произвольных размеров и многое другое.
Наличие оперативной памяти, в которой хранится как программа, так и её данные, была новаторской идеей. Например, компьютер Mark I представлял собой, фактически, мощный электромеханический калькулятор, снабжённый управляющим устройством. Исполняемая программа непосредственно считывалась с перфоленты, а не загружалась в оперативную память це-ликом перед запуском, то есть принцип хранимой программы архитектуры фон Неймана нарушался. Затраты на покомандное считывание сильно влияли на скорость исполнения программы. Однако на тот момент (40-х годы XX века) это всех устраивало: тот факт, что вычислительное устройство мож-но было программировать, а не подавать ему на вход каждую команду вручную, уже был значитель-ным шагом вперёд. Менее знаменитый современник компьютера Mark I, немецкий компьютер Z3, созданный и утерянный во время Второй мировой войны, был устроен аналогичном образом.
Принцип хранимой программы впоследствии позволил создать компиляторы, операцион-ные системы, различные системные программы, которые манипулируют машинным кодом программ как данными, позволяя достичь значительной автоматизации в программном управлении ЭВМ.
Принцип адресуемости памяти. Данный принцип постулирует, что память ЭВМ (в частности, оперативная память) устроена следующим образом. Она представляет собой набор пронумерованных ячеек, каждая из которых имеет, таким образом, адрес доступа - номер. Эти ячейки называются словами, у разных ЭВМ размер слова бывает разным (подробно про это будет рассказано в следующих лекциях). Команды программы, а также её данные, располагаются в этих словах последовательно. Процессору в любой момент времени доступна любое слово в памяти по номеру (адресу). Таким образом память является массивом слов.
Уже позднее данный принцип позволил организовывать различные схемы адресации, ис-пользуя адресные сегменты, косвенную адресацию и т.д. (все это будет подробно рассмотрено в сле-дующих лекциях). Такие схемы, в свою очередь, позволили реализовать гибкие стратегии размеще-ния программ и данных в памяти, а также осуществлять эффективный доступ к ним во время работы процессора.
Использование двоичной системы исчисления. Этот принцип означает, что для представления команд программ и их данных используется двоичная система счисления. Первые компьютеры использовали десятичную систему исчисления, были также варианты использования троичной системы исчисления.
Именно использование двоичной системы позволил наладить индустриальное производ-ство ЭВМ. Дело в том, что поскольку в двоичной системе имеются только две цифры (0 и 1), поэто-му для их представления может быть использована любая физическая система c двумя стабильными состояниями. Например, триод и транзистор (открытое или закрытое состояния), триггер c двумя устойчивыми состояниями, импульсная схема (наличие или отсутствие электрического импульса) и т. п. Предпринимались попытки конструирования ЭВМ на основе других систем исчисления (например, троичной и десятичной), и были достигнуты интересные результаты. Но лишь для двоичной системы удалось создать электронные схемы, надёжные и недорогие при массовом производстве.
Этот принцип также не был очевидным. Альтернативой двоичной системе исчисления была в первую очередь традиционная десятичная система. Для неё существовало много средств, например, алгоритмы для арифмометров, широко использовавшихся в 40-50 годы XX века. Арифмо-метры - это небольшие механические вычислители, позволявшие выполнять 4 главных арифмети-ческих действия и помещавшиеся на письменном столе. Были также созданы, опубликованы и широко использовались таблицы значений функций и физических величин с достаточно высокой точностью в форме десятичных дробей и
Иерархичность запоминающих устройств. Этот принцип утверждает, что ЭВМ должна иметь различные виды памяти, обладающие различным объёмом и быстродействием. Кратко рассмотрим разные виды памяти современных ЭВМ.
Сначала сфокусируемся на долгосрочной и оперативной памяти.
Долгосрочная память предназначается для длительного хране-ния программ и данных компьютера. Фотографии, фильмы, документы и пр. хранятся именно в дол-госрочной памяти. Там же хранятся все программы, которые установлены и могут исполнятся на Вашем компьютере. Таким образом, содержание долгосрочной памяти остается неизменными после выключения и включения компьютера, чего нельзя сказать о других видах памяти. Эта память имеет большие объемы и относительно низкую скорость доступа. Существуют следующие варианты реализации долгосрочной памяти:
SSD),Оперативная память предназначена для хранения программы и её данных в процессе исполнения. То есть программа загружается из долгосрочной памяти в опера-тивную, давая возможность процессору выполнить её. Таким образом, процессор не работает с дол-госрочной памятью, что сильно уменьшило бы скорость исполнения программы. Соответственно, оперативная память имеет существенно меньший объем, чем долгосрочная, но скорость доступа к ней значительно выше - ведь требуется, чтобы процессор мог получать следующие команд и значе-ния соответствующих переменных очень быстро. В связи с этим для изготовления оперативной па-мяти используются иные технологи, нежели для изготовления долгосрочной памяти.
Взаимодействие процессора и оперативной памяти осуществляется через системную шину - быстрый канал передачи информации. Несмотря на эффек-тивную реализацию, системная шина является принципиальным узким местом архитектуры фон Неймана, замедляющим быстродействие компьютера. На решение этой проблемы нацелено большое количество различных решений на самых разных уровнях организации процесса выполнения про-граммы.
Разделение памяти компьютера на оперативную и долгосрочную было одной из главных инноваций архитектуры фон Неймана. Однако в современных компьютерах иерархия памяти значи-тельно сложнее. Кратко рассмотрим следующие виды памяти:
Процессор имеет набор регистров, каждый из которых является небольшой ячейкой памяти (8, 16, 32 или 64 бита). Эти ячейки используются процессором для ариф-метических операций, а также для выполнения других команд. Команды, оперируя регистрами, вы-полняются существенно быстрее, нежели в ситуации, когда данные берутся из долгосрочной памяти, поскольку регистры находятся непосредственно внутри процессора. Например, у процессора Intel 8080 было - 7 регистров, а у Intel Itanium - 256 регистров. Одним из факторов, который влияет на количество регистров процессора, является его цена и массовость производства.
Поскольку объем памяти, который содержится в регистрах, крайне незначителен, а про-блема оптимизации сообщения процессора и оперативной памяти в процессе исполнения программ чрезвычайно актуальна, используется ещё один вид памяти - кэш-память. Это особый вид быстрой памяти, которая находится в процессоре и предназначается для хранения данных, активно используемых процессором при выполнении одной или нескольких программ, поз-воляя существенно ускорить выполнение программ. В многоядерных процессорах эта память устро-ена иерархично - каждое ядро имеет свою кэш-память, и весь процессор также имеет свою соб-ственную кэш-память. Подробнее об этом будет рассказано в следующих лекциях.
Быстродействие памяти - это скорость выполнения операции чтения данных и записи данных, которую обеспечивают микросхемы, реализующие данную память.
Высокое быстродействие памяти (регистры, кэш-память, оперативная память) требует принципиально иных технологий аппаратной реализации, чем низкое быстродействие (жесткий диск). При этом быстрая память оказывается дороже (причём, в разных смыслах), чем медленная, поэтому она имеет существенно меньший объем. Объём памяти типичного офисного компьютера, который мы рассмотрим в следующих лекциях, составляет от 8 до 16 Gb оперативной памяти и от 500 до 2000 Gb - жесткий диск.
Наконец, скажем несколько слов о внешних устройствах памяти, которые широко использовались и используются для различных компьютеров. Речь идёт о дискетах, лазерных дисках и флэш-картах. Они являются внешними, переносными - их легко можно вставить в компьютер, что каждый из нас делал много раз. Наряду с Интернетом, они используются для передачи данных между разными компьютерами. Существует несколько поколений таких устройств. Пожалуй, первыми были гибкие диски или дискеты, используемые для персональных компьютеров IBM PC. Позже появились лазерные диски; правда, они не предназначались для активной передачи данных - записать что-либо на них можно было, в зависимости от их разновидности, однократно или ограниченное количество раз; они использовались, главным образом, для дистрибутивов программ, а также для фильмов и аудиозаписей. Наконец, флэш-память (так называемые флэшки) широко используются в настоящее время и позволяет переносить фильмы, фотографии и аудиозаписи, так и программы, а также различные документы и другие виды данных. Флэш-память удобна, поскольку не везде имеется Интернет, а иногда бывает, что его скорость недостаточна. Также не все пользователи используют внешние хранилища наподобие Яндекс-диск или Google-Drive, например, по соображениям безопасности. Флэш-память изготовляется на основе специальных транзисторов, которые запоминают своё состояние (открытое или закрытое) при выключении питания.
Память для настроек компьютера используется для хранения основных параметров, используемых при его запуске. В персональных компьютерах такая память имеет объём в пределах нескольких килобайт и хранит настройки жёстких дисков, состояние адаптера WiFi, настройки загрузки операционной системы с жёсткого диска или по локальной сети и т.д. Отдельный вид памяти для настроек нужен, поскольку столь базовые настройки не могут быть прочитаны с жёсткого диска: ведь часть из них используется при его инициализации. А в некоторых комплектациях компьютеров, загружающихся по локальной сети, жёсткого диска может и вовсе не быть.
Подводя итог, заметим, что наличие разных видов памяти в ЭВМ позволяет находить гиб-кий компромисс между размерами (ёмкостью), быстродействием, ценой и надежностью запоминаю-щих устройств, поскольку для разных задач требуется различные значения этих характеристик!
Также следует отметить, что технологии производства разных видов памяти существенно различаются.
CMOS (Complementary Metal-Oxide-Semiconductor), которая основана на триггерах и требует посто-янного электропитания; она может работать несколько лет от часовой батарейки. Триггер является простейшей электронной схемой, которая имеет два устойчивых состояния: высокий или низкий электрический потенциал.О разных видах памяти мы более подробно расскажем в следующих лекциях.
Наконец, отметим, что рассматриваемый в данном разделе принцип иерархичности запо-минающих устройств, как и предыдущие принципы архитектуры фон Неймана, на заре компьютер-ной эпохи был совершенно неочевидным.
Условный переход - это машинная команда или кон-струкция языка программирования, которая позволяет направить выполнение программы по раз-ным веткам в зависимости от значения некоторой переменной или результата выполнения некото-рого условия.
В современных языках программирования, а также в машинных языках, существует большое количество различных условных переходов. Например, в языке С имеется конструкция if/then/else, которая позволяет программе "ветвится" по значению некоторого логического условия. Имеется также команда switch/case, которая позволяет "ветвить" поток выполне-ния программы по условиям, имеющим не два значения - истину или ложь, как логические условия, - а некоторый спектр значений, тем самым реализуя более чем два ветвления.
Кроме непосредственного использования условные переходы очень важны в циклах. Ведь в циклах постоянно проверяются выполнение некоторого условия и, и в зависимости от его истинности или запускается следующая итерация тела цикла или происходит выход из цикла на следующую после цикла инструкцию. Также условные переходы используются неявно, в ряде других конструкций языков программирования и машинных языках.
Несмотря на то, что сегодня условные переходы кажутся чем-то само собой разумеющим-ся, они появились далеко не сразу. Например, уже упомянутые компьютеры Mark I и Z3 их не поддерживали. В том месте программы, где требовался условный переход, компьютер должен был остановиться и передать управление оператору.
На рис.2.1 представлена схема типовой ЭВМ, созданной на основе архитектуры фон Неймана. Все узлы ЭВМ разделены на три группы - процессор, опера-тивная память, периферийные устройства (жесткий диск, графическая карта компьютера, сетевая карта, различные порты - USB, HDMI и
Дадим определение системной шине.
Системная шина является быстрым каналом передачи данных и предназначается для обеспечения эффективной коммуникации процессора с оперативной памятью и периферийными устройствами ЭВМ.
У первых компьютеров системная шина состояла из трёх шин специального назначения: шины данных, адресной шины, управляющей шины.
Отметим, что в современных ЭВМ системная шина организована иначе, но приведённое выше разделение каналов передачи информации активно применяется на разных уровнях организа-ции системной шины.
"Узким" местом архитектуры фон Неймана является системная шина: она ин-тенсивно используется во время исполнения программы, поскольку и код программы, и её данные находятся в одном месте (оперативная память), а исполняются в другом (процессор). Поэтому её пропускная способность, во многом, определяет скорость исполнения программы. Существуют раз-личные способы решения этой проблемы, например, кэш-память, который будет обсуждаться далее, однако она является принципиальной, и полностью её решить не удаётся.
Совместное хранение программы и ее данных в оперативной памяти ЭВМ позволяет су-щественно удешевить производство ЭВМ и упростить её архитектуру, но не является эффективным по быстродействию. Если реализовать раздельное хранение программы и ее данных, то можно пере-сылать команды программы и соответствующие данные в процессор параллельно, что значительно ускоряет работу ЭВМ. Такой подход получил название гарвардской архитекту-ры.
Гарвардская архитектура предусматривает раздельное хранение программы и данных в оперативной памяти разного вида, а также возможность парал-лельного считывания того и другого процессором при помощи отдельных шин.
Гарвардская архитектура была предложена Говардом Эйкеном в конце 1930-х годов при работе над компьютером Mark I. Кроме того, упоминаемый нами компьютер Z3 также имел гарвардской архитектуру.
Существенным недостатком гарвардской архитектуры является то, что требуется реализо-вать два устройства оперативной памяти и две независимых шины: при массовом производстве это значительно повышает стоимость компьютера. Однако в ряде случаев это оказывается целесообраз-ным и идеи гарвардской архитектуры используются на практике. Перечислим несколько типичных случаев, в которых применяется гарвардская архитектура.
Принципы архитектуры фон Неймана; системная шина и общая схема типовой ЭВМ, основанной на архитектуре фон Неймана; гарвардская архитектура; комбинирова-ние фон Неймановской и гарвардской архитектур в современных вычислительных систе-мах.
Традиционно, под архитектурой ЭВМ понимают полную и детальную спецификацию ин-терфейса пользователя ЭВМ. При этом пользователями считались как люди - в основном, програм-мисты, работающие с ЭВМ, - так и технические средства, взаимодействующие с ЭВМ. Это опреде-ление было дано Фредериком Бруксом в 1975 году в его знаменитой книге "Мифический чело-веко-месяц" и стало общепринятым в индустрии. Однако оно, на наш взгляд, выглядит не-сколько архаично и не вполне вписывается в контекст нашего курса.
Будем называть архитектурой ЭВМ основные принципы организации вычислительных устройств, их основные узлы и интерфейсы, а также технологии и методы, с помощью которых они
Большинство современных ЭВМ созданы на основе архитектуры фон Неймана, предложенной Джоном фон Нейманом и его коллегами из университета Принстона. Эта архитектура была создана для ЭВМ под названием EDVAC, разрабатываемого в рамках Манхэт-тенского проекта (проект по созданию атомной бомбы в США, осуществлялся в конце второй миро-вой войны). Отчет, описывающий основные принципы организации этого компьютера, был написан фон Нейманом в 1945 году и, с разрешения американских военных, разослан в основные ведущие мировые университеты. Этот отчёт оказал решающее влияние на развитие индустрии и исследований в компьютерной сфере. Ниже представлены основные принципы архитектуры фон Неймана.
Программное управление работой ЭВМ. Любое сложное оборудование имеет интерфейс для взаимодействия с оператором, и чем сложнее задачи, для решения которых оборудование предназначено, тем более сложный интерфейс взаимодействия с оператором оно име-ет. Посредством этого интерфейс человек управляет оборудованием - принимает решения, которые последнее принять не в состоянии, проводит диагностику, перезапуск и т.д. Например, многие со-временные самолёты обладают интеллектуальными системами автопилотирования, но, даже умея самостоятельно решать сложные навигационные задачи, эти системы требуют от экипажа задания начальных условий маршрута, отдельных параметров режима полёта и т.д. ЭВМ также является сложным оборудованием, которое помогает конечному пользователю решать его задачи, как прави-ло, уже не лежащие в области программирования и вычислительной техники, как, например, рас-сматриваемая выше задача управления самолетом. Другим примером являются многочисленные за-дачи управления бизнес-организацией - учёт различных ресурсов, мониторинг индустриальных процессов и пр. Можно также вспомнить про мобильные устройства, которые решают задачу обще-ния людей, помогают ориентироваться на местности, удобно производить покупки и выполнять платежи и т.д.
Принцип программного управления ЭВМ архитектуры фон Неймана утверждает, что управление вычислительной техникой - мобильными устройствами, ноутбуками, рабочими станциями и серверами и пр. - может осуществляться оператором не напрямую, а с помощью программ. В идеале программы вообще освобождают оператора (конечного пользователя) от участия в управлении работой ЭВМ, требуя лишь задания начальных данных. Но даже последние часто считываются программой автоматически, являясь, так сказать параметрами контекста.
Программа, исполняемая на ЭВМ, состоит из отдельных команд (действий), и каждая ко-манда позволяет осуществить единичный акт преобразования информации над некоторыми данны-ми. Команды, которые могут исполняться конкретной ЭВМ, составляют её машинный язык.
Машинный язык ЭВМ должен был обладать выразительной силой: требуется, чтобы с его помощью было возможно и удобно задавать соответствующие алгоритмы. С другой стороны, он должен позволять эффективное выполнение на соответствующей ЭВМ. Компромисс между нагляд-ностью и выразительной силой, с одной стороны, и вычислительной эффективностью, с другой сто-роны, является одной из главных проблем современных языков программирования (будем считать, что читателю очевидно, что современные языки программирования являются надстройкой над ма-шинными языками ЭВМ, а программы, созданные с их помощью, относительно несложно превра-щаются в команды ЭВМ).
Один из пионеров вычислительной техники Чарльз Бэббидж пытался реализовать данный принцип ещё в XIX веке, но потерпел неудачу. Технологии XX века позволили успешно создать сложные программируемые устройства. Соответственно, для них стали разрабатываться специаль-ные "понятные" им языки (машинные языки), с помощью которых стало возможно выра-зить вычислительные алгоритмы.
Принцип хранимой программы. Этот принцип утверждает, что в процессе исполнения программа вместе со своими данными хранится в ЭВМ, а не передается через оператор-ский интерфейс по одной команде. При этом важным является то, что и код, и данные программы находятся в одном и том же месте - в оперативной памяти. В процессе исполнения программы про-цессор выбирает из оперативной памяти команды и их операнды (то есть данные). При этом имеется возможность сделать команду операндом и тогда над ней можно выполнять различные операции, и таким образом появляется возможность преобразовывать программы при их выполнении. Также сле-дует отметить, что принцип хранимой программы обеспечивает одинаковое время выборки команд и операндов из памяти, позволяет использовать косвенные системы адресации для работы c памятью произвольных размеров и многое другое.
Наличие оперативной памяти, в которой хранится как программа, так и её данные, была новаторской идеей. Например, компьютер Mark I представлял собой, фактически, мощный электромеханический калькулятор, снабжённый управляющим устройством. Исполняемая программа непосредственно считывалась с перфоленты, а не загружалась в оперативную память це-ликом перед запуском, то есть принцип хранимой программы архитектуры фон Неймана нарушался. Затраты на покомандное считывание сильно влияли на скорость исполнения программы. Однако на тот момент (40-х годы XX века) это всех устраивало: тот факт, что вычислительное устройство мож-но было программировать, а не подавать ему на вход каждую команду вручную, уже был значитель-ным шагом вперёд. Менее знаменитый современник компьютера Mark I, немецкий компьютер Z3, созданный и утерянный во время Второй мировой войны, был устроен аналогичном образом.
Принцип хранимой программы впоследствии позволил создать компиляторы, операцион-ные системы, различные системные программы, которые манипулируют машинным кодом программ как данными, позволяя достичь значительной автоматизации в программном управлении ЭВМ.
Принцип адресуемости памяти. Данный принцип постулирует, что память ЭВМ (в частности, оперативная память) устроена следующим образом. Она представляет собой набор пронумерованных ячеек, каждая из которых имеет, таким образом, адрес доступа - номер. Эти ячейки называются словами, у разных ЭВМ размер слова бывает разным (подробно про это будет рассказано в следующих лекциях). Команды программы, а также её данные, располагаются в этих словах последовательно. Процессору в любой момент времени доступна любое слово в памяти по номеру (адресу). Таким образом память является массивом слов.
Уже позднее данный принцип позволил организовывать различные схемы адресации, ис-пользуя адресные сегменты, косвенную адресацию и т.д. (все это будет подробно рассмотрено в сле-дующих лекциях). Такие схемы, в свою очередь, позволили реализовать гибкие стратегии размеще-ния программ и данных в памяти, а также осуществлять эффективный доступ к ним во время работы процессора.
Использование двоичной системы исчисления. Этот принцип означает, что для представления команд программ и их данных используется двоичная система счисления. Первые компьютеры использовали десятичную систему исчисления, были также варианты использования троичной системы исчисления.
Именно использование двоичной системы позволил наладить индустриальное производ-ство ЭВМ. Дело в том, что поскольку в двоичной системе имеются только две цифры (0 и 1), поэто-му для их представления может быть использована любая физическая система c двумя стабильными состояниями. Например, триод и транзистор (открытое или закрытое состояния), триггер c двумя устойчивыми состояниями, импульсная схема (наличие или отсутствие электрического импульса) и т. п. Предпринимались попытки конструирования ЭВМ на основе других систем исчисления (например, троичной и десятичной), и были достигнуты интересные результаты. Но лишь для двоичной системы удалось создать электронные схемы, надёжные и недорогие при массовом производстве.
Этот принцип также не был очевидным. Альтернативой двоичной системе исчисления была в первую очередь традиционная десятичная система. Для неё существовало много средств, например, алгоритмы для арифмометров, широко использовавшихся в 40-50 годы XX века. Арифмо-метры - это небольшие механические вычислители, позволявшие выполнять 4 главных арифмети-ческих действия и помещавшиеся на письменном столе. Были также созданы, опубликованы и широко использовались таблицы значений функций и физических величин с достаточно высокой точностью в форме десятичных дробей и
Иерархичность запоминающих устройств. Этот принцип утверждает, что ЭВМ должна иметь различные виды памяти, обладающие различным объёмом и быстродействием. Кратко рассмотрим разные виды памяти современных ЭВМ.
Сначала сфокусируемся на долгосрочной и оперативной памяти.
Долгосрочная память предназначается для длительного хране-ния программ и данных компьютера. Фотографии, фильмы, документы и пр. хранятся именно в дол-госрочной памяти. Там же хранятся все программы, которые установлены и могут исполнятся на Вашем компьютере. Таким образом, содержание долгосрочной памяти остается неизменными после выключения и включения компьютера, чего нельзя сказать о других видах памяти. Эта память имеет большие объемы и относительно низкую скорость доступа. Существуют следующие варианты реализации долгосрочной памяти:
SSD),Оперативная память предназначена для хранения программы и её данных в процессе исполнения. То есть программа загружается из долгосрочной памяти в опера-тивную, давая возможность процессору выполнить её. Таким образом, процессор не работает с дол-госрочной памятью, что сильно уменьшило бы скорость исполнения программы. Соответственно, оперативная память имеет существенно меньший объем, чем долгосрочная, но скорость доступа к ней значительно выше - ведь требуется, чтобы процессор мог получать следующие команд и значе-ния соответствующих переменных очень быстро. В связи с этим для изготовления оперативной па-мяти используются иные технологи, нежели для изготовления долгосрочной памяти.
Взаимодействие процессора и оперативной памяти осуществляется через системную шину - быстрый канал передачи информации. Несмотря на эффек-тивную реализацию, системная шина является принципиальным узким местом архитектуры фон Неймана, замедляющим быстродействие компьютера. На решение этой проблемы нацелено большое количество различных решений на самых разных уровнях организации процесса выполнения про-граммы.
Разделение памяти компьютера на оперативную и долгосрочную было одной из главных инноваций архитектуры фон Неймана. Однако в современных компьютерах иерархия памяти значи-тельно сложнее. Кратко рассмотрим следующие виды памяти:
Процессор имеет набор регистров, каждый из которых является небольшой ячейкой памяти (8, 16, 32 или 64 бита). Эти ячейки используются процессором для ариф-метических операций, а также для выполнения других команд. Команды, оперируя регистрами, вы-полняются существенно быстрее, нежели в ситуации, когда данные берутся из долгосрочной памяти, поскольку регистры находятся непосредственно внутри процессора. Например, у процессора Intel 8080 было - 7 регистров, а у Intel Itanium - 256 регистров. Одним из факторов, который влияет на количество регистров процессора, является его цена и массовость производства.
Поскольку объем памяти, который содержится в регистрах, крайне незначителен, а про-блема оптимизации сообщения процессора и оперативной памяти в процессе исполнения программ чрезвычайно актуальна, используется ещё один вид памяти - кэш-память. Это особый вид быстрой памяти, которая находится в процессоре и предназначается для хранения данных, активно используемых процессором при выполнении одной или нескольких программ, поз-воляя существенно ускорить выполнение программ. В многоядерных процессорах эта память устро-ена иерархично - каждое ядро имеет свою кэш-память, и весь процессор также имеет свою соб-ственную кэш-память. Подробнее об этом будет рассказано в следующих лекциях.
Быстродействие памяти - это скорость выполнения операции чтения данных и записи данных, которую обеспечивают микросхемы, реализующие данную память.
Высокое быстродействие памяти (регистры, кэш-память, оперативная память) требует принципиально иных технологий аппаратной реализации, чем низкое быстродействие (жесткий диск). При этом быстрая память оказывается дороже (причём, в разных смыслах), чем медленная, поэтому она имеет существенно меньший объем. Объём памяти типичного офисного компьютера, который мы рассмотрим в следующих лекциях, составляет от 8 до 16 Gb оперативной памяти и от 500 до 2000 Gb - жесткий диск.
Наконец, скажем несколько слов о внешних устройствах памяти, которые широко использовались и используются для различных компьютеров. Речь идёт о дискетах, лазерных дисках и флэш-картах. Они являются внешними, переносными - их легко можно вставить в компьютер, что каждый из нас делал много раз. Наряду с Интернетом, они используются для передачи данных между разными компьютерами. Существует несколько поколений таких устройств. Пожалуй, первыми были гибкие диски или дискеты, используемые для персональных компьютеров IBM PC. Позже появились лазерные диски; правда, они не предназначались для активной передачи данных - записать что-либо на них можно было, в зависимости от их разновидности, однократно или ограниченное количество раз; они использовались, главным образом, для дистрибутивов программ, а также для фильмов и аудиозаписей. Наконец, флэш-память (так называемые флэшки) широко используются в настоящее время и позволяет переносить фильмы, фотографии и аудиозаписи, так и программы, а также различные документы и другие виды данных. Флэш-память удобна, поскольку не везде имеется Интернет, а иногда бывает, что его скорость недостаточна. Также не все пользователи используют внешние хранилища наподобие Яндекс-диск или Google-Drive, например, по соображениям безопасности. Флэш-память изготовляется на основе специальных транзисторов, которые запоминают своё состояние (открытое или закрытое) при выключении питания.
Память для настроек компьютера используется для хранения основных параметров, используемых при его запуске. В персональных компьютерах такая память имеет объём в пределах нескольких килобайт и хранит настройки жёстких дисков, состояние адаптера WiFi, настройки загрузки операционной системы с жёсткого диска или по локальной сети и т.д. Отдельный вид памяти для настроек нужен, поскольку столь базовые настройки не могут быть прочитаны с жёсткого диска: ведь часть из них используется при его инициализации. А в некоторых комплектациях компьютеров, загружающихся по локальной сети, жёсткого диска может и вовсе не быть.
Подводя итог, заметим, что наличие разных видов памяти в ЭВМ позволяет находить гиб-кий компромисс между размерами (ёмкостью), быстродействием, ценой и надежностью запоминаю-щих устройств, поскольку для разных задач требуется различные значения этих характеристик!
Также следует отметить, что технологии производства разных видов памяти существенно различаются.
CMOS (Complementary Metal-Oxide-Semiconductor), которая основана на триггерах и требует посто-янного электропитания; она может работать несколько лет от часовой батарейки. Триггер является простейшей электронной схемой, которая имеет два устойчивых состояния: высокий или низкий электрический потенциал.О разных видах памяти мы более подробно расскажем в следующих лекциях.
Наконец, отметим, что рассматриваемый в данном разделе принцип иерархичности запо-минающих устройств, как и предыдущие принципы архитектуры фон Неймана, на заре компьютер-ной эпохи был совершенно неочевидным.
Условный переход - это машинная команда или кон-струкция языка программирования, которая позволяет направить выполнение программы по раз-ным веткам в зависимости от значения некоторой переменной или результата выполнения некото-рого условия.
В современных языках программирования, а также в машинных языках, существует большое количество различных условных переходов. Например, в языке С имеется конструкция if/then/else, которая позволяет программе "ветвится" по значению некоторого логического условия. Имеется также команда switch/case, которая позволяет "ветвить" поток выполне-ния программы по условиям, имеющим не два значения - истину или ложь, как логические условия, - а некоторый спектр значений, тем самым реализуя более чем два ветвления.
Кроме непосредственного использования условные переходы очень важны в циклах. Ведь в циклах постоянно проверяются выполнение некоторого условия и, и в зависимости от его истинности или запускается следующая итерация тела цикла или происходит выход из цикла на следующую после цикла инструкцию. Также условные переходы используются неявно, в ряде других конструкций языков программирования и машинных языках.
Несмотря на то, что сегодня условные переходы кажутся чем-то само собой разумеющим-ся, они появились далеко не сразу. Например, уже упомянутые компьютеры Mark I и Z3 их не поддерживали. В том месте программы, где требовался условный переход, компьютер должен был остановиться и передать управление оператору.
На рис.2.1 представлена схема типовой ЭВМ, созданной на основе архитектуры фон Неймана. Все узлы ЭВМ разделены на три группы - процессор, опера-тивная память, периферийные устройства (жесткий диск, графическая карта компьютера, сетевая карта, различные порты - USB, HDMI и
Дадим определение системной шине.
Системная шина является быстрым каналом передачи данных и предназначается для обеспечения эффективной коммуникации процессора с оперативной памятью и периферийными устройствами ЭВМ.
У первых компьютеров системная шина состояла из трёх шин специального назначения: шины данных, адресной шины, управляющей шины.
Отметим, что в современных ЭВМ системная шина организована иначе, но приведённое выше разделение каналов передачи информации активно применяется на разных уровнях организа-ции системной шины.
"Узким" местом архитектуры фон Неймана является системная шина: она ин-тенсивно используется во время исполнения программы, поскольку и код программы, и её данные находятся в одном месте (оперативная память), а исполняются в другом (процессор). Поэтому её пропускная способность, во многом, определяет скорость исполнения программы. Существуют раз-личные способы решения этой проблемы, например, кэш-память, который будет обсуждаться далее, однако она является принципиальной, и полностью её решить не удаётся.
Совместное хранение программы и ее данных в оперативной памяти ЭВМ позволяет су-щественно удешевить производство ЭВМ и упростить её архитектуру, но не является эффективным по быстродействию. Если реализовать раздельное хранение программы и ее данных, то можно пере-сылать команды программы и соответствующие данные в процессор параллельно, что значительно ускоряет работу ЭВМ. Такой подход получил название гарвардской архитекту-ры.
Гарвардская архитектура предусматривает раздельное хранение программы и данных в оперативной памяти разного вида, а также возможность парал-лельного считывания того и другого процессором при помощи отдельных шин.
Гарвардская архитектура была предложена Говардом Эйкеном в конце 1930-х годов при работе над компьютером Mark I. Кроме того, упоминаемый нами компьютер Z3 также имел гарвардской архитектуру.
Существенным недостатком гарвардской архитектуры является то, что требуется реализо-вать два устройства оперативной памяти и две независимых шины: при массовом производстве это значительно повышает стоимость компьютера. Однако в ряде случаев это оказывается целесообраз-ным и идеи гарвардской архитектуры используются на практике. Перечислим несколько типичных случаев, в которых применяется гарвардская архитектура.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.