МУЛЬТИМЕДИА-ПРОЦЕССОР, МНОГОПОТОЧНЫЙ ПО ТРЕБОВАНИЮ
REQUIREMENT-MULTITHREADED MULTIMEDIA PROCESSOR

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Настоящее раскрытие, в общем, относится к электронике, и, более конкретно, к процессору.
УРОВЕНЬ ТЕХНИКИ
Процессоры широко используются для различных целей, таких как вычисления, связь, организация сети и т.д. Процессор может являться универсальным процессором, таким как центральный процессор (CPU), или специализированным процессором, таким как процессор цифровой обработки сигналов (DSP) или графический процессор (GPU). Универсальный процессор может поддерживать базовый набор команд и базовые функции, которые могут использоваться приложениями различных типов. Универсальный процессор может быть неэффективным для определенных приложений со специфическими вычислительными требованиями. Напротив, специализированный процессор может поддерживать ограниченное множество команд и специализированных функций, которые могут быть настроены для конкретных приложений. Это позволяет специализированному процессору эффективно поддерживать приложения, для которых он разработан. Однако множество приложений, поддерживаемых специализированным процессором, может быть ограниченным. Такие устройства, как сотовый телефон, карманный персональный компьютер (КПК) или портативный компьютер, могут поддерживать приложения различных типов. Является желательным выполнение этих приложений с наибольшей возможной эффективностью и с минимальным возможным аппаратным обеспечением в целях снижения стоимости, потребления энергии и т.д.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
В данном документе описано устройство, включающее в себя мультимедиа-процессор, который может одновременно поддерживать множество приложений. Такие приложения могут предназначаться для различных типов мультимедиа, таких как графика, аудио, видео, фотоаппарат, игры и т.д. Мультимедиа-процессор содержит конфигурируемые ресурсы памяти для хранения команд, данных и информации состояния для приложений, и назначаемые элементы обработки для выполнения различных типов обработки для приложений. Конфигурируемые ресурсы памяти могут включать в себя кэш команд для хранения команд для приложений, блоки регистров для хранения данных для приложений, регистры контекста для хранения информации состояния для потоков приложений и т.д. Элементы обработки могут включать в себя ядро арифметико-логического устройства (АЛУ), ядро элементарных функций, логическое ядро, модулятор текстур, блок регулирования загрузки, контроллер хода выполнения, и т.д., которые могут функционировать в соответствии с описанным ниже. Мультимедиа-процессор выделяет конфигурируемую область ресурсов памяти для каждого приложения и динамически назначает элементы обработки приложениям в соответствии с запросами этих приложений. Таким образом, каждое приложение рассматривает независимый виртуальный процессор, и ему не требуется информации о других одновременно выполняемых приложениях. Мультимедиа-процессор может дополнительно включать в себя блок входного интерфейса для асинхронного приема потоков от приложений, блок выходного интерфейса для асинхронного предоставления результатов приложениям и блок управления загрузкой для считывания команд и данных для приложений из кэш-памяти и/или основной памяти по мере необходимости.
Мультимедиа-процессор может определять загрузку на основании процента времени, в течение которого элементы обработки были назначены приложениям. Мультимедиа-процессор может изменять тактовую частоту на основании загрузки с целью снижения потребления энергии.
Различные аспекты и характеристики данного раскрытия подробнее описаны ниже.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.
На 1 приведена структурная схема мультимедиа-системы.
На Фиг.2 приведена структурная схема мультимедиа-процессора.
На Фиг.3 показано выделение ресурсов памяти для N приложений.
На Фиг.4 показано назначение элементов обработки для N приложений.
На Фиг.5 показан виртуальный процессор для каждого из N приложений.
На Фиг.6 приведена структурная схема планировщика потоков.
На Фиг.7 показана схема запоминающего устройства с архитектурой виртуальной памяти.
На Фиг.8 показаны логическая и физическая таблицы поиска для запоминающего устройства на Фиг.7.
На Фиг.9 показан способ поддержки мультимедиа приложений.
На Фиг.10 показана структурная схема устройства беспроводной связи.
ПОДРОБНОЕ ОПИСАНИЕ
На Фиг.1 приведена структурная схема мультимедиа-системы 100. Система 100 может являться автономной системой или быть частью более крупной системы, такой как вычислительная система (например, портативный компьютер), устройство беспроводной связи (например, сотовый телефон), игровая система (например, игровая приставка) и т.д. Система 100 поддерживает N мультимедиа приложений, которые обозначены как приложения 1-N. В общем случае N может быть любым целым числом. Приложение может также называться программой, программным обеспечением и т.д. Мультимедиа приложение может быть предназначено для любого типа мультимедиа, такого как графика, аудио, видео, фотоаппарат, игры и т.д. Приложения могут запускаться и завершаться в различные периоды времени, и в заданный момент может параллельно выполняться любое количество приложений.
Система 100 может поддерживать 2-мерную (2-D) и/или 3-мерную (3-D) графику. 2-D или 3-D изображение может быть представлено посредством многоугольников (обычно треугольников). Каждый треугольник может быть составлен из элементов изображения (пикселей). Каждый пиксель может обладать рядом свойств, таких как пространственные координаты, значения цвета, координаты текстуры и т.д. Каждое свойство может иметь вплоть до четырех компонентов. Например, пространственные координаты могут быть заданы тремя компонентами x, y и z или четырьмя компонентами x, y, z и w, где x и y являются горизонтальными координатами, z представляет собой глубину, а w является координатой однородности. Значения цвета могут быть заданы тремя компонентами r, g и b или четырьмя компонентами r, g, b и a, где r - красный, g - зеленый, b - синий, и a представляет собой коэффициент прозрачности, определяющий прозрачность пикселя. Координаты текстуры обычно задаются горизонтальной и вертикальной координатами u и v. Пиксель также может быть ассоциирован с другими свойствами.
Система 100 включает в себя мультимедиа-процессор 120, процессор 180 текстур, и конфигурируемую кэш-память 190. Мультимедиа-процессор 120 может выполнять различные виды обработки данных для мультимедиа приложений в соответствии с описанным ниже. Процессор 180 текстур может выполнять графические операции, такие как текстурирование, которое представляет собой сложную графическую операцию, включающую в себя модификацию цвета пикселей цветом изображения текстуры. Кэш-память 190 представляет собой быструю память, в которой могут храниться команды и данные для мультимедиа-процессора 120 и процессора 180 текстур. Система 100 может включать в себя и другие элементы.
Мультимедиа-процессор 120 выполняет обработку данных для N приложений. Мультимедиа-процессор 120 может разделять обработку данных для каждого приложения на ряд потоков, например, автоматически и прозрачно для приложения. Поток (или поток выполнения) может обозначать конкретное задание, которое может быть выполнено посредством множества из одной или более команд. Потоки позволяют приложению выполнять несколько задач одновременно на различных элементах, и, кроме того, позволяют различным приложениям совместно использовать ресурсы памяти и вычислительные ресурсы.
В схеме, приведенной на Фиг.1, мультимедиа-процессор 120 включает в себя блок 122 входного интерфейса, блок 124 выходного интерфейса, планировщик 130 потоков, контроллер 132 хода выполнения, главный контроллер 134, назначаемые элементы 140 обработки, ресурсы 150 конфигурируемой памяти, и блок 170 управления загрузкой. Блок 122 входного интерфейса получает потоки от N приложений и передает эти потоки планировщику 130 потоков. Планировщик 130 потоков выполняет различные функции планирования и управления выполнением потоков в соответствии с описанным ниже. Контроллер 132 хода выполнения осуществляет помощь в управлении потоком приложения/программы. Главный контроллер 134 получает информацию, такую как режим обработки, формат данных и т.д., и соответственно конфигурирует функционирование множества элементов мультимедиа-процессора 120. Например, главный контроллер 134 может декодировать команду, устанавливать состояния для приложений, и управлять последовательностью обновления состояний.
В схеме, приведенной на Фиг.1, назначаемые элементы 140 обработки включают в себя АЛУ-ядро 142, ядро 144 элементарных функций, логическое ядро 146, и модулятор 148 текстур. «Ядро» обычно относится к элементу обработки в пределах интегральной микросхемы. Термины "ядро", "машина", "процессор", "элемент обработки", "элемент аппаратного обеспечения" и т.д. могут использоваться взаимозаменяемо. В общем случае назначаемые элементы 140 обработки могут включать в себя любое число элементов обработки и любой тип элементов обработки. Каждый элемент обработки может функционировать независимо от других элементов обработки.
АЛУ-ядро 142 может выполнять арифметические операции, такие как сложение, вычитание, умножение, умножение с накоплением, скалярное произведение, взятие модуля, отрицание, сравнение, корреляция и т.д. АЛУ-ядро 142 может содержать одно или более скалярных АЛУ и/или одно или более векторных АЛУ. Скалярное АЛУ может единовременно оперировать с одним компонентом. Векторное АЛУ может оперировать с несколькими (например, четырьмя) компонентами одновременно. Ядро 144 элементарных функций может вычислять элементарные трансцендентные функции, такие как синус, косинус, обратную функцию, логарифм, экспоненту, квадратный корень, обратный квадратный корень и т.д., которые могут широко использоваться графическими приложениями. Ядро 144 элементарных функций может повышать производительность путем вычисления элементарных функций за гораздо меньшее время, чем требовалось бы для выполнения полиномиальных приближений элементарных функций с использованием простых команд. Ядро 144 элементарных функций может содержать один или более блоков элементарных функций. Каждый блок элементарных функций может единовременно вычислять элементарную функцию для одного компонента.
Логическое ядро 146 может выполнять логические операции (например, И, ИЛИ, исключающее ИЛИ и т.д.), поразрядные операции (например, сдвиг влево и вправо), целочисленные операции, сравнение, операции управления буфером данных (например, помещение в стек, извлечение из стека и т.д.), и/или другие операции. Логическое ядро 146 также может производить преобразование форматов, например, из целых чисел в числа с плавающей точкой и наоборот. Модулятор 148 текстур может выполнять предварительную обработку для процессора 180 текстур. Например, модулятор 148 текстур может считывать координаты текстуры, присоединять код и/или другую информацию и посылать свои выходные данные на процессор 180 текстур. Модулятор 148 текстур также может давать команды процессору 180 текстур и получать результаты от процессора текстур.
В схеме, приведенной на Фиг.1, ресурсы 150 конфигурируемой памяти включают в себя регистры 152 контекста, кэш 154 команд, блоки 156 регистров и буфер 158 констант. В общем случае ресурсы 150 конфигурируемой памяти могут включать в себя любое количество блоков памяти и любые типы блоков памяти. В регистрах 152 контекста хранится информация состояния или контекст для потоков от N приложений. В кэше 154 команд хранятся команды для потоков. Эти команды задают конкретные операции, которые должны быть выполнены для каждого потока. Каждая из операций может представлять собой арифметическую операцию, элементарную функцию, логическую операцию, операцию доступа к памяти и т.д. По мере необходимости в кэш 154 команд могут быть загружены команды из кэш-памяти 190 и/или из основной памяти (не показана на Фиг.1) посредство блока 170 управления загрузкой. В блоках 156 регистров хранятся данные для приложений, а также промежуточные и конечные результаты от элементов 140 обработки. В буфере 158 констант хранятся значения констант (например, коэффициенты масштабирования, веса фильтров и т.д.), используемых элементами 140 обработки (например, ядром 142 АЛУ и логическим ядром 146).
Блок 170 управления загрузкой может управлять загрузкой команд, данных и констант для N приложений. Блок 170 управления загрузкой взаимодействует с кэш-памятью 190 и производит загрузку команд, данных и констант из кэш-памяти 190 в кэш 154 команд, блоки 156 регистров и буфер 158 констант. Блок 170 управления загрузкой также осуществляет запись данных и результатов из блоков 156 регистров в кэш-память 190. Блок 124 выходного интерфейса принимает конечные результаты для выполненных потоков из блоков 156 регистров и передает эти результаты приложениям. Блок 122 входного интерфейса и блок 124 выходного интерфейса могут предоставлять асинхронный интерфейс внешним устройствам (например, фотоаппарату, устройству отображения и т.д.), связанным с N приложениями.
На Фиг.1 приведен пример схемы мультимедиа-процессора 120. В общем случае мультимедиа-процессор 120 может включать в себя произвольное множество назначаемых элементов обработки и произвольное множество ресурсов конфигурируемой памяти. В ресурсах конфигурируемой памяти могут храниться команды, данные, информация состояния и т.п. для приложений. Элементы обработки могут выполнять любые типы обработки данных для приложений. Контроллер 132 хода выполнения и блок 170 управления загрузкой также могут рассматриваться как назначаемые элементы обработки, даже хотя они и не включаются в множество элементов 140. Мультимедиа-процессор 120 также может включать в себя другие элементы обработки, хранения и управления, не показанные на Фиг.1. Мультимедиа-процессор 120 может выделять конфигурируемую область ресурсов памяти для каждого приложения и динамически назначать приложениям элементы обработки в соответствии с запросами этих приложений.
Мультимедиа-процессор 120 может реализовывать один или несколько графических интерфейсов прикладного программирования (API), например открытую графическую библиотеку (OpenGL), спецификацию D3D, открытую векторную графику (OpenVG) и т.д. Такие различные графические API известны в технике. Мультимедиа-процессор 120 также может поддерживать 2-D графику, 3-D графику, или и то, и другое.
На Фиг.2 приведена структурная схема реализации мультимедиа-процессора 120, показанного на Фиг.1. В данной реализации планировщик 130 потоков взаимодействует с ядром АЛУ 142, ядром 144 элементарных функций, логическим ядром 146 и модулятором 148 текстур, входящими в число назначаемых элементов 140 обработки. Кроме того, планировщик 130 потоков взаимодействует с блоком 122 входного интерфейса, контроллером 132 хода выполнения, главным контроллером 134, регистрами 152 контекста, кэшем 154 команд и блоком 170 управления загрузкой. Блоки 156 регистров взаимодействуют с ядром 142 АЛУ, ядром 144 элементарных функций, логическим ядром 146 и модулятором 148 текстур, входящими в число назначаемых элементов 140 обработки, блоком 170 управления загрузкой и блоком 124 выходного интерфейса. Кроме того, блок 170 управления загрузкой взаимодействует с кэшем 154 команд, буфером 158 констант и кэш-памятью 190. Различные блоки мультимедиа-процессора 120 также могут взаимодействовать друг с другом другими способами.
Основная память 192 может быть частью системы 100 или может быть внешней по отношению к системе 100. Основная память 192 представляет собой крупную, более медленную память, расположенную на удалении (например, вне чипа) от мультимедиа-процессора 120. В основной памяти 192 могут храниться все команды и данные для N приложений, выполняемых мультимедиа-процессором 120. Команды и данные из основной памяти 192 могут загружаться в кэш-память в случае и по мере необходимости.
Мультимедиа-процессор 120 может быть спроектирован и может функционировать таким образом, чтобы он выступал в качестве независимого виртуального процессора для каждого выполняемого приложения. Каждому приложению может быть выделен достаточный объем ресурсов памяти для команд, данных, констант и информации состояния. Каждое приложение может иметь собственное индивидуальное состояние (например, счетчик программ, формат данных и т.д.), который может поддерживаться мультимедиа-процессором 120. Каждому приложению также могут назначаться элементы обработки в зависимости от команд, которые должны быть выполнены для этого приложения. N приложений может выполняться одновременно без создания помех друг для друга и без необходимости получения информации о других приложениях. Мультимедиа-процессор 120 может настраивать исполняемую задачу для каждого приложения на основании требования приложения и/или на основании других факторов, например приоритета.
На Фиг.3 приведен пример выделения ресурсов памяти для N приложений. Каждому приложению может быть выделена часть регистров 152 контекста, часть кэша 154 команд, часть блоков 156 регистров и часть буфера 158 констант. Для каждого элемента памяти его часть, выделяемая заданному приложению, может быть нулевой или ненулевой, в зависимости от требований к памяти для этого приложения.
Регистры 152 контекста могут динамически присваиваться потокам от N приложений, и в них могут храниться различные типы информации для потоков, согласно описанному ниже. Регистры 152 контекста могут обновляться в соответствии с принятием, выполнением и завершением потоков. Кэш 154 команд и блоки 156 регистров могут выделяться каждому из приложений в момент начала его выполнения, например, в соответствии с требованиями приложения. Для каждого приложения выделенные области кэша 154 команд и/или блоков 156 регистров могут изменяться во время выполнения приложения на основании его требований и других факторов. В буфере 158 констант могут храниться константы, которые могут использоваться для любого приложения. Константы для заданного приложения могут загружаться в буфер 158 констант в случае необходимости и могут затем быть доступны для использования всеми приложениями.
Блоки памяти могут быть спроектированы с поддержкой гибкого выделения ресурсов памяти приложениям, в соответствии с описанным ниже. Блоки памяти также могут быть спроектированы для упрощения приложениям доступа к памяти, что также описано ниже.
На Фиг.4 показан пример назначения элементов обработки N приложениям. Для каждого элемента обработки, такого как ядро 142 АЛУ, ядро 144 элементарных функций, логическое ядро 146, модулятор 148 текстур, контроллер 132 хода выполнения и блок 170 управления загрузкой, может поддерживаться отдельная временная шкала. Временная шкала для каждого элемента обработки может быть разделена на временные интервалы. Временной интервал представляет собой наименьшую единицу времени, которая может быть выделена приложению, и соответствует одному или нескольким тактовым циклам. Элементы обработки могут иметь временные интервалы одной и той же продолжительности или разной продолжительности.
Временные интервалы для ядра 142 АЛУ могут быть присвоены любым приложениям. В примере, показанном на Фиг.4, ядро 142 АЛУ назначено приложению 1 (App 1) на временные интервалы t и t+1, приложению 3 на временной интервал t+2, приложению N на временной интервал t+3 и т.д. Таким же образом временные интервалы для ядра 144 элементарных функций, логического ядра 146, модулятора 148 текстур, контроллера 132 хода выполнения и блока 170 управления загрузкой могут быть назначены любому из приложений. Мультимедиа-процессор 120 может динамически назначать по требованию элементы обработки для приложений на основании запросов по обработке данных для этих приложений.
На Фиг.5 показан виртуальный процессор для каждого из N приложений. Каждое из приложений наблюдает виртуальный процессор, имеющий все элементы обработки, используемые этим приложением. Каждому приложению могут быть назначены элементы обработки на основании требований по обработке данных для этого приложения, и назначенные элементы обработки могут быть показаны на временной шкале для этого приложения. В примере, показанном на Фиг.5, приложению 1 назначено ядро 142 АЛУ на временные интервалы t и t+1, затем - логическое ядро 144 на временной интервал t+2, затем блок 170 управления загрузкой на временной интервал t+3, затем ядро 142 АЛУ на временной интервал t+4, затем блок 170 управления загрузкой на временной интервал t+5, затем логическое ядро 144 на временной интервал t+6, и т.д. Приложение 1 не использует (и ему не назначаются) ядро 144 элементарных функций, модулятор 148 текстур и контроллер 132 хода выполнения в течение временных интервалов, показанных на Фиг.5. Приложениям от 2 до N элементы обработки назначаются в других последовательностях.
Как показано на Фиг.5, каждому приложению могут быть назначены соответствующие элементы обработки мультимедиа-процессора 120. Конкретные элементы обработки, которые могут назначаться каждому из приложений, могут изменяться с течением времени в зависимости от требований по обработке данных. Каждому из приложений не требуется информация о других приложениях и о назначении элементов обработки другим приложениям.
Мультимедиа-процессор 120 может поддерживать многопоточность для обеспечения параллельного выполнения команд и повышения суммарной эффективности. Многопоточность относится к параллельному выполнению нескольких потоков различными элементами обработки. Планировщик 130 потоков может принимать потоки от N приложений, определять, какие потоки готовы к выполнению, и планировать эти потоки на различные элементы обработки. Планировщик 130 потоков может управлять выполнением потоков и использованием элементов обработки.
На Фиг.6 показана структурная схема реализации планировщика 130 потоков, приведенного на Фиг.1 и 2. В данной реализации планировщик 130 потоков включает центральный планировщик 610 потоков, высокоуровневый декодер 612, блок 614 контроля использования ресурсов, активную очередь 620, и неактивную очередь 622. Регистры 152 контекста включают в себя T регистров контекста от 630a до 630t для T потоков, где значение T может быть произвольным.
Центральный планировщик 610 потоков может взаимодействовать с элементами 132, 142, 144, 146, 148 и 170 обработки и регистрами контекста 630a-630t через интерфейсы запроса (Req) и разрешения. Планировщик 610 может выдавать запросы в кэш 154 команд и получать в ответ указания «имеется/отсутствует». В общем случае взаимодействие между данными блоками может осуществляться посредством различных механизмов, таких как контрольные сигналы, прерывания, сообщения, регистры и т.д.
Центральный планировщик 610 потоков может выполнять различные функции планирования потоков. Центральный планировщик 610 потоков может определять, принимать ли новые потоки от N приложений, планировать потоки, предназначенные для выполнения, и высвобождать/удалять завершенные потоки. Для каждого потока центральный планировщик 610 потоков может определять, доступны ли требуемые потоком ресурсы (например, команды, элементы обработки, блоки регистров и т.д.), активировать поток и помещать его в активную очередь 620 в случае, если требуемые ресурсы доступны, или помещать поток в неактивную очередь 622, если один из ресурсов недоступен. В активной очереди 620 хранятся потоки, которые готовы к выполнению, а в неактивной очереди 622 хранятся потоки, которые не готовы к выполнению.
Центральный планировщик 610 потоков также может управлять выполнением потоков. В каждом из интервалов планирования (например, временных интервалов) центральный планировщик 610 потоков может выбирать множество потоков-кандидатов в активную очередь 620 для оценки и возможного планирования. Центральный планировщик 610 потоков может определять элементы обработки для использования потоками-кандидатами, проверять наличие конфликтов чтения/записи у блоков памяти, и планировать различные потоки на выполнение на различные элементы обработки. Мультимедиа-процессор 120 может поддерживать одновременное выполнение M потоков, где M может быть любым подходящим значением (например, M=12). Как правило, M может выбираться исходя из объема ресурсов памяти (например, кэша 154 команд и блоков 156 регистров), времени ожидания или задержки для операций загрузки, распределения элементов обработки, и/или других факторов, с тем расчетом, чтобы элементы обработки использовались наиболее полно.
Центральный планировщик 610 потоков может обновлять статус и состояние потоков в случае необходимости. Центральный планировщик 610 потоков может помещать поток в неактивную очередь 622, если (a) следующая команда для потока не обнаружена в кэше 154 команд, (b) следующая команда ожидает результатов от предыдущей команды или (c) выполняются некоторые другие условия неактивности. Центральный планировщик 610 потоков может перемещать поток из неактивной очереди 622 в активную очередь 620 в случае, если условия неактивности больше не выполняются.
Центральный планировщик 610 потоков может поддерживать счетчик команд для каждого потока и может обновлять счетчик команд при выполнении команд или при изменении хода программы. Планировщик 610 может запрашивать помощи у контроллера 132 хода выполнения для контроля хода выполнения программы для потоков.
Контроллер 132 хода выполнения может обрабатывать операторы если/иначе, циклы, вызовы подпрограмм, ветвление, команды выбора, нейтрализации пикселя и/или другие команды изменения хода выполнения. Контроллер 132 хода выполнения может оценивать одно или несколько условий для каждой такой команды, указывать на одно изменение в счетчике команд в случае, если условие(-я) выполняется, и указывать на другое изменение в счетчике команд, если условие(-я) не выполняются. Контроллер 132 хода выполнения также может выполнять другие функции, относящиеся к динамическому процессу выполнения программы. Центральный планировщик 610 потоков может обновлять счетчик команд на основании результатов, полученных от контроллера 132 хода выполнения.
Центральный планировщик 610 потоков также может управлять регистрами 152 контекста и обновлять эти регистры при принятии, выполнении и завершении потоков. В регистрах 152 контекста может храниться информация различных типов для потоков. Например, регистр 630 контекста для потока может хранить (1) идентификатор приложения/программы (ID) для приложения, которому принадлежит поток, (2) счетчик команд, указывающий на текущую команду для потока, (3) маску охвата, указывающую подходящие и неподходящие пиксели для потока, (4) активный флаг, указывающий на то, с какими пикселями осуществляется работа в случае команды изменения процесса выполнения, (5) указатель команды возобновления, который указывает, когда пиксель будет реактивирован, если он неактивен, (б) стек, в котором хранятся указатели команды возврата для динамического управления ходом выполнения, (7) адресные регистры для относительной адресации, (8) предикатные регистры, в которых хранятся результаты расчета условий, (9) счетчик указателей загрузки, который отслеживает запросы на загрузку и условия возврата данных, и/или (10) другую информацию. Регистры 152 контекста также могут хранить меньшее или большее количество этой информации, или другую информацию.
Мультимедиа-процессор 120 может поддерживать полный набор команд для различных мультимедиа приложений. Этот набор команд может включать арифметические команды, команды элементарных функций, логические, поразрядные команды, команды управления ходом выполнения и другие команды.
В целях улучшения производительности может выполняться двухуровневое декодирование команд. Декодер 612 высокого уровня может выполнять высокоуровневое декодирование команд для определения типа команды, типа операндов, идентификаторов источника и места назначения (ID), и/или другой информации, используемой для планирования. Каждый элемент обработки может включать отдельный декодер команд, который выполняет низкоуровневое декодирование команд для этого элемента обработки. Например, декодер команд для ядра 142 АЛУ может обрабатывать только команды, относящиеся к АЛУ, декодер инструкций для ядра 144 элементарных функций может обрабатывать только команды для элементарных функций и т.д. Двухуровневое декодирование может упростить схему центрального планировщика 610 потоков так же, как и декодеры команд для элементов обработки.
Блок 614 контроля использования ресурсов контролирует использование элементов обработки, например, путем отслеживания процента времени, в течение которого каждый элемент обработки является назначенным. Блок 614 контроля может динамически настраивать функционирование элементов обработки с целью сохранения мощности батареи, но при этом обеспечивая необходимое быстродействие. Например, блок 614 контроля может настраивать тактовую частоту для мультимедиа-процессора 120 на основании загрузки мультимедиа-процессора в целях снижения потребления энергии. Блок 614 контроля также может изменять тактовую частоту для каждого отдельного элемента обработки на основании загрузки или проценте использования этого элемента обработки. Блок 614 контроля может выбирать максимальную тактовую частоту для полной загрузки и может выбирать постепенно снижающуюся тактовую частоту для постепенно снижающейся загрузки. Блок 614 контроля также может блокировать/отключать питание любого элемента обработки, который не назначен ни одному приложению, и может активировать/включать питание элемента обработки при его назначении.
Каждый поток может быть пакетным и может работать с блоками данных вплоть до заранее определенного размера. Размер блока данных может выбираться в зависимости от реализации элементов обработки и запоминающих устройств, характеристик обрабатываемых данных и т.д. В одной из реализаций каждый поток работает с количеством пикселей или вершин на изображении, не превышающем четырех. Блоки 156 регистров могут включать четыре блока регистров, в которых может храниться (a) вплоть до четырех компонентов каждого свойства для пикселей, по одному компоненту на блок регистров, или (b) компоненты свойств для пикселей, по одному пикселю на блок регистров. Ядро 142 АЛУ может содержать четыре скалярных АЛУ или вектор АЛУ, который может единовременно работать с количеством компонентов вплоть до четырех.
Блок памяти (например, кэш 154 команд или блоки 156 регистров) может быть реализован с помощью архитектуры виртуальной памяти, которая позволяет эффективно выделять ресурсы памяти приложениям и организовывать быстрый доступ приложений к выделенным ресурсам памяти. Архитектура виртуальной памяти может использовать виртуальную память и физическую память. Приложениям могут выделяться области виртуальной памяти, и приложения могут осуществлять доступ к памяти через виртуальное адресное пространство. Различные области виртуальной памяти могут отображаться на различные области физической памяти, в которых хранятся команды и/или данные.
На Фиг.7 приведена реализация блока 700 памяти с архитектурой виртуальной памяти. Блок 700 памяти может использоваться для кэша 154 команд, блоков 156 регистров и т.д. В этой реализации блок 700 памяти выступает для приложений в роли виртуальной памяти 710. Виртуальная память 710 может быть разделена на несколько (S) логических ячеек или секций, которые обозначаются как логические ячейки 1-S. В общем случае S может быть любым целым числом, большим либо равным N. S ячеек могут иметь одинаковый размер или разные размеры. Каждому приложению может быть выделено любое число последовательных логических ячеек в зависимости от использования памяти приложением и количества доступных ячеек. В примере, показанном на Фиг.7, приложению 1 выделяются логические ячейки 1 и 2, приложению 2 выделяются логические ячейки от 3 до 6 и т.д.
Блок 700 памяти реализует физическую память 720, в которой хранятся команды и/или данные для приложений. Физическая память 720 содержит S физических ячеек 1-S. Каждая логическая ячейка виртуальной памяти 710 отображается на одну физическую ячейку физической памяти 720. Пример отображения для некоторых логических ячеек показан на Фиг.7. В данном примере в физической ячейке 1 хранятся команды и/или данные для логической ячейки S-1 и т.д.
Использование логических ячеек и физических ячеек может упростить выделение ячеек приложениям и управление ячейками. Приложение может запросить определенные объемы ресурсов памяти для команд и данных. Мультимедиа-процессор 120 может выделять для приложения одну или несколько ячеек в кэше 154 команд и одну или более ячеек в блоках 156 регистров. Приложению в случае необходимости могут быть выделены дополнительные ячейки, меньше ячеек или другие логические ячейки.
На Фиг.8 показана реализация таблицы 810 поиска (LUT) логических ячеек и таблицы 820 поиска физических адресов для блока 700 памяти на Фиг.7. В этой реализации таблица 810 поиска логических ячеек включает N записей для N приложений, по одной записи для каждого приложения. N записей могут индексироваться по ID приложения. Запись для каждого приложения включает в себя поле для первой логической ячейки, выделенной приложению, и другое поле для числа логических ячеек, выделенных приложению. В примере, показанном на Фиг.8, приложению 1 выделено две логических ячейки, начиная с логической ячейки 1, приложению 2 выделены четыре логические ячейки, начиная с логической ячейки 3, приложению 3 выделено восемь логических ячеек, начиная с логической ячейки 7, и т.д. Каждому приложению могут выделяться последовательные логические ячейки в целях упрощения генерирования адресов для доступа к памяти. Однако приложениям могут выделяться логические ячейки в любом порядке, например логическая ячейка 1 может быть выделена любому приложению.
В реализации, показанной на Фиг.8, таблица 820 поиска физических адресов содержит S записей для S логических ячеек, по одной записи для каждой логической ячейки. S записей таблицы 820 могут индексироваться по адресу логической ячейки. Запись для каждой логической ячейки указывает на физическую запись, на которую отображается логическая запись. В примере, приведенном на Фиг.7 и 8, логическая ячейка 1 отображается на физическую ячейку 4, логическая ячейка 2 отображается на физическую ячейку 1, логическая ячейка 3 отображается на физическую ячейку i, логическая ячейка 4 отображается на физическую ячейку S-2 и т.д. Таблицы 810 и 820 поиска могут обновляться при выделении приложению дополнительных логических ячеек, меньшего количества логических ячеек и/или других логических ячеек. Приложениям может быть выделено другое количество ресурсов памяти путем простого обновления поисковых таблиц, без необходимости реального переноса команд или данных между физическими ячейками.
Таким образом, блок памяти может быть связан с виртуальной памятью и физической памятью. Каждому приложению может выделяться конфигурируемая область виртуальной памяти. По меньшей мере одна таблица может использоваться для отображения области виртуальной памяти, выделенной для каждого приложения, на соответствующую область физической памяти.
Каждому приложению обычно выделяются ограниченные объемы ресурсов памяти в кэше 154 команд и блоке 156 регистров для хранения, соответственно, команд и данных для этого приложения. В кэш-памяти 190 могут храниться дополнительные команды и данные для приложений. В случае если команда для приложения не доступна в кэше 154 команд, то планировщику 130 потоков может быть возвращен промах кэша, в результате чего он может затем выдать запрос команды в блок 170 управления загрузкой. Аналогично, в случае, когда данные для приложения не доступны в блоках 156 регистров или когда блок памяти переполнен данными, может быть выдан запрос данных блоку 170 управления загрузкой.
Блок 170 управления загрузкой может получать запросы команд от планировщика 130 потоков и запросы данных от других блоков. Блок 170 управления загрузкой может принимать решение по этим различным запросам и генерировать запросы к памяти с целью (a) загрузки необходимых команд и/или данных из кэш-памяти 190 или основной памяти 192 и/или (b) записи данных в кэш-память 190 или основную память 192.
В блоках памяти в пределах мультимедиа-процессора 120 может храниться небольшое количество команд и данных, которые в текущий момент используются приложениями. В кэш-памяти 190 может храниться большее количество команд и данных, которые могут быть использованы для приложений. Мультимедиа-процессор 120 может поддерживать неограниченный доступ к командам и данным через кэш-память 190. Эта возможность позволяет мультимедиа-процессору 120 поддерживать приложения любого размера. Мультимедиа-процессор 120 также может поддерживать общую загрузку памяти и загрузку текстур между кэш-памятью 190 и основной памятью 192.
На Фиг.9 приведен способ 900 поддержки мультимедиа приложений. Множество приложений поддерживается одновременно, например, мультимедиа-процессором (этап 912). Каждому приложению выделяется конфигурируемая область ресурсов памяти для хранения команд, данных и информации состояния для этого приложения (этап 914). На этапе 914 каждому приложению может быть выделена конфигурируемая область кэша команд для хранения команд для приложения, конфигурируемая область блоков регистров для хранения данных для приложения, один или более регистров контекста для хранения информации состояния для приложения и т.д. Элементы обработки динамически назначаются приложениям согласно запросам этих приложений (этап 916). Потоки могут быть асинхронно приняты от приложений и запланированы для выполнения (этап 918). Результаты выполнения потоков могут асинхронно выдаваться приложениям (этап 920).
Мультимедиа-процессор, описанный в данном документе, может применяться в устройствах беспроводной связи, портативных устройствах, игровых устройствах, вычислительных устройствах, устройствах бытовой электроники и т.д. Пример применения мультимедиа-процессора для устройства беспроводной связи описан ниже.
На Фиг.10 показана структурная схема реализации устройства 1000 беспроводной связи в системе беспроводной связи. Беспроводное устройство 1000 может являться сотовым телефоном, терминалом, микротелефонной гарнитурой, карманным персональным компьютером (КПК) или некоторым другим устройством. Система беспроводной связи может быть системой множественного доступа с кодовым разделением (CDMA), глобальной системой мобильной связи (GSM) или некоторой другой системой.
Беспроводное устройство 1000 может предоставлять двунаправленную связь посредством тракта приема и тракта передачи. В тракте приема сигналы, переданные базовыми станциями, принимаются антенной 1012 и передаются приемнику (RCVR) 1014. Приемник 1014 регулирует и оцифровывает принятый сигнал и передает дискретные значения в цифровую секцию 1020 для дальнейшей обработки. В тракте передачи передатчик (TMTR) 1016 получает данные, предназначенные для передачи, от цифровой секции 1020, обрабатывает и регулирует данные и генерирует модулированный сигнал, который передается через антенну 1012 на базовые станции.
Цифровая секция 1020 содержит различные устройства обработки, взаимодействия и памяти, такие как, например, процессор 1022 модема, процессор 1024 цифровой обработки сигналов (DSP), процессор 1026 видео/аудио, контроллер/процессор 1028, процессор 1030 изображений, центральный процессор (CPU)/ компьютер 1032 с сокращенным набором команд (RISC), мультимедиа-процессор 1034, процессор 1036 фотоаппарата, внутреннюю/кэш-память 1038, и интерфейс 1040 внешней шины (EBI). Процессор 1022 модема выполняет обработку для передачи и приема данных (например, кодирование, модуляцию, демодуляцию и декодирование). DSP 1024 может выполнять специализированную обработку для беспроводного устройства 1000. Процессор 1026 видео/аудио выполняет обработку видеоконтента (например, статических изображений, движущихся изображений и движущихся текстов) для видеоприложений, таких как видеокамера, воспроизведение видео или организация видеоконференций. Процессор 1026 видео/аудио также выполняет обработку аудиоконтента (например, синтезированного аудио) для аудиоприложений. Контроллер/процессор 1028 может управлять функционированием различных блоков в пределах цифровой секции 1020. Процессор 1030 изображений выполняет обработку в целях содействия отображению видео, графики и текста на устройстве 1050 отображения. CPU/RISC 1032 может выполнять многоцелевую обработку для беспроводного устройства 1000. Мультимедиа-процессор 1034 выполняет обработку мультимедиа приложений, и может быть реализован согласно описанному выше для Фиг.1-8. Процессор 1036 фотоаппарата выполняет обработку для фотоаппарата (не показан на Фиг.10). Во внутренней/кэш-памяти 1038 хранятся данные и/или команды для различных блоков в пределах цифровой секции 1020, и эта память может реализовывать кэш-память 190, показанную на Фиг.1 и 2. EBI 1040 способствует передаче данных между цифровой секцией 1020 (например, внутренней/кэш-памятью 1038) и основной памятью 1060. Мультимедиа приложения могут выполняться для любых процессоров в цифровой секции 1020.
Цифровая секция 1020 может быть укомплектована одним или более процессорами, микропроцессорами, DSP, RISC и т.д. Цифровая секция 1020 также может изготавливаться на одной или более специализированных интегральных микросхем (ASIC) и/или некоторых других типах интегральных микросхем (IC).
Мультимедиа-процессор, описанный в данном документе, может быть реализован в различных устройствах аппаратного обеспечения. Например, мультимедиа-процессор может быть реализован в ASIC, DSP, цифровых обработчиках сигналов (DSPD), программируемых логических устройствах (PLD), программируемых пользователем вентильных матрицах (FPGA), процессорах, контроллерах, микроконтроллерах, микропроцессорах, электронных устройствах, других электронных блоках. Мультимедиа-процессор может как содержать, так и не содержать интегрированную/встроенную память.
Устройство, реализующее описанный в данном документе мультимедиа-процессор, может являться автономным блоком или частью устройства. Устройство может являться (i) автономной интегральной микросхемой (IC), (ii) множеством из одной или более IC, которое может включать IC памяти для хранения данных и/или команд, (iii) ASIC, такой как модем подвижной станции (MSM), (iv) модулем, который может быть встроен в другие устройства, (v) сотовым телефоном, беспроводным устройством, гарнитурой или мобильной станцией, (vi) и т.д.
Предшествующее описание заявки представлено с той целью, чтобы квалифицированный специалист в данной области техники мог реализовать или использовать данное раскрытие. Различные модификации раскрытия будет очевидны квалифицированным специалистам в данной области техники, и общие принципы, определенные в данном документе, могут быть применены для других изменений без отклонения от формы или объема раскрытия. Таким образом, раскрытие не предполагается ограниченным описанными в нем примерами, но должно рассматриваться в наиболее широких рамках, соответствующих принципам и новым признакам, описанным в данном документе.