Внутреннее устройство фон-Неймановской вычислительной машины



Лекция 2

Аппаратное обеспечение ОС

Вычислительные машины

Любую вычислительную машину образуют три основные компонента:

· процессор,

· память,

· устройства ввода-вывода (УВВ).

Первые разработки вычислительной машины, ставшей прообразом современных компьютеров, начались в 30-х годах прошлого века. В эти годы военное ведомство США поручило Гарвардскому и Принстонскому университетам разработать электромеханическую вычислительную систему для военно-морской артиллерии. Результатом усилий этих университетов стали две концепции построения вычислительных систем, которые определили развитие мировой вычислительной техники почти на 100 лет вперед. Мы знаемих как гарвардская и фон-Неймановская архитектуры (работа фон-Неймана была опубликована раньше Принстонского университета). Их основное отличие заключалось в том, что архитектура фон-Неймана использовала единую память (общую шину данных), а гарвардская предполагала наличие нескольких шин и разделов памяти (в оригинале: шина данных и шина команд).

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

Фон Неймановская архитектура

Машина Джорджа фон-Неймана, представленная в 1945 году включала 5 блоков: - регистры общей памяти, управляющее устройство, арифметико-логическое устройство и входной и выходной регистры.

Рис.1 Машина фон-Неймана

В ней реализуется концепция хранимой программы: программы и данные хранятся в одной и той же памяти. Выполняемые действия определяются блоком управления и АЛУ, которые вместе являются основой центрального процессора. Центральный процессор выбирает и исполняет команды из памяти последовательно, адрес очередной команды задается "счетчиком адреса" в блоке управления. Этот принцип исполнения называется последовательной передачей управления. Данные, с которыми работает программа, могут включать переменные - именованные области памяти, в которых сохраняются значения с целью дальнейшего использования в программе.

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

На Рис. 2 представлена Гарвардская архитектура.

Рис 2. Гарвардская архитектура

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

 

Внутреннее устройство фон-Неймановской вычислительной машины

Внутреннее устройство тракта данных типичного фон-Неймановского процессора показано на Рис.3 и включает:

- Тракт данных, который состоит из регистров (обычно от 1 до 32),

- АЛУ (арифметико-логического устройства),

- Входные регистры,

- Выходные регистры,

- Нескольких соединяющих шин.

Содержимое регистров поступает во входные регистры АЛУ, которые на Рис. 3 обозначены буквами А и В. В них находятся входные данные АЛУ, пока АЛУ производит вычисления.

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

На Рис. 3 показана операция сложения. Отметим, что входные и выходные регистры есть не у всех компьютеров. Большинство команд можно разделить на две группы: команды типа регистр-память и типа регистр-регистр. Команды первого типа вызывают слова из памяти, помещают их в регистры, где они используются в качестве входных данных АЛУ.

«Слова» — это такие элементы данных, которые перемещаются между памятью и регистрами. Словом целое число, размером от 8 бит (1 байт). Слово всегда содержит хотя бы 1 единицу информации: число или символ.

Рис.3 фон Неймановская машина

На Рис.4 показан ход вычисления в АЛУ

Рис.4 Схема АЛУ

Более подробно проследить ход выполнение команд можно по схеме на Рис.5


Рис.5– выполнение команд

Как правило, этот процесс разбивается на следующие этапы:

  1. из ячейки памяти, адрес которой хранится в счетчике команд, выбирается очередная команда; содержимое счетчика команд при этом увеличивается на длину команды;
  2. выбранная команда передается в устройство управления на регистр команд;
  3. устройство управления расшифровывает адресное поле команды;
  4. по сигналам УУ операнды считываются из памяти и записываются в АЛУ на специальные регистры операндов;
  5. УУ расшифровывает код операции и выдает в АЛУ сигнал выполнить соответствующую операцию над данными;
  6. результат операции либо остается в процессоре, либо отправляется в память, если в команде был указан адрес результата;
  7. все предыдущие этапы повторяются до достижения команды "стоп".

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

 

Интерпретатор команд

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

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

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

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

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

