Лекция 1

Цель данного курса - рассказать об архитектуре компьютера на примере чего-то более простого и понятного, чем x86.

Архитектура процессоров MIPS: - уже немного стала устаревать - будем говорить про MIPS32 - система команд не вызывает затруднений в понимании - на примере данной архитектуры удобно рассказывать о языках ассемблера вообще.

Короче, цель курса - пересказать курс "Архитектуры ЭВМ" без лишних деталей.

К сожалению, придётся выкинуть некоторые части программы из-за нехватки времени; но посмотрим.

Вспомним материал первого семестра первого года обучения.

Что требуется от формального алгоритмически полного вычислителя?

Данные - то, что мы будем обрабатывать Операции - то, как мы будем преобразовывать данные

1. Данные и операции должны как-то храниться в самом вычислителе с возможностью адресации 2. Существует порядок применения операций 3. Data-driven execution (calculation) - выполнение операций, определяемое свойствами данных 3.а 1 или 0 раз 3.б итеративное выполнение Строго говоря, пункты 3а и 3б можно заменить одним пунктом 3б

В архитектуре фон Неймана: 1. двоичное кодирование 2. память для хранения и команд, и данных 3. однородная, линейная, адресуемая память 4. последовательное выполнение команд 5. условный переход (для организации data-driven execution) 6. ввод-вывод данных

Ссылка на ячейку памяти - просто номер этой ячейки

Сам фон Нейман, кстати, эти принципы никогда в такой форме не формулировал.

Архитектура фон Неймана - очевидно, лишь очень частный вариант алгоритмически полного вычислителя. И, разумеется, не единственный возможный.

Многие из принципов фон Неймана диктовались просто элементной базой того времени.

Самое эффективное кодирование - e-ичное

С этой точки зрения троичная система эффективнее

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

Общий принцип развития ЭВМ: 1. появляется задача 2. находятся 1-2 частных решения этой задачи 3. эти решения канонизируются и застывают надолго (legacy)

регистры - просто для ускорения, что не имеет никакого отношения к теоретической вычислимости

память - быстрая и дорогая или медленная и дешёвая

когда мы работаем с ЭВМ, мы хотим, чтобы наши вычисления были быстрыми и дешёвыми, приходится выбирать

быстрая память - хранение - регистры медленная память - обработка - ОЗУ

двухместные операнды - чтобы уменьшить размер команд

В архитектуре MIPS флаги не нужны, потому что в ней нет двухадресных команд

Зачем нужен язык ассемблера? 1. мнемоничность команд (проще понять и запомнить, что происходит) 2. ссылки на объекты становятся символическими - при изменении кода не "едет" адресация везде ниже по коду 3. удобное представление данных 4. Однозначность порождаемого кода

Некоторое время, пока мы не придумаем, как использовать реальный Байкал-Т, мы будем использовать для домашних заданий эмулятор MARS.

Подробнее об особенностях эмулятора см. [[| этот кусочек лекции]].

Начнём, раз осталось время, разговор про MIPS.

MIPS - одна из реализаций архитектуры RISC.

Сначала развитие вычислительной техники шло в сторону усложнения (примерно до 80-ых? пример - строковые команды ассемблера), после чего появился тренд на использование лишь простых, понятных команд, которые можно посчитать и время выполнения которых достоверно небольшое.

Так и появилась архитектура RISC

Как обеспечивать эффективность, если все команды очень маленькие?

Каждая команда состоит из нескольких частей, которые, вообще говоря, можно выполнять параллельно.

Отсюда - идея конвейеризации + RISC-набора команд

LecturesCMC/ArchitectureAssembler2019/01_ArchitectureIntro/conspect (последним исправлял пользователь RomanKrivonogov 2019-02-15 19:29:38)