Method and apparatus for optimizing an audio product

By generating and selecting optimized memory allocations, the data blocks of audio objects are assigned to memory at different delay levels, solving the problem of limited processing performance of audio products in small and medium-sized automotive environments, and achieving efficient audio processing and performance improvement.

CN120144271APending Publication Date: 2025-06-13HARMAN BECKER AUTOMOTIVE SYST GMBH
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411719915.8
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-12-13
Filing Date
2024-11-28
Publication Date
2025-06-13

AI Technical Summary

Technical Problem

The prior art has limited processing performance of audio products in small and medium-sized automotive environments, especially in terms of the computing power and memory latency levels of processing devices.

Method used

By generating multiple memory allocations, the data blocks of each audio object are assigned to memory with different delay levels, and the optimized memory allocation is selected by measuring the corresponding workload to improve the overall throughput of the processing device.

Benefits of technology

It realizes efficient processing of audio products on processing devices of different types, architectures and computing capabilities, reduces processor workload and power consumption, and improves the performance of audio products.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120144271A_ABST
    Figure CN120144271A_ABST
Patent Text Reader

Abstract

The invention relates to a computer-implemented method of optimizing an audio product. An audio product includes a plurality of audio objects implemented on a processing device, the processing device including a plurality of memories having particular latency levels. Each of the audio objects requires storage capacity for at least one data block. The method includes generating a plurality of memory allocations. Each of the plurality of memory allocations assigns each data block of each audio object to one of the plurality of memories. The method further includes determining, for at least some of the plurality of memory allocations, respective workloads associated with the respective memory allocations, including: configuring the plurality of audio objects according to the respective memory allocations; executing, on the processing device, an audio product comprising the plurality of configured audio objects; and determining a respective workload of the processing device during execution of the audio product. One of the plurality of memory allocations is selected as an optimized memory allocation based on the plurality of respective workloads.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to a method and apparatus for optimizing an audio product, and more particularly to a method and apparatus for optimizing the processing of an audio product on a processor. Background Art

[0002] Companies and developers who want to create and customize audio systems and algorithms can use software frameworks as flexible and extensible platforms to design and implement audio processing solutions in various applications (such as automotive audio systems). The software platform can provide a set of tools and libraries to help design, simulate, and optimize the audio processing pipeline, thereby making it easier to integrate advanced audio features into products. The software framework can include an audio algorithm toolbox, which is a collection of software tools and algorithms that help engineers and developers enhance the audio quality and functionality of their products. The collection can include a wide range of signal processing algorithms, audio effects, and audio enhancement techniques. These tools can be used to develop applications for noise reduction, audio equalization, sound enhancement, and so on. The toolbox can be designed to be versatile, allowing developers to select and customize the algorithms that best suit their specific audio processing needs. In addition, the software framework can include tuning tools, which are software applications for fine-tuning and optimizing audio systems. The tuning tools can provide a user-friendly interface to adjust and optimize the acoustic performance of audio products, such as automotive infotainment systems or home audio settings. The tools can allow audio engineers to customize sound characteristics, equalization settings, and other parameters to achieve the desired audio quality and listening experience. An audio product designed in this way can be processed on a processing device that includes one or more processors and associated memory. However, the processing performance of the processing device may be limited, especially in a mid-size or small automotive environment. Summary of the Invention

[0003] In view of the above situation, there is a need to optimize the processing of audio products on processing devices of different types, architectures, and / or computing capabilities.

[0004] According to the present application, this need is met by the features defined in the independent claims. The dependent claims define embodiments.

[0005] A computer-implemented method for optimizing an audio product is provided. The audio product includes a plurality of audio objects implemented on a processing device. The processing device may include one or more processors, such as a digital signal processor and / or a general-purpose processor. The processing device includes a plurality of memories each having a specific latency level. Each of the plurality of audio objects requires a memory capacity for at least one data block. The at least one data block may be used to store, for example, an audio signal to be processed or a portion of the audio signal, a configuration of the audio object, coefficients for processing the audio signal (such as filter coefficients), or a portion of software that implements at least some functions of the audio object. For example, the data block may have a size in the range from a few bytes (such as 50 bytes) to several megabytes (such as 5 MB to 10 MB). Each of the plurality of memories may include, for example, an external memory coupled to the processor or an internal cache memory of the processor. There may be different types of external memories coupled to the processor with different access times. The external memory may have a size from several megabytes to up to several gigabytes. The processing device (especially the processor of the processing device) may include different internal cache memories with different access times, such as a level 1 (L1) cache, a level 2 (L2) cache, and so on. The size of the internal cache may be in the range from several kilobytes to several megabytes. For example, a certain number of different memory types with different latency levels (i.e., different access times) may be defined. For example, 16 different latency levels may be defined.

[0006] The method includes generating a plurality of memory allocations. Each of the plurality of memory allocations assigns each data block of each audio object to one of the plurality of memories. However, when generating the plurality of memory allocations, each of the plurality of memory allocations may be generated by considering the specific size of each of the data blocks and the size of each of the plurality of memories. For example, some of the data blocks may be assigned to the same memory as long as the cumulative size of the data blocks does not exceed the size of the memory. The plurality of memory allocations may at least include different memory allocations that assign a specific data block of a specific audio object to different memories having different latency levels. For example, the plurality of memory allocations may include: in different memory allocations, a specific data block of a specific audio object is assigned to memories of all available latency levels and has a size greater than the size of the specific data block. In some examples, considering the size of each of the plurality of memories and the specific size of each of the data blocks, the plurality of memory allocations may include all possible combinations of assigning data blocks of audio objects to memories having different latency levels.

[0007] The method further includes determining, for at least some of a plurality of memory allocations, a respective workload associated with the respective memory allocation. To determine the respective workload for a respective memory allocation, a plurality of audio objects are configured according to the respective memory allocation, and an audio product including the plurality of configured audio objects is executed on a processing device including a plurality of memories. A respective workload of the processing device is determined during execution of the audio product. The respective workload of the processing device can vary significantly depending on the configured memory allocation. The respective workload can be defined as a relationship between the performance required to execute the audio product on the processing device and the maximum performance of the processing device. In some examples, the workload can be measured in millions of instructions per second (MIPS). A particular audio data block of an audio object can be assigned to a level 1 cache of the processing device in a first memory allocation and to an external memory in a second memory allocation. In the configuration of the first memory allocation, the processor of the processing device may require fewer instructions to execute a task of the audio object than in the configuration of the second memory allocation because the process must include or execute several wait cycles or no-operation cycles due to the higher latency of the external memory. As a result, for the same task of an audio object, the required MIPS can vary significantly, and the overall throughput of the processing device can be improved by reducing the MIPS for each audio object. Accordingly, according to the method, one of the plurality of memory allocations is selected as an optimized memory allocation based on the plurality of respective workloads.

[0008] Since the respective workload is measured on a real system, such as the target system, the resulting workload will be reliably achieved in a real-world application and thus a high confidence can be achieved. The plurality of memory allocations can be automatically generated and automatically applied to the real system such that the developer of the audio product does not concern themselves with this task. In particular, by generating and applying computer-based memory allocations, it becomes feasible to generate and test all possible combinations like brute force.

[0009] In some examples, the respective workload can be continuously determined for at least some of the plurality of memory allocations. In other embodiments, the respective workload can be determined in parallel on processing devices operating in parallel.

[0010] In some examples, the respective workload can be continuously determined for at least some of the plurality of memory allocations until at least one of the respective workloads meets a predefined workload threshold. For example, the method can terminate when a memory allocation is found in which the workload is less than, for example, 80% of the maximum workload that the processing device is capable of achieving.

[0011] According to various examples, performing an audio product on a processing device includes applying a predefined signal to be processed by the processing device. The predefined signal may include a mixture of typical expected audio signals to be processed by the audio product, including, for example, different types of music, speech, and ambient noise that may be expected in the usage environment, such as noise from a driving motor and wind noise in a vehicle.

