Технические
характеристики Nintendo 64
Анатомия. |
||||||||||||||
Silicon Graphics подключила к работе самых лучших инженеров. Одним из них был знаменитый Dr. Wei Yen. Через несколько лет, в составе ArtX, он спроектирует чип и для GameCube. Выпуск чипов для консоли был налажен на заводах NEC по новой в то время 0.35-микронной технологии. Nintendo собирались выпустить консоль к рождеству 1995, пику распродаж. В европе рождество 25 декабря, т.е. перед новым годом. Однако, по техническим причинам выпуск был отложен и продажи консоли начались только весной 1996 года... Существует предположение, что основным препятствием выхода была задержка с выходом программного обеспечения. К сожалению, Nintendo несколько опоздали с выпуском 3D игровой консоли, Sony успела выпустить более простой Playstation (1994 год в японии и рождество 1995 года - в США). Кстати, обьемы продаж PSX в США были изрядным сюрпризом для Sony. К тому же, возможно что некоторую конкуренцию N64 составляла SEGA со своей Sega Saturn, которая впоследствии проиграет конкурентам (немалую роль в этом составит ее сложность - 7 микропроцессоров). Поэтому Nintendo ДОЛЖНА была представить на рынок не просто консоль, но и подготовить для нее шокирующую игру. (мое личное мнение - Mario64 действительно очень приятна по геймплею, но использует далеко не все возможности железа N64). Вероятно, в задержке продаж не последнюю очередь сыграли монстроидальность и странная политика Nintendo(1) . Приставка вышла по цене $199.99, и первой игрой для нее стала Super Mario64, которая готовилась именно как "пробивная" для Nintendo64, но стоила совсем не бесплатно (2), а именно - $60. Совсем небесплатны были и дополнительные аксессуары - джойстик $30 и даже TV-HookUp (модулятор радиосигнала встроеный в некоторые консоли) - $30. Некоторые элементы истории разработки N64 можно найти на сайте MIPS. В будущем, консоль прослужит Nintendo целых пять лет, вплоть до осени 2001 года и выхода Game Cube. Silicon Graphics поработали действительно хорошо. На тот момент технические характеристики N64 опережали графические акселераторы PC на годы и годы вперед. N64 превосходила и все консоли конкурентов. Консоль позволяла запускать полигональные 3D игры с очень плавной анимацией, равной частоте кадровой развертки (50 Hz для PAL и 60 Hz для американского NTSC). На мой взгляд, то что сделали SGI для Nintendo, является ни чем иным, как переработкой их ранней графической станции Crimson. Возможно, меньше памяти, возможно что-то еще усечено, но несомненно то что возможности графической части N64 практически идентичны с графичискими возможностями Crimson. Графические станции Silicon Graphics изначально базируются на микропроцессорах MIPS. Более подробную информацию относительно Crimson или N64 в контексте SGI можно найти здесь. Характеристики N64 Размеры и вес 1.1Kg, 260мм (ширина) x 73мм (высота) x 190mm (глубина). Корпус N64 скручен специальными очень хитрыми винтами с внутренними мелкими гранями. Без специального инструмента открыть его не повредив насечку винтов почти невозможно. Защита от детей или попытка скрыть устройство консоли? Комплект специальных отверток заказом из японии стоит $50...Энергопотребление 15 Ватт. 4 аналоговых контроллера, в каждом есть дискретный Joypad, кнопки дополнительного управления камерой и RumblePack - устройство для "встряски, вибрации" - во время игры джойстик "потряхивает", добавляя иллюзии. Разьем расширения. Обьем картриджа до 32Mb (мегабайта, не мегабита!), но бывают картриджи обьемом в 64 Mb (Resident Evil - II). Типичный обьем игр меньше, 8-16 Mb. Оперативня память 4Mb типа RAMBUS (на годы раньше чем на PC). На борту N64 реально находится 4.5Mb памяти в виде двух чипов по 9 бит. Дополнительный бит вовсе не бит четности, а специальный бит для работы механизма анти-алиасинга и Z-buffer, задействованый только аппаратно и програмисту никак недоступен. Программно доступно лишь 4Mb. Пиковая пропускная способность памяти 500 Mb/Sec так как при тактовой частоте 250Mhz - передача данных происходит по обеим фронтам сигнала. Между прочим, Sony Playstation-II также имеет память типа RAMBUS, но вот в Nintendo GameCube уже отказались от нее. Причина в том, что RAMBUS медлительна и неэффективна в особых случаях, когда микропроцессор модифицирует память маленькими случайными кусочками по случайным адресам. А именно такой характер модификаций характерен для игровых алгоритмов. Поэтому одним из нюансов GameCube является особый вид памяти. Для N64 выпускается Expansion Pack, расширяющий память системы еще на 4,5 Mb, суммарно до 9Mb. Но какого-либо распространения он не получил. Очевидно, что разработчики игр старались чтобы игру купило как можно больше людей, а не только те у которых есть Expansion pack. Дополнительная энергонезависимая память для отгрузок состояния игр. Центральный процессор
Центральным процессором N64 является RISC процессор R4300i разработки MIPS. Тактовая частота 93,75 MHz. MIPS была первой, кто выпустил на рынок 64-bit процессоры. 64 регистра микропроцессора R4300 полностью 64-битные. R4300 содержит 16Kb кэша инструкций и 8kb кэша данных. Кэш работает по алгоритму WriteBack, то есть записывает данные в память лишь тогда когда в этом есть необходимость. Все команды микропроцессора имеет ширину 32 бита. Микропроцессор R4300 также как и все RISC-процессоры, оперирует над регистровым файлом, то есть в его распоряжении находятся 32 integer -регистра по 64 бита и 32 floating-point регистра по 64 бита. Это дает компиляторам значительное преимущество - большинство данных над которыми манипулирует R4300 находятся в регистрах и это дает очень большой прирост производительности за счет эффективного кода. Несмотря на то что R4300i не обладает суперскалярной архитектурой как Pentium, то есть не может выполнять по две команды за такт и его FPU не работает параллельно CPU, но тем не менее, по производительности на равных тактовых частотах он примерно равен ему. Одни и те же Си-алгоритмы работают на R4300 быстрее чем на Pentium, и вот почему: Компиляторы для микропроцессоров архитектуры x86, очень интенсивно используют память и стек, большинство команд это команды загрузки-выгрузки регистров. Это "засоряет" код лишними командами пересылки данных. В архитектуре Intel регистров мало - это основные EAX,EBX,ECX,EDX, EBP и указатели ESI и EDI. Причем, регистр EBP используется компиляторами только как указатель на данные в кадре стека, а не для вычислений. Итого - практически 4 регистра по 32 бита против 32 регистров по 64 бита! Доступ к floating-point регистрам R4300 свободный, а не в виде стека из 8 регистров как у микропроцессоров Pentium, но FPU является довольно простым- умеет вычислять лишь квадратный корень и арифметические действия, в то время как FPU Intel вычисляет sin/cos/tg/arctg/ln и проч. Обратите внимание, на полной тактовой частоте, с полной загрузкой микропроцессор потребляет всего лишь каких-то...1,8 ватта! При этом он еще может находится в sleep и power-down mode! R4300 является также самым первым микропроцессором к 1995 году с ценой меньше $1 за SPECint. То есть это наиболее дешевый процессор обеспечивающий наибольшую производительность (что относится и к остальным процессорам MIPS, да и вообще, к большинству RISC микропроцессоров/микроконтроллеров.) MIPS является разработчиком архитектуры и дизайна кристаллов. Производством самих кристаллов/чипов занимаются другие фирмы, лицензирующие у MIPS ее технологию (например NEC). В мире существует очень много кустомизированых версий архитектуры MIPS от самых разных фирм, даже русских. (интересны архитектурные решения Altera Excalibur на базе MIPS). Системы SonyPlaystation также построены тоже на микропроцессорах от MIPS, Sony Playstation на более раннем и более слабом 32х битном R3000 и Playstation-II построена на очень мощном уже супер-скалярном custom-чипе R5900 архитектуры MIPS. Недавно у меня появилась информация, что SGI приобрела MIPS, но в дальнейшем произвела откат. Как видно из пресс-релиза, SGI на тот момент владеет 85% капитала MIPS. Архитектура RISC микропроцессоров MIPS (так называемой серии R) такова, что допускает 4 сопроцессора (COP, Co-Processor). Один из них, неотемлемый COP0 - встроеный блок управления/трансляции адресов, сопроцессор программных исключений и ошибок. FPU является сопроцессором COP1. Остальные сопроцессоры являются сопроцессорами расширения. Это дает легкую возможность изготавливать специализированые версии чипов и распараллеливать микропроцессоры, что и сделано в Sony Playstation-II. Кроме того, Sony производят графическую подстанцию GScube, своеобразный графический сопроцессор с 16-ю параллельно работающими процессорами R5900, собираясь и в будущем наращивать возможности путем распараллеливания. Это действительно, дается архитектурно и программно легко. Оба сопроцессора PSX-II являются COP1 и COP2. Видно что MIPS весьма популярна у производителей графических систем и легко проектируетна заказ мощные кустом-версии своих чипов. Рекомендую сходить на сайт MIPS и ознакомиться с последними разработками в этой области. В отличии от привычной рекламой шумихи Intel или AMD, сопровождающей каждую следущую модель микропроцессора, MIPS молчалива. Но возможности ее микропроцессоров очень высоки при ничтожном энергопотреблении. Обязательно обратите внимание - эта мощность дается не высокими тактовыми частотами/обьемом кэша, а архитектурно.. Видеопроцессор. Видеопроцессор N64 -Reality Immersion Engine или сокращенно, Reality Co-Processor, RCP. Тактовая частота 62,5 Mhz, что является в точности 2/3 от частоты CPU. Внутренние шины RCP скорее всего ,256 битные. Шина RCP <-> CPU 64 бита. RCP архитектурно является, скорее, не вспомогательным, а основным чипом N64. Через него выполняется доступ к памяти и ко всем остальным устройствам. Экранное разрешение N64 включает в себя разнообразные видеорежимы, но реально игры используют разрешение... 320x240 пикселей. Глубина цвета каждого компонента RGB видеовыхода - 21 бит(интерполяция). Глубина цвета текстур до 8 бит на компоненту. Гамма-коррекция цвета. Полноэкранный hardware antialiasing. Texture Mapping Компрессия текстур за счет уникальных форматов, включая формат YUV (MPEG/JPEG Luminance-chrominance). Мультитекстурирование (обращаю внимание!) Очень и очень хороший краевой антиалиасинг полигонов (кстати, этого нет практически ни на одной PC карте). Трилинейная Mipmap фильтрация текстур полигонов, т.е. интерполяция цвета происходит не только в самой текстуре, но и между mipmap-уровнями текстур. Z-Buffering Depth Cueing (цветной fog, mist, haze, murky water, etc. - делается полигонально, т.е. не через Zbuffer) Gouraud Shading 8 цветных источников света, причем Spot, Directional, PointLights. Alpha effects (полу-прозрачность как полигонов так и текстур, реализована очень развито!). Соответственно наличествуют все эффекты которые выдаются за самостоятельные, но являются всего лишь комбинацией текстурирования/освещения - это bump mapping, Environment mapping, цветные блики (specular lighting) итп. N64 предоставляет спрайты со всеми эффектами. Большинство игр выводит спрайты полигонами, но RDP поддерживает аппаратный блиттинг блоков. Нужно сказать, что не все эффекты "дармовые", некоторые режимы требуют двух тактов рендеринга и работают в так называемом 2-CYCLE MODE, а некоторые режимы не могут быть скомбинированы. Как видно, большинство технологий старательно выдаемых производителями видеоакселераторов для PC за последний писк моды, являются самым обычным порядком вещей в 1993 году на станциях SGI и в 1993-1996 годах на N64... Reality Immersion Engine, RCP является самой сложной и самой интересной частью N64. Это один чип, но реально это два процессора - центральный командный процессор RSP с векторным со-процессором и растеризатор RDP. Работает RCP полностью параллельно центральному процессору R4300i. Кроме того, растеризатор и центральный процессор RCP работают параллельно друг другу. Этот чип создан на базе микропроцессора MIPS и является, по сути дела, ядром микропроцессора R4000 с усеченным набором команд. Оставлена только 32-х разрядная часть без 64bit инструкций, умножений/делений и с 32 регистрами по 32 bit. Также из процессора убраны все прерывания, например возможно деление на ноль. Никакие ошибки этот процессор не отслеживает. Поэтому его называют Reality Signal Processor - RSP. Этот процессор выполняет роль командного, управляющего процессора RCP. Следущее устройство - это векторный сопроцессор или Vector Unit (VU). Он представлен по отношению у кправляющему ядру RSP как сопроцессор COP2 и содержит 32 регистра по 128 бит (!!!). То есть на самом деле, Nintendo могли "слукавить" и заявить что консоль 128-битная. С помощью VU на N64 выполняются матричные вычисления - геометрические преобразования в трехмерном пространстве. Поэтому иногда можно услышать такое определение как геометрический процессор. Вообще говоря, матричные процессоры это привилегия суперкомпьютеров. Ввиду того что внутри RCP VU является сопроцессором COP2 для управляющего RSP, он не работает с ним параллельно, т.к. они разделяют один и тот же поток команд. Но это и не требуется. Одну векторную операцию VU выполняет за такт!!!!!! С программной точки зрения модуль VU и процессор R4000 рассматриваются как одно устройство, один процессор с 32-мя скалярными регистрами по 32 бит и 32 векторных регистра по 128 бит. Каждый регистр VU может адресоваться 16bit частями. VU содержит 8 векторных ALU шириной 32 бит для хранения промежуточных вычислений при распараллеливании вычислений и столько же "скрытых" программнонедоступных 32bit - аккумуляторов хранящих результат векторной операции. Производительность VU равна одной инструкции за такт(?), но эта инструкция, к примеру, выполняет сразу несколько умножений вида 16bit x 16bit и одновременно комбинирует 32 bit результат с 32 bit предыдущего результата (скрытым аккумулятором). Кроме того, VU может производить и все логические, арифметические команды над своими векторными регистрами. Для устройства с тактовой частотой 62,5 Mhz VU имеет довольно высокую производительность. Несложные подсчеты показывают, что это 0,5 GFlop/Sec (пол-миллиарда арифметических действий/сек). Так что Jim Clarc совсем не преувеличивал, обещая мощность сотен PC того времени! Следущим устройством RCP является Reality Display Processor (RDP). Это устройство работает растеризатором, выполняя все 2D функции клиппирования полигонов, мульти-текстурирования, Z-буферинга, блендинга, интерполяции освещенности, очистки Z-буфера и многие другие. RDP работает параллельно RSP, выполняя 64 и 128 битные(?) команды своей очереди команд, которые RSP записывает в его RDP-display-list. RDP содержит в своем составе несколько логических блоков:
Параллельно при этом работает AlphaCombiner: Можно заметить, что используются такие специфические элементы, как части параметра Level-Of-Detail или Noise (шум). Комбинируя определенные режимы работы программист может получать очень специфичные возможности, например, Chroma-Keying с "мягкими" границами канала. Вообще, RDP является исключительно сильной частью N64. Современные (2002 год) видеоакселераторы PC типа GeForce хоть и быстрее, но куда беднее по функциональности (!) Оба процессора, RDP и RSP не разделяют оперативную память системы, озу. Вместо этого они используют 4Kb своей сверхоперативной памяти инструкций (IMEM) и 4Kb памяти данных (DMEM). Данные в DMEM и IMEM передаются через DMA, в основном, пересылки инициализируются RSP. Запись RSP может делать только в DMEM, но не в IMEM. Общение между RDP и RSP выполняется через DMEM. RDP не является сопроцессором к RSP, т.е. он имеет свой указатель инструкций. RDP выполняет текстурирование из своей памяти текстур, обьемом 4Kb. Немного, но зато пропускная способность этой памяти (IMEM, DMEM, TMEM) гораздо выше чем RAM за счет того что это статическая память на кристалле и ширина ее выборки больше чем ширина выборки RAM. Данные между этими видами памяти и RAM передаются с помощью быстрых каналов DMA, причем пересылки инициализируются как процессором, так и RSP. Небольшой обьем памяти текстур несколько сглаживается гибкостью RDP, так как он автоматически производит заворачивание текстур, отражение и очень и очень качественное сглаживание (интерполяцию). Звук N64 содержит в своем составе также и полноценный 16Bit, 44,1Khz программный wavetable синтезатор. Количество каналов может быть вплоть до 64 со специальными эффектами reverberation, echo, chorus итп. Однако, большое количество каналов с эффектами не прозрачно, это требует повышеных вычислительных ресурсов. Поэтому програмисты выбирают золотую середину между производительностью/количеством эффектов. Смешивание/формирование каналов выполняется программно, с помощью RSP, который подготавливает буфер в RAM и передает его с помощью DMA в цифро-аналоговые преобразователи. Многие звуки по-настоящему синтезируются. В играх N64 звук довольно выразительный - он перемещается вместе с героями, большие помещения дают эхо итп. Музыка N64 это, как правило MIDI-композиции с 44,1 kHz wavetable иструментами. В крупных и технологичных играх наподобие Zelda, RE-II звук, к тому же, запакован в формате MP3 и распаковывается в память по мере игрового процесса.Остальные контроллеры. N64 также содержит 4 очень быстрых 64-бит канала DMA. DMA задействованы для пересылки данных между картриджем ROM/RAM, для взаимодействия RCP, взаимодействия с джойстиками, шиной внешних устройств таких как диски, энергонезависимая память отгрузки итп. Контроллер джойстиков и сами джойстики являются интеллектуальными устройствами, т.е. тоже содержат простейшие микропроцессоры (микроконтроллеры). В частности, джойстик N64 самокалибруется.Операционная система. Программное обеспечение. N64 содержит операционноую систему с вытесняющей мультизадачностью. Она не находится где-либо в ROM, а слинковывается при компиляции вместе с игрой. N64 . N64 OS обеспечивает выполнение и взаимодействие разноприоритетных потоков команд CPU. Потоки общаются с помощью посылки сообщений, так же как и в больших системах (BeOS, Windows). Игра выполняет роль клиента операционной системы, та предоставляет ей сообщения о контроллерах, состоянии RCP и проч. Также есть и файловая система - отгрузки игры упорядочены в энергонезависимой памяти в виде файлов.С програмированием N64 тесно связано понятие Display List, списков команд с помощью которых общаются ее программное обеспечение центрального процессора и программное обеспечение RSP(микрокод). Программирование Display List сильно напоминает программирование OpenGL! В этом нет ничего удивительного, так как архитектура N64 это, практически, модификация ранней графической станции Silicon Graphics, а OpenGL разработан именно ими и именно для этого. Ошибки Nintendo. SGI сконструировала прекрасную систему, отдав ее в руки Nintendo. Первой и самой основной ошибкой является отсутствие CD-ROM. За пять лет продаж N64 (и с 1993 года разработки!) так и не был выпущен CD-ROM. Просто потрясающая узколобость и упорство! Это при всем при том, что N64 содержит снизу специальный разъем расширения!!! Консоль спроектирована так, что она может как бы венчать "башенкой" возможный блок расширения снизу ее. Дело обстоит даже так, что некоторые пиратские фирмы выпустили Backup Unit`ы со встроенным CD-ROM, но не сама Nintendo!Обратите внимание - это еще и при том, что мощность двухпроцессорной N64 такова, что она спокойно проигрывает полноэкранное MPEG-II видео(Resident Evil-II), вкупе с MPEG-III аудио. (тут нет ничего удивительного - напомню, внутри N64 два RISC-процессора с мощностью пары Pentium!!!). По идее, для N64 предназначался какой-то нелепый магнитный накопитель DD (DiskDrive), емкостью 64,45 Mb (его вы и видите под N64). Но насколько мне известно, так ни одна игра для него и не вышла. (Вообще, продавались ли DD? Видимо нет.) Игры должны были выходить только на READONLY дисках. Отсутствие
диска конечно же создавало сильные ограничения для разработчиков. Точнее
говоря, ограничением был малый обьем картриджей. Было бы правильным
сказать, что изготовление игр для N64 по этой причине было одним из
самых трудных среди всех консолей. (Существуют и другие причины). В
журнале Gamasutra можно прочитать
о том как делался ремейк игры Resident Evil-II с консоли Sony Playstation.
"Mission:
Compressible -- Achieving Full-Motion Video on the Nintendo 64".Программистам
пришлось решать проблему, как упаковать 1 Gb полноэкранного видео из
Sony Playstation диска в 25 Mb отведеные в N64-картридже. Программисты
такие же люди и желают как можно проще и быстрее проектировать игры,
для того чтобы поскорее состричь купоны и рвануть на острова, пить апельсиновый
сок и нежиться в бассеине между двух блондинок. Поэтому вполне можно
понять их нежелание связываться с N64.
|
||||||||||||||