Prescott: через тернии к звездам

Как известно, нет ничего более постоянного, чем изменения в нашем мире. Этот афоризм справедлив и для компьютерной индустрии. Последняя развивается витками, от одной революции к другой, между которыми поддерживается определенное равновесие. Как правило, крупнейшие производители аппаратного обеспечения стараются, чтобы переходные периоды в их продуктах, предназначенные для разных сегментов рынка, не совпадали. Так на рынке мобильных технологий мы пережили революции в марте прошлого года, а второе полугодие было полностью посвящено анонсам в серверном сегменте. А вот рынок настольных процессоров давно уже не переживал революционных изменений – чуть более двух лет на рынке держится нынешний процессор компании IntelPentium 4, выполненный по архитектуре NetBurst. При этом поддерживался определенный паритет с конкурентом от AMD, который плавно переходил от одного ядра к другому. Эти ядра различались лишь отдельными спецификациями.

Долгое время компания Intel кормила слухами о выходе нового ядра, которое в СМИ уже успели наречь Pentium 5. Долгое время выпуск нового ядра под названием Prescott переносился сначала с осени 2003 года на декабрь, а затем и вовсе на первый квартал 2004 года. Понимая, что ждать более нельзя Intel решилась его выпуск, тем более, что это корпоративной этике компании. Линейка процессоров на ядре Prescott была представлена 2 февраля вместе с последним Pentium 4 на ядре Northwood с частотой 3,40 ГГц и Pentium 4 Extreme Edition с такой же частотой и прежними параметрами. Ну что ж, посмотрим, стал ли новый Prescott революционным?

Новые технологии или «латание дыр»?

Традиционно, каждый принципиально новый процессор ассоциируется с новым техпроцессом. И действительно, все вожделенно ждали появления новых технологических норм 90 нм, которые были обещаны компанией еще в 2003 году. И наконец, Prescott, выполненный по техпроцессу 90 нм появился. Каждый новый техпроцесс предполагает увеличение выгодности производства путем получения большего количества кристаллов с одной пластины, уменьшение размеров кристалла вместе с уменьшением его тепловыделения и, наконец, большие частоты работы самих кристаллов. Только вот с проектной нормой 90 нм ситуация оказалась гораздо сложнее.

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

Во-вторых, из-за маленькой длины затвора сложно управлять параметрами транзистора. С одной стороны это улучшает скоростные показатели транзистора (переключение происходит быстрее), но с другой – увеличивает токи утечки транзистора. Это заставляет поднимать напряжение для управления током через затвор для гарантированного переключения транзистора, что в свою очередь увеличивает тепловыделение. Так вот, технология 90 нм неожиданно привела производителей к большим рабочим температурам кристалла. Это и есть одна из главных причин, по которой выпуск нового Prescott постоянно откладывался.

Спецификации Prescott

Итак, новая линейка Prescott, представленная 2 февраля, состоит из моделей с частотами от 2,80 до 3,40E ГГц. Все модели выпущены с частотой шины 800 МГц и для отличия от аналогичных моделей на ядре Northwood маркируются постфиксом E. Кроме того, модель 2,80 также выпущена с шиной 533 МГц и маркируется как 2,80А. Якобы она выпущена потому, что накопилось большое количество кристаллов, выполненных на шине 533 МГц и их нужно было тоже куда-то деть. Поскольку из-за технических особенностей нового кристалла старшие модели практически не доступны, то в качестве высокочастотной модели пока будет использоваться обычный Northwood с частотой 3,40 ГГц, который был выпущен, чтобы прикрыть тылы топовых моделей. Именно поэтому представленные модели поддерживаются существующими материнскими платами. Все представленные модели имеют разъем Socket 478. Используется традиционный корпус FC-mPGA4, который подразумевает расстояние шаг между контактами в 1,27 мм. На данный момент на рынке циркулируют Prescott’ы с тестовыми степпингами А0, В0, С0. Будущий степпинг C1 уже будет иметь другие параметры по питанию и тепловыделению и потребует другого VRM 11.0. Видимо все модели, начиная с 3600 МГц, будут иметь разъем Socket T (Socket LGA 775), который благодаря большему количеству контактов на обратной стороне и конденсаторов будет обеспечивать необходимый ток. Таким образом, могут возникнуть проблемы только с моделью 3,40Е, которая, имея старый корпус особо требовательна к питанию.

