KR101503623B1 - 캐싱된 이미지들을 이용하는 저전력 오디오 디코딩 및 재생 - Google Patents
캐싱된 이미지들을 이용하는 저전력 오디오 디코딩 및 재생 Download PDFInfo
- Publication number
- KR101503623B1 KR101503623B1 KR1020137012592A KR20137012592A KR101503623B1 KR 101503623 B1 KR101503623 B1 KR 101503623B1 KR 1020137012592 A KR1020137012592 A KR 1020137012592A KR 20137012592 A KR20137012592 A KR 20137012592A KR 101503623 B1 KR101503623 B1 KR 101503623B1
- Authority
- KR
- South Korea
- Prior art keywords
- audio
- memory
- decoding
- cache
- data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
특정 방법은 하나 이상의 메모리 이미지들을 멀티-웨이 캐시로 로딩하는 단계를 포함한다. 메모리 이미지들은 오디오 디코더와 연관되고, 멀티-웨이 캐시는 프로세서에 액세스 가능하다. 메모리 이미지들 각각은 멀티-웨이 캐시의 페이지 사이즈를 초과하지 않도록 사이징된다.
Description
우선권 주장
본 출원은 2010년 10월 15일에 출원된 미국 가특허출원 제 61/393,495 호에 우선권을 주장하며, 상기 출원의 내용들은 그 전부가 본 명세서에 참조로서 통합된다.
기술 분야
본 개시물은 일반적으로 오디오 디코딩 및 재생에 관한 것이다.
기술의 진보는 더 소형이고 더 강력한 컴퓨팅 디바이스들을 발생하였다. 예를 들어, 소형이고, 경량이며, 사용자들에 의해 쉽게 운반되는 휴대용 무선 전화기들, 개인 휴대정보 단말기들 (PDAs) 및 페이징 디바이스들과 같은 무선 컴퓨팅 디바이스들을 포함하는, 다양한 개인 컴퓨팅 디바이스들이 현재 존재한다. 더욱 상세하게는, 셀룰러 전화기들 및 인터넷 프로토콜 (IP) 전화기들과 같은 휴대용 무선 전화기들은 무선 네트워크들을 통해 음성 및 데이터 패킷들을 통신할 수 있다. 또한, 이러한 다수의 무선 전화기들은 본 명세서에 통합된 다른 타입의 디바이스들을 포함한다. 예를 들어, 무선 전화기는 또한, 디지털 스틸 카메라, 디지털 비디오 카메라, 디지털 레코더, 및 오디오 파일 플레이어를 포함할 수 있다.
무선 전화기들과 같은 컴퓨팅 디바이스들은 복수의 종류의 오디오 스트림들을 디코딩하고 플레이하는 능력을 가질 수도 있다. 특정 시나리오에서, 이러한 능력은 상이한 종류의 오디오 스트림들을 동시 방식으로 디코딩하고 플레이하는 것을 포함할 수도 있다. 프로세싱되고 있는 오디오 스트림들의 타입 또는 개수가 변화할 때마다, 컴퓨팅 디바이스는 컴퓨팅 디바이스에서 오디오 신호 프로세싱을 재구성하기 위해 전력 리소스들 (예컨대, 배터리 수명) 을 소비할 수도 있다.
전자 디바이스에서 오디오 스트림들을 디코딩 및 재생하는 것은, 오디오 디지털 신호 프로세서 (DSP) 와 같은 프로세서의 이용을 수반할 수도 있다. 오디오 DSP 에서 동작들을 촉진하기 위한 노력으로, 오디오 DSP 는 캐시에 커플링될 수도 있다. 그러나, 캐시는 오디오 디코딩 및 재생 프로세스를 위해 요구되는 데이터, 명령들 및 동적 메모리 할당들 모두를 수용하기에 너무 작을 수도 있다. 또한, 캐시가 이러한 정보 모두를 수용하기에 충분히 크다고 하더라도, 정보는 캐시에 적절히 맞도록 정렬되지 않을 수도 있다. 그 결과, 캐시 미스들이 오디오 디코딩 및 재생 동안 발생할 수도 있다. 예를 들면, 캐시 미스들은 하나의 오디오 디코더로부터 다른 오디오 디코더로 스위칭할 경우에 발생할 수도 있다. 그 결과, 캐시 미스들이 새로운 데이터를 캐시로 로딩할 수도 있기 때문에, 캐시 미스들은 오디오 DSP 에서 전력 사용 (예컨대, 다른 메모리로부터 데이터를 취출하고 그 데이터를 캐시에 기록하는 것으로 인한 전력 사용) 을 증가시킬 수도 있다. 추가로, 일부 시스템들은 내부 메모리를 캐시로서 구성하거나, 캐시를 밀착 결합 메모리 (TCM) 로 변환시킬 수도 있다. 예를 들면, 이러한 구성 및 변환은 복수의 오디오 스트림들을 동시에 프로세싱할 경우 또는 동시의 프로세싱으로부터 단일 프로세싱으로 트랜지션할 경우 발생할 수도 있다. 이러한 동작들은 오디오 재생 동안 원하지 않는 가청 인터럽션들 (예컨대, "팝핑" 잡음들) 을 유발할 수도 있다. 따라서, 오디오 디코딩 및 재생 동안 캐시 미스들 및 메모리 변환들을 감소시키거나 제거하는 것은 전자 디바이스에서 전력 소비를 감소시키고, 더 쾌적한 사용자 경험을 제공할 수도 있다.
본 개시물은 캐싱된 이미지들 (예컨대, 메모리 이미지들) 을 이용하여 저전력 디코딩 및 재생을 수행하는 시스템들 및 방법들을 설명한다. 일 구성에서, 프로세서는 멀티-웨이 (예컨대, 4-웨이) 캐시로 액세스한다. 더 상위 레벨 메모리 (예컨대, RAM) 로부터의 데이터가 멀티-웨이 캐시로 로딩될 수도 있다. 저전력 디코딩 및 재생 시나리오가 검출될 경우, 하나 이상의 메모리 이미지들은 RAM 으로부터 멀티-웨이 캐시로 로딩될 수도 있다. 각각의 메모리 이미지는 멀티-웨이 캐시에 로딩될 경우 그 메모리 이미지가 단일 캐시 페이지 내에 맞도록 RMA 에서 사이징되고 정렬될 수도 있다. 로딩된 메모리 이미지들은 특정 오디오 디코더에 특정된 데이터, 명령들 및 동적 메모리 할당 영역들을 포함할 수도 있다. 메모리 이미지들의 로딩 동안, 오디오 재생은 일부 캐시 미스들을 생성할 수도 있지만, 오디오 재생은 가청 아티팩트들을 지연시키거나 생성하지 않도록 한다. 메모리 이미지들의 캐시 내로의 로딩시, 오디오 스트림의 디코딩 및 재생은 멀티-웨이 캐시에서의 캐시 미스들 없이, RAM 으로의 추가 액세스들 없이 수행될 수도 있고, 따라서 전력을 소비한다.
본 개시물은 이러한 저전력 디코딩 및 재생 시나리오들과 함께 이용될 수도 있는 동적 메모리 관리 시스템들 및 방법들을 설명한다. 예를 들면, 저전력 디코딩 및 재생을 가능하게 하도록 멀티-웨이 캐시로 로딩된 메모리 이미지들 중 하나는 본 명세서에 개시된 동적 메모리 관리 기술들을 이용하여 관리되는 동적 메모리 할당 영역일 수도 있다. 동적 메모리 할당 영역을 관리하는 것은 할당된 영역을 미리 결정된 사이즈의 미리 결정된 버퍼들로 분할하고, 특정 사이즈의 버퍼들이 사용가능한지 여부를 나타내기 위해 비트 마스크를 이용하는 것을 포함할 수도 있다.
특정 실시형태에서, 일 방법은 오디오 디코더와 연관된 하나 이상의 메모리 이미지들을 멀티-웨이 캐시로 로딩하는 단계를 포함한다. 멀티-웨이 캐시는 프로세서에 액세스 가능하다. 하나 이상의 메모리 이미지들 각각은 멀티-웨이 캐시의 페이지 사이즈를 초과하지 않도록 사이징된다.
다른 특정 실시형태에서, 전자 디바이스는 프로세서 및 프로세서에 액세스 가능한 멀티-웨이 캐시를 포함한다. 프로세서는 오디오 디코더와 연관된 하나 이상의 메모리 이미지들을 멀티-웨이 캐시로 로딩하도록 구성된다. 하나 이상의 메모리 이미지들 각각은 멀티-웨이 캐시의 페이지 사이즈를 초과하지 않도록 사이징된다.
또 다른 특정 실시형태에서, 일 방법은 비트 마스크에 기초하여, 적어도 하나의 버퍼가 요청된 버퍼 사이즈를 만족하는데 사용가능한지 여부를 결정하는 단계를 포함한다. 비트 마스크의 제 1 비트는 제 1 버퍼 사이즈를 갖는 버퍼가 사용가능한지 여부를 나타낸다. 비트 마스크의 제 2 비트는 제 2 버퍼 사이즈를 갖는 버퍼가 사용가능한지 여부를 나타낸다.
개시된 실시형태들 중 적어도 하나에 의해 제공되는 특별한 장점들은 감소된 전력 사용으로 하나 이상의 오디오 스트림들을 디코딩하고 재생하는 능력을 포함한다.
본 개시물의 다른 양태들, 장점들 및 특징들은 이하 섹션들 : 도면의 간단한 설명, 발명을 실시하기 위한 구체적인 내용, 및 청구범위를 포함하는 전체 출원의 검토 이후에 명백해질 것이다.
도 1 은 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행하는 시스템의 특정 실시형태를 예시하기 위한 블록도이다.
도 2 는 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행하는 시스템의 다른 특정 실시형태를 예시하기 위한 블록도이다.
도 3 은 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행하는 시스템의 또 다른 특정 실시형태를 예시하기 위한 블록도이다.
도 4 는 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행하는 시스템의 또 다른 특정 실시형태를 예시하기 위한 블록도이다.
도 5 는 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행하는 시스템의 또 다른 특정 실시형태를 예시하기 위한 도면이다.
도 6 은 도 1 내지 도 5 의 시스템들에서 이용될 수 있는 동적 메모리 관리의 특정 실시형태를 예시하기 위한 도면이다.
도 7 은 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행하는 방법의 특정 실시형태를 예시하기 위한 흐름도이다.
도 8 은 캐싱된 이미지들을 이용하는 저전력 오디오 디코딩 및 재생 동안 동적 메모리 관리 방법의 특정 실시형태를 예시하기 위한 흐름도이다.
도 9 는 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행할 수 있는 전자 디바이스의 특정 실시형태를 예시하기 위한 도면이다.
도 1 은 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행하는 시스템의 특정 실시형태를 예시하기 위한 블록도이다.
도 2 는 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행하는 시스템의 다른 특정 실시형태를 예시하기 위한 블록도이다.
도 3 은 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행하는 시스템의 또 다른 특정 실시형태를 예시하기 위한 블록도이다.
도 4 는 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행하는 시스템의 또 다른 특정 실시형태를 예시하기 위한 블록도이다.
도 5 는 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행하는 시스템의 또 다른 특정 실시형태를 예시하기 위한 도면이다.
도 6 은 도 1 내지 도 5 의 시스템들에서 이용될 수 있는 동적 메모리 관리의 특정 실시형태를 예시하기 위한 도면이다.
도 7 은 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행하는 방법의 특정 실시형태를 예시하기 위한 흐름도이다.
도 8 은 캐싱된 이미지들을 이용하는 저전력 오디오 디코딩 및 재생 동안 동적 메모리 관리 방법의 특정 실시형태를 예시하기 위한 흐름도이다.
도 9 는 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행할 수 있는 전자 디바이스의 특정 실시형태를 예시하기 위한 도면이다.
도 1 은 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행하는 시스템 (100) 의 특정 실시형태를 예시하기 위한 블록도이다. 시스템은 프로세서 (110) 및 메모리 (140) 를 포함한다. 프로세서 (110) 는 프로세서 코어 (120) 및 멀티-웨이 캐시 (130) 를 포함할 수도 있다. 프로세서 (110) 에서 (예컨대, 프로세서 코어 (120) 의 동작에 기초한) 동작 동안, 데이터는 메모리 (140) 로부터 멀티-웨이 캐시 (130) 로 로딩될 수도 있다. 예를 들면, 멀티-웨이 캐시 (130) 는 프로세서 (110) 에 의해 최근에 이용되거나 자주 이용된 메모리 (140) 의 부분들로부터 데이터를 저장할 수도 있다.
프로세서 (110) 는 범용 프로세서 또는 디지털 신호 프로세서 (DSP) 일 수도 있다. 특정 실시형태에서, 프로세서 (110) 는 오디오 DSP 이고, 프로세서 코어 (120) 는 하나 이상의 오디오 디코딩 블록들 (예컨대, 예시적인 오디오 디코딩 블록 (122)) 을 포함한다. 오디오 디코딩 블록 (122) 은 하드웨어 회로를 포함할 수도 있고, 및/또는 특정 타입의 오디오 스트림들을 디코딩하도록 동작가능한 소프트웨어를 실행할 수도 있다. 예를 들면, 오디오 디코딩 블록 (122) 은 AAC (advanced audio coding) - 타입 오디오 디코더 (예컨대, AAC+), MP3 (motion picture experts group audio layer 3) - 타입 오디오 디코더, 음성 오디오 디코더, 펄스 코드 변조 (PCM) 오디오 디코더, 다른 타입의 오디오 디코더들, 또는 이들의 임의의 조합을 포함할 수도 있다.
멀티-웨이 캐시 (130) 는 복수의 캐시 웨이들 (예컨대, 도 1 에 도시된 것과 같은 "웨이 0", "웨이 1", ... "웨이 N-1") 을 포함할 수도 있다. 예를 들면, 멀티-웨이 캐시 (130) 는 4 개의 캐시 웨이들을 포함하는 4-웨이 캐시일 수도 있고, 여기서 4-웨이 캐시의 각각의 캐시 라인은 그 각각이 상이한 태그와 연관되는 4 개의 데이터 엘리먼트들을 포함한다. 대안적으로, 멀티-웨이 캐시 (130) 는 4 개 이상 또는 미만의 캐시 웨이들을 포함할 수도 있다. 특정 실시형태에서, 멀티-웨이 캐시 (130) 는 페이지들로 분할될 수도 있고 (예컨대, 각각의 캐시 웨이는 하나의 페이지에 대응할 수도 있음), 메모리 (140) 의 페이지-정렬 경계들에 따라 메모리 (140) 로부터 데이터를 저장하도록 동작가능할 수도 있다. 예를 들어, 멀티-웨이 캐시 (130) 는 256 킬로바이트 (kb) 4-웨이 캐시일 수도 있고, 이 캐시는 메모리 (140) 로부터 4 개까지의 64kb 페이지들을 저장할 수 있다.
메모리 (140) 는 멀티-웨이 캐시 (130) 보다 상위 레벨 메모리일 수도 있다. 예를 들면, 메모리 (140) 는 프로세서 (110) 에 액세스 가능한 랜덤 액세스 메모리 (RAM) 일 수도 있다. 메모리 (140) 는 멀티-웨이 캐시 (130) 와 비교할 경우, 증가된 레이턴시를 갖는 멀티-웨이 캐시 (130) 보다 더 많은 저장 공간을 제공할 수도 있다. 추가로, 프로세서 (110) 에 의한 메모리 (140) 의 이용은 멀티-웨이 캐시 (130) 의 이용보다 추가의 전력을 수반할 수도 있다. 예를 들면, 메모리 (140) 의 이용은 프로세서 (110) 외부의 하나 이상의 데이터 버스들에 전력을 공급하는 것을 수반할 수도 있다.
특정 실시형태에서, 메모리 (140) 는 멀티-웨이 캐시 (130) 의 페이지 사이즈와 실질적으로 동일한 페이지 사이즈를 갖는 페이지들에 데이터를 저장한다. 예를 들면, 메모리 (140) 와 멀티-웨이 캐시 (130) 양자는 64kb 의 페이지 사이즈를 가질 수도 있다. 메모리 (140) 및 멀티-웨이 캐시 (130) 가 동일한 페이지 사이즈들을 가질 경우, 메모리 (140) 의 단일 페이지 내에 저장되도록 정렬된 메모리 이미지들 (예컨대, 예시적인 메모리 이미지들 (142, 144, 및 146)) 은 멀티-웨이 캐시 (130) 의 단일 페이지로 로딩될 수도 있다. 예를 들면, 메모리 이미지들 (142, 144, 및 146) 각각은 도 1 에 도시된 것과 같이, 멀티-웨이 캐시 (130) 의 단일 페이지들로 로딩될 수도 있다. 특정 실시형태에서, 메모리 이미지들 (142, 144, 및 146) 은 특정 오디오 디코더와 연관된다. 메모리 이미지들 (142, 144, 및 146) 을 멀티-웨이 캐시 (130) 에 로딩하는 것은 멀티-웨이 캐시 (130) 에서 임의의 캐시 미스들을 발생하지 않고, RAM (140) 에 액세스하지 않고 오디오 디코딩을 가능하게 할 수도 있다. 메모리 (140) 는 또한 다른 오디오 디코더들 및 애플리케이션들과 연관된 명령들 및 데이터 (148, 149) 를 저장할 수도 있다.
동작 동안, 데이터는 프로세서 코어 (120) 의 오디오 디코딩 블록 (122) 에 의해 발생된 메모리 액세스 요청들 (예컨대, 판독 및 기록 요청들) 에 응답하여 멀티-웨이 캐시 (130) 로 로딩될 수도 있다. 액세스 요청이 멀티-웨이 캐시 (130) 에 캐싱되지 않은 메모리 어드레스에 대응할 경우, 캐시 미스가 발생할 수도 있다. 캐시 미스에 응답하여, 메모리 어드레스를 포함하는 페이지의 전부 또는 일부는 메모리 (140) 로부터 멀티-웨이 캐시 (130) 로 로딩될 수도 있다. 대안적으로, 액세스 요청이 멀티-웨이 캐시 (130) 에 캐싱된 메모리 어드레스에 대응한다면, 액세스 요청은 캐시 미스의 발생 없이 서비스될 수도 있다.
시스템 (100) 에서 디코딩되고 재생되는 각각의 오디오 스트림이 동일한 타입으로 이루어질 경우 (예컨대, 오직 MP3 오디오 스트림들만이 디코딩되고 재생되고 있는 경우), 시스템 (100) 은 저전력 디코딩 및 재생 모드로 트랜지션될 수도 있다. 저전력 모드에서, 오디오 디코딩 명령들 및 데이터 (예컨대, 메모리 이미지들 (142, 144, 및 146) 에 저장된 MP3 디코더 명령들 및 데이터) 는 메모리 (140) 로부터 멀티-웨이 캐시 (130) 로 로딩될 수도 있고, 따라서 오디오 스트림(들) 을 프로세싱하는 것과 연관된 모든 메모리 요청들은 멀티-웨이 캐시 (130) 에서 캐싱된 메모리 이미지들에 대응하고, 오디오 스트림들의 프로세싱에 의해 어떤 캐시 미스들도 발생되지 않는다.
도 1 의 시스템 (100) 이 오디오 스트림들의 저전력 디코딩 및 재생을 가능하게 할 수도 있음이 인식될 것이다. 예를 들면, 도 1 의 시스템 (100) 은 캐시 미스들을 발생하지 않고 오디오 디코딩을 가능하게 하기 위해 메모리 이미지들 (142, 144, 및 146) 을 멀티-웨이 캐시 (130) 로 로딩할 수도 있고, 따라서 시스템 (100) 의 전체 전력 소비를 감소시킬 수도 있다. 따라서, 메모리 이미지들 (142, 144, 및 146) 이 단일 캐시 페이지에 대응하도록 사이징 및 정렬시킴으로써, 애플리케이션 프로그래머들 및 개발자들은 도 1 의 시스템 (100) 에서 저전력 디코딩 및 재생을 가능하게 할 수도 있다. 추가로, 저전력 재생은 멀티-웨이 캐시 (130) 를, 재생 동안 가청 효과들을 발생할 수 있는 밀착 결합 메모리 (TCM) 구성으로 변환시키지 않고 달성될 수 있다. 추가로, 멀티-웨이 캐시 (130) 의 사이즈에 기초하여, 저전력 디코딩은 상이한 스트림 타입들의 동시의 스트림들로 확장될 수도 있다. 예를 들어, 멀티-웨이 캐시는 MP3 및 AAC+ 양자에 대한 필수 메모리 이미지들을 수용하기에 충분한 사이즈를 가질 수도 있고, 따라서 저전력의 동시 MP3 및 AAC+ 디코딩 및 재생 시나리오에 대한 지원을 가능하게 한다. 저전력 디코딩 및 재생은 또한 초음파, 그래픽 및 비디오와 같은 비-오디오 프로세싱 애플리케이션들로 확장될 수도 있다.
도 2 는 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행하는 시스템 (200) 의 다른 특정 실시형태를 예시하는 블록도이다. 시스템 (200) 은 4-웨이 캐시 (210) 및 RAM (220) 을 포함한다. 특히, 도 2 에 도시된 실시형태는 동시의 디코딩 및 재생 시나리오로부터 저전력 디코딩 및 재생 시나리오로의 제 1 트랜지션 (230) 및 저전력 디코딩 및 재생 시나리오로부터 동시의 디코딩 및 재생 시나리오로의 제 2 트랜지션 (231) 을 도시한다.
RAM (220) 은 복수의 오디오 디코더들과 연관된 데이터를 저장할 수도 있다. 예를 들면, RAM (220) 은 각각의 디코더에 대한 디코딩 이미지(들)(예컨대, 디코딩 프로그램 명령들) 및 동적 버퍼 할당 영역(들) 을 저장할 수도 있다. RAM (220) 은 또한 포스트-프로세싱 이미지와 같이 복수의 디코더들에 공통인 하나 이상의 메모리 이미지들을 저장할 수도 있다. 대안적으로, 상이한 포스트-프로세싱 이미지가 각각의 타입의 오디오 스트림에 대하여 존재할 수도 있다. 도 2 에 도시된 특정 실시형태에서, RAM (220) 은 2 개의 AAC+ 디코딩 이미지들 (211 - 212), MP3 디코딩 이미지 (213), PCM 디코딩 이미지 (216), 모든 오디오 스트림들에 적용가능한 포스트-프로세싱 이미지 (214), AAC+ 동적 버퍼 할당 영역 (217), MA3 동적 버퍼 할당 영역 (215), 및 PCM 동적 버퍼 할당 영역 (218) 을 포함한다. 메모리 이미지들 (211 - 218) 이 저전력 모드 뿐만 아니라 비-저전력 모드들 양자에서 오디오 디코딩 및 재생을 위해 이용될 수도 있음이 인식되어야 한다. 저전력 및 비-저전력 모드들을 위해 동일한 메모리 이미지들을 이용하는 능력은 오직 저전력 모드에서만 사용가능한 특정 메모리 이미지들에 대한 요건을 제거함으로써 RAM (220) 에서의 공간을 보존할 수도 있다. 메모리 이미지들 (211 - 218) 은 4-웨이 캐시 (210) 의 단일 페이지로 로딩되도록 사이징 및 정렬되지만, 저전력 디코딩과 공존할 수 없는 오디오 디코더들에 대한 메모리 이미지들은 이와 같이 사이징 및 정렬되지 않을 수도 있다.
초기 구성에서, 4-웨이 캐시 (210) 는 상이한 스트림 타입들을 갖는 동시 스트림들의 디코딩 동안 이용될 수도 있다. 예를 들어, 4-웨이 캐시 (210) 는 도 2 의 상위 부분에 도시된 것과 같이, 하나 이상의 AAC+ 스트림들 및 하나 이상의 MP3 스트림들을 동시에 디코딩하는 동안 이용될 수도 있다. 예시를 위해, 4-웨이 캐시 (210) 는 MP3 및 AAC+ 오디오의 동시 프로세싱 동안 이용되는 6 개까지의 메모리 이미지들로부터의 부분들을 포함하는 부분 데이터 (201) 를 저장할 수도 있다. 부분 데이터 (201) 는 메모리 이미지들 (211 - 215 및 217) 중 하나 이상의 최근에 액세스된 부분들을 포함할 수도 있다. PCM 디코딩 이미지 (216) 또는 PCM 동적 버퍼 할당 영역 (218) 으로부터의 데이터는 4-웨이 캐시 (210) 에 존재하지 않을 수도 있는데, 이는 어떤 PCM 오디오도 프로세싱되고 있지 않기 때문이다. 캐시 미스들은 이러한 동시의 프로세싱 동안 발생할 수도 있다. 예를 들면, AAC+ 스트림 프로세싱은 4 개의 메모리 이미지들 (AAC+ 디코딩 이미지들 (211-212), AAC+ 동적 버퍼 할당 영역 (217) 및 포스트-프로세싱 이미지 (214)) 로의 메모리 액세스 요청을 포함할 수도 있고, MP3 스트림 프로세싱은 3 개의 메모리 이미지들 (MP3 디코딩 이미지들 (213), MP3 동적 버퍼 할당 영역 (215), 및 포스트-프로세싱 이미지 (214)) 로의 메모리 액세스 요청들을 포함할 수도 있다. 4-웨이 캐시 (210) 가 그 전체에서 모두 6 개의 메모리 이미지들을 수용하지 않을 수도 있기 때문에, AAC+ 및 MP3 스트림들의 동시 프로세싱은 시스템 (200) 에서 캐시 미스들을 발생할 수도 있다.
동작 동안, AAC+ 스트림(들) 의 완료시, 시스템 (200) 은 도 2 의 하위 부분에 도시된 것과 같이 저전력 구성으로의 제 1 트랜지션 (230) 을 경험할 수도 있다. 예를 들면, MP3 디코딩 이미지 (213), MP3 동적 버퍼 할당 영역 (215), 및 포스트-프로세싱 이미지 (214) 는 저전력 구성에서 4-웨이 캐시 (210) 에 공존할 수도 있다. 모두 3 개의 이미지들 (213, 214, 및 215) 이 4-웨이 캐시 (210) 에 캐싱될 경우, MP3 디코딩 및 재생은 캐시 미스들 없이 발생할 수도 있고, 따라서 MP3 스트림들의 저전력 프로세싱을 가능하게 한다. 또한, 저전력 프로세싱은 MP3 스트림들에서 가청 인터럽션 없이, 시스템 (200) 외부의 임의의 프로세서들 (예컨대, 애플리케이션 프로세서들) 로부터의 개입 없이 수행될 수도 있다.
특정 실시형태에서, 저전력 구성으로의 제 1 트랜지션 (230) 은 메모리 이미지들을 4-웨이 캐시 (210) 로 로딩하는 프로세스의 개시를 발생한다. 예를 들면, 제 1 트랜지션 (230) 은 특정 메모리 페이지 (즉, 특정 메모리 이미지) 로부터의 데이터를 특정 캐시 페이지의 캐시 라인들로 제공하도록 동작가능한 시스템 (200) 의 배경 쓰레드 (240) 의 개시를 발생할 수도 있다. 배경 쓰레드 (240) 는 오디오 디코딩 프로세스의 시작 또는 중지 (예컨대, 오디오 스트림들의 시작 또는 중지) 를 검출하는 것에 응답하여 프로세서에 의해 개시되고 실행될 수도 있다.
배경 쓰레드 (240) 가 메모리 이미지들을 4-웨이 캐시 (210) 로 제공하는데 이용될 경우, 저전력 디코딩 및 재생 동안 생성된 캐시 미스들의 수는 그래프 (290) 의 제 1 곡선 (298) 에 의해 표시될 수도 있다. 제 1 곡선 (298) 에 의해 도시되는 것과 같이, 캐시 미스들의 수는 메모리 이미지들이 4-웨이 캐시 (210) 으로 제공되고 있는 단기간 동안 감소할 수도 있고, 메모리 이미지들이 4-웨이 캐시 (210) 에 완전히 캐싱되면 0 이 된다. 배경 쓰레드 (240) 가 이용되지 않을 경우 캐시 미스들의 발생은 제 2 곡선 (299) 에 의해 표시될 수도 있다. 제 2 곡선 (299) 에 의해 도시되는 것과 같이, 시스템 (200) 은 배경 쓰레드 (240) 가 이용되지 않을 경우 제로 캐시 미스에 도달하는데 더 오래 걸릴 수도 있고, 이는 시스템 (200) 에서 더 큰 전력 지출을 수반할 수도 있다.
대안적으로 또는 부가적으로, 시스템 (200) 은 저전력 MP3 프로세싱으로부터 동시의 AAC+ 및 MP3 프로세싱으로의 제 2 트랜지션 (231) 을 경험할 수도 있다. 제 2 트랜지션 (231) 은 가청 인터럽션 없이 실행될 수도 있다. 예를 들면, MP3 디코더가 MP3 스트림(들) 을 계속해서 디코딩하는 동안, AAC+ 디코더가 개시될 수도 있다. (예컨대, 메모리 이미지들 (211, 212 및 217) 에 의해 표시되는) AAC+ 디코더에 대한 코드, 데이터 및 동적 메모리 할당의 부분들은 4-웨이 캐시 (210) 에 액세스되고 캐싱될 수도 있다. 동시의 프로세싱 동안, 4-웨이 캐시 (210) 는 부분 데이터 (201) 를 저장할 수도 있고, 여기서 부분 데이터 (201) 는 MP3 메모리 이미지들 (213, 215), AAC+ 메모리 이미지들 (211, 212, 217) 및 포스트-프로세싱 이미지 (214) 의 최근에 액세스된 부분들을 표시할 수도 있다. MP3 및 AAC+ 오디오를 동시에 프로세싱하는 것이 캐시 미스들을 발생할 수도 있지만, MP3 메모리 이미지들 (213, 215) 및 AAC+ 메모리 이미지들 (211, 212, 217) 양자가 4-웨이 캐시 (210) 의 페이지 사이즈에 정렬된다는 사실은 시스템 (200) 에서 개선된 캐시 효율을 제공할 수도 있다.
도 3 은 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행하는 시스템 (300) 의 다른 특정 실시형태를 예시하는 블록도이다. 특히, 도 3 에 도시된 실시형태는 제 1 저전력 디코딩 및 재생 시나리오로부터 제 2 저전력 디코딩 및 재생 시나리오로의 트랜지션 (330) 을 도시한다.
초기 구성에서, 4-웨이 캐시 (210) 는 도 3 의 상위 부분에 도시된 것과 같이, 저전력 모드에서 하나 이상의 MP3 스트림들의 프로세싱 동안 이용될 수도 있다. 예를 들면, MP3 스트림들의 저전력 프로세싱은 도 2 를 참조하여 설명되고 도시된 것과 같이 달성될 수도 있다.
동작 동안, 하나 이상의 MP3 스트림들은 종료될 수도 있고, 하나 이상의 PCM 스트림들은 시작할 수도 있다. 이에 응답하여, 시스템 (300) 은 도 3 의 하위 부분에 도시된 것과 같이 저전력 MP3 프로세싱 모드로부터 저전력 PCM 프로세싱 모드로 트랜지션 (330) 할 수도 있다. 예를 들면, 포스트-프로세싱 이미지 (214) 는 4-웨이 캐시 (210) 에서 유지될 수도 있는 반면, PCM 동적 버퍼 할당 영역 (218) 및 PCM 디코딩 이미지 (216) 는 배경 쓰레드 (240) 에 의해 4-웨이 캐시 (210) 로 제공된다. 모두 3 개의 이미지들 (218, 216 및 214) 이 4-웨이 캐시 (210) 에서 캐싱되면, PCM 디코딩 및 재생은 캐시 미스들 없이 발생할 수도 있고, 따라서 PCM 스트림들의 저전력 프로세싱을 가능하게 한다. 추가로, 저전력 프로세싱은 MP3 스트림(들) 또는 PCM 스트림(들) 에서 가청 인터럽션들 (예컨대, "팝핑" 잡음들) 없이 수행될 수도 있다.
도 4 는 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행하는 시스템 (400) 의 다른 특정 실시형태를 도시하는 블록도이다. 시스템 (400) 은 RAM (420) 에 통신가능하게 커플링된 애플리케이션 서버 (410) 및 DSP (430) 를 포함한다. DSP (430) 는 또한 4-웨이 캐시 (210) 에 커플링된다. 예시적인 실시형태에서, DSP (430) 는 도 1 의 프로세서 (110) 이다. 대안적인 실시형태들에서, 4-웨이 캐시 (210) 는 DSP (430) 내에 포함될 수도 있다.
애플리케이션 프로세서 (410) 는 언프로세싱된 오디오 비트스트림들을 DSP (430) 에 제공할 수도 있다. 예를 들면, 애플리케이션 서버 (410) 는 RAM (420) 에 언프로세싱된 비트스트림을 배치할 수도 있고, 언프로세싱된 비트스트림을 DSP (430) 에 통지할 수도 있다. 이에 응답하여, DSP (430) 는 RAM (420) 으로부터 언프로세싱된 비트스트림을 취출할 수도 있다.
특정 실시형태에서, DSP (430) 는 저전력 메모리 (LPM; 440) 를 포함하거나 이에 커플링된다. 예컨대, LPM (440) 은 비트스트림 버퍼 (442), DSP 커널 코드 및 데이터 (444) 및 출력 포트 (예컨대, 오디오 프론트-엔드 포트) 코드 및 데이터 (446) 를 포함할 수도 있다. DSP 커널 코드 및 데이터 (444) 및 출력 포트 코드 및 데이터 (446) 는 다중 오디오 디코더들에 공통인 프로그램 명령들을 포함할 수도 있다. 특정 실시형태에서, LPM (440) 은 4-웨이 캐시 (210) 의 보완물로서 기능한다. 즉, 저전력 디코딩 및 재생은 RAM (420) 이 아닌 4-웨이 캐시 (210) 및 LPM (440) 의 이용을 수반할 수도 있다. DSP (430) 는 버스트들에서 RAM (420) 으로부터 언프로세싱된 비트스트림을 취출할 수도 있고 (예컨대, 고정 사이즈 또는 가변 사이즈 부분들의 주기적인 취출), 비트스트림 버퍼 (442) 에 언프로세싱된 비트스트림을 저장할 수도 있다.
DSP (430) 는 또한, 하나 이상의 디코더들, 포스트-프로세싱 회로, 믹싱/라우팅 행렬, 공통 프로세싱 회로 및 출력 포트들을 포함할 수도 있다. 각각의 디코더 (예컨대, 예시적인 디코더들 (452, 454 및 456)) 은 비트스트림 버퍼 (442) 로부터 데이터를 수신하고, 수신된 데이터를 디코딩하여 디코딩된 데이터를 생성하고, 디코딩된 데이터를 포스트-프로세싱 회로 (예컨대, 예시적인 포스트-프로세싱 회로들 (462, 464 및 466)) 로 송신하도록 동작할 수도 있다. 각각의 포스트-프로세싱 회로는 디코딩된 데이터에 하나 이상의 포스트-프로세싱 동작들을 적용하여 포스트-프로세싱된 데이터를 생성하고, 포스트-프로세싱된 데이터를 믹싱 및 라우팅 행렬 (470) 로 송신할 수도 있다. 특정 실시형태에서, 포스트-프로세싱 동작들은 디코더 및 오디오 스트림의 타입에 특정된다. 예를 들면, MP3 포스트-프로세싱 동작들은 PCM 포스트-프로세싱과 구별될 수도 있다. 대안적으로, 포스트-프로세싱 동작들은 디코더들 및 오디오 스트림들의 복수의 타입들에 공통인 동작들을 포함할 수도 있다.
행렬 (470) 은 포스트-프로세싱된 데이터를 공통 프로세싱 회로 (예컨대, 예시적인 공통 프로세싱 회로들 (482, 484 및 486)) 로 라우팅할 수도 있다. 공통 프로세싱 회로는 포스트-프로세싱된 데이터에 하나 이상의 공통 프로세싱 동작들을 적용하여, 출력을 위한 프로세싱된 데이터를 생성할 수도 있다. 공통 프로세싱 동작들은 프로세싱되고 있는 비트스트림의 타입에 관계없이 적용된 디코더-애그너스틱 (decoder-agnostic) 동작들일 수도 있다. 프로세싱된 데이터는 출력 포트 (예컨대, 예시적인 출력 포트들 (492, 494 및 496)) 를 통해 출력될 수도 있다. 예시적인 실시형태에서, 각각의 출력 포트는 시스템 (400) 의 상이한 출력에 대응한다. 예를 들면, 도 4 에 도시된 것과 같이, 제 1 출력 포트 (492) 는 HDMI 출력에 대응할 수도 있고, 제 2 출력 포트 (494) 는 헤드셋 출력에 대응할 수도 있다.
시스템 (400) 에서의 동작은 예시적인 사용 케이스 - 사용자가 모바일 전화의 헤드셋 출력을 통해 MP3 음악을 청취하는 케이스를 참조하여 설명된다. 특정 상황들에서 (예컨대, 어떤 다른 오디오 스트림들 또는 오디오 스트림들의 타입들도 디코딩되지 않는다면), 이러한 사용 케이스는 저전력 오디오 디코딩 및 재생 사용 케이스를 나타낼 수도 있다. 애플리케이션 프로세서 (410) 는 MP3 음악 (또는 그 일부) 에 대응하는 비트스트림을 RAM (420) 에 배치시킬 수도 있고, 그 비트 스트림을 DSP (430) 에 통지할 수도 있다. 이에 응답하여, DSP (430) 는 RAM (420) 으로부터의 비트스트림을 LPM (440) 의 비트스트림 버퍼 (442) 로 카피할 수도 있다.
그 후에, MP3 비트스트림이 디코딩되고, 포스트-프로세싱되고, 믹싱되고, 공통 프로세싱되고, 헤드셋 출력 포트 (494) 를 통해 출력될 수도 있으며, 따라서 사용자는 MP3 음악을 청취할 수도 있다. 이러한 동작들 동안, MP3 프로세싱에 대응하는 모든 메모리 액세스들은 LPM (440) 및 4-웨이 캐시 (210) 에서의 메모리 이미지들 (213, 214 및 215) 을 이용하여 서비스될 수도 있다. 예를 들면, 메모리 이미지들 (213, 214 및 215) 은 MP3 프로세싱의 시작에서 도 2 의 배경 쓰레드 (240) 와 같은 배경 쓰레드에 의해 4-웨이 캐시 (210) 에 로딩되었을 수도 있다.
비트스트림 버퍼 (442) 로부터 출력 포트로의 프로세싱 경로는 RAM (420) 을 이용하지 않고 4-웨이 캐시 (210) 및 LPM (440) 을 이용함으로써 저전력 디코딩 및 재생 사용 케이스를 나타낼 수도 있음이 인식될 것이다. 예를 들어, (도 4 에 음영 표시된) 비트 스트림 버퍼 (442) 로부터 헤드셋 출력 포트 (494) 로의 경로는 MP3 음악을 디코딩 및 재생하는 것과 연관된 저전력 사용 케이스를 나타낼 수도 있다.
특정 실시형태에서, 저전력 사용 케이스는 (예컨대, 도 2 를 참조하여 예시된) 동시의 오디오 이용 케이스로부터의 트랜지션 이후에 발생할 수도 있다. 예를 들면, 오디오 디코더 (452) 는 전화 호출에 의해 생성된 음성 오디오 스트림을 디코딩할 수도 있는 반면, 오디오 디코더 (454) 는 MP3 음악을 디코딩할 수도 있다. 전화 호출이 종료할 경우, 음성 오디오 스트림의 완료가 검출될 수도 있고, 오디오 디코더 (452) 는 비활성이 될 수도 있다. 그러나, MP3 음악이 계속해서 재생되기 때문에, 오디오 디코더 (454) 가 MP3 음악을 계속해서 디코딩할 수도 있다. 4-웨이 캐시 (210) 에 이미 존재하지 않는 메모리 이미지들 (213, 214 및 215) 중 임의의 이미지는 음성 오디오 스트림 또는 MP3 오디오 스트림에서 가청 인터럽션들 없이, 애플리케이션 프로세서 (410) 로부터의 개입 없이 4-웨이 캐시 (210) 로 로딩될 수도 있다.
또 다른 특정 실시형태에서, 저전력 사용 케이스는 (예컨대, 도 3 을 참조하여 도시된 것과 같은) 다른 저전력 사용 케이스로부터의 트랜지션 이후에 발생할 수도 있다. 예를 들면, 오디오 디코더 (452) 는 전화 호출에 의해 생성된 음성 오디오 스트림을 (캐시 미스들 없이) 디코딩할 수도 있지만, 오디오 디코더 (454) 는 (예컨대, 사용자가 MP3 음악을 청취하고 있지 않기 때문에) 비활성이다. 전화 호출이 종료하면, 음성 오디오 스트림의 종료가 검출될 수도 있다. 또한, 사용자는 MP3 음악의 재생을 시작하기 위한 명령을 입력하여 MP3 스트림의 개시를 발생할 수도 있다. 이에 응답하여, 메모리 이미지들 (213, 214 및 215) 은 4-웨이 캐시 (210) 로 로딩되며, 이는 음성 오디오 스트림 또는 MP3 오디오 스트림에서 가청 인터럽션들 없이, 애플리케이션 프로세서 (410) 로부터의 개입 없이 MP3 음악의 전력 프로세싱을 가능하게할 수도 있다.
도 5 는 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행하는 시스템 (500) 의 또 다른 특정 실시형태를 예시하는 도면이다. 시스템 (500) 은 시스템 패브릭 (510) 을 통해 서로 통신가능하게 커플링된 애플리케이션 프로세서 (502), 메모리 (504), 리소스 관리자 (506), 및 저전력 오디오 서브시스템 (LPA-SS; 520) 을 포함한다. 예시적인 실시형태에서, 애플리케이션 서버 (502) 는 도 4 의 애플리케이션 프로세서 (410) 이고, 메모리 (504) 는 도 1 의 메모리 (140), 도 2 의 메모리 (220) 또는 도 4 의 RAM (420) 이다. 특정 실시형태에서, 메모리 (504) 는 32-비트 더블 데이터 레이트 (DDR) 동기식 동적 랜덤 액세스 메모리 (SDRAM) 이다.
LPA-SS (520) 는 어드밴스드 고성능 버스 (AHB; 530) 를 포함할 수도 있고, 이러한 버스 (530) 는 LPA-SS (520) 의 다양한 컴포넌트들, 예컨대 AHB 마스터 브릿지 (521), AHB 슬레이브 브릿지 (522), DMA 제어기 (540), 128kb LPM (550) 및 256kb 멀티-웨이 L2 캐시 (570) 에 커플링된 오디오 DSP (560) 사이에서 데이터를 통신하도록 동작가능하다. 예시적인 실시형태에서, LPM (550) 은 도 4 의 LPM (440) 이고, 캐시 (570) 는 도 1 의 멀티-웨이 캐시 (130) 이거나 도 2 의 4-웨이 캐시 (210) 이다. 오디오 DSP (560) 는 리소스 관리자 (506) 로부터 오디오 DSP 인터럽트들을 수신할 수도 있다. 예를 들면, 오디오 DSP 인터럽트들은 애플리케이션 프로세서 (502), 오디오 입력 또는 출력 디바이스들, 또는 일부 다른 인터럽트 소스에 의해 생성될 수도 있다.
동작시에는, 애플리케이션 프로세서 (502) 는 메모리 (504) 에 오디오 비트스트림 (예컨대, MP3 음악) 을 배치시킬 수도 있다. 애플리케이션 프로세서 (502) 는 또한 (예컨대, 리소스 관리자 (506) 에 의해 발생된 오디오 DSP 인터럽트를 통해) 비트스트림을 오디오 DSP (560) 에 통지할 수도 있다. 그에 응답하여, DMA 제어기 (540) 는 메모리 (504) 로부터의 비트스트림을 LPM (550) 으로 로딩할 수도 있다. 대안적으로, DMA 제어기 (540) 는 인터럽트-기반의 메커니즘에 의존하는 대신 메모리 (504) 로부터의 비트스트림들의 버스트들을 주기적으로 취출할 수도 있다. 오디오 DSP (560) 는 출력 오디오를 생성하기 위해 LPM (550) 에서 비트스트림을 프로세싱할 수도 있다. LPA-SS (520) 가 저전력 사용 케이스일 경우, 오디오 DSP (560) 에 의해 생성된 모든 메모리 요청들은 (예컨대, 캐시 (570) 에 로딩된 메모리 이미지들을 이용하여) LPM (550) 또는 캐시 (570) 에 의해 서비스될 수도 있다. 저전력 사용 케이스들 동안, 애플리케이션 프로세서 (502), 메모리 (504), 리소스 관리자 (506) 및 시스템 패브릭 (510) 에 인가되는 전력은 감소될 수도 있고, 따라서 시스템 (500) 에서 전력을 보존할 수도 있음이 인식될 것이다. 예를 들면, 애플리케이션 프로세서 (502), 메모리 (504), 리소스 관리자 (506) 및 시스템 패브릭 (510) 중 하나 이상은 저전력 또는 슬립 모드에 들어가거나, 파워 오프될 수도 있다.
오디오 스트림을 프로세싱하는 것은 동적으로 할당된 버퍼들의 이용을 수반할 수도 있다. 예를 들어, 도 2 내지 도 4 에 도시된 것과 같이, 하나 이상의 동적 메모리 할당 영역들은 저전력 디코딩 및 재생 동안 멀티-웨이 캐시에 캐싱될 수도 있다. 특정 실시형태에서, 동적 메모리 할당 영역(들) 은 도 6 에 도시되고, 일반적으로 600 으로 지정된 동적 메모리 관리 기술에 따라 관리되는 동적 메모리 히프 (heap) 를 나타낸다. 기술 (600) 은 동적 버퍼들의 일정 시간 (즉, O(1)) 할당 및 할당 해제를 달성하기 위해 저전력 사용 케이스들 뿐만 아니라 비-저전력 사용 케이스들 동안 이용될 수도 있다.
기술 (600) 은 저전력 오디오 디코딩 및 재생 사용 케이스에 적용되는 것으로 도시되고, 여기서 메모리의 영역 (610) 은 할당되기 위한 것이다. 할당된 영역 (610) 은 멀티-웨이 캐시의 단일 페이지에 대응하도록 정렬 및 사이징될 수도 있다. 예를 들면, 할당된 영역은 64kb 일 수도 있고, 256kb 4-웨이 캐시의 단일 64kb 페이지로 로딩될 수 있도록 정렬될 수도 있다. 그 후에, 할당된 영역 (610) 은 복수의 미리 결정된 버퍼들로 분할될 수도 있다. 예를 들면, 할당된 영역 (610) 은 도 6 에 도시된 것과 같이, 32-바이트 버퍼들 (612), 128-바이트 버퍼들 (614) 및 512-바이트 버퍼들 (616) 로 분할될 수도 있다. 데이터 구조 (예컨대, 스택 또는 큐) 는 각각의 버퍼 사이즈에 대하여 파퓰레이트될 수도 있고, 여기서 각각의 데이터 구조는 그 버퍼 사이즈의 사용가능한 버퍼들로의 포인터들을 저장한다. 예컨대 데이터 구조들 (641, 642, 및 643) 은 각각 버퍼들 (612, 614, 및 616) 에 대응하도록 파퓰레이트될 수도 있다.
비트 마스크 (630) 는 요청된 버퍼 사이즈를 만족하기 위해 충분히 큰 미리 결정된 버퍼가 사용가능한지 여부를 나타내기 위해 생성될 수도 있다. 비트 마스크의 각각의 비트 포지션은 특정 버퍼 사이즈에 대응할 수도 있고, 그 비트 포지션에서의 값은 특정 버퍼 사이즈의 버퍼가 할당된 영역 (610) 에서 사용가능한지 여부를 나타낼 수도 있다. 도 6 의 예시에서, 사용불가능한 버퍼들은 "X" 또는 "사용중" 으로 지정된다.
도 6 의 특정 실시형태에서, 비트 마스크 (630) 의 제 1 비트 포지션은 20 바이트들 (즉, 1-바이트) 의 버퍼들에 대응하고, 제 1 비트 포지션에서 값 "0" 은 할당된 영역 (610) 에서 어떤 1-바이트 버퍼들도 사용가능하지 않은 것을 나타낸다. 제 5 비트 포지션 (631) 은 25 바이트들 (즉, 32-바이트들) 의 버퍼들에 대응하고, 값 "1" 은 할당된 영역 (610) 에서 32-바이트 버퍼가 사용가능하고, 사용가능한 32-바이트 버퍼로의 포인터가 데이터 구조 (641) 에 존재하는 것을 나타낸다. 제 7 비트 포지션 (632) 은 27 바이트들 (즉, 128-바이트들) 의 버퍼들에 대응하고, 값 "0" 은 할당된 영역 (610) 에서 어떤 128-바이트 버퍼들도 사용가능하지 않은 것을 (즉, 할당된 영역 (610) 에서 모든 128-바이트 버퍼들이 "사용중이기" 때문에) 나타낸다. 제 9 비트 포지션 (633) 은 29 바이트들 (즉, 512-바이트들) 의 버퍼들에 대응하고, 값 "1" 은 할당된 영역 (610) 에서 512-바이트 버퍼가 사용가능하고, 사용가능한 512-바이트 버퍼로의 포인터가 데이터 구조 (643) 에 존재하는 것을 나타낸다.
특정 실시형태에서, 각각의 미리 결정된 버퍼는 공식, 사이즈 = 2n + 8 바이트들, 에 따른 사이즈를 가지고, 여기서 n 은 0 이상의 정수이다. 추가의 8 바이트들은 하기에서 설명되는 것과 같이, 할당 해제 동안 이용된 변형 (corruption) 테스트 워드 및 리턴 포인터를 표시할 수도 있다. 따라서, 32-바이트 버퍼들 (612) 은 실제로 40 바이트를 점유할 수도 있고, 128-바이트 버퍼들은 실제로 130 바이트를 점유할 수도 있고, 512-바이트 버퍼들 (616) 은 실제로 520 바이트들을 점유할 수도 있다.
동작시에는, 할당된 영역 (610) 은 멀티-웨이 캐시에 캐싱될 수도 있고, 프로세서에 실행중인 하나 이상의 오디오 디코더들에 의한 액세스가 오디오 디코딩을 가능하게 하도록 할 수도 있으며, 여기서 오디오 디코딩에 대응하는 모든 동적 메모리 할당 요청들은 할당된 영역 (610) 으로부터 이행된다. 즉, 동적 메모리 할당으로 인한 캐시 미스들이 오디오 디코딩에 의해 생성되지 않을 수도 있다.
특정 요청 사이즈의 버퍼에 대한 요청이 수신될 경우, 비트 마스크 (630) 는 요청 사이즈를 수용하기에 충분히 큰 버퍼가 사용가능한지 여부를 결정하기 위해 검사될 수도 있다. 예를 들면, 32-바이트 버퍼가 요청될 경우, 비트 마스크 (630) 는 사이즈가 32-바이트보다 크거나 동일한 임의의 버퍼들이 사용가능한지 여부를 체크하도록 검사될 수도 있다. 특정 실시형태에서, 일정 시간에 실행가능한 단일의 리딩/트레일링 제로 DSP 명령은 비트 마스크 (630), 요청된 버퍼 사이즈, 또는 이들 양자를 검사하는데 이용된다. 예를 들면, 제 5 비트 포지션 (630) 에서 "1" 은 32-바이트 버퍼가 요청을 만족하는데 사용가능한 것을 나타낸다. 데이터 구조 (641) 로부터의 포인터는 동적 메모리 할당 요청을 만족시키기 위해 제공될 수도 있다 (그리고 데이터 구조 (641) 로부터 제거될 수도 있다). 제공된 포인터가 데이터 구조의 최종 잔여 포인터일 경우, 비트 마스크 (630) 의 대응하는 값은 "0" 으로 세팅될 수도 있다. 포인터를 제공하고 비트 마스크 값을 세팅하는 것은 또한, (예컨대, 스택/큐 "팝" 동작 및 기록 명령을 이용하여) 일정 시간에 수행될 수도 있다.
예를 들면, 대표적인 버퍼 (620) 로의 포인터가 제공될 수도 있다. 버퍼 (620) 는 32-바이트 버퍼 (622), 4-바이트 변형 테스트 워드 (626) 및 4-바이트 리턴 포인터 (624) 를 포함할 수도 있다. 버퍼 (620) 를 할당 해제하기 위한 요청이 수신되면, 변형 테스트 워드 (626) 가 평가될 수도 있다. 변형 테스트 워드 (626)(예컨대, 의사랜덤한 32-비트 값) 가 변경된다면, 버퍼 (620) 는 (예컨대, 버퍼 경계를 가로지른 데이터에 의해 부적절하게 오버라이팅되는 것으로 인해) 변형되는 것으로 결정될 수도 있고, 에러가 리턴될 수도 있다. 변형 테스트 워드 (626) 가 변경되지 않은 것으로 결정된다면, 버퍼 (620) 는 할당 해제될 수도 있다. 버퍼 (620) 를 할당 해제하는 것은 버퍼 (620) 의 리턴 포인터 (624) 에 의해 식별되는 데이터 구조 (641) 에 버퍼 (620) 로의 포인터를 배치시키는 것을 포함할 수도 있다. 버퍼 (620) 를 할당 해제하는 것은 또한 비트 마스크 (630) 의 대응하는 값을 "1" 로 세팅하는 것을 포함할 수도 있다. 포인터를 데이터 구조에 배치시키고, 비트 마스크 값을 세팅하는 것은 (예컨대, 스택/큐 "푸시" 동작 및 기록 명령을 이용하여) 일정 시간에 수행될 수도 있다.
도 6 의 기술 (600) 은 동적 메모리의 일정 시간 할당 및 할당 해제를 제공할 수도 있음이 인식될 것이다. 즉, 도 6 의 기술 (600) 은 할당된 영역 (610) 의 사이즈와 독립적으로 동작할 수도 있고, 따라서 캐시보다 더 큰 공간들에서의 동적 메모리 할당에 적용할 수도 있다. 예시적인 실시형태들에서, 도 6 의 기술 (600) 은 다른 소프트웨어 개발자들에 의해 레버리징될 수도 있는 메모리 관리 소프트웨어로서 구현될 수도 있다. 예를 들면, 도 6 의 기술 (600) 은 하나 이상의 헤더 및 소스 파일들 (예컨대, C 또는 C++ 파일들) 을 이용하여 구현될 수도 있고, 기존의 동적 메모리 관리 기술들 (예컨대, malloc( ) 및 free( )) 대신에 이용될 수도 있다. 데이터 구조들 (641 - 643) 의 동일한 측면으로부터의 "푸싱" 및 "팝핑" 에 의해, 도 6 의 기술 (600) 은 버퍼들을 가능한 정도로 재사용할 수도 있고, 따라서 동적으로 할당된 메모리의 전체 풋프린트 사이즈를 감소시킬 수도 있다.
도 7 은 캐싱된 이미지들을 이용하여 저전력 오디오 디코딩 및 재생을 수행하는 방법 (700) 의 특정 실시형태를 예시하는 흐름도이다. 예시적인 실시형태에서, 방법 (700) 은 도 1 의 시스템 (100), 도 2 의 시스템 (200), 도 3 의 시스템 (300), 도 4 의 시스템 (400) 또는 도 5 의 시스템 (500) 에서 수행될 수도 있다.
방법 (700) 은 702 에서, DSP 에서 저전력 오디오 디코딩 시나리오를 검출하는 것을 포함한다. 저전력 오디오 디코딩 시나리오는 단일 오디오 디코딩 프로세스의 시작, 또는 동시의 오디오 디코딩으로부터 단일 디코딩 프로세스로의 트랜지션에 대응할 수도 있다. 예를 들면, 저전력 오디오 디코딩 시나리오는 도 4 의 LPM (440) 에 저장된 MP3 스트림의 시작에 기초하여 검출될 수도 있다. 대안적으로, 저전력 오디오 디코딩 시나리오는 도 2 의 제 1 트랜지션 (230) 또는 도 3 의 트랜지션 (330) 에 기초하여 검출될 수도 있다.
방법 (700) 은 또한, 704 에서, DSP 의 오디오 디코더와 연관된 하나 이상의 메모리 이미지들을 멀티-웨이 캐시에 로딩하는 단계를 포함할 수도 있다. 멀티-웨이 캐시는 DSP 로 액세스할 수도 있고, 각각의 메모리 이미지는 멀티-웨이 캐시의 페이지 사이즈를 초과하지 않도록 사이징된다. 예를 들어, 도 4 에서, 메모리 이미지들 (213, 214 및 215) 은 DSP (430) 로 액세스 가능한 4-웨이 캐시 (210) 로 로딩될 수도 있다. 메모리 이미지들 (213, 214 및 215) 은 4-웨이 캐시 (210) 의 페이지 사이즈를 초과하지 않도록 사이징될 수도 있고, 오디오 디코더 (454) 에 대응할 수도 있다. 메모리 이미지들 (213, 214 및 215) 이 (예컨대, 배경 쓰레드 (240) 에 의해) 4-웨이 캐시 (210) 로 로딩되는 동안, 오디오 디코딩은 감소하는 수의 캐시 미스들로 오디오 디코더에서 프로세싱할 수도 있다. 예를 들면, 캐시 미스들의 수는 도 2 의 제 1 곡선 (298) 을 참조하여 예시되고 설명된 것과 같이 감소할 수도 있다.
방법 (700) 은, 706 에서, 임의의 캐시 미스들을 멀티-웨이 캐시에서 발생하게 하지 않고, DSP 에 사용가능한 상위 레벨 메모리에 액세스하지 않고, 오디오 디코더에서 오디오 디코딩을 수행하는 것을 더 포함할 수도 있다. 예컨대, 도 4 에서, 오디오 디코더 (454) 는 캐시 미스들을 4-웨이 캐시 (210) 에서 발생하게 하지 않고, RAM (420) 에 액세스하지 않고, MP3 스트림을 디코딩할 수도 있다. 예시를 위해, 메모리 이미지들 (213, 214 및 215) 각각이 배경 쓰레드 (240) 에 의해 4-웨이 캐시 (210) 로 로딩되었을 경우, 캐시 미스들의 수는 도 2 의 제 1 곡선 (298) 을 참조하여 도시되고 설명된 것과 같이, 0 으로 드롭할 수도 있다.
다른 실시형태들에서, 방법 (700) 은 오디오 디코더와 연관된 하나 이상의 메모리 이미지들을 프로세서에 액세스 가능한 멀티-웨이 캐시로 로딩하는 것을 포함하며, 여기서 하나 이상의 메모리 이미지들 각각은 멀티-웨이 캐시의 페이지 사이즈를 초과하지 않도록 사이징된다. 멀티-웨이 캐시는 4-웨이 캐시를 포함할 수도 있고, 프로세서는 디지털 신호 프로세서를 포함할 수도 있다. 하나 이상의 메모리 이미지를 로딩하는 것은, 오디오 디코더가 임의의 캐시 미스들을 멀티-웨이 캐시에서 발생하게 하지 않고 오디오 디코딩을 가능하게 할 수도 있으며, 여기서 오디오 디코딩은 프로세서에 사용가능한 상위 레벨 메로리에 액세스하지 않고 하나 이상의 메모리 이미지들을 멀티-웨이 캐시로 로딩한 이후에 수행된다. 각각의 메모리 이미지의 사이즈는 멀티-웨이 캐시의 페이지 사이즈와 동일하고, 오디오 디코더는 하나 이상의 오디오 스트림들을 디코딩하도록 동작가능할 수도 있다. 하나 이상의 메모리 이미지들은 각각 메모리로부터 멀티-웨이 캐시로 로딩될 수도 있고, 메모리에서 각각 정렬되어 멀티-웨이 캐시의 대응하는 단일 페이지로 로딩될 수도 있다. 메모리는 또한, 동적 메모리 할당 영역, 및 복수의 오디오 디코더들에 공통인 적어도 하나의 메모리 이미지를 포함하는, 제 2 오디오 디코더와 연관된 하나 이상의 메모리 이미지들을 포함할 수도 있다. 방법 (700) 은 프로세서와 통합된 메모리에서, 복수의 오디오 디코더들에 공통인 프로그램 명령들에 액세스하는 것을 포함할 수도 있다.
하나 이상의 메모리 이미지들 중 제 1 메모리 이미지는 오디오 디코더 프로그램 명령들을 포함할 수도 있고, 하나 이상의 메모리 이미지들 중 제 2 메모리 이미지는 동적 메모리 할당 영역에 대응할 수도 있고, 하나 이상의 메모리 이미지들 중 제 3 메모리 이미지는 포스트-프로세싱 프로그램 명령들을 포함할 수도 있다. 방법 (700) 은 하나 이상의 메모리 이미지들의 전체 메모리 이미지의 멀티-웨이 캐시로의 로딩을 발생하게 하는 프로세스를 개시하는 것을 포함할 수도 있다. 프로세스는 배경 쓰레드를 포함할 수도 있고, 오디오 디코딩 프로세스의 시작 또는 중지를 검출하는 것에 응답하여 개시될 수도 있다.
추가의 실시형태들에서, 방법 (700) 은 오디오 디코더에서 제 1 오디오 스트림 및 제 2 오디오 디코더에서 제 2 오디오 스트림을 동시에 디코딩하는 것을 포함할 수도 있다. 제 2 오디오 스트림의 종료가 검출될 수도 있고, 제 2 디코더에서 제 2 오디오 스트림의 디코딩이 종료될 수도 있다. 제 1 오디오 스트림은 제 2 오디오 스트림의 디코딩을 종료한 이후 오디오 디코더에서 디코딩될 수도 있다. 하나 이상의 메모리 이미지들은 제 1 또는 제 2 오디오 스트림들에서 가청 인터럽션 없이, 애플리케이션 프로세서로부터의 개입에 독립적으로 멀티-웨이 캐시로 로딩될 수도 있다. 추가의 실시형태들에서, 방법 (700) 은 오디오 디코더가 임의의 캐시 미스들을 멀티-웨이 캐시에서 발생하게 하지 않고 오디오 디코더에서 제 1 오디오 스트림을 디코딩하는 것을 포함할 수도 있다. 제 2 오디오 디코더에 의해 디코딩될 제 1 오디오 스트림의 종료와 제 2 오디오 스트림의 개시가 검출될 수도 있고, 제 2 오디오 디코더와 연관된 하나 이상의 메모리 이미지들은 멀티-웨이 캐시로 로딩될 수도 있다. 제 2 오디오 스트림은 제 2 오디오 디코더가 임의의 캐시 미스들을 멀티-웨이 캐시에서 발생하게 하지 않고 제 2 오디오 디코더에서 디코딩될 수도 있다. 제 2 오디오 디코더와 연관된 하나 이상의 메모리 이미지들은 제 1 또는 제 2 오디오 스트림들에서 가청 인터럽션 없이, 애플리케이션 프로세서로부터의 개입에 독립적으로 멀티-웨이 캐시로 로딩될 수도 있다.
다른 실시형태들에서, 방법 (700) 은 오디오 데이터를 수신하는 것을 포함할 수도 있고, 여기서 하나 이상의 메모리 이미지들은 오디오 데이터가 오디오 디코더에 대응하는 것을 결정하는 것, 캐시 미스가 멀티-웨이 캐시에서 발생하게 하지 않고 오디오 디코더에서 오디오 데이터를 디코딩하는 것, 하나 이상의 포스트-프로세싱 기능들을 디코딩된 오디오 데이터에 적용하여 포스트-프로세싱된 오디오 데이터를 생성하는 것, 하나 이상의 공통 프로세싱 기능들을 포스트-프로세싱된 데이터에 적용하여 프로세싱된 오디오 데이터를 생성하는 것, 및 프로세싱된 오디오 데이터를 프로세서의 출력 포트에 제공하는 것에 응답하여 로딩된다. 하나 이상의 포스트-프로세싱 기능들은 오디오 디코더에 특정될 수도 있고, 하나 이상의 공통 프로세싱 기능들은 복수의 오디오 디코더들에 공통일 수도 있다.
도 7 의 방법 (700) 은 필드-프로그래머블 게이트 어레이 (FPGA) 디바이스, 애플리케이션용 집적 회로 (ASIC), 중앙 프로세싱 유닛 (CPU) 과 같은 프로세싱 유닛, 디지털 신호 프로세서 (DSP), 제어기, 다른 하드웨어 디바이스, 펌웨어 디바이스, 또는 이들의 임의의 조합에 의해 구현될 수도 있다. 일 예로서, 도 7 의 방법 (700) 은 도 9 를 참조하여 설명된 것과 같이, 명령들을 실행하는 프로세서에 의해 수행될 수 있다.
도 8 은 캐싱된 이미지들을 이용하는 저전력 오디오 디코딩 및 재생 동안 동적 메모리 관리 방법 (800) 의 특정 실시형태를 예시하는 흐름도이다. 예시적인 실시형태에서 방법 (800) 은 도 6 의 기술 (600) 을 참조하여 예시될 수도 있다.
방법 (800) 은, 802 에서, 메모리의 영역을 할당하는 것을 포함할 수도 있다. 할당된 영역은 멀티-웨이 캐시의 단일 페이지에 대응하도록 정렬되고, 멀티-웨이 캐시의 단일 페이지의 사이즈와 실질적으로 동일한 사이즈를 갖는다. 예를 들어, 도 6 을 참조하면, 영역 (610) 이 할당될 수도 있고, 여기서 영역 (610) 은 멀티-웨이 캐시의 페이지 사이즈 (예컨대, 도 5 의 256kb 캐시 (570) 의 페이지 사이즈) 와 동일한 사이즈 (64kb) 를 갖는다.
방법 (800) 은 또한, 804 에서, 하나 이상의 오디오 디코더들에 의한 액세스가 오디오 디코딩을 가능하게 하도록 멀티-웨이 캐시의 단일 페이지에서 메모리의 할당된 영역을 캐싱하는 것을 포함할 수도 있다. 오디오 디코딩에 대응하는 모든 동적 메모리 할당 요청들은 메모리의 캐싱된 영역으로부터 이행될 수도 있다. 예를 들어, 도 6 을 참조하면, 할당된 영역 (610) 은 저전력 오디오 코딩을 가능하게 하도록 캐싱될 수도 있다.
방법 (800) 은, 806 에서, 메모리의 할당된 영역의 적어도 일부분을 제 1 버퍼 사이즈를 가지는 제 1 버퍼와 제 2 버퍼 사이즈를 가지는 제 2 버퍼를 포함하는 복수의 미리 결정된 버퍼들로 분할하는 것을 더 포함할 수도 있다. 예를 들어, 도 6 을 참조하면, 할당된 영역 (610) 은 32-바이트 버퍼들 (612), 128-바이트 버퍼들 (614) 및 512-바이트 버퍼들 (616) 로 분할될 수도 있다.
방법 (800) 은, 808 에서, 하나 이상의 데이터 구조들을 미리 결정된 버퍼들로의 포인터들로 파퓰레이팅하는 것을 포함할 수도 있다. 특정 데이터 구조의 각각의 포인터는 특정 사이즈의 미리 결정된 버퍼를 가리킨다. 예를 들어, 도 6 을 참조하면, 데이터 구조들 (641, 642 및 643) 은 파퓰레이팅될 수도 있다.
방법 (800) 은 또한, 810 에서, 메모리의 할당된 영역에서 사용가능한 버퍼들을 나타내도록 비트 마스크를 세팅하는 것을 포함할 수도 있다. 비트 마스크의 제 1 비트는 제 1 버퍼 사이즈를 갖는 버퍼가 사용가능한지 여부를 나타낼 수도 있고, 비트 마스크의 제 2 비트는 제 2 버퍼 사이즈를 갖는 버퍼가 사용가능한지 여부를 나타낼 수도 있다. 예를 들어, 도 6 을 참조하면, 비트 마스크 (630) 가 세팅될 수도 있다.
방법 (800) 은, 812 에서, 요청된 사이즈의 메모리 할당을 나타내는 요청을 수신하는 것을 더 포함할 수도 있다. 예를 들어, 도 6 을 참조하면, 32-바이트 버퍼에 대한 요청이 수신될 수도 있다. 방법 (800) 은, 814 에서, 적어도 하나의 버퍼가 요청을 만족하기 위해 사용가능한 것을 비트 마스크가 나타내는지 여부를 결정하는 것을 포함할 수도 있다. 적어도 하나의 버퍼가 사용가능한 것을 비트 마스크가 나타낼 경우에, 방법 (800) 은, 816 에서, 요청을 만족하는 최소 사용가능한 버퍼에 대응하는 포인터를 제공하는 것을 포함할 수도 있다. 예를 들어, 도 6 을 참조하면, 버퍼 (620) 로의 포인터가 제공될 수도 있다. 요청을 만족하기에 충분히 큰 어떤 버퍼도 존재하지 않는 것으로 결정될 경우, 방법 (800) 은, 818 에서, 요청이 만족될 수 없는 것의 표시를 제공하는 것을 포함할 수도 있다.
도 8 의 방법 (800) 은 필드-프로그래머블 게이트 어레이 (FPGA) 디바이스, 애플리케이션용 집적 회로 (ASIC), 중앙 프로세싱 유닛 (CPU) 과 같은 프로세싱 유닛, 디지털 신호 프로세서 (DSP), 제어기, 다른 하드웨어 디바이스, 펌웨어 디바이스, 또는 이들의 임의의 조합에 의해 구현될 수도 있다. 일 예로서, 도 8 의 방법 (800) 은 도 9 를 참조하여 설명된 것과 같이, 명령들을 실행하는 프로세서에 의해 수행될 수 있다.
도 9 를 참조하면, 전자 디바이스의 특정 실시형태의 도면이 도시되고 일반적으로 900 으로 지정된다. 디바이스 (900) 는 애플리케이션 프로세서 (910) 및 오디오 디지털 신호 프로세서 (DSP; 950) 와 같은 하나 이상의 프로세서들을 포함한다. 애플리케이션 프로세서 (910) 및 오디오 DSP (950) 는 본 명세서에 개시된 방법들을 수행하도록 구성된 하드웨어를 포함할 수도 있다. 애플리케이션 프로세서 (910) 및 오디오 DSP (950) 는 또한, 본 명세서에 개시된 방법들을 수행하도록 실행가능한 소프트웨어 명령들을 실행하도록 동작가능할 수도 있다. 애플리케이션 프로세서 (910) 는 랜던 액세스 메모리 (RAM; 932) 에 커플링된다. RAM 은 오디오 스트림들을 저전력 디코딩 및 재생을 가능하게 하도록 캐싱가능한, 하나 이상의 캐시-사이징되고 캐시-정렬된 메모리 이미지들 (970) 을 포함한다. 예시적인 실시형태에서, 메모리 이미지들 (970) 은 도 1 의 메모리 이미지들 (142 - 146), 도 2 의 메모리 이미지들 (211 - 218), 또는 도 6 의 할당된 영역 (610) 에 대응할 수도 있다.
도 9 는 또한, 애플리케이션 프로세서 (910) 에 커플링되고, 디스플레이 (928) 에 커플링된 디스플레이 제어기 (926) 를 도시한다. 오디오 DSP (950) 는 코더/디코더 (CODEC; 952) 및 하나 이상의 포트들 (예컨대, 예시적인 포트들 (954 및 956)) 을 포함할 수도 있다. 스피커 (936) 및 마이크로폰 (938) 은 각각 포트들 (954 및 956) 을 통해 오디오 DSP (950) 에 커플링될 수 있다. 예시적인 실시형태에서, CODEC (952) 은 도 1 의 오디오 디코딩 블록 (122) 또는 도 4 의 DSP (430) 의 하나 이상의 컴포넌트들, 예컨대 디코더들 (454, 455 및 456) 을 포함한다. 다른 예시적인 실시형태에서, 포트들 (954 및 956) 은 도 4 의 출력 포트들 (492, 494 및 496) 중 각각의 포트이다. 오디오 DSP (950) 는 또한 메모리 이미지들 (970) 을 캐싱하도록 동작가능한 멀티-웨이 캐시 (960) 를 포함하거나 이에 커플링될 수도 있다. 예시적인 실시형태에서, 멀티-웨이 캐시 (960) 는 도 1 의 멀티-웨이 캐시 (130), 도 2 의 4-웨이 캐시 (210), 또는 도 5 의 캐시 (570) 이다.
도 9 는 또한 무선 제어기 (940) 가 애플리케이션 프로세서 (910) 및 무선 안테나 (942) 에 커플링될 수 있는 것을 나타낸다. 특정 실시형태에서, 애플리케이션 프로세서 (910), 오디오 DSP (950), 멀티-웨이 캐시 (960), 디스플레이 제어기 (926), RAM (932), 및 무선 제어기 (940) 는 시스템-인-패키지 또는 시스템-온-칩 디바이스 (922) 에 포함된다. 특정 실시형태에서, 입력 디바이스 (930; 예컨대, 키보드 또는 터치스크린) 및 전원 (944; 예컨대, 배터리) 은 시스템-온-칩 디바이스 (922) 에 커플링된다. 추가로, 특정 실시형태에서, 도 9 에 도시된 것과 같이, 디스플레이 (928), 입력 디바이스 (930), 스피커 (936), 마이크로폰 (938), 무선 안테나 (942) 및 전원 (944) 은 시스템-온-칩 디바이스 (922) 외부에 있다. 그러나, 디스플레이 (928), 입력 디바이스 (930), 스피커 (936), 마이크로폰 (938), 무선 안테나 (942) 및 전원 (944) 의 각각은 인터페이스 또는 제어기와 같은 시스템-온-칩 디바이스 (922) 의 컴포넌트에 커플링될 수 있다.
본 명세서에 개시된 실시형태들과 관련하여 기술된 다양한 예시적인 논리 블록들, 구성들, 모듈들, 회로들 및 알고리즘 단계들이 전자식 하드웨어, 하드웨어 프로세서와 같은 프로세싱 디바이스에 의해 실행된 컴퓨터 소프트웨어, 또는 양자 모두의 조합으로서 구현될 수도 있음을 당업자는 추가로 인식할 것이다. 다양한 예시적인 컴포넌트들, 블록들, 구성들, 모듈들, 회로들 및 단계들은 앞서 그들의 기능성과 관련하여 일반적으로 설명되었다. 이러한 기능성이 하드웨어 또는 실행가능한 소프트웨어로서 구현되는지 여부는 전체 시스템에 부과된 특정 애플리케이션 및 설계 제약들에 의존한다. 당업자는 기술된 기능성을 각각의 특정 애플리케이션에 대해 다양한 방식으로 구현할 수도 있지만, 이러한 구현 결정은 본 개시물의 범위로부터 벗어나지 않는 것으로 해석되어야 한다.
본 명세서에 개시된 예시적인 실시형태들와 관련하여 설명되는 방법 또는 알고리즘의 단계들은 하드웨어에서 직접, 프로세서에 의해 실행되는 소프트웨어 모듈에서, 또는 이들의 조합에서 구현될 수도 있다. 소프트웨어 모듈은 랜덤 액세스 메모리 (RAM), 자기저항성 랜덤 액세스 메모리 (MRAM), 스핀-토크 전달 MRAM (STT-MRAM), 플래시 메모리, 판독 전용 메모리 (ROM), 프로그래머블 판독 전용 메모리 (PROM), 전기적으로 소거가능한 판독 전용 메모리 (EPROM), 전기적으로 소거가능한 프로그램 가능 판독 전용 메모리 (EEPROM), 레지스터들, 하드디스크, 탈착가능 디스크, 소형 디스크 판독 전용 메모리 (CD-ROM), 또는 당업계에 공지된 임의의 다른 형태의 저장 매체오 같은 비-일시적인 저장 매체에 상주할 수도 있다. 예시적인 저장 매체는 프로세서에 커플링되며, 따라서 프로세서는 저장매체로부터 정보를 판독하고, 저장 매체로 정보를 기록할 수 있다. 대안적으로, 저장 매체는 프로세서에 필수일 수도 있다. 프로세서 및 저장 매체는 애플리케이션용 집적 회로 (ASIC) 에 상주할 수도 있다. ASIC은 컴퓨팅 디바이스 또는 사용자 단말에 상주할 수도 있다. 대안적으로, 프로세서 및 저장 매체는 컴퓨팅 디바이스 또는 사용자 단말기에서 개별 컴포넌트들로서 상주할 수도 있다.
개시된 실시형태들의 전술된 설명은 당업자가 개시된 실시형태들을 실행하거나 이용할 수도 있도록 제공된다. 이들 실시형태들에 대한 여러 가지 변형은 당업자에게 자명하며, 본 명세서에 정의된 원리는 본 개시물의 범위로부터 벗어남 없이 다른 실시형태들에 적용될 수도 있다. 따라서, 본 개시물은 본 명세서에 도시된 실시형태들에 한정되도록 의도되는 것이 아니며, 이하 청구범위에서 정의된 것과 같은 원리들 및 신규한 특징들과 일치할 수 있는 최광의 범위에 따른다.
Claims (44)
- 프로세서에 액세스 가능한 메모리의 하나 이상의 메모리 영역들을 할당하는 단계로서, 상기 하나 이상의 메모리 영역들은 제 1 오디오 디코더와 연관된 하나 이상의 메모리 이미지들 중 특정 메모리 이미지에 각각 할당되는, 상기 하나 이상의 메모리 영역들을 할당하는 단계;
상기 하나 이상의 메모리 이미지들을, 멀티-웨이 캐시로 로딩하는 단계;
상기 제 1 오디오 디코더에서 제 1 오디오 스트림을 디코딩하고, 제 2 오디오 디코더에서 제 2 오디오 스트림을 디코딩하는 단계;
상기 제 2 오디오 디코더에서의 상기 제 2 오디오 스트림의 디코딩을 종료하는 단계; 및
상기 제 2 오디오 스트림의 디코딩을 종료하는 단계 이후에 상기 제 1 오디오 디코더에서 상기 제 1 오디오 스트림을 디코딩하는 단계를 포함하는, 방법. - 제 1 항에 있어서,
각각의 상기 하나 이상의 메모리 이미지들의 사이즈는 상기 멀티-웨이 캐시의 페이지 사이즈와 동일한, 방법. - 제 1 항에 있어서,
상기 제 1 오디오 디코더는 하나 이상의 오디오 스트림들을 디코딩하도록 동작가능한, 방법. - 제 1 항에 있어서,
상기 제 2 오디오 스트림의 종료를 검출하는 단계를 더 포함하는, 방법. - 제 1 항에 있어서,
상기 하나 이상의 메모리 이미지들은 셋 이상의 메모리 이미지들을 포함하고,
상기 하나 이상의 메모리 이미지들 중 제 1 메모리 이미지는 오디오 디코더 프로그램 명령들을 포함하고,
상기 하나 이상의 메모리 이미지들 중 제 2 메모리 이미지는 동적 메모리 할당 영역에 대응하며, 그리고
상기 하나 이상의 메모리 이미지들 중 제 3 메모리 이미지는 포스트-프로세싱 프로그램 명령들을 포함하는, 방법. - 제 1 항에 있어서,
상기 하나 이상의 메모리 이미지들은 애플리케이션 프로세서로부터의 개입에 독립적으로 상기 멀티-웨이 캐시로 로딩되는, 방법. - 제 1 항에 있어서,
상기 프로세서와 통합된 제 3 메모리에서, 복수의 오디오 디코더들에 공통인 프로그램 명령들에 액세스하는 단계를 더 포함하는, 방법. - 제 1 항에 있어서,
상기 프로세서는 디지털 신호 프로세서를 포함하는, 방법. - 제 1 항에 있어서,
상기 하나 이상의 메모리 이미지들 중 제 1 메모리 이미지는, 상기 프로세서의 저전력 모드 및 상기 프로세서의 비-저전력 모드에서의 오디오 디코딩에 대하여 사용되도록 구성되는, 방법. - 제 1 항에 있어서,
상기 메모리는 랜덤 액세스 메모리인, 방법. - 제 1 항에 있어서,
상기 제 1 오디오 디코더가 상기 멀티-웨이 캐시에서 캐시 미스를 발생하게 하지 않고 상기 제 1 오디오 디코더에서 상기 제 1 오디오 스트림을 디코딩하는 단계를 더 포함하는, 방법. - 제 11 항에 있어서,
제 3 오디오 디코더가 상기 멀티-웨이 캐시에서 캐시 미스들을 발생하게 하지 않고 상기 제 3 오디오 디코더에서 제 3 오디오 스트림을 디코딩하는 단계를 더 포함하는, 방법. - 제 1 항에 있어서,
오디오 데이터를 수신하는 단계로서, 상기 하나 이상의 메모리 이미지들은 상기 오디오 데이터가 상기 제 1 오디오 디코더에 대응하는 것을 결정하는 것에 응답하여 로딩되는, 상기 오디오 데이터를 수신하는 단계;
캐시 미스가 상기 멀티-웨이 캐시에서 발생하게 하지 않고 상기 제 1 오디오 디코더에서 상기 오디오 데이터를 디코딩하는 단계; 및
프로세싱된 오디오 데이터를 상기 프로세서의 출력 포트에 제공하는 단계를 더 포함하는, 방법. - 제 13 항에 있어서,
포스트-프로세싱된 오디오 데이터를 생성하기 위해 하나 이상의 포스트-프로세싱 기능들을 디코딩된 오디오 데이터에 적용하는 단계로서, 상기 하나 이상의 포스트-프로세싱 기능들은 상기 제 1 오디오 디코더에 특정되는, 상기 하나 이상의 포스트-프로세싱 기능들을 디코딩된 오디오 데이터에 적용하는 단계; 및
프로세싱된 오디오 데이터를 생성하기 위해 하나 이상의 공통 프로세싱 기능들을 상기 포스트-프로세싱된 오디오 데이터에 적용하는 단계를 더 포함하며,
상기 하나 이상의 공통 프로세싱 기능들은 복수의 오디오 디코더들에 공통인, 방법. - 제 1 항에 있어서,
상기 하나 이상의 메모리 영역들 각각의 사이즈는 상기 멀티-웨이 캐시의 페이지 사이즈보다 작거나 그와 동일하고, 상기 하나 이상의 메모리 이미지들을 상기 멀티-웨이 캐시로 로딩하는 단계는 상기 제 1 오디오 디코더가 캐시 미스들을 상기 멀티-웨이 캐시에서 발생하게 하지 않고 오디오 디코딩을 가능하게 하는, 방법. - 제 15 항에 있어서,
상기 오디오 디코딩은, 상기 프로세서에 사용가능한 상위 레벨 메모리에 액세스하지 않고 상기 하나 이상의 메모리 이미지들을 상기 멀티-웨이 캐시로 로딩한 이후에 수행되고, 상기 제 1 오디오 스트림 및 상기 제 2 오디오 스트림은 동시에 디코딩되는, 방법. - 제 1 항에 있어서,
상기 하나 이상의 메모리 이미지들의 전체 메모리 이미지의 상기 멀티-웨이 캐시로의 로딩을 발생하기 위한 프로세스를 개시하는 단계를 더 포함하는, 방법. - 제 17 항에 있어서,
상기 프로세스는 상기 프로세서의 배경 쓰레드를 포함하는, 방법. - 제 17 항에 있어서,
상기 프로세스는 오디오 디코딩 프로세스의 시작 또는 정지를 검출하는 것에 응답하여 개시되는, 방법. - 제 1 항에 있어서,
포스트-프로세싱된 오디오 데이터를 생성하도록 디코딩된 오디오 데이터에 하나 이상의 포스트-프로세싱 기능들을 적용하는 단계를 더 포함하고,
상기 하나 이상의 포스트-프로세싱 기능들은 상기 제 1 오디오 디코더에 특정된, 방법. - 제 20 항에 있어서,
프로세싱된 오디오 데이터를 생성하도록 하나 이상의 공통 프로세싱 동작들을 상기 포스트-프로세싱된 오디오 데이터에 적용하는 단계를 더 포함하고, 상기 하나 이상의 공통 프로세싱 동작들은 상기 오디오 디코더들 중 일부에 공통인, 방법. - 제 1 항에 있어서,
상기 하나 이상의 메모리 이미지들은 상기 제 1 오디오 스트림 또는 상기 제 2 오디오 스트림에서의 가청 인터럽션 없이 상기 멀티-웨이 캐시로 로딩되는, 방법. - 제 1 항에 있어서,
상기 제 1 오디오 디코더가 캐시 미스를 상기 멀티-웨이 캐시에서 발생하게 하지 않고 상기 제 1 오디오 디코더에서 상기 제 1 오디오 스트림을 디코딩하는 단계;
상기 제 1 오디오 스트림의 종료 및 제 3 오디오 디코더에 의해 디코딩될 제 3 오디오 스트림의 개시를 검출하는 단계;
상기 제 3 오디오 디코더와 연관된 하나 이상의 메모리 이미지들을 상기 멀티-웨이 캐시로 로딩하는 단계; 및
상기 제 3 오디오 디코더가 캐시 미스들을 상기 멀티-웨이 캐시에서 발생하게 하지 않고, 상기 제 3 오디오 디코더에서 상기 제 3 오디오 스트림을 디코딩하는 단계를 더 포함하는, 방법. - 제 23 항에 있어서,
상기 제 3 오디오 디코더와 연관된 상기 하나 이상의 메모리 이미지들은 상기 제 1 오디오 스트림 또는 상기 제 3 오디오 스트림에서의 가청 인터럽션 없이 상기 멀티-웨이 캐시로 로딩되는, 방법. - 제 23 항에 있어서,
상기 제 3 오디오 디코더와 연관된 상기 하나 이상의 메모리 이미지들은 애플리케이션 프로세서로부터의 개입에 독립적으로 상기 멀티-웨이 캐시로 로딩되는, 방법. - 제 1 항에 있어서,
상기 하나 이상의 메모리 이미지들은 각각 상기 메모리로부터 상기 멀티-웨이 캐시로 로딩되고, 상기 하나 이상의 메모리 이미지들은 각각 상기 멀티-웨이 캐시의 대응하는 단일 페이지로 로딩되도록 상기 메모리에 정렬되는, 방법. - 제 26 항에 있어서,
상기 메모리에서의 상기 하나 이상의 메모리 이미지들은, 상기 하나 이상의 메모리 이미지들 모두가 상기 멀티-웨이 캐시로 로딩될 경우에 오디오 디코딩 및 저전력 오디오 디코딩을 가능하게 하도록 액세스 가능한, 방법. - 제 26 항에 있어서,
상기 메모리는 상기 제 2 오디오 디코더와 연관된 하나 이상의 메모리 이미지들을 포함하는, 방법. - 제 26 항에 있어서,
상기 메모리는 복수의 오디오 디코더들에 공통인 적어도 하나의 메모리 이미지를 포함하는, 방법. - 제 26 항에 있어서,
상기 메모리는 동적 메모리 할당 영역을 포함하는, 방법. - 명령들을 포함하는 비-일시적인 컴퓨터 판독가능 저장 매체로서,
상기 명령들은, 프로세서에 의해 실행될 경우, 상기 프로세서로 하여금,
상기 프로세서에 액세스 가능한 메모리의 하나 이상의 메모리 영역들로서, 제 1 오디오 디코더와 연관된 하나 이상의 메모리 이미지들 중 특정 메모리 이미지에 각각 할당되는 상기 하나 이상의 메모리 영역들을 할당하고;
상기 하나 이상의 메모리 이미지들을, 멀티-웨이 캐시로 로딩하고;
상기 제 1 오디오 디코더에서 제 1 오디오 스트림을 디코딩하고, 제 2 오디오 디코더에서 제 2 오디오 스트림을 디코딩하고;
상기 제 2 오디오 디코더에서의 상기 제 2 오디오 스트림의 디코딩을 종료하고; 그리고
상기 제 2 오디오 스트림의 디코딩을 종료하는 것 이후에 상기 제 1 오디오 디코더에서 상기 제 1 오디오 스트림을 디코딩하게 하는,
비-일시적인 컴퓨터 판독가능 저장 매체. - 제 31 항에 있어서,
상기 하나 이상의 메모리 이미지들을 상기 멀티-웨이 캐시로 로딩하는 것은, 상기 제 1 오디오 디코더가 임의의 캐시 미스들을 상기 멀티-웨이 캐시에서 발생하게 하지 않고 오디오 디코딩을 가능하게 하는, 비-일시적인 컴퓨터 판독가능 저장 매체. - 제 31 항에 있어서,
각각의 상기 하나 이상의 메모리 이미지들의 사이즈는 상기 멀티-웨이 캐시의 페이지 사이즈와 동일한, 비-일시적인 컴퓨터 판독가능 저장 매체. - 제 31 항에 있어서,
상기 하나 이상의 메모리 영역들 각각의 사이즈는 상기 멀티-웨이 캐시의 페이지 사이즈보다 작거나 그와 동일한, 비-일시적인 컴퓨터 판독가능 저장 매체. - 전자 디바이스로서,
프로세서; 및
상기 프로세서에 액세스 가능한 멀티-웨이 캐시를 포함하며,
상기 프로세서는,
메모리의 하나 이상의 메모리 영역들로서, 제 1 오디오 디코더와 연관된 하나 이상의 메모리 이미지들 중 특정 메모리 이미지에 각각 할당되는 상기 하나 이상의 메모리 영역들을 할당하고;
상기 하나 이상의 메모리 이미지들을, 멀티-웨이 캐시로 로딩하고;
상기 제 1 오디오 디코더에서 제 1 오디오 스트림을 디코딩하고, 제 2 오디오 디코더에서 제 2 오디오 스트림을 디코딩하고;
상기 제 2 오디오 디코더에서의 상기 제 2 오디오 스트림의 디코딩을 종료하고; 그리고
상기 제 2 오디오 스트림의 디코딩을 종료하는 것 이후에 상기 제 1 오디오 디코더에서 상기 제 1 오디오 스트림을 디코딩하도록
구성되는, 전자 디바이스. - 제 35 항에 있어서,
상기 하나 이상의 메모리 영역들 각각의 사이즈는 상기 멀티-웨이 캐시의 페이지 사이즈보다 작거나 그와 동일한, 전자 디바이스. - 제 35 항에 있어서,
하나 이상의 공통 프로세싱 동작들을 포스트-프로세싱된 오디오 데이터에 적용하여 프로세싱된 오디오 데이터를 생성하도록 구성된 공통 프로세싱 회로를 더 포함하고, 상기 하나 이상의 공통 프로세스 동작들은 복수의 오디오 디코더들에 공통인, 전자 디바이스. - 제 35 항에 있어서,
상기 하나 이상의 메모리 이미지들을 상기 멀티-웨이 캐시로 로딩하는 것은, 상기 제 1 오디오 디코더가 캐시 미스들을 상기 멀티-웨이 캐시에서 발생하게 하지 않고 오디오 디코딩을 가능하게 하는, 전자 디바이스. - 제 35 항에 있어서,
상기 메모리는 랜덤 액세스 메모리이고,
상기 전자 디바이스는,
상기 프로세서에 액세스 가능한 저전력 메모리;
오디오 데이터가 상기 랜덤 액세스 메모리로부터 취출되게 하고 상기 저전력 메모리에 저장되게 하도록 구성된 애플리케이션 프로세서로서, 상기 오디오 디코더는 상기 저전력 메모리로부터 취출된 오디오 데이터를 디코딩하여 디코딩된 오디오 데이터를 생성하도록 구성되는, 상기 애플리케이션 프로세서;
상기 디코딩된 오디오 데이터에 하나 이상의 포스트-프로세싱 동작들을 적용하여 포스트-프로세싱된 오디오 데이터를 생성하도록 구성된 포스트-프로세싱 회로로서, 상기 하나 이상의 포스트-프로세싱 동작들은 상기 오디오 디코더에 특정되는, 상기 포스트-프로세싱 회로;
상기 포스트-프로세싱된 오디오 데이터에 하나 이상의 공통 프로세싱 동작들을 적용하여 상기 프로세싱된 오디오 데이터를 생성하도록 구성된 공통 프로세싱 회로로서, 상기 하나 이상의 공통 프로세싱 동작들은 복수의 오디오 디코더들에 공통인, 상기 공통 프로세싱 회로; 및
상기 프로세싱된 오디오 데이터를 출력하도록 구성된 출력 포트를 더 포함하는, 전자 디바이스. - 데이터를 프로세싱하는 수단; 및
복수의 캐시 웨이들에 데이터를 캐싱하는 수단을 포함하며,
상기 데이터를 캐싱하는 수단은 상기 데이터를 프로세싱하는 수단에 액세스 가능하고,
상기 데이터를 프로세싱하는 수단은,
데이터를 저장하는 수단의 하나 이상의 메모리 영역들로서, 오디오 데이터를 디코딩하는 제 1 수단과 연관된 하나 이상의 메모리 이미지들 중 특정 메모리 이미지에 각각 할당되는 상기 하나 이상의 메모리 영역들을 할당하고;
오디오 디코더와 연관된 상기 하나 이상의 메모리 이미지들을 상기 데이터를 캐싱하는 수단으로 로딩하고;
오디오 데이터를 디코딩하는 상기 제 1 수단에서 제 1 오디오 스트림을 디코딩하고, 오디오 데이터를 디코딩하는 제 2 수단에서 제 2 오디오 스트림을 디코딩하고;
오디오 데이터를 디코딩하는 상기 제 2 수단에서의 상기 제 2 오디오 스트림의 디코딩을 종료하고; 그리고
상기 제 2 오디오 스트림의 디코딩을 종료하는 것 이후에 오디오 데이터를 디코딩하는 상기 제 1 수단에서 상기 제 1 오디오 스트림을 디코딩하도록
구성되는, 장치. - 제 40 항에 있어서,
상기 하나 이상의 메모리 이미지들을 상기 데이터를 캐싱하는 수단으로 로딩하는 것은, 상기 오디오 데이터를 디코딩하는 수단이 캐시 미스들을 상기 데이터를 캐싱하는 수단에서 발생하게 하지 않고 오디오 디코딩을 가능하게 하는, 장치. - 제 40 항에 있어서,
각각의 상기 하나 이상의 메모리 이미지들의 사이즈는 상기 데이터를 캐싱하는 수단의 페이지 사이즈와 동일한, 장치. - 제 40 항에 있어서,
상기 오디오 데이터를 디코딩하는 수단은 AAC (Advanced Audio Coding) - 타입 오디오 디코더, MP3 (Moving Picture Experts Group Audio Layer III) - 타입 오디오 디코더, 음성 오디오 디코더, PCM (pulse-code modulation) 오디오 디코더, 또는 이들의 임의의 조합인, 장치. - 제 40 항에 있어서,
포스트-프로세싱된 오디오 데이터를 생성하도록 하나 이상의 포스트-프로세싱 동작들을 디코딩된 오디오 데이터에 적용하는 수단을 더 포함하고, 상기 하나 이상의 포스트-프로세싱 동작들은 오디오 데이터를 디코딩하는 상기 제 1 수단에 특정된, 장치.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US39349510P | 2010-10-15 | 2010-10-15 | |
US61/393,495 | 2010-10-15 | ||
US13/034,910 | 2011-02-25 | ||
US13/034,910 US8762644B2 (en) | 2010-10-15 | 2011-02-25 | Low-power audio decoding and playback using cached images |
PCT/US2011/056447 WO2012051579A1 (en) | 2010-10-15 | 2011-10-14 | Low-power audio decoding and playback using cached images |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130103553A KR20130103553A (ko) | 2013-09-23 |
KR101503623B1 true KR101503623B1 (ko) | 2015-03-18 |
Family
ID=45935121
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137012592A KR101503623B1 (ko) | 2010-10-15 | 2011-10-14 | 캐싱된 이미지들을 이용하는 저전력 오디오 디코딩 및 재생 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8762644B2 (ko) |
EP (1) | EP2628084B1 (ko) |
JP (1) | JP2013539892A (ko) |
KR (1) | KR101503623B1 (ko) |
CN (1) | CN103210378B (ko) |
IN (1) | IN2013MN00750A (ko) |
WO (1) | WO2012051579A1 (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2657847A1 (en) * | 2010-11-15 | 2013-10-30 | Fujitsu Limited | Information processing system |
US8495452B2 (en) * | 2011-02-10 | 2013-07-23 | International Business Machines Corporation | Handling corrupted background data in an out of order execution environment |
KR20120108570A (ko) * | 2011-03-24 | 2012-10-05 | 삼성전자주식회사 | 오디오 장치, 및 그 동작 방법 |
US9760150B2 (en) * | 2012-11-27 | 2017-09-12 | Nvidia Corporation | Low-power states for a computer system with integrated baseband |
KR101805630B1 (ko) * | 2013-09-27 | 2017-12-07 | 삼성전자주식회사 | 멀티 디코딩 처리 방법 및 이를 수행하기 위한 멀티 디코더 |
US9529727B2 (en) * | 2014-05-27 | 2016-12-27 | Qualcomm Incorporated | Reconfigurable fetch pipeline |
KR20160039922A (ko) * | 2014-10-02 | 2016-04-12 | 삼성전자주식회사 | 영상처리장치 및 그 제어방법 |
CN105828272A (zh) * | 2016-04-28 | 2016-08-03 | 乐视控股(北京)有限公司 | 音频信号处理方法和装置 |
CN105979467A (zh) * | 2016-04-29 | 2016-09-28 | 乐视控股(北京)有限公司 | 在高通平台中集成多种音频信号后处理算法的方法和装置 |
US20180330288A1 (en) * | 2017-05-15 | 2018-11-15 | Alteryx, Inc. | Method of data aggregation for cache optimization and efficient processing |
CN113707174B (zh) * | 2021-08-31 | 2024-02-09 | 亿览在线网络技术(北京)有限公司 | 一种音频驱动的动画特效的生成方法 |
CN114630184A (zh) * | 2022-03-23 | 2022-06-14 | 广州方硅信息技术有限公司 | 视频的渲染方法、装置、设备和计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090115211A (ko) * | 2007-02-21 | 2009-11-04 | 퀄컴 인코포레이티드 | 온-디맨드 멀티 스레드 멀티미디어 프로세서 |
US20100161923A1 (en) | 2008-12-19 | 2010-06-24 | Ati Technologies Ulc | Method and apparatus for reallocating memory content |
WO2010095416A1 (ja) | 2009-02-17 | 2010-08-26 | パナソニック株式会社 | マルチスレッドプロセッサ及びデジタルテレビシステム |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5634073A (en) * | 1994-10-14 | 1997-05-27 | Compaq Computer Corporation | System having a plurality of posting queues associated with different types of write operations for selectively checking one queue based upon type of read operation |
US6002411A (en) * | 1994-11-16 | 1999-12-14 | Interactive Silicon, Inc. | Integrated video and memory controller with data processing and graphical processing capabilities |
US5737748A (en) * | 1995-03-15 | 1998-04-07 | Texas Instruments Incorporated | Microprocessor unit having a first level write-through cache memory and a smaller second-level write-back cache memory |
US20020057898A1 (en) * | 1997-12-19 | 2002-05-16 | James Oliver Normile | Method and apparatus for trick play of bitstream data |
US6041400A (en) * | 1998-10-26 | 2000-03-21 | Sony Corporation | Distributed extensible processing architecture for digital signal processing applications |
US7271720B2 (en) * | 2002-11-18 | 2007-09-18 | Joseph Tabe | Homeland intelligent systems technology “H-LIST” |
US6717577B1 (en) * | 1999-10-28 | 2004-04-06 | Nintendo Co., Ltd. | Vertex cache for 3D computer graphics |
US6754784B1 (en) * | 2000-02-01 | 2004-06-22 | Cirrus Logic, Inc. | Methods and circuits for securing encached information |
JP2003521751A (ja) | 2000-02-01 | 2003-07-15 | シラス ロジック、インコーポレイテッド | ハンドヘルド型オーディオ・デコーダ |
US6903737B2 (en) * | 2001-01-23 | 2005-06-07 | Hewlett-Packard Development Company, L.P. | Method and apparatus for implementing spread memory layout |
US6622208B2 (en) * | 2001-03-30 | 2003-09-16 | Cirrus Logic, Inc. | System and methods using a system-on-a-chip with soft cache |
US6952749B2 (en) * | 2001-05-02 | 2005-10-04 | Portalplayer, Inc. | Multiprocessor interrupt handling system and method |
TW556077B (en) | 2001-06-05 | 2003-10-01 | Via Tech Inc | Controller for improving buffer management efficiency and the buffer management method |
US7159096B2 (en) * | 2004-03-31 | 2007-01-02 | Marvell International Ltd. | Method and apparatus to perform memory management |
US7586904B2 (en) * | 2004-07-15 | 2009-09-08 | Broadcom Corp. | Method and system for a gigabit Ethernet IP telephone chip with no DSP core, which uses a RISC core with instruction extensions to support voice processing |
US20060026629A1 (en) * | 2004-07-30 | 2006-02-02 | Harris John C | Method for advertising via IP video telephone |
JP5576021B2 (ja) * | 2004-11-29 | 2014-08-20 | ナショナル ユニヴァーシティー オブ シンガポール | 携帯用デバイスのための知覚意識型低電力オーディオ・デコーダ |
US20100198936A1 (en) * | 2004-12-03 | 2010-08-05 | Koninklijke Philips Electronics N.V. | Streaming memory controller |
JP4440803B2 (ja) * | 2005-03-03 | 2010-03-24 | 富士通株式会社 | 記憶装置、その制御方法及びプログラム |
US8200887B2 (en) * | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
US7719579B2 (en) * | 2005-05-24 | 2010-05-18 | Zoran Corporation | Digital camera architecture with improved performance |
JP2007104220A (ja) * | 2005-10-03 | 2007-04-19 | Canon Inc | 画像処理装置及び画像処理方法 |
JP4728083B2 (ja) * | 2005-10-14 | 2011-07-20 | パナソニック株式会社 | メディア処理装置 |
JP4760440B2 (ja) * | 2006-02-22 | 2011-08-31 | ヤマハ株式会社 | オーディオ再生装置 |
US7496771B2 (en) | 2005-11-15 | 2009-02-24 | Mips Technologies, Inc. | Processor accessing a scratch pad on-demand to reduce power consumption |
US20070294738A1 (en) * | 2006-06-16 | 2007-12-20 | Broadcom Corporation | Single chip cable set-top box supporting DOCSIS set-top Gateway (DSG) protocol and high definition advanced video codec (HD AVC) decode |
US7804435B2 (en) | 2006-08-31 | 2010-09-28 | Ati Technologies Ulc | Video decoder with reduced power consumption and method thereof |
US20090006756A1 (en) | 2007-06-29 | 2009-01-01 | Donley Greggory D | Cache memory having configurable associativity |
US7827356B2 (en) | 2007-09-10 | 2010-11-02 | Qualcomm Incorporated | System and method of using an N-way cache |
US8615398B2 (en) * | 2009-01-29 | 2013-12-24 | Qualcomm Incorporated | Audio coding selection based on device operating condition |
US9122609B2 (en) * | 2011-03-07 | 2015-09-01 | Texas Instruments Incorporated | Caching method and system for video coding |
-
2011
- 2011-02-25 US US13/034,910 patent/US8762644B2/en not_active Expired - Fee Related
- 2011-10-14 CN CN201180053731.7A patent/CN103210378B/zh not_active Expired - Fee Related
- 2011-10-14 EP EP11776973.7A patent/EP2628084B1/en not_active Not-in-force
- 2011-10-14 WO PCT/US2011/056447 patent/WO2012051579A1/en active Application Filing
- 2011-10-14 JP JP2013534051A patent/JP2013539892A/ja not_active Ceased
- 2011-10-14 KR KR1020137012592A patent/KR101503623B1/ko not_active IP Right Cessation
-
2013
- 2013-04-18 IN IN750MUN2013 patent/IN2013MN00750A/en unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090115211A (ko) * | 2007-02-21 | 2009-11-04 | 퀄컴 인코포레이티드 | 온-디맨드 멀티 스레드 멀티미디어 프로세서 |
US20100161923A1 (en) | 2008-12-19 | 2010-06-24 | Ati Technologies Ulc | Method and apparatus for reallocating memory content |
WO2010095416A1 (ja) | 2009-02-17 | 2010-08-26 | パナソニック株式会社 | マルチスレッドプロセッサ及びデジタルテレビシステム |
Also Published As
Publication number | Publication date |
---|---|
US8762644B2 (en) | 2014-06-24 |
EP2628084A1 (en) | 2013-08-21 |
CN103210378A (zh) | 2013-07-17 |
US20120096223A1 (en) | 2012-04-19 |
WO2012051579A1 (en) | 2012-04-19 |
IN2013MN00750A (ko) | 2015-06-12 |
KR20130103553A (ko) | 2013-09-23 |
JP2013539892A (ja) | 2013-10-28 |
EP2628084B1 (en) | 2014-11-19 |
CN103210378B (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101503623B1 (ko) | 캐싱된 이미지들을 이용하는 저전력 오디오 디코딩 및 재생 | |
US11797180B2 (en) | Apparatus and method to provide cache move with non-volatile mass memory system | |
US9928168B2 (en) | Non-volatile random access system memory with DRAM program caching | |
JP5254342B2 (ja) | n−ウェイキャッシュを用いるシステムおよび方法 | |
JP6276470B2 (ja) | ポータブルコンピューティングデバイスの揮発性メモリのスタンバイ電力を低減するためのシステムおよび方法 | |
TW200830097A (en) | Method and apparatus for saving power for a computing system by providing instant-on resuming from a hibernation state | |
KR20120025612A (ko) | 컴퓨터 스레드들의 이종 리소스들로의 맵핑 | |
JP2018518739A (ja) | 異種システムメモリにおけるメモリ消費電力を最適化するためのシステムおよび方法 | |
US10007613B2 (en) | Reconfigurable fetch pipeline | |
JP2014523046A (ja) | モバイル・メモリ・キャッシュ読み取り最適化 | |
US9569381B2 (en) | Scheduler for memory | |
US10482021B2 (en) | Priority-based storage and access of compressed memory lines in memory in a processor-based system | |
EP3931690A1 (en) | Stack management | |
JP2018505489A (ja) | システムオンチップにおける動的メモリ利用 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20171228 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |