WO2015046991A1 - 멀티 디코딩 처리 방법 및 이를 수행하기 위한 멀티 디코더 - Google Patents

멀티 디코딩 처리 방법 및 이를 수행하기 위한 멀티 디코더 Download PDF

Info

Publication number
WO2015046991A1
WO2015046991A1 PCT/KR2014/009109 KR2014009109W WO2015046991A1 WO 2015046991 A1 WO2015046991 A1 WO 2015046991A1 KR 2014009109 W KR2014009109 W KR 2014009109W WO 2015046991 A1 WO2015046991 A1 WO 2015046991A1
Authority
WO
WIPO (PCT)
Prior art keywords
decoding
bitstreams
instruction cache
modules
instruction
Prior art date
Application number
PCT/KR2014/009109
Other languages
English (en)
French (fr)
Inventor
조석환
손창용
김도형
이강은
이시화
Original Assignee
삼성전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자 주식회사 filed Critical 삼성전자 주식회사
Priority to US15/024,266 priority Critical patent/US9761232B2/en
Publication of WO2015046991A1 publication Critical patent/WO2015046991A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/008Multichannel audio signal coding or decoding using interchannel correlation to reduce redundancy, e.g. joint-stereo, intensity-coding or matrixing
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/002Dynamic bit allocation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/02Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
    • G10L19/022Blocking, i.e. grouping of samples in time; Choice of analysis windows; Overlap factoring
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L21/00Processing of the speech or voice signal to produce another audible or non-audible signal, e.g. visual or tactile, in order to modify its quality or its intelligibility

Definitions

  • the present invention relates to a multi-decoding processing method for processing a plurality of audio signals simultaneously and a multi-decoder for performing the same.
  • a plurality of decoders operate to decode not only a main audio signal but also an associated audio signal.
  • a converter or transcoder is often included, and a decoder that requires high throughput is used to transmit many audio bitstreams without degrading sound quality. It is necessary to reduce the cost in order to increase the system competitiveness while using the decoder that demands high throughput for optimal performance in a resource-constrained environment.
  • DSPs digital signal processors
  • DSP digital signal processor
  • the decoding module is separated according to the amount of data in the instruction cache, and the plurality of bitstreams are alternately decoded using each of the separated decoding modules.
  • FIG. 1 is a diagram illustrating a configuration of a multi decoder according to an embodiment of the present invention.
  • FIG. 2 is a diagram illustrating a detailed configuration of a decoding processing control unit among the configurations of a multi decoder according to an embodiment of the present invention.
  • 3A to 3B are diagrams for describing a process of separating a decoding module according to an embodiment of the present invention.
  • 4A to 4C are diagrams for describing a process of separating a decoding module and decoding decoding a plurality of bitstreams according to an embodiment of the present invention.
  • 5 to 7 are graphs for comparing delay cycles of an instruction cache before and after applying a decoding processing method according to an embodiment of the present invention.
  • FIGS. 8 to 10 are flowcharts illustrating a decoding processing method according to embodiments of the present invention.
  • a method of processing a multi decoding comprising: receiving a plurality of bitstreams; Dividing a decoding module for decoding the plurality of bitstreams according to a data amount of an instruction cache; And cross decoding the plurality of bitstreams using each of the separated decoding modules.
  • the decoding of the intersection may sequentially decode two or more bitstreams of the plurality of bitstreams by using any one of the separated decoding modules.
  • intersection decoding processing may further include sequentially decoding two or more bitstreams of the plurality of bitstreams by using instruction codes cached in the instruction cache to perform any one of the separated decoding modules. can do.
  • the crossover decoding processing may further include: caching some of the instruction codes stored in main memory in the instruction cache to perform any one of the separated decoding modules; Continuously performing decoding processing on two or more bitstreams of the plurality of bitstreams using the cached command codes; And caching some of the instruction codes stored in the main memory in the instruction cache to perform another one of the separated decoding modules.
  • command code may be stored in the main memory according to the processing order of the decoding modules.
  • the crossover decoding may include crossover decoding in units of frames of the plurality of bitstreams.
  • the decoding module may not be separated.
  • the separating may include dividing the decoding module into a plurality of modules having a data amount equal to or less than the data amount of the instruction cache when the data amount of the decoding module is larger than the data amount of the instruction cache.
  • the plurality of bitstreams may include bitstreams of one main audio signal and at least one associated audio signal.
  • a multi-decoder comprising: a plurality of decoders for decoding a plurality of bitstreams, respectively; A main memory in which instruction codes necessary for decoding processing of the plurality of bitstreams are stored; An instruction cache for caching necessary instruction codes for each decoding module among the instruction codes stored in the main memory; And a decoding processing controller configured to separate the decoding module according to the data amount of the instruction cache, and to control the plurality of decoders to cross each of the separated decoding modules.
  • the decoding processing controller may cause two or more decoders of the plurality of decoders to continuously perform any one of the separated decoding modules.
  • the decoding processing control unit may cause two or more decoders of the plurality of decoders to sequentially perform decoding processing by using the instruction codes cached in the instruction cache to perform any one of the separated decoding modules. have.
  • the decoding processing control unit may further include: a decoding module separation unit configured to separate the decoding module and cache command codes for performing the separated decoding module from the main memory to the command cache; And a cross processor configured to cross-process decoding processing of the plurality of decoders by using the instruction codes cached in the instruction cache for each of the separated decoding modules.
  • the cross-processing unit may use two or more decoders among the plurality of decoders by using the instruction cache. Decoding processing can be performed.
  • command code may be stored in the main memory according to the processing order of the decoding modules.
  • the cross processing unit may control the plurality of decoders to perform cross-section decoding processing in units of frames of the plurality of bitstreams.
  • the decoding module separator may not separate the decoding module when the data amount of the decoding module is equal to or smaller than the data amount of the instruction cache.
  • the decoding module separating unit may divide the decoding module into a plurality of modules having a data amount less than or equal to the data amount of the instruction cache when the data amount of the decoding module is larger than the data amount of the instruction cache.
  • the plurality of bitstreams may include bitstreams for one main audio signal and at least one associated audio signal.
  • FIG. 1 is a diagram illustrating a configuration of a multi decoder according to an embodiment of the present invention.
  • the multi decoder 100 decodes an audio signal.
  • the scope of the present application is not limited thereto.
  • a multi-decoder 100 may include a decoder set 110, a decoding processing controller 120, and a command including a first decoder 111 to an Nth decoder 114.
  • Cache 130 and main memory 140 may be included.
  • the multi decoder 100 may further include general components of a decoder such as a sample rate converter (SRC) and a mixer.
  • SRC sample rate converter
  • the first decoders 111 to Nth decoders 114 included in the decoder set 110 decode the first to Nth bitstreams, respectively.
  • the plurality of bitstreams may be bitstreams of one main audio signal and at least one associated audio signal.
  • the TV broadcast signal supporting the voice multiple function may include at least one audio signal that is output when the setting is changed along with one main audio signal that is output in the basic setting, each of which is a plurality of audio signals. Transmitted in a separate bitstream. That is, the decoder set 110 performs decoding on a plurality of audio signals together.
  • the decoding processing control unit 120 controls the decoding processing of the plurality of decoders included in the decoder set 110.
  • the decoding processing controller 120 since the decoding processing controller 120 includes a single-core processor, only one decoder may be operated at a time, and two or more decoders may not be operated at the same time. The reason for this assumption is to have a single-core processor in order to achieve the purpose of cost reduction. If the decoding processing control unit 120 includes a multi-core processor, the plurality of decoders may be independently operated simultaneously, thereby increasing the processing speed but increasing the cost. Therefore, an embodiment of the present invention is to propose a method that can improve the processing speed while reducing the cost by improving the decoding processing structure while using a single-core processor.
  • the decoding processing control unit 120 caches the instruction codes necessary to perform the decoding module from the main memory 140 to the instruction cache 130, and the decoders decode them using the instruction cache 130. Run the module.
  • the decoding module may mean a unit for performing decoding processing, and may be divided based on a function for performing the entire decoding processing process.
  • the decoding module may be configured to correspond to each of Huffman decoding, dequantization, and filter bank.
  • the decoding module may be configured in various ways without being limited thereto.
  • the main memory 140 stores all the command codes for performing the decoding, the command cache 130, the command codes necessary to perform a specific decoding module, the main memory 140 in accordance with the progress of the decoding process Cached from
  • the size of the instruction cache 130 that is, the data amount is smaller than the data amount of the decoding module, a cache miss occurs during the execution of one decoding module, and thus, the caching of the instruction code must be performed.
  • a stall cycle occurs.
  • the data amount of the instruction cache 130 is 32 KB and the data amount of the decoding module to be performed is 60 KB.
  • a 32 KB command code is cached from the main memory 140 and stored in the command cache 130 to decode the bitstream.
  • a cache miss occurs. Therefore, a delay cycle occurs in the process of caching the remaining 28 KB of the instruction code from the main memory 140 and storing the instruction code in the instruction cache 130. do.
  • this delay cycle is caused by the limitation of the amount of data in the instruction cache, and it is difficult to reduce this by changing the decoding processing order.
  • caching of the same instruction code is repeatedly performed as many as the number of bit streams, thus delaying.
  • the cycle also occurs as a multiple of the number of bitstreams. Therefore, in the case of a multi-stream signal, delay cycles can be reduced by changing the decoding processing order.
  • the decoding processing control unit 120 separates the decoding module and appropriately controls the execution order of the separated decoding module to reduce the delay cycle of the instruction cache occurring in the decoding processing of the plurality of bitstreams.
  • the decoding processing control unit 120 separates the decoding module according to the data amount of the instruction cache 130 and cross-decodes the plurality of bitstreams using each of the separated decoding modules. That is, two or more bitstreams of the plurality of bitstreams may be sequentially decoded using any one of the separated decoding modules to process two or more bitstreams in one caching.
  • the decoding processing controller 120 successively decodes two or more bitstreams of the plurality of bitstreams by using the instruction codes cached in the instruction cache 130 to perform any one of the separated decoding modules. do. Decoding of the decoding module and cross processing using the separated decoding module will be described in detail below.
  • FIG. 2 is a diagram illustrating a detailed configuration of the decoding processing control unit 120 of FIG. 1.
  • the decoding processing controller 120 may include a decoding module separator 121 and a cross processor 122.
  • the decoding module separator 121 separates the decoding module according to the data amount of the instruction cache 130. In addition, according to the separate decoding module, necessary instruction codes are cached from the main memory 140 to the instruction cache 130.
  • the cross processor 122 controls the decoder set 110 including the first through Nth decoders to cross-decode the plurality of bitstreams using each of the separated decoding modules.
  • decoding module separation unit 121 A detailed method of the decoding module separation unit 121 and the cross processing unit 122 performing separation and decoding cross processing of the decoding module will be described in detail below with reference to FIGS. 3A to 4C.
  • 3A to 3B are diagrams for describing a process of separating a decoding module according to an embodiment of the present invention.
  • decoding modules before separation are disclosed.
  • a first decoding module 310, a second decoding module 320 and a third decoding module 330 have been disclosed, and these decoding modules have a data amount of 58 KB, 31 KB and 88 KB, respectively.
  • FIG. 3B The result of separating the decoding modules of FIG. 3A according to the data amount of the instruction cache 130 is illustrated in FIG. 3B.
  • the data amount of the instruction cache 130 is 32KB.
  • the first decoding module 310 having a data amount of 58 KB is divided into an eleventh decoding module 311 having a data amount of 32 KB and a twelfth decoding module 312 having a data amount of 26 KB. .
  • the second decoding module 320 having a data amount of 31 KB is not separated, and the third decoding module 330 having a data amount of 88 KB is the 31st and 32nd decoding modules having a data amount of 32 KB ( 331 and 332 and a thirty-third decoding module 333 having a data amount of 24 KB.
  • the method of separating the decoding module only needs to satisfy a condition such that the data amount of the module to be separated is equal to or less than the data amount of the instruction cache 130.
  • the first decoding module 310 is divided into a 32 KB eleventh decoding module 311 and a 26 KB twelfth decoding module 312.
  • two modules having a data amount of 29 KB are different from each other. It can also be separated.
  • the third decoding module 330 having a data amount of 88 KB may be divided into one module having a data amount of 30 KB and two modules having a data amount of 29 KB.
  • the decoding module separating unit 121 uses the decoding module as a data amount less than or equal to the data amount of the instruction cache 130 in order to prevent a cache miss from occurring in a process of continuously performing decoding processing on a plurality of bitstreams. Can be separated into modules with
  • the cross processing unit 122 controls to decode the plurality of bit streams alternately using the respective modules.
  • the first decoder 111 of FIG. 1 performs the decoding process on the first bitstream using the eleventh decoding module 311 of FIG. 3B
  • the second decoder 112 may also be the eleventh.
  • the decoding module 311 performs decoding processing on the second bitstream.
  • a 32 KB instruction code corresponding to the eleventh decoding module 311 is stored in the instruction cache 130. Accordingly, in performing decoding processing on the second bitstream using the eleventh decoding module 311, a cache miss does not occur and a delay cycle does not occur.
  • the crossover of the decoding process for the plurality of bitstreams may be implemented in various ways. For example, after continuously performing decoding processing on the first to Nth bitstreams using the eleventh decoding module 311, the first to Nth bitstreams are performed using the twelfth decoding module 312. The decoding process can be performed continuously. Alternatively, after continuously performing decoding processing on the first to third bitstreams using the eleventh decoding module 311, the first to third bitstreams are performed using the twelfth decoding module 312. When the decoding process for the first to third bitstreams is completed in a continuous manner, the decoding process for the next three bitstreams may be started using the eleventh decoding module 311.
  • the cross processing unit 122 may perform cross processing of the plurality of bitstreams in a frame unit, or may perform the other unit.
  • 4A to 4C are diagrams for describing a process of separating a decoding module and decoding decoding a plurality of bitstreams according to an embodiment of the present invention.
  • FIG. 4A illustrates a process of performing decoding processing on frames N and N + 1 of two different bitstreams before separation of the decoding module is performed.
  • the decoding module is composed of F1, F2, and F3, and has data amounts of 58 KB, 31 KB, and 88 KB, respectively.
  • F1 (N) 410, F2 (N) 420, and F3 (N) 430 perform decoding processing on frame N of any one bitstream.
  • F1 (N + 1) 510, F2 (N + 1) 520 and F3 (N + 1) 530 perform decoding processing on frame N + 1 of another bitstream.
  • the cache miss that occurs when the decoding process of the frame N is performed is the same when the decoding process of the frame N + 1 occurs, thereby causing a double delay cycle.
  • FIG. 4B illustrates a result of separating the decoding modules according to the data amount of the instruction cache.
  • the data amount of the instruction cache is 32KB.
  • the F1 decoding module having a data amount of 58 KB was divided into F11 having a data amount of 32 KB and F12 having a data amount of 26 KB.
  • F2 having a data amount of 31 KB was not separated because it is less than the data amount of the instruction cache.
  • F3 having a data amount of 88 KB was divided into F31 and F32 having a data amount of 32 KB and F33 having a data amount of 24 KB.
  • each decoding module is separated into modules having the data amount of the instruction cache or less, the decoding modules are performed on the frame N + 1 after all the decoding modules are performed on the frame N. As a result, the decoding modules are identical to those of FIG. 4A. Delay cycles occur.
  • FIG. 4C illustrates an example of performing intersection decoding processing on a plurality of bitstreams.
  • F11 (N) 411 is performed, F11 (N + 1) 511 is performed. That is, decoding processing for frame N is performed using the F11 module, and decoding processing for frame N + 1 is then performed using the F11 module. Decoding processing for two frames was successively performed using the same decoding module, and the cache miss does not occur because the data amount of the decoding module does not exceed the data amount of the instruction cache.
  • the instruction codes stored in the instruction cache in the processing of frame N can be used as they are in the processing of frame N + 1, so that cache misses do not occur.
  • the decoding module is separated according to the amount of data in the instruction cache, and each of the separated decoding modules uses a plurality of bitstreams to alternately decode a plurality of bit streams to minimize the occurrence of cache misses. ), Thus improving the overall decoding processing speed.
  • 5 to 7 are graphs for comparing delay cycles of an instruction cache before and after applying a decoding processing method according to an embodiment of the present invention.
  • FIG. 5 is a graph illustrating a delay cycle occurring in a decoding process before applying the multi-decoding processing method according to an embodiment of the present invention.
  • the horizontal axis represents the data amount of the command code processed in the decoding process.
  • the data amount of the instruction cache is 32 KB. Referring to FIG. 5, it can be seen that delay cycles occur every 32 KB, and the magnitude of the delay cycles is not constant. This occurs because the order of the command codes stored in the main memory does not match the operation order of the decoder.
  • the instruction cache uses a multi-way cache method. If the instruction codes to be cached are not stored in main memory in order, the instruction codes may be redundantly cached due to the limitation of the location to be loaded. Because it can be.
  • FIG. 6 is a graph illustrating a delay cycle after aligning an order of instruction codes stored in a main memory according to a processing order of a decoding module according to an embodiment of the present invention. Referring to FIG. 6, it can be seen that a delay cycle of 3 MHz has occurred in all cases. Redundant caching does not occur, resulting in the same delay cycle for each caching.
  • FIG. 7 is a diagram illustrating a delay cycle occurring when decoding is performed by applying a multi-decoding method according to an embodiment of the present invention.
  • the intersection decoding process is performed on two bitstreams.
  • a delay cycle of 3 MHz occurs whenever the amount of data processed by twice the amount of data in the instruction cache is 32 KB. Because the decoding process for the two bitstreams is successively performed by using a separate decoding module having a data amount of 32KB or less, a delay cycle of 3 MHz occurs due to the cache of the instruction code during the decoding process for the first bitstream.
  • FIGS. 8 to 10 are flowcharts illustrating a decoding processing method according to embodiments of the present invention.
  • step S801 a plurality of bitstreams are received.
  • the plurality of bitstreams may be bitstreams of one main audio signal and at least one associated audio signal.
  • the decoding module for decoding the plurality of bitstreams is separated according to the amount of data in the instruction cache.
  • the decoding module may mean a unit for performing decoding processing, and may be divided based on a function for performing the entire decoding processing process.
  • step S803 a plurality of bitstreams are alternately decoded using separate decoding modules.
  • step S902 a plurality of bitstreams are received.
  • the decoding module is separated according to the amount of data in the instruction cache. For example, one decoding module is separated into a plurality of modules having a data amount less than or equal to the data amount of the instruction cache.
  • operation S903 the instruction codes stored in the main memory are cached in the instruction cache to perform any one of the separated decoding modules.
  • step S904 decoding processing for two or more bitstreams is successively performed using cached command codes.
  • step S1002 it is determined whether the data amount of the decoding module is greater than the data amount of the multi-cache. If it is determined that the data amount of the decoding module is larger than the data amount of the multi-cache, the process proceeds to step S1003 to separate the decoding module into a plurality of modules having a data amount equal to or less than the data amount of the instruction cache. However, if it is determined in step S1002 that the data amount of the decoding module is not larger than the data amount of the multi-cache, the process skips to step S1004 without performing step S1003. In step S1004, it is determined whether another decoding module exists.
  • step S1005 the instruction codes stored in the main memory are cached in the instruction cache to perform any one of the separated decoding modules.
  • step S1006 decoding processing for two or more bitstreams is successively performed using cached command codes.
  • the decoding module is separated according to the amount of data in the instruction cache, and each of the separated decoding modules uses a plurality of bitstreams to alternately decode a plurality of bit streams to minimize the occurrence of cache misses. ), Thus improving the overall decoding processing speed.

Abstract

본 발명에 의한 멀티 디코딩 처리 방법은, 복수의 비트스트림들을 수신하는 단계; 상기 복수의 비트스트림들을 디코딩하기 위한 디코딩 모듈을 명령 캐시의 데이터량에 따라 분리하는 단계; 및 상기 분리된 디코딩 모듈들 각각을 이용하여 상기 복수의 비트스트림들을 교차로(cross) 디코딩 처리하는 단계를 포함한다.

Description

멀티 디코딩 처리 방법 및 이를 수행하기 위한 멀티 디코더
본 발명은 복수의 오디오 신호를 동시에 처리하는 멀티 디코딩 처리 방법 및 이를 수행하기 위한 멀티 디코더에 대한 것이다.
최근의 오디오 장치들에 포함되는 멀티 디코더(multi decoder)의 경우 주 오디오 신호(main audio signal) 뿐만 아니라 연관 오디오 신호(associated audio signal)까지 디코딩하기 위해 복수의 디코더가 동작한다. 그런데, 다른 멀티미디어 기기와의 호환을 위해 컨버터 또는 트랜스코더를 포함하는 경우가 대부분이고, 또한 음질 저하 없이 많은 오디오 비트스트림을 전송하기 위해서 높은 처리량을 요구하는 디코더를 사용한다. 이와 같이 높은 처리량을 요구하는 디코더를 리소스가 제한적인 환경에서 최적의 성능으로 사용하면서도 시스템 경쟁력을 높이기 위해서 비용을 절감할 필요성이 있다.
멀티 디코더에 멀티-코어 프로세서 DSP(multi-core processor digital signal processor)를 사용할 경우, 디코더 간 병렬처리가 가능하여 처리 속도는 향상되지만 코어 수 증가 및 디코더마다의 독립적인 메모리 요구 증가로 비용이 상승한다.
반면, 싱글-코어 프로세서 DSP(single-core processor digital signal processor)를 사용할 경우, 디코더 간에 요구하는 메모리를 단일 코어에서 공유하여 사용할 수 있으므로 비용 절감이 가능하지만 디코더 간 순차 처리 수행시 전환을 위해 요구되는 추가적인 메모리 엑세스 증가로 처리 속도가 낮아지는 문제가 발생하게 된다.
따라서, 비용을 절감하면서도 처리 속도를 향상시킬 수 있는 멀티 디코딩 처리 방법을 개발할 필요성이 있다.
싱글-코어 프로세서를 사용하여 비용을 절감하면서도 처리 속도를 향상시킬 수 있는 멀티 디코딩 방법을 제공하고자 한다.
특히, 디코딩 처리 구조 개선을 통해 명령 캐시의 지연 사이클을 단축시킬 수 있는 멀티 디코딩 방법을 제공하고자 한다.
디코딩 모듈을 명령 캐시의 데이터량에 따라 분리하고, 분리된 디코딩 모듈들 각각을 이용하여 복수의 비트스트림들을 교차로 디코딩 처리한다.
캐시 미스(cache miss)의 발생을 최소화하여 지연 사이클(stall cycle)을 감소시키고, 따라서 전체적인 디코딩 처리 속도를 향상시킬 수 있다.
또한, 디코딩 모듈이 처리되는 순서에 따라 메인 메모리에 명령 코드들을 저장함으로써 명령 코드에 대한 중복 캐싱을 최소화하여 디코딩 처리 속도를 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 멀티 디코더의 구성을 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 멀티 디코더의 구성 중 디코딩 처리 제어부의 상세 구성을 도시한 도면이다.
도 3a 내지 도 3b는 본 발명의 일 실시예에 따라 디코딩 모듈을 분리하는 과정을 설명하기 위한 도면들이다.
도 4a 내지 도 4c는 본 발명의 일 실시예에 따라 디코딩 모듈을 분리하고, 복수의 비트스트림들을 교차로 디코딩 처리하는 과정을 설명하기 위한 도면들이다.
도 5 내지 도 7은 본 발명의 일 실시예에 따른 디코딩 처리 방법을 적용하기 전과 후의 명령 캐시의 지연 사이클을 비교하기 위한 그래프들이다.
도 8 내지 도 10은 본 발명의 실시예들에 따른 디코딩 처리 방법을 설명하기 위한 순서도들이다.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 멀티 디코딩 처리 방법은, 복수의 비트스트림들을 수신하는 단계; 상기 복수의 비트스트림들을 디코딩하기 위한 디코딩 모듈을 명령 캐시의 데이터량에 따라 분리하는 단계; 및 상기 분리된 디코딩 모듈들 각각을 이용하여 상기 복수의 비트스트림들을 교차로(cross) 디코딩 처리하는 단계를 포함할 수 있다.
이때, 상기 교차로 디코딩 처리하는 단계는, 상기 분리된 디코딩 모듈들 중 어느 하나를 이용하여 상기 복수의 비트스트림들 중 둘 이상의 비트스트림들을 연속으로 디코딩 처리할 수 있다.
또한, 상기 교차로 디코딩 처리하는 단계는, 상기 분리된 디코딩 모듈들 중 어느 하나를 수행하기 위해 상기 명령 캐시에 캐싱된 명령 코드들을 이용하여 상기 복수의 비트스트림들 중 둘 이상의 비트스트림들을 연속으로 디코딩 처리할 수 있다.
또한, 상기 교차로 디코딩 처리하는 단계는, 상기 분리된 디코딩 모듈들 중 어느 하나를 수행하기 위해 메인 메모리에 저장된 명령 코드들 중 일부를 상기 명령 캐시에 캐싱하는 단계; 상기 캐싱된 명령 코드들을 이용하여 상기 복수의 비트스트림들 중 둘 이상의 비트스트림에 대한 디코딩 처리를 연속으로 수행하는 단계; 및 상기 분리된 디코딩 모듈들 중 다른 하나를 수행하기 위해 상기 메인 메모리에 저장된 명령 코드들 중 일부를 상기 명령 캐시에 캐싱하는 단계를 포함할 수 있다.
또한, 상기 메인 메모리에는 상기 디코딩 모듈들의 처리 순서에 따라 명령 코드가 저장되어 있을 수 있다.
또한, 상기 교차로 디코딩 처리하는 단계는, 상기 복수의 비트스트림들의 프레임 단위로 교차로 디코딩 처리할 수 있다.
또한, 상기 분리하는 단계는, 상기 디코딩 모듈의 데이터량이 상기 명령 캐시의 데이터량 이하인 경우 상기 디코딩 모듈을 분리하지 않을 수 있다.
또한, 상기 분리하는 단계는, 상기 디코딩 모듈의 데이터량이 상기 명령 캐시의 데이터량보다 큰 경우 상기 명령 캐시의 데이터량 이하의 데이터량을 갖는 복수의 모듈로 분리할 수 있다.
또한, 상기 복수의 비트스트림들은 하나의 주 오디오 신호(main audio signal)와 적어도 하나의 연관 오디오 신호(associated audio signal)에 대한 비트스트림들을 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 다른 일 실시예에 따른 멀티 디코더는, 복수의 비트스트림들을 각각 디코딩하기 위한 복수의 디코더들; 상기 복수의 비트스트림들의 디코딩 처리에 필요한 명령 코드들이 저장된 메인 메모리; 상기 메인 메모리에 저장된 명령 코드들 중에서 디코딩 모듈별로 필요한 명령 코드들이 캐싱되는 명령 캐시; 및 상기 명령 캐시의 데이터량에 따라 상기 디코딩 모듈을 분리하고, 분리된 디코딩 모듈들 각각을 상기 복수의 디코더들이 교차로(cross) 수행하도록 제어하는 디코딩 처리 제어부를 포함할 수 있다.
이때, 상기 디코딩 처리 제어부는 상기 분리된 디코딩 모듈들 중 어느 하나를 상기 복수의 디코더들 중 둘 이상의 디코더들이 연속으로 수행하도록 할 수 있다.
또한, 상기 디코딩 처리 제어부는 상기 분리된 디코딩 모듈들 중 어느 하나를 수행하기 위해 상기 명령 캐시에 캐싱된 명령 코드들을 이용하여 상기 복수의 디코더들 중 둘 이상의 디코더들이 연속으로 디코딩 처리를 수행하도록 할 수 있다.
또한, 상기 디코딩 처리 제어부는, 상기 디코딩 모듈을 분리하고, 분리된 디코딩 모듈을 수행하기 위한 명령 코드를 상기 메인 메모리로부터 상기 명령 캐시에 캐싱하는 디코딩 모듈 분리부; 및 상기 분리된 디코딩 모듈들 각각에 대하여 상기 명령 캐시에 캐싱된 명령 코드들을 이용하여 상기 복수의 디코더들이 교차로 디코딩 처리를 하도록 하는 교차 처리부를 포함할 수 있다.
또한, 상기 디코딩 모듈 분리부가 상기 분리된 디코딩 모듈들 중 어느 하나에 대응되는 명령 코드들을 상기 명령 캐시에 캐싱하면, 상기 교차 처리부는 상기 명령 캐시를 이용하여 상기 복수의 디코더들 중 둘 이상의 디코더가 연속으로 디코딩 처리를 수행하도록 할 수 있다.
또한, 상기 메인 메모리에는 상기 디코딩 모듈들의 처리 순서에 따라 명령 코드가 저장되어 있을 수 있다.
또한, 상기 교차 처리부는 상기 복수의 비트스트림들의 프레임 단위로 교차로 디코딩 처리를 하도록 상기 복수의 디코더들을 제어할 수 있다.
또한, 상기 디코딩 모듈 분리부는 상기 디코딩 모듈의 데이터량이 상기 명령 캐시의 데이터량 이하인 경우 상기 디코딩 모듈을 분리하지 않을 수 있다.
또한, 상기 디코딩 모듈 분리부는 상기 디코딩 모듈의 데이터량이 상기 명령 캐시의 데이터량보다 큰 경우 상기 명령 캐시의 데이터량 이하의 데이터량을 갖는 복수의 모듈로 분리할 수 있다.
또한, 상기 복수의 비트스트림들은 하나의 주 오디오 신호와 적어도 하나의 연관 오디오 신호에 대한 비트스트림들을 포함할 수 있다.
이하에서는 도면을 참조하여 본 발명의 실시예들을 상세히 설명한다. 본 실시예들의 특징을 보다 명확히 설명하기 위하여 이하의 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서는 자세한 설명은 생략하기로 한다.
도 1은 본 발명의 일 실시예에 따른 멀티 디코더의 구성을 도시한 도면이다. 이하에서는 본 발명의 일 실시예에 따른 멀티 디코더(100)는 오디오 신호를 디코딩한다고 가정한다. 다만, 본원의 권리범위는 이에 한정되지 않는다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 멀티 디코더(100)는 제1 디코더(111) 내지 제N 디코더(114)를 포함하는 디코더 세트(110), 디코딩 처리 제어부(120), 명령 캐시(130) 및 메인 메모리(140)를 포함할 수 있다. 그리고 도 1에 도시되지는 않았지만 멀티 디코더(100)는 샘플 속도 변환기(Sample Rate Converter, SRC) 및 믹서(mixer)와 같은 디코더의 일반적인 구성들을 더 포함할 수도 있다.
디코더 세트(110)에 포함된 제1 디코더(111) 내지 제N 디코더(114)들은 각각 제1 비트스트림 내지 제N 비트스트림들을 디코딩한다. 이때, 복수의 비트스트림들은 하나의 주 오디오 신호(main audio signal)와 적어도 하나의 연관 오디오 신호(associated audio signal)에 대한 비트스트림들일 수 있다. 예를 들어, 음성다중 기능을 지원하는 TV 방송신호는 기본 설정에서 출력되는 하나의 주 오디오 신호와 함께 설정 변경시 출력되는 적어도 하나 이상의 오디오 신호를 포함하고 있을 수 있는데, 이러한 복수의 오디오 신호들은 각각 별개의 비트스트림으로 전송된다. 즉, 디코더 세트(110)는 복수의 오디오 신호들에 대한 디코딩을 함께 수행한다.
디코딩 처리 제어부(120)는 디코더 세트(110)에 포함된 복수의 디코더들의 디코딩 처리 수행을 제어한다. 본 발명의 일 실시예에서는 디코딩 처리 제어부(120)가 싱글-코어 프로세서를 구비한다고 가정하므로 한 번에 하나의 디코더가 동작하도록 제어할 수 있을 뿐, 둘 이상의 디코더들이 동시에 동작하도록 할 수 없다. 이렇게 싱글-코어 프로세서를 구비한다고 가정하는 이유는 비용 절감의 목적을 달성하기 위해서이다. 만약, 디코딩 처리 제어부(120)가 멀티-코어 프로세서를 구비한다면 복수의 디코더들을 동시에 독립적으로 동작하도록 할 수 있으므로 처리 속도는 향상되지만 비용이 증가하게 된다. 따라서, 본 발명의 실시예에서는 싱글-코어 프로세서를 이용하면서도 디코딩 처리 구조를 개선함으로써 비용을 절감하면서 처리 속도를 향상시킬 수 있는 방법을 제시하고자 한다.
디코딩 처리 제어부(120)는 디코딩 모듈을 수행하기 위해 필요한 명령 코드(instruction code)들을 메인 메모리(140)로부터 명령 캐시(instruction cache, 130)에 캐싱하고, 명령 캐시(130)를 이용하여 디코더들이 디코딩 모듈을 수행하도록 한다. 이때, 디코딩 모듈이란 디코딩 처리를 수행하는 단위를 의미하며, 예를 들어 전체의 디코딩 처리 과정을 수행하는 기능을 기준으로 나눈 것일 수 있다. 기능을 기준으로 디코딩 모듈을 나누는 경우 허프만 디코딩(Huffman decoding), 역양자화(dequantization) 및 필터 뱅크(filter bank)의 수행 각각에 대응되도록 디코딩 모듈이 구성될 수 있다. 물론, 이에 한정되지 않고 다양하게 디코딩 모듈을 구성할 수 있다.
한편, 메인 메모리(140)는 디코딩을 수행하기 위한 모든 명령 코드들을 저장하고 있으며, 명령 캐시(130)에는 특정 디코딩 모듈을 수행하기 위해 필요한 명령 코드들이 디코딩 처리의 진행 상황에 따라 메인 메모리(140)로부터 캐싱된다.
일반적으로 명령 캐시(130)의 크기, 즉 데이터량은 디코딩 모듈의 데이터량보다 작으므로 하나의 디코딩 모듈을 수행하는 과정에서 캐시 미스(cache miss)가 발생하고, 따라서 명령 코드의 캐싱을 수행해야 하므로 지연 사이클(stall cycle)이 발생한다. 예를 들어, 명령 캐시(130)의 데이터량이 32KB이고 수행하고자 하는 디코딩 모듈의 데이터량이 60KB라고 가정한다. 먼저, 32KB의 명령 코드를 메인 메모리(140)로부터 캐싱하여 명령 캐시(130)에 저장한 상태에서 비트스트림에 대한 디코딩 처리를 수행한다. 이어서, 나머지 28KB의 명령 코드를 명령 캐시(130)에서 찾으면 캐시 미스가 발생하고, 따라서 메인 메모리(140)로부터 나머지 28KB의 명령 코드를 캐싱하여 명령 캐시(130)에 저장하는 과정에서 지연 사이클이 발생한다.
싱글 스트림 신호를 처리하는 경우라면 이러한 지연 사이클은 명령 캐시의 데이터량의 한계로 인하여 발생하는 것으로 디코딩 처리 순서의 변경 등을 통해 이를 감소시키기는 어렵다. 하지만, 본 실시예와 같이 멀티 스트림 신호를 처리하는 경우라면 각각의 비트스트림을 디코딩 처리할 때마다 상기의 과정을 반복해야 하므로 동일한 명령 코드의 캐싱이 비트스트림의 개수만큼 반복하여 수행되고, 따라서 지연 사이클도 비트스트림의 개수의 배수만큼 발생하게 된다. 그러므로 멀티 스트림 신호의 경우 디코딩 처리 순서의 변경 등을 통해 지연 사이클의 발생을 감소시킬 수 있다.
디코딩 처리 제어부(120)는 디코딩 모듈을 분리하고, 분리된 디코딩 모듈의 수행 순서를 적절히 제어함으로써 복수의 비트스트림들의 디코딩 처리에서 발생하는 명령 캐시의 지연 사이클을 감소시킨다. 자세하게는, 디코딩 처리 제어부(120)는 명령 캐시(130)의 데이터량에 따라 디코딩 모듈을 분리하고, 분리된 디코딩 모듈들 각각을 이용하여 복수의 비트스트림들을 교차로(cross) 디코딩 처리한다. 즉, 분리된 디코딩 모듈들 중 어느 하나를 이용하여 복수의 비트스트림들 중 둘 이상의 비트스트림들을 연속으로 디코딩 처리함으로써 한 번의 캐싱으로 둘 이상의 비트스트림들을 처리할 수 있다. 다시 말해, 디코딩 처리 제어부(120)는 분리된 디코딩 모듈들 중 어느 하나를 수행하기 위해 명령 캐시(130)에 캐싱된 명령 코드들을 이용하여 복수의 비트스트림들 중 둘 이상의 비트스트림들을 연속으로 디코딩 처리한다. 디코딩 모듈의 분리 및 분리된 디코딩 모듈을 이용한 교차 처리는 아래에서 자세하게 설명하도록 한다.
한편, 디코딩 모듈의 처리 순서에 따라 메인 메모리(140)에 명령 코드들을 저장함으로써 명령 코드가 중복으로 캐싱되는 것을 최소화할 수 있고, 따라서 처리 속도를 향상시킬 수 있다.
도 2는 도 1의 디코딩 처리 제어부(120)의 상세 구성을 도시한 도면이다. 도 2를 참조하면, 디코딩 처리 제어부(120)는 디코딩 모듈 분리부(121) 및 교차 처리부(122)를 포함할 수 있다.
디코딩 모듈 분리부(121)는 디코딩 모듈을 명령 캐시(130)의 데이터량에 따라 분리한다. 또한, 분리된 디코딩 모듈에 따라 필요한 명령 코드들을 메인 메모리(140)로부터 명령 캐시(130)에 캐싱한다.
교차 처리부(122)는 분리된 디코딩 모듈 각각을 이용하여 복수의 비트스트림들을 교차로 디코딩 처리할 수 있도록 제1 내지 제N 디코더들을 포함하는 디코더 세트(110)를 제어한다.
디코딩 모듈 분리부(121) 및 교차 처리부(122)가 디코딩 모듈의 분리 및 디코딩 교차 처리를 수행하는 구체적인 방법은 도 3a 내지 도 4c를 참조하여 아래에서 자세하게 설명한다.
도 3a 내지 도 3b는 본 발명의 일 실시예에 따라 디코딩 모듈을 분리하는 과정을 설명하기 위한 도면들이다. 우선 도 3a를 참조하면, 분리되기 전의 디코딩 모듈들이 개시되었다. 제1 디코딩 모듈(310), 제2 디코딩 모듈(320) 및 제3 디코딩 모듈(330)이 개시되었으며, 이들 디코딩 모듈들은 각각 58KB, 31KB 및 88KB의 데이터량을 갖는다.
도 3a의 디코딩 모듈들을 명령 캐시(130)의 데이터량에 따라 분리한 결과를 도 3b에 도시하였다. 이때, 명령 캐시(130)의 데이터량은 32KB라고 가정하였다. 도 3b를 참조하면, 58KB의 데이터량을 갖는 제1 디코딩 모듈(310)은 32KB의 데이터량을 갖는 제11 디코딩 모듈(311)과 26KB의 데이터량을 갖는 제12 디코딩 모듈(312)로 분리되었다. 한편, 31KB의 데이터량을 갖는 제2 디코딩 모듈(320)은 분리되지 않았으며, 88KB의 데이터량을 갖는 제3 디코딩 모듈(330)은 32KB의 데이터량을 갖는 제31 및 제32 디코딩 모듈들(331, 332)과 24KB의 데이터량을 갖는 제33 디코딩 모듈(333)로 분리되었다.
이와 같이 명령 캐시(130)의 데이터량 이하의 데이터량을 갖도록 디코딩 모듈들을 분리함으로써 분리된 모듈을 이용하여 복수의 비트스트림들에 대한 디코딩 처리를 연속으로 수행하더라도 캐시 미스가 발생하지 않는다. 따라서, 디코딩 모듈을 분리하는 방법은 분리되는 모듈의 데이터량이 명령 캐시(130)의 데이터량 이하가 되도록 하는 조건만 만족하면 된다. 즉, 예를 들어 도 3b에서는 제1 디코딩 모듈(310)이 32KB의 제11 디코딩 모듈(311)과 26KB의 제12 디코딩 모듈(312)로 분리되었으나, 이와 다르게 29KB의 데이터량을 갖는 두 개의 모듈로 분리할 수도 있다. 마찬가지로 88KB의 데이터량을 갖는 제3 디코딩 모듈(330)의 경우도 30KB의 데이터량을 갖는 하나의 모듈과 29KB의 데이터량을 갖는 두 개의 모듈로 분리할 수도 있다.
정리하면, 디코딩 모듈 분리부(121)는 복수의 비트스트림들에 대한 디코딩 처리를 연속으로 수행하는 과정에서 캐시 미스가 발생하지 않도록 하기 위해 디코딩 모듈을 명령 캐시(130)의 데이터량 이하의 데이터량을 갖는 모듈들로 분리할 수 있다.
디코딩 모듈들이 명령 캐시(130)의 데이터량에 따라 분리되었으면 교차 처리부(122)는 분리된 각 모듈들을 이용하여 각각 복수의 비트스트림들을 교차로 디코딩 처리하도록 제어한다. 예를 들어, 도 3b의 제11 디코딩 모듈(311)을 이용하여 도 1의 제1 디코더(111)가 제1 비트스트림에 대한 디코딩 처리를 수행하였으면, 이어서 제2 디코더(112)가 역시 제11 디코딩 모듈(311)을 이용하여 제2 비트스트림에 대한 디코딩 처리를 수행하는 것이다. 제11 디코딩 모듈(311)을 이용한 제1 비트스트림에 대한 디코딩 처리를 수행한 직후에는 명령 캐시(130)에 제11 디코딩 모듈(311)에 대응되는 32KB의 명령 코드가 저장된 상태이다. 따라서, 이어서 제11 디코딩 모듈(311)을 이용하여 제2 비트스트림에 대한 디코딩 처리를 수행함에 있어 캐시 미스가 발생하지 않아 지연 사이클이 발생하지 않는다.
이때, 복수의 비트스트림들에 대한 디코딩 처리의 교차 수행은 다양한 방식으로 구현될 수 있다. 예를 들어, 제11 디코딩 모듈(311)을 이용하여 제1 내지 제N 비트스트림들에 대한 디코딩 처리를 연속하여 수행한 후 제12 디코딩 모듈(312)을 이용하여 제1 내지 제N 비트스트림들에 대한 디코딩 처리를 연속하여 수행할 수 있다. 또는, 제11 디코딩 모듈(311)을 이용하여 제1 내지 제3 비트스트림들에 대한 디코딩 처리를 연속하여 수행한 후, 제12 디코딩 모듈(312)을 이용하여 제1 내지 제3 비트스트림들에 대한 디코딩 처리를 연속하는 방식으로 제1 내지 제3 비트스트림들에 대한 디코딩 처리가 완료되면 다음의 3개의 비트스트림들에 대한 디코딩 처리를 제11 디코딩 모듈(311)을 이용하여 시작할 수도 있다.
한편 이때, 교차 처리부(122)는 복수의 비트스트림들에 대한 교차 처리를 프레임 단위로 수행하도록 할 수도 있으며, 다른 단위로 수행하도록 하는 것도 가능하다.
이하에서는 분리된 디코딩 모듈을을 이용하여 교차로 디코딩 처리를 수행하는 자세한 방법을 설명한다. 도 4a 내지 도 4c는 본 발명의 일 실시예에 따라 디코딩 모듈을 분리하고, 복수의 비트스트림들을 교차로 디코딩 처리하는 과정을 설명하기 위한 도면들이다.
도 4a에는 디코딩 모듈의 분리가 수행되기 전 두 개의 서로 다른 비트스트림 각각의 프레임 N 및 N+1에 대한 디코딩 처리를 수행하는 과정을 도시하였다. 도 4a를 참조하면, 디코딩 모듈은 F1, F2 및 F3으로 구성되는데 각각 58KB, 31KB 및 88KB의 데이터량을 갖는다. F1(N)(410), F2(N)(420) 및 F3(N)(430)은 어느 하나의 비트스트림의 프레임 N에 대한 디코딩 처리를 수행한다. F1(N+1)(510), F2(N+1)(520) 및 F3(N+1)(530)은 다른 비트스트림의 프레임 N+1에 대한 디코딩 처리를 수행한다. 이와 같이 순차적으로 디코딩 처리를 수행할 경우 프레임 N의 디코딩 처리를 수행할 때 발생하는 캐시 미스가 프레임 N+1의 디코딩 처리를 수행할 때 동일하게 발생하여 지연 사이클이 두 배로 발생한다.
도 4b에는 디코딩 모듈들 각각을 명령 캐시의 데이터량에 따라 분리한 결과를 도시하였다. 이때, 명령 캐시의 데이터량은 32KB라고 가정하였다. 58KB의 데이터량을 갖는 F1 디코딩 모듈은 32KB의 데이터량을 갖는 F11과 26KB의 데이터량을 갖는 F12로 분리되었다. 31KB의 데이터량을 갖는 F2는 명령 캐시의 데이터량 이하이므로 분리되지 않았다. 88KB의 데이터량을 갖는 F3은 32KB의 데이터량을 갖는 F31, F32와 24KB의 데이터량을 갖는 F33으로 분리되었다.
이때, 각각의 디코딩 모듈이 명령 캐시의 데이터량 이하를 갖는 모듈들로 분리되기는 했지만 프레임 N에 대하여 디코딩 모듈들을 모두 수행한 이후에 프레임 N+1에 대하여 디코딩 모듈들을 수행하므로 결과적으로 도 4a와 동일한 지연 사이클이 발생한다.
도 4c에는 복수의 비트스트림들에 대하여 교차로 디코딩 처리를 수행하는 예를 도시하였다. 도 4c를 참조하면, F11(N)(411)의 수행 후 F11(N+1)(511)을 수행한다. 즉, F11 모듈을 이용하여 프레임 N에 대한 디코딩 처리를 수행하고, 이어서 역시 F11 모듈을 이용하여 프레임 N+1에 대한 디코딩 처리를 수행한다. 동일한 디코딩 모듈을 사용하여 두 개의 프레임에 대한 디코딩 처리를 연속으로 수행하였으며, 디코딩 모듈의 데이터량은 명령 캐시의 데이터량을 초과하지 않으므로 캐시 미스가 발생하지 않는다. 다시 말해, 프레임 N의 처리시 명령 캐시에 저장된 명령 코드들을 프레임 N+1 처리시에도 그대로 이용할 수 있어 캐시 미스가 발생하지 않는다.
이후의 디코딩 처리에서도 분리된 디코딩 모듈들 각각을 이용하여 두 개의 프레임(N, N+1)에 대한 디코딩 처리를 연속으로 수행하므로 지연 사이클의 발생이 감소하여 처리 속도가 향상된다.
이와 같이, 디코딩 모듈을 명령 캐시의 데이터량에 따라 분리하고, 분리된 디코딩 모듈들 각각을 이용하여 복수의 비트스트림들을 교차로 디코딩 처리함으로써 캐시 미스(cache miss)의 발생을 최소화하여 지연 사이클(stall cycle)을 감소시키고, 따라서 전체적인 디코딩 처리 속도를 향상시킬 수 있다.
또한, 디코딩 모듈이 처리되는 순서에 따라 메인 메모리에 명령 코드들을 저장함으로써 명령 코드에 대한 중복 캐싱을 최소화하여 디코딩 처리 속도를 향상시킬 수 있다.
도 5 내지 도 7은 본 발명의 일 실시예에 따른 디코딩 처리 방법을 적용하기 전과 후의 명령 캐시의 지연 사이클을 비교하기 위한 그래프들이다.
도 5는 본 발명의 일 실시예에 따른 멀티 디코딩 처리 방법을 적용하기 전의 디코딩 과정에서 발생하는 지연 사이클을 도시한 그래프이다. 가로축은 디코딩 처리 과정에서 처리되는 명령 코드의 데이터량을 의미한다. 본 실시예에서도 명령 캐시의 데이터량은 32KB인 것으로 가정하였다. 도 5를 참조하면, 32KB 마다 지연 사이클이 발생하며, 발생하는 지연 사이클의 크기도 일정하지 않음을 알 수 있다. 이는 메인 메모리에 저장된 명령 코드들의 순서가 디코더의 동작 순서와 일치하지 않음으로써 발생하는 현상이다. 명령 캐시의 경우 일반적으로 멀티-웨이 캐시(multi-way cache) 방식을 사용하는데 캐싱해야 할 명령 코드가 순서대로 메인 메모리에 저장되어 있지 않은 경우 로딩할 수 있는 위치의 제약으로 인하여 명령 코드들이 중복 캐싱될 수 있기 때문이다.
도 6은 본 발명의 일 실시예에 따라 디코딩 모듈의 처리 순서에 따라 메인 메모리에 저장된 명령 코드들의 순서를 정렬한 후의 지연 사이클을 도시한 그래프이다. 도 6을 참조하면, 모든 경우에 동일하게 3MHz의 지연 사이클이 발생했음을 알 수 있다. 중복 캐싱이 발생하지 않으므로 매 캐싱마다 동일한 지연 사이클이 발생한다.
도 7은 본 발명의 일 실시예에 따른 멀티 디코딩 방법을 적용하여 디코딩을 수행한 경우에 발생한 지연 사이클을 도시한 도면이다. 이때, 두 개의 비트스트림들에 대하여 교차로 디코딩 처리를 수행하는 경우를 가정하였다. 도 7을 참조하면, 명령 캐시의 데이터량인 32KB의 두 배만큼 처리하는 데이터량이 증가할 때마다 3MHz의 지연 사이클이 발생함을 알 수 있다. 왜냐하면, 32KB 이하의 데이터량을 갖는 분리된 디코딩 모듈을 이용하여 두 개의 비트스트림들에 대한 디코딩 처리를 연속으로 수행하므로 첫번째 비트스트림에 대한 디코딩 처리시에는 명령 코드의 캐시로 인하여 3MHz의 지연 사이클이 발생하지만, 두번째 비트스트림에 대한 디코딩 처리시에는 이미 명령 캐시에 저장된 명령 코드들을 이용하면 되므로 캐시 미스 및 지연 사이클이 발생하지 않기 때문이다. 이와 같이 각각의 디코딩 모듈에 대하여 두 개의 비트스트림들을 교차로 디코딩 처리함으로써 지연 사이클의 발생을 감소시키고, 결과적으로 전체 처리 속도의 향상을 가져올 수 있다.
도 8 내지 도 10은 본 발명의 실시예들에 따른 디코딩 처리 방법을 설명하기 위한 순서도들이다.
도 8을 참조하면, S801 단계에서 복수의 비트스트림들을 수신한다. 이때, 복수의 비트스트림들은 하나의 주 오디오 신호(main audio signal)와 적어도 하나의 연관 오디오 신호(associated audio signal)에 대한 비트스트림들일 수 있다. S802 단계에서는 복수의 비트스트림들을 디코딩하기 위한 디코딩 모듈을 명령 캐시의 데이터량에 따라 분리한다. 이때, 디코딩 모듈이란 디코딩 처리를 수행하는 단위를 의미하며, 예를 들어 전체의 디코딩 처리 과정을 수행하는 기능을 기준으로 나눈 것일 수 있다. 마지막으로 S803 단계에서는 분리된 디코딩 모듈들을 이용하여 복수의 비트스트림들을 교차로 디코딩 처리한다.
도 9를 참조하면, S901 단계에서 복수의 비트스트림들을 수신한다. S902 단계에서는 디코딩 모듈을 명령 캐시의 데이터량에 따라 분리한다. 예를 들어, 하나의 디코딩 모듈을 명령 캐시의 데이터량 이하의 데이터량을 갖는 복수의 모듈로 분리한다. S903 단계에서는 분리된 디코딩 모듈들 중 어느 하나를 수행하기 위해 메인 메모리에 저장된 명령 코드들을 명령 캐시에 캐싱한다. S904 단계에서는 캐싱된 명령 코드들을 이용하여 둘 이상의 비트스트림들에 대한 디코딩 처리를 연속으로 수행한다.
도 10을 참조하면, S1001 단계에서 복수의 비트스트림들을 수신한다. S1002 단계에서 디코딩 모듈의 데이터량이 멀티 캐시의 데이터량보다 큰지 여부를 판단한다. 만약, 디코딩 모듈의 데이터량이 멀티 캐시의 데이터량보다 크다고 판단되었다면 S1003 단계로 진행하여 디코딩 모듈을 명령 캐시의 데이터량 이하의 데이터량을 갖는 복수의 모듈로 분리한다. 하지만, S1002 단계의 판단 결과 디코딩 모듈의 데이터량이 멀티 캐시의 데이터량보다 크지 않다고 판단되었다면 S1003 단계를 수행하지 않고 S1004 단계로 건너뛴다. S1004 단계에서는 다른 디코딩 모듈이 더 존재하는지를 판단한다. 만약, 다른 디코딩 모듈이 더 존재한다면 S1002 단계로 돌아가고, 다른 디코딩 모듈이 더 존재하지 않는다면 S1005 단계로 진행한다. S1005 단계에서는 분리된 디코딩 모듈들 중 어느 하나를 수행하기 위해 메인 메모리에 저장된 명령 코드들을 명령 캐시에 캐싱한다. 마지막으로, S1006 단계에서는 캐싱된 명령 코드들을 이용하여 둘 이상의 비트스트림들에 대한 디코딩 처리를 연속하여 수행한다.
이와 같이, 디코딩 모듈을 명령 캐시의 데이터량에 따라 분리하고, 분리된 디코딩 모듈들 각각을 이용하여 복수의 비트스트림들을 교차로 디코딩 처리함으로써 캐시 미스(cache miss)의 발생을 최소화하여 지연 사이클(stall cycle)을 감소시키고, 따라서 전체적인 디코딩 처리 속도를 향상시킬 수 있다.
또한, 디코딩 모듈이 처리되는 순서에 따라 메인 메모리에 명령 코드들을 저장함으로써 명령 코드에 대한 중복 캐싱을 최소화하여 디코딩 처리 속도를 향상시킬 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명에 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 한다.