Из-за такой дифференциации старших и младших моделей технологи Intel приняли решение использовать гибкую систему параметров TDP (Thermal Design Power). В ее рамках каждой модели, имеющей свою частоту, соответствует свое напряжение питания, потребляемый ток и выделяемая мощность. В соответствии с этой схемой модели 2,80А/Е и 3Е имеют мощность рассеивания 89 Вт, а 3,20Е и 3,40Е – 103 Вт. При такой мощности температура корпуса кристалла TC достигает 73,5 градусов! При этом диапазон напряжений питания ядра по VID колеблется от 1,250 до 1,400 В. Для каждой конкретной модели напряжение питания ядра VCC высчитывается по следующей формуле: VID-ICC(max)*1.45 mΩ. Соответственно, для этих моделей потребляемый ток ICC колеблется от 78 до 91 А. Естественно это максимальные величины, которые при работе в многих стандартных приложениях не возникают, но все же заставляют хорошенько призадуматься о надежности охлаждения процессора.

Как обеспечиваются такие токи? Для этого используется 85 ножек питания (VCC) и 179 ножек земли (VSS). Таким образом, из 478 контактов 264 используется для обеспечения соответствия кристалла по питанию. Интересно, какие же будут проходить токи через процессор, если он будет иметь 775 выводов, даже учитывая его возможное 64-разрядное расширение?

Таким образом, большая часть изменений вместе с переходом на новый техпроцесс коснулась режимов питания и энергопотребления нового процессора. Prescott содержит 125 млн. транзисторов, при том, что площадь кристалла даже немного уменьшилась и стала 112 мм2. Учитывая, что кэш-память второго уровня объемом 512К содержит около 30 млн. транзисторов, то на что тогда пошли еще 40 млн. транзисторов по сравнению с Northwood, который содержал 55 млн. всего? Похоже там много всевозможных улучшений архитектуры. Косвенно это также наводит на мысли о поддержке 64-битных расширений в процессоре, поддержку технологии аппаратной защиты LaGrande, технологии Vanderpool и шины для связи с кэш-памятью третьего уровня.

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

Помимо технологии напряженного кремния в Prescott используется большое количество нововведений. Среди них – использование семислойной медной металлизации между транзисторами, применение диэлектрика CDO (Carbon Doped Oxide) с низким диэлектрическим коэффициентом вместо прежнего SIOF в межсоединениях. Этот low-k материал уменьшает паразитные емкости между слоями медных соединений и повышает скорость передачи сигнала. В самом затворе используется силицид никеля вместо силицида кобальта. Использование 193-нм фотолитографии и 300-мм кремниевых пластин позволило получить ячейку кэш-памяти SRAM площадью 1,15 мкм2. Пока что о выходе годных говорить не приходится, но использование 300 мм подложек уже внедрено на 3 фабриках Intel (D1C в Орегоне, F11X в Мексике и F24 в Ирландии) и количество получаемых подложек растет все быстрее.

Так какие же параметры в итоге отличают Prescott от Northwood? Первое, что бросается в глаза – что увеличенный объем кэша данных L1 до 16 КБ и L2 до 1 МБ. Новинка также отличается оптимизированной архитектурой NetBurst, дополнительными буферами, поддержкой SSE3, усовершенствованной технологией Hyper-Threading.

Микроархитектура

Все новые микроархитектурные улучшения позволили сократить задержки передачи сигнала между блоками процессора. Главной особенностью новой архитектуры NetBurst стало удлинение конвейера с 20 до 31 стадии. Конвейер стал длиннее, но сами стадии укоротились по времени. Соответственно изменилось и прохождение инструкций по конвейеру. Увеличение количества стадий позволило поднять тактовую частоту. Также это стало необходимым из-за задейстования большего числа блоков и необходимости их развязки по времени выполнения.

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

Для усовершенствования архитектуры также было увеличено число всевозможных буферов. Прежде всего, это WC-буферы, которые отвечают за сбрасывание данных в оперативную память при переполнении кэша L2. Их количество пришлось увеличить примерно до 4000, видимо, из-за удвоения кэша L2.

Остальное все осталось по-прежнему. Кэш второго уровня связан с буфером TLB 64-битной шиной, а с L1 – 256 битной с пропускной способностью 108 ГБ/с. Вопреки слухам trace-кэш не увеличился: он все также отслеживает 12 тысяч микроопераций. Поскольку каждая микрооперация вовсе не обязательно равна 1 КБ, то было бы некорректно говорить об объеме trace-кэша. Он содержит уже предсказанные с учетом условных переходов инструкции в порядке их поступления на исполнительные блоки и выдает по 3 инструкции за такт. Поскольку количество исполнительных блоков не изменилось, то особого смысла увеличивать trace-кэш нет.

Prescott имеет 2 блока ALU, работающих на удвоенной частоте для простых инструкций, один для сложных, FPU с поддержкой SSE3, блок для сдвиговых операций с плавающей точкой и 2 AGU – вычислительных блока, которые высчитывают адрес хранимых и загружаемых команд. Итого 7 вычислительных блоков.

Зато удалось доработать ALU, которое состоит из 2 блоков, работающих на удвоенной частоте и одного на обычной. Так вот, первые два блока умеют совершать операции только с простыми инструкциями. Операции сдвига естественно считаются сложными операциями и поэтому выполняются на втором блоке с обычной частотой. В Prescott был добавлен специальный блок, который позволяет исполнять функции shift и rotate на «двухскоростном» блоке ALU. Кроме того, ускорена операция целочисленного умножения, которая позволила уменьшить imul latency. Для этого выделен спецтальный блок в FPU.

Более удачной компоновки ядра по сравнению с Northwood компании Intel удалось достичь за счет применения автоматической трассировки блоков ядра. Теперь ядро немного вытянулось в длину и не имеет четких граней отдельных блоков. Это характерный пример автоматического дизайна ядра, когда соединения между блоками очень хитро переплетаются. Такой метод позволил разместить схожие и работающие одновременно или последовательно блоки разместить вместе, чтобы не было задержки передачи сигнала из одного блока в другой. По идее, умножение теперь должно выполняться быстрее.

Кэш-память

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

Впервые за долгое время, был изменен кэш первого уровня. L1 для данных «разросся» до 16 КБ. Это оказалось весьма кстати, ведь размер исполняемых команд увеличился. L1 уменьшает задержки в работе блока быстрого исполнения благодаря применению новейших технологий доступа. Вместе с увеличением объема увеличилась ассоциативность L1 до 8 каналов (путей). Это усложняет кэш, но позволяет более оптимально его использовать. Для сохранения размера блоков по 2 Кбайта в кэше вместе с удвоением объема следует увеличить и ассоциативность.

Размер L2 также увеличился вдвое и стал равен 1 МБ. В принципе, эта мера может немного поднять общую производительность. При увеличении объема кэш-памяти увеличивается и процент попаданий в кэш, но даже в случае непопадания это приносит не такие уж большие потери. Для некоторых мультимедийных приложений эта мера может поднять производительность до 10-15 % с учетом оптимизации приложений.

«Обратной стороной это медали» стало значительное увеличение латентности кэш-памяти при увеличении ее объема. И если латентность L1 выросла незначительно (на единицы тактов), поскольку объем L1 очень мал, то латентность L2 выросла с 7 тактов до 18, при том, что ассоциативность осталась равна 8! В случае, если выборка будет производиться только из L2 (данные будут целиком помещаться в L2), то ее латентность значительно повлияет на производительность, естественно, в худшую сторону.

Одна из причин удвоения объема кэшей - это необходимость согласовать работу удлиненного конвейера с кэш-памятью. Поскольку L1 и L2 синхронны, то для увеличения частоты ее также нужно «поделить» на большее число квадрантов. Немного скрасить значительно увеличившуюся латентность L2 позволяет улучшенная предварительная выборка данных в L1. Теперь блок Prefetch не только выбирает нужную страницу с данными, но и может обновлять страницы памяти в TLB.

Усовершенствования и HT

Помимо всего выше перечисленного, в Prescott была улучшена технология Hyper-Threading. И похоже это удалось компании Intel без огрехов – понижения производительности из-за нововведений быть не может. Зато при должной оптимизации приложений возможен неплохой прирост. Тем более, что предпосылки для этого есть: увеличенная кэш-память второго уровня будет эффективнее снабжать несколько потоков данных, а латентность L2 при много поточности будет не так заметна.

При оптимизации HT были использованы несколько новых инструкций, таких как monitor и mwait. Они позволяют лучше контролировать активные потоки и «усыплять» ненужные. Конвейер Prescott был специально изменен для большего параллелизма. Разработчики ввели понятие асинхронных потоков, которые делятся на главный и виртуальные (вспомогательные). Главный поток выполняется с наибольшим приоритетом, а виртуальные меж собой переключаются и чередуются. Таким образом, можно добиться наибольшего распараллеливания. Кроме того, разработчики добавили несколько межстадийных буферов для оптимизации потоков.

Ну и наконец, кроме всех этих усовершенствований изменилось и управление питанием в новом Prescott. Видимо повлияла общая тенденция конвергенции мобильных и сетевых возможностей в настольные процессоры. В принципе эта новая возможность Prescott очень напоминает Pentium M. Теперь процессор имеет 4 режима пониженного энергопотребления, когда «засыпает» разное количество функций. Первый режим – AutoHALT  - это стандартное приостановление работы с экономией энергии на синхронизации всяких служебных сигналов. Для этого традиционно используется SMI (System Management Interrupt). При подаче SMI# процессор входит в режим системного управления SMM. В этом режиме при подаче асинхронного сигнала STPCLK# (не влияет на FSB) процессор может войти в Stop-Grant State – режим, когда приостанавливает тактирование всех блоков процессора сигналом BCLK, кроме самой FSB и APIC, за счет чего экономится энергия. При этом продолжается слежение за FSB и разрешены прерывания. Тем не менее BINIT# (инициализация FSB) не обслуживается, вызовы по шине не способны вывести процессор из режима пониженного энергопотребления, они буферизуются и исполняются по «просыпании» - переходе в режим HALT/Grant Snoop State. В этом режиме может прийти сигнал SLP#, который переводит процессор в «спящее» состояние (Sleep State). В этом режиме разрешены только сигналы SLP и RESET#, и хотя BCLK активен, никакие транзакции, выставления сигналов и слежение за шиной не разрешены. Инициализацию сигнала SLP# для выхода из спящего режима может взывать только другой асинхронный сигнал на шине.

Для уменьшения шума при охлаждении кулером процессора разработаны новые спецификации теплового профиля. В его рамках был определен параметр Tcasemax для различных уровней рассеивания энергии. Так для мощности рассеивания 2 Вт должна соответствовать температура корпуса - 44°С, а для 104 Вт – 73,5°С. Суть этого метода в том, что был определен новый параметр TCONTROL, опираясь на значение которого можно управлять скоростью вращения вентилятора и, соответственно, влиять на шум, производимый кулером. Данные сообщаются термодиодом на термодатчик, который находится на материнской плате. Если параметр TCASE в пределах спецификаций (от TCONTROL и до TCASEMAX) профиля, то скорость работы вентилятора не отличается от обычной. Если же значение температуры корпуса ниже TCONTROL, то число оборотов вентилятора можно снизить.

Процессоры Pentium 4 всегда славились хорошей защитой от сгорания.  Для этого в Prescott используется сигнал THERMTRIP#. Когда он становится активным (температура превышает TCASEMAX на 20 градусов), то VCC убирается. Также был введен новы сигнал PROCHOT#, который позволяет контролировать достижение максимальной рабочей температуры кристаллом процессора. Это значение откалибровано для каждого блока процессора отдельно в зависимости от их мощности рассеивания. Поскольку увеличение температуры всегда связано с увеличением потребления тока, то при большой загрузке процессора в пиковых режимах он может повредить VRM, заставляя его выдавать непредназначенные для того напряжения. Для защиты VRM как раз можно использовать сигнал PROCHOT#. Что отрадно, для удовлетворения новых требований по тепловыделению не потребуется использовать новые системы охлаждения – со своей задачей вполне справляются и старые боксовые кулеры.

Набор команд SSE3

Немаловажной деталью в Prescott стало применение расширенного набора команд SSE3, ранее известного как PNI (Prescott New Instructions). Естественно, преимущества этого набора команд будут очевидны только после перекомпиляции программ под SSE3. Этот набор SIMD-расширений позволяет сразу более удобно оперировать 4 парами операндов, особенно при работе с комплексными числами. Есть команды для преобразования чисел с плавающей точкой с десятичный формат (fisttp), кодирования видео (lddqu), новые команды, предназначенные для обработки графической информации (массивов вершин), а также две инструкции, предназначенные для синхронизации потоков в HT (mwait и monitor). В принципе, все эти команды совместимы с существующим ПО и ОС, но после перекомпиляции этих приложений ожидается 5%-ный прирост производительности. Среди таких приложений - MainConcept, xMPEG, Ligos, Real (RV9), On2 (VP5/VP6), Pegasys TMPGEnc 3.0, Adobe Premier, Pinnacle, Sony DVD Source Creator, Ulead (MediaStudio & Video Studio), Intervideo и другие, использующие кодек DivX 5.1.1, скоро будет перекомпилирован Unreal Tournament II.

Чипсеты

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

Тем не менее, поддержка чипсетами вовсе не означает, что все существующие материнские платы будут нормально работать с новинкой. Далеко не все производители плат следовали спецификациям Intel по VRM, пытаясь сэкономить то на трехфазных выпрямителях, то используя более дешевые компоненты, за счет чего пиковый ток в 91 A для топовых моделей может просто не выдерживаться. I875 все также остается самым мощным и быстрым. Гарантирована совместимость с платами ASUS P4C800 и P4P800, остальные платы могут «завестись» после обновления BIOS.

В скором будущем планируется выход чипсетов, поддерживающих Prescott нового степпинга. Это Alterwood и Grantsdale с поддержкой памяти DDRII, PCI Express, южного моста ICH6 и системной шины 1066 МГц. В апреле предполагается появление i915.

Революция или эволюция?

Ну что ж, настало время подвести кое-какие итоги и определить оправдал ли возложенные на него новый Prescott. Скоре всего, большинство он разочаровал. Процессор, которому прочили звание процессора нового поколения – Pentium 5 – оказался лишь технологическим развитием старой линейки Northwood, тем более, что стартовал он на тех же частотах, что и его предшественник, выполненный по техпроцессу 0,13 мкм. Но неужели все так плохо? Нет, на самом же деле, Prescott просто получился очень неоднозначным процессором. Прогрессивная архитектура, новые технологии производства, оптимизированные функциональные блоки, невысокая цена сочетаются с производительностью, примерно равной или даже меньшей, чем у аналога Northwood. В чем же причина такого странного позиционирования новинки?

Все очень просто – практически все особенности Prescott, которые неблагоприятно влияют на его производительность, связаны с одной единственной необходимостью поднимать частоты процессора. Если с «проблемой 90 нанометров» компания достаточно успешно справилась, используя новые разработки и материалы, то для получения больших частот Intel пошла по старому проторенному пути – удлинению конвейера и одновременно увеличению кэш-памяти L2, что и привело к многим отрицательным эффектам. Практически все остальные усовершенствования призваны как-то нивелировать те проблемы, которые принесло данное решение. Так, увеличение кэш-памяти первого уровня вместе с улучшением предвыборки в кэш следует записать в несомненный плюс, а увеличение кэша L2, повлекшее значительный рост его латентности может как негативно сказываться на производительности, так и порой давать некоторый выигрыш. В приложениях, критичных с объему кэш-памяти (вычисления типа Spec, большие базы данных, CAD/CAM-системы), объем будет превалировать над производительностью, а в играх, которые также очень критичны к памяти, содержится большое количество ветвлений, которые мешают хорошей предвыборке в L1 и тормозят из-за латентности L2. В то же время, увеличение L2 стало важным шагом, позволившим поднять эффективность HT. Множественные микроархитектурные улучшения позволяют выигрывать в ряде задач, но реально разница в производительности будет заметна, к сожалению, только после перекомпиляции большинства программ с учетом нового кэша, улучшенного предсказания ветвлений, оптимизированного HT  и использования инструкций SSE3. Сейчас же Prescott хорошо показывает себя только в приложениях, использующих видеокодирование и 3D-моделирование. И тут Intel постаралась уже вышел новый Intel C++ Compiler 8, который предоставит новые возможности по оптимизации процессоров.

Пока же в некоторых мультимедийных приложениях и вычислениях с плавающей точкой прирост производительности может достигать 10-12%, а в некоторых играх – отставание на 5% от Northwood. Несмотря на все это, можно считать, что новая линейка удалась – наконец, осуществлен переход на новый техпроцесс, создана платформа для интегрирования новых технологий (в Prescott встроена поддержка LaGrande, а может быть и Vanderpool), существующие усовершенствования при должной оптимизации себя проявят, но только в будущем.

Зачем было создавать такой неоднозначный CPU – похоже «для продолжения рода», создания 90-нм плацдарма. Многие ассоциировали переход на новый техпроцесс с новыми горизонтами масштабируемости и разгона новых кристаллов, но не тут-то было. Как оказалось, новый Prescott 3.20 едва ли «дотягивает» до 3.40, в то время как новый Northwood 3.40 спокойно «заводится» на 4 ГГц. И как же тогда Intel собирается выпускать Prescott 4.5 ГГц? Все это указывает на то, что существующее ядро Prescott вовсе не окончательное, а переходное. И служит оно для создания временного запаса для технологов Intel, которые за это время успеют справиться с «детскими болезнями» юного Prescott. Видимо после перехода на новый разъем LGA775 нас ждет очередная премьера, которая официально не будут такой яркой, как 2 февраля, но значить в технологическом плане будет гораздо больше.

Несмотря на цены, такие же как на Northwood, Prescott пока не представляется оптимальной покупкой, в то время как Northwood 3.40 похоже станет последней и самой стоящей покупкой для Socket 478. Ну а будущее технологий так или иначе за Prescott

Автор: Александр Дудкин
dudkin@hwworld.ru

15.02.2004


© Авторские права и копия защищены законом: © Дудкин Александр Константинович, 2002 г.
Копирование любых материалов только с письменного разрешения автора сайта
URL сайта: www.hwworld.ru
Ваши замечания и предложения присылайте по e-mail: admin@hwworld.ru