[0012] Each audio object may include instructions for processing an audio signal when executed on a processing device. The instructions may be configured to implement functions such as mixers, filters, limiters, speech management (such as speech recognition and filtering), and noise management (such as noise reduction or noise cancellation). A plurality of different audio object types may be defined, for example, about 50 to 100 different types, and the audio product may include dozens or hundreds of audio object instances. A particular audio object type may be instantiated only once or multiple times in the audio product.

[0013] According to some additional aspects, a device for optimizing an audio product is provided. The audio product includes a plurality of audio objects implemented on a processing device. Each of the plurality of audio objects requires a storage capacity for at least one data block. The processing device includes a plurality of memories for storing data blocks. Each of the plurality of memories has a specific latency level. The latency level may relate to the access time for writing data to and reading data from a particular type of memory. In some memory types, the latency level may be characterized by the time required to access a set of memory cells. For example, some memory types may require a setup time to access a set of, for example, 1024 cells, and after the setup time, 1024 cells may be read or written at high speed without the setup time for each cell. In some memory types, each cell may be accessible for reading and writing at a certain fixed access time. In certain memory types, writing to a cell may require a certain fixed write access time, while reading from the cell may require a different (e.g., lower than the write access time) certain fixed read access time. Some memory types may be arranged outside the processor, while some other memory types may be arranged as cache memories inside the processor. Different levels of cache memories may be provided. The memory size of each memory type may vary, for example, external memory may be larger than cache memory, and a lower-level cache may be smaller than a higher-level cache. For example, a level 1 (L1) cache may have only a few kilobytes, a level 3 (L3) cache may have several megabytes, and a level 2 (L2) cache may have a size between the L1 cache and the L2 cache.

[0014] The apparatus for optimizing an audio product includes an interface for communicating with a processing device and a processing unit. The processing unit is configured to generate a plurality of memory allocations. Each of the plurality of memory allocations assigns each data block of each audio object to one of the plurality of memories, i.e., each of the plurality of memory allocations includes an assignment of a memory for each data block of each audio object such that each data block can be stored. Several data blocks may be assigned to a particular memory as long as the particular memory has sufficient capacity to store the several data blocks. The processing unit is further configured to determine a corresponding workload associated with a respective memory allocation for at least some of the plurality of memory allocations. To achieve this, the processing unit includes, for a respective memory allocation of the plurality of memory allocations: downloading, via the interface, the configuration of a plurality of audio objects according to the respective memory allocation to the processing device; instructing the processing device to execute an audio product including the plurality of configured audio objects; and receiving, during the execution of the audio product, the respective workload of the processing device from the processing device. The processing unit selects, based on the plurality of respective workloads, one of the plurality of memory allocations as an optimized memory allocation.

[0015] The apparatus may be configured to perform the method of any of the above examples.

[0016] Without departing from the scope of the present invention, the features listed above and those described below may be used not only in the explicitly described corresponding combinations, but also in other combinations or separately. BRIEF DESCRIPTION OF THE DRAWINGS

[0017] The present invention will be described more fully hereinafter with reference to the accompanying drawings, in which embodiments of the invention are shown. However, the invention should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Like numbers always refer to like elements.

[0018] Figure 1 An audio product according to one of several embodiments is schematically shown;

[0019] Figure 2 An audio product connected to an apparatus for optimizing an audio product according to one of several embodiments is schematically shown;

[0020] Figure 3 A flowchart of a method for optimizing an audio product according to one of several embodiments is shown;

[0021] Figure 4 A memory allocation according to one of several embodiments is shown. DETAILED DESCRIPTION

[0022] In conjunction with the description of the exemplary embodiments described in more detail below in conjunction with the accompanying drawings, the nature, features, and advantages of the present invention described above, as well as the manner of achieving the same, will become clearer and easier to understand. For simplicity and illustrative purposes, the present invention is described by mainly referring to the exemplary embodiments of the present invention. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to those of ordinary skill in the art that the present invention may be practiced without being limited to these specific details. In this description, well-known methods and structures are not described in detail so as not to unnecessarily obscure the present invention.

[0023] Figure 1 An audio product 100 is shown. The audio product 100 may be configured for use in an automotive environment, such as a car radio or a car entertainment system. In other examples, the audio product 100 may be configured to be used as a hi-fi system in a home environment or as a public access or surveillance system in a public environment such as a theater or a concert hall. The audio product 100 may include a processing device 102, a user interface 106, and one or more power amplifiers 108. The audio product 100 may be coupled to one or more speakers 150. In other examples, the speaker 150 may be included in the audio product 100, such as in a portable hi-fi system. The audio product 100 may include other components, such as an interface for receiving audio data output by the audio product 100, such as a wireless or wired Internet connection for receiving audio streaming data, or a radio receiver for receiving radio broadcast services.

[0024] The processing device 102 may be a digital processing device, which includes a processor 104, memories 112, 114, and one or more input / output units 110. The memories 112, 114 may include random access memory (RAM), read-only memory (ROM), flash memory, a hard disk, etc., for storing software to be executed by the processor 104 and data. The memories 112, 114 are external to the processor 104 and are therefore often referred to as external memories. The data may include audio data as well as configuration data such as filter coefficients. Different types of memories 112, 114 with different delays or access times and sizes may be provided. For example, the memory 112 may be a static RAM (SRAM) with an access time of a few nanoseconds and a size of several hundred megabytes. The memory 114 may be a dynamic RAM (DRAM) with an access time slower than that of SRAM, such as 1.5 or 2 or 4 times slower than SRAM, and a size of several GB. Generally, faster RAM is more expensive than slower RAM not only in terms of cost but also in terms of size and power consumption. Although Figure 1Only two different types of memories are shown, but the processing device 102 may include more than just these two types of memories, for example, four types or more.

[0025] The processor 104 may include one or more general-purpose processors and / or digital signal processors (DSPs) or any other type of processor configured to handle audio functions on audio data. The processor 104 may include internal memories 116, 118, also known as cache memories. The processor 104 may include several cache memories at different levels, such as L1 cache 116 and L2 cache 118. Although Figure 1 only two levels of caches are shown, the processor 104 may include more than just these two levels, for example, four levels or more. The L1 cache 116 may have a shorter access time than the L2 cache 118, that is, the L1 cache 116 is faster than the L2 cache 118. The size of the L1 cache 116 may be smaller than the size of the L2 cache 118. For example, the size of the L1 cache 116 may be a few kilobytes, such as 16 kB to 128 kB, while the size of the L2 cache 118 may be up to several megabytes, such as 1 MB to 4 MB.

[0026] The processor 104 may be configured to execute software including instructions for processing audio data. The software may include audio objects, which are software components configured to perform certain audio processing functions when executed. Multiple audio objects may be included in the software executed on the processor 104. Audio objects may implement functions such as filtering, speech processing, noise management, encoding and decoding of audio data, etc. A processing pipeline may be implemented by multiple audio objects. The processor 104 may implement any number of audio objects, for example, dozens of audio objects to up to one hundred audio objects or more.

[0027] In Figure 1 the example shown, the processor 104 implements eight audio objects 120 to 134. Each audio object may require some memory space to store data. For example, a filter audio object may require memory space to store filter coefficients, input audio data to be filtered, and filtered output audio data. For example, each audio object may require memory space for one or more data blocks. Each data block may have a specific size defined by the audio object. A filter audio object may require memory space for three data blocks, such as a large data block for input audio data, a small data block for filter coefficients, and a large data block for output audio data. Each audio object may be configured to store each data block in a specific area of the memory accessible by the processor 104. Each specific area may be specified by its start address and size or by its start address and end address. As Figure 1As indicated, audio object 120 may only require a single data block, and audio object 120 may be configured to store this data block in memory 114. Similarly, audio object 122 may only require a single data block, and audio object 122 may be configured to store this data block in memory 114. Audio object 124 may also require a single data block, and audio object 124 may be configured to store this data block in memory 112. Audio object 126 may require storage memory for two data blocks, and audio object 126 may be configured to store one of these data blocks in memory 112 and the other of these data blocks in memory 114. Audio object 128 may require storage capacity for a single data block and may be configured to use cache memory 118. Audio object 130 may require storage capacity for two data blocks and may be configured to use cache memory 118 for one of these data blocks and cache memory 116 for the other. Audio object 132 may require storage capacity for one data block and may be configured to use cache memory 116. Finally, audio object 134 may require storage capacity for two data blocks and may be configured to use cache memory 116 and external memory 114.

