KR102623137B1 - 컴퓨팅 디바이스에서 동적 버퍼 사이징을 위한 시스템 및 방법 - Google Patents

컴퓨팅 디바이스에서 동적 버퍼 사이징을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102623137B1
KR102623137B1 KR1020197038273A KR20197038273A KR102623137B1 KR 102623137 B1 KR102623137 B1 KR 102623137B1 KR 1020197038273 A KR1020197038273 A KR 1020197038273A KR 20197038273 A KR20197038273 A KR 20197038273A KR 102623137 B1 KR102623137 B1 KR 102623137B1
Authority
KR
South Korea
Prior art keywords
buffer
use case
buffers
buffer size
soc
Prior art date
Application number
KR1020197038273A
Other languages
English (en)
Other versions
KR20200018495A (ko
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 퀄컴 인코포레이티드
Publication of KR20200018495A publication Critical patent/KR20200018495A/ko
Application granted granted Critical
Publication of KR102623137B1 publication Critical patent/KR102623137B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/38Transceivers, i.e. devices in which transmitter and receiver form a structural unit and in which at least one part is used for functions of transmitting and receiving
    • H04B1/3827Portable transceivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/06Indexing scheme relating to groups G06F5/06 - G06F5/16
    • G06F2205/063Dynamically variable buffer size
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

포터블 컴퓨팅 디바이스 ("PCD") 에서 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 방법들 및 시스템들이 개시된다. 모니터 모듈은 PCD 의 복수의 컴포넌트들에 대한 제 1 활동 레벨을 정의하기 위한 제 1 사용 케이스를 결정한다. 제 1 사용 케이스에 기초하여, 복수의 버퍼들이 제 1 버퍼 사이즈로 설정된다. 버퍼들 각각은 복수의 컴포넌트들 중 하나의 컴포넌트와 연관되고, 버퍼 각각에 대한 제 1 버퍼 사이즈는 연관된 컴포넌트의 제 1 활동 레벨에 기초한다. 제 1 사용 케이스와는 상이한 PCD 에 대한 제 2 사용 케이스가 결정된다. 제 2 사용 케이스는 복수의 컴포넌트들에 대한 제 2 활동 레벨을 정의한다. 복수의 버퍼들 중 적어도 하나의 버퍼는 제 2 사용 케이스에 기초하여 제 1 버퍼 사이즈와는 상이한 제 2 버퍼 사이즈로 설정된다.

Description

컴퓨팅 디바이스에서 동적 버퍼 사이징을 위한 시스템 및 방법
데스크탑 컴퓨터들, 서버들 및 포터블 컴퓨팅 디바이스들 ("PCDs") 을 포함하는 컴퓨팅 디바이스들은 어디에나 존재한다. PCD들은 예를 들어, 퍼스널 및 프로페셔널 레벨들에서 사람들에 대해 필수품으로 되고 있다. 이들 디바이스들은 셀룰라 전화기 (이를 테면, 스마트폰), 개인 휴대 정보 단말기 ("PDAs"), 포터블 게임 콘솔들, 팜탑 컴퓨터, 테블릿 컴퓨터, 웨어러블 및 그 외 다른 포터블 전자 디바이스들을 포함할 수도 있다. 이러한 PCD들은 일반적으로 메모리들, 이를 테면, 데이터 손실 없이 데이터가 PCD 의 컴포넌트들 사이에서 효율적으로 전달되는 것을 보장하도록 버퍼들로서 동작하는 선입선출 버퍼들 또는 메모리 레지스터들을 사용한다. 이러한 버퍼 메모리들은 통상적으로 "최악의 케이스" 시나리오를 위한 PCD 의 스타트업으로서 사이징되며, 예를 들어, 데이터를 전달하는 제 1 컴포넌트가 최대 주파수에서 동작하면서 데이터를 전달하는 다른 동작 컴포넌트가 최소 주파수에서 동작할 때 버퍼 메모리들, 이를 테면, FIFO들은 어떠한 데이터도 손실되지 않는 것을 보장하도록 사이징될 수 있다.
PCD들이 더욱 강력하게 되고 더 많은 작업들을 수행하도록 요구되기 때문에, 전력 소모를 감소시키는 것은 만족스러운 배터리 수명을 보장하기 위해 더욱 중요하게 된다. 전력 소모를 감소 또는 제어하기 위한 통상의 종래 기술의 기술들은 PCD 컴포넌트들이 동작하는 전압 레벨 및/또는 PCD 컴포넌트들의 클록 주파수를 제어하거나 스로틀링하는 것을 포함한다. 그러나 이를 테면, PCD 의 다수의 컴포넌트들이 다소의 전력 레일 상에서 동작하여 전력 레일 상의 전압 레벨이 한 컴포넌트의 요건에 기인하여 감소될 수도 있으면서, 전력 레일 상의 다른 컴포넌트들이 더 낮은 전력 레벨에서 동작할 수 있을 때, 전력 소모를 제어하는 이러한 방법은 모든 환경들에서 효과적인 것은 아닐 수도 있다.
전력 소모를 제어하는 이러한 방법들은 "최악의 케이스" 시나리오들을 처리하기 위해 사이징되는 버퍼들로부터 야기되는 상당한 전력 누설을 무시한다. 따라서, 컴퓨티 디바이스들, 이를 테면 PCD들에서의 FIFO 버퍼 사이징을 동적으로 제어하는 시스템들 및 방법들에 대한 필요가 존재한다.
컴퓨팅 디바이스에서 버퍼 메모리 사이즈를 동적으로 제어하는 방법들 및 시스템들의 여러 실시형태들이 개시된다. 예시적인 실시형태에서, 일 방법이 제공되며, 본 방법은 시스템 온 칩 ("SoC") 의 모니터 모듈에 의해 PCD 에 대한 제 1 사용 케이스를 결정하는 단계를 포함한다. 제 1 사용 케이스는 SoC 의 복수의 컴포넌트들에 대한 제 1 활동 레벨을 정의한다. 본 방법은 제 1 사용 케이스에 기초하여 제 1 버퍼 사이즈로 복수의 버퍼 메모리들을 설정하는 단계를 포함한다. 복수의 버퍼들 각각은 SoC 의 복수의 컴포넌트들 중 하나의 컴포넌트와 연관되고, 버퍼들 각각에 대한 제 1 버퍼 사이즈는 SoC 의 연관된 컴포넌트의 제 1 활동 레벨에 기초한다.
본 방법은 제 1 사용 케이스와는 상이한 PCD 에 대한 제 2 사용 케이스를 결정하는 단계를 더 포함한다. 제 2 사용 케이스는 SoC 의 복수의 컴포넌트들에 대한 제 2 활동 레벨을 정의한다. 복수의 버퍼들 중 적어도 하나의 버퍼는 제 2 사용 케이스에 기초하여 제 2 버퍼 사이즈로 설정된다. 적어도 하나의 버퍼에 대한 제 2 버퍼 사이즈는 SoC 의 연관된 컴포넌트의 제 2 활동 레벨 및 제 1 버퍼 사이즈와는 상이한 제 2 버퍼 사이즈에 기초한다.
다른 실시형태에서, 컴퓨팅 디바이스에서 버퍼 사이즈를 동적으로 제어하는 컴퓨터 시스템이 개시된다. 예시적 시스템은 PCD 의 시스템 온 칩 ("SoC") 의 복수의 컴포넌트들; SoC 상의 복수의 버퍼들로서, 복수의 버퍼들 각각은 복수의 컴포넌트들 중 한 컴포너트와 연관되는, 복수의 버퍼들; 및 SoC 의 모니터 모듈을 포함한다. 모니터 모듈은 PCD 에 대한 제 1 사용 케이스를 결정하도록 구성되고, 제 1 사용 케이스는 SoC 의 복수의 컴포넌트들에 대한 제 1 활동 레벨을 정의한다. 모니터 모듈은 또한 제 1 사용 케이스에 기초하여 제 1 버퍼 사이즈로 복수의 버퍼들을 설정하도록 구성되고, 버퍼들 각각에 대한 제 1 버퍼 사이즈는 SoC 의 연관된 컴포넌트의 제 1 활동 레벨에 기초한다.
모니터 모듈은 또한 제 1 사용 케이스와는 상이한, PCD 에 대한 제 2 사용 케이스를 결정하도록 구성되고, 제 2 사용 케이스는 SoC 의 복수의 컴포넌트들에 대한 제 2 활동 레벨을 정의한다. 마지막으로, 모니터 모듈은 복수의 버퍼들 중 적어도 하나의 버퍼를 제 2 사용 케이스에 기초하여 제 2 버퍼 사이즈로 설정하도록 구성된다. 적어도 하나의 버퍼에 대한 제 2 버퍼 사이즈는 SoC 의 연관된 컴포넌트의 제 2 활동 레벨 및 제 1 버퍼 사이즈와는 상이한 제 2 버퍼 사이즈에 기초한다.
도면들에서, 동일한 참조 번호들은 달리 나타내지 않으면 다양한 뷰들 전반에 걸쳐 동일한 부분들을 지칭한다. "102A" 또는 "102B" 와 같은 문자 지정들을 갖는 참조 번호들에 대해, 그 문자 지정들은 동일한 도면에 존재하는 2 개의 같은 부분들 또는 엘리먼트들을 구별할 수도 있다. 참조 번호들에 대한 문자 지정들은, 그 참조 번호가 모든 도면들에 있어서 동일한 참조 번호를 갖는 모든 부분들을 포괄하도록 의도될 때 생략될 수도 있다.
도 1 은 포터블 컴퓨팅 디바이스 (PCD) 의 예시의 실시형태를 예시하는 기능 블록 다이어그램이며, 동적 선입선출 (FIFO) 버퍼 사이징을 위한 시스템들 및 방법들이 구현될 수 있다.
도 2 는 PCD 에서 구현될 수도 있는 시스템 온 칩 (SoC) 에서의 예시적 컴포넌트들을 도시하는 블록 다이어그램이다.
도 3 은 컴퓨팅 디바이스에서 동적 FIFO 버퍼 사이징을 위한 시스템의 예시적 실시형태의 양태들을 도시하는 블록 다이어그램이다.
도 4a 는 도 2 의 블록 다이어그램이며, 동적 FIFO 버퍼 사이징을 위한 시스템 및 방법의 동작의 일 예가 사용 케이스에 대하여 예시된다.
도 4b 는 도 2 의 블록 다이어그램이며, 동적 FIFO 버퍼 사이징을 위한 시스템 및 방법의 동작의 일 예가 다른 사용 케이스에 대하여 예시된다.
도 5a 는 동적 FIFO 버퍼 사이징을 위한 시스템 및 방법의 동작 동안에 사용될 수도 있는 예시의 상태 테이블이다.
도 5b 는 동적 FIFO 버퍼 사이징을 위한 시스템 및 방법의 동작 동안에 사용될 수도 있는 예시의 룩업 테이블 (LUT) 이다.
도 6 은 SoC 에서의 예시의 컴포넌트들을 도시하는 블록 다이어그램 및 사용 케이스를 위한 동적 FIFO 버퍼 사이징을 위한 시스템 및 방법의 동작의 일 예의 추가적인 양태들이다.
도 7a 는 제 1 사이즈를 갖는 FIFO 의 양태들을 도시하는 블록 다이어그램이다.
도 7b 는 본원에서의 예시의 시스템들 및 방법들에 따른 재사이징한 후의 도 6a 의 FIFO 의 양태들을 도시하는 블록도이다.
도 8 은 컴퓨팅 디바이스에서 동적 FIFO 버퍼 사이징을 위한 예시의 방법의 동작을 예시하는 논리 플로우차트이다.
"예시적" 이라는 용어는 "예, 실례, 또는 예시의 역할을 하는 것" 을 의미하는 것으로 여기에서 사용된다. "예시적인" 으로서 본원에 기재된 임의의 양태가 반드시 다른 양태들보다 배타적이거나, 바람직하거나 또는 유리한 것으로 해석될 필요는 없다.
이 설명에 있어서, 용어 "애플리케이션" 은 또한 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들과 같은 실행가능 컨텐츠를 갖는 파일들을 포함할 수도 있다. 부가적으로, 본원에서 지칭되는 "애플리케이션" 은 또한, 공개될 필요가 있을 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들과 같이 본질적으로 실행가능하지 않은 파일들을 포함할 수도 있다.
이 설명에 있어서 사용되는 바와 같이, 용어들 "컴포넌트", "데이터베이스", "모듈", "시스템" 등은 컴퓨터 관련 엔터티, 즉, 하드웨어, 펌웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행 중인 소프트웨어 중 어느 하나를 지칭하도록 의도되고, 본원에서 설명된 기능을 제공하고 그리고 프로세스들 또는 프로세스 플로우들에 있어서의 특정 단계들을 수행하는 예시적인 수단을 나타낸다. 예를 들어, 컴포넌트는 프로세서 상에서 구동하는 프로세스, 프로세서, 오브젝트, 실행 가능물 (executable), 실행 스레드 (thread of execution), 프로그램, 및/또는 컴퓨터일 수도 있지만, 이에 한정되지 않는다. 예시로서, 컴퓨팅 디바이스 상에서 실행되는 애플리케이션 및 컴퓨팅 디바이스 양쪽 모두는 컴포넌트일 수도 있다.
하나 이상의 컴포넌트들은 프로세스 및/또는 실행의 스레드 내에 상주할 수도 있고 컴포넌트는 하나의 컴퓨터 상에 로컬화될 수도 있거나 및/또는 2개 이상의 컴퓨터들 사이에 분산될 수도 있다. 또한, 이들 컴포넌트들은, 저장된 다양한 데이터 구조들을 갖는 다양한 컴퓨터 판독가능 매체로부터 실행될 수도 있다. 컴포넌트들은, 로컬 및/또는 원격 프로세스들에 의해, 이를테면 하나 이상의 데이터 패킷들 (예를 들면, 로컬 시스템, 분산 시스템에 있거나 및/또는 신호에 의해 다른 시스템들과 인터넷과 같은 네트워크를 통해 다른 컴포넌트와 상호작용하는 하나의 컴포넌트로부터 데이터) 을 갖는 신호에 따라 통신할 수도 있다.
이 설명에 있어서, 용어들 "중앙 프로세싱 유닛 ("CPU")", "디지털 신호 프로세서 ("DSP")", "그래픽 프로세싱 유닛 ("GPU")", 및 "칩" 이 상호대체가능하게 사용된다. 더욱이, CPU, DSP, GPU 또는 칩은 본원에서 일반적으로 "코어(들)" 로서 지칭되는 하나 이상의 별개의 프로세싱 컴포넌트들로 이루어질 수도 있다.
이 설명에서, 용어들 "워크로드", "프로세스 로드" 및 "프로세스 워크로드"는 상호교환적으로 사용되고, 그 프로세싱 컴포넌트가 하나 이상의 테스크 또는 명령을 실행할 때 주어진 실시형태에서 프로세싱 컴포넌트와 연관되는 일반적으로 프로세싱 부담, 또는 프로세싱 부담의 백분율을 향하여 교시된다. 추가로, "프로세싱 컴포넌트"는 시스템 온 칩 ("SoC"), 중앙 프로세싱 유닛, 그래픽 프로세싱 유닛, 코어, 메인 코어, 서브코어, 프로세싱 영역, 하드웨어 엔진, 카메라, 모뎀 등 또는 포터블 컴퓨팅 디바이스 내의 집적 회로 내부에 또는 외부에 상주하는 임의의 다른 컴포넌트일 수 있지만, 이들에 제한되지 않는다.
이 설명에 있어서, 용어 "포터블 컴퓨팅 디바이스" ("PCD") 는 배터리와 같은 한정된 용량의 전력 공급부에 대해 동작하는 임의의 디바이스를 설명하는데 사용된다. 배터리 동작식 PCD들이 수십년 동안 사용되고 있었지만, 제 3 세대 ("3G") 및 제 4 세대 ("4G") 무선 기술의 도래와 연결된 재충전가능 배터리들에 있어서의 기술적 진보들은 다중의 능력들을 갖는 다수의 PCD들을 인에이블시켰다. 따라서, PCD 는, 다른 것들 중에서, 셀룰러 전화기, 위성 전화기, 페이저, PDA, 스마트폰, 네비게이션 디바이스, 스마트북 또는 리더, 미디어 플레이어, 포터블 컴퓨터, 전술한 디바이스들의 조합, 무선 접속을 갖는 랩탑 컴퓨터 및/또는 웨어러블 제품들일 수도 있다.
PCD들에서, 서비스 품질, 배터리 수명 및 다른 관련문제들의 경쟁은 더 높은 (또는 더 낮은) 전력 또는 전압 및/또는 더 높은 (또는 더 낮은) 주파수에서 동작되어지는 PCD 의 여러 컴포넌트들, 시스템들 및/또는 서브시스템들로 이어질 수 있다. 추가로, PCD들은 통상적으로, PCD들의 여러 컴포넌트들, 시스템들, 및/또는 서브시스템들 간의 데이터 협상을 보조하기 위해 하나 이상의 버퍼 메모리들을 포함한다. 그러나, 이들 버퍼 메모리들 또는 버퍼들은 통상적으로 PCD 의 초기 스타트업 또는 동작에서 설정 또는 사이징되고 사이즈에서 정적으로 유지되어 버퍼가 사용되지 않을 때 과도한 전력 누설로 이어진다. 이러한 전력 손실은 "최악의 케이스" 시나리오에 대해 사이징되는 버퍼들, 이를 테면, 데이터를 송신하는 컴포넌트가 최대 주파수에서 동작하면서 데이터를 수신하는 컴포넌트가 최소 주파수에서 동작할 때 데이터가 손실디지 않는 것을 보장하기 위해 사이징되는 버퍼에서 특히 상당할 수 있다. 버퍼 사이즈로부터의 이 전력 손실은 PCD 컴퍼넌트들의 동작 주파수 및/또는 전압들에 초점이 맞추어진 통상적의 전력 제어 전력에 대해 고려되지 않는다.
PCD 컴포넌트들 및/또는 서브시스템들에 의해 사용되는 버퍼들의 사이즈를 동적으로 제어하는 능력은 PCD 컴포넌트들/서브시스템들의 통상의 전압/주파수 제어에 의해 얻어지는 전력 절감을 너머서 실질적인 전력 절감으로 이어질 수 있는 것으로 결정되었다. 추가적으로, 버퍼들을 동적으로 사이징하는 것은 통상의 전압/주파수 기반 제어 방법들이 아닐 때, 이를 테면, 비활성 컴포넌트의 전압이, 그 컴포넌트가 활성 컴포넌트와 전력 레벨을 공유하기 때문에 감소될 수 없을 때 전력 절감을 제공할 수 있다. 따라서, 버퍼들 또는 버퍼 메모리들을 동적으로 사이징하는 본 시스템들 및 방법들은 통상의 전압/주파수 전력 절감 방법이 비효과적일 때 전력 절감을 실현하도록 또는 전력 절감을 강화하도록 하는 비용 효율적 능력을 제공한다.
본원에 설명된 데이터 경로 인식 열 관리에 대한 시스템 및 방법들 또는 시스템 및 방법들의 부분들은 하드웨어 또는 소프트웨어에서 구현될 수도 있다. 하드웨어로 구현되면, 시스템들 또는 시스템들의 부분들은 모두 당해 기술 분야의 당업자에게 알려진 다음 기술들: 센서들, 별도 전자 컴포넌트들, 집적 회로들, 적절하게 구성된 반도체 디바이스들 및 저항 소자들을 갖는 애플리케이션 특정 집적 회로의 어느 것 또는 조합을 포함할 수 있다. 임의의 이들 하드웨어 디바이스들은 다른 디바이스들, 또는 다른 컴포넌트들, 이를 테면 메모리와 함께 작용하든 또는 단독으로 작용하던, 또한 개시된 방법들의 여러 동작 또는 단계를 수행하기 위한 컴포넌트들 또는 수단을 포함 또는 형성할 수도 있다.
본원에 설명된 시스템 또는 방법이 소프트웨어로 구현되거나 또는 부분적으로 구현될 때, 소프트웨어 부분은 본원에 설명된 방법들을 수행하기 위해 사용될 수 있다. 여러 엘리먼트들을 표현할 때 사용되는 소프트웨어 및 데이터는 메모리에 저장되어 적절한 명령 실행 시스템 (예를 들어, 마이크로프로세서) 에 의해 실행될 수 있다. 소프트웨어는 논리 기능들을 구현하기 위한 실행가능 명령들의 오더링된 리스트를 포함할 수도 있고, 명령 실행 시스템, 장치 또는 디바이스, 이를 테면, 단일 또는 다중-코어 프로세서 또는 프로세서 포함 시스템에 의해 또는 이들과 연계하여 사용하기 위한 임의의 "프로세서 판독가능 매체"에서 구현될 수도 있다. 이러한 시스템들은 일반적으로 명령 실행 시스템, 장치 또는 디바이스로부터 명령들에 액세스하고 명령들을 실행한다.
도 1 은 포터블 컴퓨팅 디바이스 (PCD) 의 예시의 실시형태를 예시하는 기능 블록 다이어그램이며, 여기서 데이터 경로 인식 열 관리를 위한 시스템들 및 방법들이 구현될 수 있다. 도시된 바와 같이, PCD (100) 는, 함께 커플링되는 멀티코어 제 1 중앙 프로세싱 유닛 ("CPU") (110) 및 아날로그 신호 프로세서 (128) 를 포함하는 온-칩 시스템 ("SoC")(102) 을 포함한다. CPU (110) 는, 제 0 코어 (122), 제 1 코어 (124), 및 제 N 코어 (126) 까지를 포함하는 멀티 코어들을 포함할 수도 있다. 추가로, CPU (110) 대신, 디지털 신호 프로세서 ("DSP") 가 또한 당업자에 의해 이해되는 바와 같이 채용될 수도 있다. 이해될 바와 같이, 코어들 (122, 122, 126) 은 PCD (100) 에 의해 구동되는 애플리케이션의 명령들 또는 태스크들과 같은 하나 이상의 명령들 또는 태스크들을 실행하도록 구현될 수도 있다. 또한 이해될 바와 같이, 이러한 명령들 또는 태스크들은 도 1 에 예시된 GPU (182) 와 같은 하나 이상의 추가적인 프로세싱 컴포넌트들에 의해 또는 컴포넌트들 상에서 대신에 또는 추가적으로 실행될 수 있다.
일 실시형태에서, 모니터 모듈 (114) 은 동작 동안의 여러 컴포넌트들 PCD (100) 뿐만 아니라 SoC (102) 의 다른 컴포넌트들, 이를 테면, CPU (110) 또는 GPU (182) 등에 의해 구현되는 선입선출 (FIFO) 버퍼들 (도 1 에 예시되지 않음) 과 통신하도록 구현될 수 있다. 모니터 모듈 (114) 은 또한 일부 실시형태들에서, 아래 설명된 바와 같이, 여러 FIFO들 중 어느 것이 재사이징되는지 그리고 FIFO들이 어느정도까지 리사이징될지를 결정할 수도 있다. 도 1 에서 편의를 위하여 SoC (102) 상의 단일 컴포넌트로서 도시되어 있지만, 모니터 모듈 (114) 은 일부 실시형태들에서, 다수의 컴포넌트들을 포함할 수도 있고, 이들 컴포넌트들 중 하나, 일부 또는 모두는 SoC (102) 상에 위치되지 않을 수도 있다. 본 개시에서 모니터 모듈 (114) 이 반드시 도 1 에 예시된 컴포넌트인 것은 아닐 수도 있고, 일부 실시형태들에서, 모니터 모듈 (114) 은 메모리 (112) 에 저장된 실행가능 명령들, 코드 및/또는 파라미터들과 같이 소프트웨어로 구현될 수도 있다.
도 1 에 예시된 바와 같이, 디스플레이 제어기 (129) 및 터치 스크린 제어기 (130) 는 CPU (110) 에 커플링된다. SoC (102) 외부의 터치 스크린 디스플레이 (132) 는 디스플레이 제어기 (131) 및 터치 스크린 제어기 (130) 에 커플링된다. 또한, 도 1 에 SoC (102) 상에 위치된 단일 컴포넌트로서 도시되어 있지만, 디스플레이 제어기 (131) 또는 터치 스크린 컨트롤러 (130) 양쪽 모두는 다수의 컴포넌트들을 포함할 수 있으며, 이들 중 하나 이상은 일부 실시형태들에서 SoC (102) 상에 위치되지 않을 수도 있다.
PCD (100) 는 비디오 인코더 (134), 예를 들어, "PAL" (phase-alternating line) 인코더, "SECAM" (sequential couleur a memoire) 인코더, "NTSC" (national television system(s) committee) 인코더 또는 임의의 다른 타입의 비디오 인코더 (134) 를 더 포함할 수도 있다. 비디오 인코더 (134) 는 CPU (110) 에 커플링된다. 비디오 증폭기 (136) 가 비디오 인코더 (134) 및 터치 스크린 디스플레이 (132) 에 커플링된다. 비디오 포트 (138) 가 비디오 증폭기 (136) 에 커플링된다. 도 1 에 도시된 바와 같이, 유니버셜 시리즈 버스 ("USB") 제어기 (140) 가 CPU (110) 에 커플링된다. 또한, USB 포트 (142) 는 USB 제어기 (140) 에 커플링된다. 메모리 (112) 및 가입자 아이덴터티 모듈 (SIM) 카드 (146) 가 또한 CPU (110) 에 커플링될 수도 있다. 또한, 도 1 에 도시된 바와 같이, 디지털 카메라 (148) 가 SoC (102)의 CPU (110) 에 커플링될 수도 있다. 예시적인 양태에 있어서, 디지털 카메라 (148) 는 "CCD"(charge-coupled device) 카메라 또는 "CMOS" (complementary metal-oxide semiconductor) 카메라이다.
도 1 에 추가로 도시된 바와 같이, 스테레오 오디오 CODEC (150) 이 아날로그 신호 프로세서 (126) 에 커플링될 수도 있다. 더욱이, 오디오 증폭기 (152) 가 스테레오 오디오 CODEC (150) 에 커플링될 수도 있다. 예시적인 양태에서, 제 1 스테레오 스피커 (154) 및 제 2 스테레오 스피커 (156) 가 오디오 증폭기 (152) 에 커플링된다. 도 1 은 마이크로폰 증폭기 (158) 가 또한 스테레오 오디오 CODEC (150) 에 커플링될 수도 있음을 도시한다. 부가적으로, 마이크로폰 (160) 이 마이크로폰 증폭기 (158) 에 커플링될 수도 있다. 특정 양태에서, 주파수 변조 ("FM") 라디오 튜너 (162) 가 스테레오 오디오 코덱 (150) 에 커플링될 수도 있다. 또한, FM 안테나 (164) 가 FM 라디오 튜너 (162) 에 커플링된다. 추가로, 스테레오 헤드폰들 (166) 이 스테레오 오디오 CODEC (150) 에 커플링될 수도 있다.
도 1 은 또한, 라디오 주파수 ("RF") 트랜시버 (168) 가 아날로그 신호 프로세서 (128) 에 커플링될 수도 있음을 나타낸다. RF 스위치 (170) 가 RF 트랜시버 (168) 및 RF 안테나 (172) 에 커플링될 수도 있다. 도 1 에 도시된 바와 같이, 키패드 (174) 가 아날로그 신호 프로세서 (128) 에 커플링될 수도 있다. 또한, 마이크로폰을 갖는 모노 헤드셋 (176) 이 아날로그 신호 프로세서 (128) 에 커플링될 수도 있다. 추가로, 바이브레이터 디바이스 (178) 가 아날로그 신호 프로세서 (128) 에 커플링될 수도 있다. 도 1 은 또한, 파워 서플라이 (188), 예를 들어 배터리가 PMIC (180) 를 통해 SoC (102) 에 커플링됨을 도시한다. 특정 양태에 있어서, 파워 서플라이는, AC 전력 소스에 접속되는 교류 (AC)-DC 변압기로부터 도출되는 DC 파워서플라이 또는 재충전식 DC 배터리를 포함한다.
CPU (110) 는 또한, 하나 이상의 내부의 온-칩 열 센서들 (157A, 157B) 뿐 아니라 하나 이상의 외부의 온-칩 열 센서들 (157C) 에 커플링될 수도 있다. 온-칩 열 센서들 (157A) 은, 수직 PNP 구조에 기초하고 그리고 상보적 금속 산화물 반도체 ("CMOS") 초대규모 집적 ("VLSI") 회로들에 통상적으로 전용된 하나 이상의 "PTAT" (proportional to absolute temperature) 온도 센서들을 포함할 수도 있다. 오프-칩 열 센서들 (157C) 은 하나 이상의 서미스터들 또는 다른 원하는 센서들을 포함할 수도 있다. 열 센서들 (157C) 은 아날로그-디지털 변환기 ("ADC") 제어기 (103) 로 디지털 신호들로 변환되는 전압 강하를 생성할 수도 있다. 하지만, 다양한 유형들의 열 센서들 (157A, 157B, 157C) 이 본 발명의 범위로부터 일탈함없이 채용될 수도 있다.
도 1 에 예시된 실시형태에서, 터치 스크린 디스플레이 (132), 비디오 포트 (138), USB 포트 (142), 카메라 (148), 제 1 스테레오 스피커 (154), 제 2 스테레오 스피커 (156), 마이크로폰 (160), FM 안테나 (164), 스테레오 헤드폰들 (166), RF 스위치 (170), RF 안테나 (172), 키패드 (174), 모노 헤드셋 (176), 바이브레이터 (178), 전력 공급부 (188), PMIC (180), 및 열 센서들 (157C) 은 SoC (102) 외부에 있다.
위에 설명된 바와 같이, 본원에서 설명되는 방법 단계들 중 하나 이상은, 제어기 (114) 및 본원에 설명된 다른 컴포넌트들을 형성하는 메모리 (112) 에 저장된 실행가능 명령들, 코드 및/또는 파라미터들에 의해 구현될 수도 있다. 모니터 모듈 (114) 을 형성하는 명령들은, 본원에 설명된 방법들을 수행하기 위한 ADC 제어기 (103) 에 부가하여, CPU (110), 아날로그 신호 프로세서 (128), 또는 임의의 다른 프로세서에 의해 실행될 수도 있다. 추가로, CPU (110), 아날로그 신호 프로세서 (128), 메모리 (112), 그 안에 저장되는 명령들, 또는 이들의 조합은 본원에서 설명된 방법 단계들 중 하나 이상을 수행하는 수단으로서 기능할 수도 있다.
도 2 는 PCD (100) 에서 구현될 수도 있는 SoC (102) 에서의 예시적 컴포넌트들을 도시하는 블록 다이어그램이다. PCD (100) 는 무선 전화기의 형태로 될 수도 있다. 도 2 는 예시의 목적을 위한 것이며, 예시적 PCD (100) 의 특정 하드웨어 컴포넌트들의 예시적 배열을 도시하며 하드웨어 컴포넌트들은 블록 형태로 묘사되며, 통신 경로, 이를 테면, 상호접속부 또는 버스 (270) 를 통하여 서로 전기적으로 커플링되어 있다.
버스 (270) 는 하나 이상의 유선 또는 무선 접속들을 통하는 다수의 통신 경로들을 포함할 수도 있다. 구현에 따라, 버스 (270) 는 간략화를 위하여 생략된 통신을 가능하게 하는 추가적인 엘리먼트들, 이를 테면, 제어기들, 드라이버들, 리피터들 및 수신기들을 포함할 수도 있다. 또한, 버스 (270) 는 도 2 에 예시된 여러 컴포넌트들 및/또는 SoC (102) 및/또는 PCD (100) 의 추가적인 컴포넌트들 간의 적절한 통신을 가능하게 하는 어드레스, 제어, 및/또는 데이터 접속들을 포함할 수도 있다. 일 실시형태에서, 버스 (270) 는 네트워크 온 칩 (NOC) 버스 (270) 를 포함할 수도 있다.
도 2 에 예시된 바와 같이, SoC (102) 는 CPU_0 (222), CPU_1 (224), CPU_2 (226), 및 CPU_3 (228) (총괄적으로 CPU들 (222-228)) 을 포함하는 다수의 프로세서들 또는 코어들을 포함할 수도 있다. 4 개의 CPU들 (222-228) 이 예시되어 있지만, 다른 실시형태들에서, SoC (102) 는 더 많거나 더 적은 CPU들 (222-228) 을 가질 수도 있고/있거나 CPU들 (222-228) 은 도 2 에 예시된 것과는 상이하게 배열될 수도 있다. 추가로, SoC (102) 는 도 2 에 예시된 것과는 상이한 프로세싱 컴포넌트들에 대한 상이한 아키텍처를 가질 수도 있고, 이를 테면, CPU들 (222-228) 각각이 상이한 사이지들의 2 개의 별개의 프로세싱 컴포넌트들을 포함하는, "크고-적은" 아키텍처를 가질 수도 있다. 본 개시는 모든 이러한 아키텍처 변형들에 동등하게 적용가능하다.
도 2 에 또한 예시된 바와 같이, SoC (102) 는 또한 그래픽 관련된 작업부하들을 프로세싱하거나 실행하기 위한 이를 테면, 사용자 디스플레이 (232) 에 그래픽 정보를 렌더링하는 별도의 GPU (282) 를 포함할 수도 있다. 이와 유사하게, SoC (102) 는 비디오 파일들을 인코딩 또는 디코딩하기 위한 비디오 인코더 (234) 를 포함할 수도 있다. 예시되지 않았지만, SoC (102) 는 또한 오디오 파일들 및/또는 비디오 파일들의 오디오 부분들을 인코딩 또는 디코딩하기 위한 별도의 오디오 인코더를 포함할 수도 있다. SoC (102) 는 또한 도 2 에 카메라 (248) 로서 예시된 하나 이상의 카메라들을 포함할 수도 있다. 이와 유사하게, SoC (102) 는 PCD (100) 와 다른 컴퓨터 디바이스들 및 시스템들 사이의 통신들을 허용하도록 하나 이상의 컴포넌트들을 포함할 수도 있다. 이러한 통신 컴포넌트들은 모뎀 (260) 및/또는 광역 LAN (WLAN)(262) 을 포함할 수도 있다.
SoC (102) 는 또한 위에 나열된 컴포넌트들을 지원하고/하거나 SoC (102) 또는 PCD (100) 에 대한 다른 기능성을 수행하기 위해 하나 이상의 서브시스템들 (240) 을 포함할 것이다. 이해될 바와 같이, 이들 서브시스템들 (단일의 서브시스템 (240) 으로서 편의를 위해 예시됨) 은 SoC (102) 의 위에 식별된 컴포넌트들과는 독립적으로 동작하거나 연계하여 동작하도록 구성된 여러 컴포넌트들 또는 로직을 포함할 수도 있다. 예를 들어, 일 실시형태에서 서브시스템 (240) 은 SoC (102) 에 대한 오디오 데이터를 처리하기 위한 저전력 오디오 서브시스템 (LPASS) 을 포함할 수도 있다. 이와 유사하게, 일 실시형태에서 서브시스템 (240) 은 SoC (102) 에 대한 비디오 데이터, 이를 테면, 비디오 인코더 (234) 에 의해 인코딩될 비디오 데이터 및/또는 GPU (282) 에 의해 렌더링되는 비디오 데이터를 처리하기 위한 비디오 서브시스템을 포함할 수도 있다. SoC (102) 는 여러 실시형태들에서, 예시된 서브시스템 (240) 보다 더 많은 서브시스템들을 포함할 수도 있다.
마지막으로, 도 2 에 예시된 이 실시형태에서, SoC (102) 는 하나 이상의 버퍼들 (250A-250I) 을 포함할 수도 있다. 버퍼들 (250A-250I) 은 각각의 버퍼 (250A-250I) 가 커플링되는 도 2 에 예시된 개별적인 컴포넌트 또는 서브시스템에 의해 판독되기 전에 데이터의 버퍼링을 허용한다. 이해될 바와 같이, 버퍼들 (250A-250I) 은 임의의 원하는 버퍼 또는 메모리 구조 (예를 들어, SRAM 및 DRAM 이외의 임의의 메모리 유형) 로서 이를 테면, 선입선출 (FIFO) 버퍼로서 구현될 수도 있다. 편의를 위하여, 버퍼들은 아래 설명된 예시적 실시형태들에서, FIFO들 (250A-250I) 로서 예시되어 있다. 그러나, 아래의 논의 및 개시는 버퍼링을 위하여 사용된 임의의 저장 또는 메모리 유형의 방법에 동등하게 적용가능하다. 또한 이해될 바와 같이, 도 2 에서의 별개의 FIFO들 (250A-250I) 의 표현은 예시적이다. FIFO들 (250A-250I) 은 다른 실시형태들에서 SoC (102) 의 물리적으로 별개의 버퍼들 또는 컴포넌트들이 아닐 수도 있다. 예를 들어, FIFO들 (250A-250I) 은 컴포넌트들과 별개가 아닐 수도 있지만, 그 대신에, FIFO (250A-250I) 가 버퍼링을 제공하는 컴포넌트의 부분일 수도 있다. 이러한 실시형태들에서, 특정 버퍼, 이를 테면, FIFO (250A) 는 FIFO (250A) 가 버퍼링을 제공하는 컴포넌트 (서브시스템 (240)) 의 부분인 것으로 - 즉, 도 2 에서 서브시스템 (240) 을 표시하는 박스 안에 고려될 수도 있다. 다른 실시형태들에서, FIFO들 (250A-250I) 은 일련의 메모리 레지스터들, 또는 단일 메모리에서의 일련의 어드레스들로서 구현될 수도 있고, 일련의 메모리 레지스터들 또는 어드레스들 각각은 특정 컴포넌트에 대한 FIFO (250A-250I) 로서 동작하도록 지정된다.
추가로, 일부 실시형태에서는 각각의 컴포넌트가 자신의 버퍼를 가질 것이지만, FIFO (250C) 및 FIFO (250D) 에 의해 예시된 바와 같이, SoC (102) 의 하나 이상의 컴포넌트들은 버퍼를 공유할 수도 있다. 이해될 바와 같이, SoC (102) 는 도 2 에 예시된 것보다 더 많거나 더 적은 컴포넌트들 및 서브시스템들을 가질 수도 있고/있거나 컴포넌트들 또는 서브시스템들의 공간적 배열은 도 2 에 도시된 예시의 배열과는 상이하게 배열될 수도 있다.
도 3 으로 돌아가면, 동적 FIFO 버퍼 사이징을 위한 시스템 (300) 의 예시적 실시형태의 양태들을 도시하는 블록 다이어그램이 예시되어 있다. 시스템 (300) 은 도 2 에 예시된 SoC (102) 의 예시적 컴포넌트들 (200) 을 갖는 SoC (102) 상에서 구현될 수도 있다. 추가로, 시스템 (300) 의 SoC (102) 는 도 1 에 예시된 PCD (100) 의 SoC (102) 일 수도 있다. 도 3 에 예시된 바와 같이, SoC (102) 는 다수의 프로세싱 컴포넌트들, 이를 테면, 코어들 (222, 224, 230) 을 갖는 CPU (110) 를 포함히며, 이는 일 실시형태에서 도 2 의 CPU들 (222-228) 에 대응할 수도 있다. CPU (110) 는 도 2 에 대하여 위에 설명된 버스 (270) 와 같이 상호접속부 또는 버스 (270) 와 같은 통신 경로에 전기적으로 커플링된다. SoC (102) 는 또한 버스 (270) 에 전기적으로 커플링된 GPU (282), 모뎀 (260), 및 카메라 (248) 를 포함할 수도 있다.
시스템 (300) 은 버스 (270) 와 통신하는 메모리 제어기 (308) 를 포함하며, 메모리 제어기 (308) 는 시스템 메모리 (112)(도 1) 및 FIFO들 (250A-250I) (도 2) 의 특정 양태들을 포함하는, SoC (102) 에 커플링되거나 그 위에 메모리들을 제어하도록 구성된다. 예시되지 않았지만, 시스템 (300) 은 또한, SoC (102) 의 컴포넌트들에 대한 구성 및 동작 정보를 포함하는 SoC (102) 의 컴포넌트들을 위한 여러 드라이버들을 포함할 수도 있다. 이러한 드라이버들은 특정 드라이버가 적용하는 여러 컴포넌트들과 병치되고/되거나 이들 사이에 분포될 수도 있다.
시스템 (300) 은 또한 버스 (270) 와 통신하는 모니터 모듈 (114) 을 포함한다. 일 실시형태에서, 모니터 모듈 (114) 은 하나 이상의 FIFO (250A-250I)(도 2) 를 언제 리사이징할지를 결정하고/하거나 하나 이상의 FIFO들 (250A-250I) 이 리사이징될 양을 결정하도록 동작할 수도 있다. 도 2 에 SoC (102) 상에 단일 컴포넌트로서 도시되어 있지만, 모니터 모듈 (114) 은 일부 실시형태들에서, 다수의 컴포넌트들을 포함할 수도 있고/있거나 본원에 개시된 모니터 모듈 (114) 의 기능성은 SoC (102) 의 여러 컴포넌트들 간에 분산될 수 있다. 다른 실시형태들에서, 모니터 모듈 (114) 은 도 2 에 예시된 바와 같은 컨포넌트가 전혀 아닐 수도 있고 그 대신에, 모니터 모듈 (114) 은 소프트웨어, 이를 테면, SoC (102) 의 메모리에 저장된 실행가능 명령들, 코드 및/또는 파라미터들로 구현될 수도 있다.
어떻게 구현되는지와 무관하게, 버퍼를 언제 및/또는 어떻게 리사이징하는지에 대한 결정을 행하기 위해, 모니터 모듈 (114) 은 PCD (100) 에 대한 사용 케이스를 결정 또는 이해하기 위해 여러 컴포넌트들로부터 정보를 수신 또는 획득할 수도 있다. 모니터 모듈 (114) 은 이와 유사하게, 하나 이상의 버퍼들의 리사이징을 정당화하는 제 1 사용 케이스로부터 제 2 사용 케이스로의 변경을 결정 또는 이해하기 위해 여러 컴포넌트들로부터 정보를 수신 또는 획득할 수도 있다. 일 실시형태에서, 사용 케이스는 PCD (100) 가 어떻게 사용되는지를 카테고리화하는 방식 또는 방법이다. 사용 케이스는그 사용 케이스 동안 PCD (100) 또는 SoC (102) 의 여러 컴포넌트들의 활동 레벨 또는 예상되는 활동 레벨에 대한 정보를 제공한다 (또는 활동 레벨에 의해 정의될 수도 있다).
예시의 사용 케이스들은 게이밍, 비디오 플레이백, 통신 (이를 테면, 텍스팅 또는 전화 통화), 계산적 활동, 카메라 (이를 테면, 사진 찍는 것); 비디오 획득 (이는 별도의 사용 케이스 또는 카메라 사용 케이스의 서브세트일 수 있음); 음악 (이는 PCD (100) 에 세이브되는 음악 파일들을 플레이하는 것 및/또는 PCD (100) 로 음악을 스트리밍하는 것을 포함할 수 있음); 인터넷 브라우징; PCD (100) 의 백업; 스타트업(이를 테면, PCD (100) 가 턴오프된 후 파워업될 때); 디폴트 (이는 다른 사용 케이스들이 적용되지 않을 때 디폴트 사용 케이스일 수 있다); 또는 다른 사용 케이스들을 포함할 수도 있다. 추가로, 일부 실시형태들에서, 새로운 사용 케이스들은 PCD (100) 가 소정 기간에 걸쳐 어떻게 사용되는지에 기초하여 정의 또는 생성될 수도 있다. 이러한 실시형태들에서, 새로운 사용 케이스(들)은 모니터 모듈 (114) 에 의해 정의 또는 생성될 수도 있다.
어떤 사용 케이스가 특정 시간에 PCD (100) 에 적용되는지를 결정하는 것은 PCD (100) 에 의해 실행되는 또는 PCD (100) 에 의해 막 실행되려고 하는 애플리케이션들 또는 프로그램들에 대한 정보 또는 이들의 지식에 기초할 수 있다. 이 지식 또는 정보는 다이렉트일 수 있거나 (애플리케이션들, 명령들, 또는 코드가 SoC (102) 상에서 실행되는 소프트웨어 이해) 또는 추론될 수도 있다 (이를 테면 사용자 입력에 기초하는 것). 일부 구현들에서, 어떤 사용 케이스가 특정 시간에 PCD (100) 에 적용되는지를 결정하는 것은 추가로, 또는 그 대신에 PCD (100) 에 대한 현재 상태 정보, 이를 테면 PCD (100) 또는 SoC (102) 에서의 하나 이상의 컴포넌트들 (이를 테면 GPU (282), 카메라 (248), 모뎀 (260), 비디오 인코더 (232) 등) 의 활동 레벨에 기초할 수도 있다. 또 다른 구현들에서, 특정 시간에 PCD (100) 에 적용되는 사용 케이스는 특정 트리거링 이벤트, 이를 테면, PCD (100) 또는 SoC (102) 를 파워 오프 상태로 재시작하는 것에 기초하여 할 수도 있다.
어떻게 결정되고 이해되는지와 무관하게, 각각의 사용 케이스는 SoC (102) 및/또는 PCD (100) 의 하나 이상의 컴포넌트들에 대한 기대 또는 예상되는 활동도 레벨과 연관될 것이다. 예를 들어, "카메라"사용 케이스는 카메라 및/또는 카메라 애플리케이션이 PCD (100) 의 사용자에 의해 활성화되는 경우일 수 있다. 이러한 사용 케이스에 대해, 카메라 (이를 테면, 도 2 및 도 3 의 카메라 (248)) 및 디스플레이 (이를 테면, 도 2 의 디스플레이 (232)) 및 임의의 지원 서브시스템들이 활성일 것임을 예상할 수도 있다. "카메라"사용 케이스에 대해, 모뎀 (260), GPU (282), 비디오 인코더 (234), 뿐만 아니라 SoC (102)(도 2) 의 다른 컴포넌트들이 활성이 아니거나 또는 다른 사용 케이스에서 거의 활성이 아닐 것임을 또한 예상할 수도 있다.
다른 예를 들어, "통신" 사용 케이스는 모뎀 및/또는 모뎀을 사용한 통신 애플리케이션이 PCD (100) 에 의해 활성화되었던 경우일 수도 있다. 도 4a 는 도 2 의 블록 다이어그램이며, 동적 FIFO 버퍼 사이징을 위한 시스템 및 방법의 동작의 일 예가 예시적 "통신"사용 케이스에 대하여 예시된다. 이러한 사용 케이스에 대해, 모뎀 (260) 및 임의의 지원 서브시스템들은 도 4a 의 음영 영역에 의해 표현된 바와 같이 활성일 것임을 예상할 수 있다. 모뎀 (260) (FIFO (250H)) 과 같이 이러한 활성 컴포넌트들에 대한 버퍼는 예상되는 활동 레벨 - 즉, 비교적 더 큰 버퍼 심도를 수용하도록 사이징될 것이다.
이와 대조적으로, SoC (102) 의 나머지 컴포넌트들 (음영표시된 부분이 아님) 은 활성이 아닐 수도 있거나 "통신" 사용 케이스에 대해 거의 활성이 아닐 것임을 예상할 수 있다. 카메라 (248) (FIFO (250G)) 및 GPU (282) (FIFO (250F)) 와 같이 이러한 비활성 컴포넌트들에 대한 버퍼들은 기대되는 비활성도 - 즉, 더 작은 버퍼 심도들을 수용하도록 사이징될 것이다. 따라서, 이 사용 케이스에 대하여 거의 활성이 아닌 것으로 예상되는 컴포넌트들에 대해, 이들 컴포넌트들에 커플링된 버퍼들의 사이즈 또는 심도는 감소될 수 있어, PCD 의 성능에 영향을 줌이 없이 누설 전력을 감소 또는 방지할 수도 있다.
"통신" 사용 케이스에 대해 통신 유형에 의존하여 모뎀 (260) 의 풀 대역폭이 사용되지 않을 수도 있음을 주지해야 한다. 모뎀 (260) 의 풀 대역폭이 사용되지 않지만, 모뎀 (260) 은 서비스 품질 목적, 레이턴시를 방지하기 한 목적 등으로 다른 컴포넌트들 (예를 들어, 도 4a 에 예시되지 않은 메모리 제어기) 에 동기될 수도 있다. 즉, 모뎀 (260) 이 이 대역폭 모두를 사용하는 경우에도 모뎀 (260) 은 더 높은 주파수에서 동작하도록 강제될 수도 있다.
이러한 사용 케이스들에서, 모뎀 (260) 의 전압 또는 주파수를 제어하는 통상의 전력 소모 기술은 모뎀 (260) 이 다른 컴포넌트들과 동기하고/하거나 다른 컴포넌트들과 전력 레일을 공유하기 때문에 효과적이지 않을 것이다. 그 이벤트에서, FIFO (250H) 는 비교적 크게 사이징될 수도 있지만, 풀 사이즈 또는 심도 보다 훨씬 더 적을 수도 있다 (예를 들어, 25% 로 감소됨). FIFO (250H) 의 이러한 동적 사이징은 이것이 모뎀 (260) 의 예상되는 활동 레벨을 수용하면서 여전히 전력 절감을 제공하도록 허용한다. 이 방식으로, FIFO (250H) 의 동작 사이징은 SoC (102) 또는 PCD (100) 의 성능에 영향을 줌이 없이 전력 절감을 제공할 수 있고 여기서 통상의 전압/주파수 기반 전력 감소 방법들은 비적용가능하거나 또는 비효율적일 수도 있다.
또 다른 예는 사용자가 PCD (100) 상의 게이밍 애플리케이션을 실행하는 "게이밍" 사용 케이스이다. 도 4b 는 도 2 의 블록 다이어그램이며, 동적 FIFO 버퍼 사이징을 위한 시스템 및 방법의 동작의 일 예가 예시적 "게이밍"사용 케이스에 대하여 예시된다. 이러한 사용 케이스에 대해, 모뎀 (282) 및 임의의 디스플레이 (232) 는 도 2c 의 음영 영역에 의해 반영된 바와 같이 가장 활성일 것임을 예상할 수 있다. 모뎀 (282) (FIFO (250E)) 및 디스플레이 (232) (FIFO (250F)) 와 같이 이러한 활성 컴포넌트들에 대한 버퍼는 예상되는 활동 레벨 - 즉, 비교적 더 큰 버퍼 심도를 수용하도록 사이징될 것이다.
이러한"게이밍" 사용 케이스에 대해 메모리 제어기 (308), CPU (222-228), 모뎀 (260), 및 비디오 인코더 (234) 는 적절하게 활성 상태로 될 것임을 예상할 수 있다. 이들 활성 컴포넌트들에 대한 버퍼들 (FIFO (250C, 250D, 250H)) 은 예상되는 적절한 활동 레벨 - 즉, 활성 컴포넌트에 비해 더 큰 버퍼 심도에서 수용하도록 사이징될 것이다. 마지막으로, "게이밍" 사용 케이스 에서, 카메라 (248) 가 비활성될 것임을 예상할 수 있다. 이러한 비활성 컴포넌트들에 대한 버퍼들 (FIFO (250G)) 은 예상되는 비활동도 - 즉, 적절한 그리고 활성 컴포넌트에 비해 더 작은 버퍼 심도에서 수용하도록 사이징될 것이다. FIFO들 (250C, 205F, 250H, 및/또는 250G H) 의 이러하 동적 사이징 - 및 특히 SoC (102) 의 비활성 또는 덜 활성인 컴포넌트들에 대한 버퍼 사이즈 또는 심도의 감소- 은 PCD (100) 또는 SoC (102) 의 성능에 영향을 줌이 없이 누설 전력의 감소 또는 방지를 허용한다.
도 4b 의 이 "게이밍" 사용 케이스 예에 의해 예시된 바와 같이, SoC (102) 의 여러 컴포넌트들의 활동 레벨은 활성/비활성으로서 반드시 카테고리되는 것은 아니다. 그 대신에, 하나 이상의 사용 케이스들에 대한 활동 레벨들은 상대적이거나 또는 변경될 수 있고 다수의 레벨들 또는 활동도 정도는 컴포넌트에 의존한다. 이 "게이밍" 사용 케이스 예에서, 덜 활성이거나 비활성인 컴포넌트들은 또한 통상의 전력 제어 또는 절감 방법의 부분으로서 이들의 전압 및/또는 주파수가 감소될 수 있게 한다. 이 "게이밍" 사용 케이스 예에서 버퍼들의 동적 사이징은 통상의 전압/주파수 기반 전력 감소 방법들로부터 사용가능한 전력 절감/전력 감소를 넘어서 추가적인 전력 절감/전력 감소를 제공한다.
컴포넌트들의 활동도의 상대적 또는 변경된 정보를 갖는 구현들 또는 사용 케이스들에 대해, 상태 또는 활동 레벨 및/또는 버퍼 사이즈에 대한 정보 또는 데이터는 모니터 모듈 (114) 또는 모니터 모듈 (114) 또는 SoC (102) 의 일부 다른 컴포넌트에 액세스되는 메모리에 저장 또는 포함될 수도 있다. 일 실시형태에서 이러한 정보는 도 5a 의 상태 테이블 (500A) 과 같은 테이블에 저장될 수도 있다. 상태 테이블 (500A) 은 레벨들 또는 상태들, 이를 테면 각각의 사용자에 케이스에 대해 SoC (102) 의 각각의 컴포넌트에 대해 예상되는 활동 레벨 또는 상태를 표현하는 F0, F1, F2, F3 등을 포함할 수도 있다. 상태 테이블 (500A) 은 예시적이며 여러 실시형태들에서, 더 많은 또는 더 적은 사용 케이스들, 더 많은 또는 더 적은 컴포넌트들, 및/또는 더 많은 또는 더 적은 활동 레벨들/상태들을 포함할 수도 있다.
일부 실시형태들에서 상태 테이블 (500A) 은 고정될 수도 있지만 다른 실시형태들에서 모니터 모듈 (114) 또는 다른 컴포넌트는 상태 테이블 (500A) 을 변경하는 능력이 활동 레벨 값들 중 하나 이상을 변경, 사용 케이스들을 추가 또는 삭제, 컴포넌트들을 추가 또는 삭제하는 것을 가능하게 한다. 추가로, 도 5a 에 예시된 상태 테이블 (500A) 보다는, 상태 테이블 (500A) 에서의 정보는 대신에 다수의 상이한 테이블들, 이를 테면, SoC (102) 의 각각의 컴포넌트에 대한 개별적인 상태 테이블 (도시 생략) 에 분포될 수 있다. 상태 테이블 (500A) 은 룩업 테이블일 수도 있다. 상태 테이블 (500A) 은 일 실시형태에서, 모니터 모듈 (114) 에 저장 또는 포함될 수도 있거나 또는 메모리에 저장되거나 이를 테면, 모니터 모듈 (114) 이 소프트웨어로 구현될 때 모니터 모듈 (114) 에 의해 액세스될 수 있다.
사용 케이스에 대한 정보에 더하여 또는 정보 대신에, 모니터 모듈 (114) 은 버퍼(들)이 리사이징될 필요가 있음을 표시할 수 있거나 또는 하나 이상의 버퍼(들)을 리사이징한다는 결정시 사용될 수 있는 버퍼 자체들 (이를 테면, 도 2 의 FIFO들 (250A-250I)) 로부터 정보를 수신 또는 획득할 수도 있다. 예를 들어, FIFO (250A-250I) 가 데이터를 충전하기 시작했을 때 또는 임계 레벨 위로 데이터를 획득할 때, FIFO (250A-250I) 는 이것이 공간을 다 소모함을 표시하는 신호를 전송할 수도 있고 그 신호는 모니터 모듈 (114) 에 의해 수신될 수도 있다.
도 3 으로 돌아가면, 사용 케이스를 결정 또는 이해하는 부분으로서, 또는 사용 케이스가 이해된 후 별도의 결정의 부분으로서, 모니터 모듈 (114) 은 하나 이상의 버퍼들을 리사이징하는 양을 결정하기 위한 정보를 포함 또는 수신 또는 획득할 수 있다. 예를 들어, 특정 사용 케이스에 대해, 컴포넌트의 활동 레벨 또는 예상되는 활동 레벨 또는 "상태"에 의존하여, 모니터 모듈 (114) 은 그 컴포넌트에 대한 버퍼를 리사이징하는 양을 결정할 수도 있다.
일 실시형태에서, 이러한 결정은 바이너리일 수 있으며 - 즉, 컴포넌트가 "활성" 이면 버퍼를 심도 "A"로 사이징하고 그리고 컴포넌트가 "비활성"이면, 버퍼를 심도 "B"로 사이징한다. 이 실시형태의 일부 구현들에서, 심도들 "A" 및 "B"은 SoC (102) 의 각각의 컴포넌트에 대한 고정된 값일 수 있고 - 즉, 모든 활성 컴포넌트는 자신의 버퍼를 심도 "A" 로 리사이징하고, 모든 비활성 컴포넌트는 자신의 버퍼를 심도"B" 로 리사이징하고, 여기서 "A" 및 "B" 의 값들은 모든 컴포넌트들에 대하여 동일하다. 이러한 구현들에서, "B"의 값은 "A"의 분수값, 이를 테면, 심도"A"의 50% 이다. 이 실시형태의 다른 구현들에서, "A" 및 "B"의 값들은 컴포넌트마다 변할 수 있다.
상이한 실시형태에서, 버퍼를 리사이징하는 양의 결정은 바이너리가 아닐 수도 있다 - 즉, 버퍼가 리사이징되는 양은 컴포넌트의 상대 활동 레벨에 의존할 수도 있다. 이러한 실시형태들에서, 버퍼 사이즈에 대한 활동 레벨의 관계는 테이블, 이를 테면, 도 5b 의 룩업 테이블 (LUT)(500B) 에 저장될 수도 있다. 도 5b 의 예시적 LUT (500) 에 예시된 바와 같이 특정 사용 케이스에 대한 컴포넌트의 각각의 활동 레벨 또는 상태는 버퍼 사이즈에서의 상이한 감소 (이를 테면, 도 2 의 FIFO들 (250A-250I) 중 하나 에서의 감소) 로 이어진다.
일부 실시형태들에서 SoC (102) 의 컴포넌트들의 모두에 대한 버퍼 사이즈 정보는 LUT (500B) 와 같은 단일 테이블에 의해 관리될 수도 있다. 다른 실시형태들에서, SoC (102) 의 각각의 컴포넌트는 개별적인 LUT (500B) 를 가질 수도 있고, 버퍼 사이즈 감소 값들은 각각의 컴포넌트에 대해 변경될 수 있다. 예를 들어, 카메라 (248) 에 대한 상태 (F1) 는 버퍼 사이즈에서 50% 감소로 이어질 수 있는 한편, GPU (282) 에 대한 상태 (F1) 는 LUT (500B) 에 예시된 바와 같이 25% 감소로 이어질 수 있다. LUT (500B) 는 모니터 모듈 (114) 에 저장될 수도 있거나, 또는 이를 테면, 모니터 모듈 (114) 이 소프트웨어로 구현될 때 모니터 모듈 (114) 에 의해 액세스되고 메모리에 저장될 수도 있다. 일부 실시형태들에서 LUT (500B) 는 고정될 수도 있는 반면, 다른 실시형태들에서 모니터 모듈 (114) 또는 다른 컴포넌트가 활동 레벨들을 추가 또는 삭제하고, 하나 이상의 활동 레벨에 대한 버퍼 사이즈 감소 값들을 변경하는 등의 LUT (500B) 를 수정하는 능력을 가질 수도 있다.
도 6 으로 돌아가면, 블록 다이어그램은 다른 "게이밍" 사용 케이스에 대한 동적 FIFO 버퍼 사이징에 대한 시스템 및 방법의 동작 동안의 SoC (102) 의 예시적 컴포넌트들을 예시한다. 도 6 의 "게이밍" 사용 케이스에 대해, 메모리 제어기 (308), GPU (282), 및 CPU (222) 가 도 6 의 음영 표시되는 영역에 의해 반영되는 바와 같이 가장 활성 컴포넌트들일 것임을 예상할 것이다. 이들 활성 컴포넌트들에 대한 버퍼들 ((GPU (282) 에 대한) FIFO (250E), (CPU (222) 에 대한 FIFO (250D)) 및 (메모리 제어기 (308) 에 대한) FIFO (250J)) 은 예상되는 활동 레벨 - 즉, 비교적 큰 버퍼 심도를 수용하도록 사이징될 것이다. 이는 활동 레벨 (F0) 에 대하여 FIFO (250D, 250E, 및 250J) 가 사이징될 것이라는 표시로 도 6 에 반영된다. 도 5b 의 LUT (500B) 에 표시된 바와 같이, 이 예에 대한 활동 레벨 (F0) 은 0% 의 버퍼 감소 사이즈 - 즉 풀/최대 사이징된 버퍼에 대응한다.
이 "게이밍" 사용 케이스 예에 대해, 메모리 제어기 (308) 는 다음 최대 활성 컴포넌트일 것임을 예상한다. 모뎀에 대한 버퍼 (FIFO (250H)) 는 FIFO (250H) 가 활동 레벨 (F1) 에 대해 사이징되는 표시를 갖는 도 6 에서 반영된 이 예상된 활동 레벨을 수용하도록 사이징된다. 도 5b 의 LUT (500B) 에서 표시된 바와 같이, 이 예에 대한 활동 레벨 (F1) 은 25% 의 버퍼 감소 사이즈 - 즉 미소하게 감소된 버퍼 사이즈에 대응한다.
이와 유사하게, 카메라 (248) 는 이 "게이밍" 사용 케이스에 대하여 훨씬 덜 활성일 것이며 도 6 에서의 카메라 (248) 에 대한 FIFO (250G) 가 활동 레벨 (F2) 에 대해 사이징될 것이다. 이 예에 대한 활동 레벨 (F2) 은 즉 50% 의 버퍼 감소 사이즈 - 즉, 상태 F0 또는 F1 보다 더 작은 버퍼 심도에 대응한다. CPU (222-228), 모뎀 (260), 및 비디오 인코더 (234) 는 적절하게 활성일 것이다. 마지막으로, 비디오 인코더 (234) 는 이 예시적 사용 케이스에서 적어도 활성 컴포넌트일 것이고 비디오 인코더 (234) 에 대한 FIFO (250B) 는 버퍼 사이즈 또는 심도에서 75% 감소에 대응하는 활동 레벨 (F3) 에 대해 사이징됨을 예상한다.
따라서, 이 사용 케이스에 대하여 거의 활성이 아닌 것으로 예상되는 컴포넌트들에 대해, 이들 컴포넌트들에 커플링된 버퍼들의 사이즈 또는 심도는 감소될 수 있어, PCD 의 성능에 영향을 줌이 없이 누설 전력을 감소 또는 방지할 수도 있다. 또한 이 추가적인 "게이밍" 사용 케이스 예에서의 버퍼들의 동적 사이징은 SoC (102) 의 비활성 컴포넌트들에 적용되는 통상적인 전압/주파수 기반 전력 감소 방법으로부터 이용가능할 수도 있는 전력 절감/전력 감소들을 너머, 추가적인 전력 절감/전력 감소를 제공한다.
도 6 은 버퍼들이 사용 케이스에 기초하여 어떻게 동적으로 변경될 수 있는지 또는 사용 케이스에서의 변경을 예시의 예를 제공한다. 이해될 바와 같이, 상이한 사용 케이스들은 도 6 에서 표시된 것과는 상이하게 사이징되는 버퍼들로 이어진다. 추가로, 일부 실시형태들에서, 2 개의 상이한 컴포넌트들의 버퍼들에 대한 동일한 상태 또는 활동 레벨의 지정 (이를 테면, 메모리 제어기 (3078) 의 FIFO (250J) 에 대해 그리고 GPU (282) 에 대한 FIFO (250E) 에 대해 F0) 은 버퍼들이 동일하게 사이징됨을 표시하지 않을 수도 있다. 즉, 메모리 제어기 (308) 버퍼 (FIFO (250J)) 에 대한 상태 (F0) 는 하나의 버퍼 사이즈 또는 심도에 대응할 수도 있는 한편 GPU (282) 의 퍼버 (FIFO (250E)) 에 대한 상태 (F0) 는 상이한 사이즈 또는 심도에 대응할 수도 있다.
도 7a 로 돌아가면, 제 1 사이즈 또는 심도를 갖는 예시적 FIFO (700A) 의 양태들의 블록 다이어그램이 예시되어 있다. FIFO (700A) 는 위에 논의된 FIFO들 (250A-250J) 과 같은 버퍼일 수 있다. 도 7a 의 예에서, FIFO (700A) 는 가장 풀한 상태/최대 사이즈 또는 버퍼 심도에 있고 (본원에 부분들 (702A-702F) 로서 참조된) 복수의 레지스터들 또는 메모리 어드레스들로 구성된다. 도 7a 에 예시된 바와 같이, FIFO (700A) 는 데이터가 버퍼링을 위하여 위치될 수 있는 기록 측 (704), 및 FIFO (770A) 에 커플링되는 컴포넌트가 버퍼링되는 데이터를 판독할 수도 있는 리어 측 (706) 을 갖는다. 추가로, "중간" FIFO (770A) 를 반영하는 중간점 (708) 이 존재하며 - 즉, 중간점 (708) 의 일 측 상에 있는 부분들 (702A-702C) 의 수는 중간점 (708) 의 다른 측 상에 있는 부분들 (702D-702F) 의 수와 동일하다.
도 7b 는 제 2 사이즈 또는 심도로 감소된 후의 도 7b 의 FIFO (700A) 를 예시한다 (FIFO (700B)). 도 7b 에 표시된 바와 같이, 본원에 개시된 시스템들 및 방법들에 따라 버퍼의 심도 또는 사이즈를 감소하기 위한 일 메카니즘은 기록 포인터 (710) 및 판독 포인터 (712) 양쪽이 중간점 (708) 의 동일한 측 상에 있을 때까지 대기한 다음, 중간점 (708) 의 다른 측 상에 하나 이상의 부분들 (702D-702E) 을 턴 오프 또는 파워 게이팅하는 것이다.
도 7b 의 예에서, 버퍼 사이즈 또는 심도에서의 50% 감소는 기록 포인터 (710) 및 판독 포인터 (712) 가 중간점 (708) 의 좌측 또는 리어 측 (706) 상에 있을 때까지 대기하는 것에 의해 실현된다. 단일 전력 스위치는 부분들 (702D-702F) 에 대한 빗금표시에 의해 표시된 바와 같이 부분들 (702D-702F)(즉, FIFO (700B) 의 우측 절반) 을 턴오프하여 FIFO (770B) 를 도 7a 의 FIFO (770A) 의 사이즈 또는 심도의 1/2 로 감소시키도록 동작될 수도 있다. 이해될 바와 같이, 원하는 버퍼 사이즈 또는 심도 에서의 임의의 감소 (예를 들어, 25%, 50%, 75%, 85%, 등) 를 실현하기 위해 유사한 메카니즘이 사용될 수 있다. 또한 이해될 바와 같이 이후 시점에 FIFO (770B) 는 전력 스위치가 부분들 (702D-702F) 상으로 되돌아가도록 동작하는 것에 의해 더 큰 사이즈로 리턴될 수 있다.
다른 구현들에서, 동일한 FIFO (700B) 는 또한 추가적인 전력 스위치들 또는 전력 게이트들의 구현에 의해 가변 사이즈들 또는 심도들로 또한 감소될 수도 있다. 예를 들어, 제 1 부분 (702F) 을 턴오프하는 제 1 전력 스위치는 FIFO (700B) 에 대한 25% 의 버퍼 사이즈 또는 심도에서의 감소로 이어질 수도 있다. 제 2 부분 (702E) 을 또한 턴오프하는 제 2 전력 스위치는 FIFO (700B) 에 대한 50% 의 버퍼 사이즈 또는 심도에서의 감소로 이어질 수도 있다. 이후 시점에서 FIFO (770B) 는 FIFO (770B) 를 원하는 사이즈 또는 심도로 확대하기 위해 전력 스위치(들) 이 부분들 (702D-702F) 중 하나 이상으로 되돌아가도록 동작하는 것에 의해 더 큰 사이즈로 되돌아갈 수도 있다.
일부 실시형태들에서 특정 FIFO (700B) 의 버퍼 사이즈 또는 심도에서 가변 감소들을 허용하기 위해 다수위 전력 스위치들을 제공하는 것이 바람직할 수도 있다. 다른 실시형태들에서, 특정 FIFO (700B) 의 버퍼 사이즈 또는 심도를 가변적으로 제어하는데 필요한 각각의 전력 스위치 및/또는 제어 회로부의 추가적인 비용들, 전력 등이 허용되지 않을 수도 있다. 이러한 실시형태들에서, 단일 감소 사이즈 (이를 테면, 예를 들어 50% 만큼의 감소) 를 허용하는 단일 전력 스위치가 더 바람직할 수도 있다. 버퍼 사이즈 또는 심도의 이러한 가변 제어가 바람직한지의 여부는 버퍼가 사용될 SoC (102) 의 컴포넌트, 특정 버퍼의 사이즈를 감소시키는 예상 전력 절감들 등을 포함하는 여러 팩터들에 의존할 수 있다. 도 7a 및 도 7b 는 동적으로 사이즈를 조정하기 위한 하나의 메카니즘을 예시한다.
도 8 은 컴퓨팅 디바이스에서 버퍼 사이즈를 동적으로 제어하는 예시적 방법 (800) 의 동작을 예시하는 논리적 플로우차트이다. 방법 (800) 은 PCD (100) 와 같은 컴퓨팅 디바이스에 대한 제 1 사용자 케이스의 결정을 갖는 블록 (802) 에서 시작한다. 제 1 사용 케이스는 복수의 사용 케이스들 중 하나일 수 있다. 복수의 사용 케이스들은 미리 정의 및 설정될 수도 있고 일부 실시형태들에서, 다른 실시형태들에서 복수의 사용 케이스들은 시간에 따라 변경 또는 수정될 수도 있다. 블록 (802) 의 결정은 PCD (100) 가 어떻게 현재 동작되고 있는지에 대해 적용되는 특정 사용 케이스의 식별일 수 있다. 일부 실시형태들에서, 블록 (802) 이 결정은 PCD (100) 의 현재 동작이 다른 미리 정의된 사용 케이스들에 맞지 않는 이벤트에서 디폴트 사용 케이스로 이루어질 수 있다.
블록 (802) 에서의 제 1 사용 케이스의 결정은 일 실시형태에서 모니터 모듈 (114) 에 의해 행해질 수도 있고 (도 3 참조), 그리고 모니터 모듈 (114) 는 이러한 실시형태들에서 PCD (100) 가 현재 어떻게 사용되고 있는지에 대해 어느 사용 케이스가 적용되는지를 결정 또는 이해하기 위해 여러 컴포넌트들로부터 정보를 수신 또는 획득할 수도 있다. 이러한 수신된 정보는 PCD (100) 또는 SoC (102) 에서 하나 이상의 컴포넌트들 (이를 테면, 도 2 및/또는 도 3 의 GPU (282), 카메라 (248), 모뎀 (260), 비디오 인코더 (232) 등) 의 현재 활동 레벨을 포함할 수도 있다.
블록 (802) 에서의 결정은 추가로, 또는 대안적으로 PCD (100) 에 의해 실행되고 있거나 PCD (100) 에 의해 막 실행하려 하는 애플리케이션들 또는 프로그램들에 대한 정보 또는 지식에 기초할 수도 있다. 이러한 지식 또는 정보는 다이렉트일 수 있거나 (애플리케이션들, 명령들, 또는 코드가 SoC (102) 상에서 실행되는 소프트웨어 이해) 또는 추론될 수도 있다 (이를 테면 사용자 입력에 기초하는 것). 블록 (802) 에서의 결정은 또한 추가로, 또는 대안적으로 트리거링 이벤트, 이를 테면, 파워 오프된 상태로부터 PCD (100) 또는 SoC (102) 를 재시작하는 것에 기초할 수도 있다.
방법 (800) 은 제 1 사용 케이스에 대한 버퍼 사이즈 또는 심도 정보가 획득되는 블록 (804) 으로 진행된다. 버퍼(들)은 도 4a 및 도 4b 및 도 6 에 대하여 위에 논의된 FIFO들 (250A-250J) 일 수도 있다. 블록 (802) 에서 결정된 사용 케이스에 의존하여, SoC (102) 의 여러 컴포넌트들은 더 활성이거나 덜 활성인 것으로 예상될 수도 있다. 블록 (804) 에서, SoC (102) 의 여러 컴포넌트들과 연관된 각각의 FIFO (250A-250J) 에 대한 버퍼 사이즈 또는 심도에 대한 값들은 제 1 사용 케이스에 대하여 획득 또는 결정된다.
일부 실시형태들에서, 블록 (804) 에서 버퍼 사이즈 정보를 획득하는 것은 하나 이상의 테이블들로부터 버퍼 사이즈 정보를 판독할 수도 있다. 예를 들어, 하나 이상의 컴포넌트들에 대한 예상되는 상태 또는 활동 레벨은 도 5a 의 상태 테이블 (500A) 과 같은 테이블로부터 결정된 사용 케이스에 대해 획득될 수도 있다. 위에 논의된 바와 같이 단일 테이블 (500A) 보다는, 상이한 상태 테이블 (도시 생략) 은 일부 구현들에서 SoC (102) 의 각각의 컴포넌트에 대해 유지될 수도 있다. 추가로, 또는 대안적으로, 하나 이상의 버퍼들 (각각의 컴포넌트는 일 실시형태에서 컴포넌트와 연관됨) 에 대한 사이즈 감소 값은 도 5b 의 LUT (500B) 와 같은 테이블로부터 획득될 수 있다. 이해될 바와 같이, 테이블 보다, 제 1 사용 케이스에 대한 버퍼 사이즈 또는 심도 정보를 획득하는 다른 방법은 구현될 수도 있다. 추가로, 일부 실시형태들에서, 블록 (804) 은 별도의 단계가 아닐 수도 있고 대신에 결정 블록 (802) 의 부분일 수도 있다.
방법 (800) 은 블록 (806) 으로 진행하며, 여기서, 결정된 제 1 사용 케이스 및 획득된 버퍼 사이즈 정보에 기초하여, 제 1 버퍼 사이즈는 컴퓨팅 디바이스의 하나 이상의 컴포넌트들과 연관된 버퍼(들)에 대하여 설정된다. 버퍼(들)은 도 4a 및 도 4b 및 도 6 에 대하여 위에 논의된 FIFO들 (250A-250J) 일 수도 있다. 블록 (802) 에서 결정된 사용 케이스에 의존하여, SoC (102) 의 여러 컴포넌트들은 더 활성이거나 덜 활성인 것으로 예상될 수도 있다. 블록 (806) 에서, SoC (102) 의 여러 컴포넌트들과 연관된 각각의 FIFO (250A-250J) 에 대한 버퍼 사이즈 또는 심도는 결정된 사용 케이스 및 획득된 버퍼 사이즈 정보에 따라 필요에 따라 조정된다.
일 실시형태에서, 이는 덜 활성이거나 또는 비활성인 것으로 예상되는 컴포넌트들의 버퍼 사이즈 또는 심도를 감소시키는 것 및/또는 더 활성인 것으로 예상되는 컴포넌트들의 버퍼 사이즈 또는 심도를 증가시키는 것을 포함할 수 있다. 위에 논의된 바와 같이, 버퍼 사이즈 또는 심도 증가 또는 감소의 양은 컴포넌트에 의해 및/또는 사용 케이스에 의해 변경될 수 있다. 버퍼 사이즈 조정은 임의의 원하는 메카니즘, 이를 테면, 위의 도 7a 및 도 7b 에 대하여 논의된 메카니즘에 의해 실현될 수도 있다. 추가로, 이러한 버퍼 사이즈 조정은 PCD (100) 또는 SoC (102) 가 구현하고 있는 임의의 다른 전력 완화 또는 제어 전략에 더하여 또는 전략을 대신하여 실현될 수도 있다.
블록 (808) 에서, 제 1 사용 케이스와는 상이한 제 2 사용 케이스가 컴퓨팅 디바이스에 대하여 결정된다. 이 결정 블록 (808) 은 블록 (802) 에 대하여 위에 논의된 결정과 동일한 방식으로, PCD (100) 의 컴포넌트들에서의 조건들을 변경하는 것 및/또는 PCD (100) 가 어떻게 사용되는지에서의 변경에 응답하여 행해질 수도 있다. 예를 들어, PCD (100) 는 이를 테면, 사용자가 PCD (100) 상에서 게임을 플레이하는 것을 정지하고 PCD (100) 상에서 전화 통화를 행하거나 수신할 때 "게이밍" 사용 케이스로부터 "통신" 사용 케이스로 변경될 수 있다. 블록 (808) 에서, 사용 케이스에서의 이 변경 및/또는 PCD (100) 의 변경 동작은 이를 테면 모니터 모듈 (114) 에 의해 검출 또는 결정된다. 위에 논의된 바와 같이, 모니터 모듈 (114) 은 소프트웨어로 구현될 수 있다.
블록 (808) 에서의 결정은 PCD (100) 사용/상태가 변경되었음을 결정 또는 이해하기 위해 그리고 PCD (100) 가 현재 어떻게 사용되는지에 어느 사용 케이스가 적용되는지를 결정하기 위해 여러 컴포넌트들로부터의 정보에 기초하여 행해질 수도 있다. 이러한 수신된 정보는 PCD (100) 또는 SoC (102) 에서 하나 이상의 컴포넌트들 (이를 테면, 도 2 및/또는 도 3 의 GPU (282), 카메라 (248), 모뎀 (260), 비디오 인코더 (232) 등) 의 현재 활동 레벨을 포함할 수도 있다. 블록 (808) 에서의 결정은 추가로, 또는 대안적으로 PCD (100) 에 의해 실행되고 있고, PCD (100) 상에서 실행하는 것을 정지하는 것, 및/또는 PCD (100) 에 의해 막 실행하려 하는 애플리케이션들 또는 프로그램들에 대한 정보 또는 지식에 기초할 수도 있다. 이러한 지식 또는 정보는 다이렉트일 수 있거나 (애플리케이션들, 명령들, 또는 코드가 SoC (102) 상에서 실행되는 소프트웨어 이해) 또는 추론될 수도 있다 (이를 테면 사용자 입력에 기초하는 것).
블록 (808) 에서의 결정은 또한 추가로, 또는 대안적으로 트리거링 이벤트, 이를 테면, 이전 파워 오프된 상태로부터 PCD (100) 또는 SoC (102) 를 재시작하는 것에 기초할 수도 있다. 위의 블록 (802) 과 유사하게, 결정 블록 (808) 은 사용 케이스 어떤 PCD (100) 가 현재 제 1 사용 케이스와 상이하게 동작되고 있는지에 대한 특정 제 2 사용 케이스의 식별일 수도 있다. 일부 실시형태들에서, 블록 (806) 이 결정은 PCD (100) 의 현재 동작이 다른 미리 정의된 사용 케이스들에 맞지 않는 이벤트에서 디폴트 사용 케이스로 이루어질 수 있다.
방법 (800) 은 제 2 사용 케이스에 대한 버퍼 사이즈 또는 심도 정보가 획득되는 블록 (810) 으로 진행된다. 버퍼(들)은 도 4a 및 도 4b 및 도 6 에 대하여 위에 논의된 FIFO들 (250A-250J) 일 수도 있다. 블록 (808) 에서 결정된 제 2 사용 케이스에 의존하여, SoC (102) 의 여러 컴포넌트들은 이들이 제 1 사용 케이스에 대해 있었던 것보다 더 활성이거나 덜 활성인 것으로 예상될 수도 있다. 블록 (810) 에서, SoC (102) 의 여러 컴포넌트들과 연관된 각각의 FIFO (250A-250J) 에 대한 버퍼 사이즈 또는 심도에 대한 값들은 제 2 사용 케이스에 대하여 획득 또는 결정된다. 버퍼들 중 하나 이상에 대해, 버퍼 사이즈 또는 심도에 대한 이들 새로운, 제 2 값들은 제 1 사용 케이스에 대하여 획득되거나 설정된 버퍼 사이즈 또는 심도에 대한 제 1 값들과는 상이할 수도 있음이 예상된다.
일부 실시형태들에서, 블록 (810) 에서 새로운 제 2 버퍼 사이즈 정보를 획득하는 것은 블록 (804) 에 대하여 논의된 바와 같이 도 5a 의 상태 테이블 (500A) 및/또는 도 5b 의 LUT (500) 와 같이 하나 이상의 테이블들로부터 버퍼 사이즈 정보를 판독하는 것을 포함할 수도 있다. 이해될 바와 같이, 테이블 보다, 제 2 사용 케이스에 대한 버퍼 사이즈 또는 심도 정보를 획득하는 다른 방법은 구현될 수도 있다. 추가로, 일부 실시형태들에서, 블록 (810) 은 별도의 단계가 아닐 수도 있고 대신에 결정 블록 (808) 의 부분일 수도 있다.
블록 (812) 에서, 제 2 버퍼 사이즈는 결정된 제 2 사용 케이스 및 제 2 사용 케이스에 대해 획득된 버퍼 사이즈 정보에 기초하여 컴퓨팅 디바이스의 하나 이상의 컴포넌트들과 연관된 버퍼(들)에 대하여 설정된다. 버퍼(들)은 또한 도 4a 및 도 4b 및 도 6 에 대하여 위에 논의된 FIFO들 (250A-250J) 일 수도 있다. 블록 (808) 에서 결정된 사용 케이스에 의존하여, SoC (102) 의 여러 컴포넌트들은 더 활성이거나 덜 활성인 것으로 예상될 수도 있다. 블록 (812) 에서, SoC (102) 의 여러 컴포넌트들과 연관된 각각의 FIFO (250A-250J) 에 대한 버퍼 사이즈 또는 심도는 결정된 제 2 사용 케이스에 따라 필요에 따라 조정된다.
일 실시형태에서, 이는 제 2 사용 케이스에서 덜 활성이거나 또는 비활성인 것으로 예상되는 컴포넌트들의 버퍼 사이즈 또는 심도를 감소시키는 것 및/또는 더 활성인 것으로 예상되는 컴포넌트들의 버퍼 사이즈 또는 심도를 증가시키는 것을 포함할 수 있다. 위에 논의된 바와 같이, 버퍼 사이즈 또는 심도 증가 또는 감소의 양은 컴포넌트에 의해 및/또는 사용 케이스에 의해 변경될 수 있다. 추가로, 이러한 버퍼 사이즈 조정은 PCD (100) 또는 SoC (102) 가 구현하고 있는 임의의 다른 전력 완화 또는 제어 전략에 더하여 또는 전략을 대신하여 실현될 수도 있다.
방법 (800) 은 컴퓨팅 디바이스의 하나 이상의 컴포넌트들에 대한 사용 케이스 데이터 또는 정보가 필요에 따라 업데이트될 수 있는 선택적 블록 (814) 으로 계속된다. 복수의 사용 케이스들이 시간에 따라 변경될 수도 있는 실시형태들에 대하여, 이러한 변경들은 (예를 들어 모니터 모듈 (114) 에 의해) 추적될 수도 있고 블록 (814) 에서 종종 행해질 수 있다. 사용 케이스 정보에 대한 변경은 PCD (100) 가 어떻게 사용되는지에 대한 PCD (100) 의 동작 동안 시간에 따라 수집된 데이터로부터 초래될 수도 있다. 블록 (814) 에서의 사용 케이스 정보에 대한 이러한 변경들은 사용 케이스들을 삭제하는 것, 새로운 사용 케이스들을 추가하는 것, 사용 케이스에 대한 하나 이상의 컴포넌트들의 활동 레벨을 변경하는 것, 하나 이상의 컴포넌트들에 대한 특정 활동 레벨에 대한 버퍼 사이즈 또는 심도를 변경하는 것 또는 이들의 임의의 조합을 포함할 수도 있다.
복수의 사용 케이스들이 미리 결정되고 변경되지 않을 수도 있는 실시형태들에 대해, 블록 (814) 은 수행되지 않을 수도 있고 부분적으로만 수행될 수도 있다. 예를 들어, 일부 실시형태들에서, 사용 케이스들은 추가 또는 삭제되지 않을 수도 있지만, 활동 레벨 값들 및/또는 활동 레벨에 대한 버퍼 사이즈 정보가 업데이트될 수도 있다. 방법 (800) 은 그 후, PCD (100) 및/또는 SoC (102) 의 컴포넌트들의 상태를 모니터링하여 사용 케이스에서의 추가 또는 임의의 장래의 변경들을 결정하는 것으로 계속된다. 이러한 장래의 변경들의 이벤트시, 블록들 (808, 810, 812, 및/또는 814) 은 제 3 사용 케이스, 제 4 사용 케이스 등에 대해 위에 설명된 바와 같이 재반복될 수도 있다.
도 8 은 동적 버퍼가 컴퓨팅 디바이스, 이를 테면 PCD (100) 에 리사이징하는 방법 (800) 의 일 예시적인 실시형태만을 설명한다. 일부 실시형태들에서, 추가의 블록들 또는 단계들이 방법 (800) 에 부가될 수도 있다. 이와 유사하게, 일부 실시형태들에서 도 8 에 도시된 여러 블록들 또는 단계들은 결합 또는 생략될 수 있고, 도 8 에 예시된 2 개의 별개의 블록들 이외에 이를 테면 예를 들어 블록들 (802 및 804) 을 하나의 예측/획득 블록 또는 단계로 결합할 수 있다. 대안적으로, 블록들 (804 및 806) 은 도 8 에 예시된 2 개의 별개의 블록들 이외에 하나의 버퍼 사이즈 획득/설정 블록으로 결합될 수 있다. 방법 (800) 의 이러한 변형들은 본 개시의 범위 내에 있다.
추가적으로 본원에서 설명된 프로세스들 또는 프로세스 플로우들에서의 특정 단계들은 자연스럽게, 본 발명이 설명된 바와 같이 기능하도록 다른 것들보다 선행한다. 하지만, 본 개시는, 그러한 순서 또는 시퀀스가 본 기능을 변경하지 않는다면, 설명된 단계들의 순서에 한정되지 않는다. 더욱이, 일부 단계들은 이 개시의 범위로부터 벗어남이 없이 다른 단계들 전에, 후에, 또는 그와 병행하여 (실질적으로 동시에) 수행될 수도 있다는 것이 인정된다. 일부 예들에 있어서, 특정 단계들은 본 개시의 범위로부터 일탈함없이 생략되거나 또는 수행되지 않을 수도 있다. 추가로, "그 이후", "그 후", "다음으로", "후속적으로" 등과 같은 단어들은 단계들의 순서를 한정하도록 의도되지 않는다. 이들 단어들은 단순히, 예시적인 방법 (800) 의 설명을 통해 독자를 가이드하기 위해 사용된다.
위에 설명된 여러 동작들 및/또는 방법들은 여러 하드웨어 및/또는 소프트웨어 컴포넌트(들) 및/또는 모듈(들)에 의해 수행될 수도 있고, 이러한 컴포넌트(들) 및/또는 모듈(들)은 이러한 동작 및/또는 방법을 수행하기 위한 수단을 제공할 수도 있다. 부가적으로, 프로그래밍에 있어서의 당업자는, 예를 들어, 본원에 있어서의 플로우 차트들 및 관련 설명에 기초하여 어려움없이, 개시된 시스템 또는 방법을 구현하기 위해 컴퓨터 코드를 기입하거나 적절한 하드웨어 및/또는 회로들을 식별할 수 있다.
따라서, 프로그램 코드 명령들 또는 상세한 하드웨어 디바이스들의 특정 세트의 개시는 본 시스템 및 방법을 제조 및 이용하는 방법의 적절한 이해에 필수적인 것으로 고려되지 않는다. 청구된 프로세서 인에이블드 프로세스들의 본 발명의 기능은, 다양한 프로세스 플로우들을 예시할 수도 있는 도면들과 함께 상기 설명에서 더 상세히 설명된다.
상기 나타낸 바와 같은 하나 이상의 예시적인 양태들에 있어서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 소프트웨어에서 구현된다면, 그 기능들은 하나 이상의 명령들 또는 코드로서 비-일시적인 프로세서 판독가능 매체와 같은 컴퓨터 판독가능 매체 상에 저장되거나 매체로서 송신될 수도 있다. 컴퓨터 판독가능 매체들은, 일 장소로부터 다른 장소로의 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들 및 데이터 저장 매체들 양자 모두를 포함한다.
저장 매체들은, 컴퓨터 또는 프로세서에 의해 액세스될 수도 있는 임의의 가용 매체들일 수도 있다. 한정이 아닌 예로서, 그러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD ROM 또는 다른 광학 디스크 저장부, 자기 디스크 저장부 또는 다른 자기 저장 디바이스들, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 수록 또는 저장하는데 이용될 수도 있고 컴퓨터에 의해 액세스될 수도 있는 임의의 다른 매체를 포함할 수도 있다. 본원에서 사용된 바와 같은 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서, 디스크 (disk) 는 통상적으로 데이터를 자기적으로 재생하지만 디스크 (disc) 는 레이저를 이용하여 데이터를 광학적으로 재생한다. 상기의 조합들이 또한, 비-일시적인 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
비록 선택된 양태들이 상세히 도시 및 설명되었지만, 다양한 치환물들 및 변경물들이 다음의 청구항들에 의해 정의되는 바와 같은 본 개시의 범위로부터 일탈함없이 그 안에서 행해질 수도 있음이 이해될 것이다.

Claims (30)

  1. 포터블 컴퓨팅 디바이스 ("PCD") 에서 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 방법으로서,
    시스템 온 칩 ("SoC") 의 모니터 모듈에 의해, 상기 PCD 에 대한 제 1 사용 케이스를 결정하는 단계로서, 상기 제 1 사용 케이스는 상기 SoC 의 복수의 컴포넌트들에 대한 제 1 활동 레벨을 정의하는, 상기 제 1 사용 케이스를 결정하는 단계;
    상기 제 1 사용 케이스에 기초하여 복수의 버퍼들을 제 1 버퍼 사이즈로 설정하는 단계로서,
    상기 복수의 버퍼들 각각은 상기 SoC 의 상기 복수의 컴포넌트들 중 하나의 컴포넌트와 연관되고,
    상기 버퍼들 각각에 대한 상기 제 1 버퍼 사이즈는 상기 SoC 의 연관된 컴포넌트의 제 1 활동 레벨에 기초하는, 상기 복수의 버퍼들을 제 1 버퍼 사이즈로 설정하는 단계;
    상기 모니터 모듈에 의해, 상기 제 1 사용 케이스와는 상이한, 상기 PCD 에 대한 제 2 사용 케이스를 결정하는 단계로서, 상기 제 2 사용 케이스는 상기 SoC 의 상기 복수의 컴포넌트들에 대한 제 2 활동 레벨을 정의하는, 상기 제 2 사용 케이스를 결정하는 단계; 및
    상기 제 2 사용 케이스에 기초하여 상기 복수의 버퍼들 중 적어도 하나의 버퍼를 제 2 버퍼 사이즈로 설정하는 단계로서, 상기 적어도 하나의 버퍼에 대한 상기 제 2 버퍼 사이즈는 상기 SoC 의 연관된 컴포넌트의 상기 제 2 활동 레벨에 기초하고, 상기 제 2 버퍼 사이즈는 제 1 버퍼 사이즈와는 상이한, 상기 적어도 하나의 버퍼를 제 2 버퍼 사이즈로 설정하는 단계를 포함하는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 방법.
  2. 제 1 항에 있어서,
    상기 제 2 사용 케이스에 기초하여 상기 복수의 버퍼들 중 적어도 하나의 버퍼를 제 2 버퍼 사이즈로 설정하는 단계는:
    상기 복수의 버퍼들 중 상기 적어도 하나의 버퍼의 버퍼 심도를 감소시키는 단계를 포함하는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 방법.
  3. 제 2 항에 있어서,
    상기 복수의 버퍼들 중 상기 적어도 하나의 버퍼의 버퍼 심도를 감소시키는 단계는:
    상기 SoC 의 연관된 컴포넌트의 상기 제 2 활동 레벨에 의존하는 가변 양으로 상기 버퍼 심도를 감소시키는 단계를 더 포함하는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 방법.
  4. 제 1 항에 있어서,
    상기 SoC 의 상기 복수의 컴포넌트들 중 제 1 컴포넌트와 연관된 버퍼에 대한 상기 제 1 버퍼 사이즈는 상기 SoC 의 상기 복수의 컴포넌트들 중 제 2 컴포넌트와 연관된 버퍼에 대한 상기 제 1 버퍼 사이즈와는 상이한, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 방법.
  5. 제 1 항에 있어서,
    상기 복수의 버퍼들은 선입 선출 (FIFO) 버퍼들을 포함하는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 방법.
  6. 제 1 항에 있어서,
    상기 제 1 사용 케이스에 기초하여 상기 복수의 버퍼들을 제 1 버퍼 사이즈로 설정하는 단계는 상기 제 1 사용 케이스에 대한 상기 복수의 버퍼들에 대한 제 1 사이즈 정보를 획득하는 단계를 더 포함하고,
    상기 제 2 사용 케이스에 기초하여 상기 복수의 버퍼들 중 적어도 하나의 버퍼를 제 2 버퍼 사이즈로 설정하는 단계는 상기 제 2 사용 케이스에 대한 상기 복수의 버퍼들에 대한 제 2 사이즈 정보를 획득하는 단계를 더 포함하는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 방법.
  7. 제 1 항에 있어서,
    상기 SoC 의 상기 복수의 컴포넌트들 중 하나 이상의 컴포넌트들에 대한 사용 케이스 데이터를 업데이트하는 단계를 더 포함하고, 상기 사용 케이스 데이터를 업데이트하는 단계는 새로운 사용 케이스를 추가하는 단계, 복수의 사용 케이스들 중 하나의 사용 케이스를 삭제하는 단계, 하나 이상의 사용 케이스들에 대한 활동 레벨 값을 변경하는 단계, 상기 사용 케이스들 중 하나 이상의 사용 케이스들에 대한 활동 레벨들 중 하나 이상의 활동 레벨들에 대한 사이즈 정보 값을 변경하는 단계, 또는 이들의 조합을 포함하는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 방법.
  8. 제 1 항에 있어서,
    상기 모니터 모듈에 의해, N-1 사용 케이스와는 상이한, 상기 PCD 에 대한 N 사용 케이스를 결정하는 단계로서, N 은 2 보다 큰 정수이고 상기 N 사용 케이스는 상기 SoC 의 상기 복수의 컴포넌트들에 대한 N 활동 레벨을 정의하는, 상기 N 사용 케이스를 결정하는 단계; 및
    상기 N 사용 케이스에 기초하여 상기 복수의 버퍼들 중 적어도 하나의 버퍼를 N 버퍼 사이즈로 설정하는 단계로서, 상기 적어도 하나의 버퍼에 대한 상기 N 버퍼 사이즈는 상기 SoC 의 연관된 컴포넌트의 상기 N 활동 레벨에 기초하고, 상기 N 버퍼 사이즈는 상기 N-1 버퍼 사이즈와는 상이한, 상기 적어도 하나의 버퍼를 N 버퍼 사이즈로 설정하는 단계를 더 포함하는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 방법.
  9. 포터블 컴퓨팅 디바이스 ("PCD") 에서 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 컴퓨터 시스템으로서,
    상기 PCD 의 시스템 온 칩 ("SoC") 의 복수의 컴포넌트들;
    상기 SoC 상의 복수의 버퍼들로서, 상기 복수의 버퍼들 각각은 상기 복수의 컴포넌트들 중 하나의 컴포넌트와 연관되는, 상기 복수의 버퍼들; 및
    상기 SoC 의 모니터 모듈을 포함하고,
    상기 모니터 모듈은:
    상기 PCD 에 대한 제 1 사용 케이스를 결정하는 것으로서, 상기 제 1 사용 케이스는 상기 SoC 의 상기 복수의 컴포넌트들에 대한 제 1 활동 레벨을 정의하는, 상기 제 1 사용 케이스를 결정하고,
    상기 제 1 사용 케이스에 기초하여 상기 복수의 버퍼들을 제 1 버퍼 사이즈로 설정하는 것으로서, 상기 버퍼들 각각에 대한 상기 제 1 버퍼 사이즈는 상기 SoC 의 연관된 컴포넌트의 상기 제 1 활동 레벨에 기초하는, 상기 복수의 버퍼들을 제 1 버퍼 사이즈로 설정하고,
    상기 제 1 사용 케이스와는 상이한, 상기 PCD 에 대한 제 2 사용 케이스를 결정하는 것으로서, 상기 제 2 사용 케이스는 상기 SoC 의 상기 복수의 컴포넌트들에 대한 제 2 활동 레벨을 정의하는, 상기 제 2 사용 케이스를 결정하고; 그리고
    상기 제 2 사용 케이스에 기초하여 상기 복수의 버퍼들 중 적어도 하나의 버퍼를 제 2 버퍼 사이즈로 설정하는 것으로서, 상기 적어도 하나의 버퍼에 대한 상기 제 2 버퍼 사이즈는 상기 SoC 의 연관된 컴포넌트의 상기 제 2 활동 레벨에 기초하고, 상기 제 2 버퍼 사이즈는 제 1 버퍼 사이즈와는 상이한, 상기 적어도 하나의 버퍼를 제 2 버퍼 사이즈로 설정하도록 구성되는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 컴퓨터 시스템.
  10. 제 9 항에 있어서,
    상기 제 2 사용 케이스에 기초하여 상기 복수의 버퍼들 중 적어도 하나의 버퍼를 제 2 버퍼 사이즈로 설정하는 것은 상기 복수의 버퍼들 중 적어도 하나의 버퍼의 버퍼 심도를 감소시키는 것을 포함하는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 컴퓨터 시스템.
  11. 제 10 항에 있어서,
    상기 복수의 버퍼들 중 적어도 하나의 버퍼의 버퍼 심도를 감소시키는 것은 상기 SoC 의 연관된 컴포넌트의 상기 제 2 활동 레벨에 의존하는 가변 양으로 상기 버퍼 심도를 감소시키는 것을 더 포함하는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 컴퓨터 시스템.
  12. 제 9 항에 있어서,
    상기 SoC 의 상기 복수의 컴포넌트들 중 제 1 컴포넌트와 연관된 버퍼에 대한 상기 제 1 버퍼 사이즈는 상기 SoC 의 상기 복수의 컴포넌트들 중 제 2 컴포넌트와 연관된 버퍼에 대한 상기 제 1 버퍼 사이즈와는 상이한, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 컴퓨터 시스템.
  13. 제 9 항에 있어서,
    상기 복수의 버퍼들은 선입 선출 (FIFO) 버퍼들을 포함하는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 컴퓨터 시스템.
  14. 제 9 항에 있어서,
    상기 모니터 모듈은 또한:
    상기 제 1 사용 케이스에 대한 상기 복수의 버퍼들에 대한 제 1 사이즈 정보를 획득하는 것에 의해 상기 제 1 사용 케이스에 기초하여 상기 복수의 버퍼들을 제 1 버퍼 사이즈로 설정하고, 그리고
    상기 제 2 사용 케이스에 대한 상기 복수의 버퍼들에 대한 제 2 사이즈 정보를 획득하는 것에 의해 상기 제 2 사용 케이스에 기초하여 상기 복수의 버퍼들 중 적어도 하나의 버퍼를 제 2 버퍼 사이즈로 설정하도록 구성되는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 컴퓨터 시스템.
  15. 제 14 항에 있어서,
    상기 모니터 모듈은 또한:
    상기 SoC 의 상기 복수의 컴포넌트들 중 하나 이상의 컴포넌트들에 대한 사용 케이스 데이터를 업데이트하도록 구성되고, 상기 사용 케이스 데이터를 업데이트하는 것은 새로운 사용 케이스를 추가하는 것, 복수의 사용 케이스들 중 하나의 사용 케이스를 삭제하는 것, 하나 이상의 사용 케이스들에 대한 활동 레벨 값을 변경하는 것, 상기 사용 케이스들 중 하나 이상의 사용 케이스들에 대한 활동 레벨들 중 하나 이상의 활동 레벨들에 대한 사이즈 정보 값을 변경하는 것, 또는 이들의 조합을 포함하는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 컴퓨터 시스템.
  16. 제 9 항에 있어서,
    상기 모니터 모듈은 또한:
    N-1 사용 케이스와는 상이한, 상기 PCD 에 대한 N 사용 케이스를 결정하는 것으로서, N 은 2 보다 큰 정수이고 상기 N 사용 케이스는 상기 SoC 의 상기 복수의 컴포넌트들에 대한 N 활동 레벨을 정의하는, 상기 N 사용 케이스를 결정하고, 그리고
    상기 N 사용 케이스에 기초하여 상기 복수의 버퍼들 중 적어도 하나의 버퍼를 N 버퍼 사이즈로 설정하는 것으로서, 상기 적어도 하나의 버퍼에 대한 상기 N 버퍼 사이즈는 상기 SoC 의 연관된 컴포넌트의 상기 N 활동 레벨에 기초하고, 상기 N 버퍼 사이즈는 상기 N-1 버퍼 사이즈와는 상이한, 상기 적어도 하나의 버퍼를 N 버퍼 사이즈로 설정하도록 구성되는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 컴퓨터 시스템.
  17. 포터블 컴퓨팅 디바이스 ("PCD") 에서 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 컴퓨터 시스템으로서,
    시스템 온 칩 ("SoC") 의 모니터 모듈에 의해, 상기 PCD 에 대한 제 1 사용 케이스를 결정하기 위한 수단으로서, 상기 제 1 사용 케이스는 상기 SoC 의 복수의 컴포넌트들에 대한 제 1 활동 레벨을 정의하는, 상기 제 1 사용 케이스를 결정하기 위한 수단;
    상기 제 1 사용 케이스에 기초하여 복수의 버퍼들을 제 1 버퍼 사이즈로 설정하기 위한 수단으로서,
    상기 복수의 버퍼들 각각은 상기 SoC 의 상기 복수의 컴포넌트들 중 하나의 컴포넌트와 연관되고,
    상기 버퍼들 각각에 대한 상기 제 1 버퍼 사이즈는 상기 SoC 의 연관된 컴포넌트의 제 1 활동 레벨에 기초하는, 상기 복수의 버퍼들을 제 1 버퍼 사이즈로 설정하기 위한 수단;
    상기 모니터 모듈에 의해, 상기 제 1 사용 케이스와는 상이한, 상기 PCD 에 대한 제 2 사용 케이스를 결정하기 위한 수단으로서, 상기 제 2 사용 케이스는 상기 SoC 의 상기 복수의 컴포넌트들에 대한 제 2 활동 레벨을 정의하는, 상기 제 2 사용 케이스를 결정하기 위한 수단; 및
    상기 제 2 사용 케이스에 기초하여 상기 복수의 버퍼들 중 적어도 하나의 버퍼를 제 2 버퍼 사이즈로 설정하기 위한 수단으로서, 상기 적어도 하나의 버퍼에 대한 상기 제 2 버퍼 사이즈는 상기 SoC 의 연관된 컴포넌트의 상기 제 2 활동 레벨에 기초하고, 상기 제 2 버퍼 사이즈는 제 1 버퍼 사이즈와는 상이한, 상기 적어도 하나의 버퍼를 제 2 버퍼 사이즈로 설정하기 위한 수단을 포함하는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 컴퓨터 시스템.
  18. 제 17 항에 있어서,
    상기 제 2 사용 케이스에 기초하여 상기 복수의 버퍼들 중 적어도 하나의 버퍼를 제 2 버퍼 사이즈로 설정하기 위한 수단은:
    상기 복수의 버퍼들 중 상기 적어도 하나의 버퍼의 버퍼 심도를 감소시키기 위한 수단을 포함하는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 컴퓨터 시스템.
  19. 제 18 항에 있어서,
    상기 복수의 버퍼들 중 상기 적어도 하나의 버퍼의 버퍼 심도를 감소시키기 위한 수단은:
    상기 SoC 의 연관된 컴포넌트의 상기 제 2 활동 레벨에 의존하는 가변 양으로 상기 버퍼 심도를 감소시키기 위한 수단을 더 포함하는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 컴퓨터 시스템.
  20. 제 17 항에 있어서,
    상기 SoC 의 상기 복수의 컴포넌트들 중 제 1 컴포넌트와 연관된 버퍼에 대한 상기 제 1 버퍼 사이즈는 상기 SoC 의 상기 복수의 컴포넌트들 중 제 2 컴포넌트와 연관된 버퍼에 대한 상기 제 1 버퍼 사이즈와는 상이한, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 컴퓨터 시스템.
  21. 제 17 항에 있어서,
    상기 복수의 버퍼들은 선입 선출 (FIFO) 버퍼들을 포함하는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 컴퓨터 시스템.
  22. 제 17 항에 있어서,
    상기 제 1 사용 케이스에 기초하여 상기 복수의 버퍼들을 제 1 버퍼 사이즈로 설정하기 위한 수단은 상기 제 1 사용 케이스에 대한 상기 복수의 버퍼들에 대한 제 1 사이즈 정보를 획득하기 위한 수단을 더 포함하고,
    상기 제 2 사용 케이스에 기초하여 상기 복수의 버퍼들 중 적어도 하나의 버퍼를 제 2 버퍼 사이즈로 설정하기 위한 수단은 상기 제 2 사용 케이스에 대한 상기 복수의 버퍼들에 대한 제 2 사이즈 정보를 획득하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 컴퓨터 시스템.
  23. 제 17 항에 있어서,
    상기 SoC 의 상기 복수의 컴포넌트들 중 하나 이상의 컴포넌트들에 대한 사용 케이스 데이터를 업데이트하기 위한 수단을 더 포함하고, 상기 사용 케이스 데이터를 업데이트하는 것은 새로운 사용 케이스를 추가하는 것, 복수의 사용 케이스들 중 하나의 사용 케이스를 삭제하는 것, 하나 이상의 사용 케이스들에 대한 활동 레벨 값을 변경하는 것, 상기 사용 케이스들 중 하나 이상의 사용 케이스들에 대한 활동 레벨들 중 하나 이상의 활동 레벨들에 대한 사이즈 정보 값을 변경하는 것, 또는 이들의 조합을 포함하는, 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 컴퓨터 시스템.
  24. 컴퓨터 판독가능 프로그램 코드가 수록된 비일시적 컴퓨터 사용가능 저장 매체에 저장된 컴퓨터 프로그램으로서,
    상기 컴퓨터 판독가능 프로그램 코드는 포터블 컴퓨팅 디바이스 ("PCD") 에서 컴퓨팅 디바이스에서의 버퍼 사이즈를 동적으로 제어하는 방법을 구현하기 위해 실행되도록 구성되고,
    상기 방법은:
    시스템 온 칩 ("SoC") 의 모니터 모듈에 의해, 상기 PCD 에 대한 제 1 사용 케이스를 결정하는 단계로서, 상기 제 1 사용 케이스는 상기 SoC 의 복수의 컴포넌트들에 대한 제 1 활동 레벨을 정의하는, 상기 제 1 사용 케이스를 결정하는 단계;
    상기 제 1 사용 케이스에 기초하여 복수의 버퍼들을 제 1 버퍼 사이즈로 설정하는 단계로서,
    상기 복수의 버퍼들 각각은 상기 SoC 의 상기 복수의 컴포넌트들 중 하나의 컴포넌트와 연관되고,
    상기 버퍼들 각각에 대한 상기 제 1 버퍼 사이즈는 상기 SoC 의 연관된 컴포넌트의 제 1 활동 레벨에 기초하는, 상기 복수의 버퍼들을 제 1 버퍼 사이즈로 설정하는 단계;
    상기 모니터 모듈에 의해, 상기 제 1 사용 케이스와는 상이한, 상기 PCD 에 대한 제 2 사용 케이스를 결정하는 단계로서, 상기 제 2 사용 케이스는 상기 SoC 의 상기 복수의 컴포넌트들에 대한 제 2 활동 레벨을 정의하는, 상기 제 2 사용 케이스를 결정하는 단계; 및
    상기 제 2 사용 케이스에 기초하여 상기 복수의 버퍼들 중 적어도 하나의 버퍼를 제 2 버퍼 사이즈로 설정하는 단계로서, 상기 적어도 하나의 버퍼에 대한 상기 제 2 버퍼 사이즈는 상기 SoC 의 연관된 컴포넌트의 상기 제 2 활동 레벨에 기초하고, 상기 제 2 버퍼 사이즈는 제 1 버퍼 사이즈와는 상이한, 상기 적어도 하나의 버퍼를 제 2 버퍼 사이즈로 설정하는 단계를 포함하는, 비일시적 컴퓨터 사용가능 저장 매체에 저장된 컴퓨터 프로그램.
  25. 제 24 항에 있어서,
    상기 제 2 사용 케이스에 기초하여 상기 복수의 버퍼들 중 적어도 하나의 버퍼를 제 2 버퍼 사이즈로 설정하는 단계는:
    상기 복수의 버퍼들 중 상기 적어도 하나의 버퍼의 버퍼 심도를 감소시키는 단계를 포함하는, 비일시적 컴퓨터 사용가능 저장 매체에 저장된 컴퓨터 프로그램.
  26. 제 25 항에 있어서,
    상기 복수의 버퍼들 중 상기 적어도 하나의 버퍼의 버퍼 심도를 감소시키는 단계는:
    상기 SoC 의 연관된 컴포넌트의 상기 제 2 활동 레벨에 의존하는 가변 양으로 상기 버퍼 심도를 감소시키는 단계를 더 포함하는, 비일시적 컴퓨터 사용가능 저장 매체에 저장된 컴퓨터 프로그램.
  27. 제 24 항에 있어서,
    상기 SoC 의 상기 복수의 컴포넌트들 중 제 1 컴포넌트와 연관된 버퍼에 대한 상기 제 1 버퍼 사이즈는 상기 SoC 의 상기 복수의 컴포넌트들 중 제 2 컴포넌트와 연관된 버퍼에 대한 상기 제 1 버퍼 사이즈와는 상이한, 비일시적 컴퓨터 사용가능 저장 매체에 저장된 컴퓨터 프로그램.
  28. 제 24 항에 있어서,
    상기 복수의 버퍼들은 선입 선출 (FIFO) 버퍼들을 포함하는, 비일시적 컴퓨터 사용가능 저장 매체에 저장된 컴퓨터 프로그램.
  29. 제 24 항에 있어서,
    상기 제 1 사용 케이스에 기초하여 상기 복수의 버퍼들을 제 1 버퍼 사이즈로 설정하는 단계는 상기 제 1 사용 케이스에 대한 상기 복수의 버퍼들에 대한 제 1 사이즈 정보를 획득하는 단계를 더 포함하고,
    상기 제 2 사용 케이스에 기초하여 상기 복수의 버퍼들 중 적어도 하나의 버퍼를 제 2 버퍼 사이즈로 설정하는 단계는 상기 제 2 사용 케이스에 대한 상기 복수의 버퍼들에 대한 제 2 사이즈 정보를 획득하는 단계를 더 포함하는, 비일시적 컴퓨터 사용가능 저장 매체에 저장된 컴퓨터 프로그램.
  30. 제 29 항에 있어서,
    상기 방법은,
    상기 SoC 의 상기 복수의 컴포넌트들 중 하나 이상의 컴포넌트들에 대한 사용 케이스 데이터를 업데이트하는 단계를 더 포함하고, 상기 사용 케이스 데이터를 업데이트하는 단계는 새로운 사용 케이스를 추가하는 단계, 복수의 사용 케이스들 중 하나의 사용 케이스를 삭제하는 단계, 하나 이상의 사용 케이스들에 대한 활동 레벨 값을 변경하는 단계, 상기 사용 케이스들 중 하나 이상의 사용 케이스들에 대한 활동 레벨들 중 하나 이상의 활동 레벨들에 대한 사이즈 정보 값을 변경하는 단계, 또는 이들의 조합을 포함하는, 비일시적 컴퓨터 사용가능 저장 매체에 저장된 컴퓨터 프로그램.
KR1020197038273A 2017-06-27 2018-06-01 컴퓨팅 디바이스에서 동적 버퍼 사이징을 위한 시스템 및 방법 KR102623137B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/634,701 US10713189B2 (en) 2017-06-27 2017-06-27 System and method for dynamic buffer sizing in a computing device
US15/634,701 2017-06-27
PCT/US2018/035677 WO2019005424A1 (en) 2017-06-27 2018-06-01 SYSTEM AND METHOD FOR DIMENSIONING A DYNAMIC BUFFER IN A COMPUTER DEVICE

Publications (2)

Publication Number Publication Date
KR20200018495A KR20200018495A (ko) 2020-02-19
KR102623137B1 true KR102623137B1 (ko) 2024-01-09

Family

ID=62685230

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197038273A KR102623137B1 (ko) 2017-06-27 2018-06-01 컴퓨팅 디바이스에서 동적 버퍼 사이징을 위한 시스템 및 방법

Country Status (10)

Country Link
US (1) US10713189B2 (ko)
EP (1) EP3646162B1 (ko)
KR (1) KR102623137B1 (ko)
CN (1) CN110809754B (ko)
AU (1) AU2018295010B2 (ko)
BR (1) BR112019026957A2 (ko)
ES (1) ES2871099T3 (ko)
SG (1) SG11201910416XA (ko)
TW (1) TWI772438B (ko)
WO (1) WO2019005424A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007107938A1 (en) 2006-03-22 2007-09-27 Koninklijke Philips Electronics N.V. A device and a method for saving energy by sharing a buffer
US20080162862A1 (en) 2005-12-02 2008-07-03 Yoshiki Matsumoto Signal Processing Apparatus and Signal Processing Method
US20130223538A1 (en) 2012-02-28 2013-08-29 Qualcomm Incorporated Customized playback at sink device in wireless display system
US20140281341A1 (en) 2013-03-12 2014-09-18 Invensense, Inc. Multiple, per sensor configurable fifos in a single static random access memory (sram) structure
US20160026549A1 (en) 2014-07-24 2016-01-28 International Business Machines Corporation Reducing server power consumption to compensate for a power supply failure in a multiple power supply configuration

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6657634B1 (en) * 1999-02-25 2003-12-02 Ati International Srl Dynamic graphics and/or video memory power reducing circuit and method
US20070260780A1 (en) * 2006-04-11 2007-11-08 Nokia Corporation Media subsystem, method and computer program product for adaptive media buffering
US20090028171A1 (en) 2007-07-27 2009-01-29 Texas Instruments Incorporated Fifo buffer with adaptive threshold level
CN101802872B (zh) * 2007-09-12 2016-06-15 爱立信电话股份有限公司 深度缓冲器压缩
US8064256B2 (en) 2009-03-02 2011-11-22 Unity Semiconductor Corporation Non-volatile FIFO with third dimension memory
US8738863B2 (en) * 2009-09-25 2014-05-27 Intel Corporation Configurable multi-level buffering in media and pipelined processing components
US20120316458A1 (en) * 2011-06-11 2012-12-13 Aliphcom, Inc. Data-capable band for medical diagnosis, monitoring, and treatment
US9189199B2 (en) 2012-12-06 2015-11-17 Nvidia Corporation Folded FIFO memory generator
US9337952B2 (en) 2013-04-22 2016-05-10 Intel Corporation Embedded resilient buffer
US9600191B2 (en) * 2014-06-02 2017-03-21 Micron Technology, Inc. Systems and methods for reordering packet transmissions in a scalable memory system protocol
US20160026436A1 (en) 2014-07-24 2016-01-28 Qualcomm Incorporated Dynamic Multi-processing In Multi-core Processors
US9568547B2 (en) * 2015-03-17 2017-02-14 Intel Corporation Method, apparatus and system for dynamic bandwidth management in systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080162862A1 (en) 2005-12-02 2008-07-03 Yoshiki Matsumoto Signal Processing Apparatus and Signal Processing Method
WO2007107938A1 (en) 2006-03-22 2007-09-27 Koninklijke Philips Electronics N.V. A device and a method for saving energy by sharing a buffer
US20130223538A1 (en) 2012-02-28 2013-08-29 Qualcomm Incorporated Customized playback at sink device in wireless display system
US20140281341A1 (en) 2013-03-12 2014-09-18 Invensense, Inc. Multiple, per sensor configurable fifos in a single static random access memory (sram) structure
US20160026549A1 (en) 2014-07-24 2016-01-28 International Business Machines Corporation Reducing server power consumption to compensate for a power supply failure in a multiple power supply configuration

Also Published As

Publication number Publication date
BR112019026957A2 (pt) 2020-06-30
US10713189B2 (en) 2020-07-14
AU2018295010A1 (en) 2019-12-05
US20180373652A1 (en) 2018-12-27
CN110809754A (zh) 2020-02-18
CN110809754B (zh) 2023-06-30
EP3646162B1 (en) 2021-04-21
EP3646162A1 (en) 2020-05-06
TW201905690A (zh) 2019-02-01
WO2019005424A1 (en) 2019-01-03
AU2018295010B2 (en) 2022-07-07
TWI772438B (zh) 2022-08-01
SG11201910416XA (en) 2020-01-30
KR20200018495A (ko) 2020-02-19
ES2871099T3 (es) 2021-10-28

Similar Documents

Publication Publication Date Title
JP6412162B2 (ja) グラフィックスフレーム処理において電力消費を低減させるためのcpu/gpu dcvs相互最適化
US9626295B2 (en) Systems and methods for scheduling tasks in a heterogeneous processor cluster architecture using cache demand monitoring
US9678809B2 (en) System and method for providing dynamic clock and voltage scaling (DCVS) aware interprocessor communication
JP6038699B2 (ja) 電子機器
CN108780349B (zh) 用于在具有异构集群架构的片上系统中进行智能热管理的系统和方法
US9697124B2 (en) Systems and methods for providing dynamic cache extension in a multi-cluster heterogeneous processor architecture
CN110637271B (zh) 用于对便携式计算设备中的沉浸式多媒体工作负载的智能调整的系统和方法
CN107924225B (zh) 用于动态地调整存储器状态转变定时器的系统和方法
KR20160136410A (ko) 공유 전력 도메인에서의 이종의 프로세서들에 걸친 동적 전력 관리를 위한 장치, 시스템 및 방법
EP3195084A1 (en) System and method for providing dynamic quality of service levels based on coprocessor operation
US20180253236A1 (en) System and method for dynamic control of shared memory management resources
US9507641B1 (en) System and method for dynamic granularity control of parallelized work in a portable computing device (PCD)
KR102623137B1 (ko) 컴퓨팅 디바이스에서 동적 버퍼 사이징을 위한 시스템 및 방법
US9354812B1 (en) Dynamic memory utilization in a system on a chip
US10497369B2 (en) Method and system for power savings in voice control of a computing device
CN117950935A (en) Performance regulating and controlling method and electronic equipment

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant