Nothing Special   »   [go: up one dir, main page]

KR102257737B1 - 전자장치의 처리량 제어장치 및 방법 - Google Patents

전자장치의 처리량 제어장치 및 방법 Download PDF

Info

Publication number
KR102257737B1
KR102257737B1 KR1020140104678A KR20140104678A KR102257737B1 KR 102257737 B1 KR102257737 B1 KR 102257737B1 KR 1020140104678 A KR1020140104678 A KR 1020140104678A KR 20140104678 A KR20140104678 A KR 20140104678A KR 102257737 B1 KR102257737 B1 KR 102257737B1
Authority
KR
South Korea
Prior art keywords
throughput
driver
clock
affinity
data
Prior art date
Application number
KR1020140104678A
Other languages
English (en)
Other versions
KR20160019824A (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 삼성전자 주식회사
Priority to KR1020140104678A priority Critical patent/KR102257737B1/ko
Priority to US14/819,701 priority patent/US10345850B2/en
Publication of KR20160019824A publication Critical patent/KR20160019824A/ko
Application granted granted Critical
Publication of KR102257737B1 publication Critical patent/KR102257737B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/0816Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0888Throughput

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Power Sources (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

전자장치의 처리량 제어장치가, 데이터를 처리하는 적어도 하나 이상의 드라이버와, 상기 드라이버를 감시하여 처리되는 데이터를 처리량으로 계산하는 처리량 감시부와, 상기 계산된 처리량을 분석하여 대응되는 드라이버의 설정 값을 결정하는 처리량 제어부와, 상기 설정값으로 기능을 실행하는 실행모듈을 포함할 수 있다.

Description

전자장치의 처리량 제어장치 및 방법{APPARATUS AND METHOD FOR CONTROLLING A THROUGHPUT IN AN ELECTRONIC DEVICE}
본 발명에 따른 다양한 실시예는 전자장치에서 처리량에 따라다이내믹하게 데이터의 성능을 제어할 수 있는 장치 및 방법에 관한 것이다.
전자장치는 버스(bus) 및/또는 프로세서(예를들면 CPU)의 높은 주파수(frequency)를 요구하는 작업이 있는 경우, 전원 드라이버(power driver)에서 제어(control)하는 전원 관리 품질(power management quality of service: PM QoS)를 이용하여 각각의 드라이버에서 개별적으로 QoS를 요청하고 이를 해제하여야 한다.
그러나 상기와 같은 방법은 각각의 드라이버에서 요청하는 처리량(throughput)에 따른 CPU/BUS 주파수를 개별적으로 설정하여야 했다. 그러므로 상기 CPU/BUS 주파수를 개별적으로 설정하는 방법은 주파수의 설정 및 수정이 어려우며, 각각의 드라이버에서 구현하는 방식이 달라 타이밍적으로 문제를 야기할 수 있었다.
본발명에 따른 다양한 실시예는 전자장치에서 드라이버의 처리량(throughput: 이하 스루풋이라 칭한다)에 연동하여 HW장치의 설정값을 변경하거나, SW 장치의 설정값을 변경하는 방법을 제시하고자 한다. HW 장치의 설정값을 변경하는 실시예로는CPU/BUS 주파수를 변경할 수 있는 장치 및 방법을 제안한다. 다만 이러한 처리에서 단순히 주파수를 변경하는 방법에 한정하지는 않으며 BUS의 대역폭(bandwidth) 설정값 변경, HW장치 처리 우선 순위의 변경, 연결된 전자 장치의 부속 장치의 설정값을 변경하는 방법을 포함한다.또 다른 실시예로는 SW측면에서 설정값을 변경하는 방법으로 전자장치에서 드라이버의 처리량(throughput)에 연동하여 어피니티(IRQ/TASK affinity)를 설정할 수 있는 공통적인 framework을 제공할 수 있는 장치 및 방법을 제안한다.
실시예에서 보듯이 상기 전자장치에서 드라이버의 처리량(throughput)에 연동하여 CPU/BUS 주파수를 변경하는 등의 HW장치 설정값을 변경하고, IRQ/TASK 어피니티를 설정하는 등의 공통적인 프레임워크(framework)를 제공함으로써, 드라이버에서 원하는 성능 및 전력감소를 용이하게 수행할 수 있으며, 이를 통해서 개발 시간(lead time)을 감소하고 일관된 인터페이스(interface)를 제공할 수 있다.
본발명의 다양한 실시예에 따른 전자장치의 처리량 제어장치는, 전자장치의 처리량 제어장치에 있어서, 데이터를 처리하는 적어도 하나 이상의 드라이버와, 상기 드라이버를 감시하여 처리되는 데이터를 처리량으로 계산하는 처리량 감시부와, 상기 계산된 처리량을 분석하여 대응되는 드라이버의 설정 값을 결정하는 처리량 제어부와, 상기 설정값으로 기능을 실행하는 실행모듈을 포함할 수 있다.
또한 본 발명의 다양한 실시예에 따른 전자장치의 처리량 제어 방법은 드라이버에서 처리되는 데이터를 갱신하는 동작과, 상기 갱신된 데이터를 계산하여 처리량을 결정하는 동작과, 상기 드라이버의 데이터 저장부에 저장된 설정 값들 중에서 상기 처리량에 대응되는 설정 값을 결정하는 동작과, 상기 설정 값으로 실행 모듈의 기능을 실행하는 동작을 포함할 수 있다.
전자장치에서 드라이버의 처리량(throughput)에 연동하여 CPU/BUS 주파수를 변경하거나 HW장치의 처리 우선순위를 변경하거나, 장치를 연결하는 버스의 대역폭을 조절하며, IRQ/TASK 어피니티를 설정하는 등의 스케듈러와 같은 OS의 설정값을 변경할 수 있다. 따라서 전자장치가 복잡한 네트워크(heavy network)를 사용하거나 파일 운영(file operation) 시나리오에서 필요한 주파수(CPU frequency and/or BUS frequency)를 용이하게 설정하거나 우선 처리할 장치를 지정하거나 대역폭을 변경하여 HW장치의응답속도를 향상할 수 있다.. 또한 IRQ/TASK 어피니티를 설정하는 등의 OS 설정값을 변경하여 HMP(heterogenious multi-processing:) 환경에서는 성능이 좋은 고성능 코어(big core)에 할당(task and/or irq allocation)하여 요구하는 성능을 만족시키거나 SMP환경에서도 각각의 TASK를 스루풋에 따라 다른 코어에서 병렬적으로 동작시키는 프레임워크가 제공되어 개발 시간 단축 및 성능 향상을 용이하게 할 수 있다. 또한 전자장치의 드라이버에서 직접 전원관리모듈(Power Manger)나 HW 장치를 직접 제어하는 루틴을 없애고 하나의 처리량 제어모듈(throughput controller, 예를 들면 처리량 감시부(monitor daemon)에서 각각의 장치를 제어할 수 관리를 용이하게 할 수 있다. 또한 전자장치의 드라이버에서 요청하는 루틴이 분리되어 드라이버에서의 중복된 처리 요청을 감소시켜 불필요한 부하(load)를 줄일 수 있다.
도 1은 다양한 실시예에 따른, 전자 장치 101을포함하는네트워크환경 100를 도시한다.
도 2는 전자장치에서 처리량 처리모듈의 구성을 도시하는 도면이다.
도 3은 리눅스 커널의 /proc/net/dev의 일예를 도시하는 도면이다.
도 4는 처리량 감시부의 구성을 도시하는 도면이다.
도 5a 및 도 5b는 처리량 제어부 및 장치 구동부의 구성을 도시하는 도면이다.
도 6은 이종 멀티 코어 프로세서의 구성 예를 도시하는 도면이다.
도 7은 이종 멀티 프로세서를 구비하는 전자장치에서 처리량에 따라 하드웨어 및 소프트웨어의 구동을 제어할 수 있는 장치를 도시하는 도면이다.
도 8은 이종 멀티 프로세서를 구비하는 전자장치에서 처리량에 따라 하드웨어 및 소프트웨어의 구동을 제어할 수 있는 장치에서 처리량 제어부의 구성을 도시하는 도면이다.
도 9는 본 발명의 다양한 실시예에 따른 전자장치에서 처리량에 따라 클럭을 설정하는 제1방법을 도시하는 흐름도이다.
도 10은 본 발명의 다양한 실시예에 따른 전자장치에서 처리량에 따라 클럭을 설정하는 제2방법을 도시하는 흐름도이다.
도 11은본 발명의 다양한 실시예에 따른 전자장치에서 처리량에 따라 클럭을 설정하는 제3방법을 도시하는 흐름도이다.
도 12는 다양한 실시예에 따른 전자 장치의 블록도를 도시한다.
이하, 첨부된 도면을 참조하여 본 발명(present disclosure)를 설명한다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들이 도면에 예시되고 관련된 상세한 설명이 기재되어 있다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경 및/또는 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용되었다. 본 발명의 다양한 실시예에서 사용될 수 있는“포함한다” 또는 “포함할 수 있다” 등의 표현은 발명(disclosure)된 해당 기능, 동작 또는 구성요소 등의 존재를 가리키며, 추가적인 하나 이상의 기능, 동작 또는 구성요소 등을 제한하지 않는다. 또한, 본 발명의 다양한 실시예에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
본 발명의 다양한 실시예에서 “또는” 등의 표현은 함께 나열된 단어들의 어떠한, 그리고 모든 조합을 포함한다. 예를 들어, “A 또는 B”는, A를 포함할 수도, B를 포함할 수도, 또는 A 와 B 모두를 포함할 수도 있다.
본 발명의 다양한 실시예에서 사용된 “제 1,”“제2,”“첫째,”또는“둘째,”등의 표현들은 다양한 실시예들의 다양한 구성요소들을 수식할 수 있지만, 해당 구성요소들을 한정하지 않는다. 예를 들어, 상기 표현들은 해당 구성요소들의 순서 및/또는 중요도 등을 한정하지 않는다. 상기 표현들은 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 수 있다. 예를 들어, 제1 사용자 기기와 제 2 사용자 기기는 모두 사용자 기기이며, 서로 다른 사용자 기기를 나타낸다. 예를 들어, 본 발명의 다양한 실시예의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 새로운 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 새로운 다른 구성요소가 존재하지 않는 것으로 이해될 수 있어야 할 것이다.
본 발명의 다양한 실시예에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명의 다양한 실시예를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명의 다양한 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 발명의 다양한 실시예에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 발명의 다양한 실시예에 따른 전자 장치는, 휘도데이터, 제1색차데이터 및 제2색차데이터로 구성되는 이미지를 처리할 때 화소의 패턴에 따라 색차데이터를 코딩할 수 있는 이미지처리 기능이 포함된 장치일 수 있다. 예를 들면, 전자 장치는 스마트 폰(smartphone), 태블릿 PC(tablet personal computer), 이동 전화기(mobile phone), 화상전화기, 전자북 리더기(e-book reader), 데스크탑 PC(desktop personal computer), 랩탑 PC(laptop personal computer), 넷북 컴퓨터(netbook computer), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 모바일 의료기기, 카메라(camera), 또는 웨어러블 장치(wearable device)(예: 전자 안경과 같은 head-mounted-device(HMD), 전자 의복, 전자 팔찌, 전자 목걸이, 전자 앱세서리(appcessory), 전자 문신, 또는 스마트 와치(smart watch))중 적어도 하나를 포함할 수 있다.
어떤 실시예들에 따르면, 전자 장치는 화소패턴에 따라 이미지를 코딩하는 이미지처리기능을 갖춘 스마트 가전 제품(smart home appliance)일 수 있다. 스마트 가전 제품은, 예를 들자면, 전자 장치는 텔레비전, DVD(digital video disk) 플레이어, 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기, 셋톱 박스(set-top box), TV 박스(예를 들면, 삼성 HomeSync™, 애플TV™, 또는 구글 TV™), 게임 콘솔(game consoles), 전자 사전, 전자 키, 캠코더(camcorder), 또는 전자 액자 중 적어도 하나를 포함할 수 있다.
어떤 실시예들에 따르면, 전자 장치는 각종 의료기기(예: MRA(magnetic resonance angiography), MRI(magnetic resonance imaging), CT(computed tomography), 촬영기, 초음파기 등), 네비게이션(navigation) 장치, GPS 수신기(global positioning system receiver), EDR(event data recorder), FDR(flight data recorder), 자동차 인포테인먼트(infotainment) 장치, 선박용 전자 장비(예: 선박용 항법 장치 및 자이로 콤파스 등), 항공 전자기기(avionics), 보안 기기, 차량용 헤드 유닛, 산업용 또는 가정용 로봇, 금융 기관의 ATM(automatic teller's machine) 또는 상점의 POS(point of sales) 중 적어도 하나를 포함할 수 있다.
어떤 실시예들에 따르면, 전자 장치는 통신 기능을 포함한 가구(furniture) 또는 건물/구조물의 일부, 전자 보드(electronic board), 전자 사인 입력장치(electronic signature receiving device), 프로젝터(projector), 또는 각종 계측기기(예: 수도, 전기, 가스, 또는 전파 계측 기기 등) 중 적어도 하나를 포함할 수 있다. 본 발명의 다양한 실시예에 따른 전자 장치는 전술한 다양한 장치들 중 하나 또는 그 이상의 조합일 수 있다. 또한, 본 발명의 다양한 실시예에 따른 전자 장치는 플렉서블 장치일 수 있다. 또한, 본 발명의 다양한 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않음은 당업자에게 자명하다.
이하, 첨부된 도면을 참조하여 다양한 실시예에 따른 전자 장치에 대해서 살펴본다. 다양한 실시예에서 이용되는 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치(예: 인공지능 전자 장치)를 지칭할 수 있다.
도 1은 다양한 실시예에 따른, 전자 장치 101을포함하는네트워크환경 100를 도시한다. 도 1을 참조하면, 상기 전자 장치 101는 버스 110, 프로세서 120, 메모리 130, 입출력 인터페이스 140, 디스플레이 150, 통신인터페이스 160 및 처리량처리모듈170 을 포함할 수 있다.
버스는 프로세서120과 다른 장치(예를들면 메모리130, 입출력인터페이스140, 디스플레이150, 통신인터페이스160 등)을 연결하는 버스110(MIF)와 프로세서120의 내부 동작을 위한버스(INT) 등을 포함할 수 있다. 상기 버스 110는 전술한 구성요소들을 서로 연결하고, 전술한 구성요소들 간의 통신(예: 제어 메시지)을 전달하는 회로일 수 있다.
상기 프로세서 120은, 예를 들면, 상기 버스 110를 통해 전술한 다른 구성요소들(예: 상기 메모리 130, 상기 입출력 인터페이스 140, 상기 디스플레이 150, 상기 통신 인터페이스 160, 또는 처리량처리모듈170 등)로부터 명령을 수신하여, 수신된 명령을 해독하고, 해독된 명령에 따른 연산이나 데이터 처리를 실행할 수 있다.
상기 메모리 130는, 상기 프로세서 120 또는 다른 구성요소들(예: 상기 입출력 인터페이스 140, 상기 디스플레이 150, 상기 통신 인터페이스 160, 또는 처리량처리모듈(throughput processing module)170 등)로부터 수신되거나 상기 프로세서 120 또는 다른 구성요소들에 의해 생성된 명령 또는 데이터를 저장할 수 있다. 상기 메모리 130는, 예를 들면, 커널 131, 미들웨어 132, 어플리케이션 프로그래밍 인터페이스(API: application programming interface) 133 또는 어플리케이션 134 등의 프로그래밍 모듈들을 포함할 수 있다. 전술한 각각의 프로그래밍 모듈들은 소프트웨어, 펌웨어, 하드웨어 또는 이들 중 적어도 둘 이상의 조합으로 구성될 수 있다.
상기 커널 131은 나머지 다른 프로그래밍 모듈들, 예를 들면, 상기 미들웨어 132, 상기 API 133 또는 상기 어플리케이션 134에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들(예: 상기 버스 110, 상기 프로세서 120 또는 상기 메모리 130 등)을 제어 또는 관리할 수 있다. 또한, 상기 커널 131은 상기 미들웨어 132, 상기 API 133 또는 상기 어플리케이션 134에서 상기 전자 장치 101의 개별 구성요소에 접근하여 제어 또는 관리할 수 있는 인터페이스를 제공할 수 있다.
상기 미들웨어 132는 상기 API 133 또는 상기 어플리케이션 134이 상기 커널 131과 통신하여 데이터를 주고받을 수 있도록 중개 역할을 수행할 수 있다. 또한, 상기 미들웨어 132는 상기 어플리케이션 134로부터 수신된 작업 요청들과 관련하여, 예를 들면, 상기 어플리케이션 134 중 적어도 하나의 어플리케이션에 상기 전자 장치 101의 시스템 리소스(예: 상기 버스 110, 상기 프로세서 120 또는 상기 메모리 130 등)를 사용할 수 있는 우선 순위를 배정하는 등의 방법을 이용하여 작업 요청에 대한 제어(예: 스케쥴링 또는 로드 밸런싱)을 수행할 수 있다.
상기 API 133는 상기 어플리케이션 134이 상기 커널 131 또는 상기 미들웨어 132에서 제공되는 기능을 제어하기 위한 인터페이스로, 예를 들면, 파일 제어, 창 제어, 화상 처리 또는 문자 제어 등을 위한 적어도 하나의 인터페이스 또는 함수(예: 명령어)를 포함할 수 있다.
다양한 실시예에 따르면, 상기 어플리케이션 134는 SMS/MMS 어플리케이션, 이메일 어플리케이션, 달력 어플리케이션, 알람 어플리케이션, 건강 관리(health care) 어플리케이션(예: 운동량 또는 혈당 등을 측정하는 어플리케이션) 또는 환경 정보 어플리케이션(예: 기압, 습도 또는 온도 정보 등을 제공하는 어플리케이션) 등을 포함할 수 있다. 추가적으로 또는 대체적으로, 상기 어플리케이션 134은 상기 전자 장치 101와 외부 전자 장치(예: 전자 장치 104) 사이의 정보 교환과 관련된 어플리케이션일 수 있다. 상기 정보 교환과 관련된 어플리케이션은, 예를 들어, 상기 외부 전자 장치에 특정 정보를 전달하기 위한 알림 전달(notification relay) 어플리케이션, 또는 상기 외부 전자 장치를 관리하기 위한 장치 관리(device management) 어플리케이션을 포함할 수 있다.
예를 들면, 상기 알림 전달 어플리케이션은 상기 전자 장치 101 의 다른 어플리케이션(예: SMS/MMS 어플리케이션, 이메일 어플리케이션, 건강 관리 어플리케이션 또는 환경 정보 어플리케이션 등)에서 발생한 알림 정보를 외부 전자 장치(예: 전자 장치 104)로 전달하는 기능을 포함할 수 있다. 추가적으로 또는 대체적으로, 상기 알림 전달 어플리케이션은, 예를 들면, 외부 전자 장치(예: 전자 장치 104)로부터 알림 정보를 수신하여 사용자에게 제공할 수 있다. 상기 장치 관리 어플리케이션은, 예를 들면, 상기 전자 장치 101와 통신하는 외부 전자 장치(예: 전자 장치 104)의 적어도 일부에 대한 기능(예: 외부 전자 장치 자체(또는, 일부 구성 부품)의 턴온/턴오프 또는 디스플레이의 밝기(또는, 해상도) 조절), 상기 외부 전자 장치에서 동작하는 어플리케이션 또는 상기 외부 전자 장치에서 제공되는 서비스(예: 통화 서비스 또는 메시지 서비스)를 관리(예: 설치, 삭제 또는 업데이트)할 수 있다.
다양한 실시예에 따르면, 상기 어플리케이션 134은 상기 외부 전자 장치(예: 전자 장치 104)의 속성(예: 전자 장치의 종류)에 따라 지정된 어플리케이션을 포함할 수 있다. 예를 들어, 외부 전자 장치가 MP3 플레이어인 경우, 상기 어플리케이션 134은 음악 재생과 관련된 어플리케이션을 포함할 수 있다. 유사하게, 외부 전자 장치가 모바일 의료기기인 경우, 상기 어플리케이션 134은 건강 관리와 관련된 어플리케이션을 포함할 수 있다. 한 실시예에 따르면, 상기 어플리케이션 134은 전자 장치 101에 지정된 어플리케이션 또는 외부 전자 장치(예: 서버 106 또는 전자 장치 104)로부터 수신된 어플리케이션 중 적어도 하나를 포함할 수 있다.
상기 입출력 인터페이스 140은, 입출력 장치(예: 센서, 키보드 또는 터치 스크린)를 통하여 사용자로부터 입력된 명령 또는 데이터를, 예를 들면, 상기 버스 110를 통해 상기 프로세서 120, 상기 메모리 130, 상기 통신 인터페이스 160, 또는 상기 처리량처리모듈170에 전달할 수 있다. 예를 들면, 상기 입출력 인터페이스 140은 터치 스크린을 통하여 입력된 사용자의 터치에 대한 데이터를 상기 프로세서 120로 제공할 수 있다. 또한, 상기 입출력 인터페이스 140은, 예를 들면, 상기 버스 110을 통해 상기 프로세서 120, 상기 메모리 130, 상기 통신 인터페이스 160, 또는 상기 처리량처리모듈170로부터 수신된 명령 또는 데이터를 상기 입출력 장치(예: 스피커 또는 디스플레이)를 통하여 출력할 수 있다. 예를 들면, 상기 입출력 인터페이스 140은 상기 프로세서 120를 통하여 처리된 음성 데이터를 스피커를 통하여 사용자에게 출력할 수 있다.
상기 디스플레이 150은 사용자에게 각종 정보(예: 멀티미디어 데이터 또는 텍스트 데이터 등)을 표시할 수 있다.
상기 통신 인터페이스 160은 상기 전자 장치 101와 외부 장치(예: 전자 장치 104 또는 서버 106) 간의 통신을 연결할 수 있다. 예를 들면, 상기 통신 인터페이스 160은 무선 통신 또는 유선 통신을 통해서 네트워크 162에 연결되어 상기 외부 장치와 통신할 수 있다. 상기 무선 통신은, 예를 들어, Wifi(wireless fidelity), BT(Bluetooth), NFC(near field communication), GPS(global positioning system) 또는 cellular 통신(예: LTE, LTE-A, CDMA, WCDMA, UMTS, WiBro 또는 GSM 등) 중 적어도 하나를 포함할 수 있다. 상기 유선 통신은, 예를 들어, USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard 232) 또는 POTS(plain old telephone service) 중 적어도 하나를 포함할 수 있다.
한 실시예에 따르면, 상기 네트워크 162는 통신 네트워크(telecommunications network)일 수 있다. 상기 통신 네트워크 는 컴퓨터 네트워크(computer network), 인터넷(internet), 사물 인터넷(internet of things) 또는 전화망(telephone network) 중 적어도 하나를 포함할 수 있다. 한 실시예에 따르면, 상기 전자 장치 101와 외부 장치 간의 통신을 위한 프로토콜(예: transport layer protocol, data link layer protocol 또는 physical layer protocol))은 어플리케이션 134, 어플리케이션 프로그래밍 인터페이스 133, 상기 미들웨어 132, 커널 131 또는 통신 인터페이스 160 중 적어도 하나에서 지원될 수 있다.
상기 처리량 처리모듈170은 상기 프로세서120에 프로그램 형태로 구성될 수도 있다. 상기 처리량 처리모듈 170은 업데이트되는 장치들의 수신 및 송신 데이터(예를 들면 드라이버에서 받은 packet/보낸 packet data)의 크기를 일정시간 간격으로 입력하여 현재의 처리량(throughput(data 크기/시간)을 계산할 수 있다. 그리고 상기 처리량 처리모듈170은 상기 계산된 처리량을 분석하여 대응되는 드라이버의 설정 값을 결정하고, 결정된 설정값으로 실행모듈의 기능을 실행할 수 있다. 예를 들면 상기 처리량처리모듈170은 각 드라이버들에 대응되는 수로 구비되고 해당 드라이버에서 처리되는 상기 처리량에 대응되는 클럭 설정값들을 저장하는 데이터 저장부를 구비할 수 있다. 그리고 상기 처리량처리모듈170은 해당하는 드라이버의 데이터 저장부에서 상기 처리량에 해당하는 설정값을 억세스하여 실행모듈의 기능을 제어할 수 있다. 또한 상기 실행모듈은 클럭 구동부나 하드웨어 동작 제어부가 될 수 있으며, 상기 클럭 구동부의 설정값은 클럭 값이 될 수 있고 하드웨어 동작 제어부의 설정값은 각 하드웨어의 동작 설정값이 될 수 있다. 또한 상기 실행모듈은 운영체제의 동작 제어부가 될 수 있으며, 상기 운영체제 제어부는 스케듈러, 인터럽트 처리모듈이 될 수 있으며, 상기 스케듈러의 설정값은 운영체제가 관리해야할 태스크의 어피니티 값이나 프라이어리티 등이 될 수 있으며, 상기 인터럽트 처리 모듈의 설정값은 인터럽트처리의 어피니티 값이나 인터럽트를 처리 우선 순위 설정값 등이 될 수 있다. 따라서 상기 처리량처리모듈170은 상기 처리량에 대응되는 설정값을 결정할 수 있으며, 상기 설정값에 의해 하드웨어의 동작을 제어할 수 있다. 예를 들어 클럭 구동부에 대응되는 클럭 주파수(예를들면 CPU/MIF/INT frequency)를 제공할 수 있으며, 프로세서 코어를 설정하는 어피니티(affinity) 정보를 설정할 수 있으며, 인터럽트의 동작을 제어하는 정보를 설정할 수 있다. 따라서 전자장치는 상기 처리량 처리모듈170에서 결정된 클럭 주파수로 프로세서120 및 버스110(프로세서120의 내부 버스를 포함할 수 있음) 클럭 주파수를 설정할 수 있으며, 또한 드라이버의 스루풋에 따라 프로세서120을 할당할 수 있다.
여기서 상기 프로세서120은 HMP(heterogeniousmulti-processing)가 될 수 있다. 상기 HMP는 고속으로 데이터를 처리할 수 있는 적어도 하나의 고성능의 제1프로세서(big core) 및 상대적으로 성능이 저하되는 적어도 하나의 제2프로세서(little core)로 구성되는 프로세서가 될 수 있다. 예를들면, 옥타코어 HMP는 4개의 빅코어 프로세서들과 4개의 리틀코어 프로세서들로 구성할 수 있다. 따라서 상기 프로세서120이 HMP이면, 상기 처리량 처리모듈170은 드라이버에서 처리되는 데이터의 크기에 따라 빅코어 프로세서 또는 리틀 코어 프로세서의 선택하도록 제어할 수 있다. 또한 상기 프로세스 120은 SMP(symmetric multiprocessing)가 될 수 있다. SMP에서 데이터의 크기에 따라 처리되어야 할 처리를 상기 처리량 처리 모듈 170은 드라이버에서 처리되는 데이터의 크기에 따라서 데이터 처리를 여러 코어 프로세서에 분리할 수 있다.
또한 상기 처리량 처리모듈170에서 제어되는 처리량, 즉 스루풋은 전자장치에서 주어진 시간 동안에 드라이버가 처리할 수 있는 데이터의 크기가 될 수 있다. 그리고 상기 데이터의 크기는 드라이버에 입력되는 데이터의 크기 및 드라이버에서 송신되는 데이터의 크기를 모두 포함할 수 있다. 상기 스루풋은 드라이버에서 주어진 시간 동안 처리하는 데이터의 크기가 될 수 있다.
도 2는 전자장치에서 처리량 처리모듈의 구성을 도시하는 도면이다.
상기 도 2를 참조하면, 상기 처리량처리모듈은 드라이버210, 처리량 감시부220, 처리량 제어부230 및 장치 구동부240으로 구성될 수 있다.
상기 드라이버210은 하나 또는 복수의 드라이버들211-21N으로 구성될 수 있으며, 각각의 드라이버들은 처리되는 데이터를 갱신할 수 있다. 여기서 상기 드라이버210은 통신 인터페이스160의 드라이버가 될 수 있으며, 프로세서120에서 처리되는 파일 시스템의 드라이버, 또는 데이터를 처리하고 처리된 데이터량을 측정할 수 있는 모든 드라이버가 해당될 수 있다. 예를 들면 상기 드라이버210은 WIFI 드라이버, MODEM(modulation and demodulation) 드라이버, IPC(inter processor communication) 드라이버가 될 수 있다. 상기 드라이버210은 각각 대응되는 드라이버 환경에 데이터를 송신 및 수신할 수 있으며, 처리량 감시부220이 송수신되는 데이터의 크기를 읽을 수 있도록 해당하는 파일노드(file node) 위치에 처리되는 데이터의 크기를 업데이트할 수 있다. 네트워크 디바이스는 리눅스 커널에서 기본적으로 제공할 수 있으며, 전자장치는 리눅스 커널의 /proc/net/dev에서 네트워크 처리량(network throughput)을 측정할 수있다. 도 3은 리눅스 커널의 /proc/net/dev의 일예를 도시하는 도면이다.
상기 처리량 감시부220은 상기 드라이버210을 감시하여 각각의 드라이버들에서 출력되는 데이터 크기를 처리량으로 계산할 수 있다. 즉, 상기 처리량 감시부220은 설정된 시간 간격으로 상기 파일노드나 메모리에 저장된 변경 값 등의 위치를 읽어 각각의 드라이버에서 갱신되는 데이터의 크기를 읽어올 수 있다. 여기서 데이터의 크기는 드라이버210에서 송수신되는 데이터들의 크기가 될 수 있다. 이후 상기 처리량 감시부220은 설정된 시간의 데이터 처리량(throughput)을 계산하고, 계산된 처리량을 처리량 메시지로 생성하여 처리량 제어부230에 전송한다. 여기서 처리량 메시지는 드라이버 식별자 및 설정된 시간에서 처리하여야 스루풋 정보를 포함할 수 있다. 따라서 상기 처리량 감시부220은 드라이버211-21N의 각각에 대한 스루풋을 계산하고, 각각 대응되는 드라이버 식별자 및 해당 드라이버의 스루풋 정보를 포함하는 메시지를 생성하여 처리량 제어부230에 출력할 수 있다.
상기 처리량 제어부230은 상기 처리량 감시부220에서 출력되는 계산된 처리량을 분석하여 대응되는 드라이버 장치의 클럭을 결정하거나 각 하드웨어의 동작 설정값을 변경할 수 있다. 상기 처리량 제어부230은 상기 처리량에 따라 클럭 주파수나 하드웨어 동작 설정값을 저장하는 테이블을 구비할 수 있다. 그리고 상기 설정값을 저장하는 데이터 테이블을 상기 드라이버211-21N에 각각 대응되는 수로 구비할 수 있다. 상기 처리량 제어부230은 처리량 메시지를 파싱하여 드라이버를 식별하고, 해당하는 드라이버에 대응되는 기준 데이터 테이블에서 상기 처리량에 해당하는 장치의 설정값을 억세스하여 대응되는 장치의 설정 값으로 출력할 수 있다. 여기서 상기 장치의 설정값은 클럭, 우선순위 및/또는 버스 대역폭 등이 될 수 있다. 따라서 상기 장치 구동부240은 클럭 구동부, 우선순위 구동부 및/또는 버스 대역 구동부 등이 될 수 있다.
장치 구동부 240이 클럭 구동부이면, 상기 장치 구동부240은 상기 처리량 제어부230에서 출력되는 클럭을 각각 대응되는 장치의 클럭으로 구동할 수 있다. 여기서 상기 클럭은 프로세서120의 클럭 및 버스 클럭 등이 될 수 있다. 그리고 상기 버스클럭은 CPU와 외부 장치(메모리 등)를 연결하는 BUS의 클럭인 MIF와, 프로세서120의 내부 동작을 위한 BUS의 클럭은 INT클럭이 될 수 있다.
상기와 같이 전자장치는 여러 개의 스루풋에 따른 설정 값들과 스루풋값을 측정할 수 있는 file node나 메모리 저장소를 구성하고, 각 드라이버들에서 스루풋값을 읽고 상기 설정값으로 각 CPU/BUS 클럭 주파수를 설정하거나 HW장치의 설정값을 변경할 수 있으며, 프로세서가 멀티코어이면 어피니티(예를들면 TASK/IRQ 어피니티) 온/오프를 설정하는 등의 운영체제 설정값을 변경할 수 있다. 여기서 스루풋에 따른 설정 값들은 테이블로 구성할 수 있으며, 테이블의 설정 값들은 미리 실험적으로 측정하여 구할 수 있다.
도 4는 처리량 감시부의 구성을 도시하는 도면이다.
상기 도 4를 참조하면, 처리량 감시부는 처리량 수집부410, 처리량 계산부420, 처리량 출력부430을 포함할 수 있다.
상기 처리량 수집부410은 상기 드라이버211-21N을 감시하며, 설정된 시간 간격으로 드라이버211-211에서 처리되는 데이터를 수집할 수 있다. 상기 드라이버211-21N은 각각 자신들의 수신한 데이터 및 송신한 데이터의 크기를 업데이트할 수 있다. 그리고 처리량 수집부410은 일정 시간 간격으로 각 드라이버들에서 갱신되고 있는 데이터의 크기(및 시간)을 수집할 수 있다. 이때 되는 데이터는 송수신되는 데이터의 크기 및 드라이버의 식별정보가 될 수 있다. 예들 들면, 상기 처리량 수집부410에서 수집하는 드라이버 트리(driver tree 또는 device tree)는 하기 <표 1>과 같을 수 있으며, 이때의 처리되는 데이터 크기(RX/TX 데이터의 누적된 값)는 하기 <표 2>와 같을 수 있다.
boot_device@1 {
net_boost,label="WIFI";
net_boost,node="wlan0,p2p0";
… }
boot_device@2 {
net_boost,label=“IPC";
net_boost,node="rmnet0,rmnet1,rmnet2,rmnet3
proc/net/dev
Inter-face RX bytes TX bytes
wlan0 35000 2000
p2p0 4000 0
rmnet0 0 0
rmnet1 20000 1000
rmnet2 0 0
rmnet3 0 0
그러면 상기 처리량 계산부420은 하기 <표 3>과 같은 방법으로 상기 수집된 데이터의 입력 및 출력 데이터의 크기를 합산한 후 시간당 처리할 데이터의 크기로 처리량을 계산할 수 있다.
sum = tx + rx
delta = sum - prev
Mbps = (delta * 8) / 1000000 / sec
prev = sum
즉, 상기 처리량 계산부420은 상기 <표 3>에 나타낸 바와 같이, 입력 및 출력 데이터의 크기를 합산하는 가산기(sum)와, 상기 가산기 출력에서 이전 합산값을 감산하는 차이값 계산기(delta)와,상기 차이값을 시간당 전송할 데이터의 전송속도로 환산하여 처리량을 생성하는 처리량 생성기(Mbps)와,상기 차이값 계산기의 출력을 이전 합산값으로 저장하는 버퍼(prev, 여기서 버퍼는 이전 sum 값을 저장하는 버퍼가 될 수 있다)를 구비할 수 있다. 그리고 상기 처리량 계산부420은 상기와 같은 방법으로 각 드라이버(또는 디바이스)들의 처리량을 측정할 수 있다.
상기 처리량 출력부430은 상기 처리량 계산부 420에서 계산된 처리량 및 드라이버 식별자를 포함하는 처리량 메시지로 생성하여 파일노드에서 기록할 수 있다.또는 상기 처리량 출력부430은 처리량 메시지를 메모리에 저장할 수 있다. 이때 드라이버가 상기 <표 1> 및 <표 2>와 같은 경우, 출력되는 처리량 메시지는드라이버 식별자 및 처리량(register id(dev)/network throughput)을 포함하는 하기 <표 4>와 같은 구조를 가질 수 있다.
T-put(WIFI) NUM(1)
T-put(IPC) NUM(2)
또한 상기 도 2에 도시된 바와 같이 상기 드라이버210은 적어도 두개의 드라이버들로 구성될 수 있다. 그러면 상기 처리량 감시부220의 상기 처리량수집부410이 각 드라이버211-21N들에서 각각 처리되는 데이터 크기를 일정 시간 간격으로 수집하고, 상기 처리량 계산부는 420은 각 드라이버 별로 수집된 데이터의 입력 및 출력 데이터의 크기를 합산한 후 시간당 처리할 데이터의 크기를 각 드라이버들의 처리량을 계산하며, 상기 처리량 출력부430은 각 드라이버211-21N 별로 계산된 처리량 및 드라이버 식별자를 포함하는 처리량 메시지들을 생성하여 처리량 제어부230에 제공할 수 있다.
도 5a 및 도 5b는 처리량 제어부 및 장치 구동부의 구성을 도시하는 도면이다.
도 5a를 참조하면, 처리량 제어부230은 처리량 수신부510, 데이터 저장부520 및 리소스 제어부 530을 포함할 수 있다. 그리고 장치 구동부 240은 클럭구동부541, 우선순위 구동부 543, BUS의 대역폭(bandwidth) 설정값 변경하는 버스대역 구동부545, 설정값 변경부547등을포함할수있다.
상기 데이터 저장부520은 각 드라이버들에 대응되는 수로 구비되는 테이블로 구성될 수 있다. 그리고 상기 데이터 테이블들은 각각 대응되는 드라이버의 처리량에 매핑되어 장치의 리소스 설정값들을 저장할 수 있다. 예를들면 와이파이 드라이버에 대응되는 데이터 테이블은 와이파이 통신에 의해 송수신되는 데이터들의 처리량에 따라 클럭 주파수를 설정할 수 있는 클럭 데이터들을 저장할 수 있다. 이때 상기 데이터 테이블은 처리량 감시부220에서 계산된 처리량 값에 매핑되는 다수의 해당 장치의 설정값들을 구비할 수 있다.
상기 처리량 수신부510은 상기 처리량 감시부220에서 출력되는 처리량 메시지를 억세스할 수 있으며, 억세스된 처리량 메시지를 파싱하여 드라이버 식별 정보 및 처리량 정보로 분리할 수 있다. 상기 리소스 제어부 530은 상기 파싱된 처리량 메시지에서 드라이버 식별정보를 분석하여 드라이버 장치를 결정하며, 상기 결정된 드라이버 장치의 데이터 테이블에서 상기 처리량 정보에 해당하는 설정값을 억세스하여 해당 장치의 구동을 제어(예를들면 클럭의 변경, 장치의 처리 우선 순위 변경, 버스 대역폭 변경, 부속 장치의 설정값을 변경 등)하는 설정값으로 할 수 있다.
이때 데이터 저장부520은 각각의 처리량에 대하여 각각 대응되는 복수의 설정 값을 저장할 수 있다. 여기서 상기 데이터 저장부520에서 저장되는 설정 값들은 각 장치 별로 독립적으로 구성될 수 있으며, 상기 설정 값은 상기 처리량에 의해 결정될 수 있다. 즉, 데이터 저장부520은 각 장치에 대응되는 수로 데이터 테이블들을 구비할 수 있으며, 상기 각 데이터 테이블은 해당하는 장치의 리소스를 변경하기 위한 설정값들을 구비하고, 상기 데이터 테이블의 설정 값들은 상기 처리량에 매핑되는 형태로 구성할 수 있다.
상기 장치 구동부 240은 장치의 클럭 주파수를 변경하는 클럭구동부541, HW장치 처리 우선 순위의 변경하는 우선순위 구동부 543, BUS의 대역폭(bandwidth) 설정값 변경하는 버스대역 구동부545, 연결된 전자 장치의 부속 장치의 설정값을 변경하는 설정값변경부547등을포함할수있다.
도 5b는 상기 장치 구동부 240이 클럭구동부541인 경우의 예를 도시하는 도면이다.
도 5b를 참조하면, 처리량제어부230은 처리량 수신부510, 데이터 저장부520 및 클럭제어부560을 포함할 수 있다. 그리고 클럭 구동부 541은 CPU 클럭 구동부570 및 버스클럭 구동부580을 포함할 수 있다.
상기 데이터 저장부520은 각 드라이버들에 대응되는 수로 구비되는 테이블로 구성될 수 있다. 그리고 상기 기준 데이터 테이블들은 각각 대응되는 드라이버의 처리량에 매핑되어 클럭을 설정할 수 있는 클럭 데이터들을 저장할 수 있다. 예를들면 와이파이 드라이버에 대응되는 기준 데이터 테이블은 와이파이 통신에 의해 송수신되는 데이터들의 처리량에 따라 클럭 주파수를 설정할 수 있는 클럭 데이터들을 저장할 수 있다. 이때 상기 기준 데이터 테이블은 처리량 감시부220에서 계산된 처리량 값에 매핑되는 다수의 클럭 데이터들을 구비할 수 있다.
상기 처리량 수신부510은 상기 처리량 감시부220에서 출력되는 처리량 메시지를 억세스할 수 있으며, 억세스된 처리량 메시지를 파싱하여 드라이버 식별 정보 및 처리량 정보로 분리할 수 있다. 상기 클럭제어부560은 상기 파싱된 처리량 메시지에서 드라이버 식별정보를 분석하여 드라이버 장치를 결정하며, 상기 결정된 드라이버 장치의 설정값 테이블에서 상기 처리량 정보에 해당하는 클럭 데이터들을 억세스하여 클럭 데이터로 설정할 수 있다.
이때 데이터 저장부520은 각각의 처리량에 대하여 각각 대응되는 복수의 클럭들의 설정값을 저장할 수 있다. 여기서 상기 데이터 저장부520에서 저장되는 클럭 설정값은 프로세서(또는 CPU) 클럭 및 버스 클럭 데이터들을 포함할 수 있다. 그리고 상기 버스 클럭은 프로세서와 외부장치들 간의 버스 클럭 MIF 및 프로세서 내부의 소자들 간의 버스 클럭 INT를 포함할 수 있다. 상기 클럭제어부는 상기 데이터 저장부에서 측정된 처리량에 대응되는 CPU 클럭(프로세서 클럭) 및 버스 클럭(예를들면 MIF 및 INT)을 결정하여 클럭구동부에 전달할 수 있다.. 그러면 CPU 클럭구동부570은 CPU 클럭을 프로세서의 클럭으로 제공할 수 있으며, 상기 버스클럭구동부580은 상기 MIF 및 INT 클럭을 각각 프로세서와 외부장치의 버스 클럭 및 프로세서 내부 버스의 클럭으로 제공할 수 있다.
전자장치의 프로세서120은 멀티 코어 프로세서(multi-core processor: dual-core, quad-core, hexa-core, octa-core, magni-core 등)으로 구성될 수 있다. 멀티 코어(multi-core) 프로세서는 두 개 이상의 독립 코어를 단일 집적 회로로 이루어진 하나의 패키지로 통합한 프로세서를 의미하며, 칩 레벨 멀티프로세서(CMP)라고도 한다. 멀티 코어 프로세서는 여러 개의 코어를 탑재하기 때문에 싱글코어 프로세서보다 낮은 주파수에서 작동할 수 있으며, 싱글 코어에서 소모되는 전력을 여러 코어에 분산시킬 수 있다. 또한 두개 이상의 코어를 탑재하여 만든 멀티 코어 프로세서를 지원하는 프로그램으로 작업할 때, 싱글 코어 프로세서에 비해서 빨리 작업할 수 있다.
또한 다른 특징(예: 저전력 또는 고성능)을 가지는 복수의 프로세서들을 이용하여 멀티 코어 프로세서를 구성할 수 있다. 도 6은 이종 멀티 코어 프로세서의 구성 예를 도시하는 도면이다.이종 멀티 프로세서(heterogeneous multi-core processor: 이하 HMP라 칭함)는 동일한 범용 프로세서 코어의 배열이 아닌 각각 다른 사용용도로 특화된 코어들로 구성된 멀티 프로세서를 의미할 수 있다. 예를들면 전자장치에서 데이터 통신을 수행할 때 처리량이 낮으면 저속 저사양의 프로세서(예를들면 little core processor)를 사용하는 것이 유리하며, 처리량이 높으면 고속 고사양의 프로세서(예를들면 big core processor)를 사용하는 것이 유리하다. 따라서 멀티 코어 프로세서를 사용할 때 처리량에 따라 적응적으로 프로세서를 할당하여 사용하는 것이 유리할 수 있다. 도 6은 octa-core 프로세서의 구성예로써, 4개의 빅코어 프로세서611-614들과 4개의 little-core 프로세서621-624의 구성을 도시하고 있다.
도 7은 이종 멀티 프로세서를 구비하는 전자장치에서 처리량에 따라 클럭 및 프로세서를 할당할 수 있는 장치를 도시하는 도면이다.
도 7을 참조하면, 전자장치는 드라이버711-771N, 처리량 감시부720, 처리량제어부730, 클럭 구동부740, 스케듈러750을 포함할 수 있다.
드라이버711-71N은 각각 대응되는 드라이버의 어피니티 프로세서 코어를 설정할 수 있으며, 또한 대응되는 드라이버에서 처리되는 데이터를 갱신할 수 있다. 그리고 처리량 감시부720은 상기 드라이버들을 감시하여 처리되는 데이터를 수집하고, 수집된 데이터의 크기 계산하여 처리량을 계산할 수 있다. 처리량 제어부730은 설정값을 저장하는 데이터저장부를 구비할 후 있으며,상기 데이터 저장부에서 상기 처리량에 대응되는 설정값을 억세스할 수 있다. 여기서 상기 설정값은 클럭들 및 어피니티의 온/오프 값이 될 수있다. 상기 처리량제어부720은 상기 처리량에 대응되는 클럭(CPU, BUS 등)을 결정할 수 있으며, 대응되는 드라이버에서 설정된어피니티 프로세서의 온/오프 정보를 결정할 수 있다. 클럭 구동부740은 상기처리량제어부730에서 결정된 클럭들을 제공할 수 있다. 스케듈러750은 스케듈링 시점에서 상기 처리량 제어부730에서 결정된 어피니티온/오프에 따라 어피니티 프로세서의 활성 또는 비활성화시키는스케듈링할 수 있다. 상기 전자장치는 각각의 드라이버711-71N에서 사용하는 다양한 환경에 맞추어 스루풋에 따른 설정값을 추출할 수 있다. 그리고 상기 각 드라이버711-71N의 특성에 맞는 값을 추출할 때에는 다양한 변수를 고려할 수 있다. 예를 들면, WIFI/IPC와 같이 데이터를 처리하는 드라이버는 데이터를 처리하는 구간에 따라 쓰레드(thread)를 나눠서 처리할 수 있다. 이런 경우, 해당 thread들은 같은 core에서 구동되게 하여 데이터 스트림(data stream)처리 과정에서 특정 core가 전원제어(power control(sleep/hotplug out 등))에 의해서 응답이 늦어지게 되는 문제를 해결할 수 있다.
따라서 동일 core에서 데이터를 처리하기 위하여, TASK 어피니티와 IRQ 어피니티를 같은 core에 설정하는 것이 바람직할 수 있다. 또한 각 드라이버711-71N에서 처리되는 스루풋에 해당되는 data량(Network의 경우 100Mbps, 300Mbps 등)과 해당 스루풋에서 요청되는 CPU나 BUS의 clock을 irq count * 1 irq에 처리되는 data량 등의 방법으로 측정한 결과에 추가적인 offset(다른 task/irq수행을 위한 여유) 등을 두어 CPU/BUS 주파수를 설정할 수 있다. 이러한 방법으로 각 드라이버에서 스루풋값과 이에 해당되는 CPU(little core/Big core)의 frequency, BUS(mif/int) frequency, TASK 어피니티, IRQ 어피니티 등의 파라메터를 수집하여 설정값들을 추출할 수 있다.
상기와 같은 방법으로 처리되는 스루풋에 따라 클럭 데이터 및 어피니티 온/오프 정보를 저장하는 테이블들을 생성할 수 있다. 그리고 상기와 같은 테이블은 처리되는 데이터 타입(예를들면 WIFI, MODEM, IPC 등)에 대응되는 수로 생성할 수 있다. 그리고 상기와 같이 생성되는 복수의 테이블은 데이터 저장부에 저장할 수 있다. 이때 상기 테이블을 구성하는 정보들은 Trigger될 스루풋값과 그 때 설정할 CPU freq./BUS freq./IRQ 어피니티설정/TASK 어피니티설정값 등이 될 수 있다. 예를 들면 상기 테이블은 하기 <표 5>와 같은 구조를 가질 수 있다.
throughput값 CPU freq. BUS freq BUS freq IRQ affinity TASK affinity
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
100Mbps 1.9GHz 533Mhz 333Mhz ON OFF
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
상기 드라이버711-71N은 상기 처리량 감시부720이 스루풋을 읽을 수 있도록 file node 등을 작성한다.network device는 리눅스커널(예를들면 /proc/net/dev)에서 상기 도 3과 같이 처리량을 계산할 수 있는 데이터의 크기를 기본적으로 제공할 수 있다. 또한 상기 드라이버711-71N은 타스크를 생성할 때 어피니티 CPU 및 default CPU를 설정할 수 있다. 상기 어피니티 CPU는 어피니티 정보가 온(enable)되었을 때 할당되는 CPU가 될 수 있으며, default CPU는 어피니티 가 오프(disable)되었을 때 할당되는 CPU가 될 수 있다.
상기 처리량 감시부720은 설정된 시간 간격으로 상기 드라이버711-71N에서 처리되는 데이터의 크기를 읽어들이며, 이를 이용하여 스루풋을 계산한 후 상기 처리량제어부730에 전달할 수 있다. 상기 처리량감시부720은 부팅시점에 start하여 일정 시간 간격으로 스루풋값을 읽으며, 상기 읽은 스루풋값을 처리량 제어부730에 전달한다. 예를 들면, linux커널에서는 /dev/network_throughput에 값을 쓸 수 있으며, 해당 노드에 등록하면 값이 쓰여질 때마다 처리량 제어부730은 이를 통지(notify) 받을 수 있다. 이때 상기 처리량 감시부720은 상기 4와 같은 구성을 가질 수 있으며, 스루풋을 계산 및 생성하는 방법도 동일할 수 있다.
그러면 처리량 제어부730은 대응되는 드라이버의데이터 저장부를 참조하여 상기 처리량감시부720에서 계산된 처리량값에 따라 적절한 CPU/BUS 주파수(클럭)를 설정하거나 TASK/IRQ 어피니티의 온/오프를 설정할 수 있다.CPU 클럭변경이나 BUS(MIF, INT) 클럭변경은 PM QoS API를 통해서 전달할 수 있고, 처리량 제어부730은 상기 스루풋 값과데이터 저장부의 설정값을 비교 분석하여 최소값 혹은 최대값을 설정할 수 있다.
그리고 TASK/IRQ 어피니티는 각 드라이버711-71N에서 신규로 제공되는 API를 통해서 생성시점에 등록할 수 있으며, 상기 처리량제어부730은 스케듈러(scheduler) 설정을 변경하는 방법을 통해서 어피니티를 동적으로 설정할 수 있다. 상기 스케듈러750은 task/irq 실행을 스케듈링하며, 스케듈링 시점에서 상기 처리량 제어부730에서 설정된 어피니티 프로세서 코어의 온/오프 정보에 따라 해당 프로세서를 스케듈링할 수 있다. 이때 어피니티 온이면 할당된 어피니티 프로세서를 활성화시키는 스케듈링을 수행하고, 어피니티 오프이면 할당된 디폴트 프로세서를 활성화시키는 스케듈링을 실행할 수 있다.
도 8은 이종 멀티 프로세서를 구비하는 전자장치에서 처리량에 따라 각각 해당하는 하드웨어 및/또는 소프트웨어의 설정값을 결정하여 처리할 수 있는 처리량 제어부의 구성을 도시하는 도면이다.
상기 하드웨어장치의 설정값을 변경하는 실시예로는CPU/BUS 주파수를 변경, BUS의 대역폭(bandwidth) 설정값 변경, HW장치 처리 우선 순위의 변경, 연결된 전자 장치의 부속 장치의 설정값을 변경하는 기능들을 포함할 수 있다. 이런 경우 상기 장치 구동부는 상기 도 5a에 도시된 바와 같이 클럭구동부541, 우선순위 구동부 543, BUS의 대역폭(bandwidth) 설정값 변경하는 버스대역 구동부545, 설정값 변경부547 들 중에서 적어도 하나를 포함할 수 있다. SW측면에서 설정값을 변경하는 방법으로 전자장치에서 드라이버의 처리량(throughput)에 연동하여 어피니티(IRQ/TASK affinity)를 설정하거나 해당 타스크의 우선순위를 변경하는 공통적인 프레임 워크를 을 제공할 수 있다.
이하의 설명에서 상기 장치 구동부는 클럭 구동부인 경우를 예로 들어 설명하기로 하며, 소프트웨어 구동부는 어피니티 프로세서를 스케듈링하는 스케듈러인 경우를 예로 들어 설명하기로 한다. 이런 경우 상기 도 5a의 리소스 제어부는 클럭/어피니티 제어부가 될 수 있다. 상기 도 8을 참조하면, 처리량제어부730은 처리량수신부810, 데이터 저장부820 및 클럭/어피니티제어부830을 포함할 수 있다. 상기 데이터 저장부820은 각 드라이버(또는 데이터 타입)들에 대응되는 수로 구비되며, 각각 상기 처리량에 대응되는 클럭 및 어피니티 온/오프 정보를 저장할 수 있다. 그리고 처리량수신부819은 수신되는 처리량 메시지를 드라이버 식별정보 및 처리량 값으로 파싱할 수 있다. 그리고 상기 클럭/어피니티 제어부830은 상기 파싱된 처리량 메시지를 분석하여 드라이버 장치를 결정하며, 상기 결정된 드라이버 장치의 설정값 테이블에서 상기 처리량에 대응되는 클럭들을 결정할 수있다. 또한 상기 클럭/어피니티 제어부830은 상기 처리량을 분석하여 대응되는 드라이버에서 설정된 어피니티 프로세서의 온/오프를 결정할 수 있다.
상기와 같이 상기 데이터 저장부820은 프로세서/버스 클럭 데이터를 저장하는 영역 및 상기 클럭/어피니티 제어부830에서 결정되는 어피니티의 온/오프정보를 저장하는 영역을 포함할 수 있다. 그리고 상기 클럭/어피니티제어부830은 상기 처리량수신부810의 처리량 값에 따라 상기 데이터 저장부820의 해당 처리량 값에 처리량에 대응되는 프로세서 클럭 및 버스 클럭을 억세스하여 상기 클럭 구동부 740에 출력하고, 또한 상기 처리량 값을 분석하여 어피니티 프로세서를 활성화 또는 비활성화시키기는 상기 어피니티 정보를 온 또는 오프로 설정할 수 있다.
그러면 클럭 구동부740의 CPU클럭 구동부840은 상기 클럭/어피니티제어부830에서 설정된 CPU 클럭을 프로세서의 클럭으로 구동하고, 버스클럭 구동부850은 상기 클럭/어피니티제어부830에서 설정된 버스클럭을 대응되는 버스의 클럭으로 구동한다. 이때 상기 버스 클럭은 프로세서와 외부장치들 간의 버스 클럭 MIF 및 프로세서 내부의 소자들 간의 버스 클럭 INT를 포함할 수 있다. 또한 상기 스케듈러860은 상기 클럭/어피니티 제어부830에서 설정한 상기 어피니티 정보가 온이면 어피니티 프로세서 코어를 스케듈링하고, 오프이면 디폴트 프로세서 코어를 스케듈링할 수 있다. 여기서 상기 어피니티 프로세서는 상기 디폴트 프로세서에 대하여 상대적으로 데이터를 고속 처리할 수 있는 프로세서가 될 수 있다.
도 12는 다양한 실시예에 따른 전자 장치의 블록도를 도시한다. 상기 전자 장치는, 예를 들면, 도 1에 도시된 전자 장치 101의 전체 또는 일부를 구성할 수 있다. 도12을 참조하면, 상기 전자 장치는 하나 이상의 어플리케이션 프로세서(AP: application processor) 1210, 통신 모듈 1220, SIM(subscriber identification module) 카드 1224, 메모리 1230, 센서 모듈 1240, 입력 장치 1250, 디스플레이 1260, 인터페이스 1270, 오디오 모듈 1280, 카메라 모듈 1291, 전력관리 모듈 1295, 배터리 1296, 인디케이터 1297 및 모터 1298을 포함할 수 있다.
상기 AP 1210은 운영체제 또는 응용 프로그램을 구동하여 상기 AP 1210에 연결된 다수의 하드웨어 또는 소프트웨어 구성요소들을 제어할 수 있고, 멀티미디어 데이터를 포함한 각종 데이터 처리 및 연산을 수행할 수 있다. 상기 AP 1210은, 예를 들면, SoC(system on chip) 로 구현될 수 있다. 한 실시예에 따르면, 상기 AP 1210은 GPU(graphic processing unit, 미도시)를 더 포함할 수 있다. 여기서 상기 AP1210은 상기 이미지처리모듈170을 포함할 수 있다. 상기 AP1210은 도 2와 같은 구성의 모듈들을 구비하여 4:4:4 해상도의 컬러이미지에서 색차데이터들을 화소패턴에 따라 코딩할 수 있으며, 도 10과 같은 모듈들을 구비하여 코딩된 색차데이터들을 화소패턴에 따라 복원할 수 있다.
상기통신모듈1220(예: 상기 통신 인터페이스 160)은 상기 전자 장치 (예: 상기 전자 장치 101)와 네트워크를 통해 연결된 다른 전자 장치들(예: 전자 장치 104 또는 서버 106) 간의 통신에서 데이터 송수신을 수행할 수 있다. 한 실시예에 따르면, 상기 통신 모듈 1220은 셀룰러 모듈 1221, Wifi 모듈 1223, BT 모듈 1225, GPS 모듈 1227, NFC 모듈 1228 및 RF(radio frequency) 모듈 1229를 포함할 수 있다.
상기 셀룰러 모듈 1221은 통신망(예: LTE, LTE-A, CDMA, WCDMA, UMTS, WiBro 또는 GSM 등)을 통해서 음성 통화, 영상 통화, 문자 서비스 또는 인터넷 서비스 등을 제공할 수 있다. 또한, 상기 셀룰러 모듈 1221은, 예를 들면, 가입자 식별 모듈(예: SIM 카드 1224)을 이용하여 통신 네트워크 내에서 전자 장치의 구별 및 인증을 수행할 수 있다. 한 실시예에 따르면, 상기 셀룰러 모듈 1221은 상기 AP 1210이 제공할 수 있는 기능 중 적어도 일부 기능을 수행할 수 있다. 예를 들면, 상기 셀룰러 모듈 1221은 멀티 미디어 제어 기능의 적어도 일부를 수행할 수 있다.
한 실시예에 따르면, 상기 셀룰러 모듈 1221은 커뮤니케이션 프로세서(CP: communication processor)를 포함할 수 있다. 또한, 상기 셀룰러 모듈 1221은, 예를 들면, SoC로 구현될 수 있다. 도 12에서는 상기 셀룰러 모듈 1221(예: 커뮤니케이션 프로세서), 상기 메모리 1230 또는 상기 전력관리 모듈 1295 등의 구성요소들이 상기 AP 1210과 별개의 구성요소로 도시되어 있으나, 한 실시예에 따르면, 상기 AP 과1210이 전술한 구성요소들의 적어도 일부(예: 셀룰러 모듈 1221)를 포함하도록 구현될 수 있다.
한 실시예에 따르면, 상기 AP 1210 또는 상기 셀룰러 모듈 1221(예: 커뮤니케이션 프로세서)은 각각에 연결된 비휘발성 메모리 또는 다른 구성요소 중 적어도 하나로부터 수신한 명령 또는 데이터를 휘발성 메모리에 로드(load)하여 처리할 수 있다. 또한, 상기 AP 1210 또는 상기 셀룰러 모듈 1221은 다른 구성요소 중 적어도 하나로부터 수신하거나 다른 구성요소 중 적어도 하나에 의해 생성된 데이터를 비휘발성 메모리에 저장(store)할 수 있다.
상기 Wifi 모듈 1223, 상기 BT 모듈 1225, 상기 GPS 모듈 1227 또는 상기 NFC 모듈 1228 각각은, 예를 들면, 해당하는 모듈을 통해서 송수신되는 데이터를 처리하기 위한 프로세서를 포함할 수 있다. 도 12에서는 셀룰러 모듈 1221, Wifi 모듈 1223, BT 모듈 1225, GPS 모듈 1227 또는 NFC 모듈 1228이 각각 별개의 블록으로 도시되었으나, 한 실시예에 따르면, 셀룰러 모듈 1221, Wifi 모듈 1223, BT 모듈 1225, GPS 모듈 1227 또는 NFC 모듈 1228 중 적어도 일부(예: 두 개 이상)는 하나의 integrated chip(IC) 또는 IC 패키지 내에 포함될 수 있다. 예를 들면, 셀룰러 모듈 1221, Wifi 모듈 1223, BT 모듈 1225, GPS 모듈 1227 또는 NFC 모듈 1228 각각에 대응하는 프로세서들 중 적어도 일부(예: 셀룰러 모듈 1221에 대응하는 커뮤니케이션 프로세서 및 Wifi 모듈 1223에 대응하는 Wifi 프로세서)는 하나의 SoC로 구현될 수 있다.
상기 RF 모듈 1229는 데이터의 송수신, 예를 들면, RF 신호의 송수신을 할 수 있다. 상기 RF 모듈 1229는, 도시되지는 않았으나, 예를 들면, 트랜시버(transceiver), PAM(power amp module), 주파수 필터(frequency filter) 또는 LNA(low noise amplifier) 등을 포함할 수 있다. 또한, 상기 RF 모듈 1229는 무선 통신에서 자유 공간상의 전자파를 송수신하기 위한 부품, 예를 들면, 도체 또는 도선 등을 더 포함할 수 있다. 도 12에서는 셀룰러 모듈 1221, Wifi 모듈 1223, BT 모듈 1225, GPS 모듈 1227 및 NFC 모듈 1228이 하나의 RF 모듈 1229를 서로 공유하는 것으로 도시되어 있으나, 한 실시예에 따르면, 셀룰러 모듈 1221, Wifi 모듈 1223, BT 모듈 1225, GPS 모듈 1212 또는 NFC 모듈 1228 중 적어도 하나는 별개의 RF 모듈을 통하여 RF 신호의 송수신을 수행할 수 있다.
상기 SIM 카드 1224는 가입자 식별 모듈을 포함하는 카드일 수 있으며, 전자 장치의 특정 위치에 형성된 슬롯에 삽입될 수 있다. 상기 SIM 카드 1224는 고유한 식별 정보(예: ICCID(integrated circuit card identifier)) 또는 가입자 정보(예: IMSI(international mobile subscriber identity))를 포함할 수 있다.
상기 메모리 1230(예: 상기 메모리 130)는 내장 메모리 1232 또는 외장 메모리 1234를 포함할 수 있다. 상기 내장 메모리 1232는, 예를 들면, 휘발성 메모리(예를 들면, DRAM(dynamic RAM), SRAM(static RAM), SDRAM(synchronous dynamic RAM) 등) 또는 비휘발성 메모리(non-volatile Memory, 예를 들면, OTPROM(one time programmable ROM), PROM(programmable ROM), EPROM(erasable and programmable ROM), EEPROM(electrically erasable and programmable ROM), mask ROM, flash ROM, NAND flash memory, NOR flash memory 등) 중 적어도 하나를 포함할 수 있다.
한 실시예에 따르면, 상기 내장 메모리 1232는 Solid State Drive (SSD)일 수 있다. 상기 외장 메모리 1234는 flash drive, 예를 들면, CF(compact flash), SD(secure digital), Micro-SD(micro secure digital), Mini-SD(mini secure digital), xD(extreme digital) 또는 Memory Stick 등을 더 포함할 수 있다. 상기 외장 메모리 1234는 다양한 인터페이스를 통하여 상기 전자 장치와 기능적으로 연결될 수 있다. 한 실시예에 따르면, 상기 전자 장치 101는 하드 드라이브와 같은 저장 장치(또는 저장 매체)를 더 포함할 수 있다.
상기 센서 모듈 1240은 물리량을 계측하거나 전자 장치 101의 작동 상태를 감지하여, 계측 또는 감지된 정보를 전기 신호로 변환할 수 있다. 상기 센서 모듈 1240은, 예를 들면, 제스처 센서 1240A, 자이로 센서 1240B, 기압 센서 1240C, 마그네틱 센서 1240D, 가속도 센서 1240E, 그립 센서 1240F, 근접 센서 1240G, color 센서 1240H(예: RGB(red, green, blue) 센서), 생체 센서 1240I, 온/습도 센서 1240J, 조도 센서 1240K 또는 UV(ultra violet) 센서 1240M 중의 적어도 하나를 포함할 수 있다.
여기서 상기 생체센서1240I는 사용자의 손가락을 스캔할 수 있는 센서가 될 수 있다. 상기 센서는광학식 또는 반도체 방식의 구성을 가질 수 있다. 또한 상기 센서220은 터치센서 타입으로 구성할 수도 있다.
추가적으로 또는 대체적으로, 상기 센서 모듈 1240은, 예를 들면, 후각 센서(E-nose sensor, 미도시), EMG 센서(electromyography sensor, 미도시), EEG 센서(electroencephalogram sensor, 미도시), ECG 센서(electrocardiogram sensor, 미도시), IR(infrared) 센서(미도시), 홍채 센서(미도시) 또는 센서(미도시) 등을 포함할 수 있다. 상기 센서 모듈 1240은 그 안에 속한 적어도 하나 이상의 센서들을 제어하기 위한 제어 회로를 더 포함할 수 있다.
상기 입력 장치 1250은 터치 패널(touch panel) 1252, (디지털) 펜 센서(pen sensor) 1254, 키(key) 1256 또는 초음파(ultrasonic) 입력 장치 1258을 포함할 수 있다. 상기 터치 패널 1252은, 예를 들면, 정전식, 감압식, 적외선 방식 또는 초음파 방식 중 적어도 하나의 방식으로 터치 입력을 인식할 수 있다. 또한, 상기 터치 패널 1252는 제어 회로를 더 포함할 수도 있다. 정전식의 경우, 물리적 접촉 또는 근접 인식이 가능하다. 상기 터치 패널 1252는 택타일 레이어(tactile layer)를 더 포함할 수도 있다. 이 경우, 상기 터치 패널 1252는 사용자에게 촉각 반응을 제공할 수 있다.
상기 (디지털) 펜 센서 1254는, 예를 들면, 사용자의 터치 입력을 받는 것과 동일 또는 유사한 방법 또는 별도의 인식용 쉬트(sheet)를 이용하여 구현될 수 있다. 상기 키 1256은, 예를 들면, 물리적인 버튼, 광학식 키 또는 키패드를 포함할 수 있다. 상기 초음파(ultrasonic) 입력 장치 1258은 초음파 신호를 발생하는 입력 도구를 통해, 전자 장치 101에서 마이크(예: 마이크 1288)로 음파를 감지하여 데이터를 확인할 수 있는 장치로서, 무선 인식이 가능하다. 한 실시예에 따르면, 상기 전자 장치 801는 상기 통신 모듈 1220를 이용하여 이와 연결된 외부 장치(예: 컴퓨터 또는 서버)로부터 사용자 입력을 수신할 수도 있다.
상기 디스플레이 1260(예: 상기 디스플레이 150)은 패널 1262, 홀로그램 장치 1264 또는 프로젝터 1266을 포함할 수 있다. 상기 패널 1262은, 예를 들면, LCD(liquid-crystal display) 또는 AM-OLED(active-matrix organic light-emitting diode) 등일 수 있다. 상기 패널 1262는, 예를 들면, 유연하게(flexible), 투명하게(transparent) 또는 착용할 수 있게(wearable) 구현될 수 있다. 상기 패널 1262는 상기 터치 패널 1252와 하나의 모듈로 구성될 수도 있다. 상기 홀로그램 장치 1264는 빛의 간섭을 이용하여 입체 영상을 허공에 보여줄 수 있다. 상기 프로젝터 1266은 스크린에 빛을 투사하여 영상을 표시할 수 있다. 상기 스크린은, 예를 들면, 상기 전자 장치 101의 내부 또는 외부에 위치할 수 있다. 한 실시예에 따르면, 상기 디스플레이 1260은 상기 패널 1262, 상기 홀로그램 장치 1264, 또는 프로젝터 1266을 제어하기 위한 제어 회로를 더 포함할 수 있다.
상기 인터페이스 1270은, 예를 들면, HDMI(high-definition multimedia interface) 1272, USB(universal serial bus) 1274, 광 인터페이스(optical interface) 1276 또는 D-sub(D-subminiature) 1278을 포함할 수 있다. 상기 인터페이스 1270은, 예를 들면, 도 1에 도시된 통신 인터페이스 160에 포함될 수 있다. 추가적으로 또는 대체적으로, 상기 인터페이스 1270은, 예를 들면, MHL(mobile high-definition link) 인터페이스, SD(secure Digital) 카드/MMC(multi-media card) 인터페이스 또는 IrDA(infrared data association) 규격 인터페이스를 포함할 수 있다.
상기 오디오 모듈 1280은 소리(sound)와 전기신호를 쌍방향으로 변환시킬 수 있다. 상기 오디오 모듈 1280의 적어도 일부 구성요소는, 예를 들면, 도 1 에 도시된 입출력 인터페이스 140에 포함될 수 있다. 상기 오디오 모듈 1280은, 예를 들면, 스피커 1282, 리시버 1284, 이어폰 1286 또는 마이크 1288 등을 통해 입력 또는 출력되는 소리 정보를 처리할 수 있다.
상기 카메라 모듈 1291은 정지 영상 및 동영상을 촬영할 수 있는 장치로서, 한 실시예에 따르면, 하나 이상의 이미지 센서(예: 전면 센서 또는 후면 센서), 렌즈(미도시), ISP(image signal processor, 미도시) 또는 플래쉬 (flash, 미도시)(예: LED 또는 xenon lamp)를 포함할 수 있다.
상기 전력 관리 모듈 1295는 상기 전자 장치101의 전력을 관리할 수 있다. 도시하지는 않았으나, 상기 전력 관리 모듈 1295는, 예를 들면, PMIC(power management integrated circuit), 충전 IC(charger integrated circuit) 또는 배터리 또는 연료 게이지(battery or fuel gauge)를 포함할 수 있다.
상기 PMIC는, 예를 들면, 집적회로 또는 SoC 반도체 내에 탑재될 수 있다. 충전 방식은 유선과 무선으로 구분될 수 있다. 상기 충전 IC는 배터리를 충전시킬 수 있으며, 충전기로부터의 과전압 또는 과전류 유입을 방지할 수 있다. 한 실시예에 따르면, 상기 충전 IC는 유선 충전 방식 또는 무선 충전 방식 중 적어도 하나를 위한 충전 IC를 포함할 수 있다. 무선 충전 방식으로는, 예를 들면, 자기공명 방식, 자기유도 방식 또는 전자기파 방식 등이 있으며, 무선 충전을 위한 부가적인 회로, 예를 들면, 코일 루프, 공진 회로 또는 정류기 등의 회로가 추가될 수 있다.
상기 배터리 게이지는, 예를 들면, 상기 배터리 1296의 잔량, 충전 중 전압, 전류 또는 온도를 측정할 수 있다. 상기 배터리 1296은 전기를 저장 또는 생성할 수 있고, 그 저장 또는 생성된 전기를 이용하여 상기 전자 장치 101에 전원을 공급할 수 있다. 상기 배터리 1296은, 예를 들면, 충전식 전지(rechargeable battery) 또는 태양 전지(solar battery)를 포함할 수 있다.
상기 인디케이터 1297은 상기 전자 장치 101 혹은 그 일부(예: 상기 AP 1210)의 특정 상태, 예를 들면, 부팅 상태, 메시지 상태 또는 충전 상태 등을 표시할 수 있다. 상기 모터 1298은 전기적 신호를 기계적 진동으로 변환할 수 있다. 도시되지는 않았으나, 상기 전자 장치101는 모바일 TV 지원을 위한 처리 장치(예: GPU)를 포함할 수 있다. 상기 모바일 TV지원을 위한 처리 장치는, 예를 들면, DMB(digital multimedia broadcasting), DVB(digital video broadcasting) 또는 미디어플로우(media flow) 등의 규격에 따른 미디어 데이터를 처리할 수 있다. 본 발명의 다양한 실시예에 따른전자 장치의 전술한 구성요소들 각각은 하나 또는 그 이상의 부품(component)으로 구성될 수 있으며, 해당 구성 요소의 명칭은 전자장치의 종류에 따라서 달라질 수 있다. 본 발명의 다양한 실시예에 따른 전자 장치는 전술한 구성요소 중 적어도 하나를 포함하여 구성될 수 있으며, 일부 구성요소가 생략되거나 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 또한, 본 발명의 다양한 실시예에 따른 전자 장치의 구성 요소들 중 일부가 결합되어 하나의 개체(entity)로 구성됨으로써, 결합되기 이전의 해당 구성 요소들의 기능을 동일하게 수행할 수 있다.
도 9는 본 발명의 다양한 실시예에 따른 전자장치에서 처리량에 따라 클럭을 설정하는 제1방법을 도시하는 흐름도이다. 상기 도 9는 SMP(symmetric multi-processing) 환경에서 단일 동작 시나리오를 도시하는 예가 될 수 있다.
상기 도 9를 참조하면, 드라이버는 자신이 받은 데이터(예를들면 packet data) 및 보낸 데이터의 크기를 계속 업데이트하고 있다. 그러면 전자장치는 911단계에서 드라이버의 데이터를 수집하고, 913단계에서 수신된 데이터의 크기를 계산하여 스루풋 값을 계산한다. 이후 상기 전자장치는 계산된 스루풋 값을 대응되는 데이터 타입의 테이블의 설정된 스루풋 값들과 비교하여 클럭 데이터를 설정한다. 그리고 상기 전자장치는 917단계에서 상기 설정된 클럭 데이터를 CPU 및 버스 클럭으로 구동할 수 있다.
상기 전자장치의 데이터 타입이 WIFI이고, 스루풋의 설정값이 하기 <표 6>과 같다고 가정한다. 여기서 데이터 저장부의 설정값은 CPU 클럭, MIF 클럭, INT 클럭 등이 될 수 있다.
level Throughput threshhold CPU frequency MIF frequency INT frequency
1 100Mbps 1.0GHz 533Mhz 833Mhz
2 150Mbps 1.3GHz 833Mhz 833Mhz
WIFI driver 등의 드라이버는 자신이 받은 데이터 및 보낸 데이터의 크기를 계속 업데이트하고 있다. 그리고 처리량감시부는 스루풋을 일정시간 간격으로 드라이버에서 갱신되는 데이터를읽어 현재 스루풋(data 크기/시간)을 계산하고, 계산된 스루풋 값을 처리량 제어부에 통지(notify)한다. 예를들면, 상기 <표 6>에서 WIFI 스루풋이 100Mbps ~ 150Mbps에 도달하면, 처리량감시부는 처리량 제어부에 스루풋값과 해당 스루풋에 도달한 드라이버의 식별정보를 통지할 수 있다. 그러면 상기 처리량 감시부는 파일노드에 값이 기록된 경우에 통지(notify)를 받게되며, 처리량 제어부(예를들면 notify handler)에서는 파일노드 값을 확인하여 스루풋설정값의 레벨(WIFI Level 1)에 해당한다는 것을 판단할 수 있다. 그러면 상기 처리량 제어부는 레벨(Level 1)에 해당되는 CPU/MIF/INT 주파수를 클럭 구동부를 통해 설정할 수 있다.
전자장치는 적어도 하나의 드라이버에서 처리되는 데이터의 크기를 입력하며, 상기 드라이버에서 처리된 데이터 크기를 처리량으로 계산할 수 있다. 이후 상기 전자장치는 상기 계산된 처리량을 분석하여 대응되는 드라이버 장치의 클럭을 결정하는 처리량 제어하고, 상기 결정된 클럭으로 드라이버에 관련된 장치들의 클럭을 구동할 수 있다.
도 10은 본 발명의 다양한 실시예에 따른 전자장치에서 처리량에 따라 클럭을 설정하는 제2방법을 도시하는 흐름도이다. 상기 도 10은 SMP(symmetric multi-processing) 환경에서 다중 동작 시나리오를 도시하는 예가 될 수 있다.
상기 도 10을 참조하면, 드라이버들은 자신이 받은 packet 및 보낸 packet data의 크기를 file node X, Y 등의 위치에 업데이트할 수 있다. 그러면 전자장치는 1011단계에서 드라이버의 데이터를 수집하고, 1013단계에서 각 드라이버 별로 수신된 데이터의 크기를 계산하여 스루풋 값을 계산할 수 있다. 이후 상기 전자장치는 1015단계에서 계산된 스루풋 값을 대응되는 데이터 타입의 테이블의 설정된 스루풋 값들과 비교하여 클럭 데이터를 설정할 수 있으며, 917단계에서 상기 설정된 클럭 데이터를 CPU 및 버스 클럭으로 구동할 수 있다.
이후 상기 전자장치는 1019단계에서 현재 설정된 클럭 주파수의 드라이버가 마지막 드라이버인가 검사하며, 아니면 1021단계에서 다음 드라이버를 선택한 후, 상기 1015단계 및 1017단계를 반복 수행할 수 있다. 상기와 같은 동작들을 반복하면서 전체 드라이버들의 처리량에 따른 클럭 주파수들을 갱신 설정할 수 있다.
상기 전자장치의 데이터 타입이 WIFI및 MODEM이고, 스루풋의 설정값이 하기 <표 7 > 및 <표 8 >과 같다고 가정한다.
level
(WIFI)
Throughput threshhold CPU frequency MIF frequency INT frequency
1 100Mbps 1.0GHz 533Mhz 833Mhz
2 150Mbps 1.3GHz 833Mhz 833Mhz
level
(MODEM)
Throughput threshhold CPU frequency MIF frequency INT frequency
1 130Mbps 1.4GHz 333Mhz 533Mhz
2 250Mbps 1.8GHz 833Mhz 833Mhz
WIFI 드라이버 및 MODEM 드라이버 등의 드라이버들은 자신이 받은 데이터(packet/보낸 packet data)의 크기를 파일노드(예를들면file node X, Y)에 업데이트할 수 있다. 그러면 처리량 감시부는 일정시간 간격으로 파일노드의 위치를 읽어 현재 스루풋 값(data 크기/시간)을 계산하고, 계산된 스루풋 값과 드라이버 식별정보를 파일노드(또는 메모리)에 기록할 수 있다.
예를들어 WIFI 스루풋 값이 100Mbps ~ 150Mbps에 도달하고, Modem 스루풋값이 200Mbps에 도달한 경우, 상기 처리량 감시부는 상기 처리량 제어부에 스루풋값과 해당 스루풋에 도달한 드라이버의 정보를 파일 노드에에 2회 기록(write)할 수 있다. 그리고 상기 처리량 제어부는 파일노드 에 스루풋 값이 기록되면되면 통지받을 수 있다. 따라서 상기 처리량 제어부는 파일노드의 스루풋값을 확인한 후, 상기 <표 7>과 같은 스루풋설정값의 중에서 최소값(minimum)에 해당되는 값 들을 판단하여 클럭 주파수를 설정할 수 있다. 상기 처리량 제어부는 Modem Level 1에 해당되는 CPU 주파수(1.4GHz)와 WIFI Level 1에 해당하는 MIF 주파수(533Mhz)/INT에 해당하는 주파수(833Mhz)를 클럭 구동부를 통해서 설정할 수 있다.
도 11은본 발명의 다양한 실시예에 따른 전자장치에서 처리량에 따라 클럭을 설정하는 제3방법을 도시하는 흐름도이다. 상기 도 9는 HMP(heterogenious multi-processing ) 환경에서 동작 시나리오를 도시하는 예가 될 수 있다.
상기 도 11을 참조하면, 드라이버는 데이터(자신이 받은 packet 및 보낸 packet data)의 크기를 파일노드(또는 메모리)에 계속 업데이트하고 있다. 그러면 전자장치는 1111단계에서 드라이버의 데이터를 수집하고, 1113단계에서 수신된 데이터의 크기를 계산하여 스루풋 값을 계산한다.
이후 상기 전자장치는 115단계에서 스루풋 값과 설정값을 비교한다. 이때 설정값 보다 낮으면 상기 전자장치는 115단계에서 이를 감지하고, 1117단계에서 어피니티 기능을 오프(disable)시킬 수 있다. 그러나 상기 설정값보다 높으면 상기 전자장치는 1119단계에서 이를 감지하고 1121단계에서 어피니티 기능을 온(enable)시킬 수 있다. 그리고 상기 스루풋 값이 설정 값 범위 내이면 어피니티 기능을 그대로 유지시킨다.
상기 어피티니 기능을 통해 타스크를특정 프로세서 코어에 할당한 후, 상기 전자장치는 11123단계에서 계산된 스루풋 값을 대응되는 데이터 타입의 테이블의 설정된 스루풋 값들과 비교하여 클럭 데이터를 설정한다. 그리고 상기 전자장치는1125단계에서 상기 설정된 클럭 데이터를 CPU 및 버스 클럭으로 구동할 수 있다.
상기 전자장치의 데이터 타입이 WIFI이고, 스루풋의 설정값이 하기 <표 9>과 같다고 가정한다.
level Throughput threshhold CPU
frequency
MIF
frequency
INT
frequency
Task
affinity
IRQ
affinity
1 100Mbps 1.0GHz 533Mhz 833Mhz OFF OFF
2 150Mbps 1.3GHz 833Mhz 833Mhz ON ON
WIFI의 경우 TASK t1과 WIFI interrupt를 처리하는 TASK t2로 이루어져있다고 가정한다. 또한 WIFI 드라이버에서는 150Mbps를 초과하는 경우에 t1에 높은 성능을 가진 CPU X1이 설정되고, Interrupt도 높은 성능을 가진 CPU X2에서 처리되도록 설정되었다고 가정한다. 이런 경우 TASK t1정보에 TASK 어피니티를 X1으로 설정하여 두고, TASK t2정보에 IRQ 어피니티를 X2로 설정해서 생성할 수 있다.
WIFI 드라이버는데이터(자신이 받은 packet/보낸 packet data)의 크기를 계속 업데이트할 수 있다. 그리고 상기 처리량 계산부는 일정시간 간격으로 읽어 현재 스루풋(data 크기/시간)을 계산할 수 있다. 이때 WIFI 스루풋값이 200Mbps에 도달하면, 상기 처리량 계산부는 상기 처리량 제어부에 스루풋값과 해당 스루풋에 도달한 driver의 식별 정보를 기록(파일노드 또는 메모리)할 수 있다.
그리고 상기 처리량 계산부는 스루풋 값과 드라이버 식별정보가 기록되면 이를 통지받을 수 있다. 그러면 상기 처리량 계산부는 스루풋 값과 식별정보를 확인하고, 상기 <표 8>과 같은 스루풋설정값의 중에서 최소값(minimum)에 해당되는 값 들을 판단할 수 있다. 이때 상기 스루풋 값이 200Mbps로 확인되면, 상기 처리량계산부는 Level 2에 해당되는 CPU/MIF/INT 주파수를 클럭 구동부를 통해서 설정할 수 있다. 이때 상기 스루풋 값이 어피니티 인에이블을 시키기 위한 설정값보다 높으므로 상기 처리량 제어부는 스케듈러(HMP scheduler)에 타스크 어피니티 인에이블/IRQ 어피니티 인에이블(TASK affinity enable/IRQ affinity enable)을 요청한다.
그러면 상기 스케듈러(HMP scheduler)는 TASK t1이 schedule되는 시점에 TASK 어피니티가 온(enable)되어 있다면 t1을 CPU X1에 할당하고, TASK t2이 스케듈되는 시점에 IRQ 어피니티가 인에이블되어 있다면 t2을 CPU X2에 할당할 수 있다.
그리고 스루풋값이 낮아지는 경우(예를 들면 스루풋 값이 200Mbps(level2)에서 100Mbps(level 1)로 낮아지면), 상기 처리량 제어부는 위 동작에서 해당 LEVEL에 맞도록 주파수를 낮추거나, 어피니티를 디스에이블시키는 동작을 수행할 수 있다.
본 발명의 다양한 실시예에 사용된 용어 '모듈'은, 예를 들어, 하드웨어, 소프트웨어 또는 펌웨어(firmware) 중 하나 또는 둘 이상의 조합을 포함하는 단위(unit)를 의미할 수 있다. '모듈'은 예를 들어, 유닛(unit), 로직(logic), 논리 블록(logical block), 부품(component) 또는 회로(circuit) 등의 용어와 바꾸어 사용(interchangeably use)될 수 있다. '모듈'은, 일체로 구성된 부품의 최소 단위 또는 그 일부가 될 수 있다. '모듈'은 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수도 있다. '모듈'은 기계적으로 또는 전자적으로 구현될 수 있다. 예를 들면, 본 발명의 다양한 실시예에 따른 '모듈'은, 알려졌거나 앞으로 개발될, 어떤 동작들을 수행하는 ASIC(application-specific integrated circuit) 칩, FPGAs(field-programmable gate arrays) 또는 프로그램 가능 논리 장치(programmable-logic device) 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따르면, 본 발명의 다양한 실시예에 따른 장치(예: 모듈들 또는 그 기능들) 또는 방법(예: 동작들)의 적어도 일부는, 예컨대, 프로그래밍 모듈의 형태로 컴퓨터로 읽을 수 있는 저장매체(computer-readable storage media)에 저장된 명령어로 구현될 수 있다. 상기 명령어는, 하나 이상의 프로세서 (예: 상기 프로세서 210)에 의해 실행될 경우, 상기 하나 이상의 프로세서가 상기 명령어에 해당하는 기능을 수행할 수 있다. 컴퓨터로 읽을 수 있는 저장매체는, 예를 들면, 상기 메모리 220가 될 수 있다. 상기 프로그래밍 모듈의 적어도 일부는, 예를 들면, 상기 프로세서210에 의해 구현(implement)(예: 실행)될 수 있다. 상기 프로그래밍 모듈 의 적어도 일부는 하나 이상의 기능을 수행하기 위한, 예를 들면, 모듈, 프로그램, 루틴, 명령어 세트 (sets of instructions) 또는 프로세스 등을 포함할 수 있다.
상기 컴퓨터로 판독 가능한 기록 매체에는 하드디스크, 플로피디스크 및 자기 테이프와 같은 마그네틱 매체(Magnetic Media)와, CD-ROM(Compact Disc Read Only Memory), DVD(Digital Versatile Disc)와 같은 광기록 매체(Optical Media)와, 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-Optical Media)와, 그리고 ROM(Read Only Memory), RAM(Random Access Memory), 플래시 메모리 등과 같은 프로그램 명령(예: 프로그래밍 모듈)을 저장하고 수행하도록 특별히 구성된 하드웨어 장치(예: 저장 장치)가 포함될 수 있다. 또한, 프로그램 명령에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 본 발명의 다양한 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지다.
본 발명의 다양한 실시예에 따른 모듈 또는 프로그래밍 모듈은 전술한 구성요소들 중 적어도 하나 이상을 포함하거나, 일부가 생략되거나, 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 본 발명의 다양한 실시예에 따른 모듈, 프로그래밍 모듈 또는 다른 구성요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱(heuristic)한 방법으로 실행될 수 있다. 또한, 일부 동작은 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
그리고 본 명세서와 도면에 개시된 본 발명의 실시예들은 본 발명의 실시예에 따른 의 기술 내용을 쉽게 설명하고 본 발명의 실시예의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 실시예의 범위를 한정하고자 하는 것은 아니다. 따라서 본 발명의 다양한 실시예의 범위는 여기에 발명된 실시예들 이외에도 본 발명의 다양한 실시예의 기술적 사상을 바탕으로 도출되는 모든 변경 또는 변형된 형태가 본 발명의 다양한 실시예의 범위에 포함되는 것으로 해석되어야 한다.

Claims (28)

  1. 전자장치의 처리량 제어장치에 있어서,
    데이터를 처리하는 적어도 하나 이상의 드라이버와,
    상기 드라이버를 감시하여 처리되는 데이터를 처리량으로 계산하는 처리량 감시부와,
    상기 계산된 처리량을 분석하여 대응되는 드라이버의 설정값을 결정하는 처리량 제어부와,
    상기 설정값으로 기능을 실행하는 실행모듈을 포함하며
    상기 처리량 감시부는
    설정 시간 간격으로 기 드라이버에서 처리되는 데이터를 수집하는 처리량 수집부와,
    상기 수집된 데이터의 크기를 계산하여 처리량을 설정하는 처리량 계산부와,
    상기 처리량 및 드라이버 식별자를 포함하는 처리량 메시지를 생성하여 출력하는 처리량 출력부를 포함하며
    상기 처리량 제어부는
    각 드라이버들에 대응되는 수로 구비되며, 각각 상기 처리량에 대응되는 클럭설정값들을 저장하는 데이터 저장부와,
    상기 처리량 메시지를 분석하여 드라이버를 결정하며, 상기 드라이버의 데이터 저장부에서 상기 처리량에 대응되는 설정값을 클럭으로 설정하는 클럭제어부를 포함하는 장치.



  2. 삭제
  3. 1항에 있어서, 상기 처리량 계산부는
    입력 및 출력 데이터의 크기를 합산하는 가산기와,
    상기 가산기 출력에서 이전 합산값을 감산하는 차이값 계산기와,
    상기 차이값을 시간당 전송할 데이터의 처리량으로 생성하는 처리량 생성기를 포함하는 장치.
  4. 제1항에 있어서, 상기 실행모듈은
    상기 설정값을 클럭으로 제공하는 클럭 구동부를 포함하는 장치.
  5. 제1항에 있어서, 상기 실행모듈은
    상기 설정값을 데이터 처리 우선순위를 제공하는 버스 동작 제어부를 포함하는 장치.


  6. 삭제
  7. 제1항에 있어서,
    상기 설정값은 프로세서 클럭 및 버스 클럭을 포함하며,
    상기 클럭제어부는 상기 데이터 저장부에서 처리량에 대응되는 프로세서 클럭 및 버스 클럭을 억세스하여 상기 설정값을 클럭으로 제공하는 클럭 구동부에 제공하는 장치.

  8. 제7항에 있어서,
    상기 버스 클럭은 프로세서와 외부장치들 간의 버스 클럭 및 프로세서 내부의 소자들 간의 버스 클럭을 포함하는 장치.

  9. 전자장치의 처리량 제어장치에 있어서,
    데이터를 처리하는 적어도 하나 이상의 드라이버와,
    상기 드라이버를 감시하여 처리되는 데이터를 처리량으로 계산하는 처리량 감시부와,
    상기 계산된 처리량을 분석하여 대응되는 드라이버의 설정값을 결정하는 처리량 제어부와,
    상기 설정값으로 기능을 실행하는 실행모듈을 포함하며
    상기 실행모듈은
    상기 처리량 제어부에서 결정된 인터럽트 어피니티 온/오프 여부에 따라 대응되는 인터럽트를 할당하는 모듈이며,
    상기 드라이버는 어피니티 코어를 설정하며,
    상기 처리량 제어부는 상기 계산된 처리량에 대응되는 인터럽트 어피니티 온/오프 여부를 결정하는 것을 포함하는 장치.

  10. 전자장치의 처리량 제어장치에 있어서,
    데이터를 처리하는 적어도 하나 이상의 드라이버와,
    상기 드라이버를 감시하여 처리되는 데이터를 처리량으로 계산하는 처리량 감시부와,
    상기 계산된 처리량을 분석하여 대응되는 드라이버의 설정값을 결정하는 처리량 제어부와,
    상기 설정값으로 기능을 실행하는 실행모듈을 포함하며
    상기 실행모듈은
    상기 처리량 제어부에서 결정된 인터럽트 분산 설정 여부에 따라 대응되는 인터럽트를 여러 코어에 분산하는 모듈이며,
    상기 드라이버는 인터럽트를 분산할 코어를 설정하며,
    상기 처리량 제어부는 상기 계산된 처리량에 대응되는 인터럽트 분산 설정 여부를 결정하는 것을 포함하는 장치.

  11. 전자장치의 처리량 제어장치에 있어서,
    데이터를 처리하는 적어도 하나 이상의 드라이버와,
    상기 드라이버를 감시하여 처리되는 데이터를 처리량으로 계산하는 처리량 감시부와,
    상기 계산된 처리량을 분석하여 대응되는 드라이버의 설정값을 결정하는 처리량 제어부와,
    상기 설정값으로 기능을 실행하는 실행모듈을 포함하고
    상기 처리량 감시부는
    설정 시간 간격으로 상기 드라이버에서 처리되는 데이터를 수집하는 처리량 수집부와,
    상기 수집된 데이터의 크기를 계산하여 처리량을 설정하는 처리량 계산부와,
    상기 처리량 및 드라이버 식별자를 포함하는 처리량 메시지를 생성하여 출력하는 처리량 출력부를 포함하며,상기 실행모듈은
    스케듈링 시점에서 상기 처리량 제어부에서 결정된 프로세서 어피니티 온/오프 여부에 따라 대응되는 프로세서를 할당하는 스케듈러이며,
    상기 드라이버는 어피니티 코어를 설정하며,
    상기 처리량 제어부는 상기 계산된 처리량에 대응되는 프로세서 온/오프 여부를 결정하는 것을 포함하는 장치.

  12. 제11항에 있어서, 상기 처리량 제어부는
    각 드라이버들에 대응되는 수로 구비되며, 상기 처리량에 대응되는 설정값을 저장하며, 상기 설정값은 어피니티 온/오프 정보인 데이터 저장부와,
    상기 처리량 메시지를 분석하여 드라이버를 결정하며, 상기 처리량에 따라 상기 결정된 드라이버의 데이터 저장부에 어피니티 프로세서의 온/오프를 결정하는 어피니티 제어부를 포함하는 장치.

  13. 제12항에 있어서,
    상기 스케듈러는 상기 어피니티 온이면 어피니티 프로세서를 스케듈링하고, 어피니티 오프이면 디폴트 프로세서를 스케듈링하는 장치.
  14. 전자장치의 처리량 제어장치에 있어서,
    데이터를 처리하는 적어도 하나 이상의 드라이버와,
    상기 드라이버를 감시하여 처리되는 데이터를 처리량으로 계산하는 처리량 감시부와,
    상기 계산된 처리량을 분석하여 대응되는 드라이버의 설정값을 결정하는 처리량 제어부와,
    상기 설정값으로 기능을 실행하는 실행모듈을 포함하고,
    상기 처리량 감시부는
    설정 시간 간격으로 상기 드라이버에서 처리되는 데이터를 수집하는 처리량 수집부와,
    상기 수집된 데이터의 크기를 계산하여 처리량을 설정하는 처리량 계산부와,
    상기 처리량 및 드라이버 식별자를 포함하는 처리량 메시지를 생성하여 출력하는 처리량 출력부를 포함하며,
    상기 실행모듈은
    스케듈링 시점에서 상기 처리량 제어부에서 결정된 프로세서 어피니티 온/오프 여부에 따라 대응되는 프로세서를 할당하는 스케듈러를 더 포함하며,
    상기 드라이버는 어피니티 코어를 설정하며,
    상기 처리량 제어부는 상기 계산된 처리량에 대응되는 프로세서 온/오프 여부를 결정하는 것을 포함하는 장치.

  15. 제14항에 있어서, 상기 처리량 제어부는
    각 드라이버들에 대응되는 수로 구비되며, 상기 처리량에 대응되는 설정값을 저장하며, 상기 설정값은 클럭 및 어피니티 온/오프 정보인 데이터 저장부와,
    상기 처리량 메시지를 분석하여 드라이버를 결정하며, 상기 결정된 드라이버의 데이터저장부에서 상기 처리량에 대응되는 클럭 및어피니티 프로세서의 온/오프를 결정하는 클럭/어피니티 제어부를 포함하는 장치.
  16. 제15항에 있어서,
    상기 설정값은 프로세서/버스 클럭 및 어피니티 온/오프를 포함하며,
    상기 클럭/어피니티 제어부는 상기 데이터 저장부에서 해당하는 처리량에 대응되는 프로세서 클럭 및 버스 클럭을 억세스하여 상기 설정값을 클럭으로 제공하는 클럭 구동부에 제공하고, 상기 어피니티 온 또는 오프를 설정하는 장치.

  17. 제16항에 있어서,
    상기 스케듈러는 상기 어피니티 온이면 어피니티 프로세서를 스케듈링하고, 어피니티 오프이면 디폴트 프로세서를 스케듈링하는 장치.
  18. 전자장치의 처리량 제어방법에 있어서,
    드라이버에서 처리되는 데이터를 갱신하는 동작과,
    상기 갱신된 데이터의 계산하여 처리량을 결정하는 동작과,
    상기 드라이버의 데이터 저장부에 저장된 설정값들 중에서 상기 처리량에 대응되는 설정값을 결정하는 동작과,
    상기 설정값으로 실행모듈의 기능을 실행하는 동작을 포함하고
    상기 처리량을 결정하는 동작은
    설정 시간 간격으로 상기 드라이버에서 갱신되는 데이터를 수집하는 동작과,
    상기 수집된 데이터의 크기를 계산하여 처리량을 계산하는 동작과,
    상기 처리량 및 드라이버 식별자를 포함하는 처리량 메시지를 생성하는 동작을 포함하며
    상기 실행모듈은 클럭 구동부이며,
    상기 설정값을 결정하는 동작은
    상기 처리량 메시지를 분석하여 드라이버를 결정하는 동작과,
    상기 드라이버의 데이터 저장부에서 상기 처리량에 대응되는 설정값을 상기 클럭 구동부의 클럭으로 설정하는 동작을 포함하며,
    상기 데이터 저장부는 각 드라이버들에 대응되는 수로 구비되며, 각각 상기 처리량에 대응되는 클럭설정값들을 저장하는 장치.



  19. 삭제
  20. 18항에 있어서, 상기 처리량을 계산하는 동작은
    입력 및 출력 데이터의 크기를 가산하는 동작과,
    상기 가산값에 이전 가산값을 감산하여 차이값을 계산하는 동작과,
    상기 차이값을 시간당 전송할 데이터의 처리량으로 생성하는 동작을 포함하는 방법.


  21. 삭제
  22. 제18항에 있어서,
    상기 설정값은 프로세서 클럭 및 버스 클럭을 포함하며,
    상기 클럭 구동부의 클럭으로 설정하는 동작은 상기 데이터 저장부에서 처리량에 대응되는 프로세서 클럭 및 버스 클럭을 억세스하여 상기 클럭 구동부에 제공하는 방법.

  23. 제22항에 있어서,
    상기 버스 클럭은 프로세서와 외부장치들 간의 버스 클럭 및 프로세서 내부의 소자들 간의 버스 클럭을 포함하는 방법.
  24. 전자장치의 처리량 제어방법에 있어서,
    드라이버에서 처리되는 데이터를 갱신하는 동작과,
    상기 갱신된 데이터의 계산하여 처리량을 결정하는 동작과,
    상기 드라이버의 데이터 저장부에 저장된 설정값들 중에서 상기 처리량에 대응되는 설정 값을 결정하는 동작과,
    상기 설정값으로 실행모듈의 기능을 실행하는 동작을 포함하고
    상기 처리량에 대응되는 설정 값을 결정하는 동작은
    처리량 제어부를 통해 이루어지며
    상기 처리량을 결정하는 동작은
    설정 시간 간격으로 상기 드라이버에서 갱신되는 데이터를 수집하는 동작과,
    상기 수집된 데이터의 크기를 계산하여 처리량을 계산하는 동작과,
    상기 처리량 및 드라이버 식별자를 포함하는 처리량 메시지를 생성하는 동작을 포함하며
    상기 실행모듈은 스케듈링 시점에서 상기 처리량 제어부에서 결정된 프로세서 어피니티 온/오프 여부에 따라 대응되는 프로세서를 할당하는 스케듈러이고,
    상기 드라이버의 어피니티 코어를 설정하는 동작을 더 포함하며,
    상기 설정값을 결정하는 동작은 상기 처리량 메시지를 분석하여 드라이버를 결정하며, 상기 처리량에 따라 상기 결정된 드라이버의 데이터저장부에 어피니티 프로세서의 온/오프를 결정하며,
    상기 데이터 저장부는 각 드라이버들에 대응되는 수로 구비되고, 상기 처리량에 대응되는 설정값을 저장하며, 상기 설정값은 어피니티 온/오프 정보인 방법.

  25. 제24항에 있어서,
    상기 실행모듈의 기능을 실행하는 동작은 스케듈러에 의해 상기 어피니티 온이면 어피니티 프로세서를 스케듈링하고, 어피니티 오프이면 디폴트 프로세서를 스케듈링하는 방법.
  26. 전자장치의 처리량 제어방법에 있어서,
    드라이버에서 처리되는 데이터를 갱신하는 동작과,
    상기 갱신된 데이터의 계산하여 처리량을 결정하는 동작과,
    상기 드라이버의 데이터 저장부에 저장된 설정값들 중에서 상기 처리량에 대응되는 설정 값을 결정하는 동작과,
    상기 설정값으로 실행모듈의 기능을 실행하는 동작을 포함하고
    상기 처리량에 대응되는 설정 값을 결정하는 동작은
    처리량 제어부를 통해 이루어지며
    상기 처리량을 결정하는 동작은
    설정 시간 간격으로 상기 드라이버에서 갱신되는 데이터를 수집하는 동작과,
    상기 수집된 데이터의 크기를 계산하여 처리량을 계산하는 동작과,
    상기 처리량 및 드라이버 식별자를 포함하는 처리량 메시지를 생성하는 동작을 포함하며
    상기 실행모듈은 스케듈링 시점에서 상기 처리량 제어부에서 결정된 프로세서 어피니티 온/오프 여부에 따라 대응되는 프로세서를 할당하는 스케듈러를 더 포함하며,
    어피니티 코어를 설정하는 동작을 더 포함하며,
    상기 설정값을 결정하는 동작은
    상기 처리량 메시지를 분석하여 드라이버를 결정하며, 상기 결정된 드라이버의 데이터저장부에서 상기 처리량에 대응되는 클럭 및어피니티 프로세서의 온/오프를 결정하며,
    상기 데이터 저장부는 각 드라이버들에 대응되는 수로 구비되며, 상기 처리량에 대응되는 설정값을 저장하며, 상기 설정값은 클럭 및 어피니티 온/오프 정보인 방법.

  27. 제26항에 있어서,
    상기 설정값을 결정하는 동작은 상기 데이터 저장부에서 해당하는 처리량에 대응되는 프로세서 클럭 및 버스 클럭을 억세스하여 클럭 구동부에 제공하는 동작과,
    상기 처리량에 의해 상기 드라이버에서 설정된 프로세서 어피니티의 온 또는 오프를 설정하는 동작을 포함하는 방법.

  28. 제27항에 있어서,
    상기 실행모듈의 기능을 실행하는 동작은 스케듈링 시점에서 상기 어피니티 온이면 어피니티 프로세서를 스케듈링하고, 어피니티 오프이면 디폴트 프로세서를 스케듈링하는 방법.
KR1020140104678A 2014-08-12 2014-08-12 전자장치의 처리량 제어장치 및 방법 KR102257737B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140104678A KR102257737B1 (ko) 2014-08-12 2014-08-12 전자장치의 처리량 제어장치 및 방법
US14/819,701 US10345850B2 (en) 2014-08-12 2015-08-06 Method and apparatus for adaptive device re-configuration

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140104678A KR102257737B1 (ko) 2014-08-12 2014-08-12 전자장치의 처리량 제어장치 및 방법

Publications (2)

Publication Number Publication Date
KR20160019824A KR20160019824A (ko) 2016-02-22
KR102257737B1 true KR102257737B1 (ko) 2021-05-28

Family

ID=55302977

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140104678A KR102257737B1 (ko) 2014-08-12 2014-08-12 전자장치의 처리량 제어장치 및 방법

Country Status (2)

Country Link
US (1) US10345850B2 (ko)
KR (1) KR102257737B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6518087B2 (ja) * 2015-03-09 2019-05-22 キヤノン株式会社 プログラム処理装置
US10416897B2 (en) 2017-03-27 2019-09-17 SK Hynix Inc. Memory system with latency distribution optimization and an operating method thereof
CN108668268A (zh) * 2018-06-11 2018-10-16 成都中增科教设备有限公司 一种智能控制器及控制方法
KR20200112439A (ko) 2019-03-22 2020-10-05 삼성전자주식회사 멀티 코어를 포함하는 전자 장치 및 이의 패킷 처리를 위한 방법
US11263044B2 (en) * 2019-11-22 2022-03-01 Advanced Micro Devices, Inc. Workload-based clock adjustment at a processing unit
KR20210101081A (ko) * 2020-02-07 2021-08-18 삼성전자주식회사 프로세스를 제어하는 전자 장치 및 그 방법
US20220308920A1 (en) * 2021-03-29 2022-09-29 Samsung Electronics Co., Ltd. Task scheduling method, and computing device and application processor using the same

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090327689A1 (en) * 2008-06-25 2009-12-31 Michael Lazar Systems and methods for tuning an operating system, application, or network component

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6615286B1 (en) * 2000-02-14 2003-09-02 Intel Corporation Method and apparatus for updating device driver control data
US6810432B1 (en) * 2000-04-03 2004-10-26 Hewlett-Packard Development Company, L.P. Method for guaranteeing a device minimun bandwidth on a usb bus
JP4050503B2 (ja) * 2001-11-29 2008-02-20 株式会社日立製作所 表示装置
US8064391B2 (en) * 2006-08-22 2011-11-22 Embarq Holdings Company, Llc System and method for monitoring and optimizing network performance to a wireless device
US7653773B2 (en) * 2007-10-03 2010-01-26 International Business Machines Corporation Dynamically balancing bus bandwidth
US20120022713A1 (en) * 2010-01-14 2012-01-26 Deaver Sr Brian J Power Flow Simulation System, Method and Device
US8539453B2 (en) * 2010-06-30 2013-09-17 International Business Machines Corporation Autonomic I/O tracing and performance tuning
KR101740338B1 (ko) 2010-10-20 2017-05-26 삼성전자주식회사 디지털 시스템에서 동적 클럭 제어 장치 및 방법
US8750807B2 (en) * 2011-01-10 2014-06-10 Mediatek Inc. Measurement gap configuration in wireless communication systems with carrier aggregation
CN102426552B (zh) 2011-10-31 2014-06-04 华为数字技术(成都)有限公司 存储系统服务质量控制方法、装置和系统
US8761788B2 (en) * 2012-05-11 2014-06-24 Qualcomm Incorporated Methods and apparatuses for data throughput optimization in DSDS scenarios
US8775631B2 (en) * 2012-07-13 2014-07-08 Seven Networks, Inc. Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications
US20140195834A1 (en) * 2013-01-04 2014-07-10 Microsoft Corporation High throughput low latency user mode drivers implemented in managed code

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090327689A1 (en) * 2008-06-25 2009-12-31 Michael Lazar Systems and methods for tuning an operating system, application, or network component

Also Published As

Publication number Publication date
US20160050111A1 (en) 2016-02-18
KR20160019824A (ko) 2016-02-22
US10345850B2 (en) 2019-07-09

Similar Documents

Publication Publication Date Title
KR102257737B1 (ko) 전자장치의 처리량 제어장치 및 방법
KR102237373B1 (ko) 전자 장치의 태스크 스케줄링 방법 및 이를 사용하는 전자 장치
KR102205836B1 (ko) 태스크 스케줄링 방법 및 장치
KR102277353B1 (ko) 영상 처리 방법 및 전자 장치
US9785465B2 (en) Method for task group migration and electronic device supporting the same
KR102326945B1 (ko) 태스크 마이그레이션 방법 및 장치
US10853026B2 (en) Method and apparatus for streaming audio by using wireless link
US20170185134A1 (en) Electronic device for managing power and method for controlling thereof
KR102143871B1 (ko) 전자장치의 전원 제어장치 및 방법
KR102112353B1 (ko) 안테나 방사 전력 제어 방법 및 이를 지원하는 전자 장치
KR102151135B1 (ko) 전력 관리 방법 및 그 방법을 처리하는 전자 장치
KR20160004152A (ko) 멀티 프로세서의 태스크(task) 우선순위 결정 방법 및 이를 구현하는 전자장치
US10470134B2 (en) Method of controlling an electronic device according to a communication state of the electronic device
US10432926B2 (en) Method for transmitting contents and electronic device thereof
US9768638B2 (en) Method for charging one or more electronic devices and charging device therefor
US20150267934A1 (en) Method of controlling cpu and electronic device thereof
KR102241831B1 (ko) 전자 장치 및 이의 운영 방법
KR102257823B1 (ko) 연산 장치의 동작 제어 방법 및 장치
US10028217B2 (en) Method for power-saving in electronic device and electronic device thereof
KR102252617B1 (ko) 데이터 전송 방법 및 이를 구현하는 장치
KR102167646B1 (ko) 프레임 정보를 제공하는 전자 장치 및 방법
US20160086479A1 (en) Method for controlling alarm and electronic device supporting the same
US20180139335A1 (en) Method for identifying data usage and electronic device implementing the same
KR102244603B1 (ko) 전송속도를 제어하는 전자 장치 및 방법
KR102334317B1 (ko) 소모 전류를 기반으로 채널을 결정하는 통신 채널 운영 방법 및 이를 지원하는 전자 장치

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