ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 13.01.2021

Просмотров: 186

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

4


Лекция 3


2. Организация цифровых компьютеров


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


2.1. Процессоры


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

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

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

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

Большинство команд можно разделить на два типа: “регистр-регистр” и “регистр-память” по признакам исходного расположения их операндов (методам адресации).

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

  1. на основе счетчика команд выбирает очередную команду из памяти и помещает ее в регистр команд;

  2. меняет содержимое счетчика команд (чтобы он указывал на следующую команду в памяти);

  3. определяет тип выбранной команды;

  4. определяет местонахождение ее операндов;

  5. при необходимости переносит их в собственные регистры;

  6. выполняет операцию;

  7. при необходимости записывает результат в регистр или память;

  8. переходит к шагу 1 для выполнения следующей команды.


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


2.2. Архитектуры CISC и RISC


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

Поэтому в начале 80-х возникла противоположная идея - упрощение команд и сокращение их количества до необходимого минимума. В результате удается вообще отказаться от интерпретации, скорость выполнения команд резко возрастает, а более сложные вычисления производятся с помощью обычных программ. Последняя технология получила название RISC (Reduced Instruction Set Computer - компьютер с сокращенным набором команд; обычно их около 50). Эта технология воплощена, например, в UltraSPARC II. Поскольку эта технология относительна новая, то к ее недостаткам можно отнести несовместимость со старым ПО.

В противоположность ей, первая технология была названа CISC (Complex Instruction Set Computer - компьютер с полным набором команд; их количество может составлять от 200 до 300). Типичными ее представителями являются DEC VAX, большие IBM, процессоры Intel. Однако Intel сумела совместить преимущества обеих концепций. Начиная с Intel 486, процессоры этого семейства содержат ядро RISC, которое выполняет простые и самые распространенные команды, в то время как по обычной здесь технологии CISC интерпретируются команды более сложные. Хотя в целом данный “гибридный“ подход работает медленнее чистого RISC, он позволяет без изменений применять старое ПО.

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

  • Все машинные команды непосредственно выполняются аппаратурой.

  • Компьютер должен начинать выполнение большого количества команд (параллелизм).

  • Команды должны легко декодироваться (простые коды операций и методы адресации).

  • К памяти должны обращаться лишь команды загрузки и сохранения.

  • Должно существовать большое количество регистров (в связи с предыдущим пунктом).


2.3. Возможности параллельного выполнения программ


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



2.3.1. Параллелизм на уровне команд


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

Первоначально конвейеры (как одинарные, так и двойные) появились в RISC-компьютерах. Конвейеры в процессорах Intel возникли начиная с 486-го, который содержал 1 конвейер, а Pentium - 2 конвейера по 5 стадий: выборка команды, декодирование, выборка операндов, выполнение команды, возврат результата. Pentium Pro имел уже 3 конвейера. Дальнейшее увеличение количества конвейеров привело бы к чрезмерной громоздкости аппаратуры. Поэтому появилась другая идея суперскалярной архитектуры, основанная на том факте, что блоки выполнения различных стадий работают с разной скоростью. Для той стадии, которая быстрее получает эстафету и дольше работает, предусматривается несколько параллельно работающих блоков процессора.


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


2.3.2. Параллелизм на уровне процессоров


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

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


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

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

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