Реклама:

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

1. Сокращение количества циклов, необходимых для выполнения команды.

2. Упрощение организации машины таким образом, чтобы можно было сделать цикл короче.

3. Одновременное выполнение нескольких операций.

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

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

Для сокращения числа циклов, необходимых для вызова команды, требуется нечто большее, чем простое добавление схемы, которая увеличивает РС на 1. Чтобы повысить скорость вызова команды, нужно применить третий подход - параллельное выполнение команд. Весьма эффективно отделение схем для вызова команд (8-разрядного порта памяти и регистров РС и МВ11), если этот блок сделать функционально независимым от основного тракта данных. Таким образом, он может сам вызывать следующий код операции или операнд. Возможно, он даже будет работать асинхронно относительно другой части процессора и вызывать одну или несколько команд заранее.

Один из наиболее трудоемких процессов при выполнении команд - вызов 2-байтного смещения и сохранение его в регистре Н для подготовки к сложению (например, при переходе к РС ± п байт). Одно из возможных решений - увеличить порт памяти до 16 бит, но это значительно усложнит операцию, поскольку требуемые 16 бит могут перекрывать границы слова, тогда даже считывание из памяти 32 бит за одно обращение не обязательно приведет к вызову обоих нужных нам байтов.

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

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

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

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

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

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

Разработка уровня микроархитектуры || Оглавление || Сокращение длины пути