Решением этой проблемы стала интерпретация. Эта технология, впервые предложенная Уилксом в 1951 году, позволяла разрабатывать простые дешевые компьютеры, которые, тем не менее, могли выполнять большое количество команд. В результате IBM создала архитектуру System/360, семейство совместимых компьютеров, различных по цене и производительности. Аппаратное обеспечение без интерпретации использовалось только в самых дорогих моделях. Простые компьютеры с интерпретированными командами имели некоторые другие преимущества. Наиболее важными среди них были:

1) возможность фиксировать неправильно выполненные команды или дажевосполнять недостатки аппаратного обеспечения;

2) возможность добавлять новые команды при минимальных затратах, дажепосле покупки компьютера;

3) структурированная организация, которая позволяла разрабатывать, проверять и документировать сложные команды.

Еще один фактор в пользу интерпретации — существование быстрых постоянных запоминающих устройств (так называемых командных ПЗУ) для хранения интерпретаторов. Предположим, что для выполнения обычной интерпретируемой команды интерпретатору нужно выполнить 10 команд, которые называются микрокомандами,по 100 нс каждая, и произвести 2 обращения к оперативной памяти по 500 нс каждое. Общее время выполнения команды составит, следовательно, 2000 нс, всего лишь в два раза больше, чем в лучшем случае могло бы занять непосредственное выполнение этой команды без интерпретации. А если бы не было специального быстродействующего постоянного запоминающего устройства, выполнение этой команды заняло бы целых 6000 нс. Таким образом, важность наличия командных ПЗУ очевидна.

RISC и CISC

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

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

В 1980 году группа разработчиков в университете Беркли во главе с Дэвидом Паттерсоном и Карло Секвином начала разработку процессоров VLSI без использования интерпретации. Для обозначения этого понятия они придумали термин RISC(ReducedInstructionSetComputer)и назвали новый процессор RISC I, вслед за которым вскоре был выпущен RISC II (RISC противопоставлялся CISC -ComplexInstructionSetComputer— компьютер с полным набором команд.). ОсновныеотличияRISC от CISC заключалось в том, что размер команд в нем всегда одинаков и не требуется интерпретация.

С этого момента началась грандиозная идеологическая война между сторонниками RISC и CISC. По мнению RISC, наилучший способ разработки компьютеров — включение туда небольшого количества простых команд, каждая из которых выполняется за один цикл тракта данных, то есть берет два регистра, производит над ними какую-либо арифметическую или логическую операцию (например, сложения или логическое И) и помещает результат обратно в регистр. В качестве аргумента они утверждали, что даже если RISC должна выполнять 4 или 5 команд вместо одной, которую выполняет CISC, притом что команды RISC выполняются в 10 раз быстрее (поскольку они не интерпретируются), он выигрывает в скорости. Следует также отметить, что к этому времени скорость работы основной памяти приблизилась к скорости специальных управляющих постоянных запоминающих устройств, потому недостатки интерпретации были налицо, что повышало популярность компьютеров RISC.

Учитывая преимущества производительности RISC, можно было бы предположить, что такие компьютеры построенные на технологи RISC, такие как Alpha компании DEC, должны бы доминировать над компьютерами CISC (Pentium и т. д.). Однако ничего подобного не произошло. Возникает вопрос: почему?

Во-первых, компьютеры RISC были несовместимы на уровне микрокоманд между собой, а многие компании вложили миллиарды долларов в программное обеспечение.

Во-вторых, как ни странно, компания Intel сумела воплотить те же идеи в архитектуре CISC. Процессоры Intel, начиная с 486-го, содержат ядро RISC, которое выполняет самые простые (и обычно самые распространенные) команды за один цикл тракта данных, а по обычной технологии CISC интерпретируются более сложные команды. В результате обычные команды выполняются быстро, а более сложные и редкие — медленно. Хотя при таком «гибридном» подходе работа происходит не так быстро, как у RISC, данная архитектура имеет ряд преимуществ, поскольку позволяет использовать старое программное обеспечение без изменений.

Трансляция

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

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

 


Дата добавления: 2018-05-02; просмотров: 1123; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!