Э. Таненбаум - Архитектура компьютера (1127755), страница 19
Текст из файла (страница 19)
Интерпретаторы обеспечивали реализацию сложных команд без использования дорогостоящей аппаратуры, поэтому разработчики могли вводить все более и более сложные команды, а также (и даже в особенности) расширять способы определения операндов. Эта тенденция достигла своего апогея в компьютере тгАХ, разработанном компанией ПЕС; у него было несколько сот команд и более 200 способов определения операндов в каждой команде.
К несчастью, архитектура ЧАХ с самого начала разрабатывалась с ориентацией на интерпретатор, а производительности уделялось мало внимания. Это привело к появлению большого количества команд второстепенного значения, которые сложно было реализовать непосредственно. Данное упущение стало фатальным как для Ъ'АХ, так и для его производителя (компании ПЕС). Компания Сошрац купила 1)ЕС в 1998 году (правда, тремя годами позже сама компания Сошраг1 вошла в структуру НеМегг-раскагд). Хотя самые первые 8-рззрядные микропроцессоры были очень простыми и поддерживали небольшой набор команд, к концу 70-х годов даже они стали разрабатываться с ориентацией на интерпретаторы.
В этот период основной проблемой для разработчиков стала возрастающая сложность микропроцессоров. Процессоры 75 Главное преимущество интерпретации заключалось в том, что можно было разработать очень простой процессор, а все самое сложное реализовать с помогцью интерпретатора. Таким образом, вместо разработки сложной аппаратуры требовалась разработка сложного программного обеспечения. Успех системы Могого1а 68000 с большим набором интерпретируемых команд и одновременный провал компьютера Ыой 28000, у которого был столь же обширный набор команд, но не было интерпретатора, продемонстрировали все преимущества интерпретации при разработке новых машин. Этот успех был довольно неожиданнь1м, учитывая, что компьютер 280 (предшественник Ыой 28000) пользовался большей популярностью, чем Мосого1а 6800 (предшественник Мосого1а 68000). Конечно, важную роль здесь играли и другие факторы, например то, что компания МоСого!а много лет занималась производством микросхем, а торговая марка Ыой принадлежала Еххоп — крупной нефтяной компании.
Еще один фактор в пользу интерпретации — существование быстродействующих постоянных запоминающих устройств для хранения интерпретаторов (так называемых командных ПЗУ). Предположим, что для выполнения обычной интерпретируемой команды интерпретатору компьютера Могого1а 68000 нужно выполнить 10 команд (они называются микрокомандами), по 100 нс на каждую, и произвести 2 обращения к оперативной памяти, по 500 нс на каждое. Общее время выполнения команды составит, следовательно, 2000 нс, всего лишь в два раза больше, чем в лучшем случае могло бы занять непосредственное выполнение этой команды без интерпретации.
А если бы не было специального быстродействующего постоянного запоминающего устройства, выполнение этой команды заняло бы целых 6000 нс. Таким образом, значимость командных ПЗУ очевидна. Системы й!ЗС и С!ЗС В конце 70-х годов проводилось много экспериментов с очень сложными командами, появление которых стало возможным благодаря интерпретации. Разработчики пытались уменьшить разрыв между тем, что компьютеры способны делать, и тем, что требуют языки высокого уровня. Едва ли кто-нибудь тогда думал о разработке более простых машин, так же как сейчас мало кто (к несчастью) занимается разработкой менее мощных операционных систем, сетей, редакторов и т.
д. В компании 1ВМ этой тенденции противостояла группа разработчиков во главе с Джоном Коком () опп Соске); они попытались воплотить идеи Сеймура Крея, создав экспериментальный высокоэффективный мини-компьютер 801. Хотя компания 1ВМ не занималась сбытом этой машины, а результаты эксперимента были опубликованы только через несколько лет [1701, весть быстро разнеслась по свету, и другие производители тоже занялись разработкой подобных архитектур. В 1980 году группа разработчиков в университете Беркли во главе с Дэвидом Паттерсоном (Г)ачЫ Рагсегзоп) и Карло Секвином (Саг1о 8ецц1п) начала разработку не ориентированных на интерпретацию процессоров Ъ'Е81 [161, 1641.
Для обозначения этого понятия они придумали термин К1ЯС, а новый процессор 76 Глава 2. Организация компьютерных систем назвали К15С 1, вслед за которым вскоре был выпущен К18С П. Немного позже, в 1981 году, Джон Хеннеси Цо!гп Неппезу) в Стенфорде разработал и выпустил другую микросхему, которую он назвал М1РЯ (91!. Эти две микросхемы развились в коммерчески важные продукты 8РАКС и М1РБ соответственно. Новые процессоры существенно отличались от коммерческих процессоров того времени.
Поскольку они были несовместимы с существующей продукцией, разработчики вправе были включать туда новые наборы команд, которые могли бы повысить общую производительность системы. Первоначально основное внимание уделялось простым командам, которые могли быстро выполняться. Однако вскоре разработчики осознали, что ключом к высокой производительности компьютера является разработка команд, которые можно быстро запускать. То есть не так важно, как долго выполняется та или иная команда, важнее то, сколько команд в секунду может быть запущено. В то время, когда разрабатывались эти простые процессоры, всеобщее внимание привлекало относительно небольшое количество команд (обычно около 50).
Для сравнения; число команд в компьютерах ЧАХ производства 1)ЕС и больших компьютерах производства 1ВМ в то время составляло от 200 до 300. Компьютер К18С (Кег1псег! 1пзггпсг!оп Бег Сошрпгег — компьютер с сокращенным набором команд) противопоставлялся системе С1ЯС (Сошр1ех 1пзггпсйоп 8ег Сотригег — компьютер с полным набором команд). В качестве примера машины типа С15С можно привести компьютер Ъ'АХ, который доминировал в то время в университетской среде.
На сегодняшний день мало кто считает, что главное отличие К15С и С1ЯС состоит в количестве команд, но названия сохраняются до сих пор. С этого момента началась грандиозная идеологическая война между сторонниками К18С и разработчиками УАХ, !псе! и мэйнфреймов 1ВМ. По мнению первых, ггаилучший способ разработки компьютеров — включение туда небольшого количества простых команд, каждая из которых выполняется за один цикл тракта данных (см.
рис. 2.2), то есть производит над парой регистров какую-либо арифметическую или логическую операцию (например, сложение или операцию логического И) и помещает результат обратно в регистр. В качестве аргумента они утверждали, что, даже если системе К1ЯС приходится выполнять 4 или 5 команд вместо одной, которую выполняет С18С, К15С все равно выигрывает в скорости, так как К18С-команды выполняются в 1О раз быстрее (поскольку они не интерпретируются).
Следует также отметить, что к этому времени быстродействие основной памяти приблизилось к быстродействию специальных командных ПЗУ, поэтому недостатки интерпретации были налицо, что егце более поднимало популярность компьютеров К15С. Учитывая преимущества К1ЯС в плане производительности, можно было предположить, что на рынке такие компьютеры, как А! р!га компании 1)ЕС, должны доминировать над компьютерами С1ЯС (Реп1!пш и т. д.). Однако ничего подобного не произошло.
Возникает вопрос почему? Во-первых, компьютеры К1ЯС несовместимы с другими моделями, а многие компании вложили миллиарды долларов в программное обеспечение для продукции 1пге!. Во-вторых, как ни странно, компания 1пге! сумела воплотить те же идеи в архитектуре С1БС. Процессоры 1пге1, начиная с процессора 486, содержат Процессоры 17 В15С-ядро, которое выполняет самые простые (и обычно самые распространенные) команды за один цикл тракта данных, а по обычной технологии С15С интерпретируются более сложные команды.
В результате обычные команды выполняются быстро, а более сложные и редкие — медленно. Хотя при таком «гибридном» подходе производительность ниже, чем в архитектуре К1ЯС, новая архитектура С1ЯС имеет ряд преимуществ, поскольку позволяет использовать старое программное обеспечение без изменений. Принципы разработки современных компьютеров Прошло уже более двадцати лет с тех пор, как были сконструированы первые компьютеры 21ЯС, однако некоторые принципы их функционирования можно перенять, учитывая современное состояние технологии разработки аппаратного обеспечения. Если происходит очень резкое изменение в технологии (например, новый процесс производства делает время обра|цения к памяти в 10 раз меньше, чем время обращения к центральному процессору), меняются все условия.
Поэтому разработчики всегда должны учитывать возможные технологические изменения, которые могли бы повлиять на баланс между компонентами компьютера. Существует ряд принципов разработки, иногда называемых принципами К1ЯС, которым по возможности стараются следовать производители универсальных процессоров. Из-за некоторых внешних ограничений, например требования совместимости с другими машинами, приходится время от времени идти на компромисс, но эти принципы — цель, к которой стремятся большинство разработчиков. + Все команды должны выполняться непосредственно аппаратным обеспечением.
То есть обычные команды не интерпретируются микрокомандами. Устранение уровня интерпретации повышает скорость выполнения большинства команд. В компьютерах типа С1ЯС более сложные команды могут разбиваться на несколько шагов, которые затем выполняются как последовательность микрокоманд. Эта дополнительная операция снижает быстродействие машины, но может использоваться для редко применяемых команд. + Компьютер должен запускать кок можно больше команд в секунду. В современных компьютерах используется много различных способов повышения производительности, главный из которых — запуск как можно большего количества команд в секунду.
Процессор 500-М1РЯ способен запускать 500 млн команд в секунду, и при этом не имеет значения, сколько времени занимает выполнение этих команд. (М1РБ — это сокращение от М111юпз о1 1пзггпсг1опз Рег Яесопд — миллионы команд в секунду.) Этот принцип предполагает, что параллелизм должен играть главную роль в повышении производительности, поскольку запустить на выполнение большое количество команд за короткий промежуток времени можно только в том случае, если есть возможность одновременного выполнения нескольких команд. 78 Глава 2. Организация компьютерных систем Хотя команды любой программы всегда располагаются в памяти в определенном порядке, компьютер способен изменить порядок их запуска (так как необходимые ресурсы памяти могут быть заняты) и (или) завершения.
Конечно, если команда 1 устанавливает значение в регистр, а команда 2 использует этот регистр, нужно действовать с особой осторожностью, чтобы команда 2 не считала значение из регистра раньше, чем оно там окажется. Чтобы не допускать подобных ошибок, необходимо хранить в памяти большое количество дополнительной информации, но благодаря возможности выполнять несколько команд одновременно производительность все равно оказывается выше. + Команды должны легко декодироваться. Предел количества запускаемых в секунду команд зависит от темпа декодирования отдельных команд.