Claims (15)

  1. 멀티 디코딩 처리 방법에 있어서,
    복수의 비트스트림들을 수신하는 단계;
    상기 복수의 비트스트림들을 디코딩하기 위한 디코딩 모듈을 명령 캐시의 데이터량에 따라 분리하는 단계; 및
    상기 분리된 디코딩 모듈들 각각을 이용하여 상기 복수의 비트스트림들을 교차로(cross) 디코딩 처리하는 단계를 포함하는 멀티 디코딩 처리 방법.
  2. 제1항에 있어서,
    상기 교차로 디코딩 처리하는 단계는,
    상기 분리된 디코딩 모듈들 중 어느 하나를 이용하여 상기 복수의 비트스트림들 중 둘 이상의 비트스트림들을 연속으로 디코딩 처리하는 것을 특징으로 하는 멀티 디코딩 처리 방법.
  3. 제2항에 있어서,
    상기 교차로 디코딩 처리하는 단계는,
    상기 분리된 디코딩 모듈들 중 어느 하나를 수행하기 위해 상기 명령 캐시에 캐싱된 명령 코드들을 이용하여 상기 복수의 비트스트림들 중 둘 이상의 비트스트림들을 연속으로 디코딩 처리하는 것을 특징으로 하는 멀티 디코딩 처리 방법.
  4. 제1항에 있어서,
    상기 교차로 디코딩 처리하는 단계는,
    상기 분리된 디코딩 모듈들 중 어느 하나를 수행하기 위해 메인 메모리에 저장된 명령 코드들 중 일부를 상기 명령 캐시에 캐싱하는 단계;
    상기 캐싱된 명령 코드들을 이용하여 상기 복수의 비트스트림들 중 둘 이상의 비트스트림에 대한 디코딩 처리를 연속으로 수행하는 단계; 및
    상기 분리된 디코딩 모듈들 중 다른 하나를 수행하기 위해 상기 메인 메모리에 저장된 명령 코드들 중 일부를 상기 명령 캐시에 캐싱하는 단계를 포함하는 것을 특징으로 하는 멀티 디코딩 처리 방법.
  5. 제1항 내지 제4항 중의 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  6. 멀티 디코더에 있어서,
    복수의 비트스트림들을 각각 디코딩하기 위한 복수의 디코더들;
    상기 복수의 비트스트림들의 디코딩 처리에 필요한 명령 코드들이 저장된 메인 메모리;
    상기 메인 메모리에 저장된 명령 코드들 중에서 디코딩 모듈별로 필요한 명령 코드들이 캐싱되는 명령 캐시; 및
    상기 명령 캐시의 데이터량에 따라 상기 디코딩 모듈을 분리하고, 분리된 디코딩 모듈들 각각을 상기 복수의 디코더들이 교차로(cross) 수행하도록 제어하는 디코딩 처리 제어부를 포함하는 멀티 디코더.
  7. 제6항에 있어서,
    상기 디코딩 처리 제어부는 상기 분리된 디코딩 모듈들 중 어느 하나를 상기 복수의 디코더들 중 둘 이상의 디코더들이 연속으로 수행하도록 하는 것을 특징으로 하는 멀티 디코더.
  8. 제7항에 있어서,
    상기 디코딩 처리 제어부는 상기 분리된 디코딩 모듈들 중 어느 하나를 수행하기 위해 상기 명령 캐시에 캐싱된 명령 코드들을 이용하여 상기 복수의 디코더들 중 둘 이상의 디코더들이 연속으로 디코딩 처리를 수행하도록 하는 것을 특징으로 하는 멀티 디코더.
  9. 제6항에 있어서,
    상기 디코딩 처리 제어부는,
    상기 디코딩 모듈을 분리하고, 분리된 디코딩 모듈을 수행하기 위한 명령 코드를 상기 메인 메모리로부터 상기 명령 캐시에 캐싱하는 디코딩 모듈 분리부; 및
    상기 분리된 디코딩 모듈들 각각에 대하여 상기 명령 캐시에 캐싱된 명령 코드들을 이용하여 상기 복수의 디코더들이 교차로 디코딩 처리를 하도록 하는 교차 처리부를 포함하는 것을 특징으로 하는 멀티 디코더.
  10. 제9항에 있어서,
    상기 디코딩 모듈 분리부가 상기 분리된 디코딩 모듈들 중 어느 하나에 대응되는 명령 코드들을 상기 명령 캐시에 캐싱하면,
    상기 교차 처리부는 상기 명령 캐시를 이용하여 상기 복수의 디코더들 중 둘 이상의 디코더가 연속으로 디코딩 처리를 수행하도록 하는 것을 특징으로 하는 멀티 디코더.
  11. 제9항에 있어서,
    상기 메인 메모리에는 상기 디코딩 모듈들의 처리 순서에 따라 명령 코드가 저장되어 있는 것을 특징으로 하는 멀티 디코더.
  12. 제9항에 있어서,
    상기 교차 처리부는 상기 복수의 비트스트림들의 프레임 단위로 교차로 디코딩 처리를 하도록 상기 복수의 디코더들을 제어하는 것을 특징으로 하는 멀티 디코더.
  13. 제9항에 있어서,
    상기 디코딩 모듈 분리부는 상기 디코딩 모듈의 데이터량이 상기 명령 캐시의 데이터량 이하인 경우 상기 디코딩 모듈을 분리하지 않는 것을 특징으로 하는 멀티 디코더.
  14. 제9항에 있어서,
    상기 디코딩 모듈 분리부는 상기 디코딩 모듈의 데이터량이 상기 명령 캐시의 데이터량보다 큰 경우 상기 명령 캐시의 데이터량 이하의 데이터량을 갖는 복수의 모듈로 분리하는 것을 특징으로 하는 멀티 디코더.
  15. 제6항에 있어서,
    상기 복수의 비트스트림들은 하나의 주 오디오 신호와 적어도 하나의 연관 오디오 신호에 대한 비트스트림들을 포함하는 것을 특징으로 하는 멀티 디코더.
PCT/KR2014/009109 2013-09-27 2014-09-29 멀티 디코딩 처리 방법 및 이를 수행하기 위한 멀티 디코더 WO2015046991A1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/024,266 US9761232B2 (en) 2013-09-27 2014-09-29 Multi-decoding method and multi-decoder for performing same

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020130115432A KR101805630B1 (ko) 2013-09-27 2013-09-27 멀티 디코딩 처리 방법 및 이를 수행하기 위한 멀티 디코더
KR10-2013-0115432 2013-09-27

Publications (1)

Publication Number Publication Date
WO2015046991A1 true WO2015046991A1 (ko) 2015-04-02

Family

ID=52743994

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2014/009109 WO2015046991A1 (ko) 2013-09-27 2014-09-29 멀티 디코딩 처리 방법 및 이를 수행하기 위한 멀티 디코더

Country Status (3)

Country Link
US (1) US9761232B2 (ko)
KR (1) KR101805630B1 (ko)
WO (1) WO2015046991A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI753182B (zh) * 2017-07-07 2022-01-21 美商高通公司 多串流音頻寫碼的方法、裝置與設備

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9741337B1 (en) * 2017-04-03 2017-08-22 Green Key Technologies Llc Adaptive self-trained computer engines with associated databases and methods of use thereof

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008043670A1 (en) * 2006-10-10 2008-04-17 International Business Machines Corporation Managing cache data
US20090279801A1 (en) * 2006-09-26 2009-11-12 Jun Ohmiya Decoding device, decoding method, decoding program, and integrated circuit
US20110289276A1 (en) * 2002-08-07 2011-11-24 Mmagix Technology Limited Cache memory apparatus
KR20120096592A (ko) * 2009-12-21 2012-08-30 퀄컴 인코포레이티드 캐시 히트들을 향상시키기 위한 디코더에서의 시간 및 공간 비디오 블록 재정렬
KR20130103553A (ko) * 2010-10-15 2013-09-23 퀄컴 인코포레이티드 캐싱된 이미지들을 이용하는 저전력 오디오 디코딩 및 재생

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100261254B1 (ko) * 1997-04-02 2000-07-01 윤종용 비트율 조절이 가능한 오디오 데이터 부호화/복호화방법 및 장치
KR100359782B1 (ko) * 2000-11-27 2002-11-04 주식회사 하이닉스반도체 엠펙 디코더의 시스템 타임 클럭 조정 장치 및 방법
US7062429B2 (en) * 2001-09-07 2006-06-13 Agere Systems Inc. Distortion-based method and apparatus for buffer control in a communication system
US7502743B2 (en) 2002-09-04 2009-03-10 Microsoft Corporation Multi-channel audio encoding and decoding with multi-channel transform selection
US7831434B2 (en) * 2006-01-20 2010-11-09 Microsoft Corporation Complex-transform channel coding with extended-band frequency coding
US20080086599A1 (en) * 2006-10-10 2008-04-10 Maron William A Method to retain critical data in a cache in order to increase application performance
US8213518B1 (en) * 2006-10-31 2012-07-03 Sony Computer Entertainment Inc. Multi-threaded streaming data decoding
EP2097895A4 (en) * 2006-12-27 2013-11-13 Korea Electronics Telecomm DEVICE AND METHOD FOR ENCODING AND DECODING MULTI-OBJECT AUDIO SIGNAL WITH DIFFERENT CHANNELS WITH INFORMATION BIT RATE CONVERSION
US8411734B2 (en) * 2007-02-06 2013-04-02 Microsoft Corporation Scalable multi-thread video decoding
WO2008151408A1 (en) * 2007-06-14 2008-12-18 Voiceage Corporation Device and method for frame erasure concealment in a pcm codec interoperable with the itu-t recommendation g.711
US7885819B2 (en) * 2007-06-29 2011-02-08 Microsoft Corporation Bitstream syntax for multi-process audio decoding
US8725520B2 (en) * 2007-09-07 2014-05-13 Qualcomm Incorporated Power efficient batch-frame audio decoding apparatus, system and method
US8514942B2 (en) * 2008-12-31 2013-08-20 Entropic Communications, Inc. Low-resolution video coding content extraction
US20150348558A1 (en) * 2010-12-03 2015-12-03 Dolby Laboratories Licensing Corporation Audio Bitstreams with Supplementary Data and Encoding and Decoding of Such Bitstreams
TWI476761B (zh) * 2011-04-08 2015-03-11 Dolby Lab Licensing Corp 用以產生可由實施不同解碼協定之解碼器所解碼的統一位元流之音頻編碼方法及系統
US9293146B2 (en) * 2012-09-04 2016-03-22 Apple Inc. Intensity stereo coding in advanced audio coding
TWI530941B (zh) * 2013-04-03 2016-04-21 杜比實驗室特許公司 用於基於物件音頻之互動成像的方法與系統
US20160234520A1 (en) * 2013-09-16 2016-08-11 Entropic Communications, Llc Efficient progressive jpeg decode method
WO2015041647A1 (en) * 2013-09-19 2015-03-26 Entropic Communications, Inc. Parallel decode of a progressive jpeg bitstream

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110289276A1 (en) * 2002-08-07 2011-11-24 Mmagix Technology Limited Cache memory apparatus
US20090279801A1 (en) * 2006-09-26 2009-11-12 Jun Ohmiya Decoding device, decoding method, decoding program, and integrated circuit
WO2008043670A1 (en) * 2006-10-10 2008-04-17 International Business Machines Corporation Managing cache data
KR20120096592A (ko) * 2009-12-21 2012-08-30 퀄컴 인코포레이티드 캐시 히트들을 향상시키기 위한 디코더에서의 시간 및 공간 비디오 블록 재정렬
KR20130103553A (ko) * 2010-10-15 2013-09-23 퀄컴 인코포레이티드 캐싱된 이미지들을 이용하는 저전력 오디오 디코딩 및 재생

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI753182B (zh) * 2017-07-07 2022-01-21 美商高通公司 多串流音頻寫碼的方法、裝置與設備

