Повышение производительности компьютерных системРефераты >> Программирование и компьютеры >> Повышение производительности компьютерных систем
Так же невозможно уменьшение до бесконечности напряжения питания. Во всяком случае, оно должно превышать фоновый "шум", вызванный случайными перескоками электронов, космическим излучением и электромагнитными наводками.
Менее проблематичным выглядит увеличение слоев металлизации. Технически это нетрудно, но вот экономически - неоправданно. Вероятность брака растет экспоненциально. Именно этим (высоким процентом брака) в первую очередь и объясняется значительная стоимость процессора Pentium Pro.
Это был тупик. Тупик, в который попали и CISC, и RISC. Ни одна из них не была приспособлена для параллельных вычислений, а суперскалярные архитектуры уже не обеспечивали должной производительности.
Архитектура VLIW была известна и ранее, хотя процессоры на ее основе были мало распространены. Наиболее известные модели были выпущены ныне уже не существующей фирмой Multiflow Computer. [6] В нашей стране по сходной архитектуре был построен суперкомпьютер "Эльбрус-3".
Из микропроцессоров, построенных по VLIW-архитектуре, можно назвать только семейство сигнальных чипов TMS320C6x фирмы Texas Instruments. Эта архитектура не стала бы знаменитой, если бы именно на нее не обратили внимание компании HP и Intel при разработке микропроцессора нового поколения Merced. Поэтому есть смысл рассмотреть ее подробнее.
Основной идеей VLIW был явный параллелизм, задаваемый на уровне команд. То есть в каждой команде имелось поле, в котором указывалась связь между инструкциями. Как правило, три команды объединялись в одно слово, в котором были возможны следующие варианты исполнения:
- все три команды выполняются параллельно;
- сначала выполняются первые две команды, потом третья;
- выполняется одна команда, а затем параллельно последующие две.
Изюминка в том, что сами слова можно было упаковывать по три (или более - это зависело только от конкретной реализации), и поскольку явно указана зависимость между командами, возможно неограниченно наращивать число параллельно выполняемых инструкций. Причем код мог без перекомпиляции эффективно работать на совместимых процессорах с разным числом исполняющих устройств. Хотя обычно ограничивались девятью. То есть три слова по три команды в каждом исполнялись за один такт.
Неплохой результат, верно? Особенно если вспомнить, что RISC были способны выполнить не более четырех команд, а CISC - и вовсе двух, тогда как для VLIW девять (или 16 = 4 по 4) инструкций не предел. Более того: если суперскалярные архитектуры только некоторые - удачные - команды исполняли параллельно, то VLIW - в большинстве случаев. Поэтому производительность может повышаться в десятки раз при незначительном аппаратном усложнении конструкции.
В чем же тогда камень преткновения? Почему архитектура так и не вышла из стен лабораторий и процессоров суперкомпьютеров, если технически она была достижима еще вчера?
Вся сложность в компиляторах. Точнее - в распараллеливании инструкций. Чтобы параллельно исполнять девять и более команд, необходимо расположить их так, чтобы не было явной зависимости. Теперь процессор не будет нам ни в чем помогать. Он будет лишь буква в букву следовать распоряжениям компилятора.
Сложность разработки качественных компиляторов значительно превышает сложность разработки самих процессоров. Кроме того, до сих пор нет ни одного массового языка, ориентированного на параллельные вычисления. Следовательно, если откинуть мысль о разработке нового языка как нереальную, придется по крайней мере вносить новшества в существующие языки.
Впрочем, у фирмы Texas Instruments имеется достойный компилятор, который разрабатывался очень длительное время и в настоящий момент близок если не к совершенству, то по крайней мере к товарному состоянию. Однако хороший результат можно получить только при тесном взаимодействии компилятора и программиста, в противном случае производительность сгенерированного кода будет незначительно превосходить традиционную суперскалярную. Это и есть камень преткновения на пути к широкому и быстрому внедрению VLIW-процессоров.
Merced будет выполнен по VLIW-архитектуре в духе RISC-машин. Но вспомним, что RISC - это идеализированная архитектура. И поэтому заимствуется не она сама, а лишь часть характерных для нее технологий.
Это прежде всего простая адресация и фиксированный размер операндов. Только так можно обеспечить высокоскоростную выборку инструкций для параллельного их исполнения. А компактность кода сегодня уже мало кого волнует. Ведь даже размер кэша первого уровня в некоторых моделях доходит до полутора мегабайт. Это больше, чем когда-то - оперативной памяти!
Другой характерной для RISC чертой будет разделение инструкций по категориям: чтения/записи в память и вычислительных операций. Это облегчит распараллеливание вычислений. Разумеется, и набор регистров обещает быть солидным. В том же Merced одних только целочисленных регистров планируется 128!
Но, несомненно, есть и типичные CISC-черты: прежде всего, набор команд. Аппаратная сложность процессора уже не преграда, поэтому команд он будет поддерживать столько, на сколько у разработчиков хватит фантазии. Не обойдут стороной и векторные операции, и богатый набор специализированных инструкций наподобие ряда Фурье и других.
Впрочем, все же новая архитектура больше наследует от RISC, чем от CISC. И реализуется на базе современных RISC-микропроцессоров. Однако Intel не была бы сама собой, если бы отказалась от совместимости с серией процессоров 80x86.
Таким образом, современная реализация VLIW-архитектуры наследует концепции и RISC, и CISC.
Список литературы.
1. http://www.intel.ru/contents/press/index.htm.
2. http://www.intel.com/th/thai/channel/report/page5.htm
3. Еженедельник «Компьютерра» (1998-1999)