A device includes a multimedia processor that can concurrently support
multiple applications for various types of multimedia such as graphics,
audio, video, camera, games, etc. The multimedia processor includes
configurable storage resources to store instructions, data, and state
information for the applications and assignable processing units to
perform various types of processing for the applications. The
configurable storage resources may include an instruction cache to store
instructions for the applications, register banks to store data for the
applications, context registers to store state information for threads of
the applications, etc. The processing units may include an arithmetic
logic unit (ALU) core, an elementary function core, a logic core, a
texture sampler, a load control unit, a flow controller, etc. The
multimedia processor allocates a configurable portion of the storage
resources to each application and dynamically assigns the processing
units to the applications as requested by these applications.