[0028] As described above, processor 104 (such as a DSP) may have different data storage systems. For example, internal cache memory and external memory. Each type of memory may have different access times. Depending on where the data used by the audio object is placed, processor 104 may retrieve or store data faster or slower and may perform operations faster or slower. However, the fastest memory may not be suitable for all audio objects. For example, in an automotive environment, fast or cache memory may be sparse, especially in economy vehicles equipped with entry-level audio systems. Therefore, placing data blocks in the optimal memory may be very important for obtaining the best performance for the processing pipeline.

[0029] For example, the developer or engineer of the audio product 100 may consider the following to obtain optimal performance. It can be calculated how much memory the processing pipeline requires. Additionally, the developer may need to identify and understand the most frequently used data blocks. This may require insight and expertise into the audio objects. The frequently used data blocks can be allocated in the fastest available memory, e.g., in the caches 116, 118 on the processor 104. Since the availability of the fastest memory (e.g., the cache memory 116 in the processor 104) is limited, the process of identifying and assigning the critical data blocks can be difficult and time-consuming. Once the memory placement is complete, it may be necessary to compile the processing pipeline and / or the code of the audio objects, and the binary files can be downloaded to the target hardware or platform of the audio product and tested. The whole process can be repeated until optimal performance is achieved. Such processing can be expensive, especially when the same or similar processing pipeline is to be implemented on different processing devices with different memory architectures and processing capabilities.

[0030] The development kit can provide a simple way to configure the memory latency by exposing to the developer the various possible memory types available on the processor. When creating the processing pipeline, a new memory allocation on the processor can be implemented, for example, on a graphical user interface, by the developer assigning one of the various available memory types to each data block of each audio object. The schema on the graphical user interface can show the memory latency configuration. The audio objects can be reconfigurable in terms of their memory allocation without the need to change the code and download the binary files. Instead, for each of the audio objects, only the configuration regarding the memory usage can be downloaded on the target platform. The development speed can be increased and thus the cost can be reduced.

[0031] The monitoring tool provided on the platform can measure the execution speed of the processing pipeline. For example, the monitoring tool can measure the workload of the processor 104. The workload can be determined in terms of instructions per second or millions of instructions per second (MIPS). When the processor often waits to read data from or store data to slow memory, the processor can execute wait instructions, such that the amount of MIPS required to execute a specific task increases. On the other hand, with the improved memory allocation, when the processing pipeline is executed, the number of wait instructions executed by the processor can be reduced, such that the amount of MIPS is reduced and the overall workload of the processor is reduced. This can reduce the power consumption and enable the processing pipeline to be implemented on less expensive processing devices.

[0032] The developer can change the memory allocation on the graphical user interface and measure the MIPS of each configuration. Receive the corresponding schema from the platform showing the workload measurement (e.g., MIPS). However, this may still be a time-consuming process.

[0033] Figure 2 An apparatus 200 for automatically optimizing an audio product 100 is shown. The apparatus or user interface device 200 includes a processing unit 202, a memory 204, and an interface 206. The user interface device 200 may include additional components, such as a user interface including a display, a keyboard and a mouse, a power supply unit, etc. The device 200 may include a personal computer, a laptop computer, a notebook computer, a tablet computer, a server, a workstation, or any other type of computer. The interface 206 may be configured to communicate with the audio product 100. Specifically, the interface 206 may be configured to download software and data (such as configuration data) to the audio product 100, and upload data from the audio product 100, such as the workload measurement discussed above. The interface 206 may be configured to instruct the audio product 100 to execute the software downloaded to the audio product 100. The interface 206 may be configured to provide data to be processed by the audio product 100, such as audio streaming data to be processed and output by the audio product 100. The processing unit 202 may be a general-purpose processing unit, such as a central processing unit (CPU). The memory 204 may include different types of memories, such as a main memory including a read-only memory (ROM) and a random access memory (RAM), and a mass storage memory, such as a hard disk (HD) or a solid-state drive (SSD). The interface 206 may include any kind of data interface, such as a local area network (LAN), a universal serial bus (USB), a controller area network (CAN), a wireless interface such as Bluetooth or WLAN, or a proprietary database specifically designed to communicate with the audio product 100.

