Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » А.Н. Томилин - Вычислительные системы (2006)

А.Н. Томилин - Вычислительные системы (2006), страница 7

Описание файла

PDF-файл из архива "А.Н. Томилин - Вычислительные системы (2006)", который расположен в категории "лекции и семинары". Всё это находится в предмете "вычислительные системы" из седьмого семестра, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 7 страницы из PDF

И когда возникает код операции передачи управления, этот адрес сравнивается со всемиадресами в БАС — работает полностью ассоциативный cache. Если совпал, то тогда мы назначаем взятие отсюда. Время работы регистров во всех наших рассуждениях будем условносчитать равным нулю по сравнению со временем работы памяти. Т.е. если у вас цикл в пределах 8-ми команд, вам никогда не будет нужно обращаться в память.Моделирование показало, что на задачах линейной алгебры выигрыш получается 1012% производительности по времени выполнения задач — это огромный выигрыш. МашинаБЭСМ выполняла миллион операций в секунду в то время, когда предыдущие машины былипорядка 100 тысяч операций в секунду, так это целая машина.Т.е.

возник кэш команд. Слова такого и не знали, так что их не было, но, как видите,сделали.Между прочим у Лебедева в докладе «Пути развития советского математического машиностроения» он рассказывал про машину БЭСМ (БЭСМ-1 не называл, просто — БЭСМ),он тогда и эти вещи, и параллелизм, т.е. идеи машин 2-го поколения и 3-го, в этом докладеанонсировал.Итак, всё вроде бы хорошо, циклы мы держим в БРС, не умещается, ну... Конечно, хорошо бы в этом случае иметь больше, указатель на более объёмное оборудование — нуженкомпромисс.Очень интересный был момент: перед БЭСМ-6 практически в том же году была закончена работа над машиной «Весна». Главный конструктор — Владимир Константинович Левин, академик. Машина делалась в Минске. Систему команд делали так: ИПМ-овские «мудрецы», естественно прекрасные математики, говорят: «хорошо бы вот такую операцию ещё»— инженеры говорят: «будет сделано» — «а хорошо бы сделать вот таких операций» (дляшифровки/дешифровки) — инженеры говорят: «будет сделано».

И когда машина была сделана, в Минск приехали математики из ИПМ — огромный зал… множество стоек… — чтоэто такое? Понимаете, должен быть разумный компромисс между аппаратурой и логическойкомпонентой вычислительных машин (набором системы команд, программами и т.д.).Итак, вот этих буферов хватает, если не делать запись результатов. Команды в случаециклов сидят в БРС, выборка операндов происходит даже раньше, чем приходит команда,АЛУ работает 80%.

А почему? Знаменитая проблема: условный переход.17условный переходВот идёт последовательность команд, а дальше команда условного перехода: либо сюда, либо туда, в зависимости от условия, например, положительным или отрицательным является результат предшествующей операции, пусто/не пусто после операции, положительный или отрицательный порядок, разные условия могут быть для выполнения этой проверяющей операции. Но команда предшествующая должна выполниться. И наша операция условного перехода, проходя здесь, не даёт возможности следующей операции поместить вБРС. Вот почему во многих машинах делается так: как только УУ поймало команду условного перехода, сразу начинают выбираться обе последовательности команд, чтобы они былиготовы. Какая-то не понадобится, ну и чёрт с ней, зато готовая будет команда.

В БЭСМ-6 такой роскоши не было, поэтому АЛУ сколько-то да простаивало. Вот это основной вклад вэти 20% простоя АЛУ.Были и другие вещи, связанные с этим. Тогда, конечно, никто не говорил слова CISC(completed instruction set command). Вот когда сделали RISC (reduce instruction set command),тогда сказали: «А это что у нас было? Ах, CISC было…», тогда появилось это, а до этого неговорили.

