RU2425412C2 - Мультимедиа-процессор, многопоточный по требованию - Google Patents
Мультимедиа-процессор, многопоточный по требованию Download PDFInfo
- 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
Links
- 238000012545 processing Methods 0.000 claims abstract description 113
- 230000006870 function Effects 0.000 claims abstract description 41
- 238000000034 method Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 10
- 238000005265 energy consumption Methods 0.000 claims description 2
- 238000007781 pre-processing Methods 0.000 claims description 2
- 238000013507 mapping Methods 0.000 claims 1
- 239000000126 substance Substances 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 12
- 230000008859 change Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000006854 communication Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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, в котором ядро (АЛУ) выполняет арифметические операции, ядро элементарных функций может вычислять элементарные трансцендентные функции без выполнения полиномиальных приближений, логическое ядро может выполнять по меньшей мере одно из: логические операции, поразрядные операции, операции управления буфером данных, и при этом модулятор текстур может выполнять предварительную обработку для процессора текстур.
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)
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)
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)
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 |
-
2007
- 2007-02-21 US US11/677,362 patent/US7685409B2/en active Active
-
2008
- 2008-02-21 CA CA2676184A patent/CA2676184C/en active Active
- 2008-02-21 BR BRPI0807951-0A patent/BRPI0807951B1/pt active IP Right Grant
- 2008-02-21 KR KR1020097019527A patent/KR101118486B1/ko active IP Right Grant
- 2008-02-21 JP JP2009551017A patent/JP5149311B2/ja active Active
- 2008-02-21 RU RU2009135022/08A patent/RU2425412C2/ru active
- 2008-02-21 CN CN200880005385.3A patent/CN101627367B/zh active Active
- 2008-02-21 WO PCT/US2008/054620 patent/WO2008103854A1/en active Application Filing
- 2008-02-21 EP EP08730426.7A patent/EP2126690B1/en active Active
- 2008-02-22 TW TW097106177A patent/TWI367453B/zh active
Non-Patent Citations (3)
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)
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) | 协处理器和协处理器的操作方法 |