RU2425412C2 - Мультимедиа-процессор, многопоточный по требованию - Google Patents

Мультимедиа-процессор, многопоточный по требованию Download PDF

Info

Publication number
RU2425412C2
RU2425412C2 RU2009135022/08A RU2009135022A RU2425412C2 RU 2425412 C2 RU2425412 C2 RU 2425412C2 RU 2009135022/08 A RU2009135022/08 A RU 2009135022/08A RU 2009135022 A RU2009135022 A RU 2009135022A RU 2425412 C2 RU2425412 C2 RU 2425412C2
Authority
RU
Russia
Prior art keywords
multimedia
applications
application
processing elements
processor
Prior art date
Application number
RU2009135022/08A
Other languages
English (en)
Other versions
RU2009135022A (ru
Inventor
Юнь ДУ (US)
Юнь ДУ
Чунь ЮЙ (US)
Чунь ЮЙ
Гофан ЦЗЯО (US)
Гофан ЦЗЯО
Original Assignee
Квэлкомм Инкорпорейтед
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Квэлкомм Инкорпорейтед filed Critical Квэлкомм Инкорпорейтед
Publication of RU2009135022A publication Critical patent/RU2009135022A/ru
Application granted granted Critical
Publication of RU2425412C2 publication Critical patent/RU2425412C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Image Generation (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Processing (AREA)

Abstract

Изобретение относится к электронике, а конкретно к процессорам. Техническим результатом является возможность одновременной поддержки множества мультимедиа приложений. Устройство содержит мультимедиа-процессор, который может одновременно поддерживать множество приложений для различных типов мультимедиа, таких как графика, аудио, видео, фотоаппарат, игры и т.д. Мультимедиа-процессор содержит конфигурируемые ресурсы памяти для хранения команд, данных и информации состояния для приложений, а также назначаемые элементы обработки для выполнения различных типов обработки для приложений. Конфигурируемые ресурсы памяти могут включать в себя кэш команд для хранения команд для приложений, блоки регистров для хранения данных для приложений, регистры контекста для хранения информации состояния для потоков приложений и т.д. Элементы обработки могут включать в себя ядро арифметико-логического устройства (АЛУ), ядро элементарных функций, логическое ядро, модулятор текстур, блок управления загрузкой, контроллер хода выполнения и т.д. Мультимедиа-процессор выделяет конфигурируемую область ресурсов памяти каждому приложению и динамически назначает элементы обработки приложениям в соответствии с запросами этих приложений. 4 н. и 27 з.п. ф-лы, 10 ил.

Description

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Настоящее раскрытие, в общем, относится к электронике, и, более конкретно, к процессору.
УРОВЕНЬ ТЕХНИКИ
Процессоры широко используются для различных целей, таких как вычисления, связь, организация сети и т.д. Процессор может являться универсальным процессором, таким как центральный процессор (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) и т.д.
Предшествующее описание заявки представлено с той целью, чтобы квалифицированный специалист в данной области техники мог реализовать или использовать данное раскрытие. Различные модификации раскрытия будет очевидны квалифицированным специалистам в данной области техники, и общие принципы, определенные в данном документе, могут быть применены для других изменений без отклонения от формы или объема раскрытия. Таким образом, раскрытие не предполагается ограниченным описанными в нем примерами, но должно рассматриваться в наиболее широких рамках, соответствующих принципам и новым признакам, описанным в данном документе.

Claims (31)

1. Устройство для поддержания множества мультимедиа приложений, включающее в себя мультимедиа-процессор для одновременной поддержки множества мультимедиа приложений, при этом мультимедиа-процессор содержит:
конфигурируемые ресурсы памяти для хранения команд, данных и информации состояния для множества мультимедиа приложений; и
назначаемые элементы обработки для выполнения обработки для множества мультимедиа приложений, при этом мультимедиа-процессор выделяет конфигурируемую область ресурсов памяти каждому мультимедиа приложению и динамически назначает элементы обработки нескольким мультимедиа приложениям в соответствии с запросами мультимедиа приложений, при этом
назначаемые элементы обработки содержат различные элементы обработки, которые выполняют различные типы обработки для множества мультимедиа приложений, и при этом назначенные элементы обработки содержат по меньшей мере одно ядро арифметико-логического устройства (АЛУ), по меньшей мере одно ядро элементарных функций, по меньшей мере одно логическое ядро и по меньшей мере один модулятор текстур.
2. Устройство по п.1, в котором конфигурируемые ресурсы памяти содержат кэш команд для хранения команд для множества мультимедиа приложений, при этом каждому мультимедиа приложению выделяется конфигурируемая область кэша команд.
3. Устройство по п.1, в котором конфигурируемые ресурсы памяти содержат блоки регистров для хранения данных для множества мультимедиа приложений, при этом каждому мультимедиа приложению выделяется конфигурируемая область блоков регистров.
4. Устройство по п.1, в котором конфигурируемые ресурсы памяти содержат
блок памяти для хранения команд или данных для множества мультимедиа приложений, при этом блок памяти связан с виртуальной памятью и физической памятью, и при этом каждому мультимедиа приложению выделяется конфигурируемая область виртуальной памяти, и
по меньшей мере одну таблицу для отображения области виртуальной памяти, выделенной каждому мультимедиа приложению, на соответствующую область физической памяти.
5. Устройство по п.1, в котором мультимедиа-процессор дополнительно содержит:
блок управления загрузкой для извлечения команд и данных для каждого мультимедиа приложения, согласно запросу, из кэш-памяти или основной памяти для хранения в области ресурсов памяти, выделенных мультимедиа приложению.
6. Устройство по п.1, в котором элементы обработки функционируют независимо и каждый элемент обработки может быть назначен любому из множества мультимедиа приложений в заданный временной интервал.
7. Устройство по п.1, в котором мультимедиа-процессор выключает питание элементов обработки, не назначенных ни одному из множества мультимедиа приложений.
8. Устройство по п.1, в котором элементы обработки дополнительно содержат по меньшей мере одно из блока управления загрузкой и контроллера хода выполнения.
9. Устройство по п.1, в котором мультимедиа-процессор дополнительно содержит:
блок входного интерфейса для асинхронного приема потоков от множества мультимедиа приложений; и
блок выходного интерфейса для асинхронного предоставления результатов множеству мультимедиа приложений.
10. Устройство по п.1, в котором мультимедиа-процессор настраивает тактовую частоту в зависимости от загрузки мультимедиа-процессора с целью снижения потребления энергии.
11. Устройство по п.10, в котором мультимедиа-процессор определяет загрузку на основе процента времени, в течение которого элементы обработки являются назначенными в конкретный период времени.
12. Устройство по п.1, в котором мультимедиа-процессор одновременно поддерживает множество потоков для множества мультимедиа приложений.
13. Устройство по п.12, в котором конфигурируемые ресурсы памяти содержат
множество регистров контекста для множества потоков, при этом в каждом регистре контекста хранится информация состояния для связанного с ним потока.
14. Устройство по п.13, в котором информация состояния для каждого потока содержит по меньший мере одно из следующего: счетчик программ, стек для хранения указателей для динамического управления ходом выполнения, адресные регистры для относительной адресации, предикатные регистры для хранения результатов вычисления условий и счетчик указателей загрузки для отслеживания запросов на загрузку и условий возврата данных.
15. Устройство по п.12, в котором каждый поток функционирует на блоке данных, имеющем размер вплоть до заранее определенного значения.
16. Устройство по п.12, в котором каждый поток функционирует на количестве пикселей, составляющем вплоть до четырех, или количестве вершин, составляющем вплоть до четырех, на изображении.
17. Устройство по п.1, в котором мультимедиа-процессор поддерживает один набор команд, подходящий для множества мультимедиа приложений.
18. Устройство по п.1, в котором множество мультимедиа приложений содержит по меньшей мере одно из следующего: графическое приложение, аудио-приложение, видео-приложение, приложение фотоаппарата и игровое приложение.
19. Устройство по п.1, в котором ядро (АЛУ) выполняет арифметические операции, ядро элементарных функций может вычислять элементарные трансцендентные функции без выполнения полиномиальных приближений, логическое ядро может выполнять по меньшей мере одно из: логические операции, поразрядные операции, операции управления буфером данных, и при этом модулятор текстур может выполнять предварительную обработку для процессора текстур.
20. Способ для поддержания множества мультимедиа приложений, содержащий:
одновременную поддержку множества мультимедиа приложений;
выделение конфигурируемой области ресурсов памяти каждому мультимедиа приложению для хранения команд, данных и информации состояния для этого приложения; и
динамическое назначение элементов обработки множеству мультимедиа приложений в соответствии с запросами приложений, при этом
элементы обработки содержат различные элементы обработки, которые выполняют различные типы обработки для множества мультимедиа приложений, и при этом назначенные элементы обработки содержат по меньшей мере одно ядро арифметико-логического устройства (АЛУ), по меньшей мере одно ядро элементарных функций, по меньшей мере одно логическое ядро и по меньшей мере один модулятор текстур.
21. Способ по п.20, в котором выделение содержит
выделение конфигурируемой области кэша команд каждому мультимедиа приложению для хранения команд для этого мультимедиа приложения.
22. Способ по п.20, в котором в котором выделение содержит
выделение конфигурируемой области блоков регистров каждому мультимедиа приложению для хранения данных для этого мультимедиа приложения.
23. Способ по п.20, дополнительно содержащий:
асинхронный прием потоков от множества мультимедиа приложений; и
асинхронное предоставление результатов множеству мультимедиа приложений.
24. Способ по п.20, в котором ядро (АЛУ) выполняет арифметические операции, ядро элементарных функций может вычислять элементарные трансцендентные функции без выполнения полиномиальных приближений, логическое ядро может выполнять по меньшей мере одно из: логические операции, поразрядные операции, операции управления буфером данных, и при этом модулятор текстур может выполнять предварительную обработку для процессора текстур.
25. Мультимедиа-процессор, одновременно поддерживающий множества приложений, содержащий:
средство одновременной поддержки множества мультимедиа приложений;
средство выделения конфигурируемой области ресурсов памяти каждому мультимедиа приложению для хранения команд, данных и информации состояния для этого мультимедиа приложения; и
средство динамического назначения элементов обработки множеству мультимедиа приложений в соответствии с запросами мультимедиа приложений, при этом элементы обработки содержат различные элементы обработки, которые выполняют различные типы обработки для множества мультимедиа приложений, и при этом назначенные элементы обработки содержат по меньшей мере одно ядро арифметико-логического устройства (АЛУ), по меньшей мере одно ядро элементарных функций, по меньшей мере одно логическое ядро и по меньшей мере один модулятор текстур.
26. Мультимедиа-процессор по п.25, в котором средство выделения содержит
средство выделения конфигурируемой области кэша команд каждому мультимедиа приложению для хранения команд для этого мультимедиа приложения.
27. Мультимедиа-процессор по п.25, в котором средство выделения содержит
средство выделения конфигурируемой области блоков регистров каждому мультимедиа приложению для хранения данных для этого мультимедиа приложения.
28. Мультимедиа-процессор по п.25, дополнительно содержащее:
средство асинхронного приема потоков от множества мультимедиа приложений; и
средство асинхронного предоставления результатов множеству мультимедиа приложений.
29. Мультимедиа-процессор по п.25, в котором ядро (АЛУ) выполняет арифметические операции, ядро элементарных функций может вычислять элементарные трансцендентные функции без выполнения полиномиальных приближений, логическое ядро может выполнять по меньшей мере одно из: логические операции, поразрядные операции, операции управления буфером данных, и при этом модулятор текстур может выполнять предварительную обработку для процессора текстур.
30. Беспроводное устройство для поддержания множества мультимедиа приложений, содержащее:
мультимедиа-процессор для одновременной поддержки множества мультимедиа приложений, при этом мультимедиа-процессор содержит конфигурируемые ресурсы памяти для хранения команд, данных и информации состояния для множества мультимедиа приложений; и
назначаемые элементы обработки для выполнения обработки для множества мультимедиа приложений, при этом мультимедиа-процессор выделяет конфигурируемую область ресурсов памяти каждому мультимедиа приложению и динамически назначает элементы обработки множеству мультимедиа приложений в соответствии с запросами мультимедиа приложений; при этом
назначаемые элементы обработки содержат различные элементы обработки, которые выполняют различные типы обработки для множества мультимедиа приложений, и при этом назначенные элементы обработки содержат по меньшей мере одно ядро арифметико-логического устройства (АЛУ), по меньшей мере одно ядро элементарных функций, по меньшей мере одно логическое ядро и по меньшей мере один модулятор текстур,
кэш-память для хранения команд и данных для загрузки в ресурсы памяти.
31. Беспроводное устройство по п.30, в котором ядро (АЛУ) выполняет арифметические операции, ядро элементарных функций может вычислять элементарные трансцендентные функции без выполнения полиномиальных приближений, логическое ядро может выполнять по меньшей мере одно из: логические операции, поразрядные операции, операции управления буфером данных, и при этом модулятор текстур может выполнять предварительную обработку для процессора текстур.
RU2009135022/08A 2007-02-21 2008-02-21 Мультимедиа-процессор, многопоточный по требованию RU2425412C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/677,362 US7685409B2 (en) 2007-02-21 2007-02-21 On-demand multi-thread multimedia processor
US11/677,362 2007-02-21

Publications (2)

Publication Number Publication Date
RU2009135022A RU2009135022A (ru) 2011-04-10
RU2425412C2 true RU2425412C2 (ru) 2011-07-27

Family

ID=39535482

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2009135022/08A RU2425412C2 (ru) 2007-02-21 2008-02-21 Мультимедиа-процессор, многопоточный по требованию

Country Status (10)

Country Link
US (1) US7685409B2 (ru)
EP (1) EP2126690B1 (ru)
JP (1) JP5149311B2 (ru)
KR (1) KR101118486B1 (ru)
CN (1) CN101627367B (ru)
BR (1) BRPI0807951B1 (ru)
CA (1) CA2676184C (ru)
RU (1) RU2425412C2 (ru)
TW (1) TWI367453B (ru)
WO (1) WO2008103854A1 (ru)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2490696C1 (ru) * 2012-07-20 2013-08-20 Открытое акционерное общество "КОНСТРУКТОРСКОЕ БЮРО "КОРУНД-М" (ОАО КБ "КОРУНД-М") Устройство детектирования и корректирования ошибок с функцией самотестирования памяти
RU2538920C2 (ru) * 2013-05-06 2015-01-10 Общество с ограниченной ответственностью "Аби ИнфоПоиск" Способ распределения задач сервером вычислительной системы, машиночитаемый носитель информации и система для реализации способа
RU2637469C2 (ru) * 2013-07-01 2017-12-04 Хуавэй Текнолоджиз Ко., Лтд. Способ, устройство и система осуществления вызовов в видеоконференциях, основанных на унифицированном общении
RU2764173C1 (ru) * 2018-02-23 2022-01-13 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Регистрация входящих потоков кэша по запросу в кэш более высокого уровня

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8276164B2 (en) 2007-05-03 2012-09-25 Apple Inc. Data parallel computing on multiple processors
US8341611B2 (en) 2007-04-11 2012-12-25 Apple Inc. Application interface on multiple processors
US8286196B2 (en) 2007-05-03 2012-10-09 Apple Inc. Parallel runtime execution on multiple processors
US8108633B2 (en) * 2007-04-11 2012-01-31 Apple Inc. Shared stream memory on multiple processors
EP3413198A1 (en) 2007-04-11 2018-12-12 Apple Inc. Data parallel computing on multiple processors
US11836506B2 (en) 2007-04-11 2023-12-05 Apple Inc. Parallel runtime execution on multiple processors
JP2008299610A (ja) * 2007-05-31 2008-12-11 Toshiba Corp マルチプロセッサ
TWI386814B (zh) * 2007-12-31 2013-02-21 Ind Tech Res Inst 具動態工作管理能力之多處理器界面及其程式載卸方法
US8947460B2 (en) 2008-04-22 2015-02-03 Htc Corporation Method and apparatus for operating graphic menu bar and recording medium using the same
US8286198B2 (en) 2008-06-06 2012-10-09 Apple Inc. Application programming interfaces for data parallel computing on multiple processors
US8225325B2 (en) 2008-06-06 2012-07-17 Apple Inc. Multi-dimensional thread grouping for multiple processors
US9013498B1 (en) * 2008-12-19 2015-04-21 Nvidia Corporation Determining a working set of texture maps
US8819258B2 (en) * 2009-05-07 2014-08-26 International Business Machines Corporation Architecture for building multi-media streaming applications
KR20110116553A (ko) * 2010-04-19 2011-10-26 삼성전자주식회사 미디어 프로세싱 애플리케이션 실행 장치 및 방법
CN101901167A (zh) * 2010-07-22 2010-12-01 网御神州科技(北京)有限公司 一种多cpu架构下的多网络安全审计方法和系统
CN101937368A (zh) * 2010-08-31 2011-01-05 苏州阊亦宏环保科技有限公司 一种面向云计算的数据中心管理系统
US8762644B2 (en) * 2010-10-15 2014-06-24 Qualcomm Incorporated Low-power audio decoding and playback using cached images
KR101359717B1 (ko) 2010-11-08 2014-02-07 한국전자통신연구원 에너지 타일 프로세서
US8775836B2 (en) * 2010-12-23 2014-07-08 Intel Corporation Method, apparatus and system to save processor state for efficient transition between processor power states
WO2012087566A2 (en) * 2010-12-23 2012-06-28 Intel Corporation Method, apparatus and system to save processor state for efficient transition between processor power states
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
GB2487355B (en) 2011-01-13 2020-03-25 Advanced Risc Mach Ltd Processing apparatus, trace unit and diagnostic apparatus
US9201689B2 (en) * 2011-04-22 2015-12-01 Cray Inc. Software emulation of massive hardware threading for tolerating remote memory references
US10061618B2 (en) * 2011-06-16 2018-08-28 Imagination Technologies Limited Scheduling heterogenous computation on multithreaded processors
US8935491B2 (en) * 2011-07-15 2015-01-13 Throughputer, Inc. Memory architecture for dynamically allocated manycore processor
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
TWI454905B (zh) 2011-09-30 2014-10-01 Intel Corp 在多核心平台中之受限制的啓動技術
KR101881019B1 (ko) * 2011-10-26 2018-07-24 삼성전자 주식회사 휴대 단말기의 전원절약 장치 및 방법
WO2013149374A1 (zh) * 2012-04-01 2013-10-10 华为技术有限公司 媒体处理系统和处理媒体业务的方法
US9082078B2 (en) * 2012-07-27 2015-07-14 The Intellisis Corporation Neural processing engine and architecture using the same
US9465655B2 (en) 2012-11-28 2016-10-11 Htc Corporation Method for managing threads using executing time scheduling technique and electronic device using the same method
CN103853605B (zh) * 2012-11-28 2017-06-09 宏达国际电子股份有限公司 线程管理方法及其电子装置
US9185057B2 (en) 2012-12-05 2015-11-10 The Intellisis Corporation Smart memory
US9697006B2 (en) * 2012-12-19 2017-07-04 Nvidia Corporation Technique for performing memory access operations via texture hardware
US10007323B2 (en) 2012-12-26 2018-06-26 Intel Corporation Platform power consumption reduction via power state switching
US10437591B2 (en) 2013-02-26 2019-10-08 Qualcomm Incorporated Executing an operating system on processors having different instruction set architectures
US9396012B2 (en) * 2013-03-14 2016-07-19 Qualcomm Incorporated Systems and methods of using a hypervisor with guest operating systems and virtual processors
US9606818B2 (en) 2013-03-14 2017-03-28 Qualcomm Incorporated Systems and methods of executing multiple hypervisors using multiple sets of processors
US10114756B2 (en) 2013-03-14 2018-10-30 Qualcomm Incorporated Externally programmable memory management unit
US9471318B2 (en) * 2013-03-15 2016-10-18 International Business Machines Corporation System management and instruction counting
GB2516435A (en) * 2013-04-05 2015-01-28 Continental Automotive Systems Embedded memory management scheme for real-time applications
JP6094356B2 (ja) * 2013-04-22 2017-03-15 富士通株式会社 演算処理装置
US20140379725A1 (en) * 2013-06-19 2014-12-25 Microsoft Corporation On demand parallelism for columnstore index build
US20150077635A1 (en) * 2013-09-18 2015-03-19 Htc Corporation Method for outputting multiple multimedia tracks along multiple processing paths from a portable electronic device
US9223574B2 (en) * 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
US9542221B2 (en) * 2014-05-22 2017-01-10 Oracle International Corporation Dynamic co-scheduling of hardware contexts for parallel runtime systems on shared machines
US9507655B2 (en) * 2014-10-31 2016-11-29 AppDynamics, Inc. Tracking asynchronous entry points for an application
US9552327B2 (en) 2015-01-29 2017-01-24 Knuedge Incorporated Memory controller for a network on a chip device
US10061531B2 (en) 2015-01-29 2018-08-28 Knuedge Incorporated Uniform system wide addressing for a computing system
US10489197B2 (en) 2015-06-01 2019-11-26 Samsung Electronics Co., Ltd. Highly efficient inexact computing storage device
US10067878B2 (en) 2015-09-23 2018-09-04 Hanan Potash Processor with logical mentor
US9977693B2 (en) 2015-09-23 2018-05-22 Hanan Potash Processor that uses plural form information
US10140122B2 (en) * 2015-09-23 2018-11-27 Hanan Potash Computer processor with operand/variable-mapped namespace
US10095641B2 (en) 2015-09-23 2018-10-09 Hanan Potash Processor with frames/bins structure in local high speed memory
US10061511B2 (en) 2015-09-23 2018-08-28 Hanan Potash Computing device with frames/bins structure, mentor layer and plural operand processing
US9900260B2 (en) 2015-12-10 2018-02-20 Arm Limited Efficient support for variable width data channels in an interconnect network
US10157133B2 (en) 2015-12-10 2018-12-18 Arm Limited Snoop filter for cache coherency in a data processing system
US20170185516A1 (en) * 2015-12-28 2017-06-29 Arm Limited Snoop optimization for multi-ported nodes of a data processing system
US10027583B2 (en) 2016-03-22 2018-07-17 Knuedge Incorporated Chained packet sequences in a network on a chip architecture
US11093286B2 (en) 2016-04-26 2021-08-17 Hanan Potash Computing device with resource manager and civilware tier
US10346049B2 (en) 2016-04-29 2019-07-09 Friday Harbor Llc Distributed contiguous reads in a network on a chip architecture
US9990292B2 (en) 2016-06-29 2018-06-05 Arm Limited Progressive fine to coarse grain snoop filter
US10565024B2 (en) * 2016-10-19 2020-02-18 Oracle International Corporation Generic concurrency restriction
US10209887B2 (en) 2016-12-20 2019-02-19 Texas Instruments Incorporated Streaming engine with fetch ahead hysteresis
US10042766B1 (en) 2017-02-02 2018-08-07 Arm Limited Data processing apparatus with snoop request address alignment and snoop response time alignment
US10409614B2 (en) * 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
US10783011B2 (en) * 2017-09-21 2020-09-22 Qualcomm Incorporated Deadlock free resource management in block based computing architectures
GB201717303D0 (en) 2017-10-20 2017-12-06 Graphcore Ltd Scheduling tasks in a multi-threaded processor
US10606641B2 (en) 2017-10-20 2020-03-31 Graphcore Limited Scheduling tasks in a multi-threaded processor
US11513837B2 (en) * 2018-05-07 2022-11-29 Micron Technology, Inc. Thread commencement and completion using work descriptor packets in a system having a self-scheduling processor and a hybrid threading fabric
US11100604B2 (en) * 2019-01-31 2021-08-24 Advanced Micro Devices, Inc. Multiple application cooperative frame-based GPU scheduling
CN110704368B (zh) * 2019-09-25 2020-11-06 支付宝(杭州)信息技术有限公司 基于fpga的安全智能合约处理器的高效运算方法及装置
CN114968358A (zh) * 2020-10-21 2022-08-30 上海壁仞智能科技有限公司 配置向量运算系统中的协作线程束的装置和方法
US20220263691A1 (en) * 2021-02-16 2022-08-18 Nvidia Corporation Technique to perform demodulation of wireless communications signal data

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10506492A (ja) * 1995-07-21 1998-06-23 フィリップス エレクトロニクス ネムローゼ フェンノートシャップ 高性能密度を有するマルチメディアプロセッサアーキテクチャ
GB2311882B (en) * 1996-04-04 2000-08-09 Videologic Ltd A data processing management system
US5966734A (en) * 1996-10-18 1999-10-12 Samsung Electronics Co., Ltd. Resizable and relocatable memory scratch pad as a cache slice
US6092175A (en) 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US6041400A (en) * 1998-10-26 2000-03-21 Sony Corporation Distributed extensible processing architecture for digital signal processing applications
US6507903B1 (en) * 2000-06-20 2003-01-14 International Business Machines Corporation High performance non-blocking parallel storage manager for parallel software executing on coordinates
US7111294B2 (en) * 2001-01-16 2006-09-19 Microsoft Corporation Thread-specific heaps
JP2004157636A (ja) * 2002-11-05 2004-06-03 Renesas Technology Corp データ処理装置
US7185215B2 (en) * 2003-02-24 2007-02-27 International Business Machines Corporation Machine code builder derived power consumption reduction
KR100591755B1 (ko) 2003-07-22 2006-06-22 삼성전자주식회사 복수의 스레드를 동시에 처리하는 장치 및 방법
US7239322B2 (en) * 2003-09-29 2007-07-03 Ati Technologies Inc Multi-thread graphic processing system
JP2005182791A (ja) * 2003-12-12 2005-07-07 Sharp Corp 汎用組込みプロセッサ
US7386747B2 (en) 2005-05-10 2008-06-10 Qualcomm Incorporated Method and system for reducing power consumption of a programmable processor

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
«Руководство по эксплуатации Nokia E50», 2006, [найдено 30.09.2010]. Найдено в Интернете по адресу URL:http://nds1.nokia.com/phones/files/guides/Nokia_E50_UG_ru.pdf,. *
Ed Suh и др. «Dynamic Cache Partitioning for Simultaneous Multithreading Systems», август 2001, [найдено 30.09.2010]. Найдено в Интернете по адресу URL: http://csg.csail.mit.edu/pubs/memos/Memo-446/memo-446.pdf. *
Karl Guttag и др. «A Single-Chip Multiprocessor for multimedia: the MVP», ноябрь 1992, [найдено 30.09.2010]. Найдено в Интернете по адресу URL: http://pages.cs.wise.edu/~markhill/cs838-david/reader/multimedia.pdf. *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2490696C1 (ru) * 2012-07-20 2013-08-20 Открытое акционерное общество "КОНСТРУКТОРСКОЕ БЮРО "КОРУНД-М" (ОАО КБ "КОРУНД-М") Устройство детектирования и корректирования ошибок с функцией самотестирования памяти
RU2538920C2 (ru) * 2013-05-06 2015-01-10 Общество с ограниченной ответственностью "Аби ИнфоПоиск" Способ распределения задач сервером вычислительной системы, машиночитаемый носитель информации и система для реализации способа
RU2637469C2 (ru) * 2013-07-01 2017-12-04 Хуавэй Текнолоджиз Ко., Лтд. Способ, устройство и система осуществления вызовов в видеоконференциях, основанных на унифицированном общении
RU2764173C1 (ru) * 2018-02-23 2022-01-13 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Регистрация входящих потоков кэша по запросу в кэш более высокого уровня

Also Published As

Publication number Publication date
US7685409B2 (en) 2010-03-23
BRPI0807951B1 (pt) 2019-05-14
CN101627367A (zh) 2010-01-13
RU2009135022A (ru) 2011-04-10
US20080201716A1 (en) 2008-08-21
KR20090115211A (ko) 2009-11-04
JP5149311B2 (ja) 2013-02-20
EP2126690A1 (en) 2009-12-02
EP2126690B1 (en) 2014-04-02
CA2676184C (en) 2014-12-23
WO2008103854A1 (en) 2008-08-28
TW200842757A (en) 2008-11-01
TWI367453B (en) 2012-07-01
CA2676184A1 (en) 2008-08-28
CN101627367B (zh) 2016-04-27
KR101118486B1 (ko) 2012-03-13
JP2010519652A (ja) 2010-06-03
BRPI0807951A2 (pt) 2014-06-03

Similar Documents

Publication Publication Date Title
RU2425412C2 (ru) Мультимедиа-процессор, многопоточный по требованию
US10217183B2 (en) System, method, and computer program product for simultaneous execution of compute and graphics workloads
JP5422614B2 (ja) 低ポート数メモリーを用いたマルチポートメモリーのシミュレート
US10026145B2 (en) Resource sharing on shader processor of GPU
US8345053B2 (en) Graphics processors with parallel scheduling and execution of threads
CN107851004B (zh) 用于在图形处理单元gpu上执行指令的方法和装置
EP2823459B1 (en) Execution of graphics and non-graphics applications on a graphics processing unit
US9176795B2 (en) Graphics processing dispatch from user mode
US20170371654A1 (en) System and method for using virtual vector register files
EP2652615A1 (en) Graphics compute process scheduling
EP3726382A1 (en) Deep learning thread communication
US11347563B2 (en) Computing system and method for operating computing system
US8933942B2 (en) Partitioning resources of a processor
CN117058288A (zh) 图形处理器及方法、多核图形处理系统、电子装置及设备
US9171525B2 (en) Graphics processing unit with a texture return buffer and a texture queue
CN112925616A (zh) 任务分配方法、装置、存储介质及电子设备
US9165396B2 (en) Graphics processing unit with a texture return buffer and a texture queue
US20210183005A1 (en) Graphics instruction operands alias
US20220309606A1 (en) Dynamically reconfigurable register file
US20220206851A1 (en) Regenerative work-groups
CN113138909A (zh) 负载统计方法、装置、存储介质及电子设备
CN115718662A (zh) 协处理器和协处理器的操作方法