Игровая приставка Sony PlayStation История появления наиболее распространенной на сегодняшний день 32-разрядной приставки SONY PLAYSTATION очень интересна. Все началось, когда фирма NINTENDO занялась созданием новой игровой консоли с приводом CD-ROM, которая сейчас известна как NINTENDO 64. Однако затем NINTENDO решила оставить привычные картриджи, и CD-ROM остался, у фирмы SONY. Рассудив, что перспективной разработке пропадать не следует, и учтя опыт выпуска приставок под торговой маркой 3DO, фирма SONY предложила собственную игровую систему, которая по числу продаж обогнала и 3DO и NINTENDO 64. Основой устройства является процессор, использующий RISC-ядро MIPS R3000 и функционирующий на частоте 33,9 МГц. Графический процессор представляет собой специальную микросхему, формирующую цветное изображение размером от 224x240 до 640x480 точек. Видеопроцессор способен работать с 15- или 24-разрядным кодированием цвета и ориентирован на трехмерную полигональную графику. Для звукового сопровождения применяется программируемый 24-канальный звуковой процессор CXD2925Q производства фирмы SONY. В формировании выходного сигнала участвует и двухканальный 16-разрядный дельта-сигма ЦАП, используемый при непосредственном воспроизведении звуковых фрагментов с компакт-диска. Программы для приставки хранятся на CD. Для чтения информации с дисков установлен стандартный двухскоростной привод CD-ROM, который управляется посредством отдельного блока, состоящего из контроллера, устройства автоматической регулировки и декодера. В ПЗУ записана многозадачная операционная система, применяемая для воспроизведения звука с Audio CD, работы с файловой системой на дисках с программами, реализации интерфейса с устройствами внешней памяти типа memory card и управления микросхемами приставки. В стандартный комплект приставки входят 14-кнопочные игровые пульты. Четыре кнопки образуют традиционную крестовину, остальные предназначены для управления. Кроме пультов, существует множество дополнительных устройств, таких как рули для гонок, джойстики и специальные! приспособления с обратной связью (Force Feedback). 4.1. Технические характеристики Центральный процессор Тип MIPS R3000 Разрядность шины данных 32 бит Разрядность шины адреса 32 бит Тактовая частота 33,9 МГц Память ОЗУ 2 Мб ПЗУ 512 Кб Видеопамять 1 Мб Видеопроцессор Тип графики полигональная Адресное пространство 1 Мб Разрядность шины данных 32 бит Разрешение до 640x480 Количество цветов - 32767 или 16 млн 4.2. Архитектура и принцип работы В этом разделе рассматривается архитектура игровой приставки SONY PLAYSTATION и особенности разработки программного обеспечения для нее. Подробно рассказывается об архитектуре центрального процессора, звукового сопроцессора и видеопроцессора. В каждом разделе описано назначение внутренних регистров микросхем и их использование при программировании. 4.2.1. Структурная схема Внутренняя архитектура приставки SONY PLAYSTATION несколько сложнее представленных ранее игровых систем. Главные отличия связаны с тем, что в PLAYSTATION программы хранятся на CD-ROM, для которого требуется схема управления. Другой особенностью являются увеличенные объемы ОЗУ и ПЗУ, установленных в системе. Структурная схема игровой приставки SONY PLAYSTATION приведена на рис. 4.1. Основой схемы является центральный процессор (CPU), в качестве которого используется микросхема CXD8606AQ производства фирмы SONY. Она содержит ядро RISC-процессора MIPS R3000A и два сопроцессора - управления системой (System Control Coprocessor) и графических вычислений (Graphics Transformation Engine). К центральному процессору подсоединяется внутреннее ОЗУ игровой приставки объемом 2 Мб и ПЗУ объемом 512 Кб с записанной в него операционной системой. Также имеется соединение с графическим процессором приставки и декодером, преобразующим поступающие от CD-ROM сигналы в цифровые данные. Отдельной задачей центрального процессора является взаимодействие с игровыми пультами и другими устройствами, подключаемыми к разъемам JOYSTICK (CN102), SERIAL I/O (CN104) и PARALLEL I/O (CN103). Тактовый генератор центрального процессора стабилизируется внешним резонатором X1 частотой 67,73 МГц. Частота для ядра процессора получается путем деления опорной частоты генератора на 2. Сопроцессор управления системой предназначен для обработки сигналов, поступающих от различных блоков игровой приставки. Его основными функциями являются обслуживание поступающих запросов на прерывание, обработка возникающих исключений и передача информации о них ядру процессора, управление таймерами и контроллером прямого доступа к памяти. Сопроцессор графических вычислений занят быстрым выполнением базовых операций трехмерной графики над матрицами и векторами, чтобы затем передать полученные данные видеопроцессору приставки, который в результате сформирует изображение. Для синхронизации работы программы в игровой приставке SONY PLAYSTATION установлены четыре таймера с различной опорной частотой, что дает возможность жестко привязывать выполнение требуемых действий к процессу развертки изображения или отмерять заданные промежутки времени. С целью быстрого обмена данными между различными блоками игровой приставки предусмотрен контроллер прямого доступа к памяти, позволяющий передавать большие блоки информации без участия центрального процессора. Наиболее часто контроллер ПДП применяется для приема данных от CD-ROM и обмена ими с графическим процессором. В модуль видеопроцессора входят непосредственно схема графического процессора, видеопамять и ЦАП для генерации выходных сигналов основных цветов. В видеопамяти приставки (объем 1 Мб) хранится информация, необходимая для создания изображения. Видеопроцессор получает эту информацию и посылает 24-разрядный цифровой сигнал цветности и сигналы развертки. Микросхема ЦАП преобразует цифровой сигнал цветности в три аналоговых сигнала для основных цветовых составляющих - R, G, В. Далее эти сигналы вместе с импульсами синхронизации поступают на микросхему формирователя полного видеосигнала, которая преобразует их в полный стандартный телевизионный сигнал, передаваемый на выход приставки. Рис 4.7. Структурная схема игровой приставки SONY PLAYSTATION В аудиосистему SONY PLAYSTATION входят процессор, генерирующий 24-канальное звуковое сопровождение, буферное ОЗУ и ЦАП. Цифровой сигнал стереофонического звукового сопровождения с выходов процессора поступает на входы цифро-аналогового преобразователя. Также на входы ЦАП может подаваться сигнал от контроллера CD-ROM. В качестве цифро-аналогового преобразователя используется последовательный однобитовый 16-разтрядный дельта-сигма ЦАП. Его задачей является формирование полного стереофонического сигнала из данных, приходящих от аудиопроцессора и СD-ROM. Для хранения информации к звуковому процессору подключено собственное ОЗУ объемом 512 Кб, которое позволяет ему работать независимо от центрального процессора приставки. Выходные сигналы ЦАП поступают на разъем для подключения телевизора A/V OUT. Система ввода/вывода игровой приставки SONY PLAYSTATION реализована в микросхеме центрального процессора. Контроллер ввода/вывода обрабатывает сигналы, поступающие с разъемов JOYSTICK и SERIAL I/O. Данные от устройств, подключаемых к этим разъемам, приходят в последовательном формате, бит за битом, и преобразуются контроллером в параллельный код, который доступен центральному процессору через соответствующие регистры. Аналогичным образом полученная от процессорного ядра информация преобразуется в последовательный код, передаваемый на разъем SERIAL I/O. Для быстродействующих устройств предусмотрен параллельный двунаправленный порт PARALLEL I/O, обеспечивающий высокоскоростную передачу информации в параллельном виде. Кроме сигналов шины данных и управляющих сигналов на разъем параллельного порта выведен ряд тактовых сигналов для синхронизации обмена. Блок питания PLAYSTATION также сложнее, чем линейные стабилизаторы более простых игровых приставок. Он выполнен по схеме импульсного преобразователя напряжения, что обеспечивает высокую стабильность выходных напряжений и надежную защиту от перегрузок, скачков напряжения и коротких замыканий. Необходимость применения такого источника питания связана с повышенным энергопотреблением устройства, жесткими требованиями к стабильности питающих напряжений и с необходимостью формировать несколько выходных напряжений разной величины. 4.2.2. Центральный процессор В SONY PLAYSTATION в качестве центрального процессора используется стандартное ядро RISC-процессора MIPS R3000A. Основными особенностями RISC-процессоров являются сокращенный набор команд, где предусмотрены только элементарные операции, одинаковая длина и структура всех команд, минимизация числа обращений к памяти. Кроме того, RISC-процессоры отличаются большим числом внутренних регистров, наличием кэшпамяти для команд и данных, развитыми средствами предсказания переходов (за дополнительной информацией о RISC-процессорах можно обратиться к изданиям, указанным в конце книги). Тактовая частота процессора приставки SONY PLAYSTATION составляет 33,9 МГц. Микропроцессор и другие устройства связаны между собой 32-разрядной шиной адреса, 32-разрядной шиной данных и шиной управления. Адресное пространство процессора достигает 256 Мб. Регистры внешних устройств, как это обычно и делается в игровых приставках, адресуются процессором аналогично ячейкам памяти и находятся в общем адресном пространстве. Структурная схема центрального процессора приставки SONY PLAYSTATION приведена на рис. 4.2. Как видно из рис. 4.2, процессор содержит арифметико-логическое устройство, набор из 32 регистров общего назначения, схему умножения и деления с собственным 64-разрядным регистром, схему вычисления адреса и схему сдвига, кэш-память для команд (объем 4 Кб) и кэш-память для данных (объем 1 Кб). Взаимодействие блоков центрального процессора происходит с помощью внутреннего устройства управления. Следует отметить, что Рис. 4.2. Структурная схема центрального процессора игровой приставки SONY PLAYSTATION в центральном процессоре SONY PLAYSTATION вместо сопроцессора для вычислений с плавающей точкой есть два специализированных сопроцессора, созданных именно для данной системы. Сопроцессор управления системой (System Control Coprocessor) играет роль дополнительного блока управления, обрабатывая поступающие сигналы и формируя на их основе данные, которые используются центральным процессором для контроля состояния отдельных модулей приставки. Сопроцессор графических вычислений (Graphics Transformation Engine) предназначен для быстрого выполнения операций над матрицами и векторами трехмерной графики. Он не является стандартным сопроцессором для вычислений с плавающей точкой и, кроме того, не участвует в формировании выводимого игровой приставкой изображения, а только выполняет необходимые вычисления. Ниже сопроцессоры будут описаны более подробно. Рассмотрим программную архитектуру процессора, внутренние регистры, систему команд и прерываний. Более полную информацию по архитектуре процессора MIPS R3000 и программированию можно найти в печатных изданиях и на сайтах Internet, перечисленных в конце книги. Регистры процессора Центральный процессор игровой приставки SONY PLAYSTATION содержит 32 регистра общего назначения, счетчик команд PC и 64-разрядный регистр схемы умножения/деления, который доступен как два 32-разрядных регистра с именами HI (старшая половина) и LO) (младшая половина). Список регистров центрального процессора игровой приставки SONY PLAYSTATION приведен в табл. 4.1. Все регистры процессора идентичны. В качестве имени регистра используется его номер. Приведенные во второй и третьей, колонках таблицы имена регистров и особенности их использования не являются обязательными, однако их соблюдение облегчает другим людям чтение и понимание ваших программ. Кроме того, если вы собираетесь пользоваться подпрограммами внутреннего ПЗУ приставки, соблюдение приведенных рекомендаций упростит составление программ. Регистры 0 и 31 являются исключением из правила. Регистр с номером 0 всегда содержит число 0 -независимо от того, что вы в него записали. Регистр 31 применяется командой jal для сохранения адреса возврата (указателя на команду, следующую за jal). Команда jalr может использовать для этой цели любой регистр процессора, однако по умолчанию выбирается 31. Счетчик команд PC во время функционирования процессора служит для выборки команд. Фактически данный регистр не является обычным, поскольку изменение его содержимого происходит при работе процессора или при выполнении команд перехода. Умножение и деление осуществляется посредством двух регистров (HI и LO), которые образуют один 64-разрядный; в системе команд процессора для него предусмотрены отдельные команды. Способы адресации Чтобы процессор работал корректно, в коде команды следует задать местоположение необходимых данных при помощи различных методов адресации. В отличие от рассмотренных ранее, набор методов адресации RISC-процессора может показаться очень небольшим. Регистровая адресация. Наиболее часто используемый метод. В команде указывается регистр процессора, где содержится нужная информация. Например: or t2,a2,v0 ; t2 = а2 OR v0. Непосредственная адресация. В команде имеется непосредственная 16-разрядная константа, которая применяется в качестве операнда. Например: addiu t4,t4,$08 ; t4 = с 4 + 8. Индексная адресация. Адрес вычисляется как сумма содержимого определенного регистра и заданного в команде 16-разрядного смещения. Например: sb vl,txtU(tO) ; Запись ; младшего байта ; из регистра v1 ; по адресу ;(t0 + txtU) . Относительная адресация. Этот метод используется в командах перехода. Адрес следующей выполняемой команды равен сумме текущего значения в регистре PC и смещения, указанного в команде. Система команд Центральный процессор игровой приставки SONY PLAYSTATION может выполнять 120 различных команд. Они делятся на следующие функциональные группы: * команды пересылки данных: LB, LH, LW, SB, SH, SW, LUI; * команды арифметических операций: ADD, ADDI, ADDU, SUB, SUBI, SUBU, MULT, DIV; * команды логических операций: AND, OR, XOR, NOR; * команды сдвига: SLL, SRL, SRA; * команды сравнения: SLT, SLTU, SLTT, SLTIU; * команды перехода: J, JR, BEQ, BNE, BGTZ, BLTZ, BLEZ, BGEZ; Таблица 4.1. Регистры центрального процессора игровой приставки SONY PLAYSTATION Номер регистра | Название | Описание | 0 | ZERO | Регистр всегда содержит константу 0 | 1 | at | Рабочий регистр для временного хранения данных | 2 | v0 | Регистры служат для возврата данных из подпрограммы | 3 | v1 | 4 | a0 | Регистры применяются для передачи аргументов в подпрограмму | 5 | a1 | 6 | a2 | 7 | a3 | 8 | t0 | Регистры общего назначения, могут произвольно использоваться в программах | 9 | t1 | 10 | t2 | 11 | t3 | 12 | t4 | 13 | t5 | 14 | t6 | 15 | t7 | 16 | s0 | Регистровые переменные. Если эти регистры требуются, подпрограмма должна сохранить содержимое и восстановить его перед возвратом | 17 | s1 | 18 | s2 | 19 | s3 | 20 | s4 | 21 | s5 | 22 | s6 | 23 | s7 | 24 | t8 | Регистры общего назначения, могут произвольно использоваться в программах | 25 | t9 | 26 | k0 | Регистры использующиеся операционной системой | 27 | k1 | 28 | gp | Регистр применятся как указатель общего значения | 29 | sp | Регистр играет роль указателя стека | 30 | fp | Регистр выполняет функцию указателя кадра либо дополнительной регистровой переменной | 31 | ra | В регистре сохраняется адрес возврата из подпрограммы |
| pc | Счётчик команд |
| hi, lo | Регистры схемы умножения/деления | * команды работы с подпрограммами: JAL, JALR, BLTZAL, BGEZAL; * команды управления процессором: МТС0, MFC0, МТС1, MFCl, SYSCALL, BREAK, СОР2, RFE. Полная информация о системе команд центрального процессора игровой приставки SONY PLAYSTATION приведена в приложении 1. Сопроцессор управления системой Сопроцессор управления системой SONY PLAYSTATION выполняет функции управления и предназначается для отладочных целей, разрешения ситуаций при возникновении прерывании и исключений, а также для анализа сигналов, поступающих от других модулей. С точки зрения программирования сопроцессор управления системой представляет собой 16 регистров с номерами от 0 до 15. Для работы с ними в системе команд центрального процессора предусмотрены две специальные команды. Команда mtc0rs, c0r копирует значение из регистра rs центрального процессора в регистр с0r сопроцессора. Команда mfс0 rd, c0r пересылает данные из регистра сопроцессора в регистр rd центрального процессора системы. Рассмотрим подробнее внутренние регистры сопроцессора управления системой и их использование при составлении программ. Регистр 0 Имя: INX. Назначение разрядов. Рабочий регистр сопроцессора. Регистр 1 Имя: RAND. Назначение разрядов. Рабочий регистр сопроцессора. Регистр 2 Имя: TLBLO. Назначение разрядов. Рабочий регистр процессора, используемый командой TLB. Более подробную информацию можно найти в документации на процессор MIPS R3000. Регистр 3 Имя: ВРС. Назначение разрядов. В регистр записывается адрес точки останова. При чтении команды, расположенной по указанному адресу, произойдет генерация исключения, и выполнение программы прекратится. Регистр 4 Имя: СТХТ. Назначение разрядов. Рабочий регистр сопроцессора. Регистр 5 Имя: BDA. Назначение разрядов. В регистр записывается адрес точки останова в области данных. При чтении или записи данных по указанному адресу возникнет исключительная ситуация и выполнение программы будет прервано. Регистр 6 Имя: PIDMASK. Назначение разрядов. Рабочий регистр сопроцессора. Регистр 7 Имя: DCIC. Назначение разрядив. Регистр управляет обработкой точек прерывания. Для этого в него записывается код со следующими значениями разрядов: D31, D30 - разряды должны быть равны 1. D29 — разряд должен быть сброшен. D28 - если разряд установлен в 1, то точка прерывания, заданная в регистре 5 (прерывание при обращении к данным), будет срабатывать при записи. D27 - если разряд равен 1, то точка прерывания, указанная в регистре 5, будет срабатывать при чтении. D26 - если разряд равен 1, то сопроцессору разрешено обслуживать точку прерывания, задаваемую в регистре 5 (прерывание при обращении к данным); если разряд сброшен, точка прерывания игнорируется. D25 - если разряд установлен в 1, сопроцессору разрешено обрабатывать точку прерывания, задаваемую в регистре 3 (прерывание при чтении команды); в противном случае точка прерывания игнорируется. D24 — разряд должен быть равен 1. D23 - D0 - разряды должны быть сброшены. Регистр 8 Имя: BADVADDR. Назначение разрядов. При возникновении исключения, связанного с ошибкой адресации при обращении к памяти, здесь сохраняется адрес, обращение к которому вызвало ошибку. Регистр доступен только для чтения. Регистр 9 Имя: BDAM. Назначение разрядов. Маска для точки прерывания при обращении к данным. Когда центральный процессор считывает или записывает данные, выполняется логическая операция И над значением адреса и маской, хранящейся в регистре, после чего результат сравнивается со значением из регистра 5. Использование маcки позволяет ставить точку прерывания, которая срабатывает при обращении к заданному диапазону адресов. Регистр 10 Имя: TLBHI/PID. Назначение разрядов. Внутренний регистр сопроцессора, применяемый при работе команды TLB. За дополнительной информацией об этой команде следует обратиться к документации на процессор MIPS R3000. Регистр 11 Имя: ВСРМ. Назначение разрядов. Маска для точки прерывания при чтении команд. Регистр используется аналогично регистру 9 (BDAM). Задаваемая маска необходима при обращении процессора к памяти с целью чтения команды. Регистр 12 Имя: SR. Назначение разрядов. Регистр состояния системы. Код, записываемый сюда, определяет режим работы центрального процессора. Назначение разрядов в слове состояния следующее: D31 — работа сопроцессора 3 запрещена, если в этом разряде 0, и разрешена, если 1. В приставке PLAYSTATION сопроцессор 3 отсутствует, так что состояние разряда на работу системы не влияет. D30 - регламентирует работу сопроцессора 2 -сопроцессора графических вычислений (Graphics Transformation Engine). Если в разряде 0, функционирование сопроцессора 2 запрещено, при 1 сопроцессор включен. D29 - работа сопроцессора 1 запрещается при записи в разряд 0 и разрешается при 1. Сопроцессор 1 - это сопроцессор для вычислений с плавающей точкой, который отсутствует в игровой приставке. D28 - изменение разряда необходимо для выполнения ряда привилегированных команд. На реализацию обычных команд его состояние не влияет. Если в разряд записан 0, сопроцессор управления системой (сопроцессор 0) работает в режиме ядра; в противном случае он функционирует в пользовательском режиме. D27, D26 - не используются и должны быть равны 0. D25 - разряд определяет размещение многобайтных данных в памяти. Если он равен 0, то младший байт располагается по младшему адресу, если же установлен в 1, данные записываются в обратном порядке: старший байт по младшему адресу. D24, D23 - не используются и равны 0. D22 - если разряд сброшен, то векторы исключений хранятся в ОЗУ, в противном случае — в ПЗУ. D21 - разряд устанавливается, если в программе встретились две команды TLB подряд. D20 - ошибка четности кэша. D19 - разряд показывает результат последней операции загрузки данных с изоляцией кэша данных. Установлен, если необходимая информация содержалась в кэш-памяти. D18 - когда разряд установлен, в бит контроля четности кэша записывается 0. D17 - режим обмена в кэш-памяти. Если бит равен 1, то кэш-память команд будет играть роль кэша данных, а кэш данных - кэша команд. D16 - кэш-память данных работает в обычном режиме, если в разряде установлен 0, и изолируется от шин при 1. В обычном режиме все операции чтения и записи адресуются к кэш-памяти данных, а не напрямую к памяти приставки. D15 - D8 - маска прерываний. Если какой-нибудь разряд установлен, то при поступлении запроса на прерывание с приоритетом, соответствующим этому разряду, будет генерироваться исключение. Когда разряд сброшен, запрос на прерывание игнорируется. D7, D6 - не используются и равны 0. D5 - при возникновении исключения здесь сохраняется состояние разряда D3. D4 - при возникновении исключения здесь сохраняется состояние разряда D2. D3 - при возникновении исключения в разряде устанавливается 1. Команда rfе копирует сюда бит из разряда D5. D2 - при возникновении исключения разряд сбрасывается. Команда rfе копирует в него бит из разряда D4. D1 - 0 - нормальный уровень привилегий; 1 -уровень привилегий ядра. При возникновении исключения этот разряд копируется в разряд D3. Команда rfе помещает сюда бит из разряда D3. D0 - 0 — прерывания разрешены; 1 - все прерывания запрещены. При возникновении исключения состояние этого разряда сохраняется в разряде D2. Команда rfе копирует сюда бит из разряда D2. Регистр 13 Имя: CAUSE. Назначение разрядов. Регистр информации об исключении доступен только для чтения и содержит информацию о последнем возникшем исключении. Назначение разрядов в регистре следующее: D31 - если разряд установлен в 1, то последнее исключение указывает на команду перехода, в этом случае при возврате из процедуры обработки исключения надо пропустить четыре байта. D30 - не используется и равен 0. D29, D28 - номер сопроцессора, выполнение команды которого вызвало возникновение исключения, поскольку работа не была разрешена установкой соответствующего разряда в регистре SR. D27 - D16 - не используются и равны 0. D15 - D8 - сигналы прерываний. Разряд устанавливается в 1, если поступил запрос на прерывание. Разряды D8 и D9 доступны также и для записи, что позволяет генерировать запросы на прерывание программным путем, записывая нужное значение в регистр. Чтобы запрос был обработан процессором, необходимо установить соответствующий разряд в регистре SR. D7 - не используется и равен 0. D6 — D2 - код последнего исключения: 0 - запрос на прерывание; 1 - модификация tlb; 2 - загрузка tlb; 3 - запись tlb; 4 - ошибка адреса при чтении данных или выборке команды; 5 - ошибка адреса при записи (выход за пределы установленного сегмента или неправильное выравнивание данных); 6 - сбой на шине при выборке команды; 7 - сбой на шине при чтении данных; 8 - выполнена команда SYSCALL; 9 - точка останова; 10 - зарезервированная команда; 11 — сопроцессор недоступен; 12 - арифметическое переполнение. DI, DO - не используются и сброшены в 0. Регистр 14 Кия: ЕРС. Назначение разрядов. Регистр содержит адрес возврата из процедуры обработки исключения. Если в регистре CAUSE разряд D32 установлен, возврат выполняется по адресу ЕРС+4. Регистр 15 Имя: PRID. Назначение разрядов. Регистр доступен только для чтения и содержит идентификатор, определяющий тип и модель процессора. Идентификатор процессора возвращается в разрядах D15 - D8, а в разрядах D7 - D0 содержится номер версии. Старшие разряды регистра не используются и сброшены. Регистр 16 Имя: ERREG. Назначение. Рабочий регистр сопроцессора управления системой. Как видно из описания внутренних регистров сопроцессора управления системой, его функции в игровой приставке SONY PLAYSTATION аналогичны функциям устройства управления микропроцессоров, использующихся в других приставках. |