1 / 31

Архитектура компьютера Радыгин Виктор Юрьевич radigin@mail.msiu.ru

Архитектура компьютера Радыгин Виктор Юрьевич radigin@mail.msiu.ru. Литература. "Архитектура компьютера" , Таненбаум Э., Питер, 2003 (или издание 2002 года) "Основы компьютерных сетей" , Шиндер Д.Л., Вильямс, 2002 "Компьютерные сети" , Таненбаум Э., Питер, 2003

thuy
Download Presentation

Архитектура компьютера Радыгин Виктор Юрьевич radigin@mail.msiu.ru

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Архитектура компьютераРадыгин Виктор Юрьевичradigin@mail.msiu.ru

  2. Литература • "Архитектура компьютера", Таненбаум Э., Питер, 2003 (или издание 2002 года) • "Основы компьютерных сетей", Шиндер Д.Л., Вильямс, 2002 • "Компьютерные сети", Таненбаум Э., Питер, 2003 • "Assembler для DOS, Windows и UNIX", Зубков С.В., Питер-Маркет, СПб, 2004 (или издание Москва, 2000) • "Архитектура и программирование микропроцессора INTEL 80386", Москва, 1992

  3. Электронные схемы каждого компьютера могут выполнять лишь ограниченный набор команд! Обычно эти команды не сложнее чем: • Сложить два числа • Проверить не является ли число нулем • Прочитать или записать несколько байт из оперативной память Проблема:человеку удобно писать на легком для его понимания языке L1, а компьютер может работать лишь с простейшим языком L0!

  4. Трансляция Для решения нашей проблемы мы можем написать программу на языке L0, которая будет переводить программу из языка L1 в язык L0, заменяя каждую команду из языка L1 на эквивалентный набор команд из языка L0 – это будет называться трансляцией

  5. Интерпретация Также мы можем написать программу на языке L0, которая будет переводить программу из языка L1 в язык L0 по одной команде и сразу выполнять их. Это называется интерпретацией.

  6. Виртуальные машины Таким образом, мы можем создать виртуальную машину, задав новый набор команд L1. Программисты могут писать для нее программы, как для реальной машины, а выполняться они будут методом трансляции или интерпретации. Вывод:задание языка равносильно заданию виртуальной машины и наоборот. Каждая виртуальная машина задает более высокий уровень абстракции, чем тот язык, на основе которого она построена.

  7. Современные компьютеры представляют из себя многоуровневую организацию архитектур Обычно уровней от 2 до 6: 0 – цифровой-логический уровень аппаратное обеспечение 1 – микроархитектурный уровень интерпретация (микропрограмма) или непосредственное выполнение 2 – уровень архитектуры системы команд трансляция (ассемблер) 3 – уровень операционной системы трансляция (ассемблер) 4 – уровень языка ассемблера трансляция (ассемблер) 5 – язык высокого уровня трансляция (компилятор)

  8. История развития многоуровневых машин Аппаратное обеспечение – это всего лишь окаменевшее программное обеспечение К.П. Ленц 40-е годы – только 2 уровня: уровень архитектуры набора команд, на котором осуществляется программирование, и цифровой логический уровень 1951 М.Уилкс выдвинул идею трехуровневого компьютера. К 70 годам эта идея стала преобладающей. 60-е годы – создание первых операционных систем. Конец 70-х и наши дни – частичное устранение микропрограммирования

  9. История развития компьютерной техники • Механические компьютеры (1642 – 1945) • 1642 год Б. Паскаль создал первую счетную машину (операции + -)

  10. 1672 год Г.В. Лейбниц построил более совершенную машину (+ - * /) • 1822 год Ч. Бэббидж разработал разностную машину (+ - и метод конечных разностей). Позднее в 1834 году он же разработал аналитическую машину, заложив основные идеи современных компьютеров

  11. 1936 год К.Зус счетные машины на основе электромагнитных реле • 1944 год Г. Айкен – Марк 1 • Электронные лампы (1945 – 1955) • 1943 год английский компьютер COLOSSUS

  12. 1946 год американский ENIAC • 1952 год IAS Фон-Неймана. Этот проект заложил основу архитектуры современных компьютеров • Транзисторы (1955 – 1965) Наиболее известные: PDP-1, PDP-8, Cray-1 • Интегральные схемы (1965 – 1980) Наиболее известные: IBM System 360 • Сверхбольшие интегральные схемы

  13. Закон Мура Число транзисторов на одной микросхеме удваивается каждые 18 месяцев

  14. Основные компоненты компьютера: микропроцессор Центральный процессор Блок управления АЛУ Устройства ввода-вывода Основная память Диск Принтер Регистры Шина

  15. Процессоры Устройство центрального процессора Задачи процессора:вызов команд, определение их типа и выполнение. Основные компоненты: устройство управления, регистры и АЛУ, соединенные внутренними шинами. Команды можно поделить на два типа: регистр – память и регистр – регистр.

  16. Цикл выполнения команды: A 1) вызов след. команды из памяти и перенос ее в регистр команд; 2) изменение значения счетчика команд (теперь он указывает на след. команду); 3) определение типа вызван. команды; 4) если команда использует слово из памяти, то определение его положения; 5) перенос слова, если нужно, в регистр; 6) выполнение команды; 7) к шагу 1. B Регистры A + B ВходнойрегистрАЛУ A B Входная шина АЛУ АЛУ Под циклом тракта данных обычно подразумевают выполнение одной команды типа регистр – регистр, когда значения из банка регистров загружаются на входные шины АЛУ. Затем над ними выполняется какая-либо арифметическая или логическая операция. И в конце полученный результат записывается назад в один из регистров. Выходной регистр АЛУ A + B Тракт данных в обычной фон-неймановской машине

  17. Микропрограммирование“простые” и “сложные” команды Чем же микропрограммирование отличается от простого программирования в терминах машинного кода? Возьмем простую команду ассемблера add. Выполнение любой команды подразумевает прохождение трех стадий – выборка, дешифровка и собственно выполнение. Команда add имеет различное число форматов, например: Команда Код Сред. время (такты) add ax, 2 05 02 2 add eax, [ebx] 03 ModRM 7 add al, bl 02 ModRM 2 Второй из предложенных вариантов команды будет выполняться целых семь тактов. Это связано с тем, что второй операнд команды лежит в памяти. Для ее выполнения надо сначала передать порту работы с памятью адрес нужной ячейки. Затем дождаться считывания значения. После передать его в один из регистров. И только затем начать выполнение как обычно.

  18. Таким образом под микропрограммированием мы будем подразумевать управление трактом данных. Каждая микроинструкция – это указание, что должен сделать тракт данных на его следующем цикле. Для чего это нужно? Вернемся к команде add.

  19. Возьмем два ее варианта: add eax, ebx add bl, [ecx] Второй вариант можно отбросить, предложив пользователю использовать вместо него следующий набор команд: mov al, bl cbw cwde mov ebx, eax mov al, [ecx] cbw cwde add eax, ebx mov bl, al

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

  21. RISC и CISC В 70-е годы оба этих подхода получили воплощение в жизнь. Архитектура с минимальным набором простейших команд получила название RISC (Reduced Instruction Set Computer), а архитектура с большим набором сложных интерпретируемых команд – CISC (Complex Instruction Set Computer). Наиболее известные представители: RISC – Alpha, VAX, Sparc CISC – линейка x86 Хотя надо сделать маленькое отступление и сказать, что начиная с 486-го, процессоры фирмы Intel содержать ядро RISC, которое быстро выполняет простые команды, а сложные выполняются как обычно долго.

  22. Особенности RISC и CISC RISC: • Отделение команд обработки от команд работы с памятью • Каждая команда выполняется небольшое кол-во времени (предпочтительно один такт) • Большое число регистров (32 или более) • Трехадресный формат команд • Маленькое число форматов команд и способов адресации

  23. Особенности RISC и CISC CISC: • Маленькое число регистров (8 – 16) • Большое кол-во команд, в том числе сложных, выполняющихся за большое число тактов • Двухадресный формат команд • Большое число способов адресации и форматов команд • Наличие команд обработки типа регистр-память

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

  25. Параллелизм Параллелизм на уровне команд Параллелизм на уровне командосуществляется за счет выполнения сразу нескольких команд (или их частей) на одном процессоре одновременно

  26. Конвейеры Основная проблема высокой скорости выполнения команд – их вызов из памяти! Архитектура с буфером выборки с упреждением В систему добавляют специальный набор регистров – буфер упреждения, в который команды вызывались из памяти заранее, до того как они будут нужны. Когда какая-либо команда становилась нужной, то она вызывалась не непосредственно из памяти, а из буфера. Основная идея – разделение команды на два этапа: выборка и выполнение.

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

  28. С1 С2 С3 С4 С5 Блок выборки команд Блок декодирования Блок выборки операндов Блок выполнения команд Блок возврата

  29. Каков выигрыш? Пусть каждая стадия занимает dt нс, а конвейер содержит k стадий. Тогда время выполнения на простом компьютере будет: T1 = dt * k * n, где n – кол-во команд. На компьютере с конвейером мы получим другую формулу: T2 = dt * n + l, где l – время загрузки конвейера. При постоянной работе процессора n  . Тогда перейдя к пределу мы получаем прирост производительности равный k. Но это идеальная модель!

  30. Проблемы • Почти никогда не бывает, чтобы время выполнения каждой ступени конвейера было одинаковым. Зато частота синхронизации конвейера – единица постоянная. Отсюда следствие время выполнения любой из ступеней конвейера становится равным времени выполнения самой длительной из них. Таким образом, конвейер не только не увеличивает время выполнения одной инструкции, а даже уменьшает его. Кроме того, так как каждая ступень конвейера является отдельной аппаратной единицей, то возникает необходимость хранить промежуточный результат. Для этого используют так называемые регистровые станции, что, в свою очередь, замедляет выполнение одной инструкции на 5 – 10%. Вывод: конвейер хорош только при его постоянной загруженности!

  31. Проблемы • Конфликты • Структурные конфликты – невозможно выполнение команд из-за неразделяемости ресурсов. Например: оперативная память предоставляет только один порт ввода-вывода. Но на стадиях С1 и C3 требуется обращение к ОП. Возникает конфликт. Одной из команд придется выждать один цикл синхронизации. • Конфликты по данным – результат работы одной команды нужен для работы другой. • Конфликты управления.

More Related