[0034] The processing unit 202 may be configured to execute software that performs a method for optimizing the audio product 100. Figure 3 An exemplary method for optimizing the audio product 100 is shown. The method 300 includes method steps 302 to 312 that may be executed by the processing unit 202. The method steps 302 to 312 may be executed Figure 3 in the order shown and described below. However, the method steps 302 to 312 may be executed in any other suitable order or in parallel.

[0035] In step 302, a plurality of memory allocations are generated. Each memory allocation includes assigning each data block of each audio object to a certain type of memory.

[0036] Figure 4 Three different memory allocations 400, 402, and 404 for the audio product 100 are shown. In Figure 4In the example, it is assumed that the processing device 102 includes three different memories 410, 412, and 414. Each memory may have a specific access time and size. Memory 410 may be the smallest memory with the shortest access time. Memory 410 may be the internal cache memory corresponding to Figure 1 the memory 116 in Figure 1 . Memory 412 may be larger than memory 410 and may have a medium access time. Memory 412 may be the internal cache memory corresponding to, for example, Figure 1 the memory 118 in Figure 1 , or the fast external memory corresponding to the memory 112 in, for example, Figure 4 . Memory 414 may even be larger than memory 412, but may have the longest access time, that is, longer than the medium access time of memory 412. Memory 414 may be the external memory corresponding to Figure 4 the memory 112 or 114 in

[0037] . Although Figure 4 the area sizes of memories 410, 412, 414 in

[0038] should schematically indicate their storage capacity sizes,

[0039] Figure 4 is only a schematic diagram, and in an actual system, the size of the external memory 414 may be 10 times, 100 times, or even more times larger than the size of each of the cache memories 410, 412, that is, the external memory 414 may have a size of several hundred megabytes or even several gigabytes.

[0037] In the example shown in Figure 4 , three audio objects AO1 to AO3 are implemented in the audio product 100, and the data blocks of the three audio objects require memory space. The audio object AO1 requires memory space for four data blocks AO1:DB1, AO1:DB2, AO1:DB3, and AO1:DB4, the audio object AO2 requires memory space for three data blocks AO2:DB1, AO2:DB2, and AO2:DB3, and the audio object AO3 requires memory space for three data blocks AO3:DB1, AO3:DB2, and AO3:DB3. As shown by the areas of the data blocks, each data block requires a certain amount of memory space, that is, AO1:DB1 requires much less memory space than AO1:DB3.

[0038] According to these examples, in the memory allocation 400, the data block DB1 of the audio object AO1 and the data block DB1 of the audio object AO2 are assigned to the memory 410. With these data blocks, the capacity of the memory 410 is basically exhausted. Therefore, the data blocks AO3:DB3, AO2:DB3, and AO1:DB2 are assigned to the memory 412, such that the memory 412 is basically fully occupied. The remaining data blocks are assigned to the memory 414.

[0039] In memory allocation 402, data block DB3 of audio object AO2 is assigned to memory 410. This data block AO2:DB3 is so large that no other additional data blocks can be loaded into memory 410. Data blocks AO2:DB2 and AO1:DB1 can be assigned to memory 412, and so much memory is required that no other additional data blocks are loaded into memory 412. The remaining data blocks are assigned to memory 414.

[0040] In memory allocation 404, data block DB1 of audio object AO1 and data block DB2 of audio object AO3 are assigned to memory 410. With these data blocks, the capacity of memory 410 is substantially exhausted. Data blocks AO2:DB3 and AO3:DB1 are assigned to memory 412 such that memory 412 is substantially fully occupied. The remaining data blocks are assigned to memory 414.

[0041] Additional memory allocations may be generated. For example, corresponding memory allocations may be generated for each possible combination of data block to memory type assignment. When assigning data blocks, faster memories 410 and 412 may be preferred. When generating memory locations, size limitations may be considered. For example, in Figure 4 the example, data blocks AO2:DB2 and AO1:DB3 cannot be assigned to memory 410. As described below, memory allocations may be continuously generated while applying the memory allocation to audio product 100.