Вот в этом полном наборе операций существовали команды косвенной адресации,да ещё и многоярусные. Что это означает? Вот у вас есть операции:ИР2косвеннаяадресацияА2ИР1КОПА1Что делается? Адрес искался следующим образом: находился исполнительный адреспервой команды, фактически указывался адрес ячейки, из этой ячейки бралось 15 младшихразрядов, и складывались так:ИР 2 + A 2 + ИР1 + A1Т.е. у вас адрес был не прямой, а адрес получился косвенный. Вы указали адрес ячейки,в которой находится адрес вашего операнда. Сами понимаете, что можно использовать как«дом, который построил Джек»: адрес ячейки, в которой адрес ячейки, в которой адрес ячейки в которой находится операнд.

Трансляторщики схватились за это урча и просто в восхищении, и программы запестрили вот этими командами. Больше того, транслятор в своей работе стал их использовать, оттранслированный код стал появляться с такими операциями. Ачто происходит: прежде чем получить ИР 2 + A 2 , её же надо считать из памяти (15 разрядов), значит нужно здесь задержать.

А для этого нужно время. И вот вам второй компонентэтих 20%.Самое страшное: что делать с записью результата. Давайте запишем: «запись в ячейкуα и считывание из ячейки α»:Зп αСч αМожно так написать? Можно. Так или иначе, есть команда, которая сейчас будет записывать в ячейку α, а сразу за ней пошла команда, которая считывает из α, а так как считывание операнда из памяти происходит раньше попадания команды в АЛУ, то вторая командаполучит старое значение. И вся наша параллельность к чертям из-за одной команды записи.Что же нужно делать?18комА нужно делать вот что: результат будет записываться в некий буфер, реально вБЭСМ-6 было 8 ячеек (см. Рис. 1). Они были названы буфер записанных результатов (БРЗ)и к тому же был здесь буфер адресов записанных результатов (БАЗ).

И это получился второй кэш полностью ассоциативный.Так вот, очень просто. Когда приходила команда записи, для неё всегда была одна свободная позиция. Так делалось, потому что самая старая выкидывалась в память. И тогдаАИСП, вообще говоря, сравнивался со всеми адресами в БАЗ, потому что, может быть, ужетолько что недавно записывали. Если нет, то всегда идёт в БРЗ, там всегда есть свободнаяпозиция. Как только команда попадала в УУ, то в БАК помещался соответствующий номерБРЗ. Итак, в БАК попадали КОП и номер БРЧ или БРЗ. Да, можно было сделать его общим идля чтения и для записи, но было сделано так.

Когда мы придём к теме кэша, мы этот вопросещё подымем. Моделирование показало, что при такой организации выигрыш приличный(до 30%).ОПдыан071БАСреБРСтатльзуСчАдрРКИРСмАУУБРЧРРБРЗ-15-БАЗБАКАЛУзаписьРис. 1 Структурная схема БЭСМ-6БАCБАЗБАКБРЗБРЧРКРРСмАСчАдрбуферные регистры адресов словбуфер адресов записанных результатовбуфер арифметических командбуфер записанных результатовбуферный регистр чиселрегистр командрегистр результатасумматор адресасчётчик адресаВот, собственно говоря, это всё, кроме одного: как же определяется старшинство? Оноопределяется очень интересно. Рисуем игровую таблицу:1912341 2 3 4110 001Допустим, что пишется в 3-й регистр.

Тогда он делается самым молодым (по горизонтали ставим «0»). Против него (по вертикали) ставим «1». Кто набирает все «1» (в строке),тот выкидывается. И при этом это обмоложение происходит при любом совпадении, будь топо записи (если не нашло, то свободная становится самой молодой), по считыванию (пришлосчитывание, и тот регистр, из которого будут браться данные для операции, когда она подойдёт, делается самым молодым — раз данные нужны, значит, скорее всего, понадобятсяещё).Таким образом, у нас полностью завершена структурная схема машины, и всё в ней работает, обеспечивая максимальную загрузку АЛУ. Как сами понимаете, при формульномсчёте мы тоже не лезем за операндами в память (берём из БРЗ). За счёт устройств промежуточного хранения информации активных и неактивных удалось организовать параллельнуюработу основных устройств: оперативной памяти, устройства управления и арифметикологического устройства (в первую очередь для обеспечения полной загрузки).Вы знаете, дело в том, что приходили сведения, что вот Motorola сделала процессор такой-то.

Господи, почему же они так сделали? (как бы становясь в позицию игры Бендера свасюкинцами: «Что мне делать?» — «Сдавайся…»). На самом деле всё очень просто: они вчём-то ошиблись, и им надо было переделать всё. Переделать — это значит задержать повремени выпуск процессора, выпуск машины и т.д. Они сделали заплату.

И вот этот весь такой … самое совершенное, что только можно придумать! А оказывается, что это не совершенное, это просто вынужденная заплата, и вовсе антисовершенное решение. А здесь всёчётко предельно ясно. Когда появилась машина Cray (другой уровень параллелизма, а именно уровень параллелизма исполнения самих операций), Лев Николаевич сказал: «Батюшки!Да это ж БЭСМ-6!» Конечно, ничего похожего нет, но ясность и чёткость структуры позволили ему это сказать. Вот смотрите, что мы здесь имеем? Здесь имеем, конечно, ярко выраженный конвейер команд, который Сергей Алексеевич называл «водопроводом»: где-то задержка, другое не течёт, когда клапан открыли, кранчик открыли, всё потекло дальше.

Этоназывается «конвейер» или «магистраль» для команд. Вот смотрите: одна команда выполняется, четыре стоят в очереди, это здесь обрабатывается, здесь какие-то выбираются. Реализован полностью довольно активно конвейер команд. Это выполнение команд на разных стадиях: эта здесь, эта здесь, эта вот здесь. Ну а конвейер внутри операции (параллелизм операций) мы рассмотрим позднее (это машина Cray).Был задан вопрос относительно этих самых злосчастных условных переходов.

Об этом,правда, уже говорилось, что выбираются из памяти оба потока команд: и те, которые идутпосле условного перехода, и та ветвь, на которую указывает условный переход. Но для этогодействительно нужно анализировать этот условный переход сразу, как только выбираетсякоманда. Помните, мы смотрели как пример машину БЭСМ-6: команды поступают в буфер.Так вот на входе буфера, ещё задолго до того, как она попадёт в устройство управления иначнёт дешифрироваться, и выясниться, что это команда условного перехода, нужно обнаруживать команду условного перехода, т.е. производить предварительную дешифрацию.

Ноэто ведь сложно, потому что ведь нужно знать исполнительный адрес команды, а перед этойкомандой могут быть команды изменения индексных регистров. Вот такой предварительныйдостаточно сложный анализ в современных процессорах действует, по-разному. По разнымпричинам может производиться сложный предварительный анализ, прежде чем запуститькоманду уже в полное исполнение. Так что это очень не простая вещь. Условный переход —это головная боль для разработчиков. Но вопрос был задан на эту тему, так что ещё раз этотмомент подчеркнём.20Теперь, чтобы закончить с параллелизмом основных устройств машины, давайте посмотрим, а какой эффект вносит вот этот структурный параллелизм, который мы рассматривали.Пусть работает некая машина, которая имеет несколько физических параметров, т.е.время работы блоков памяти, время выполнения операций алгоритмов на логическом устройстве, сколько времени работает УУ, но нет никакого параллелизма.2 мксОП: выбор2х командУУ2 мкс1 мксОП: операнддля 1-ойкомндыАЛУУУ2 мкс1 мксОП: операнддля 2-ойкомндыАЛУ= 8,6 мкс2 мкс (такое тогда было время) работал блок памяти.

За это время выбирается однослово, содержащее 2 команды. Затем у нас работает устройство управления, которое работает 0,3 мкс, образуя исполнительный адрес команды, которая требует считывание операндовиз памяти. Затем, когда выяснилось, что нужно считывать операнд (перебираем какойнибудь массив, понятно, что он не поместится в кэш, хотя в этом случае кэша не будет, поскольку нет никаких буферов). Итак, 2 мкс тратится на считывание операнда для первой команды. Затем выполнение операции — работает АЛУ — 1 мкс, поскольку БЭСМ считала1 миллион операций в секунду, что значит 1 MIPS.

Свежие статьи
Популярно сейчас