KR20160132422A - 동적 클럭 및 전압 스케일링 (dcvs) 인지 프로세서간 통신을 제공하기 위한 시스템 및 방법 - Google Patents

동적 클럭 및 전압 스케일링 (dcvs) 인지 프로세서간 통신을 제공하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20160132422A
KR20160132422A KR1020167027655A KR20167027655A KR20160132422A KR 20160132422 A KR20160132422 A KR 20160132422A KR 1020167027655 A KR1020167027655 A KR 1020167027655A KR 20167027655 A KR20167027655 A KR 20167027655A KR 20160132422 A KR20160132422 A KR 20160132422A
Authority
KR
South Korea
Prior art keywords
processing component
core
data packet
workload information
dcvs
Prior art date
Application number
KR1020167027655A
Other languages
English (en)
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 KR20160132422A publication Critical patent/KR20160132422A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • 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") 에서 또는 휴대용 컴퓨팅 디바이스와 함께 사용되는 것들과 같은 프로세서들 사이에서 동적 클럭 및 전압 스케일링 (DCVS) 인지 프로세서간 통신을 허용하는 시스템들 및 방법들이 제시된다. PCD 의 동작 동안 적어도 하나의 데이터 패킷이 제 1 프로세싱 컴포넌트에서 수신된다. 추가적으로, 제 1 프로세싱 컴포넌트는 또한, 동적 클럭 및 전압 스케일링 (DCVS) 하에 동작하는 제 2 프로세싱 컴포넌트에 관한 워크로드 정보를 수신한다. 수신된 워크로드 정보에 적어도 부분적으로 기초하여, 적어도 하나의 데이터 패킷을 제 1 프로세싱 컴포넌트로부터 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부에 관한 결정이 이루어지고, DCVS 알고리즘들 또는 로직을 구현하는 멀티-코어들 또는 멀티-CPU들을 갖는 PCD 들에서 전력 소모를 감소시키기 위한 비용 효율적 능력 및 향상된 배터리 수명을 제공한다.

Description

동적 클럭 및 전압 스케일링 (DCVS) 인지 프로세서간 통신을 제공하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR PROVIDING DYNAMIC CLOCK AND VOLTAGE SCALING (DCVS) AWARE INTERPROCESSOR COMMUNICATION}
휴대용 컴퓨팅 디바이스들 (PCD들) 을 포함하는, 무선 신호들을 통해 다른 디바이스들과 통신하는 프로세서를 갖는 디바이스들이 아주 흔하다. 이들 디바이스들은 모바일 전화기들, 휴대용 정보 단말기들 (PDA들), 휴대용 게임 콘솔들, 팜탑 컴퓨터들, 및 다른 휴대용 전자 디바이스들을 포함할 수도 있다. 이들 디바이스들의 주요 기능에 추가하여, 많은 것들은 주변 기능들을 포함한다. 예를 들어, 모바일 또는 셀룰러 전화기는 전화 콜들을 가능하게 하고 지원하는 주요 기능 및, 스틸 카메라, 비디오 카메라, 글로벌 포지셔닝 시스템 (GPS) 내비게이션, 웹 브라우징, 비디오 보기, 게임 플레이, 이메일들 전송 및 수신, 텍스트 메시지들 전송 및 수신, 푸쉬-투-토크 기능성들 등의 주변 기능들을 포함할 수도 있다.
현대의 PCD 들은 통상적으로, PCD 의 다양한 기능들을 제어 또는 수행하기 위한 하나 이상의 코어들 (예컨대, 중앙 프로세싱 유닛(들) (CPU들), 비디오 디코더, 그래픽 프로세싱 유닛(들) (GPU), 모뎀 프로세서, 디지털 신호 프로세서(들) (DSP들) 등) 을 포함하는 시스템-온-칩 (SoC) 을 포함한다. 증가하는 수의 코어들 및/또는 CPU 들의 존재는 각각의 코어/CPU 를 동작시키는 것은 PCD 상의 전력 소모를 증가시키고 배터리 수명을 감소시키므로 PCD 셋팅에서 문제가 될 수 있다. 예를 들어, PCD 들의 기능성이 증가함에 따라, 종래의 SoC 프로세서들은 PCD 내에서 통상적인 사용 경우들 (예를 들어 비디오 재생) 을 실행하는 것의 부분으로서 그들 사이에서 상당한 양들의 데이터를 교환할 수도 있다. 콘텐츠 사이즈가 매 수개월마다 (비디오 클립들에 대해 1080P 와 같이) 더 크게 성장함에 따라, 이들 통신 메커니즘들은 CPU 로드 (load) 의 상당한 부분이 될 수 있고 전력 소모를 증가시킨다. CPU 로드를 형성하는 통신 메커니즘들은 원격 프로시저 콜들, 공유된 메모리 콜들, 및 다른 커스터마이징된 통신 메커니즘들의 형태일 수 있다.
전력 소모를 감소시키기 위한 노력에서, CPU 들은 전력 소모를 최소화하기 위해 그들 상에서 실행되는 동적 클럭 및 전압 스케일링 (DCVS) 알고리즘의 일부 형태를 구현할 수도 있다. DCVS 알고리즘의 대부분은 CPU 에 대한 최선의 주파수를 결정하기 위해 주기적으로 계산된 CPU 로드에 기초하여 실행된다. 이들 종류들의 SoC 들에 있어서의 한 가지 문제점은 언제 이러한 CPU 가 (다른 CPU 와 같은) 소스로부터 랜덤한 시간들에서 다수의 메시지들/인터럽트들을 수신하는가이다. 이러한 반복된 메시지들/인터럽트들은, 메시지들/인터럽트들을 수신하는 CPU 상에서의 DCVS 알고리즘으로 하여금 메시지들/인터럽트들에 의해 야기되는 이 추가적인 로드에 반응하게 하고, CPU 가 그것의 높은/최고의 주파수를 취하게 할 수도 있고, 이는 DCVS 알고리즘의 목적에 반해 전력 소모를 심각하게 증가시킬 수 있다. 이 증가된 전력 소모는 배터리로 실행되는 모바일 전화기와 같은 PCD 들에 대해 특히 문제가 될 수 있다.
따라서, DCVS 알고리즘을 구현하는 CPU 에서 랜덤하고 갑작스런 메시지들/인터럽트들을 수신함으로써 야기될 수 있는 클럭 주파수에서의 이들 갑작스런 증가들을 최소화하기 위한 향상된 시스템들 및 방법들에 대한 필요성이 존재한다.
휴대용 컴퓨팅 디바이스 ("PCD") 에서 또는 휴대용 컴퓨팅 디바이스와 함께 사용되는 것들과 같은 프로세서들 사이에서 동적 클럭 및 전압 스케일링 (Dynamic Clock and Voltage Scaling; DCVS) 인지 프로세서간 통신 (interprocessor communications) 을 허용하는 시스템들 및 방법들이 개시된다. PCD 의 동작 동안 적어도 하나의 데이터 패킷이 제 1 프로세싱 컴포넌트에서 수신된다. 추가적으로, 제 1 프로세싱 컴포넌트는 또한, 동적 클럭 및 전압 스케일링 (DCVS) 하에 동작하는 제 2 프로세싱 컴포넌트에 관한 워크로드 (workload) 정보를 수신한다. 수신된 워크로드 정보에 적어도 부분적으로 기초하여, 적어도 하나의 데이터 패킷을 제 1 프로세싱 컴포넌트로부터 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부에 관한 결정이 이루어진다.
하나의 예시적인 실시형태는, 적어도 하나의 데이터 패킷을 수신하도록 구성된 제 1 프로세싱 컴포넌트를 포함하는 PCD 이다. 제 1 프로세싱 컴포넌트는, 동적 클럭 및 전압 스케일링 (DCVS) 하에 동작하도록 구성되는 제 2 프로세싱 컴포넌트와 통신한다. 버퍼는 제 1 프로세싱 컴포넌트 및 제 2 프로세싱 컴포넌트와 통신한다. 카운터는 제 2 프로세싱 컴포넌트와 통신하고, 이 카운터는 제 2 프로세싱 컴포넌트에 관한 워크로드 정보를 획득하도록 구성된다. PCD 는 또한, 제 1 프로세싱 컴포넌트 및 카운터와 통신하는 패킷 전송 로직을 포함한다. 패킷 전송 로직은, 카운터로부터 워크로드 정보를 수신하고, 수신된 워크로드 정보에 적어도 부분적으로 기초하여, 적어도 하나의 데이터 패킷을 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송되게 할지 여부를 결정하도록 구성된다.
다른 예시적인 실시형태는, 컴퓨터 판독가능 프로그램 코드를 그 안에 수록한 비-일시적 (non-transitory) 컴퓨터 이용가능 매체를 포함하는 컴퓨터 프로그램 제품이고, 상기 컴퓨터 판독가능 프로그램 코드는 휴대용 컴퓨팅 디바이스 (PCD) 에서 프로세서간 통신하는 방법을 구현하기 위해 실행되도록 적응된다 (adapted). 구현된 방법은, 제 1 프로세싱 컴포넌트에서 적어도 하나의 데이터 패킷을 수신하는 단계; 동적 클럭 및 전압 스케일링 (DCVS) 하에 동작하는 제 2 프로세싱 컴포넌트에 관한 워크로드 정보를 제 1 프로세싱 컴포넌트에서 수신하는 단계; 및 수신된 워크로드 정보에 적어도 부분적으로 기초하여, 적어도 하나의 데이터 패킷을 제 1 프로세싱 컴포넌트로부터 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하는 단계를 포함한다.
또 다른 예시적인 실시형태는, 휴대용 컴퓨팅 디바이스 (PCD) 에서 프로세서간 통신하기 위한 컴퓨터 시스템이다. 이 컴퓨터 시스템은, 제 1 프로세싱 컴포넌트에서 적어도 하나의 데이터 패킷을 수신하는 수단; 동적 클럭 및 전압 스케일링 (DCVS) 하에 동작하는 제 2 프로세싱 컴포넌트에 관한 워크로드 정보를 제 1 프로세싱 컴포넌트에서 수신하는 수단; 수신된 워크로드 정보에 적어도 부분적으로 기초하여, 적어도 하나의 데이터 패킷을 제 1 프로세싱 컴포넌트로부터 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하는 수단을 포함한다.
도면들에서, 동일한 참조 부호들은 달리 표시되지 않는다면 여러 도면들 전체에 걸쳐 동일한 부분들을 지칭한다. "102A" 또는 "102B" 와 같은 문자 기호 표시들을 갖는 참조 부호들에 있어서, 문자 기호 표시들은 동일한 도면에서 존재하는 2 개의 유사한 부분들 또는 엘리먼트들을 구별할 수도 있다. 참조 부호들에 대한 문자 기호 표시들은 참조 부호가 모든 도면들에서 동일한 참조 부호를 갖는 모든 부분들을 포함하는 것으로 의도될 때 생략될 수도 있다.
도 1 은 본 발명이 구현될 수도 있는 휴대용 컴퓨팅 디바이스 (PCD) 의 예시적인 실시형태의 블록도이다.
도 2a 는 도 1 에서 예시된 PCD 실시형태에서 구현될 수도 있는 프로세싱 유닛에 대한 시간의 주기에 걸친 예시적인 이론적인 로드를 나타내는 그래프이다.
도 2b 는 도 2a 에서 예시된 이론적인 로드 하의 프로세싱 유닛의 예시적인 주파수를 나타내는 그래프이다.
도 3a 는 도 1 에서 예시된 PCD 실시형태에서 구현될 수도 있는 프로세싱 유닛에 대한 시간 주기에 걸친 다른 예시적인 이론적 로드를 나타내는 그래프이다.
도 3b 는 도 3a 에서 예시된 이론적인 로드 하에서의 프로세싱 유닛의 예시적인 주파수를 나타내는 그래프이다.
도 4 는 PCD 에서 동적 클럭 및 전압 스케일링 (DCVS) 인지 프로세서간 통신을 지원하기 위한 예시적인 시스템을 나타내는 블록도이다.
도 5 는 PCD 에서 동적 클럭 및 전압 스케일링 (DCVS) 인지 프로세서간 통신을 지원하기 위한 다른 예시적인 시스템을 나타내는 블록도이다.
도 6a 는 PCD 에서 동적 클럭 및 전압 스케일링 (DCVS) 인지 프로세서간 통신을 제공하는 방법의 예시적인 실시형태를 설명하는 플로우차트이다.
도 6b 는 도 6a 에서 예시된 방법을 수행할 수 있는 예시적인 컴포넌트들을 나타낸다.
단어 "예시적인" 은 본 명세서에서 "일 예, 인스턴스 또는 예시로서 기능하는 것" 을 의미하기 위해 사용된다. 본 명세서에서 "예시적인" 으로서 설명된 임의의 양태가 반드시 다른 양태들에 비해 선호되거나 또는 유리한 것으로서 해석되는 것은 아니다.
본 설명에서, 용어 "애플리케이션" 은 : 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들과 같은 실행가능 콘텐츠를 갖는 파일들을 또한 포함할 수도 있다. 또한, 본 명세서에서 지칭되는 "애플리케이션" 은 공개될 필요가 있을 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들과 같은 사실상 실행가능하지 않은 파일들을 또한 포함할 수도 있다.
용어 "콘텐츠 (content)" 는 : 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들과 같은 실행가능 콘텐츠를 갖는 파일들을 또한 포함할 수도 있다. 또한, 본 명세서에서 지칭되는 "콘텐츠" 는 공개될 필요가 있을 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들 또는 데이터 값들과 같은 사실상 실행가능하지 않은 파일들을 또한 포함할 수도 있다.
본 설명에서 사용한 바와 같이, 용어들 "컴포넌트", "모듈", "시스템" 등은 컴퓨터 관련 엔티티, 즉 하드웨어, 펌웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행중인 소프트웨어 중 어느 하나를 지칭하도록 의도된다. 예를 들어, 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 오브젝트, 실행가능물, 실행 스레드, 프로그램, 및/또는 컴퓨터일 수도 있지만, 이들에 제한되지는 않는다. 예시에 의해, 컴퓨팅 디바이스 상에서 실행되는 애플리케이션과 컴퓨팅 디바이스 양자는 컴포넌트일 수도 있다. 하나 이상의 컴포넌트들은 프로세스 및/또는 실행 스레드 내에 상주할 수도 있고, 컴포넌트는 하나의 컴퓨터 상에 로컬화되고 및/또는 2 개 이상의 컴퓨터들 사이에 분산될 수도 있다. 또한, 이들 컴포넌트들은 다양한 데이터 구조들을 저장한 다양한 컴퓨터 판독가능 매체들로부터 실행할 수도 있다. 컴포넌트들은 로컬 및/또는 원격 프로세스들에 의하여, 이를 테면 하나 이상의 데이터 패킷들을 갖는 신호 (예를 들어, 그 신호에 의하여 다른 시스템들과 인터넷과 같은 네트워크를 가로질러 및/또는 로컬 시스템, 분산 시스템에서의 또 다른 컴포넌트와 상호작용하는 하나의 컴포넌트로부터의 데이터) 에 따라 통신할 수도 있다.
본 설명에서, 용어 "휴대용 컴퓨팅 디바이스" ("PCD") 는 배터리 및/또는 커패시터와 같이, 제한된 용량 재충전가능 전력 소스 상에서 동작하는 임의의 디바이스를 설명하기 위해 사용된다. 재충전가능 전력 소스들을 가진 PCD들이 수십년간 사용되어 왔지만, 제 3 세대 ("3G") 및 제 4 세대 ("4G") 무선 기술의 도래와 결합된 재충전가능 배터리들의 기술적 진보들이 다중 능력들을 가진 다수의 PCD들을 가능하게 하였다. 따라서, PCD 는 그 중에서도, 셀룰러 전화기, 위성 전화기, 페이저, PDA, 스마트폰, 내비게이션 디바이스, 스마트북 또는 리더, 미디어 플레이어, 전술한 디바이스들의 조합, 무선 연결을 가진 랩탑 또는 태블릿 컴퓨터일 수도 있다.
이 설명에서, 용어들 "중앙 프로세싱 유닛 ("CPU")", "디지털 신호 프로세서 ("DSP")", "그래픽 프로세싱 유닛 ("GPU")", "칩", "비디오 코덱", "시스템 버스", "이미지 프로세서", 및 "미디어 디스플레이 프로세서 ("MDP")" 는 동적 클럭 및 전압 스케일링 ("DCVS") 기술들을 통해 제어가능하고 본 시스템들 및 방법들로부터 혜택받을 수도 있는 프로세싱 컴포넌트들의 비제한적 예들이다. 프로세싱 컴포넌트들에 대한 이들 용어들은 달리 표시될 때를 제외하고는 상호교환가능하게 사용된다. 더욱이, 이하 논의되는 바와 같이, 상기한 것들 또는 그들의 균등물들의 임의의 것은 본원에서 "코어(들)" 및/또는 "서브-코어(들)" 로서 일반적으로 지칭되는 하나 이상의 별개의 프로세싱 컴포넌트들에서 구현되거나 그러한 하나 이상의 별개의 프로세싱 컴포넌트들로 이루어질 수도 있다.
이 설명에서, 용어들 "워크로드", "프로세스 로드", "프로세스 워크로드" 및 "그래픽 워크로드" 는, 상호교환가능하게 사용되고, 주어진 실시형태에서 주어진 프로세싱 컴포넌트와 연관되거나 그것에 할당될 수도 있는 프로세싱 부담, 또는 프로세싱 부담의 퍼센티지를 일반적으로 지향한다. 부가적으로, 관련된 용어들 "프레임", "코드 블록" 및 "코드의 블록" 은 주어진 워크로드의 부분 또는 세그먼트를 지칭하기 위해 상호교환가능하게 사용된다. 예를 들어, 그래픽 워크로드는 비디오 프로세싱의 당해 기술 분야에서 통상의 지식을 가진 자 (이하, '통상의 기술자' 라 함) 에 의해 이해되는 바와 같이, 일련의 프레임들로 이루어질 수도 있다. 상기 정의된 것에 추가하여, "프로세싱 컴포넌트" 등은, 비제한적으로, 중앙 프로세싱 유닛, 그래픽 프로세싱 유닛, 코어, 메인 코어, 서브-코어, 프로세싱 영역, 하드웨어 엔진 등, 또는 휴대용 컴퓨팅 디바이스 내에서 집적 회로 내에 존재하거나 그 외부에 존재하는 임의의 컴포넌트일 수도 있다.
통상의 기술자는 "MIPS" 라는 용어는 프로세서가 주어진 전력 주파수에서 프로세싱할 수 있는 초당 백만 명령들의 수를 나타냄을 인식할 것이다. 이 설명에서, 그 용어는, 예시적인 실시형태들에서 프로세서 성능의 상대적인 레벨들을 나타내기 위해 측정의 일반적인 단위로서 사용되고, 이 개시물의 범위 내에 속하는 임의의 주어진 실시형태는 임의의 특정 드라이스톤 레이팅 또는 프로세싱 능력을 갖는 프로세서를 포함하여야만 한다거나 포함하지 않아야만 한다는 것을 제안하도록 해석되지 않을 것이다. 부가적으로, 통상의 기술자에 의해 이해되는 바와 같이, 프로세서의 MIPS 셋팅 (setting) 은 프로세서에 의해 공급되는 전력, 주파수, 또는 동작 주파수 (operating frequency) 와 직접 상관된다.
동적 클럭 및 전압 스케일링 (DCVS) 인지 프로세서간 통신을 위한 본 시스템들 및 방법들은, 메시지, 인터럽트 (interrupt), 원격 프로시저 콜 (remote procedure call) 등을 하나의 코어, 중앙 프로세싱 유닛 (CPU), 또는 프로세싱 컴포넌트 ("전송 프로세싱 컴포넌트") 로부터 다른 컴포넌트, 코어 또는 CPU ("수신 프로세싱 컴포넌트") 로 전송할 지 여부를 동적으로 (dynamically) 및 적응적으로 (adaptively) 결정하기 위한 비용 효율적인 능력을 제공하고, 여기서, 수신 프로세싱 컴포넌트는 DCVS 알고리즘 또는 로직을 구현한다.
본 시스템들 및 방법들에서, 전송 프로세싱 컴포넌트가 수신 프로세싱 컴포넌트에 통신할 데이터 또는 데이터 패킷들을 가질 때, 전송 프로세싱 컴포넌트는 그 데이터 또는 데이터 패킷들을 자동적으로 전송하지 않는다. 대신에, 프로세싱 컴포넌트, 또는 전송 프로세싱 컴포넌트와 통신하는 다른 컴포넌트는, 수신 프로세싱 컴포넌트 상에서의 현재의 워크로드에 적어도 부분적으로 기초하여 그 데이터 또는 데이터 패킷들을 즉시 전송할지 또는 안할지 여부 및/또는 그 데이터 또는 데이터 패킷들을 즉시 전송하는 것이 수신 프로세싱 컴포넌트에서 (보다 높은 주파수에서 동작하는 등에 의해) 증가된 전력 소모를 야기할지 또는 안할지 여부를 결정한다. 본 시스템들 및 방법들은 DCVS 알고리즘들 또는 로직을 구현하는 멀티-코어들 또는 멀티-CPU들을 갖는 PCD 들에서 감소된 전력 소모 및 향상된 배터리 수명을 허용한다.
PCD 의 동작 동안, 적어도 하나의 데이터 패킷이 제 1 프로세싱 컴포넌트에서 수신된다. 부가적으로, 제 1 프로세싱 컴포넌트는 또한 동적 클럭 및 전압 스케일링 (DCVS) 하에서 동작하는 제 2 프로세싱 컴포넌트에 관한 워크로드 정보를 수신한다. 적어도 하나의 데이터 패킷을 제 1 프로세싱 컴포넌트로부터 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부에 관한 결정이 이루어진다. 적어도 하나의 데이터 패킷을 제 2 프로세싱 컴포넌트로 전송할지 여부에 관한 결정은, 제 2 프로세싱 컴포넌트에 관한 수신된 워크로드 정보에 적어도 부분적으로 기초하여 이루어지고, 제 2 프로세싱 컴포넌트의 활성 워크로드 (active workload) 가 임계 레벨 초과인지 여부의 결정을 포함할 수도 있다. 부가적으로, 적어도 하나의 데이터 패킷을 제 1 프로세싱 컴포넌트로부터 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부에 관한 결정은 또한 동작 파라미터들 (operational parameters) 에 부분적으로 기초할 수도 있다. 예시적인 동작 파라미터들은: 데이터 패킷(들) 내에 포함된 정보의 중요성; 데이터가 전송되고 있는 목적지 프로세싱 컴포넌트 (즉, 활성 애플리케이션 또는 GPU) 의 성질; 서비스의 품질 (quality of service) ("QoS"); 버퍼들의 이용가능성; 데이터를 버퍼링하는 전력 "비용 (cost)" 등을 포함할 수도 있다.
하나의 예시적인 실시형태는 제 1 프로세싱 컴포넌트를 포함하는 PCD 이고, 여기서, 제 1 프로세싱 컴포넌트는 적어도 하나의 데이터 패킷을 수신하도록 구성된다. 제 1 프로세싱 컴포넌트는 동적 클럭 및 전압 스케일링 (DCVS) 하에서 동작하도록 구성되는 제 2 프로세싱 컴포넌트와 통신한다. 버퍼는 제 1 프로세싱 컴포넌트 및 제 2 프로세싱 컴포넌트와 통신한다. 카운터는 제 2 프로세싱 컴포넌트와 통신하고, 카운터는 제 2 프로세싱 컴포넌트에 관한 워크로드 정보를 획득하도록 구성된다. PCD 는 또한, 제 1 프로세싱 컴포넌트 및 카운터와 통신하는 패킷 전송 로직을 포함한다. 패킷 전송 로직은 카운터로부터 워크로드 정보를 수신하고, 수신된 워크로드 정보에 적어도 부분적으로 기초하여, 적어도 하나의 데이터 패킷이 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송되게 할지 여부를 결정하도록 구성된다.
제 2 프로세싱 컴포넌트 상의 워크로드에 기초하여 데이터 패킷들을 하나의 프로세싱 컴포넌트로부터 DCVS 를 구현하는 제 2 프로세싱 컴포넌트로 전송할지 또는 전송하지 않을지 여부를 결정하기 위한 능력은 PCD 의 프로세싱 컴포넌트들의 향상된 전력 관리를 허용한다. 하나의 예시적인 이점은 제 2 프로세싱 컴포넌트가 바쁠 때 프로세서간 통신을 전송하는 것을 회피하는 능력이다. 이러한 상황들에서, 제 2 프로세싱 컴포넌트는, 프로세서간 통신으로부터의 증가된 워크로드가 제 2 프로세싱 컴포넌트의 DCVS 로 하여금 보다 높은 주파수에서 동작하는 등에 의해 전력 소모를 증가시키게 하는 레벨에서 동작하고 있을 수도 있다. 제 2 프로세싱 컴포넌트가 바쁘고 및/또는 임계 레벨 위에서 동작하고 있다고 판정되는 경우에, 제 1 프로세싱 컴포넌트로부터의 데이터는 제 2 프로세싱 컴포넌트가 덜 바쁠 때까지 (버퍼링 등에 의해) 가능하면 지연될 수도 있다. 이러한 방식으로, 본 시스템들 및 방법들은 프로세서간 통신으로부터의 전력 소모에서의 상당한 그리고 종종 불필요한 증가를 회피한다.
특히 PCD 내의 동작을 참조하여 설명되었지만, 동적 클럭 및 전압 스케일링 (DCVS) 인지 프로세서간 통신을 위한 설명된 시스템들 및 방법들은, 전력 소모를 절약하거나, 성능을 강화하거나, 서비스의 품질을 향상시키는 것이 바람직한 프로세서를 갖는 임의의 시스템 또는 프로세싱 서브시스템에 적용가능하다. 다르게 말하면, 설명된 시스템들 및 방법들은, 휴대용 디바이스 이외의 시스템에서 동적 클럭 및 전압 스케일링 (DCVS) 인지 프로세서간 통신을 제공하기 위해 구현될 수도 있다.
본원에 설명된 동적 클럭 및 전압 스케일링 (DCVS) 인지 프로세서간 통신을 위한 시스템, 또는 그 시스템의 부분들은 하드웨어 또는 소프트웨어로 구현될 수도 있다. 하드웨어에서 구현되는 경우에, 디바이스들은 다음과 같은 기술들: 개별 전자 컴포넌트들, 집적 회로, 적절하게 구성된 반도체 디바이스들 및 저항성 엘리먼트들 등을 갖는 애플리케이션-특정 집적 회로 중 임의의 것 또는 이들의 조합을 포함할 수 있다. 이들 하드웨어 디바이스들 중 임의의 것은, 단독으로 작용하거나 다른 디바이스들과 작용하거나 메모리와 같은 다른 컴포넌트들과 작용하든지 간에, 개시된 방법들의 다양한 동작들 또는 단계들을 수행하기 위한 컴포넌트들 또는 수단을 형성 또는 포함할 수도 있다.
본원에 설명된 PCD 또는 다른 시스템이 소프트웨어로 구현되거나 부분적으로 구현되는 경우에, 소프트웨어 부분은 제 1 프로세싱 컴포넌트에서 적어도 하나의 데이터 패킷을 수신하거나, 동적 클럭 및 전압 스케일링 (DCVS) 하에서 동작하는 제 2 프로세싱 컴포넌트에 관한 워크로드 정보를 제 1 프로세싱 컴포넌트에서 수신하거나, 그 적어도 하나의 데이터 패킷을 제 1 프로세싱 컴포넌트로부터 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부에 관해 수신된 워크로드 정보에 적어도 부분적으로 기초하여 결정하기 위해 사용될 수 있다.
다양한 엘리먼트들을 나타내는데 사용된 소프트웨어 및 데이터는 메모리에 저장되고 적합한 명령 실행 시스템 (마이크로프로세서) 에 의해 실행될 수 있다. 소프트웨어는 논리 함수들을 구현하기 위한 실행가능한 명령들의 순서화된 리스팅을 포함할 수도 있고, 단일 또는 다중-코어 프로세서 또는 프로세서-포함 시스템과 같은 명령 실행 시스템, 장치, 또는 디바이스에 의해 또는 와 함께 사용하기 위해 임의의 "프로세서-판독가능 매체" 에 수록될 수 있다. 이러한 시스템들은 일반적으로 명령 실행 시스템, 장치, 또는 디바이스로부터 명령들을 액세스하고 그 명령들을 실행할 것이다.
도 1 은 본 개시물의 실시형태들이 채용될 수도 있는 무선 통신 시스템 (100) 과 통신하는 무선 디바이스 (110) 를 나타내는 도이다. 상기 시스템들의 각각 또는 임의의 것은 라벨 "무선 통신 프로토콜" 또는 "무선 통신 기술" 로 본원에서 일반적으로 지칭될 수도 있다.
도 1 은 하나 이상의 무선 통신 시스템과 통신할 수 있는 무선 전화기의 형태로 본 시스템들 및 방법들을 구현할 수도 있는 PCD (100) 의 예시적인, 비제한적인 양태의 블록도이다. 이러한 무선 통신 시스템은, 롱 텀 에볼루션 (LTE) 시스템, 코드 분할 다중 액세스 (CDMA) 시스템, 주파수 분할 다중 액세스 (FDMA) 시스템, 이동 통신을 위한 글로벌 시스템 (GSM) 시스템, 무선 로컬 영역 네트워크 (WLAN) 시스템, 몇몇 다른 무선 시스템, 또는 이들의 임의의 것의 조합을 포함하는, 브로드밴드 무선 통신 시스템일 수도 있다. CDMA 시스템은, 광대역 CDMA (WCDMA), CDMA 1X, EVDO (Evolution-Data Optimized), 시간 분할 동기식 CDMA (TD-SCDMA), 또는 CDMA 의 몇몇 다른 버전을 구현할 수도 있다.
도시된 바와 같이, PCD (100) 는 함께 커플링되는 아날로그 신호 프로세서 (126) 및 이종의 멀티-코어 중앙 프로세싱 유닛 ("CPU") (110) 을 포함하는 온-칩 시스템 (102) 을 포함한다. CPU (110) 는 통상의 기술자에 의해 이해되는 바와 같이 0 번째 코어 (222), 제 1 코어 (224), 및 제 N 코어 (230) 를 포함할 수도 있다. 또한, CPU (110) 대신에, 통상의 기술자에 의해 이해되는 바와 같이 디지털 신호 프로세서 ("DSP") 가 또한 채용될 수도 있다. 더욱이, 이종의 멀티-코어 프로세서들의 통상의 기술자에 의해 이해되는 바와 같이, 코어들 (222, 224, 230) 의 각각은 유사한 동작 조건들 하에서 상이한 효율들로 워크로드들을 프로세싱할 수도 있다. 코어들 (222, 224, 230) 의 각각은 PCD (100) 의 하나 이상의 기능을 제어할 수도 있다. 예를 들어, 제 1 코어 (224) 는 PCD (100) 에서 그래픽을 제어하기 위한 그래픽 프로세싱 유닛 (GPU) 일 수도 있다. 이러한 GPU/제 1 코어 (224) 는, GPU 코어 (326) 와 (버퍼들을 포함하는) 메모리 (112) 사이의 통신을 제어하는 것을 포함하는, PCD (100) 에서 그래픽을 제어하기 위해 필요한 드라이버들 및/또는 기타 컴포넌트들을 더 포함할 수도 있다. 다른 예로서, 제 N 코어 (230) 와 같은 다른 코어는 카메라 (148) 를 제어할 수도 있고, 이러한 코어 (230) 는 코어 (230) 와 (버퍼들을 포함하는) 메모리 (112) 사이의 통신을 포함하는, 카메라 (148) 를 제어하기 위해 필요한 드라이버들 및/또는 다른 컴포넌트들을 더 포함할 수도 있다.
일부 실시형태들에서, PCD (100) 는 멀티코어 CPU (110) 및/또는 코어들 (222, 224, 230) 중 하나 이상과 통신하는 프로세서 상호통신 (processor intercommunication) ("PI") 모듈 (101) 을 포함할 수도 있다. PI 모듈 (101) 은 이하 설명되는 바와 같이 프로세싱 유닛들/코어들 (222, 224, 230) 사이의 통신의 일부 또는 전부를 제어하도록 동작할 수도 있다. PI 모듈 (101) 은 멀티코어 CPU (110) 에 의해 실행되는 소프트웨어를 포함할 수도 있다. 하지만, PI 모듈 (101) 은 본 발명의 범위로부터 벗어남이 없이 하드웨어 및/또는 펌웨어로부터 또한 형성될 수도 있다. 다른 구현들에서, PCD (100) 는 별개의 PI 모듈 (101) 을 포함하지 않을 수도 있고, 하지만 대신에, 코어들 (222, 224, 230) 중 하나 이상은 다른 프로세싱 유닛들/코어들 (222, 224, 230) 과의 통신을 제어하기 위한 모듈들, 컴포넌트들, 로직, 소프트웨어, 또는 펌웨어를 가질 수도 있다.
도 1 에서 예시된 바와 같이, 디스플레이 제어기 (128) 및 터치 스크린 제어기 (130) 는 멀티코어 CPU (110) 에 커플링된다. 다시, 온-칩 시스템 (102) 외부의 디스플레이/터치스크린 (132) 는 디스플레이 제어기 (128) 및 터치 스크린 제어기 (130) 에 커플링된다.
도 1 의 PCD (100) 는 비디오 인코더 (134), 예컨대, PAL (phase alternating line) 인코더, SECAM (sequential couleur a memoire) 인코더, 또는 NTSC (national television system(s) committee) 인코더, 또는 멀티코어 CPU (110) 에 커플링된 임의의 다른 유형의 비디오 디코더 (134) 를 더 포함할 수도 있다. 또한, 비디오 증폭기 (136) 는 비디오 인코더 (134) 및 디스플레이/터치스크린 (132) 에 커플링된다. 비디오 포트 (138) 는 비디오 증폭기 (136) 에 커플링된다. 도 1 에 도시된 바와 같이, 범용 직렬 버스 (USB) 제어기 (140) 가 멀티코어 CPU (110) 에 커플링된다. 또한, USB 포트 (142) 가 USB 제어기 (140) 에 커플링된다. 메모리 (112) 및 SIM (subscriber identity module) 카드 (146) 가 또한 멀티코어 CPU (110) 에 커플링될 수도 있다. 다른 실시형태들에서, 다중 SIM 카드들 (146) 이 구현될 수도 있다.
디지털 카메라 (148) 가 멀티코어 CPU (110) 에 커플링될 수도 있다. 상술한 바와 같이, 이러한 실시형태들에서, 디지털 카메라 (148) 는 멀티코어 CPU (110) 의 코어들 중 하나에 의해 제어될 수도 있다. 예시적인 양태에서, 디지털 카메라 (148) 는 CCD (charge-coupled device) 카메라 또는 CMOS (complementary metal-oxide semiconductor) 카메라이다.
도 1 에서 추가적으로 예시된 바와 같이, 스테레오 오디오 CODEC (150) 이 멀티코어 CPU (110) 에 커플링될 수도 있다. 더욱이, 오디오 증폭기 (152) 가 스테레오 오디오 CODEC (150) 에 커플링될 수도 있다. 일 예시적인 양태에서, 제 1 스테레오 스피커 (154) 및 제 2 스테레오 스피커 (156) 가 오디오 증폭기 (152) 에 커플링된다. 도 1 은, 마이크로폰 증폭기 (158) 가 또한 스테레오 오디오 CODEC (150) 에 커플링될 수도 있음을 보여준다. 추가적으로, 마이크로폰 (160) 은 마이크로폰 증폭기 (158) 에 커플링될 수도 있다. 특정 양태에서, 주파수 변조 (FM) 라디오 튜너 (162) 가 스테레오 오디오 CODEC (150) 에 커플링될 수도 있다. 또한, FM 안테나 (164) 가 FM 라디오 튜너 (162) 에 커플링된다. 또한, 스테레오 헤드폰들 (166) 이 스테레오 오디오 CODEC (150) 에 커플링될 수도 있다.
도 1 은, 모뎀 디바이스/무선 주파수 ("RF") 트랜시버 (168) 가 멀티코어 CPU (110) 에 커플링될 수도 있음을 더 나타낸다. 모뎀 디바이스 (168) 는, GSM, CDMA, W-CDMA, TDSCDMA, LTE, 및 비제한적으로 FDB/LTE 및 PDD/LTE 무선 프로토콜들과 같은 LTE 의 변형형태들과 같은, 무선 통신 프로토콜들 중 하나 이상을 지원할 수도 있다. 추가적으로, 다중 모뎀 디바이스들 (168) 이 존재할 수도 있고, 이러한 실시형태들에서, 상이한 모뎀 디바이스들 (168) 이 상기 나열된 무선 통신 프로토콜들 및/또는 기술들의 일부 또는 전부를 지원할 수도 있다.
일부 구현들에서, 모뎀 디바이스 (168) 는 별개의 프로세서, 메모리, 및/또는 RF 트랜시버를 포함하는 다양한 컴포넌트들로 더 이루어질 수도 있다. 다른 구현들에서, 모뎀 디바이스 (168) 는 단순히 RF 트랜시버일 수도 있다. 또한, 모뎀 디바이스 (168) 는 집적 회로에서 통합될 수도 있다. 즉, 모뎀 디바이스 (168) 를 포함하는 컴포넌트들은 칩에서의 풀 솔루션일 수도 있다. 추가적으로, 모뎀 디바이스 (168) 를 포함하는 다양한 컴포넌트들이 또한 멀티코어 CPU (110) 에 커플링될 수도 있다. RF 스위치 (170) 는 모뎀 디바이스 (168) 및 RF 안테나 (172) 에 커플링될 수도 있다. 다양한 실시형태들에서, 다중 RF 안테나들 (172) 이 존재할 수도 있고, 각각의 이러한 RF 안테나 (172) 는 RF 스위치 (170) 를 통해 모뎀 디바이스 (168) 에 커플링될 수도 있다.
도 1 에서 도시된 바와 같이, 키패드 (174) 는 멀티코어 CPU (110) 에 직접 또는 아날로그 신호 프로세서 (126) 를 통해 커플링될 수도 있다. 또한, 마이크로폰 (176) 을 갖는 모노 헤드셋이 멀티코어 CPU (110) 및 또는 아날로그 신호 프로세서 (126) 에 커플링될 수도 있다. 또한, 진동기 디바이스 (178) 가 또한 멀티코어 CPU (110) 및/또는 아날로그 신호 프로세서 (126) 에 커플링될 수도 있다. 도 1 은 또한, 전력 공급기 (188) 가 온-칩 시스템 (102) 에 커플링될 수도 있고, 일부 구현들에서, 전력 공급기 (188) 는 USB 제어기 (140) 를 통해 커플링된다. 특정 양태에서, 전력 공급기 (188) 는 전력을 필요로 하는 PCD (100) 의 다양한 컴포넌트들에 전력을 제공하는 직류 (DC) 전력 공급기이다. 또한, 특정 양태에서, 전력 공급기 (188) 는 AC 전원에 연결된 교류 (AC) 대 DC 트랜스포머로부터 유도된 DC 전력 공급기 또는 재충전가능한 DC 배터리일 수도 있다.
멀티코어 CPU (110) 는 또한 하나 이상의 내부의, 온-칩 열 센서들 (157A) 및 하나 이상의 외부의, 오프-칩 열 센서들 (157B) 에 커플링될 수도 있다. 온-칩 열 센서들 (157A) 은 수직 PNP 구조에 기초한 하나 이상의 PTAT (proportional to absolute temperature) 온도 센서들을 포함할 수도 있고, 통상적으로 상보형 금속 산화물 반도체 ("CMOS") 초고밀도 집적 ("VLSI") 회로에 전용된다. 오프-칩 열 센서들 (157B) 은 하나 이상의 서미스터들을 포함할 수도 있다. 열 센서들 (157) 은 아날로그-대-디지털 컨버터 ("ADC") 제어기 (103) 로 디지털 신호들로 변환되는 전압 드롭 (voltage drop) 을 생성할 수도 있다. 하지만, 본 발명의 범위로부터 벗어남이 없이 다른 유형들의 열 센서들 (157) 이 채용될 수도 있다.
도 1 은 또한, PCD (110) 가 또한, 데이터 네트워크, 예컨대, 로컬 영역 네트워크, 개인 영역 네트워크, 또는 임의의 다른 네트워크를 액세스하기 위해 사용될 수도 있는 네트워크 카드 (114) 를 포함할 수도 있음을 나타낸다. 네트워크 카드 (114) 는 블루투스 네트워크 카드, WiFi 네트워크 카드, 개인 영역 네트워크 (PAN) 카드, 또는 당해 기술분야에서 잘 알려진 임의의 다른 네트워크 카드일 수도 있다. 또한, 네트워크 카드 (114) 는 집적 회로에 통합될 수도 있다. 즉, 네트워크 카드 (114) 는 칩 내의 풀 솔루션일 수도 있고, 별개의 네트워크 카드 (114) 가 아닐 수도 있다.
도 1 에 도시된 바와 같이, 디스플레이/터치스크린 (132), 비디오 포트 (138), USB 포트 (142), 카메라 (148), 제 1 스테레오 스피커 (154), 제 2 스테레오 스피커 (156), 마이크로폰 (160), FM 안테나 (164), 스테레오 헤드폰들 (166), RF 스위치 (170), RF 안테나 (172), 키패드 (174), 모노 헤드셋 (176), 진동기 (178), 및 전력 공급기 (188) 는 온-칩 시스템 (102) 외부에 있다.
온-칩 시스템 (102) 은 또한 다양한 버스 제어기들 (미도시) 를 포함할 수도 있다. 예를 들어, 제 1 예는 비디오 인코더 (134) 를 포함하는 멀티미디어 서브시스템의 컴포넌트들에 CPU (110) 를 통신가능하게 커플링하는 버스 인터페이스에서 신호들에 응답하는 것일 수도 있다. 임의의 수의 유사하게 구성된 버스 제어기들이 온-칩 시스템 (102) 에서 배열된 버스 인터페이스를 모니터링하기 위해 배열될 수 있음을 이해하여야 한다. 대안적으로, 단일의 버스 제어기가, 소망될 수도 있는 바와 같이 CPU (110) 와 PCD (100) 의 다양한 서브시스템들 사이에 신호들을 통신하는 2 개 이상의 버스 인터페이스들을 모니터링하도록 구성될 수 있을 것이다.
특정 양태에서, 본원에서 기술된 방법 단계들 중 하나 이상은 메모리 (112) 에 저장된 데이터 및 프로세서 명령들의 조합을 통해 가능하게 될 수도 있다. 이들 명령들은 본원에서 설명된 방법들을 수행하기 위해 멀티코어 CPU (110) 에서 하나 이상의 코어들에 의해 실행될 수도 있다. 또한, 멀티코어 CPU (110) , 코어들 (222, 224, 230) 중 하나 이상, 메모리 (112), PI 모듈 (101), 또는 이들의 조합은 DCVS 인지 프로세서간 통신을 가능하게 하기 위해 본원에서 기술된 방법 단계들 중 하나 이상을 실행하기 위한 수단으로서 기능할 수도 있다.
도 2a 는 도 1 에서 예시된 PCD 에서 구현될 수도 있는 프로세싱 컴포넌트에 대한 시간 주기에 걸친 예시적인 이론적 로드를 나타내는 그래프이다. 도 2a 에서, 수직 축은 프로세싱 컴포넌트 상의 로드를 나타낸다. 도 2a (및 후속하는 그래프 3a) 는 로드 레벨에 대한 2 개의 경계들 - 하위 범위 상의 80% 및 상위 범위 상의 90% - 을 나타내지만, 이들 경계들은 예시적인 목적들을 위한 것이고, 임의의 수의 또는 양의 경계 레벨들이 프로세싱 컴포넌트에 대해 이용가능할 수도 있다. 수평 축은 시간을 나타낸다. 도 2a 는 4 개의 동일한 시간 간격들 (T1-T4) 을 나타내지만, 로드는 원하는 바에 따라 임의의 수의 동일한 또는 동일하지 않은 시간 간격들에 걸쳐 결정되거나 측정될 수도 있다.
도 2a 에서 곡선에 의해 예시된 프로세싱 컴포넌트 상의 로드는 프로세싱 컴포넌트 상의 활성 워크로드를 나타내고, 임의의 원하는 방식으로 측정되거나 결정될 수도 있다. 도 2a 의 예에서 도시된 바와 같이, 프로세싱 컴포넌트의 활성 워크로드는 하위 범위 상의 80% 및 상위 범위 상의 90% 의 경계들 내에 잔류한다. 도 2a 에서 측정되고 있는 프로세싱 컴포넌트가 DCVS 알고리즘 또는 로직을 구현한다고 가정하면, 이들 범위들 내의 활성 워크로드의 측정은 DCVS 알고리즘 또는 로직으로 하여금 프로세싱 유닛의 주파수를 정상 상태 (steady state) 에서 유지하게 할 수도 있다.
도 2b 는 도 2a 에서 예시된 이론적 로드 하의 프로세싱 컴포넌트의 예시적인 주파수를 나타내는 그래프이다. 도 2b 그래프에서, 수직 축은 DCVS 알고리즘 또는 로직으로부터의 명령들 등에 따라 프로세싱 컴포넌트가 유지될 수도 있는 동작 주파수 레벨들을 나타낸다. 특히, 도 2b 그래프 (및 후속하는 도 3b 그래프) 는 주어진 프로세싱 컴포넌트에 대해 이용가능한 2 개의 동작 주파수 레벨들 (800MHz 및 1.4GHz) 을 나타낸다; 하지만, 이들 동작 주파수 레벨들은 예시적인 목적들을 위한 것이고, 임의의 수의 동작 주파수 레벨들이 주어진 프로세싱 컴포넌트에 대해 이용가능할 수도 있고, 특정 주파수들은 원하는 바에 따라 예시된 것들로부터 변화할 수도 있음이 생각된다. 수평 축은 시간을 나타낸다.
도 2b 에서 예시된 바와 같이, 프로세싱 컴포넌트는 프로세싱 컴포넌트의 하위 주파수 800MHz 에서 DCVS 에 의해 유지되고 있다. 통상의 기술자에 의해 이해되는 바와 같이, 프로세싱 컴포넌트를 보다 낮은 주파수에서 동작시키는 것은 보다 낮은 전력 소모를 초래한다. 따라서, 프로세싱 컴포넌트에 대한 활성 워크로드가 도 2a 에서 90% 의 상위 경계 하에 머무르고 있는 것으로서 결정되고/측정되는 것의 결과로서, 프로세싱 유닛의 DCVS 알고리즘 또는 로직은 도 2b 에서 더 낮은 주파수에서 정상 상태에서 프로세싱 컴포넌트의 주파수를 유지하여 전력 소모를 감소시킨다.
하지만, 전력 소모를 감소시키기 위한 프로세싱 컴포넌트에 대한 DCVS 알고리즘 또는 로직의 수고들은 도 3a 내지 도 3b 에서 예시된 바와 같이 다른 프로세싱 컴포넌트들로부터의 통신에 의해 약화될 수 있다. 도 3a 는 도 1 에서 예시된 PCD 실시형태에서 구현될 수도 있는 프로세싱 컴포넌트에 대한 시간 주기에 걸친 다른 예시적인 이론적 로드를 나타내는 그래프이다. 도 3a 에서, 수직 축은 다시 프로세싱 컴포넌트 상의 로드를 나타낸다. 도 3a 는 로드 레벨에 대한 2 개의 경계들 - 하위 범위 상의 80% 및 상위 범위 상의 90% - 을 나타내지만, 이들 경계들은 예시적인 목적들을 위한 것이고, 임의의 수의 또는 양의 경계 레벨들이 프로세싱 컴포넌트에 대해 이용가능할 수도 있다. 수평 축은 시간을 나타낸다. 도 3a 는 4 개의 동일한 시간 간격들 (T1-T4) 을 나타내지만, 로드는 원하는 바에 따라 임의의 수의 동일한 또는 동일하지 않은 시간 간격들에 걸쳐 결정되거나 측정될 수도 있다.
도 3a 에서 곡선에 의해 예시된 프로세싱 컴포넌트 상의 로드는 프로세싱 컴포넌트 상의 활성 워크로드를 다시 나타내고, 임의의 원하는 방식으로 측정되거나 결정될 수도 있다. 도 2a 의 이전 그래프와는 상이하게, 도 3a 에서는, 프로세싱 컴포넌트의 활성 워크로드는 시간 간격 T2 에서 상위 경계 또는 90% 위로 상승한다. 프로세싱 컴포넌트들의 활성 워크로드에서의 증가들은 다른 프로세싱 유닛으로부터의 프로세서간 통신 - 예를 들어, CPU (100) 에서의 다른 코어 (222, 224, 230) 와 같은 다른 프로세싱 컴포넌트로부터의 메시지, 인터럽트, 원격 프로시저 콜, 공유된 메모리 콜 등에 의해 야기될 수도 있다. 이러한 수신 프로세싱 컴포넌트가 이미 활성 상태에 있는 동안 수신된 프로세서간 통신은 수신 프로세싱 컴포넌트 상에서 하나 이상의 추가적인 스레드들을 초래할 수 있어, 프로세싱 컴포넌트 상의 활성 워크로드를 증가시킨다. 도 3a 에서 예시된 바와 같이, 프로세싱 컴포넌트의 활성 워크로드는 그 다음, 시간 간격들 T3 및 T4 에 대해 90% 상위 범위 아래로 다시 돌아갈 수도 있다.
도 3a 에서 예시된 90% 의 상위 범위 위의 시간 간격 T2 에서의 활성 워크로드의 측정의 결과로서, 프로세싱 컴포넌트의 DCVS 알고리즘 또는 로직은 프로세싱 컴포넌트로 하여금 도 3b 에서 예시된 바와 같이 하나 이상의 시간 간격들에 대해 보다 높은 주파수에서 동작하게 할 수도 있다. 도 3b 는 도 3a 에서 예시된 이론적인 로드 하에서의 프로세싱 유닛의 예시적인 주파수를 나타내는 그래프이다. 도 3b 그래프에서, 수직 축은 DCVS 알고리즘 또는 로직으로부터의 명령들 등에 따라 프로세싱 컴포넌트가 유지될 수도 있는 동작 주파수 레벨들을 다시 나타낸다. 특히, 도 3b 그래프는 주어진 프로세싱 컴포넌트에 대해 이용가능한 2 개의 동작 주파수 레벨들 (800MHz 및 1.4GHz) 를 나타낸다; 하지만, 이들 동작 주파수 레벨들은 예시적인 목적들을 위한 것이고, 임의의 수의 동작 주파수 레벨들이 주어진 프로세싱 컴포넌트에 대해 이용가능할 수도 있고, 특정 주파수들은 원하는 바에 따라 예시된 것들로부터 변화할 수도 있음이 생각된다. 수평 축은 시간을 나타낸다.
도 3b 에서 예시된 바와 같이, 프로세싱 컴포넌트는 처음 2 개의 시간 간격들 T1 및 T2 에 대해 프로세싱 컴포넌트의 하위 주파수, 800MHz 에서 DCVS 에 의해 유지되고 있다. 하지만, T2 에서의 90% (또는 어떤 모든 소망되는 임계치) 위의 활성 워크로드의 측정 또는 결정의 결과로서, 프로세싱 컴포넌트의 주파수는 적어도 시간 간격 T3 에 대해 1.4GHz 로 증가된다. 상위 주파수에서의 프로세싱 컴포넌트의 이러한 증가는 프로세싱 컴포넌트의 전력 소모에서의 심각한 증가를 초래할 수 있다. 따라서, 다른 프로세싱 컴포넌트로부터의 프로세서간 통신의 결과로서, 도 3a 내지 도 3b 에서 예시된 프로세싱 컴포넌트에 대한 활성 워크로드는 도 3a 에서의 90% 의 상위 경계를 초과하는 것으로서 결정/측정될 수도 있어, 도 3b 에서의 프로세싱 유닛의 주파수에서의 증가를 초래하고, 전력 소모를 증가시킨다.
도 4 는 프로세싱 컴포넌트들에 의한 전력 소모를 더 잘 관리하기 위해 DCVS 인지 프로세서간 통신을 지원하기 위한 예시적인 시스템을 나타내는 블록도이다. 도 4 에서 예시된 실시형태에서, 데이터는, 도 1 에서 예시된 멀티코어 CPU (110) 의 코어들 (222, 224, 230) 중 하나일 수 있는 제 1 코어 (410) 로서 도 4 에서 예시된 제 1 프로세싱 컴포넌트에 의해 수신된다. 제 1 코어 (410) 는, 애플리케이션 프로세서/코어, 모뎀 프로세서/코어, WiFi 프로세서/코어, 비디오 디코더 프로세서/코어, 오디오 디코더 프로세서/코어, GPU/그래픽 코어 등을 포함하는, PCD (100) 에서의 프로세서 또는 코어 (222, 224, 230) 중 임의의 유형일 수 있을 것이다. 도 4 에서 예시된 구현에서, 제 1 코어 (410) 는 패킷 전송 로직 (414) 을 갖는 프로세서, CPU (412) 및 CPU (412) 와 통신하는 적어도 하나의 버퍼 (418) 를 포함한다. 도 4 에서 도시된 바와 같이, 버퍼 (418) 는 제 1 코어 (410) 에 대해 (또는 CPU (412) 에 대해) 내부에 있는 버퍼 (418A) 일 수도 있다. 추가적으로, 또는 대안적으로, 버퍼 (418) 는 또한, 제 1 코어 (410) 및 추가적인 프로세싱 컴포넌트들에 의해 공유되는 외부 버퍼들 (418B) 을 포함하는, 하나 이상의 외부 버퍼들 (418B) 일 수도 있다.
도 4 에서 제 1 코어 (410) 의 피처들의 구성은 예시적인 것이고 비제한적이다. 예를 들어, 비록 CPU (412) 상에 포함되는 것으로 도시되지만, 일부 실시형태들에서, 패킷 전송 로직 (414) 은 CPU (412) 및/또는 제 1 코어 (410) 외부의 하지만 그것과 통신하는 별개의 하드웨어 또는 소프트웨어 컴포넌트, 모듈, 또는 로직일 수도 있다. 유사하게, 비록 CPU (412) 그 자체가 제 1 코어 (410) 내에 포함되는 것으로서 예시되지만, 일부 구현형태들에서, CPU (412) 는 제 1 코어 (410) 외부에 있고 하지만 그 제 1 코어 (410) 와 통신할 수 있을 것이다. 추가적으로, 일부 구현형태들에서, CPU (412) 그 자체는 제 1 코어 (410) 를 포함할 수도 있다.
도 4 의 예시적인 시스템은 또한, 제 1 코어 (410) 와 통신하는 제 2 코어 (420) 로서 예시되는, 제 1 프로세싱 컴포넌트와 통신하는 제 2 프로세싱 컴포넌트를 포함한다. 제 2 코어 (420) 는 또한, 애플리케이션 프로세서/코어, 모뎀 프로세서/코어, WiFi 프로세서/코어, 비디오 디코더 프로세서/코어, 오디오 디코더 프로세서/코어, GPU/그래픽 코어 등을 포함하는, PCD (100) 에서의 프로세서 또는 코어 (222, 224, 230) 중 임의의 유형일 수도 있다. 도 4 에서 예시된 구현에서, 제 2 코어 (420) 는 프로세서, CPU (422) 를 포함한다. 비록 CPU (422) 가 제 2 코어 (420) 내에 포함되는 것으로서 예시되지만, 일부 구현형태들에서, CPU (422) 는 제 2 코어 (420) 외부에 있고 하지만 제 2 코어 (420) 와 통신할 수 있을 것이다. 추가적으로, 일부 구현형태들에서, CPU (422) 그 자체가 제 2 코어 (420) 를 포함할 수도 있다.
도 4 에서 예시된 바와 같이, CPU (422) 는 DCVS 모듈 (424) 과 통신한다. DCVS 모듈 (424) 은 제 2 코어 (420) 및/또는 제 2 코어 (420) 의 프로세서 CPU (422) 에 대해 동적 클럭 및 전압 스케일링을 수행한다. DCVS 모듈 (424) 은 소망하는 바에 따라 하드웨어, 소프트웨어, 또는 펌웨어로 구현될 수도 있다. 추가적으로, 비록 CPU (422) 외부에 있는 것으로서 예시되지만, DCVS 모듈 (424) 은 대신에 CPU (422) 의 부분일 수도 있다. 유사하게, DCVS 모듈 (424) 은 또한, 제 2 코어 (420) 외부에 위치되지만 제 2 코어 (420) 와 통신할 수도 있다. 어떻게 구현되든지에 관계 없이, DCVS 모듈 (424) 은, 예를 들어 도 2a 및 도 2b 및 도 3a 및 도 3b 에 대해 상기 논의된 동작 주파수 조절과 같이, 활성 워크로드에 응답하여 제 2 코어 (420) 및/또는 CPU (422) 에 대한 전력 소모 조정의 적어도 일부 형태를 수행한다.
예시된 DCVS 모듈 (424) 은 제 1 코어 (410) 의 패킷 전송 로직 (414) 에 의해 판독되거나 패킷 전송 로직 (414) 에 통신될 수도 있는 방식으로 제 2 코어 (420) 및/또는 CPU (422) 의 활성 워크로드를 측정하기 위한 카운터 (426) 를 포함한다. 일부 구현들에서, 카운터 (426) 는 DCVS 모듈 (424) 의 컴포넌트 또는 부분일 수도 있다. 이러한 구현들에서, 카운터 (426) 는, 예를 들어, 현재의 샘플링 주기/시간 간격에서 비-유휴 스레드들을 실행하는데 제 2 코어 (420) 및/또는 CPU (422) 가 소비한 비지 (busy) 클럭 사이클들을 카운트하는 DCVS 모듈 (424) 내의 로직일 수도 있다. 다른 구현들에서, 카운터 (426) 는 DCVS 모듈 (424) 로부터 정보를 수신하거나 판독하는 DCVS 모듈 (424) 로부터 분리된 하드웨어, 소프트웨어, 또는 펌웨어 모듈, 카운터, 또는 컴포넌트일 수도 있다.
제 2 코어 (420) 는 또한, 제 1 코어 (410) 와 같은 다른 코어들로부터 제 2 코어 (420) 에 의해 수신된 데이터 또는 데이터 패킷들을 제어하기 위한 도 4 에서 예시된 것과 같은 패킷 수신 로직 (428) 을 포함할 수도 있다. 제 2 코어 (420) 의 패킷 수신 로직 (428) 및/또는 CPU (424) 는 도 4 에서 예시된 바와 같이 하나 이상의 외부 버퍼들 (418B) 과 통신할 수도 있다. 외부 버퍼 (418B) 는 또한, 제 1 코어 (410) 및/또는 제 1 코어 (410) 의 CPU (412) 와 같은 다른 프로세싱 컴포넌트들과 통신할 수도 있다. 패킷 수신 로직 (428) 은 하드웨어, 소프트웨어, 또는 펌웨어로 구현될 수도 있다. 추가적으로, 패킷 수신 로직 (428) 은 다양한 실시형태들에서 제 2 코어 (420) 의 CPU (422) 외부에 있을 수도 있고, 또는 내부에 포함될 수도 있다.
동작에서, 도 4 의 시스템 (400) 은 제 1 코어 (410) 와 제 2 코어 (420) 사이 등에서의 DCVS 인지 프로세서간 통신을 허용한다. 도 4 에서 예시된 바와 같이, 제 1 코어 (410), 예컨대 WiFi 코어는 데이터의 하나 이상의 스트림들을 수신하고, 각 스트림은 데이터 패킷들로 구성된다. 일부 구현들에서, 제 1 코어 (410) 의 CPU (412) 는 수신된 데이터 패킷들 중 하나 이상이, 이 예에서 애플리케이션들을 동작시키기 위한 코어인 제 2 코어 (420) 와 같은 하나 이상의 추가적인 프로세싱 컴포넌트들에 전송될 필요가 있는 것을 결정할 수도 있다. 다른 구현들에서, 다른 엘리먼트 또는 컴포넌트는, 수신된 데이터 패킷들 중 하나 이상이 하나 이상의 추가적인 프로세싱 컴포넌트들에 전송될 필요가 있다는 결정을 할 수도 있다. 이러한 다른 엘리먼트들 또는 컴포넌트들은 패킷 전송 로직 (414) 과 같은 제 1 코어 (410) 의 부분일 수도 있다. 대안적으로, 이러한 다른 엘리먼트들은, 데이터가 제 1 코어 (410) 에 전송되기 이전에 결정을 실시하고 그 결정을 데이터와 함께 제 1 코어 (410) 에 통신하는 엘리먼트 또는 컴포넌트와 같이, 제 1 코어 (410) 외부에 있을 수도 있다.
데이터 패킷들을 제 2 코어 (420) 와 같은 다른 프로세싱 컴포넌트들로 단순히 포워딩하기 보다는, 제 1 코어 (410) 는 먼저 제 2 코어 (420) 를 포함하는 임의의 목적지 프로세싱 컴포넌트들의 활성 워크로드를 체크한다. 도 4 의 예시적인 시스템에서, 제 1 코어 (410) 의 패킷 전송 로직 (414) 은 제 2 코어 (420) 및/또는 제 2 코어 (420) 의 CPU (422) 의 활성 워크로드를 "판독" 또는 결정하기 위해 제 2 코어 (420) 의 카운터 (426) 로부터 정보를 수신한다. 활성 워크로드는 원하는 임의의 방식으로 판독 또는 수신될 수 있고, 현재의 샘플링 주기에서 비-유휴 스레드들을 실행하는데 제 2 코어 (420)/CPU (422) 가 소비한 비지 클럭 사이클들의 수 또는 제 2 코어 (420)/CPU (422) 의 "비지 퍼센티지 (busy percentage)" 와 같은 임의의 소망되는 형태일 수도 있다.
일부 구현형태들에서, 패킷 전송 로직 (414) 은 제 2 코어 (420)/CPU (422) 의 활성 워크로드를 "판독" 하기 위해 제 2 코어 (420) 의 카운터 (426) 및/또는 DCVS 모듈 (424) 과 직접 통신할 수도 있다. 다른 구현형태들에서, 제 1 코어 (410) 의 CPU (412) 는 활성 워크로드를 "판독" 하기 위해 제 2 코어 (420) 의 카운터 (426) 및/또는 DCVS 모듈 (424) 과 통신할 수도 있고, 이 경우에, CPU (412) 는 제 2 코어 (420)/CPU (422) 의 활성 워크로드에 관한 정보를 패킷 전송 로직 (414) 에 패스할 수도 있다.
패킷 전송 로직 (414) 은 그 다음, 데이터 패킷(들)을 즉시 제 2 코어 (420)/CPU (422) 에 전송할지 여부, 또는 데이터 패킷(들)을 버퍼 (418A 또는 418B) 에 저장하는 등에 의해 데이터 패킷(들)을 제 2 코어 (420)/CPU (422) 에 전송하는 것을 지연시킬지 여부를 결정하기 위해 제 2 코어 (420)/CPU (422) 의 활성 워크로드에 관한 수신된 정보를 이용한다.
하나의 예시적인 실시형태에서, 제 2 코어 (420)/CPU (422) 의 활성 워크로드에 관한 수신된 정보는 제 2 코어 (420)/CPU (422) 에 대한 비지 퍼센티지일 수도 있다. 그 구현형태에서, 패킷 전송 로직 (414) 은 데이터 패킷(들)을 즉시 제 2 코어 (420)/CPU (422) 에 전송하는 것이 제 2 코어 (420)/CPU (422) 의 활성 워크로드에서의 증가를 초래할 것인지 여부를 결정할 수도 있다. 이 결정은 또한, 증가된 활성 워크로드가, 제 2 코어 (420) 의 DCVS 모듈 (424) 로 하여금, 제 2 코어 (420)/CPU (422) 의 동작 주파수를 증가시키는 등에 의해, 제 2 코어 (420)/CPU (422) 의 전력 소모를 증가시키게 할지 여부를 결정하는 것을 포함할 수도 있다.
하나의 구현형태에서, 패킷 전송 로직 (414) 은, 제 2 코어 (420)/CPU (422) 의 활성 워크로드가, DCVS 모듈이 제 2 코어 (420)/CPU (422) 의 동작 주파수를 증가시키는 것을 필요로 하는, 도 2a 및 도 2b 및 도 3a 및 도 3b 에 대해 상기 논의된 90% 임계치와 같은, 미리결정된 임계치를 초과하여 증가할 것인지 여부를 평가함으로써 이 결정을 수행할 수도 있다. 이 평가는, 패킷 전송 로직 (414) 이 목적지 프로세싱 컴포넌트의 수신된 활성 워크로드 퍼센티지를 임계 값에 대해 비교하는 것에 의해, 패킷 전송 로직 (414) 이 목적지 프로세싱 컴포넌트의 활성 워크로드 퍼센티지를 수신하고 데이터를 즉시 전송함으로써 야기될 워크로드에서의 증가를 평가하는 것에 의해, 또는 임의의 다른 원하는 방법에 의해 이루어질 수 있을 것이다.
데이터 패킷(들)을 즉시 제 2 코어 (420)/CPU (422) 에 전송하는 것이 90% 임계치 위로의 비지 퍼센티지 증가를 초래할 것인 경우에, 패킷 전송 로직 (414) 은, 데이터 패킷(들)을 제 2 코어 (420)/CPU (422) 에 즉시 전송하지 않고, 대신에 데이터 패킷(들)을 하나 이상의 버퍼 (418A, 418B) 에 저장할 것을 결정할 수도 있다. 패킷 전송 로직 (414) 은 그 다음, 패킷 전송 로직 (414) 이, 데이터 패킷(들)을 전송하는 것이 제 2 코어 (420)/CPU (422) 의 활성 워크로드를 증가시키지 않을 것이라고 결정할 때까지, 또는, 패킷 전송 로직 (414) 이, 데이터 패킷(들)이 타임아웃되는 것을 회피하기 위해 데이터 패킷(들)이 제 2 코어 (420)/CPU (422) 에 전송되어야만 한다고 결정할 때까지, 제 2 코어 (420)/CPU (422) 의 활성 워크로드에 관한 정보를 계속 수신할 수도 있다. 이러한 상황들에서, 패킷 전송 로직 (414) 은 데이터 패킷(들)이 버퍼 (418A, 418B) 로부터 제 2 코어 (420)/CPU (422) 로 전송되게 할 수 있을 것이다. 대안적으로, 패킷 전송 로직 (414) 은 제 2 코어 (420)/CPU (422) 로 하여금, 제 2 코어 (420)/CPU (422) 에 대한 공유된 메모리 콜을 통하는 등으로, 공유된 버퍼 (418B) 로부터 데이터 패킷(들)을 취출 (retrieve) 하게 할 수 있을 것이다.
데이터 패킷(들)을 제 2 코어 (420)/CPU (422) 에 즉시 전송할지 여부의 패킷 전송 로직 (414) 에 의한 결정은 또한, 동작 파라미터들과 같은 다른 고려사항들에 부분적으로 기초할 수도 있다. 결정을 실시할 때 평가될 수도 있는 예시적인 동작 파라미터들은: 데이터 패킷(들) 내에 포함된 정보의 중요도; 데이터가 전송되고 있는 목적지 프로세싱 컴포넌트의 성질 (즉, 활성 애플리케이션 또는 GPU); 서비스의 품질 ("Qos"); 버퍼들의 이용가능성; 데이터를 버퍼링하는 것의 전력 "비용" 등을 포함한다. 이들 다양한 동작 파라미터들의 평가 또는 결정은 임의의 소망되는 파라미터 또는 최적화 결과에 가중치 (weight) 를 부여하는 알고리즘 또는 알고리즘들의 시리즈들에 의해 이루어질 수도 있다. 대안적으로, 평가들 또는 결정들은 룩-업 테이블 (look-up table) 과 같은 임의의 다른 소망되는 수단에 의해 이루어질 수도 있다.
이러한 팩터들 (factors) 의 고려사항의 하나의 예시는, PCD (100) 에 3G 접속을 통해 수신된 데이터 멀티미디어 데이터의 경우일 수도 있다. 이러한 정보를 PCD (100) 사용자에게 빨리 그리고 인터럽션 없이 제공할 수 있는 QoS 의 중요도는, 목적지 프로세싱 컴포넌트(들)가 바쁘고 정보를 전송하는 것이 목적지 프로세싱 컴포넌트(들)가 고 주파수에서 동작되는 것을 초래할 것인 경우에도, 패킷 전송 로직 (414) 으로 하여금, GPU 또는 비디오 디코더와 같은 다른 프로세싱 컴포넌트에 즉시 정보를 제공하도록 결정하게 할 수도 있다.
다른 한편, 제 1 코어 (410) 에 의해 수신되고 있는 데이터가 다양한 애플리케이션들에 대한 업데이트와 같은 파일 다운로드인 경우에, 이러한 정보의 더 낮은 즉각적인 중요도, 및 QoS 에 대한 이러한 정보의 최소 영향은 패킷 전송 로직 (414) 으로 하여금, 목적지 프로세싱 컴포넌트에 데이터를 전송하는 것이 더 높은 전력 소모 모드에서의 동작을 초래할 수 있을 어떤 가능성이 존재하는 경우에 정보가 버퍼링되어야만한다고 결정하게 할 수도 있다.
다른 예로서, 패킷 전송 로직 (414) 은, PCD (100) 의 아키텍처, PCD (100) 의 현재 동작 조건들, 및/또는 다른 이유들로 인해, 제 1 코어 (410) 에 의해 수신되는 데이터의 버퍼링의 전력 비용이 높고 및/또는 목적지 프로세싱 컴포넌트의 동작의 레벨을 증가시키는 전력 비용보다 더 높은지 여부를 고려할 수도 있다. 이러한 상황들에서, 패킷 전송 로직 (414) 은, 그 제 2 프로세싱 유닛에 대한 활성 워크로드가 그렇지 않으면 데이터 패킷(들)을 버퍼링하는 것을 보장할 경우에도, 제 2 프로세싱 컴포넌트에 데이터를 즉시 전송할 것을 결정할 수도 있다. 대안적으로, 이러한 상황들에서, 패킷 전송 로직 (414) 의 결정 프로세스는, 가능한 경우에 제 2 의/목적지 프로세싱 컴포넌트에 대한 데이터 패킷 전달을 미룸으로써 전력 절약을 획득하기 위해 여전히 시도하고 있는 동안 버퍼링 비용을 최소화하기 위해, 제 2 의/목적지 프로세싱 컴포넌트에 언제 데이터가 전송될 지에 대해, 활성 워크로드 임계 값을 증가시키는 등에 의해, 조정될 수도 있다.
이해의 용이성을 위해, 도 4 는 데이터를 수신하는 제 1 코어 (410) 및 프로세서간 통신에 대한 목적지 프로세싱 컴포넌트인 제 2 코어 (420) 를 나타낸다. 때때로 제 2 코어 (420) (또는 미도시의 추가적인 프로세싱 컴포넌트들) 가 데이터를 수신할 수도 있는 것이 고려되고, 이 경우에, 제 1 코어 (410) 는 프로세서간 통신에 대한 목적지 프로세싱 컴포넌트일 수도 있고, 대응하는 제 2 코어 (420) 의 컴포넌트들은 제 1 코어 (410) 와 통신하고, 데이터 또는 데이터 패킷(들)을 제 1 코어 (410) 에 즉시 전송할지 여부 또는 데이터 패킷(들)을 버퍼 (418B) 등에 버퍼링할지 여부의 결정을 실시한다.
유사하게, 도 4 는 오직 하나의 목적지 프로세싱 컴포넌트 (제 2 코어 (420)) 를 예시하지만, 일부 실시형태들에서, 도 4 에서의 제 1 코어 (410) 가 수신된 데이터 패킷들의 일부 또는 전부를 전송할 수도 있는 다수의 목적지 프로세싱 컴포넌트들이 존재할 수도 있다는 것을 이해하여야 한다. 이러한 실시형태들에서, 제 1 코어 (410) 의 패킷 전송 로직 (414) 은 상기 리스트된 팩터들 또는 고려사항들에 기초하여, 또는 소망되는 임의의 추가적인 팩터들 또는 고려사항들에 기초하여, 각각의 목적지 프로세싱 컴포넌트에 대해 독립적으로 상기 설명된 결정(들)을 실시할 수도 있다. 이러한 실시형태들에서, 패킷 전송 로직 (414) 은, 각각의 목적지 프로세싱 컴포넌트에 대해 결정을 실시할 때 동일한 임계치들을 적용하고 동일한 팩터들 또는 고려사항들을 평가하며, 및/또는 유사한 팩터들 또는 고려사항들을 가중할 필요는 없다. 따라서, 패킷 전송 로직 (414) 은, 비록 제 1 목적지 프로세싱 컴포넌트가 현재 제 2 목적지 프로세싱 컴포넌트보다 더 높은 활성 워크로드에서 동작하고 있는 경우에도, 데이터 패킷들의 특정 셋트는 하나의 목적지 프로세싱 컴포넌트에 즉시 전송되어야 하고, 동일한 데이터 패킷들이 제 2 목적지 프로세싱 컴포넌트에 즉시 전송되기보다는 버퍼링되어야 한다고 결정할 수도 있다.
도 5 는 프로세싱 컴포넌트들에 의한 전력 소모를 관리하기 위해 DCVS 인지 프로세서간 통신을 지원하기 위한 다른 예시적인 시스템을 나타내는 블록도이다. 도 5 에 도시된 시스템 (500) 은 데이터를 수신하는 소스 프로세싱 컴포넌트 (제 1 코어 (510) 및 2 개의 목적지 프로세싱 컴포넌트 (제 2 코어 (520) 및 제 N 코어 (530)) 를 포함한다. 비록 이해의 용이성을 위해 2 개의 목적지 프로세싱 컴포넌트들이 예시되지만, 시스템 (500) 은 임의의 수의 목적지 프로세싱 컴포넌트들을 포함할 수도 있다.
도 5 에 예시된 시스템 (500) 의 실시형태는, 도 5 의 시스템 (500) 이 제 1 코어 (510), 제 2 코어 (520), 및 제 N 코어 (530) 의 각각과 통신하는 별개의 및/또는 중앙집중화된 패킷 전송 로직 모듈 (514) 을 구현하는 점을 제외하고는 도 4 의 시스템 (400) 과 유사하다. 시스템 (500) 에서의 패킷 전송 로직 모듈 (514) 은 도 4 에 대해 상술된 것과 유사한 방식으로 제 1 코어 (510), 제 2 코어 (520), 및 제 N 코어 (530) 사이에서의 DCVS 인지 프로세서간 통신을 제공하도록 동작가능하다.
제 1 코어 (510), 제 2 코어 (520), 및 제 N 코어 (530) 의 각각은, 애플리케이션 프로세서/코어, 모뎀 프로세서/코어, WiFi 프로세서/코어, 비디오 디코더 프로세서/코어, 오디오 디코더 프로세서/코어, GPU/그래픽 코어 등을 포함하는, PCD (100) 에서의 프로세서 또는 코어 (222, 224, 230) (도 1 참조) 중 임의의 유형일 수 있을 것이다. 도 5 에서 예시된 구현에서, 제 1 코어 (510) 는 프로세서, CPU (512) 및 CPU (512) 와 통신하는 적어도 하나의 버퍼 (518) 를 포함한다. 도 5 에서 도시된 바와 같이, 버퍼 (518) 는 제 1 코어 (510) 에 대해 (또는 CPU (512) 에 대해) 내부에 있는 버퍼 (518A) 일 수도 있다. 추가적으로, 또는 대안적으로, 버퍼 (518) 는 또한, 제 1 코어 (510) 및 제 2 코어 (520) 및/또는 제 N 코어 (530) 와 같은 추가적인 프로세싱 컴포넌트들에 의해 공유되는 외부 버퍼들 (518B) 을 포함하는, 하나 이상의 외부 버퍼들 (518B) 일 수도 있다.
도 5 에서 제 1 코어 (510) 의 피처들의 구성은 예시적인 것이고 비제한적이다. 예를 들어, 비록 CPU (512) 그 자체가 제 1 코어 (510) 내에 포함되는 것으로서 예시되지만, 일부 구현형태들에서, CPU (512) 는 제 1 코어 (510) 외부에 있고 하지만 그 제 1 코어 (510) 와 통신할 수 있을 것이다. 추가적으로, 일부 구현형태들에서, CPU (512) 그 자체는 제 1 코어 (510) 를 포함할 수도 있다.
도 5 의 예시적인 시스템은 또한, 제 1 코어 (510) 와 통신하는 제 2 코어 (520) 및 제 N 코어 (530) 로서 예시되는, 제 1 프로세싱 컴포넌트와 통신하는 제 2 및 제 3 프로세싱 컴포넌트를 포함한다. 제 5 에서 예시된 구현에서, 제 2 코어 (520) 는 프로세서, CPU (522) 및, 프로세서, CPU (532) 를 포함하는 제 N 코어 (530) 를 포함한다. 비록 CPU 들 (522 및 532) 이 제 2 코어 (520) 및 제 N 코어 (530) 내에 포함되는 것으로서 예시되지만, 일부 구현형태들에서, CPU 들 (522 및 532) 은 제 2 코어 (520) 및 제 N 코어 (530) 각각의 외부에 있고 하지만 제 2 코어 (520) 및 제 N 코어 (530) 와 각각 통신할 수 있을 것이다. 추가적으로, 일부 구현형태들에서, CPU 들 (522 및 532) 그들 자체가 제 2 코어 (520) 및 제 N 코어 (530) 를 각각 포함할 수도 있다. 또 다른 구현형태들에서, 제 2 코어 (520) 및 제 N 코어 (530) 는 양 코어들 (520 및 530) 에 대한 프로세싱을 수행하는 하나의 CPU (522) 를 공유할 수도 있다.
도 5 에서 예시된 바와 같이, 제 2 코어 (520) 의 CPU (522) 는 DCVS 모듈 (524) 과 통신한다. 유사하게, 제 N 코어 (530) 의 CPU (532) 는 제 N 코어 (530) 에 대한 DCVS 모듈 (534) 과 통신한다. DCVS 모듈들 (524 및 534) 은 제 2 코어 (520)/CPU (522) 및 제 N 코어 (530)/CPU (532) 각각에 대해 동적 클럭 및 전압 스케일링을 수행한다. DCVS 모듈들 (524 및 534) 은 소망하는 바에 따라 하드웨어, 소프트웨어, 또는 펌웨어로 구현될 수도 있다. 추가적으로, 비록 CPU 들 (522 및 532) 외부에 있는 것으로서 예시되지만, DCVS 모듈 (524 및 534) 은 대신에 CPU 들 (522 및 532) 의 부분일 수도 있다. 유사하게, DCVS 모듈들 (524 및 534) 은 또한, 제 2 코어 (520) 및 제 N 코어 (530) 각각의 외부에 위치되지만 제 2 코어 (520) 및 제 N 코어 (530) 와 각각 통신할 수도 있다. 어떻게 구현되든지에 관계 없이, DCVS 모듈들 (524 및 534) 은, 예를 들어 도 2a 및 도 2b 및 도 3a 및 도 3b 에 대해 상기 논의된 동작 주파수 조절과 같이, 활성 워크로드에 응답하여 그들 각각의 제 2 코어들 (520 또는 530) 및/또는 CPU 들 (522 또는 532) 의 전력 소모 조정의 적어도 일부 형태를 수행한다.
제 2 코어 (520) 에 대한 예시된 DCVS 모듈 (524) 은 패킷 전송 로직 모듈 (514) 에 의해 판독되거나 패킷 전송 로직 모듈 (514) 에 통신될 수도 있는 방식으로 제 2 코어 (520) 및/또는 CPU (522) 의 활성 워크로드를 측정 또는 레코딩하기 위한 카운터 (526) 를 포함한다. 일부 구현들에서, 카운터 (526) 는 DCVS 모듈 (524) 의 컴포넌트 또는 부분일 수도 있다. 이러한 구현들에서, 카운터 (526) 는, 예를 들어, 현재의 샘플링 주기/시간 간격에서 비-유휴 스레드들을 실행하는데 제 2 코어 (520) 및/또는 CPU (522) 가 소비한 비지 클럭 사이클들을 카운트하는 DCVS 모듈 (524) 내의 로직일 수도 있다.
반면, 제 N 코어 (530) 는 제 N 코어 (530) 및/또는 CPU (532) 의 활성 워크로드에 관한 정보를 측정, 레코딩, 또는 수신하기 위한 제 N 코어 (530) 에 대한 DCVS 모듈 (534) 외부의 모니터 (536) 를 포함한다. 모니터 (536) 는 패킷 전송 로직 모듈 (514) 에 의해 판독되거나 패킷 전송 로직 모듈 (514) 에 통신될 수도 있는 방식으로 워크로드 정보를 유사하게 저장한다. 모니터 (536) 는 DCVS 모듈 (534) 과 통신하는 하드웨어, 소프트웨어, 또는 펌웨어 모듈 또는 컴포넌트일 수도 있고, 제 N 코어 (530) 또는 CPU (532) 내에 위치될 수도 있고, 또는 제 N 코어 (530) 또는 CPU (532) 외부에 있지만 제 N 코어 (530) 또는 CPU (532) 와 통신할 수도 있다. 제 2 코어 (520) 의 카운터 (526) 및 제 N 코어 (530) 의 모니터 (536) 는, 도 4 에 대해 상술된 것과 유사한 방식을 포함하는, 패킷 전송 로직 모듈 (514) 에 정보를 제공하거나 패킷 전송 로직 모듈 (514) 에 의해 정보가 판독괴는 것을 허용하도록 기능한다.
제 2 코어 (520) 및 제 N 코어 (530) 는 또한, 제 1 코어 (510) 와 같은 다른 프로세싱 컴포넌트들로부터 제 2 코어 (520) 및 제 N 코어 (530) 에 의해 수신된 데이터 또는 데이터 패킷들을 제어하기 위한 도 5 에서 예시된 것과 같은 패킷 수신 로직 (528 및 538) 을 포함할 수도 있다. 제 2 코어 (520) 의 패킷 수신 로직 (528) 및/또는 CPU (524) 는 도 5 에서 예시된 바와 같이 하나 이상의 외부 버퍼들 (518B) 과 통신할 수도 있다. 유사하게, 제 N 코어 (530) 의 패킷 수신 로직 (538) 및/또는 CPU (534) 는 또한 하나 이상의 외부 버퍼들 (518B) 과 통신할 수도 있다. 외부 버퍼 (518B) 는 또한, 패킷 전송 로직 모듈 (514) 및 제 1 코어 (510) 및/또는 제 1 코어 (510) 의 CPU (512) 와 같은 다른 프로세싱 컴포넌트들과 통신할 수도 있다. 패킷 수신 로직들 (528 및 538) 은 하드웨어, 소프트웨어, 또는 펌웨어로 구현될 수도 있다. 추가적으로, 패킷 수신 로직들 (528 및 538) 은 다양한 실시형태들에서 제 2 코어 (520) 의 CPU (522) 및 제 N 코어 (530) 의 CPU (532) 외부에 있을 수도 있고, 또는 내부에 포함될 수도 있다.
동작에서, 도 5 의 시스템 (500) 의 패킷 전송 로직 모듈 (514) 은 제 1 코어 (510) 와 제 2 코어 (520) 및/또는 제 N 코어 (530) 사이 등에서의 DCVS 인지 프로세서간 통신을 허용한다. 도 5 에서 예시된 바와 같이, 제 1 코어 (510), 예컨대 WiFi 코어는 데이터의 하나 이상의 스트림들을 수신하고, 각 스트림은 데이터 패킷들로 구성된다. 일부 구현들에서, 제 1 코어 (510) 의 CPU (512) 는 수신된 데이터 패킷들 중 하나 이상이, 제 2 코어 (520) 및/또는 제 N 코어 (530) 와 같은 하나 이상의 추가적인 프로세싱 컴포넌트들에 전송될 필요가 있는 것을 결정할 수도 있다.
다른 구현들에서, 다른 엘리먼트 또는 컴포넌트는, 수신된 데이터 패킷들 중 하나 이상이 하나 이상의 추가적인 프로세싱 컴포넌트들에 전송될 필요가 있다는 결정을 할 수도 있다. 이러한 다른 엘리먼트들 또는 컴포넌트는 제 1 코어 (510) 의 부분일 수도 있다. 이러한 다른 엘리먼트들 또는 컴포넌트들은 또한, 패킷 전송 로직 모듈 (514), 또는, 데이터가 제 1 코어 (510) 에 전송되기 이전에 결정을 실시하고 그 결정을 데이터와 함께 제 1 코어 (510) 에 통신하는 엘리먼트 또는 컴포넌트와 같이, 제 1 코어 (510) 외부에 있을 수도 있다.
제 1 코어 (510) 로 하여금 데이터 패킷들을 제 2 코어 (520) 또는 제 N 코어 (530) 와 같은 다른 프로세싱 컴포넌트들로 단순히 포워딩하기 보다는, 패킷 전송 로직 모듈 (514) 은 먼저, 도 4 에서 상기 논의된 시스템 (400) 과 유사한, 임의의 이러한 목적지 프로세싱 컴포넌트들의 활성 워크로드를 체크한다. 도 5 의 예시적인 시스템에서, 패킷 전송 로직 모듈 (514) 은 각각의 코어들 (520 및 530) 및/또는 그들의 각각의 CPU 들 (522 및 532) 의 활성 워크로드를 "판독" 하기 위해 제 2 코어 (520) 의 카운터 (526) 및 제 N 코어 (530) 의 모니터 (536) 로부터 정보를 수신한다. 상기 논의된 바와 같이, 활성 워크로드는, 현재의 샘플링 주기에서 비-유휴 스레드들을 실행하는데 제 2 코어 (520)/CPU (522) 및/또는 제 N 코어 (530)/CPU (532) 가 소비한 비지 클럭 사이클들의 수 또는 제 2 코어 (520)/CPU (522) 및/또는 제 N 코어 (530)/CPU (532) 의 "비지 퍼센티지 (busy percentage)" 와 같은, 원하는 임의의 방식으로 판독될 수 있다.
패킷 전송 로직 모듈 (514) 은 제 2 코어 (520) 및/또는 CPU (522) 의 활성 워크로드를 "판독" 하기 위해 제 2 코어 (520) 의 카운터 (526) 및/또는 DCVS 모듈 (524) 과 직접 통신할 수도 있다. 유사하게, 패킷 전송 로직 모듈 (514) 은, 제 N 코어 (530) 및/또는 CPU (532) 의 활성 워크로드를 "판독" 하기 위해 제 N 코어 (530) 의 모니터 (536) 와 직접 통신할 수도 있다. 패킷 전송 로직 모듈 (514) 은 그 후에, 데이터 패킷(들)을 제 2 코어들 (520 또는 530) (또는 그들 각각의 CPU 들 (522 또는 532)) 중 어느 일방에 즉시 전송할지 여부, 또는, 데이터 패킷(들)을 버퍼 (518B) 에 저장하는 등에 의해 데이터 패킷들을 제 2 코어 (520)/CPU (522) 또는 제 N 코어 (530)/CPU (532) 중 하나 이상에 전송하는 것을 지연시킬지 여부를 결정하기 위해 제 2 코어 (520)/CPU (522) 또는 제 N 코어 (530)/CPU (532) 의 활성 워크로드에 관한 수신된 정보를 이용한다.
하나의 예시적인 실시형태에서, 제 2 코어 (520)/CPU (522) 의 활성 워크로드에 관한 수신된 정보는 제 2 코어 (520)/CPU (522) 에 대한 비지 퍼센티지일 수도 있다. 그 구현형태에서, 패킷 전송 로직 모듈 (514) 은 데이터 패킷(들)을 즉시 제 2 코어 (520)/CPU (522) 에 전송하는 것이 제 2 코어 (520)/CPU (522) 의 활성 워크로드에서의 증가를 초래할 것인지 여부를 결정할 수도 있다. 이 결정은 또한, 증가된 활성 워크로드가, 제 2 코어 (520) 의 DCVS 모듈 (524) 로 하여금, 제 2 코어 (520)/CPU (522) 의 동작 주파수를 증가시키는 등에 의해, 제 2 코어 (520)/CPU (522) 의 전력 소모를 증가시키게 할지 여부를 결정하는 것을 포함할 수도 있다.
하나의 구현형태에서, 패킷 전송 로직 모듈은, 제 2 코어 (520)/CPU (522) 의 활성 워크로드가, DCVS 모듈 (524) 이 제 2 코어 (520)/CPU (522) 의 (동작 주파수를 증가시키는 등에 의해) 전력 소모를 증가시키는 것을 필요로 하는, 도 2a 및 도 2b 및 도 3a 및 도 3b 에 대해 상기 논의된 90% 임계치와 같은, 미리결정된 임계치를 초과하여 증가할 것인지 여부를 평가함으로써 이 결정을 수행할 수도 있다. 이 평가는, 패킷 전송 로직 모듈 (514) 이 목적지 프로세싱 컴포넌트의 수신된 활성 워크로드 퍼센티지를 임계 값에 대해 비교하는 것에 의해, 패킷 전송 로직 모듈 (514) 이 목적지 프로세싱 컴포넌트의 활성 워크로드 퍼센티지를 수신하고 데이터를 즉시 전송함으로써 야기될 워크로드에서의 증가를 평가하는 것에 의해, 또는 임의의 다른 원하는 방법에 의해 이루어질 수 있을 것이다.
상기 예에서, 제 N 코어 (530)/CPU (532) 의 활성 워크로드에 관한 수신된 정보는 또한 제 N 코어 (530)/CPU (532) 에 대한 비지 퍼센티지일 수도 있고, 패킷 전송 로직 모듈 (514) 은 제 N 코어 (530)/CPU (532) 의 활성 워크로드에 관한 유사한 결정을 실시할 수도 있다. 하지만, 제 N 코어 (530)/CPU (532) 의 활성 워크로드에 관해 수신된 정보의 유형이 제 2 코어 (520)/CPU (522) 의 활성 워크로드에 관해 수신된 정보와 동일한 유형일 필요는 없다. 예를 들어, 패킷 전송 로직 모듈 (514) 은 제 2 코어 (520)/CPU (522) 의 활성 워크로드에 관한 비지 퍼센티지 정보를 획득 또는 수신할 수도 있는 한편, 제 N 코어 (530) 의 모니터 (536) 로부터 상이한 유형의 정보를 획득 또는 수신하는 것은 제 N 코어 (530)/CPU (532) 의 활성 워크로드를 나타낸다.
수신된 정보의 유형에 관계 없이, 패킷 전송 로직 모듈 (514) 은, 제 2 코어 (520)/CPU (522) 및 제 N 코어 (530)/CPU (532) 의 각각에 대해, 데이터 패킷(들)을 즉시 전송하는 것이, 코어 (520/530) 및/또는 CPU (522/532) 중 어느 일방의 동작 주파수에서의 증가 등에 의해, 제 2 코어 (520)/CPU (522) 및/또는 제 N 코어 (530)/CPU (532) 의 전력 소모에서의 증가를 초래할 것인지 여부를 결정할 것이다. 그 경우에, 패킷 전송 로직 모듈 (514) 은, 데이터 패킷(들)을 제 2 코어 (520)/CPU (522) 및 제 N 코어 (530)/CPU (532) 중 하나 이상에 즉시 전송하지 않고, 대신에, 데이터 패킷(들)을 하나 이상의 버퍼 (418B) 에 저장할 것을 결정할 수도 있다.
패킷 전송 로직 모듈 (514) 은 그 다음, 패킷 전송 로직 모듈 (514) 이, 데이터 패킷(들)을 전송하는 것이 각각의 코어들 (520/530) 또는 CPU (522/532) 의 활성 워크로드를 증가시키지 않을 것이라고 결정할 때까지, 또는, 패킷 전송 로직 모듈 (514) 이, 데이터 패킷(들)이 타임아웃되는 것을 회피하기 위해 데이터 패킷(들)이 전송되어야만 한다고 결정할 때까지, 제 2 코어 (520)/CPU (522) 및/또는 제 N 코어 (530)/CPU (532) 의 활성 워크로드에 관한 정보를 계속 수신할 수도 있다. 이러한 상황들에서, 패킷 전송 로직 모듈 (514) 은 데이터 패킷(들)이 버퍼 (418B) 로부터 제 2 코어 (520/530) 또는 CPU (522/532) 로 전송되게 할 수 있을 것이다. 대안적으로, 패킷 전송 로직 모듈 (514) 은 제 2 코어 (520)/CPU (522) 및/또는 제 N 코어 (530)/CPU (532) 로 하여금, 제 2 코어 (520)/CPU (522) 또는 제 N 코어 (530)/CPU (532) 에 대한 공유된 메모리 콜을 통하는 등으로, 공유된 버퍼 (418B) 로부터 데이터 패킷(들)을 취출하게 할 수 있을 것이다.
상기 논의된 바와 같이, 데이터 패킷(들)을 제 2 코어 (520)/CPU (522) 또는 제 N 코어 (530)/CPU (532) 중 어느 일방에 즉시 전송할지 여부의 패킷 전송 로직 모듈 (514) 에 의한 결정은 또한, 동작 파라미터들과 같은 다른 고려사항들에 부분적으로 기초할 수도 있다. 결정을 실시할 때 평가될 수도 있는 예시적인 동작 파라미터들은: 데이터 패킷(들) 내에 포함된 정보의 중요도; 데이터가 전송되고 있는 목적지 프로세싱 컴포넌트의 성질 (즉, 활성 애플리케이션 또는 GPU); 서비스의 품질 ("Qos"); 버퍼들의 이용가능성; 데이터를 버퍼링하는 것의 전력 "비용" 등을 포함한다. 패킷 전송 로직 모듈 (514) 에 의한 평가들 또는 결정들은 임의의 소망되는 팩터, 고려사항, 또는 최적화 결과에 가중치를 부여하는 알고리즘 또는 알고리즘들의 시리즈들에 의해 이루어질 수도 있고; 또는, 룩-업 테이블과 같은 임의의 다른 소망되는 수단에 의해 이루어질 수도 있다.
유사하게, 도 5 는 2 개의 목적지 프로세싱 컴포넌트들 (제 2 코어 (520) 및 제 N 코어 (530)) 를 예시하지만, 일부 실시형태들에서, 도 5 에서의 제 1 코어 (510) 가 수신된 데이터 패킷들의 일부 또는 전부를 전송할 수도 있는 추가적인 목적지 프로세싱 컴포넌트들이 존재할 수도 있다는 것을 이해하여야 한다. 논의된 바와 같이, 패킷 전송 로직 모듈 (514) 은 상기 리스트된 팩터들 또는 고려사항들에 기초하여, 또는 소망되는 임의의 추가적인 팩터들 또는 고려사항들에 기초하여, 각각의 목적지 프로세싱 컴포넌트에 대해 독립적으로 상기 설명된 결정(들)을 및/또는 평가들을 실시할 수도 있다. 패킷 전송 로직 모듈 (514) 은, 각각의 목적지 프로세싱 컴포넌트에 대해 결정을 실시할 때 동일한 임계치들을 적용하고 동일한 팩터들 또는 고려사항들을 평가하며, 및/또는 유사한 팩터들 또는 고려사항들을 가중할 필요는 없다. 따라서, 패킷 전송 로직 모듈 (514) 은, 비록 제 2 코어 (520)/CPU (522) 가 제 N 코어 (530)/CPU (532) 보다 더 높은 활성 워크로드에서 현재 동작하고 있는 경우에도, 데이터 패킷들의 특정 셋트는 제 2 코어 (520)/CPU (522) 에 즉시 전송되어야 하고, 동일한 데이터 패킷들이 제 N 코어 (530)/CPU (532) (또는 몇몇 다른 프로세싱 컴포넌트) 에 즉시 전송되기보다는 버퍼링되어야 한다고 결정할 수도 있다.
추가적으로, 도 4 의 패킷 전송 로직 (412) 및/또는 도 5 의 패킷 전송 로직 모듈 (514) 에 의한 결정들은 또한, 새로운 조건들을 반영하도록 적응적으로 변경될 수도 있어, 프로세서간 통신으로부터의 향상된 및/또는 보다 정확한 최적화 및 전력 소모 감소를 허용한다. 비록 이해의 용이성을 위해 본 명세서에서는 PCD (100) 에서의 프로세서 컴포넌트들 사이의 통신의 면에서 설명되지만, 시스템들 (400 및 500), 및 방법 (600) (도 6a 및 도 6b) 의 원리들은, 프로세서 컴포넌트들, 프로세서들, 코어들 등과 같은 다른 유형들의 프로세서 컴포넌트들, 임의의 컴퓨터 시스템에서의 모뎀 서브시스템에 동일하게 적용가능하다.
도 6a 는 PCD 에서 또는 PCD 와 함께 사용되는 프로세서 컴포넌트들 등에서, 동적 클럭 및 전압 스케일링 (DCVS) 인지 프로세서간 통신을 제공하는 방법의 예시적인 실시형태를 설명하는 플로우차트이다. 방법 (600) 은 블록 (610) 으로 시작하고, 여기서, 적어도 하나의 데이터 패킷이 프로세싱 컴포넌트 또는 코어에서 수신된다. 상기 논의된 바와 같이, 프로세싱 컴포넌트는 코어, DSP, 또는 PCD (100) 내의 다른 프로세싱 엘리먼트일 수도 있고, 프로세싱 컴포넌트는 방법 (600) 의 논의에서 단순히 "코어 (core)" 로서 지칭될 것이다. 부가적으로, 제 1 코어는 복수의 데이터 패킷들을 수신할 수도 있고, 각각의 데이터 패킷은 제 1 코어에 의해 수신되는 하나 이상의 데이터 스트림들의 부분이다.
블록 (620) 에서, 하나 이상의 데이터 패킷들이 다른 프로세싱 컴포넌트 또는 코어에 의해 필요할 수도 있는지 여부에 관한 결정이 이루어진다. 논의의 목적들을 위해, 이러한 다른 프로세싱 컴포넌트들은 방법 (600) 의 논의에서 "다른 코어(들)" 또는 "목적지 코어(들)" 로서 지칭될 것이다. 논의된 바와 같이, 하나 이상의 데이터 패킷들이 다른 코어(들)에 의해 필요한지 여부의 결정은 도 4 에서 예시된 예시적인 시스템 (400) 에서의 제 1 코어, 또는 제 1 코어 (410) 의 CPU (412) 또는 패킷 전송 로직 (414) 과 같은 제 1 코어의 컴포넌트에 의해 이루어질 수도 있다.
다른 구현형태들에서, 블록 (620) 의 결정은, 도 5 에서 예시된 예시적인 시스템 (500) 의 패킷 전송 로직 모듈 (514), 또는 제 1 코어 외부에 있는 CPU 와 같은 제 1 코어 외부의 엘리먼트 또는 컴포넌트에 의해 이루어질 수도 있다. 또 다른 구현형태들에서, 블록 (620) 은, 예를 들어 다른 컴포넌트가, 다른 코어(들)가 또한 데이터 패킷(들)의 일부 또는 전부를 필요로 할 것이라고 결정하고 그 정보를 데이터 패킷들과 함께 제 1 코어에 통신하는 것과 같이, 제 1 코어가 데이터 패킷(들)을 수신하기 이전에, 또는, 제 1 코어가 데이터 패킷들을 수신하는 것을 시작하기 이전에 또는 그 후에 발생할 수도 있다.
블록 (630) 에서, 데이터 패킷(들)이 전송될 다른 코어(들)가 "비지" 한지 여부에 관한 결정이 이루어진다. 이 결정은, 도 4 에서 예시된 예시적인 시스템 (400) 에서의 제 1 코어 (410) 의 패킷 전송 로직 (414) 에 의해서와 같이, 제 1 코어 또는 제 1 코어 내의 컴포넌트들에 의해 이루어질 수도 있다. 대안적으로, 블록 (630) 에서의 결정은 도 5 에서 예시된 예시적인 시스템 (500) 의 패킷 전송 로직 모듈 (514) 과 같은, 제 1 코어 외부의 컴포넌트들 또는 엘리먼트들에 의해 이루어질 수도 있다. 시스템들 (400 및 500) 에 대해 상기 논의된 바와 같이, 이러한 블록 (630) 에서의 결정은 데이터 패킷(들)을 즉시 전송하는 것이 임의의 목적지 코어(들)의 동작 주파수에서의 증가 등에 의해, 목적지 코어(들)에서의 전력 소모에서의 증가를 초래할 것인지 여부에 관한 결정일 수도 있다.
블록 (630) 에서의 결정은 상기 논의된 바와 같이 목적지 코어(들)의 활성 워크로드와 같이, 목적지 코어(들)로부터 수신된, 또는 목적지 코어(들)로부터 획득/판독된 정보에 기초한다. 예를 들어, 도 5 의 예시적인 시스템에서, 패킷 전송 로직 모듈 (514) 은, 각각의 코어들 (520 및 530) 및/또는 그들의 각각의 CPU 들 (522 및 532) 의 활성 워크로드를 "판독" 하기 위해 제 2 코어 (520) 의 카운터 (526) 및 제 N 코어 (530) 의 모니터 (536) 로부터 정보를 수신한다. 활성 워크로드는, 현재의 샘플링 주기에서 비-유휴 스레드들을 실행하는데 제 2 코어 (520)/CPU (522) 및/또는 제 N 코어 (530)/CPU (532) 가 소비한 비지 클럭 사이클들의 수 또는 제 2 코어 (520)/CPU (522) 및/또는 제 N 코어 (530)/CPU (532) 의 "비지 퍼센티지" 와 같은, 원하는 임의의 방식으로 판독될 수 있다. 블록 (630) 에서의 평가들 또는 결정들은 알고리즘 또는 알고리즘들의 시리즈에 의해 이루어질 수도 있고, 또는, 룩업-테이블과 같은, 임의의 다른 소망되는 수단에 의해 이루어질 수도 있다.
블록 (630) 에서의 결정이 임의의 목적지 코어가 "비지" 하지 않다는 것인 경우에, 블록 (640) 에서 데이터 패킷(들)은 제 1 코어로부터 그 목적지 코어로 즉시 전송될 수도 있고, 방법 (600) 은 리턴한다. 블록 (640) 에서 목적지 코어(들)로의 데이터 패킷(들)의 전송은 임의의 소망되는 방법 또는 수단에 의해 달성될 수도 있다.
블록 (630) 에서의 결정이, 임의의 목적지 코어가 "비지" 하다는 것인 경우에, 블록 (650) 에서의 방법 (600) 은 데이터 패킷(들)이 지연될 수도 있는지 여부를 결정한다. 이 결정은, 데이터 패킷(들) 내에 포함된 정보의 중요도; 데이터가 전송되고 있는 목적지 코어(들); 서비스의 품질 ("Qos"); 버퍼들의 이용가능성; 데이터를 버퍼링하는 것의 전력 "비용"; 목적지 코어(들)에 전송되지 않는 경우에 데이터가 타임아웃 (time out) 될 것인지 여부 등을 포함하는 다양한 고려사항들 및/또는 팩터에 적어도 부분적으로 기초할 수도 있다. 전술된 것은 블록 (650) 의 결정을 실시할 때 평가될 수도 있는 예시적인 팩터들, 파라미터들, 또는 고려사항들이다.
블록 (650) 에서의 결정은, 임의의 하드웨어, 소프트웨어, 또는 펌웨어 컴포넌트에 의해, 그리고, 예를 들어 도 4 에서 예시된 시스템 (400) 의 패킷 전송 로직 (414) 및/또는 도 5 에서 예시된 시스템 (500) 의 패킷 전송 로직 모듈 (514) 에 대해 상기 논의된 결정의 방식을 포함하는 임의의 소망되는 방식으로 이루어질 수도 있다. 블록 (650) 에서의 결정은 임의의 소망되는 팩터, 고려사항, 또는 최적화 결과에 가중치를 부여하는 알고리즘 또는 알고리즘들의 시리즈들에 의해 이루어질 수도 있고; 또는, 룩-업 테이블과 같은 임의의 다른 소망되는 수단에 의해 이루어질 수도 있다. 통상의 기술자에 의해 이해될 바와 같이, 일부 실시형태들에서, 블록 (630) 및 블록 (640) 은 별개의 결정들이 아닐 수도 있다. 대신에, 목적지 코어가 비지한지 여부 (블록 630) 및 패킷이 지연될 수 있는지 여부 (블록 650) 의 결정들은 도 6a 에서 예시된 2 개의 별개의 결정들/단계들보다는 하나의 결정/단계에서 이루어질 수도 있다.
블록 (650) 에서의 결정이, 데이터 패킷(들)이 임의의 목적지 코어에 대해 지연될 수 없다는 것인 경우에, 블록 (640) 에서 데이터 패킷(들)은 제 1 코어로부터 그 목적지 코어로 즉시 전송될 수도 있고, 방법 (600) 은 리턴한다. 다시, 블록 (640) 에서의 데이터 패킷(들)의 목적지 코어(들)로의 전송은 소망되는 임의의 방법 또는 수단에 의해 달성될 수도 있다.
블록 (650) 에서의 결정이, 데이터 패킷(들)을 임의의 목적지 코어(들)로 전송하는 것이 지연될 수도 있다는 것인 경우에, 블록 (660) 에서 그 목적지 코어에 대한 데이터 패킷(들)은 버퍼링된다. 버퍼는, 예를 들어 도 4 에서 예시된 버퍼들 (418A 및 418B) 또는 도 5 에서 예시된 버퍼들 (518A 및 518B) 을 포함하는, 임의의 유형의 메모리 버퍼일 수도 있다. 유사하게, 데이터 패킷(들)이 전송되는 버퍼는 제 1 코어 내부의 버퍼일 수도 있고, 또는, 제 1 코어 또는 하나 이상의 목적지 코어에 의해 공유되는 외부 버퍼들을 포함하는, 제 1 코어에 대해 외부에 있을 수도 있다.
블록 (660) 에서의 데이터 패킷(들)의 버퍼링 후에, 방법 (600) 은 계속하여 블록 (630) 으로 다시 돌아가서, 버퍼링된 데이터 패킷(들)이 전송되는 목적지 코어(들)가 여전히 "비지" 한지 여부를 체크하는 것을 시작한다. 따라서, 방법 (600) 은, 버퍼링된 데이터 패킷(들)이 목적지 코어로 전송되는 것을 조건들이 보장하기 전에 하나 이상의 목적지 코어(들)가 다수 회 비지한지 여부를 체크할 수도 있다. 이러한 조건들은, 예를 들어, 특정 목적지 코어가 더 이상 "비지" 하지 않다는 결정, 버퍼링된 데이터 패킷(들)이 타임아웃되려고 하여 그들은 전송되어져야만한다는 결정, 버퍼링을 계속하는 것의 전력 비용이 목적지 코어(들)에 데이터를 전송하는 전력 비용보다 더 크다는 결정 등을 포함할 수도 있다.
버퍼링된 데이터 패킷(들)이 하나 이상의 목적지 코어(들)로 전송될 것이라는 결정이 일단 이루어지면, 블록 (640) 에서 임의의 소망되는 방식으로 데이터 패킷(들)은 적절한 목적지 코어(들)에 전송될 수도 있다. 예를 들어, 일 예로서 상기 시스템 (500) 을 이용하여, 패킷 전송 로직 모듈 (514) 은 데이터 패킷(들)이 버퍼 (418B) 로부터 적절한 목적지 코어 (520/530) 또는 CPU (522/532) 로 전송되게 할 수 있을 것이다. 대안적으로, 패킷 전송 로직 모듈 (514) 은 제 2 코어 (520)/CPU (522) 및/또는 제 N 코어 (530)/CPU (532) 로 하여금, 제 2 코어 (520)/CPU (522) 및/또는 제 N 코어 (530)/CPU (532) 에 대한 공유된 메모리 콜을 통해서 등과 같이, 공유된 버퍼 (418B) 로부터 데이터 패킷(들)을 취출하게 할 수 있을 것이다.
도 6a 는 PCD 에서 또는 PCD 와 함께 사용되는 프로세서 컴포넌트들 등에서, 동적 클럭 및 전압 스케일링 (DCVS) 인지 프로세서간 통신을 제공하는 방법의 오직 하나의 예시적인 실시형태를 설명한다. 다른 실시형태들에서, 추가적인 블록들 또는 단계들이 방법 (600) 에 추가될 수도 있다. 유사하게, 일부 실시형태들에서, 도 6a 에서 나타낸 다양한 블록들 또는 단계들은, 예를 들어 블록들 (630 및 650) 을 상기 논의된 바와 같이 도 6a 에서 예시된 2 개의 별개의 블록들/단계들보다는 하나의 결정 블록/단계로 결합하는 것과 같이, 결합되거나 생략될 수도 있다.
부가적으로, 본 명세서에서 설명된 프로세스들 또는 프로세스 플로우들에서의 소정의 단계들은 본 발명이 설명한 바와 같이 기능하도록 하기 위해 당연히 다른 단계들보다 선행한다. 그러나, 본 발명은 이러한 순서 또는 시퀀스가 상기 논의된 바와 같이 예를 들어 블록 610 전에 블록 620 을 수행하는 것과 같이 본 발명의 기능성을 변경하지 않는 경우에 설명된 단계들의 순서에 제한되지 아니한다. 더욱이, 일부 단계들은 본 발명의 범위로부터 벗어남이 없이 다른 단계들 전에, 후에, 또는 그와 병행하여 (실질적으로 동시에) 수행될 수도 있다는 것이 인정된다. 일부 경우들에서, 소정의 단계들은 본 발명으로부터 벗어남 없이 생략될 수도 있고 또는 수행되지 않을 수도 있다. 또한, "그 후", "그리고 나서", "다음에", "후속하여" 등과 같은 단어들은 단계들의 순서를 제한하도록 의도되지 아니한다. 이들 단어들은 단순히, 예시적인 방법의 설명을 통하여 독자를 안내하기 위해 사용된다.
상기 설명된 다양한 동작들 및/또는 방법들은 다양한 하드웨어 및/또는 소프트웨어 컴포넌트(들) 및/또는 모듈(들) 에 의해 수행될 수도 있고, 이러한 컴포넌트(들) 및/또는 모듈(들) 은 이러한 동작들 및/또는 방법들을 수행하기 위한 수단을 제공할 수도 있다. 일반적으로, 대응하는 상대 수단-플러스-기능 도면들을 갖는 도면들에서 예시된 방법들이 존재하는 경우에, 동작 블록들은 유사한 넘버링을 갖는 수단-플러스-기능 블록들에 대응한다. 예를 들어, 도 6a 에 도시된 블록들 (610-660) 은 도 6b 에서 도시된 수단-플러스-기능 블록들에 대응한다.
부가적으로, 프로그래밍에서의 통상의 기술자는 예를 들어 본 명세서에서의 플로우 차트들 및 연관된 설명에 기초하여 어려움 없이, 개시된 발명을 구현하기 위해 컴퓨터 코드를 기입하거나 또는 적절한 하드웨어 및/또는 회로들을 식별하는 것이 가능하다. 따라서, 프로그램 코드 명령들 또는 상세화된 하드웨어 디바이스들의 특정한 셋트의 개시는 본 발명을 실시 및 이용하는 방법의 충분한 이해에 필수적인 것으로 간주되지 않는다. 청구된 프로세서-가능 프로세스들의 창의적인 기능성은 상기 설명에서 그리고 도면들과 함께 더 상세히 설명되며, 그 도면들은 다양한 프로세스 플로우들을 예시할 수도 있다
상기 나타낸 바와 같은 하나 이상의 예시적인 양태들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 소프트웨어로 구현되는 경우, 그 기능들은 비일시적 프로세서 판독가능 매체와 같은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장되거나 송신될 수도 있다. 컴퓨터 판독가능 매체들은 한 장소에서 다른 장소로 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들 및 데이터 저장 매체들 양자를 포함한다.
저장 매체들은 컴퓨터 또는 프로세서에 의해 액세스될 수도 있는 임의의 이용가능한 매체들일 수도 있다. 제한이 아닌 일 예로, 이러한 컴퓨터 판독가능 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 운반 또는 저장하기 위해 이용될 수도 있고 컴퓨터에 의해 액세스될 수도 있는 임의의 다른 매체를 포함할 수도 있다. 디스크 (disk) 및 디스크 (disc) 는 본 명세서에서 사용한 바와 같이, 콤팩트 디스크 ("CD"), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 ("DVD"), 플로피 디스크 및 블루-레이 디스크를 포함하며, 여기서 디스크 (disk) 들은 보통 데이터를 자기적으로 재생하는 한편, 디스크 (disc) 들은 레이저들로 데이터를 광학적으로 재생한다. 상기의 조합들이 또한 비일시적 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
선택된 양태들이 상세히 예시 및 설명되었지만, 다양한 치환들 및 변경들이 다음의 청구항들에 의해 정의한 바와 같이, 본 발명으로부터 벗어남 없이 본 명세서에서 이루어질 수도 있다는 것이 이해될 것이다.

Claims (30)

  1. 휴대용 컴퓨팅 디바이스 (PCD) 에서 프로세서간 통신하는 방법으로서,
    제 1 프로세싱 컴포넌트에서 적어도 하나의 데이터 패킷을 수신하는 단계;
    동적 클럭 및 전압 스케일링 (DCVS) 하에 동작하는 제 2 프로세싱 컴포넌트에 관한 워크로드 정보를 상기 제 1 프로세싱 컴포넌트에서 수신하는 단계; 및
    수신된 상기 워크로드 정보에 적어도 부분적으로 기초하여, 상기 적어도 하나의 데이터 패킷을 상기 제 1 프로세싱 컴포넌트로부터 상기 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하는 단계를 포함하는, 프로세서간 통신 방법.
  2. 제 1 항에 있어서,
    상기 수신된 워크로드 정보에 적어도 부분적으로 기초하여 상기 적어도 하나의 데이터 패킷을 상기 제 1 프로세싱 컴포넌트로부터 상기 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하는 단계는, 상기 적어도 하나의 데이터 패킷을 상기 제 2 프로세싱 컴포넌트로 전송하는 것이 상기 제 2 프로세싱 컴포넌트로 하여금 상기 제 2 프로세싱 컴포넌트의 동작 주파수를 증가시키게 할지 여부를 결정하는 단계를 더 포함하는, 프로세서간 통신 방법.
  3. 제 1 항에 있어서,
    상기 수신된 워크로드 정보에 적어도 부분적으로 기초하여 상기 적어도 하나의 데이터 패킷을 상기 제 1 프로세싱 컴포넌트로부터 상기 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하는 단계는, 상기 제 2 프로세싱 컴포넌트의 활성 워크로드가 임계 값을 초과하는지 여부를 결정하는 단계를 더 포함하는, 프로세서간 통신 방법.
  4. 제 1 항에 있어서,
    상기 수신된 워크로드 정보에 적어도 부분적으로 기초하여 상기 적어도 하나의 데이터 패킷을 상기 제 1 프로세싱 컴포넌트로부터 상기 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하는 것은, 동작 파라미터에 적어도 부분적으로 더 기초하는, 프로세서간 통신 방법.
  5. 제 4 항에 있어서,
    상기 동작 파라미터는, 상기 적어도 하나의 데이터 패킷을 버퍼링하는 것의 전력 소모, 서비스의 품질 (QoS) 레벨, 및 상기 적어도 하나의 데이터 패킷이 타임아웃될지 여부 중 적어도 하나를 포함하는, 프로세서간 통신 방법.
  6. 제 1 항에 있어서,
    상기 수신된 워크로드 정보에 적어도 부분적으로 기초하여 상기 적어도 하나의 데이터 패킷을 상기 제 1 프로세싱 컴포넌트로부터 상기 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하는 단계는, 상기 제 1 프로세싱 컴포넌트 외부의 패킷 전송 로직 모듈에 의해 수행되는, 프로세서간 통신 방법.
  7. 제 1 항에 있어서,
    DCVS 하에 동작하는 제 3 프로세싱 컴포넌트에 관한 워크로드 정보를 상기 제 1 프로세싱 컴포넌트에서 수신하는 단계; 및
    수신된 상기 제 3 프로세싱 컴포넌트에 관한 워크로드 정보에 적어도 부분적으로 기초하여, 상기 적어도 하나의 데이터 패킷을 상기 제 1 프로세싱 컴포넌트로부터 상기 제 3 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하는 단계를 더 포함하는, 프로세서간 통신 방법.
  8. 휴대용 컴퓨팅 디바이스 (PCD) 에서 프로세서간 통신하기 위한 시스템으로서,
    적어도 하나의 데이터 패킷을 수신하도록 구성된 제 1 프로세싱 컴포넌트;
    상기 제 1 프로세싱 컴포넌트와 통신하는 제 2 프로세싱 컴포넌트로서, 상기 제 2 프로세싱 컴포넌트는 동적 클럭 및 전압 스케일링 (DCVS) 하에 동작하도록 구성되는, 상기 제 2 프로세싱 컴포넌트;
    상기 제 1 프로세싱 컴포넌트 및 상기 제 2 프로세싱 컴포넌트와 통신하는 버퍼;
    상기 제 2 프로세싱 컴포넌트와 통신하는 카운터로서, 상기 카운터는 상기 제 2 프로세싱 컴포넌트에 관한 워크로드 정보를 획득하도록 구성되는, 상기 카운터; 및
    상기 제 1 프로세싱 컴포넌트 및 상기 카운터와 통신하는 패킷 전송 로직으로서, 상기 패킷 전송 로직은, 상기 카운터로부터 상기 워크로드 정보를 수신하고, 수신된 상기 워크로드 정보에 적어도 부분적으로 기초하여, 상기 적어도 하나의 데이터 패킷을 상기 제 2 프로세싱 컴포넌트로 또는 상기 버퍼로 전송되게 할지 여부를 결정하도록 구성되는, 상기 패킷 전송 로직을 포함하는, 프로세서간 통신하기 위한 시스템.
  9. 제 8 항에 있어서,
    상기 제 2 프로세싱 컴포넌트는, 상기 제 2 프로세싱 컴포넌트에 대해 동적 클럭 및 전압 스케일링을 제공하도록 구성된 DCVS 모듈을 더 포함하고,
    상기 카운터는 상기 DCVS 모듈의 부분인, 프로세서간 통신하기 위한 시스템.
  10. 제 8 항에 있어서,
    상기 제 2 프로세싱 컴포넌트에 관한 상기 워크로드 정보는, 상기 제 2 프로세싱 컴포넌트의 활성 워크로드를 더 포함하고,
    상기 패킷 전송 로직은, 상기 제 2 프로세싱 컴포넌트의 활성 워크로드가 임계 값을 초과하는지 여부를 결정함으로써, 상기 적어도 하나의 데이터 패킷을 상기 제 1 프로세싱 컴포넌트로부터 상기 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하도록 구성되는, 프로세서간 통신하기 위한 시스템.
  11. 제 8 항에 있어서,
    상기 패킷 전송 로직은, 동작 파라미터에 적어도 부분적으로 기초하여, 상기 적어도 하나의 데이터 패킷을 상기 제 1 프로세싱 컴포넌트로부터 상기 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하도록 더 구성되는, 프로세서간 통신하기 위한 시스템.
  12. 제 11 항에 있어서,
    상기 동작 파라미터는, 상기 적어도 하나의 데이터 패킷을 버퍼링하는 것의 전력 소모, 서비스의 품질 (QoS) 레벨, 및 상기 적어도 하나의 데이터 패킷이 타임아웃될지 여부 중 적어도 하나를 포함하는, 프로세서간 통신하기 위한 시스템.
  13. 제 8 항에 있어서,
    상기 패킷 전송 로직은 상기 제 1 프로세싱 컴포넌트의 부분인, 프로세서간 통신하기 위한 시스템.
  14. 제 8 항에 있어서,
    상기 버퍼는 상기 제 1 프로세싱 컴포넌트의 외부에 있는, 프로세서간 통신하기 위한 시스템.
  15. 제 8 항에 있어서,
    상기 제 1 프로세싱 컴포넌트 및 상기 버퍼와 통신하는 제 3 프로세싱 컴포넌트로서, 상기 제 3 프로세싱 컴포넌트는 동적 클럭 및 전압 스케일링 (DCVS) 하에 동작하도록 구성되는, 상기 제 3 프로세싱 컴포넌트; 및
    상기 제 3 프로세싱 컴포넌트 및 상기 패킷 전송 로직과 통신하는 모니터로서, 상기 모니터는 상기 제 3 프로세싱 컴포넌트에 관한 워크로드 정보를 획득하도록 구성되는, 상기 모니터를 더 포함하고,
    상기 패킷 전송 로직은, 상기 모니터로부터 상기 제 3 프로세싱 컴포넌트에 관한 상기 워크로드 정보를 수신하고, 수신된 상기 워크로드 정보에 적어도 부분적으로 기초하여, 상기 적어도 하나의 데이터 패킷을 상기 제 3 프로세싱 컴포넌트로 또는 상기 버퍼로 전송되게 할지 여부를 결정하도록 구성되는, 프로세서간 통신하기 위한 시스템.
  16. 제 15 항에 있어서,
    상기 패킷 전송 로직은 상기 제 1 프로세싱 컴포넌트 외부에 있는 패킷 전송 모듈을 포함하는, 프로세서간 통신하기 위한 시스템.
  17. 컴퓨터 판독가능 프로그램 코드를 포함하는 비-일시적 컴퓨터 이용가능 매체를 포함하는 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 판독가능 프로그램 코드는 휴대용 컴퓨팅 디바이스 (PCD) 에서 프로세서간 통신하는 방법을 구현하기 위해 실행되도록 적응되고, 상기 방법은,
    제 1 프로세싱 컴포넌트에서 적어도 하나의 데이터 패킷을 수신하는 단계;
    동적 클럭 및 전압 스케일링 (DCVS) 하에 동작하는 제 2 프로세싱 컴포넌트에 관한 워크로드 정보를 상기 제 1 프로세싱 컴포넌트에서 수신하는 단계; 및
    수신된 상기 워크로드 정보에 적어도 부분적으로 기초하여, 상기 적어도 하나의 데이터 패킷을 상기 제 1 프로세싱 컴포넌트로부터 상기 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하는 단계를 포함하는, 비-일시적 컴퓨터 이용가능 매체를 포함하는 컴퓨터 프로그램 제품.
  18. 제 17 항에 있어서,
    상기 수신된 워크로드 정보에 적어도 부분적으로 기초하여 상기 적어도 하나의 데이터 패킷을 상기 제 1 프로세싱 컴포넌트로부터 상기 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하는 단계는, 상기 적어도 하나의 데이터 패킷을 상기 제 2 프로세싱 컴포넌트로 전송하는 것이 상기 제 2 프로세싱 컴포넌트의 상기 DCVS 로 하여금 상기 제 2 프로세싱 컴포넌트의 동작 주파수를 증가시키게 할지 여부를 결정하는 단계를 더 포함하는, 비-일시적 컴퓨터 이용가능 매체를 포함하는 컴퓨터 프로그램 제품.
  19. 제 17 항에 있어서,
    상기 수신된 워크로드 정보에 적어도 부분적으로 기초하여 상기 적어도 하나의 데이터 패킷을 상기 제 1 프로세싱 컴포넌트로부터 상기 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하는 단계는, 상기 제 2 프로세싱 컴포넌트의 활성 워크로드가 임계 값을 초과하는지 여부를 결정하는 단계를 더 포함하는, 비-일시적 컴퓨터 이용가능 매체를 포함하는 컴퓨터 프로그램 제품.
  20. 제 17 항에 있어서,
    상기 수신된 워크로드 정보에 적어도 부분적으로 기초하여 상기 적어도 하나의 데이터 패킷을 상기 제 1 프로세싱 컴포넌트로부터 상기 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하는 것은, 동작 파라미터에 적어도 부분적으로 더 기초하는, 비-일시적 컴퓨터 이용가능 매체를 포함하는 컴퓨터 프로그램 제품.
  21. 제 20 항에 있어서,
    상기 동작 파라미터는, 상기 적어도 하나의 데이터 패킷을 버퍼링하는 것의 전력 소모, 서비스의 품질 (QoS) 레벨, 및 상기 적어도 하나의 데이터 패킷이 타임아웃될지 여부 중 적어도 하나를 포함하는, 비-일시적 컴퓨터 이용가능 매체를 포함하는 컴퓨터 프로그램 제품.
  22. 제 17 항에 있어서,
    상기 수신된 워크로드 정보에 적어도 부분적으로 기초하여 결정하는 것은, 상기 제 1 프로세싱 컴포넌트 외부의 패킷 전송 로직 모듈에 의해 수행되는, 비-일시적 컴퓨터 이용가능 매체를 포함하는 컴퓨터 프로그램 제품.
  23. 제 17 항에 있어서,
    상기 방법은,
    동적 클럭 및 전압 스케일링 (DCVS) 하에 동작하는 제 3 프로세싱 컴포넌트에 관한 워크로드 정보를 상기 제 1 프로세싱 컴포넌트에서 수신하는 단계; 및
    수신된 상기 제 3 프로세싱 컴포넌트에 관한 워크로드 정보에 적어도 부분적으로 기초하여, 상기 적어도 하나의 데이터 패킷을 상기 제 1 프로세싱 컴포넌트로부터 상기 제 3 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하는 단계를 더 포함하는, 비-일시적 컴퓨터 이용가능 매체를 포함하는 컴퓨터 프로그램 제품.
  24. 휴대용 컴퓨팅 디바이스 (PCD) 에서 프로세서간 통신하기 위한 시스템으로서,
    제 1 프로세싱 컴포넌트에서 적어도 하나의 데이터 패킷을 수신하는 수단;
    동적 클럭 및 전압 스케일링 (DCVS) 하에 동작하는 제 2 프로세싱 컴포넌트에 관한 워크로드 정보를 제 1 프로세싱 컴포넌트에서 수신하는 수단; 및
    수신된 상기 워크로드 정보에 적어도 부분적으로 기초하여, 상기 적어도 하나의 데이터 패킷을 상기 제 1 프로세싱 컴포넌트로부터 상기 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하는 수단을 포함하는, 프로세서간 통신하기 위한 시스템.
  25. 제 24 항에 있어서,
    상기 수신된 워크로드 정보에 적어도 부분적으로 기초하여 상기 적어도 하나의 데이터 패킷을 상기 제 1 프로세싱 컴포넌트로부터 상기 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하는 수단은, 상기 적어도 하나의 데이터 패킷을 상기 제 2 프로세싱 컴포넌트로 전송하는 것이 상기 제 2 프로세싱 컴포넌트의 상기 DCVS 로 하여금 상기 제 2 프로세싱 컴포넌트의 동작 주파수를 증가시키게 할지 여부를 결정하는 수단을 더 포함하는, 프로세서간 통신하기 위한 시스템.
  26. 제 24 항에 있어서,
    상기 수신된 워크로드 정보에 적어도 부분적으로 기초하여 상기 적어도 하나의 데이터 패킷을 상기 제 1 프로세싱 컴포넌트로부터 상기 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하는 수단은, 상기 제 2 프로세싱 컴포넌트의 활성 워크로드가 임계 값들을 초과하는지 여부를 결정하는 수단을 더 포함하는, 프로세서간 통신하기 위한 시스템.
  27. 제 24 항에 있어서,
    상기 수신된 워크로드 정보에 적어도 부분적으로 기초하여 상기 적어도 하나의 데이터 패킷을 상기 제 1 프로세싱 컴포넌트로부터 상기 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하는 수단은, 동작 파라미터에 적어도 부분적으로 기초하여 상기 적어도 하나의 데이터 패킷을 상기 제 1 프로세싱 컴포넌트로부터 상기 제 2 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하는 수단을 더 포함하는, 프로세서간 통신하기 위한 시스템.
  28. 제 27 항에 있어서,
    상기 동작 파라미터는, 상기 적어도 하나의 데이터 패킷을 버퍼링하는 것의 전력 소모, 서비스의 품질 (QoS) 레벨, 및 상기 적어도 하나의 데이터 패킷이 타임아웃될지 여부 중 적어도 하나를 포함하는, 프로세서간 통신하기 위한 시스템.
  29. 제 24 항에 있어서,
    상기 수신된 워크로드 정보에 적어도 부분적으로 기초하여 결정하는 수단은, 상기 제 1 프로세싱 컴포넌트 외부에 있는, 프로세서간 통신하기 위한 시스템.
  30. 제 24 항에 있어서,
    동적 클럭 및 전압 스케일링 (DCVS) 하에 동작하는 제 3 프로세싱 컴포넌트에 관한 워크로드 정보를 상기 제 1 프로세싱 컴포넌트에서 수신하는 수단; 및
    수신된 상기 제 3 프로세싱 컴포넌트에 관한 워크로드 정보에 적어도 부분적으로 기초하여, 상기 적어도 하나의 데이터 패킷을 상기 제 1 프로세싱 컴포넌트로부터 상기 제 3 프로세싱 컴포넌트로 또는 버퍼로 전송할지 여부를 결정하는 수단을 더 포함하는, 프로세서간 통신하기 위한 시스템.
KR1020167027655A 2014-03-13 2015-03-12 동적 클럭 및 전압 스케일링 (dcvs) 인지 프로세서간 통신을 제공하기 위한 시스템 및 방법 KR20160132422A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/210,064 2014-03-13
US14/210,064 US9244747B2 (en) 2014-03-13 2014-03-13 System and method for providing dynamic clock and voltage scaling (DCVS) aware interprocessor communication
PCT/US2015/020195 WO2015138733A1 (en) 2014-03-13 2015-03-12 System and method for providing dynamic clock and voltage scaling (dcvs) aware interprocessor communication

Publications (1)

Publication Number Publication Date
KR20160132422A true KR20160132422A (ko) 2016-11-18

Family

ID=52774586

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167027655A KR20160132422A (ko) 2014-03-13 2015-03-12 동적 클럭 및 전압 스케일링 (dcvs) 인지 프로세서간 통신을 제공하기 위한 시스템 및 방법

Country Status (7)

Country Link
US (2) US9244747B2 (ko)
EP (1) EP3117319A1 (ko)
JP (1) JP2017515191A (ko)
KR (1) KR20160132422A (ko)
CN (1) CN106104490A (ko)
BR (1) BR112016020956A8 (ko)
WO (1) WO2015138733A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190109408A (ko) * 2017-01-26 2019-09-25 에이티아이 테크놀로지스 유엘씨 적응적 전력 제어 루프

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9244747B2 (en) 2014-03-13 2016-01-26 Qualcomm Incorporated System and method for providing dynamic clock and voltage scaling (DCVS) aware interprocessor communication
KR102278475B1 (ko) * 2014-10-14 2021-07-19 삼성전자주식회사 전자 장치 및 그 제어 방법
KR102578648B1 (ko) * 2016-03-14 2023-09-13 삼성전자주식회사 모뎀 데이터에 따라 코어 스위칭이 수행되는 애플리케이션 프로세서 및 이를 포함하는 시스템 온 칩
US10296067B2 (en) 2016-04-08 2019-05-21 Qualcomm Incorporated Enhanced dynamic clock and voltage scaling (DCVS) scheme
BR112016021103A2 (pt) * 2016-07-15 2018-05-15 Ericsson Telecomunicacoes Sa servidor e método executado dessa forma para determinar uma frequência e voltagem de um ou mais processadores do servidor
US11054884B2 (en) * 2016-12-12 2021-07-06 Intel Corporation Using network interface controller (NIC) queue depth for power state management
CN107182083B (zh) * 2017-05-27 2021-08-10 努比亚技术有限公司 移动终端及数据包传输方法
WO2020082757A1 (en) * 2018-10-26 2020-04-30 Huawei Technologies Co., Ltd. Energy efficiency adjustments for cpu governor
CN112015259B (zh) * 2019-05-29 2022-06-21 芯原微电子(上海)股份有限公司 控制峰值功耗的方法及系统
KR20210022850A (ko) 2019-08-21 2021-03-04 삼성전자주식회사 반도체 장치의 성능 부스팅 제어 방법 및 이를 수행하는 반도체 장치
CN114385599B (zh) * 2022-03-23 2022-06-10 北京安华金和科技有限公司 一种基于内核评分机制的审计处理方法和系统
CN116931703B (zh) * 2023-09-18 2023-12-26 惠州市鑫晖源科技有限公司 基于数据分析的电竞主机电源电压调整方法

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7321942B2 (en) 2002-11-12 2008-01-22 Arm Limited Performance counter for adding variable work increment value that is dependent upon clock frequency
US8224639B2 (en) * 2004-03-29 2012-07-17 Sony Computer Entertainment Inc. Methods and apparatus for achieving thermal management using processing task scheduling
US7840825B2 (en) * 2006-10-24 2010-11-23 International Business Machines Corporation Method for autonomous dynamic voltage and frequency scaling of microprocessors
US8074014B2 (en) 2008-03-31 2011-12-06 Microsoft Corporation Storage systems using write off-loading
CN101403982B (zh) 2008-11-03 2011-07-20 华为技术有限公司 一种多核处理器的任务分配方法和系统
KR101543326B1 (ko) 2009-01-05 2015-08-10 삼성전자주식회사 시스템 온 칩 및 그 구동 방법
JP5352683B2 (ja) * 2009-01-30 2013-11-27 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. キャパシティ計画及び作業負荷管理を統合するためのシステム及び方法
US8639862B2 (en) * 2009-07-21 2014-01-28 Applied Micro Circuits Corporation System-on-chip queue status power management
KR101617377B1 (ko) * 2009-11-06 2016-05-02 삼성전자주식회사 동적 전압 주파수 스케일링 방법
KR101303690B1 (ko) * 2009-12-09 2013-09-04 한국전자통신연구원 전력 관리 장치 및 그 방법, 전력 제어 시스템
US8346999B2 (en) * 2009-12-15 2013-01-01 Intel Corporation Dynamic receive queue balancing with high and low thresholds
US8689037B2 (en) * 2009-12-16 2014-04-01 Qualcomm Incorporated System and method for asynchronously and independently controlling core clocks in a multicore central processing unit
US8463887B2 (en) * 2009-12-23 2013-06-11 Citrix Systems, Inc. Systems and methods for server surge protection in a multi-core system
US8533505B2 (en) 2010-03-01 2013-09-10 Arm Limited Data processing apparatus and method for transferring workload between source and destination processing circuitry
EP2490403A1 (en) * 2011-02-17 2012-08-22 Alcatel Lucent Network communication node comprising a plurality of processors for processing layers of communication and associated node
US8695008B2 (en) * 2011-04-05 2014-04-08 Qualcomm Incorporated Method and system for dynamically controlling power to multiple cores in a multicore processor of a portable computing device
US20130097415A1 (en) * 2011-10-12 2013-04-18 Qualcomm Incorporated Central Processing Unit Monitoring and Management Based On A busy-Idle Histogram
US8650423B2 (en) * 2011-10-12 2014-02-11 Qualcomm Incorporated Dynamic voltage and clock scaling control based on running average, variant and trend
US9304570B2 (en) * 2011-12-15 2016-04-05 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including power and performance workload-based balancing between multiple processing elements
US8904211B2 (en) 2012-04-27 2014-12-02 Qualcomm Innovation Center, Inc. Frequency reduction of mobile device cores based on application processing requirements
KR102001414B1 (ko) * 2012-09-27 2019-07-18 삼성전자주식회사 데이터 트랜잭션에 따라 전력공급을 제어하는 시스템-온-칩 및 그 동작방법
US9389853B2 (en) * 2012-10-05 2016-07-12 Advanced Micro Devices, Inc. Adaptive control of processor performance
EP2909716B1 (en) * 2012-10-16 2021-02-17 Citrix Systems, Inc. Systems and methods for bridging between public and private clouds through multi-level api integration
US9251205B2 (en) * 2013-02-21 2016-02-02 International Business Machines Corporation Streaming delay patterns in a streaming environment
US9055100B2 (en) * 2013-04-06 2015-06-09 Citrix Systems, Inc. Systems and methods for HTTP-Body DoS attack prevention with adaptive timeout
US9594560B2 (en) * 2013-09-27 2017-03-14 Intel Corporation Estimating scalability value for a specific domain of a multicore processor based on active state residency of the domain, stall duration of the domain, memory bandwidth of the domain, and a plurality of coefficients based on a workload to execute on the domain
US9244747B2 (en) 2014-03-13 2016-01-26 Qualcomm Incorporated System and method for providing dynamic clock and voltage scaling (DCVS) aware interprocessor communication

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190109408A (ko) * 2017-01-26 2019-09-25 에이티아이 테크놀로지스 유엘씨 적응적 전력 제어 루프

Also Published As

Publication number Publication date
BR112016020956A8 (pt) 2021-06-15
JP2017515191A (ja) 2017-06-08
EP3117319A1 (en) 2017-01-18
US20150261583A1 (en) 2015-09-17
US9244747B2 (en) 2016-01-26
WO2015138733A1 (en) 2015-09-17
CN106104490A (zh) 2016-11-09
BR112016020956A2 (pt) 2017-08-15
US9678809B2 (en) 2017-06-13
US20160124778A1 (en) 2016-05-05

Similar Documents

Publication Publication Date Title
KR20160132422A (ko) 동적 클럭 및 전압 스케일링 (dcvs) 인지 프로세서간 통신을 제공하기 위한 시스템 및 방법
KR101553201B1 (ko) 포터블 컴퓨팅 디바이스에서 프로세서를 지원하는 인터럽트 레이턴시 임계 및 리소스의 동적 조정
KR101798369B1 (ko) 휴대용 디바이스에서 동기적 태스크 디스패치를 위한 시스템 및 방법
JP5805855B2 (ja) マルチモードワイヤレスデバイスにおける温度に応じたエアリンクの選択
JP6370498B2 (ja) コンピューティングデバイス内の複数のsocの間における動作状態の協調のための方法およびシステム
EP1691288A2 (en) Memory management for a mobile multimedia processor
KR101516859B1 (ko) 보장된 정상 상태 데드라인을 가진 중앙 처리 장치 전력을 제어하는 시스템 및 방법
US9652022B2 (en) System and method for providing dynamic quality of service levels based on coprocessor operation
WO2014148174A1 (ja) 電子機器
US20210044952A1 (en) Bluetooth-based playback method and electronic device
JP2013542491A (ja) 性能スケーリングアルゴリズムのセットを公開して管理するためのモバイルデバイスおよび方法
US8370665B2 (en) System and method of sampling data within a central processing unit
US9606769B2 (en) System and method for adaptive compression mode selection for buffers in a portable computing device
JP2016508297A (ja) チャネル・アウェアなジョブ・スケジューリング
US9535699B2 (en) Processor, multiprocessor system, compiler, software system, memory control system, and computer system
JP2018505489A (ja) システムオンチップにおける動的メモリ利用
KR102623137B1 (ko) 컴퓨팅 디바이스에서 동적 버퍼 사이징을 위한 시스템 및 방법
WO2020057345A1 (zh) 切换串口工作状态的方法、系统、蓝牙追踪设备及存储介质
JP2014239401A (ja) 携帯端末装置および周波数制御方法