[0042] However, after generating at least one memory location in step 302, in step 304, the first of the at least one memory allocation is downloaded from device 200 to audio product 100 via interface 206. In response to the download, processor 104 configures the audio objects according to the downloaded memory allocation (e.g., according to Figure 4 allocation 400). In step 306, device 200 instructs processor 104 to start executing audio product 100. Executing audio product 100 may include processing of audio data, such as receiving audio data from a streaming service via the Internet, receiving the broadcast audio data (analog or digital), or reading audio data from a mass storage device such as a flash memory, CD, DVD, or memory card. The processing may include, for example, decoding and filtering the audio data and preparing the audio data for output by power amplifier 108. The audio data to be processed may be predefined test audio data provided by device 200.

[0043] While executing an audio product 100 that includes processing audio data, a monitoring tool may determine the workload of a processing device 202 caused by executing the audio product 100. The monitoring tool may be software executed on a processor 104. In some examples, the workload may be determined based on a percentage of the maximum processing capacity provided by the processing device 202. In other examples, the workload may be determined as the number of millions of instructions per second (MIPS) required to execute the audio product 100. In step 308, the device 200 may request and receive the determined workload from the audio product 100. In some examples, after being determined, e.g., after processing predefined test audio data, the determined workload may be automatically transmitted from the audio product 100 to the device 200 immediately.

[0044] In step 310, the device 200 may decide whether to apply and test another memory allocation. For example, the device 200 may continue to apply and test additional memory allocations until all possible memory allocations have been tested. As described above, all memory allocations may be initially determined at step 302. In this case, the process may continue to apply the next memory allocation in step 304. In some examples, the memory allocations may be determined sequentially, with each of one or more subsequent memory allocations being after applying the previous memory allocation. In this case, the method may continue to generate the next memory allocation in step 302 and apply the next memory allocation in step 304. In various examples, the device 200 may compare in step 310 whether the determined workload is below a workload threshold. The workload threshold may be a predefined threshold indicating, e.g., a certain percentage of the maximum workload that the processing device 102 can achieve. For example, the workload threshold may be 80% of the maximum workload of the processing device 102. The workload threshold may be configured by a developer using the device 200. If the determined workload is not below the workload threshold, the method continues to generate the next memory allocation in step 302 or directly applies the next memory allocation in step 304. For each of the memory allocations applied, the corresponding determined workload may be stored in the memory 204 in association with the corresponding memory allocation.

[0045] When all memory allocations have been applied and tested or a workload below the workload threshold has been found, the method 300 continues in step 312. In step 312, the best or most appropriate memory allocation may be selected. For example, if all possible combinations and all possible memory allocations have been applied and tested, the memory allocation with the best (i.e., lowest) workload may be selected. If a memory allocation with a workload below the threshold workload is found in step 310, this memory location may be selected.

[0046] The selected memory allocation can be communicated to the developer of the audio product and can be used to implement the audio product 100 in a product of type processing device 102.

[0047] In summary, using the above configuration and measurement method, the apparatus 200 provides a tuning tool that can perform changes to the memory latency and measure MIPS. The method can be iteratively performed for all possible combinations to obtain the best MIPS. The apparatus 200 can execute all of the above method steps and propose a potentially optimal memory allocation for a specific processing flow on a platform (i.e., the audio product 100). In some examples, the audio object for which data blocks are allocated can be configurable, for example, via the user interface of the apparatus 200. Additionally, the type of memory available on the target platform (i.e., the processing device 102) can be configurable. For example, multiple latency levels can be configured via the user interface of the apparatus 200. Finally, the developer can select one of the multiple available processing devices 102 configured to implement the audio product 100.

[0048] By using the above method and apparatus, automatic memory allocation can be provided, saving development effort. By trying a wide variety of combinations or even all possible combinations, a suitable or even optimal memory allocation can be achieved. Optimizing the memory allocation according to the above method and apparatus does not require in-depth knowledge of the functionality of the audio objects in the processing pipeline of the audio product 100. This enables optimal integration of all kinds of audio objects, especially third-party objects whose internal details are unknown. Errors that may occur with manual allocation can be avoided, and reliable performance data for the audio product can be provided.