Also Published As

Publication number Publication date
KR101805630B1 (ko) 2017-12-07
US20160240198A1 (en) 2016-08-18
KR20150035180A (ko) 2015-04-06
US9761232B2 (en) 2017-09-12

Similar Documents

Publication Publication Date Title
US5815206A (en) Method for partitioning hardware and firmware tasks in digital audio/video decoding
WO2010143907A2 (ko) 다객체 오디오 신호를 부호화하는 방법 및 부호화 장치, 복호화 방법 및 복호화 장치, 그리고 트랜스코딩 방법 및 트랜스코더
EP1624704B1 (en) Video decoder with parallel processors for decoding macro-blocks
WO2013183918A1 (en) Image processing apparatus and method for three-dimensional (3d) image
WO2009123409A2 (ko) 다객체 오디오 신호의 부가정보 비트스트림 생성 방법 및 장치
US20080240093A1 (en) Stream multiplexer/de-multiplexer
JPH1198098A (ja) データ分離装置
WO2021029756A1 (ko) 응용 프로그램의 스트리밍 영상 제공 장치 및 방법
WO2015046991A1 (ko) 멀티 디코딩 처리 방법 및 이를 수행하기 위한 멀티 디코더
WO2014209045A1 (en) Method and apparatus for controlling memory operation
KR100864834B1 (ko) 메모리 재할당을 이용한 다중 프로세서 간의 데이터 전송장치 및 방법
WO2019107955A1 (ko) 분산 트랜스코딩의 시간 단축을 위한 최적화 방법 및 그 시스템
CN101588503B (zh) 信号处理装置和信号处理方法
WO2023027399A1 (en) Method and device for downloading streaming media file
WO2020251124A1 (ko) 기계 학습 모델에 기초한 블록 체인을 이용한 hevc 분산형 복호화 방법, 장치 및 시스템
WO2019112084A1 (ko) Cnn을 이용한 압축 왜곡 제거 방법
WO2019050067A1 (ko) 비디오 품질 제어
WO2016006746A1 (ko) 초고해상도 영상 처리를 위한 장치
US20100188569A1 (en) Multichannel Video Port Interface Using No External Memory
CN114222166B (zh) 多路视频码流实时处理、同屏播放方法及相关系统
CN105120323A (zh) 一种分布式播放器任务调度的方法及系统
CN103152570B (zh) 一种视频位流解码方法和装置
KR101138920B1 (ko) 멀티 스레드 기반의 비디오 디코더 및 디코딩 방법
JP4331488B2 (ja) 集積回路及びそれを用いた電子機器
KR101861621B1 (ko) 에뮬레이션 방지 바이트 제거에 기초하여 순차적으로 비트 스트림을 파싱하는 장치 및 방법

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14850038

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 15024266

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14850038

Country of ref document: EP

Kind code of ref document: A1