Claims

1. A computer-implemented method for optimizing an audio product, wherein the audio product (100) comprises a plurality of audio objects implemented on a processing device (102), the processing device comprising a plurality of memories (112-118, 410-414) each having a specific delay level, wherein each of the plurality of audio objects requires storage capacity for at least one data block, the method comprising: - generating (302) a plurality of memory allocations (400-404), each of the plurality of memory allocations (400-404) assigning each data block of each audio object to one of the plurality of memories (112-118, 410-414), - determining, for at least some of the plurality of memory allocations (400-404), respective workloads associated with the respective memory allocations, comprising: - configuring the plurality of audio objects according to the respective memory allocations (304), - executing (306) on the processing device (102) the audio product comprising the plurality of configured audio objects, and - determining (308) the corresponding workload of the processing device (102) during execution of the audio product, and - selecting (312) one of the plurality of memory allocations (400-404) as an optimized memory allocation based on the plurality of respective workloads.

2. The method of claim 1, wherein the respective workloads are determined continuously for the at least some of the plurality of memory allocations (400-404).

3. The method of claim 1 or claim 2, wherein the respective workloads are continuously determined for the at least some of the plurality of memory allocations (400-404) until at least one of the respective workloads satisfies a predefined workload threshold.

4. A method as claimed in any one of the preceding claims, wherein the respective workload is defined as a relationship between the performance required to execute the audio product on the processing device (102) relative to a maximum performance of the processing device (102).

5. The method according to any of the preceding claims, wherein executing (306) the audio product on the processing device (102) comprises applying a predefined signal to be processed by the processing device (102).

6. The method of any of the preceding claims, wherein each of the plurality of memories (112-118, 410-414) comprises an external memory (112, 114) coupled to a processor (104) of the processing device (102) or an internal cache memory (116, 118) of the processor (104).

7. The method of any one of the preceding claims, wherein the processing device (102) comprises at least one of a digital signal processor and a general purpose processor.

8. The method of any of the preceding claims, wherein each audio object comprises instructions for processing an audio signal when executed on the processing device (102).

9. The method of any of the preceding claims, wherein each of the plurality of memory allocations (400-404) is generated by taking into account a specific size of each of the data blocks and a size of each of the plurality of memories (112-118, 410-414).

10. The method of any of the preceding claims, wherein the plurality of memory allocations (400-404) comprises at least different memory allocations which assign specific data blocks of specific audio objects to different memories (112-118, 410-414) having different delay levels.

11. A method as described in any of the preceding claims, wherein the multiple memory allocations (400-404) include all possible combinations of assigning the data blocks of the audio objects to memories (112-118, 410-414) with different delay levels, taking into account the size of each of the multiple memories (112-118, 410-414) and the specific size of each of the data blocks.

12. An apparatus for optimizing an audio product, wherein the audio product (100) comprises a plurality of audio objects implemented on a processing device (102), the processing device comprising a plurality of memories (112-118, 410-414) each having a specific delay level, wherein each of the plurality of audio objects requires storage capacity for at least one data block, the apparatus (200) comprising: - an interface (206) for communicating with said processing means (102), and - a processing unit (202) configured to - generate (302) a plurality of memory allocations (400-404), each of the plurality of memory allocations (400-404) assigning each data block of each audio object to one of the plurality of memories (112-118, 410-414), - determining, for at least some of the plurality of memory allocations (400-404), respective workloads associated with the respective memory allocations, comprising: - downloading (304) the configuration of the plurality of audio objects according to the respective memory allocation to the processing device (102) via the interface (206), - instructing the processing device (102) to execute (306) the audio production comprising the plurality of configured audio objects, and - receiving (308) from the processing device (102) the corresponding workload of the processing device (102) during execution of the audio product, and - selecting (312) one of the plurality of memory allocations (400-404) as an optimized memory allocation based on the plurality of respective workloads.

13. The apparatus of claim 12, wherein the apparatus (200) is configured to perform the method of any one of claims 1 to 11.