KR102114453B1 - 모바일 장치 및 그것의 제어 방법 - Google Patents

모바일 장치 및 그것의 제어 방법 Download PDF

Info

Publication number
KR102114453B1
KR102114453B1 KR1020130085529A KR20130085529A KR102114453B1 KR 102114453 B1 KR102114453 B1 KR 102114453B1 KR 1020130085529 A KR1020130085529 A KR 1020130085529A KR 20130085529 A KR20130085529 A KR 20130085529A KR 102114453 B1 KR102114453 B1 KR 102114453B1
Authority
KR
South Korea
Prior art keywords
queues
synchronization
chip
level
performance
Prior art date
Application number
KR1020130085529A
Other languages
English (en)
Other versions
KR20150010462A (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 KR1020130085529A priority Critical patent/KR102114453B1/ko
Priority to US14/303,860 priority patent/US9626307B2/en
Publication of KR20150010462A publication Critical patent/KR20150010462A/ko
Application granted granted Critical
Publication of KR102114453B1 publication Critical patent/KR102114453B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/38Universal adapter
    • G06F2213/3804Memory card connected to a computer port directly or by means of a reader/writer
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)

Abstract

본 발명의 실시 예에 따른 메모리 장치를 포함하는 모바일 장치의 성능 제어 방법은, 상기 메모리 장치로의 접근 요청들을 실시간 처리 속성에 따라 동기 큐와 비동기 큐로 구분하여 대기열을 구성하는 단계, 상기 동기 큐에 누적된 대기열의 수를 검출하는 단계, 상기 검출된 동기 큐에 누적된 대기열의 수에 따라 상기 메모리 장치로의 접근 속도 또는 상기 모바일 장치의 시스템 온 칩의 구동 속도를 결정하는 단계, 그리고 결정된 상기 접근 속도 또는 상기 구동 속도에 따라 상기 메모리 장치 또는 상기 시스템 온 칩을 설정하는 단계를 포함한다.

Description

모바일 장치 및 그것의 제어 방법{MOBILE DEVICE AND CONTROL METHOD THEREOF}
본 발명은 반도체 장치에 관한 것으로, 좀 더 구체적으로는 처리될 요청의 수를 참조하여 메모리 및 시스템 성능을 제어하는 모바일 장치 및 그것의 제어 방법에 관한 것이다.
최근, 스마트폰, 테이블릿 PC, 디지털 카메라, MP3 플레이어, PDA 등과 같은 모바일 기기의 이용이 폭발적으로 증가하고 있다. 이러한 모바일 기기에서도 멀티미디어의 구동 및 각종 데이터의 처리량이 증가하면서, 고속 프로세서 및 대용량 저장 매체의 채용이 확대되고 있다. 모바일 기기에는 다양한 응용 프로그램(Application program)들이 구동된다. 다양한 응용 프로그램들을 구동하기 위하여, 모바일 기기에는 워킹 메모리(예를 들면, DRAM), 불휘발성 메모리, 그리고 응용 프로세서(Application Processor: 이하, AP)와 같은 반도체 장치들이 사용된다. 그리고 모바일 환경에서의 고성능화에 대한 요구에 따라 상술한 반도체 장치들의 집적도 및 구동 주파수는 날로 높아지고 있다.
모바일 기기에서 프로세싱 유닛의 성능이나 디램의 성능은 매년 비약적으로 발전하고 있다. 그러나 불휘발성 저장 매체로 사용되는 스토리지 장치의 성능은 프로세싱 유닛이나 디램의 성능을 따라가지 못하고 있는 실정이다. 사용자가 느끼는 모바일 기기의 성능은 결국 스토리지 장치의 접근 속도에 크게 영향을 받는다. 멀티 태스킹(Multi-Tasking)과 같은 상황에서 스토리지 장치의 접근 속도는 사용자가 느끼는 서비스 품질(QoS)을 결정한다.
사용자에게 고품질의 서비스를 제공하기 위해서 다양한 스토리지 장치에 대한 입출력 스케줄링 기법들이 적용되고 있다. 스토리지 장치에 대한 입출력 스케줄링 기법들에 따르면, 처리가 종료된 과거의 접근 파라미터를 근거로 현재 요청된 접근 동작의 성능을 결정한다. 하지만, 이러한 기법들은 스토리지 장치로의 접근 요청이 폭발적으로 증가하거나, 급격히 감소하는 경우에는 효과적인 스케줄링 방법이 되지 못하는 실정이다. 따라서, 모바일 기기에서 스토리지 장치에 대한 진보된 스케줄링 기술이 절실한 실정이다.
본 발명의 목적은 불휘발성 스토리지 장치를 구비하는 모바일 기기에서 스토리지 장치의 성능 한계에도 불구하고 효과적인 입출력 스케줄링 방식을 통해서 사용자에게 높은 서비스 품질을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 메모리 장치를 포함하는 모바일 장치의 성능 제어 방법은, 상기 메모리 장치로의 접근 요청들을 실시간 처리 속성에 따라 동기 큐와 비동기 큐로 구분하여 대기열을 구성하는 단계, 상기 동기 큐에 누적된 대기열의 수를 검출하는 단계, 상기 검출된 동기 큐에 누적된 대기열의 수에 따라 상기 메모리 장치로의 접근 속도 또는 상기 모바일 장치의 시스템 온 칩의 구동 속도를 결정하는 단계, 그리고 결정된 상기 접근 속도 또는 상기 구동 속도에 따라 상기 메모리 장치 또는 상기 시스템 온 칩을 설정하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 모바일 장치는, 데이터를 저장하는 메모리 장치, 그리고 응용 프로그램 또는 사용자의 요청에 의해서 상기 메모리 장치를 액세스하는 시스템 온 칩을 포함하되, 상기 액세스 요청에 따라 상기 시스템 온 칩의 기능 블록들과 상기 메모리 장치를 제어하기 위한 커널은, 상기 메모리 장치로의 접근 요청들을 실시간 처리 속성에 따라 동기 큐와 비동기 큐로 구분하여 대기열을 구성하는 입출력 스케줄러, 및 상기 동기 큐에 누적된 접근 요청들의 수에 따라 상기 메모리 장치의 접근 속도와 상기 시스템 온 칩의 성능 모드를 조정하는 장치 드라이버를 포함한다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 메모리 장치를 포함하고, 복수 레벨의 성능 모드들로 제어되는 모바일 장치의 제어 방법은, 상기 모바일 장치의 입출력 버퍼에 누적된 현재 동기 큐의 수를 검출하는 단계, 상기 검출된 현재 동기 큐의 수가 하나 이상인 경우, 상기 모바일 장치에서 이전 동기 큐의 수에 따라 적용된 제 1 성능 모드가 활성화된 상태인지 확인하는 단계, 상기 제 1 성능 모드의 적용 시간이 제한 시간을 경과했는지 검출하는 단계, 상기 제한 시간이 경과한 것으로 검출되면, 상기 이전 동기 큐의 수와 상기 현재 동기 큐의 수를 비교하는 단계, 그리고 상기 비교 결과에 따라 상기 제 1 성능 모드로부터 성능을 상향 또는 하향시킨 제 2 성능 모드를 결정하고 적용하는 단계를 포함한다.
본 발명에 따른 모바일 장치 및 그것의 제어 방법에 따르면, 제한된 저장 장치의 성능에도 불구하고 저장 장치에 대한 효율적인 입출력 스케줄링이 가능하다. 따라서, 본 발명의 모바일 장치는 효율적인 저장 장치로의 접근을 통해서 사용자에게 높은 응답 속도를 제공할 수 있고, 전력 소모를 줄일 수 있다.
도 1은 본 발명의 실시 예에 따른 모바일 장치를 간략히 보여주는 블록도이다.
도 2는 도 1의 모바일 장치의 소프트웨어 구조를 보여주는 블록도이다.
도 3은 도 2의 입출력 스케줄러의 큐 구성 방법을 보여주는 도면이다.
도 4는 본 발명의 다른 실시 예에 따른 모바일 장치의 소프트웨어 구조를 보여주는 블록도이다.
도 5는 본 발명의 실시 예에 따른 동기 큐의 크기에 따른 시스템 온 칩(SoC)과 저장 장치의 성능을 제어하는 방법을 보여주는 순서도이다.
도 6은 본 발명의 제 1 실시 예에 따른 서비스 품질 레벨을 보여주는 표이다.
도 7은 본 발명의 제 1 실시 예에 따른 QoS 레벨의 조정 방법을 보여주는 순서도이다.
도 8은 도 7의 서비스 품질 제어 동작에 따른 동기 큐의 증감을 보여주는 타이밍도이다.
도 9는 본 발명의 제 2 실시 예에 따른 동기 큐의 수에 대응하는 동적 전압 주파수 스케일링(DVFS) 레벨을 보여주는 표이다.
도 10은 본 발명의 제 2 실시 예에 따른 동기 큐의 수(SQ)에 따른 DVFS 조정 방법을 보여주는 순서도이다.
도 11은 도 10의 제어 방법에 따라 동기 큐의 증감을 보여주는 타이밍도이다.
도 12는 본 발명의 제 3 실시 예를 설명하기 위한 블록도이다.
도 13은 본 발명의 제 3 실시 예에 따른 동기 큐의 수에 대응하는 CPU 모드를 보여주는 표이다.
도 14는 본 발명의 제 3 실시 예에 따른 동기 큐의 크기에 따른 CPU 모드를 변경하는 방법을 보여주는 순서도이다.
도 15는 본 발명의 제 4 실시 예에 따른 동기 큐의 수(SQ)에 대응하는 시스템 성능 레벨을 보여주는 표이다.
도 16은 본 발명의 제 4 실시 예에 따른 동기 큐의 수(SQ)에 따른 시스템 성능 레벨을 변경하는 방법을 보여주는 순서도이다.
도 17은 본 발명의 제 5 실시 예에 따른 시스템 성능 모드의 제어 방법을 보여주는 순서도이다.
도 18은 본 발명의 다른 실시 예에 따른 모바일 장치의 소프트웨어 구조를 보여주는 블록도이다.
도 19는 본 발명의 다른 실시 예에 따른 모바일 장치를 보여주는 블록도이다.
도 20은 본 발명의 다른 실시 예에 따른 모바일 장치의 성능 제어 방법을 보여주는 순서도이다.
도 21은 본 발명의 실시 예에 따른 휴대용 단말기를 나타내는 블록도이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다. 동일한 구성 요소들은 동일한 참조번호를 이용하여 인용될 것이다. 유사한 구성 요소들은 유사한 참조번호들을 이용하여 인용될 것이다. 아래에서 설명될 본 발명에 따른 플래시 메모리 장치의 회로 구성과, 그것에 의해 수행되는 읽기 동작은 예를 들어 설명한 것에 불과하며, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능하다.
본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 이하, 본 발명에 따른 실시 예를 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 모바일 장치를 간략히 보여주는 블록도이다. 도 1을 참조하면, 모바일 장치(100)는 시스템 온 칩(SoC)과 워킹 메모리(130), 액정 표시 장치(152), 터치 패널(154), 저장 장치(170) 등을 포함할 수 있다. 시스템 온 칩(SoC)은 CPU(110), 디램 컨트롤러(120), 성능 컨트롤러(140), 사용자 인터페이스 컨트롤러(150), 메모리 인터페이스(160), 가속기(180) 등을 포함한다. 모바일 장치(100)의 구성 요소들은 도시된 구성 요소들에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 모바일 장치(100)는 영상 데이터를 처리하기 위한 하드웨어 코덱, 보안 블록 등을 더 포함할 수 있다.
CPU(110)는 모바일 장치(100)에서 수행될 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버들)를 실행한다. CPU(110)는 워킹 메모리(130)에 로드되는 운영 체제(OS)를 실행할 것이다. CPU(110)는 운영 체제(OS) 기반에서 구동될 다양한 응용 프로그램들(Application Program)을 실행할 것이다. CPU(110)는 동종 멀티-코어 프로세서(Homogeneous Multi-Core Processor) 또는 이종 멀티-코어 프로세서(Heterogeneous Multi-Core Processor)로 제공될 수 있다. 멀티-코어 프로세서는 적어도 2개의 독립적으로 구동될 수 있는 프로세서들(이하, 코어)을 갖는 컴퓨팅 컴포넌트(Computing component)이다. 코어들 각각은 프로그램 명령들(Program Instructions)을 독립적으로 읽고 실행할 수 있다.
디램 컨트롤러(120)는 워킹 메모리(130)와 SoC 사이에서 인터페이싱을 제공한다. 디램 컨트롤러(120)는 CPU(110)나 다른 기능 블록(Intellectual Property: IP)의 요청에 따라 워킹 메모리(130)를 액세스할 것이다. 예를 들면, 디램 컨트롤러(120)는 CPU(110)의 쓰기 요청에 따라 데이터를 워킹 메모리(130)에 기입할 수 있다. 또는, 디램 컨트롤러(120)는 CPU(110)의 읽기 요청에 따라 워킹 메모리(130)로부터 데이터를 읽어내어 데이터 버스(Data bus)를 통해서 CPU(100)나 메모리 인터페이스(160)에 전달할 수 있다.
워킹 메모리(130)에는 부팅시에 운영 체제(133)나 기본 응용 프로그램들(131)이 로드될 것이다. 예를 들면, 모바일 장치(100)의 부팅시에 저장 장치(170)에 저장된 OS 이미지(173)가 부팅 시퀀스에 의거하여 워킹 메모리(130)로 로드된다. 운영 체제(133)에 의해서 모바일 장치(100)의 제반 입출력 동작들이 지원될 수 있다. 마찬가지로, 사용자의 의하여 선택되거나 기본적인 서비스 제공을 위해서 응용 프로그램들이 워킹 메모리(130)에 로드될 수 있다. 워킹 메모리(130)는 이뿐 아니라, 카메라와 같은 이미지 센서로부터 제공되는 영상 데이터를 저장하는 버퍼 메모리로 사용될 수도 있을 것이다.
성능 컨트롤러(140)는 운영 체제(133)에 의해서 제공되는 제어 요청에 따라 시스템 온 칩(SoC)의 동작 파라미터들을 조정할 수 있다. 예를 들면, 성능 컨트롤러(140)는 시스템 온 칩(SoC)의 성능을 높이기 위해서 DVFS(Dynamic Voltage Frequency Scaling)의 레벨을 조정하거나, CPU(110)의 구동 클록 주파수, 빅앤리틀(Big.LITTLE)과 같은 멀티-코어 구동 모드를 선택할 수 있다.
사용자 인터페이스 컨트롤러(150)는 사용자 인터페이스 장치들로부터의 사용자 입력 및 출력을 제어한다. 예를 들면, 사용자 인터페이스 컨트롤러(150)는 CPU(110)의 제어에 따라 액정 표시 장치(152)에 데이터를 입력하기 위한 키보드 화면 등을 표시할 수 있다. 또는, 사용자 인터페이스 컨트롤러(150)는 사용자가 요청한 데이터를 표시하도록 액정 표시 장치(152)를 제어할 수 있다. 사용자 인터페이스 컨트롤러(150)는 터치 패널(154)과 같은 사용자 입력 수단으로부터의 제공되는 데이터를 사용자 입력 데이터로 디코딩할 수 있다.
메모리 인터페이스(160)는 CPU(110)의 요청에 따라 저장 장치(170)에 액세스한다. 즉, 메모리 인터페이스(160)는 시스템 온 칩(SoC)과 저장 장치(170) 사이의 인터페이스를 제공한다. 예를 들면, CPU(110)에 의해서 처리된 데이터가 메모리 인터페이스(160)를 통해 저장 장치(170)에 저장된다. 다른 예로써, 저장 장치(170)에 저장된 데이터는 메모리 인터페이스(160)를 통해 CPU(110)에 제공된다. 특히, 메모리 인터페이스(160)는 CPU(110)에 의해서 결정된 액세스 모드로 저장 장치(170)에 액세스할 수 있다.
저장 장치(170)는 모바일 장치(100)의 저장 매체(Storage Medium)로서 제공된다. 저장 장치(170)는 응용 프로그램들(171), 운영 체제 이미지(OS Image, 173) 및 각종 데이터를 저장할 수 있다. 저장 장치(170)는 메모리 카드(MMC, eMMC, SD, MicroSD 등)로 제공될 수도 있다. 저장 장치(170)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)를 포함할 수 있다. 또는, 저장 장치(170)는 PRAM, MRAM, ReRAM, FRAM 등의 차세대 불휘발성 메모리나 NOR 플래시 메모리를 포함할 수도 있다. 본 발명의 다른 실시 예에서는 저장 장치(170)는 시스템 온 칩(SoC)의 내부에 구비되는 내장 메모리일 수 있다.
가속기(180)는 멀티미디어 또는 멀티미디어 데이터의 처리 속도를 향상하기 위한 별도의 기능 블록으로 제공된다. 예를 들면, 가속기(180)는 텍스트(Text), 오디오(Audio), 정지 영상들(Still images), 애니메이션(Animation), 비디오(Video), 2차원 데이터, 또는 3차원 데이터의 처리 성능을 향상시키기 위한 기능 블록(IP)으로 제공될 수 있다.
시스템 인터커넥터(190)는 시스템 온 칩(SoC)의 내부에서 온칩 네트워크를 제공하기 위한 시스템 버스(System Bus)이다. 시스템 인터커넥터(190)는 예를 들면, 데이터 버스(Data bus), 어드레스 버스(Address bus) 및 컨트롤 버스(Control bus)를 포함할 것이다. 데이터 버스(Data bus)는 데이터가 이동하는 경로이다. 주로, 워킹 메모리(130)이나 저장 장치(170)로의 메모리 접근 경로를 제공될 것이다. 어드레스 버스(Address bus)는 기능 블록들(IPs) 간의 어드레스 교환 경로를 제공한다. 컨트롤 버스(Control bus)는 기능 블록들(IPs) 간의 제어 신호를 전달하는 경로를 제공한다. 하지만, 시스템 인터커넥터(190)의 구성은 상술한 설명에만 국한되지 않으며, 효율적인 관리를 위한 중재 수단들을 더 포함할 수 있다.
이상의 설명에 따르면, 모바일 장치(100)는 저장 장치(170)에 대한 접근 속도를 누적된 동기 큐(Sync Queue)의 수에 따라 조정할 수 있다. 더불어, 본 발명의 실시 예에 따르면, 모바일 장치(100)는 CPU(110)의 처리 속도를 누적된 동기 큐(Sync Queue)의 수에 따라 조정할 수 있다. 처리될 동기 큐(Sync Queue)의 크기에 따라 저장 장치(170)의 접근 속도 또는 시스템 온 칩(SoC)의 동작 속도를 설정함에 따라 처리될 작업량의 변화에 따른 정확한 시스템 성능의 설정이 가능하다. 따라서, 사용자에게 높은 응답 속도를 제공할 수 있다. 여기서, 동기 큐(Sync Queue)는 실시간 처리가 요구되는 작업 요청을 의미한다. 반면, 실시간 처리를 요구하지 않는 작업 요청은 비동기 큐(Async Queue)로 관리될 것이다.
도 2는 도 1의 모바일 장치의 소프트웨어 구조를 보여주는 블록도이다. 도 2를 참조하면, 워킹 메모리(130)에 로드되고 CPU(110)에 의해서 구동되는 모바일 장치(100)의 소프트웨어 계층 구조는 간략히 응용 프로그램(131)과 커널(Kernel, 133)로 구분될 수 있다. 커널(133)은 다시 입출력 스케줄러(135)와 장치 드라이버(137)로 나뉠 수 있다. 장치 드라이버(137)에 의해서 입출력 스케줄러(135)에서 관리되는 동기 큐(Sync Queue, 134)의 수 또는 비동기 큐(Async Queue, 136)의 수가 검출된다. 장치 드라이버(137)는 검출 결과에 따라 메모리 인터페이스(160)의 데이터 전송 클록 또는 CPU(110, 도 1 참조)의 구동 클록의 주파수들을 조정할 수 있다.
응용 프로그램(131)은 기본적인 서비스로서 구동되거나, 사용자의 요청에 의해서 구동되는 상위 계층의 소프트웨어이다. 다양한 서비스를 제공하기 위하여 동시에 복수의 응용 프로그램들(App0, App1, App2, App3)이 실행될 수 있다. 실행되는 응용 프로그램들(App0, App1, App2, App3)은 워킹 메모리(130)에 로드된 후에 CPU(110)에 의해서 실행될 것이다. 사용자에 의해서 동영상 파일의 재생이 요청되면, 동영상을 재생하기 위한 응용 프로그램(예를 들면, 비디오 플레이어)이 실행된다. 그러면, 실행된 플레이어는 사용자가 요청한 동영상 파일을 재생하기 위한 저장 장치(170)로의 읽기 요청(Read request) 또는 쓰기 요청(Write request)을 생성할 것이다.
커널(133)은 운영 체제(OS)의 구성으로, 응용 프로그램(131)과 하드웨어(Hardware) 사이에서 제어 동작을 수행한다. 커널(133)은 프로그램의 실행, 인터럽트, 멀티 태스킹, 메모리 관리, 파일 시스템, 그리고 장치 드라이버 등을 포함할 수 있다. 본 발명에서, 커널(133)의 일부 기능을 수행하는 입출력 스케줄러(135) 및 장치 드라이버(137)에 대해서만 설명하기로 한다.
입출력 스케줄러(135)는 응용 프로그램(131) 또는 사용자의 입력에 의한 메모리 접근 요청이 발생하면 복수의 요청들에 대한 우선 순위를 조정하는 역할을 수행한다. 본 발명의 입출력 스케줄러(135)는 복수의 접근 요청들을 동기 큐(134)와 비동기 큐(136)로 구분하여 관리한다. 동기 큐(134)에는 신속한 처리가 지연되는 경우에 사용자 서비스에 문제가 발생하는 요청들이 누적된다. 즉, 동기 큐(134)에는 시스템 성능을 위해서 실시간 처리가 요구되는 접근 요청들이 버퍼링된다. 반면, 비동기 큐(136)에는 처리가 지체되더라도 사용자에 대한 서비스 품질에 영향을 주지 않는 요청들이 버퍼링된다. 동기 큐(134)에 구성되는 메모리에 대한 접근 요청들은 항상 비동기 큐(136)에서 대기되는 요청보다 우선적으로 처리되어야 한다.
장치 드라이버(137)는 저장 장치(170)를 운영 체제(OS) 레벨에서 제어하기 위한 제어 모듈이다. 사용자에 의해서 또는 응용 프로그램(131)으로부터 메모리 접근 요청이 발생하면, 장치 드라이버(137)가 호출된다. 본 발명의 장치 드라이버(137)는 저장 장치(170)를 제어하기 위한 커널(133)의 소프트웨어 모듈로 제공될 수 있다.
본 발명의 장치 드라이버(137)는 서비스 품질(QoS) 제어 모듈(138)을 포함한다. QoS 제어 모듈(138)은 입출력 스케줄러(135)에서 관리되는 동기 큐(134) 또는 비동기 큐(136)를 모니터링한다. QoS 제어 모듈(138)은 동기 큐(134)에 누적되는 요청의 수에 따라 저장 장치(170)의 구동 조건 또는 시스템 온 칩(SoC)의 구동 조건을 가변시킬 수 있다.
예를 들면, QoS 제어 모듈(138)은 동기 큐(134)에 누적된 요청들의 수와 기준 값들을 비교하여 저장 장치(170)의 데이터 전송 클록의 주파수(fm)를 조정할 수 있다. 또는, QoS 제어 모듈(138)은 동기 큐(134)에 누적된 요청의 수와 기준치들을 비교하여 시스템 온 칩(SoC)의 성능을 조정할 수 있다. 동기 큐(134)에 누적된 요청의 수가 과도하게 증가하는 경우에는, QoS 제어 모듈(138)은 저장 장치(170)의 데이터 전송 클록의 주파수를 높이도록 메모리 인터페이스(160)를 제어할 수 있다. 동기 큐(134)에 누적된 요청들의 수가 과도하게 증가하는 경우, QoS 제어 모듈(138)은 시스템 온 칩(SoC)의 동적 전압 주파수 스케일링(DVFS) 모드를 조정하도록 성능 컨트롤러(140)를 제어할 수 있다.
장치 드라이버(137)는 상태 테이블(139)을 구성할 수 있다. 상태 테이블(139)에는 QoS 제어 모듈(138)에 의해서 설정된 서비스 품질 스텝(QoS Step), DVFS 레벨, CPU 모드 등이 저장 및 업데이트 된다. 그리고 상태 테이블(139)에는 서비스 품질 레벨(QoS step), DVFS 레벨, CPU 모드 등의 업데이트 시점도 저장될 수 있다. 더불어, 상태 테이블(139)에는 업데이트 시점에 대응하는 동기 큐(Sync Queue)의 수가 저장될 수 있을 것이다.
성능 컨트롤러(140)는 장치 드라이버(137)의 제어에 따라 시스템 온 칩(SoC)의 동작 파라미터들을 조정할 수 있다. 예를 들면, 성능 컨트롤러(140)는 시스템 온 칩(SoC)의 성능을 높이기 위해서 DVFS 레벨을 조정하거나, CPU(110)의 구동 클록 주파수, 빅앤리틀(Big.LITTLE)과 같은 동종 또는 이종 멀티-코어의 구동 모드를 제어할 수 있다.
여기서, 저장 장치(170)는 앞서 설명된 멀티미디어 카드(MMC), 임베디드 메모리 카드(eMMC)일 수 있다. 하지만, 저장 장치(170)는 어떤 종류의 휘발성 또는 불휘발성 스토리지로 제공될 수 있음은 잘 이해될 것이다.
도 3은 도 2의 입출력 스케줄러의 큐 구성 방법을 예시적으로 보여주는 도면이다. 도 3을 참조하면, 복수의 블록 장치들 중 특히 저장 장치(170)에 대한 입출력 스케줄러(135)의 동기 큐(134) 및 비동기 큐(136)가 예시적으로 도시되어 있다.
입출력 스케줄러(135)는 사용자의 입력이나, 응용 프로그램의 요청에 따라 발생하는 저장 장치(170)로의 읽기 또는 쓰기 요청을 동기 큐(134)와 비동기 큐(136)로 구분하여 관리한다. 도시되지는 않았지만, 동기 큐(134)와 비동기 큐(136)는 별도로 구비되는 입출력 버퍼(I/O Buffer)에서 관리될 수 있다. 입출력 버퍼(I/O Buffer)는 워킹 메모리(130) 상에서 구성되거나, 시스템 온 칩(SoC)의 내부에 구비되는 별도의 에스램(SRAM)에 구성될 수도 있을 것이다. 또는, 입출력 버퍼(I/O Buffer)는 메모리 인터페이스(160) 내부에 제공될 수도 있을 것이다.
동기 큐(134)에는 실시간 처리를 요하는 읽기 또는 쓰기 요청들이 누적된다. 동기 큐(134)에 할당된 읽기 또는 쓰기 요청이 즉시 처리되지 못하면 모바일 장치(100) 전체의 성능이 급격히 저하될 수 있다. 또한, 동기 큐(134)에 할당된 읽기 또는 쓰기 요청이 즉시 처리되지 못하면 사용자가 느끼는 체감 동작 속도에 큰 지장을 야기할 수 있다. 예를 들면, 신속한 읽기나 쓰기가 수행되지 못할 경우에 사용자에게 성능 저하를 느끼게 할 수 있는 쓰기 요청은 동기 큐(134)에 저장될 것이다.
예를 들면, 실시간 처리를 요하는 요청들로는 동영상이나 멀티미디어 데이터에 대한 처리 요청들은 동기 큐(134)에 저장될 것이다. 더불어, 사용자의 요청에 따라 발생하고, 사용자가 응답을 기다리는 제반 요청들은 동기 큐(134)에 저장될 것이다. 사용자가 주소록을 터치하거나, 갤러리를 실행시키거나, 특정 이미지를 확대하기 위한 조작을 했을 경우, 그리고 동영상이나 음악 파일을 실행하는 경우에 발생하는 메모리 접근 요청들은 동기 큐(134)에 저장될 것이다. 더불어, 사용자가 멀티미디어 파일의 재생중에 빨리 넘기기(FWD) 조작을 하는 경우, 또는 멀티미디어 파일의 재생중 특정 시점으로 점프하는 조작 등에 의해서 발생하는 메모리 접근 요청들은 동기 큐(134)에 저장될 것이다. 그리고 홈 화면을 터치하여 페이지를 이동시키는 경우에 발생하는 메모리 접근 요청들도 동기 큐(134)에 저장될 것이다.
비동기 큐(136)에는 실시간 처리를 필요로 하지 않는 요청들이 누적된다. 예를 들면, 비교적 처리 우선 순위가 낮은 쓰기 요청들이 비동기 큐(136)에 저장된다. 백그라운드 또는 아이들 타임(Idle time)에 처리되어도 되는 쓰기 요청은 비동기 큐(136)에 저장될 것이다.
예시적으로, 동기 큐(134)에는 읽기 요청들(Read1, Read2, Read3)과 쓰기 요청들(Write1, Write2)이 버퍼링될 수 있다. 그리고 비동기 큐(136)에는 쓰기 요청들(Write3, Write4, Write5)이 버퍼링될 수 있다. 여기서, 동기 큐(134)에 포함되는 읽기 요청들은 대부분 쓰기 요청을 수행하기 위해서 필수적으로 선행되어야 하는 읽기 요청에 해당할 것이다. 예를 들면, 쓰기 요청들(Write1, Write2, Write3)을 수행하기 위해서 읽기 요청(Read1, Read2)이 선행적으로 처리되어야 할 것이다.
여기서, 장치 드라이버(137)의 QoS 제어 모듈(138)은 상술한 동기 큐(134)에 누적되는 요청들의 수를 지속적으로 모니터링한다. QoS 제어 모듈(138)은 동기 큐(134)에 누적된 요청들의 수(SQ)에 대해서 복수의 기준치들을 적용하여 서비스 품질(QoS)을 향상하기 위한 제어 동작을 수행할 수 있다. QoS 제어 모듈(138)은 동기 큐(134)의 수(SQ)와 기준치들을 비교하여, 메모리 인터페이스(160)의 데이터 교환 클록의 주파수나 성능 컨트롤러(140)에 의한 CPU(110)의 성능 또는 시스템 온 칩(SoC)의 DVFS 레벨을 조정할 수 있다. 이러한 동작들은 후술하는 실시 예들에서 좀더 상세하게 다루기로 한다.
도 4는 본 발명의 다른 실시 예에 따른 모바일 장치의 소프트웨어 구조를 보여주는 블록도이다. 도 4를 참조하면, 커널(133')의 입출력 스케줄러(135)에서 관리되는 동기 큐(Sync Queue, 134)의 수 또는 비동기 큐(Async Queue, 136)의 수는 펌웨어(137')에 의해서 모니터링된다. 그리고 펌웨어(137')에 포함되는 QoS 제어 모듈(138)에 의해서 메모리 인터페이스(160) 또는 성능 컨트롤러(140)가 제어될 수 있다.
응용 프로그램(131), 커널(133')의 입출력 스케줄러(135)의 기능은 앞서 설명된 도 2의 그것들과 동일하므로 세부적인 설명은 생략하기로 한다. 더불어, 커널(133')의 입출력 스케줄러(135)의 하위 계층에 장치 드라이버(Device driver) 모듈이 더 포함될 수 있음은 잘 이해될 것이다. 하지만, 커널(133')에 포함되는 장치 드라이버(Device driver)는 더 이상 메모리 인터페이스(160) 또는 성능 컨트롤러(140)를 제어하지 않는다.
대신, 동기 큐(Sync Queue)에 누적되는 요청들의 수를 모니터링하고, 그 결과에 따라 시스템 온 칩(SoC)의 성능과 저장 장치(170)의 채널 대역폭을 제어하기 위한 별도의 펌웨어(137')가 구비될 수 있다. 펌웨어(137')는 QoS 제어 모듈(138)을 포함할 수 있다. QoS 제어 모듈(138)은 입출력 스케줄러(135)에서 관리되는 동기 큐(134) 또는 비동기 큐(136)를 모니터링한다. QoS 제어 모듈(138)은 동기 큐(134)에 누적되는 요청의 수에 따라 저장 장치(170)의 구동 조건 또는 시스템 온 칩(SoC)의 구동 조건을 가변시킬 수 있다.
펌웨어(137')는 QoS 제어 모듈(138)과 더불어 상태 테이블(Status table)을 더 포함할 수 있다. 상태 테이블(Status table)에는 QoS 제어 모듈(138)에 의해서 설정된 서비스 품질 레벨(QoS step), DVFS 레벨, CPU 모드 등이 저장 및 업데이트 된다. 그리고 상태 테이블(Status table)에는 서비스 품질 레벨(QoS step), DVFS 레벨, CPU 모드 등의 업데이트 시점이 저장될 수 있다. 더불어, 상태 테이블(Status table)에는 업데이트 시점에 대응하는 동기 큐(Sync Queue)의 수가 저장될 수 있을 것이다. 즉, 펌웨어(137')는 도 2의 장치 드라이버(137)의 기능을 수행할 수 있다. 펌웨어(137')는 시스템 온 칩(SoC)의 특정 기능 블록(IP)에 로드되어 구동될 수 있다. 또는 펌웨어(137')는 성능 컨트롤러(140)나 메모리 인터페이스(160)에 로드되어 동작할 수도 있다.
성능 컨트롤러(140)는 펌웨어(137')의 제어에 따라 시스템 온 칩(SoC)의 동작 파라미터들을 조정할 수 있다. 예를 들면, 성능 컨트롤러(140)는 시스템 온 칩(SoC)의 성능을 높이기 위해서 DVFS 레벨을 조정하거나, CPU(110)의 구동 클록 주파수, 빅앤리틀(Big.LITTLE)과 같은 동종 또는 이종 멀티-코어의 구동 모드를 제어할 수 있다.
도 5는 본 발명의 실시 예에 따른 동기 큐의 크기에 따른 시스템 온 칩(SoC)과 저장 장치의 성능을 제어하는 방법을 보여주는 순서도이다. 도 2 및 도 5를 참조하여, 동기 큐의 수(SQ) 변화에 따라 모바일 장치(100)의 성능을 조정하는 방법이 간략히 설명될 것이다.
S10 단계에서, 입출력 스케줄러(135, 도 2 참조)는 시스템 온 칩(SoC)에서 발생하는 저장 장치(170)로의 다양한 접근 요청들을 동기 큐(Sync Queue)와 비동기 큐(Async Queue)로 구분한다. 그리고 입출력 스케줄러(135)는 구분된 각각의 큐들을 입출력 버퍼(I/O buffer)에 구성할 것이다.
S20 단계에서, 장치 드라이버(137)는 입출력 스케줄러(135)에 의해서 구성되는 동기 큐(Sync Queue)의 수를 검출한다.
S30 단계에서, 장치 드라이버(137)는 검출된 동기 큐(Sync Queue)의 수에 대응하는 시스템 온 칩(SoC)의 성능 또는 저장 장치(170)의 접근 속도를 결정한다. 장치 드라이버(137)는 검출된 동기 큐(Sync Queue)의 수에 대응하는 시스템 온 칩의 성능이나 저장 장치(170)의 접근 속도를 정의하는 상태 테이블(State table)을 운영할 수 있다.
S40 단계에서, 장치 드라이버(137)는 결정된 시스템 온 칩(SoC)의 성능으로 시스템 온 칩(SoC)의 동작 속도 또는 성능을 설정한다. 예를 들면, 장치 드라이버(137)는 시스템 온 칩(SoC)의 동적 전압 주파수 스케일링(DVFS) 모드, CPU(110)의 구동 주파수의 조정, 동종 또는 이종 멀티-코어 CPU의 활성 코어의 수 등을 조정할 수 있다. 이러한 조정은 도 2에서 설명된 성능 컨트롤러(140)에 의해서 제어될 것이다. 장치 드라이버(137)는 저장 장치(170)의 접근 속도를 조정하기 위해, 메모리 인터페이스(160)의 채널 대역폭을 제어할 수 있다. 장치 드라이버(137)는 저장 장치(170의 접근 속도를 조정하기 위해, 저장 장치(170)의 읽기 또는 쓰기 속도를 조정할 수 있다.
이상에서는, 동기 큐(134)의 크기에 따라 시스템 온 칩(SoC)의 성능과 저장 장치(170)에 대한 접근 속도를 가변하여 모바일 장치(100)의 동적 성능을 제어하는 방법이 설명되었다. 동기 큐(134)의 접근 요청의 수에 따라 시스템 온 칩(SoC)의 데이터 처리 속도 및 메모리 인터페이스(160)의 주파수를 동적으로 조정될 수 있다. 이 경우, 실제로 동기 큐(134)에 스케줄링된 접근 요청이 실행되는 시점에 최적의 성능으로 설정될 수 있다. 따라서, 사용자가 느끼는 성능 또는 서비스 품질(QoS)의 최적화가 가능하다.
도 6은 본 발명의 제 1 실시 예에 따른 서비스 품질 레벨을 보여주는 표이다. 도 6을 참조하면, 동기 큐(134)에 누적된 긴급한 접근 요청들의 수에 따라 저장 장치(170) 및 시스템 온 칩(SoC)의 CPU(110)의 구동 클록 주파수가 동적으로 조정될 수 있다.
본 발명의 QoS 제어 모듈(138)에 의해서 관리되는 서비스 품질(QoS)의 레벨은 예시적으로 3개의 스텝들을 포함하는 것으로 가정한다. 하지만, 서비스 품질(QoS)의 레벨은 2개 또는 4개 이상의 스텝들로 변경될 수 있음은 잘 이해될 것이다.
동기 큐의 수(SQ)가 1 이상이고 15 이하인 경우에, QoS 제어 모듈(138)은 서비스 품질(QoS)의 레벨로 제 1 스텝(1st Step)을 선택할 것이다. 동기 큐의 수(SQ)가 16 이상이고 30 이하인 경우에, QoS 제어 모듈(138)은 서비스 품질(QoS)의 레벨로 제 2 스텝(2nd Step)을 선택할 것이다. 동기 큐의 수(SQ)가 31 이상인 경우에, QoS 제어 모듈(138)은 서비스 품질(QoS)의 레벨로 제 3 스텝(3rd Step)을 선택할 것이다.
제 1 스텝(1st Step)은 1.2 GHz의 CPU 클록 주파수와 733 MHz의 메모리 인터페이스 주파수(MIF Frequency)에 대응한다. 여기서, CPU 클록 주파수(CPU Frequency)는 CPU의 동작 주파수 최대치를 의미할 수 있다. 그리고 메모리 인터페이스 주파수(MIF Frequency)는 저장 장치(170)와 메모리 인터페이스(160) 사이의 데이터 전송 클록의 주파수의 최대치를 의미할 수 있다. 제 2 스텝(2nd Step)은 1.9 GHz의 CPU 클록 주파수와 800 MHz의 메모리 인터페이스 주파수(MIF Frequency)에 대응한다. 제 3 스텝(3rd Step)은 2.3 GHz의 CPU 클록 주파수와 933 MHz의 메모리 인터페이스 주파수(MIF Frequency)에 대응한다. 서비스 품질(QoS) 레벨은 상술한 제 1 내지 제 3 스텝들(1st Step~3rd Step)보다 낮거나 높은 스텝을 더 포함할 수 있다.
상술한 QoS 레벨들은 스텝의 수가 높을수록 동작 주파수가 증가한다. 따라서, 사용자에 의해서 요청된 동작을 수행하는데 소요되는 전력의 소모는 증가할 수 있다. 하지만, CPU(110)에 의한 연산 속도의 증가 및 저장 장치(170)로의 접근 속도의 증가에 따라 요청된 작업들에 대해 상대적으로 신속한 처리가 가능하다. 따라서, 높은 스텝의 QoS 레벨이 설정되는 경우, 소모되는 순간 전력은 높더라도 특정 태스크를 처리하는데 소요되는 전력량은 상대적으로 감소될 수 있다. 더불어, 높은 스텝의 QoS 레벨 상태에서는 사용자가 느끼는 처리 속도가 높아 사용자에게 높은 서비스 품질을 제공할 수 있다.
도 7은 본 발명의 제 1 실시 예에 따른 QoS 레벨의 조정 방법을 보여주는 순서도이다. 도 7을 참조하여, 동기 큐(134)에 누적된 요청들의 수의 변화에 따라 서로 다른 레벨의 QoS 레벨로 변경되는 실시 예가 설명될 것이다. 장치 드라이버(137) 또는 장치 드라이버(137)에 포함되는 QoS 제어 모듈(138)에 의해서 입출력 스케줄러(135)의 상태를 체크하는 것으로 본 발명의 QoS 제어 동작이 시작된다.
S110 단계에서, 장치 드라이버(137)는 현재 입출력 스케줄러(135)에서 유지되는 동기 큐(134, 도 2 참조)에 포함되는 요청들의 크기(SQ_present)를 검출할 것이다. 만일, 현재 동기 큐(134)에 해당하는 요청이 존재하지 않는 경우(No 방향), 절차는 S120 단계로 이동할 것이다. 하지만, 동기 큐(134)에 누적된 대기열의 수가 하나 이상인 것으로 판단되면(Yes 방향), 절차는 S130 단계로 이동할 것이다.
S120 단계에서, 장치 드라이버(137)는 제어를 위해서 관리하는 상태 테이블(Status table)에서 현재 QoS 레벨을 디폴트값으로 리셋하거나, 동기 큐(134)의 크기 값을 리셋할 것이다. 그리고 장치 드라이버(137)는 현재의 동기 큐의 수(SQ_present)를 참조한 서비스 품질(QoS) 제어 동작을 종료할 것이다. 도시된 순서도에서는 1회의 동기 큐(134)의 크기 검출 및 그에 따르는 QoS 레벨 제어 동작만을 기술하였다. 그러나 동기 큐(134)의 검출 동작은 특정 주기로, 또는 QoS 레벨의 조정이 이루어진 이후 특정 시간 이내에 수행되도록 설정될 수 있을 것이다.
S130 단계에서, 장치 드라이버(137)는 동기 큐(134)에 누적된 요청들이 적어도 하나 존재하는 상황에서 이전의 동기 큐의 크기(SQ_previous)에 의한 QoS 제어 동작이 활성화되어 있는지를 검출한다. 이전의 QoS 제어 동작이 비활성화된 상태인 경우(No 방향), 절차는 S140 단계로 이동하게 될 것이다. 만일, 이전의 QoS 제어 동작이 활성화된 상태인 경우(Yes 방향), 절차는 S170 단계로 이동하게 될 것이다. 이전의 QoS 제어 동작의 활성화 여부를 체크하는 이유는, 이전의 QoS 제어 동작의 완료 여부에 따라 현재의 QoS 제어 동작에 적용될 QoS 레벨이 결정되기 때문이다. 즉, 이전의 QoS 제어 동작이 수행되는 제한 시간(TL)이 경과하지 않은 경우에는 QoS 레벨 변경은 실행되지 않을 것이다.
S140 단계에서, 장치 드라이버(137)는 현재의 동기 큐의 수(SQ_present)에 따른 QoS 레벨을 적용한다. 예를 들면, 현재 검출된 동기 큐의 수(SQ_present)가 25라면, 도 6의 테이블 기준으로 제 2 단계(2nd Step)의 QoS 레벨이 선택 및 적용될 것이다.
S150 단계에서, 장치 드라이버(137)는 선택된 QoS 레벨에 따라 시스템 온 칩(SoC)의 CPU(110) 동작 클록의 주파수 및 메모리 인터페이스(160)의 클록 주파수를 조정한다. 장치 드라이버(137)는 예를 들면, 제 2 단계(2nd Step)의 QoS 레벨을 적용하기 위해서 성능 컨트롤러(140)를 통해서 CPU(110)의 구동 클록 주파수를 2.5 GHz로 조정할 것이다. 그리고 장치 드라이버(137)는 제 2 단계(2nd Step)의 QoS 레벨을 적용하기 위해서 메모리 인터페이스(160)의 클록 주파수를 52 MHz로 조정할 것이다.
S160 단계에서, 장치 드라이버(137)는 현재 결정된 QoS 레벨이 적용된 시간, 그리고 적용된 QoS 레벨을 상태 테이블(Status table)에 업데이트할 것이다. 상태 테이블(Status table)에 저장된 현재 적용된 QoS 레벨과 적용 시점에 대한 정보는, 이후에 후속되는 QoS 제어 동작에 참조될 것이다.
S170 단계에서, 장치 드라이버(137)는 이전에 검출된 동기 큐의 수(SQ_previous)에 의해서 활성화된 QoS 제어 동작의 실행 시간을 검출한다. 장치 드라이버(137)는 이전에 검출된 동기 큐의 수(SQ_previous)에 대응하는 QoS 제어 동작의 실행 시간이 제한 시간(Time Limit: TL)을 경과했는지 여부를 검출하게 될 것이다. 여기서, 제한 시간(TL)은 타임아웃(Timeout)의 반 또는 그 이하로도 설정될 수 있다. 만일, 이전 동기 큐의 수(SQ_previous)에 의해서 활성화된 QoS 제어 동작이 시작된 후로부터 제한 시간(TL)이 경과되지 않았다면(No 방향), 현재의 동기 큐의 수(SQ_present)에 근거한 QoS 제어 동작은 종료된다. 왜냐하면, 이전의 이전 동기 큐의 수(SQ_previous)를 참조하여 접근 요청들이 처리중인 상황에서 현재의 동기 큐의 수(SQ_present)에 의한 QoS 제어 동작을 성급히 시작할 필요는 없기 때문이다. 반면, 이전 동기 큐의 수(SQ_previous)에 의해서 활성화된 QoS 제어 동작이 시작된 후로부터 제한 시간(TL)이 경과되었다면(Yes 방향), 절차는 현재의 동기 큐의 수(SQ_present)에 근거한 QoS 제어 동작을 활성화하기 위한 S180 단계로 이동한다. 이전 동기 큐의 수(SQ_previous)에 대응하는 QoS 제어 동작이 충분히 진행된 것으로 판단할 수 있기 때문이다.
S180 단계에서, 장치 드라이버(137)는 이전 동기 큐의 수(SQ_previous)와 현재 검출된 동기 큐의 수(SQ_present)를 비교한다. 장치 드라이버(137)는 별도로 관리되는 상태 테이블을 참조하여 이전의 동기 큐의 수(SQ_previous)를 검출하고, 현재의 동기 큐의 수(SQ_present)와 비교할 것이다. 비교 결과, 현재의 동기 큐의 수(SQ_present)가 이전의 동기 큐의 수(SQ_previous)에 비해서 감소(Decrease)된 것으로 판단되면, 절차는 S190 단계로 이동한다. 반면, 현재의 동기 큐의 수(SQ_present)가 이전의 동기 큐의 수(SQ_previous)에 비해서 증가(Increase)되거나 동일한 것으로 판단되면, 절차는 S195 단계로 이동한다.
S190 단계에서, 장치 드라이버(137)는 이전 동기 큐의 수(SQ_previous)에 의해서 활성화된 QoS 레벨을 감소시킬 것이다. 왜냐하면, 이전 동기 큐의 수(SQ_previous)에 의해서 활성화된 QoS 제어 동작에 따라 동기 큐(134)에 누적된 요청들의 수가 감소한 상태이기 때문이다. 반면, S195 단계에서, 장치 드라이버(137)는 이전 동기 큐의 수(SQ_previous)에 의해서 활성화된 QoS 레벨을 증가시킬 것이다. 이전 동기 큐의 수(SQ_previous)에 의해서 활성화된 QoS 제어 동작에 따라 동기 큐(134)에 누적된 요청들의 수가 증가하여 더 높은 처리 속도가 요구되는 상황이기 때문이다.
이상에서는, 동기 큐(134)에 누적된 요청들의 수에 따라 시스템 온 칩(SoC)의 CPU 구동 주파수와 저장 장치(170)의 데이터 전송 클록의 주파수를 가변하여 모바일 장치의 동적 성능을 제어하는 방법이 설명되었다. 동기 큐(134)의 수에 따라 CPU(110)나 메모리 인터페이스(160)의 주파수를 동적으로 조정하는 경우, 실제로 동기 큐(134)에 대기중인 접근 요청들이 실행되는 시점에 모바일 장치(100)는 최적의 성능으로 설정될 수 있다. 따라서, 사용자가 느끼는 성능 또는 서비스 품질(QoS)의 최적화가 가능하다.
도 8은 도 7의 서비스 품질 제어 동작에 따른 동기 큐의 증감을 보여주는 타이밍도이다. 도 8을 참조하면, 동기 큐의 수(SQ)에 따라 서비스 품질 제어 레벨이 증가 또는 감소하면서 대기중인 데이터의 처리 시점과 QoS 레벨의 변화가 동기될 수 있다. 최초(0 시점)에는 동기 큐의 수(SQ)가 5이고, QoS 레벨이 제 1 스텝(1st step)인 것으로 가정한다.
t1 시점에서, 사용자가 동영상 파일의 재생을 요청할 것이다. 그러면 동영상 파일의 재생을 수행할 응용 프로그램이 실행되고, 동영상 파일을 로드하기 위한 복수의 읽기 요청 및 쓰기 요청이 발생할 것이다. 이때, 동기 큐의 수(SQ)가 증가할 수 있을 것이다. 하지만, 동영상 파일의 재생이라는 단일 태스크를 처리하는데에는 제 1 스텝(1st step)의 QoS 레벨로도 충분할 것이다. 따라서, 동기 큐의 수(SQ)의 급격한 증가 현상은 나타나지 않을 것이다.
t2 시점에서, 사용자에 의해서 갤러리 프로그램이 실행된다. 이때, 동영상의 재생과 영상 파일의 로드라는 멀티 프로세싱이 필요하다. 따라서, 멀티 프로세싱을 위한 긴급한 쓰기나 읽기 요청의 수는 급격하게 증가하게 될 것이다. 그리고 제 1 단계(1st step)에 대응하는 QoS 레벨로는 급격히 증가하는 읽기나 쓰기 요청을 처리하기 어려워 점점 입출력 스케줄러(135)에서 관리되는 동기 큐의 수(SQ)는 증가하게 된다.
동기 큐의 수(SQ)가 43개로 증가한 t3 시점에서, 장치 드라이버(137)는 QoS 레벨을 제 3 단계(3rd step)로 변경한다. 그러면, 메모리 인터페이스(160, 참조)에 의한 저장 장치(170)로의 액세스 속도는 최대로 증가하고, CPU(110)에 의한 연산 처리 속도도 최대로 증가하게 될 것이다. 따라서, 동기 큐의 수(SQ)는 점차 감소하게 될 것이다. 도시된 바와 같이 동기 큐의 수(SQ)는 43개, 25개, 21개로 차츰 감소할 것이다.
t3 시점으로부터 제한 시간(TL)이 경과하면, QoS 레벨의 변경이 가능하게 된다. 따라서, t4 시점에서 장치 드라이버(137)는 입출력 스케줄러(135)에서 관리되는 동기 큐의 수(SQ)를 참조하여 QoS 레벨을 제 2 단계(2nd step)로 변경하게 될 것이다. t4 시점에서 검출된 동기 큐의 수(SQ)는 앞서 도시된 제 2 스텝(2nd step)의 QoS 레벨에 대응하기 때문이다. 장치 드라이버(137)는 제 2 스텝(2nd step)의 QoS 레벨을 적용하기 위해서 CPU(110)의 동작 주파수를 2.5GHz, 메모리 인터페이스(160)의 데이터 전송 클록의 주파수를 52MHz로 변경할 것이다.
t5 시점에서 사용자는 또 다른 동영상 파일의 재생을 실행하는 것으로 가정하자. 그러면, 이미 실행중인 동영상 파일의 재생, 갤러리 파일의 실행과 더불어 추가적인 동영상 파일의 재생을 위해 3개의 태스크가 동시에 실행되어야 한다. 따라서, 3개의 멀티 태스킹을 위한 읽기와 쓰기 요청들은 급격하게 증가하게 될 것이다. 이러한 읽기와 쓰기 요청의 증가는 결국 동기 큐의 수(SQ)의 증가로 나타난다. 하지만, t5 시점은 제 2 스텝(2nd step)의 QoS 레벨의 적용 시점으로부터 제한 시간(TL)이 경과하기 이전이다. 따라서, 장치 드라이버(137)는 t6 시점까지는 동기 큐의 수(SQ)만을 모니터링하게 될 것이다. 동기 큐의 수(SQ)는 t6 시점에는 45개에 도달한다.
t6 시점에서, QoS 레벨의 변경 시점으로부터 제한 시간(TL)이 경과했기 때문에 현재의 동기 큐의 수(SQ)에 대응하는 QoS 레벨의 변경이 가능하다. 현재의 동기 큐의 수(SQ)가 45에 대응하므로, 장치 드라이버(137)는 QoS 레벨을 제 3 단계(3rd step)로 변경하게 될 것이다. 장치 드라이버(137)는 제 3 스텝(3rd step)의 QoS 레벨을 적용하기 위해서 CPU(110)의 동작 주파수를 3.0GHz, 메모리 인터페이스(160)의 데이터 전송 클록의 주파수를 78MHz로 변경할 것이다. 향상된 CPU(110)의 처리 속도와 저장 장치(170)로의 액세스 속도에 따라 긴급하게 처리해야하는 동기 큐의 수(SQ)는 점차 줄어들 것이다. t7 시점에서, 다시 동기 큐의 수(SQ)가 25개로 감소하였다.
t7 시점에서, 장치 드라이버(137)는 현재의 동기 큐의 수(SQ)가 25에 대응하므로, 장치 드라이버(137)는 QoS 레벨을 제 2 단계(2nd step)로 변경하게 될 것이다. 그리고 t7 시점으로부터 제한 시간(TL)이 경과한 t8 시점에서 장치 드라이버(137)는 현재의 동기 큐의 수(SQ) 5에 대응하는 제 1 스텝(1st step)의 QoS 레벨을 설정할 것이다.
이상에서는 처리를 대기중인 동기 큐의 수(SQ)에 따라 저장 장치(170)로의 접근 속도와 CPU(110)의 처리 속도를 결정하는 본 발명의 데이터 처리 방법이 설명되었다. 저장 장치(170)로의 접근 속도가 곧 처리될 동기 큐의 수(SQ)에 따라 가변됨에 따라 실제 동기 큐에 대응하는 읽기 또는 쓰기가 실행되는 시점에 최적의 메모리 접근 조건이 설정될 수 있다. 더불어, CPU(110)의 처리 속도의 지원으로 처리를 대기중인 메모리 접근 요청들에 대한 효과적인 처리가 가능하다.
도 9는 본 발명의 제 2 실시 예에 따른 동기 큐의 수에 대응하는 동적 전압 주파수 스케일링(DVFS) 모드를 보여주는 표이다. 도 8을 참조하면, 긴급한 처리가 필요한 동기 큐의 수(SQ)에 따라 시스템 온 칩(SoC)의 동적 전압 주파수 스케일링(DVFS) 모드가 조정될 수 있다.
본 발명의 장치 드라이버(137) 또는 QoS 제어 모듈(138)에 의해서 관리되는 DVFS 레벨은 예시적으로 4개의 모드로 구분되는 것으로 가정한다. 하지만, DVFS 레벨은 2개 또는 3개의 모드들 또는 5개 이상의 모드들로 변화될 수 있음은 잘 이해될 것이다.
동기 큐의 수(SQ)가 1 이상이고 15 이하인 경우에, QoS 제어 모듈(138)은 디폴트 모드(Default)를 선택할 것이다. 디폴트 모드에서는 시스템 온 칩(SoC)의 구동 전압은 0.9V, 구동 클록의 주파수는 1.2 GHz로 설정된다. 동기 큐의 수(SQ)가 16 이상이고 30 이하인 경우에, QoS 제어 모듈(138)은 DVFS 레벨로 제 1 모드(1st mode)를 선택할 것이다. 제 1 모드(1st mode)의 DVFS 레벨에서 시스템 온 칩(SoC)의 구동 전압은 1.0 V, 구동 클록의 주파수는 1.9 GHz로 설정된다. 동기 큐의 수(SQ)가 31 이상이고 40 이하인 경우에, QoS 제어 모듈(138)은 DVFS 레벨로 제 2 모드(2nd mode)를 선택할 것이다. DVFS의 제 2 모드(2nd mode)에서는 시스템 온 칩(SoC)의 구동 전압은 1.1 V, 구동 클록의 주파수는 2.3GHz로 설정된다. 동기 큐의 수(SQ)가 41 이상인 경우에, QoS 제어 모듈(138)은 DVFS 레벨로 제 3 모드(3rd mode)를 선택할 것이다. DVFS의 제 3 모드(3rd mode)에서는 시스템 온 칩(SoC)의 구동 전압은 1.2 V, 구동 클록의 주파수는 2.5 GHz로 설정된다. 동기 큐의 수(SQ)에 따른 DVFS 레벨들은 상술한 디폴트 모드(Default)와 제 1 내지 제 3 모드들(1st mode~3rd mode)보다 낮거나 높은 스텝을 더 포함할 수 있다.
상술한 DVFS 레벨들은 레벨이 증가할수록 시스템 온 칩(SoC)의 동작 주파수 및 구동 전압의 레벨이 증가한다. 따라서, 사용자에 의해서 요청된 동작을 수행하는데 소요되는 순간 전력의 소모량은 증가할 수 있다. 하지만, 시스템 온 칩(SoC)의 연산 속도 증가 및 저장 장치(170)로의 접근 속도의 증가에 따라, 동기 큐(134)에 누적된 메모리 접근 요청들은 신속히 소진될 수 있다. 따라서, 모바일 장치(100)의 전체적인 전력 소모량의 증가 없이도 사용자에게 높은 응답 속도를 제공할 수 있을 것이다.
도 10은 본 발명의 제 2 실시 예에 따른 동기 큐의 수(SQ)에 따른 DVFS 조정 방법을 보여주는 순서도이다. 도 10을 참조하여, 동기 큐 수(SQ)의 변화에 따라 서로 다른 모드의 DVFS 설정치로 변경되는 실시 예가 설명될 것이다. 장치 드라이버(137)에 의해서 입출력 스케줄러(135)의 버퍼 상태를 체크하는 것으로 본 발명의 DVFS 제어 동작이 시작된다.
S210 단계에서, 장치 드라이버(137)는 현재 입출력 스케줄러(135)에서 유지되는 동기 큐(134, 도 2 참조)에 포함되는 현재 동기 큐의 수(SQ_present)를 검출할 것이다. 만일, 현재 동기 큐의 수(SQ_present)가 1 보다 적은 경우(No 방향), 절차는 S220 단계로 이동할 것이다. 하지만, 현재 동기 큐의 수(SQ_present)가 하나 이상인 것으로 판단되면(Yes 방향), 절차는 S230 단계로 이동할 것이다.
S220 단계에서, 장치 드라이버(137)는 DVFS 제어를 위해서 구성되는 상태 테이블(Status table)에서 현재 DVFS 레벨을 디폴트(Default)로 리셋하고, 현재 동기 큐의 수(SQ)를 리셋할 것이다. 그리고 장치 드라이버(137)는 현재의 동기 큐의 수(SQ_present)를 참조한 DVFS 제어 동작을 종료할 것이다. 도시된 순서도에서는 1회의 동기 큐의 수(SQ) 검출에 대한 DVFS 제어 동작만을 기술하였다. 그러나, 동기 큐의 수(SQ)에 대한 검출 동작은 특정 주기로, 또는 DVFS 레벨의 조정이 이루어진 이후 특정 시간 이내에 수행될 수 있을 것이다.
S230 단계에서, 장치 드라이버(137)는 이전의 동기 큐(SQ_previous)의 검출 동작에 따른 DVFS 제어 동작이 활성화되어 있는지를 검출한다. 이전의 DVFS 제어 동작이 비활성화된 상태인 경우(No 방향), 절차는 S240 단계로 이동하게 될 것이다. 만일, 이전의 DVFS 제어 동작이 활성화된 상태인 경우(Yes 방향), 절차는 S270 단계로 이동하게 될 것이다. 이전의 DVFS 제어 동작의 활성화 여부를 체크하는 이유는, 이전의 DVFS 제어 동작의 완료 여부에 따라 현재의 DVFS 제어 동작에 적용될 DVFS 레벨이 결정되기 때문이다.
S240 단계에서, 장치 드라이버(137)는 현재의 동기 큐의 수(SQ_present)에 따른 DVFS 레벨을 선택 및 적용한다. 예를 들면, 현재 검출된 동기 큐의 수(SQ_present)가 25인 경우, 도 8의 테이블 기준으로 제 1 모드(1st mode)의 DVFS가 선택 및 적용될 것이다. 현재 동기 큐의 수(SQ_present)는 동기 큐(134)에 누적된 읽기 또는 쓰기 요청의 수에 대응한다.
S250 단계에서, 장치 드라이버(137)는 선택된 DVFS 레벨에 따라 시스템 온 칩(SoC)의 제반 IP들 및 시스템 인터커넥터(190) 등의 클록 주파수 및 구동 전압을 조정하기 위한 제어 동작을 수행할 것이다. 예를 들면, 장치 드라이버(137)는 제 1 모드(1st mode)에 대응하는 1.5V의 구동 전압을 생성하도록 성능 컨트롤러(140)에게 지시할 것이다. 성능 컨트롤러(140)는 전압 레귤레이터(Voltage regulator)를 제어하여 시스템 온 칩(SoC)을 구동하기 위한 전압을 1.5V로 변경하게 될 것이다. 더불어, 장치 드라이버(137)는 제 1 모드(1st mode)에 대응하는 2.0GHz의 클록 주파수를 생성하도록 성능 컨트롤러(140)에게 지시할 것이다. 성능 컨트롤러(140)는 모바일 장치(100)에 구비되는 위상 고정 루프(Phase Lock Loop: PLL)와 같은 클록 생성 회로의 주파수를 조정하여, 구동 클록의 주파수를 2.0GHz로 조정할 것이다.
S260 단계에서, 장치 드라이버(137)는 현재 결정된 DVFS 레벨이 적용된 시점, 그리고 현재 적용된 DVFS 레벨을 상태 테이블(Status table)에 업데이트할 것이다. 상태 테이블(Status table)에 저장된 현재 적용된 DVFS 레벨과 적용 시점에 대한 정보는, 이후에 특정 시간 후에 재개되는 DVFS 레벨 제어 동작에 참조될 것이다.
S270 단계에서, 장치 드라이버(137)는 이전 동기 큐의 수(SQ_previous)에 의해서 활성화된 DVFS 레벨의 적용 시간이 제한 시간(TL)을 경과했는지를 검출한다. 제한 시간(TL)은 이전의 DVFS 레벨이 활성화된 시점으로부터 현재 결정된 DVFS 레벨로 변경할 수 있는 시간을 의미한다. 제한 시간(TL)의 길이는 예시적으로 타임아웃(timeout)의 0.5배로 설정될 수 있다.
만일, 이전 동기 큐(SQ_previous)에 의해서 활성화된 DVFS 레벨이 시작된 후로부터 제한 시간(TL)이 경과되지 않았다면(No 방향), 현재 동기 큐의 수(SQ_present)에 근거한 DVFS 레벨의 조정 절차는 종료된다. 왜냐하면, 이전 동기 큐의 수(SQ_previous)에 근거한 DVFS 레벨로 누적된 접근 요청들을 처리중인 상황에서 DVFS 레벨을 성급히 변경할 필요는 없기 때문이다. 반면, 이전 동기 큐의 수(SQ_previous)에 의해서 활성화된 DVFS 레벨이 시작된 후로부터 제한 시간(TL)이 경과 되었다면(Yes 방향), 절차는 현재 동기 큐의 수(SQ_present)에 근거한 DVFS 레벨을 조정하기 위한 S280 단계로 이동한다. 이전 동기 큐의 수(SQ_previous)에 근거한 DVFS 레벨의 적용 시간이 충분한 것으로 판단할 수 있기 때문이다.
S280 단계에서, 장치 드라이버(137)는 이전 동기 큐의 수(SQ_previous)와 현재 동기 큐의 수(SQ_present)를 비교한다. 장치 드라이버(137)는 별도로 관리되는 상태 테이블을 참조하여 이전 동기 큐의 수(SQ_previous)와 현재 동기 큐의 수(SQ_present)를 비교할 것이다. 비교 결과, 현재 동기 큐의 수(SQ_present)가 이전의 동기 큐의 수(SQ_previous)에 비해서 감소(Decrease)된 것으로 판단되면, 절차는 S290 단계로 이동한다. 반면, 현재 동기 큐의 수(SQ_present)가 이전의 동기 큐(SQ_previous)에 비해서 증가(Increase)되거나 동일한 것으로 판단되면, 절차는 S295 단계로 이동한다.
S290 단계에서, 장치 드라이버(137)는 이전 동기 큐의 수(SQ_previous)에 의해서 활성화된 DVFS 레벨의 레벨을 감소시킬 것이다. 왜냐하면, 이전 동기 큐의 수(SQ_previous)에 의해서 활성화된 DVFS 레벨에 따라 동기 큐의 수(SQ)가 감소한 상태이기 때문이다. 반면, S295 단계에서, 장치 드라이버(137)는 이전 동기 큐의 수(SQ_previous)에 의해서 활성화된 DVFS 레벨의 레벨을 증가시킬 것이다. 이전 동기 큐의 수(SQ_previous)에 근거한 DVFS 레벨 상태에서 처리해야 할 접근 요청의 수가 증가하여 더 높은 처리 속도가 요구되는 상황이기 때문이다.
이상에서는, 동기 큐의 수에 따라 시스템 온 칩(SoC)의 DVFS 레벨을 가변하여 모바일 장치(100)의 동적 성능을 제어하는 방법이 설명되었다. 동기 큐의 수(SQ)에 따라 시스템 온 칩(SoC)의 처리 속도를 조정하는 경우, 동기 큐(134)에 스케줄링된 접근 요청들이 실제로 처리되는 시점에서 시스템 온 칩(SoC)의 성능이 최적으로 설정될 수 있다. 따라서, 사용자가 느끼는 성능 또는 서비스 품질(QoS)의 최적화가 가능하다.
도 11은 도 10의 제어 방법에 따라 동기 큐의 증감을 보여주는 타이밍도이다. 도 11을 참조하면, 아직 처리되지 않은 동기 큐의 수(SQ)에 따라 시스템 온 칩(SoC)의 DVFS 레벨이 조정된다. 따라서, 예정된 프로세스에 최적화된 시스템 구동 환경으로 모바일 장치(100)를 설정할 수 있다. 최초(0 시점)에는 동기 큐의 수(SQ)가 5이고, DVFS 레벨이 디폴트 모드(default mode)인 것으로 가정한다.
t1 시점에서, 사용자가 동영상 파일의 재생을 요청한 것으로 가정한다. 그러면 동영상 파일의 재생을 수행할 응용 프로그램이 실행되고, 실행된 응용 프로그램에 의하나 동영상 파일을 로드하기 위한 복수의 읽기 요청 및 쓰기 요청이 발생할 것이다. 이때, 동기 큐의 수(SQ)가 증가할 수 있을 것이다. 하지만, 동영상 파일의 재생이라는 단일 태스크를 처리하는데에는 디폴트 모드(default mode)의 DVFS 조건으로도 부족함이 없을 것이다. 따라서, 급격한 동기 큐(SQ)의 증가 현상은 나타나지 않을 것이다.
t2 시점에서, 사용자에 의해서 갤러리 프로그램(Gallery program)이 실행되었다. 이때에는 이미 실행된 동영상의 재생과 이미지 파일의 로드라는 멀티 프로세싱이 필요하다. 따라서, 멀티 프로세싱을 위한 긴급한 쓰기나 읽기 요청의 수는 급격하게 증가하게 될 것이다. 그리고 디폴트 모드(default mode)의 DVFS 조건에서는 급격히 증가하는 읽기 또는 쓰기 요청을 처리하기 어려워 점점 입출력 스케줄러(135)에서 관리되는 동기 큐의 수(SQ)는 증가하게 된다.
동기 큐의 수(SQ)가 43개로 증가한 t3 시점에서, 장치 드라이버(137)는 DVFS를 제 3 모드(3rd mode)로 변경한다. 그러면, 시스템 온 칩(SoC)의 동작 주파수는 3.0GHz로 증가할 수 있다. 여기서, 시스템 온 칩(SoC)의 동작 주파수는 CPU(110)의 클록 주파수를 의미한다. 하지만, 동작 주파수는 시스템 온 칩(SoC)를 구성하는 다양한 IP들의 동작 주파수일 수도 있음은 잘 이해될 것이다. 그리고 제 3 모드(3rd mode)의 DVFS 설정에 따라 시스템 온 칩(SoC)의 동작 전압이 2.0V로 증가하게 될 것이다. 제 3 모드(3rd mode)의 DVFS 설정에 의해서 동기 큐의 수(SQ)는 점차 감소하게 될 것이다. 도시된 바와 같이 동기 큐의 수(SQ)는 43개, 25개, 21개로 점차 감소하게 될 것이다.
t3 시점으로부터 제한 시간(TL: Time Limit)이 경과하면, 현재 동기 큐의 수(SQ_present)가 검출되고, DVFS 레벨은 변경 가능하게 된다. 따라서, t4 시점에서 장치 드라이버(137)는 입출력 스케줄러(135)에서 관리되는 동기 큐의 수(SQ)를 참조하여 DVFS를 제 2 모드(2nd mode)로 변경하게 될 것이다. t4 시점에서 검출된 동기 큐의 수(SQ)는 앞서 도시된 제 2 모드(2nd mode)의 DVFS에 대응하기 때문이다. 장치 드라이버(137)는 제 2 모드(2nd mode)의 DVFS를 적용하기 위해서 시스템 온 칩(SoC)의 동작 주파수를 2.5GHz, 구동 전압의 레벨을 1.7V로 조정하도록 성능 컨트롤러(140)를 제어할 것이다.
t5 시점에서 사용자는 또 다른 동영상 파일의 재생을 실행한 것으로 가정하자. 그러면, 이미 실행중인 동영상 파일의 재생, 갤러리 프로그램의 실행과 더불어 추가적인 동영상 파일의 재생을 위해 3개의 태스크들이 동시에 실행되어야 한다. 따라서, 3개의 멀티 태스킹을 위한 읽기와 쓰기 요청들은 급격하게 증가하게 될 것이다. 이러한 읽기와 쓰기 요청의 증가는 결국 동기 큐의 수(SQ)의 증가로 나타난다. 하지만, t5 시점은 제 2 모드(2nd mode)의 DVFS 적용 시점으로부터 제한 시간(TL)이 경과하기 이전이다. 따라서, 장치 드라이버(137)는 t6 시점까지는 동기 큐의 수(SQ)만을 모니터링하게 될 것이다. 동기 큐의 수(SQ)는 t6 시점에는 45개에 도달한다.
t6 시점에서는, t4 시점으로부터 제한 시간(TL)이 경과하였기 때문에 현재 동기 큐의 수(SQ)에 대응하는 DVFS 레벨의 변경이 가능하다. 현재 동기 큐의 수(SQ)가 45에 대응하므로, 장치 드라이버(137)는 DVFS를 제 3 모드(3rd mode)로 변경하게 될 것이다. 장치 드라이버(137)는 제 3 모드(3rd mode)의 DVFS를 적용하기 위해서 시스템 온 칩(SoC)의 동작 주파수를 3.0GHz, 구동 전압의 레벨을 2.0V로 변경할 것이다. 향상된 시스템 온 칩(SoC)의 처리 속도에 따라, 동기 큐의 수(SQ)는 점차 줄어들 것이다. t7 시점에서는 다시 동기 큐의 수(SQ)가 25개로 감소하였다.
t7 시점에서, 현재 동기 큐의 수(SQ)가 25로 검출된다. 따라서, 장치 드라이버(137)는 DVFS 레벨을 제 1 모드(1st mode)로 변경하게 될 것이다. 그리고 t7 시점으로부터 제한 시간(TL)이 경과한 t8 시점에서 장치 드라이버(137)는 현재의 동기 큐의 수(SQ) 5에 대응하는 디폴트 모드(default mode)의 DVFS를 설정할 것이다.
이상에서는 아직 처리되지 못한 동기 큐의 수(SQ)에 따라 시스템 온 칩(SoC)의 DVFS를 조정하는 방법이 설명되었다. 시스템 온 칩(SoC)의 성능이 처리해야하는 요청들의 대기열 수(예를 들면, 동기 큐)에 따라 가변될 수 있다. 따라서, 긴급히 처리되어야 할 요청들에 대한 작업량에 따라 모바일 장치(100)의 동작 조건이 설정될 수 있다. 이러한 동작 조건에 대한 동적 설정에 따라 사용자의 요청에 대한 응답 시간을 최소화시킬 수 있고, 사용자의 체감 성능을 극대화할 수 있다.
도 12는 본 발명의 제 3 실시 예를 설명하기 위한 블록도이다. 도 12를 참조하면, 이종(Heterogeneous) 멀티-코어(Multi-Core)로 구성되는 CPU(110)가 예시적으로 도시되어 있다. 하지만, 동종(Homogenous)의 멀티-코어(Multi-Core)로 구성되는 CPU(110)에 대해서도 제 3 실시 예는 용이하게 적용될 수 있을 것이다.
CPU(110)는 2가지 이상의 이종의 멀티-코어들을 포함할 수 있다. 예시적으로 CPU(100)는 제 1 멀티-코어(MC1, 112)와 제 2 멀티-코어(MC2, 114)를 포함할 수 있다. 본 발명의 모바일 장치(100)는 동기 큐의 수(SQ)에 따라 동기 큐에 누적된 프로세스를 처리하기 위해, 제 1 내지 제 2 멀티-코어들(112, 114) 중 적어도 하나를 선택할 수 있다.
제 1 멀티-코어(112)는 상대적으로 처리 속도는 낮지만, 높은 전력 효율을 갖는 코어들(LCore_1, LCore_2)을 포함한다. 코어들(LCore_1, LCore_2) 각각은 독립적인 연산 처리가 가능하다. 그리고 코어들(LCore_1, LCore_2) 각각은 상대적으로 낮은 구동 주파수에서 할당되는 연산을 수행할 수 있다.
제 2 멀티-코어(114)는 상대적으로 높은 처리 속도를 제공하지만, 전력의 소모가 큰 코어들(BCore_1, BCore_2)을 포함한다. 코어들(BCore_1, BCore_2)도 각각 독립적인 연산이 가능하다. 그리고 코어들(BCore_1, BCore_2) 각각은 상대적으로 높은 구동 주파수에서 연산을 수행할 수 있다.
본 발명의 성능 컨트롤러(140)는 장치 드라이버(137)의 제어에 따라 상술한 CPU(110)에서 활성화되는 코어들을 선택할 수 있다. 예를 들면, 검출된 동기 큐의 수(SQ)에 따라 활성화되는 코어들의 수를 가변할 수 있다. 동기 큐의 수(SQ)가 비교적 적을 경우에는 제 1 멀티-코어(MC1)의 코어들(LCore_1, LCore_2) 중 적어도 하나가 활성화될 수 있다. 그러나, 동기 큐의 수(SQ)가 기준치 이상으로 증가한 상황에서는 제 2 멀티-코어(114)의 코어들(BCore_1, BCore_2) 중 적어도 하나를 활성화시킬 수 있을 것이다. 그리고 동기 큐의 수(SQ)가 급격히 증가하는 상황에서는 제 1 멀티-코어(MC1)의 코어들(LCore_1, LCore_2)과 제 2 멀티-코어(MC2)의 코어들(BCore_1, BCore_2)이 모두 활성화될 수도 있을 것이다.
하지만, 동기 큐의 수(SQ)에 따라 코어들을 선택적으로 활성화하는 방식은 상술한 설명에만 국한되지 않는다. 예를 들면, 동기 큐의 수(SQ)가 기준치 미만인 상태에서는 제 1 멀티-코어(MC1)만을 활성화하고, 동기 큐의 수(SQ)가 기준치 이상으로 증가하는 상황에서는 신속한 처리를 위해 제 2 멀티-코어(MC2)만을 활성화하도록 구현될 수도 있다. 또는, 동기 큐의 수(SQ)가 기준치 미만인 상태에서는 코어들(LCore_1, BCore_1)만을 활성화하고, 동기 큐의 수(SQ)가 기준치 이상으로 증가하는 상황에서는 신속한 처리를 위해 추가적으로 코어들(LCore_2, BCore_2)을 활성화하는 방식을 사용할 수도 있을 것이다.
도 13은 본 발명의 제 3 실시 예에 따른 동기 큐의 수에 대응하는 CPU(110)의 구동 모드를 보여주는 표이다. 도 12를 참조하면, 동기 큐(SQ)들의 수에 따라 CPU(110)의 멀티-코어들의 구동 방식이 나누어질 수 있다. 여기서, 이종 멀티-코어 제어 방식이 CPU(110)의 제어 모드로 설명될 것이나, 본 발명은 여기에 국한되지 않는다.
본 발명의 장치 드라이버(137)에 의해서 관리되는 CPU 모드는 예시적으로 4개로 구분되는 것으로 가정한다. 하지만, CPU 모드는 2개나 3개 또는 5개 이상의 모드들로 다변화될 수 있음은 잘 이해될 것이다.
동기 큐의 수(SQ)가 1 이상이고 5 이하인 경우에, 장치 드라이버(137)는 리틀 모드(Little mode)로 CPU(110)를 설정할 것이다. 리틀 모드(Little mode)에서 장치 드라이버(137)는 제 1 멀티-코어(MC1)에 포함되는 코어들(LCore_1, LCore_2)만을 활성화시킬 것이다. 반면, 동기 큐의 수(SQ)가 6 이상이고 15 이하인 경우, 장치 드라이버(137)는 제 1 빅 모드(1st Big mode)로 CPU(110)를 설정할 것이다. 제 1 빅 모드(1st Big mode)에서 장치 드라이버(137)는 제 2 멀티-코어(MC2)에 포함되는 코어들(LCore_1, LCore_2) 중에서 하나의 코어(BCore_1)만을 활성화시킬 것이다.
동기 큐의 수(SQ)가 16 이상이고 30 이하인 경우, 장치 드라이버(137)는 제 2 빅 모드(2nd Big mode)로 CPU(110)를 설정할 것이다. 제 2 빅 모드(2nd Big mode)에서 장치 드라이버(137)는 제 2 멀티-코어(MC2)에 포함되는 코어들(LCore_1, LCore_2) 모두를 활성화시킬 것이다. 동기 큐의 수(SQ)가 31 이상인 경우, 장치 드라이버(137)는 제 3 빅 모드(3rd Big mode)로 CPU(110)를 설정할 것이다. 제 3 빅 모드(3rd Big mode)에서 장치 드라이버(137)는 제 1 멀티-코어(MC1)와 제 2 멀티-코어(MC2)에 포함되는 모든 코어들(LCore_1, LCore_2, BCore_1, BCore_2)을 활성화시킬 것이다.
상술한 CPU 모드들에 따라 코어들이 선택되는 방식은 예시적일 뿐이다. 동기 큐의 수(SQ)에 따라 선택되는 코어들의 단위와 수는 다양하게 변경될 수 있을 것이다. 예를 들면, 동기 큐의 수(SQ)에 따라 스위칭되는 코어 단위는 멀티-코어 단위로 발생할 수도 있다. 즉, 동기 큐의 수(SQ)에 따라 제 1 멀티-코어(MC1)는 항상 활성화된 상태에서 제 2 멀티-코어(MC2)만이 선택적으로 활성화되도록 설정될 수도 있을 것이다.
도 14는 본 발명의 제 3 실시 예에 따른 동기 큐의 크기에 따른 CPU 모드를 변경하는 방법을 보여주는 순서도이다. 도 14를 참조하여, 동기 큐의 수(SQ) 변화에 따라 멀티-코어로 구성되는 CPU(110)의 구동 모드를 변경하는 실시 예가 설명될 것이다. 장치 드라이버(137) 또는 장치 드라이버(137)에 포함되는 QoS 제어 모듈(138)에 의해서 입출력 스케줄러(135)의 상태를 체크하는 것으로 본 발명의 CPU 모드의 제어 동작이 시작된다.
S310 단계에서, 장치 드라이버(137)는 입출력 스케줄러(135)에서 관리되는 현재 동기 큐의 수(SQ_present)를 검출할 것이다. 만일, 현재 동기 큐의 수(SQ_present)가 0인 경우(No 방향), 절차는 S320 단계로 이동할 것이다. 하지만, 현재 동기 큐의 수(SQ_present)가 하나 이상인 것으로 판단되면(Yes 방향), 절차는 S330 단계로 이동할 것이다.
S320 단계에서, 장치 드라이버(137)는 CPU 모드의 제어를 위해서 구성되는 상태 테이블(Status table)에서 현재 CPU 모드를 리틀 모드(Little mode)로 리셋하고, 동기 큐의 수(SQ)도 리셋할 것이다. 그리고 장치 드라이버(137)는 현재 동기 큐의 수(SQ_present)를 참조한 CPU 설정 동작을 종료할 것이다. 도시된 순서도에서는 1회의 동기 큐의 수(SQ)에 대한 CPU를 설정하는 순서만을 기술하였다. 그러나, 동기 큐(SQ)의 검출 동작은 특정 주기로, 또는 CPU 모드의 조정이 이루어진 이후 특정 시간 이내에 수행되도록 설정될 수 있을 것이다.
S330 단계에서, 장치 드라이버(137)는 동기 큐(SQ)에 현재 대기중인 요청이 적어도 하나 존재하는 상황에서 이전의 동기 큐(SQ_previous)의 검출 동작에 따라 선택된 빅 모드들 중 어느 하나가 활성화되어 있는지를 검출한다. 이전의 CPU 모드가 리틀 모드인 경우(Little 방향), 절차는 S340 단계로 이동하게 될 것이다. 만일, 이전에 설정된 CPU 모드가 복수의 빅 모드들 중 어느 하나인 경우(Big 방향), 절차는 S370 단계로 이동하다. 이전의 CPU 모드를 체크하는 이유는, 이전의 CPU 모드에 따라 현재의 CPU 모드가 결정될 수도 있기 때문이다.
S340 단계에서, 장치 드라이버(137)는 현재의 동기 큐의 수(SQ_present)에 따른 CPU 모드를 적용한다. 예를 들면, 현재 검출된 동기 큐(SQ_present)의 수가 25인 경우, 도 13의 테이블 기준으로 제 2 빅 모드(2nd Big mode)가 선택 및 적용될 것이다.
S350 단계에서, 장치 드라이버(137)는 선택된 CPU 모드에 따라 시스템 온 칩(SoC)에 포함되는 CPU(110)의 코어를 선택하여 활성화할 것이다. 예를 들면, 장치 드라이버(137)는 현재 동기 큐의 수(SQ_present)가 25인 경우에 제 2 빅 모드(2nd Big mode)에 대응하는 코어들을 활성화할 것이다. 즉, 장치 드라이버(137)는 제 2 멀티-코어(MC2)에 포함되는 코어들(BCore_1, BCore_2)을 활성화할 것이다.
S360 단계에서, 장치 드라이버(137)는 현재 결정된 CPU 모드가 적용된 시점, 그리고 적용된 CPU 모드를 상태 테이블(Status table)에 업데이트할 것이다. 상태 테이블(Status table)에 저장된 현재 적용된 CPU 모드와 적용 시점에 대한 정보는, 이후에 특정 시간 후에 재개되는 CPU 모드의 조정 동작에 참조될 것이다.
S370 단계에서, 장치 드라이버(137)는 이전 동기 큐의 수(SQ_previous)에 의해서 활성화된 CPU 모드의 적용 시간이 제한 시간(TL)을 경과했는지를 검출한다. 여기서, 타임아웃(Timeout)은 결정된 CPU 모드가 적용되는 최대 허용 시간에 대응한다. 그리고 제한 시간(TL)은 이전의 CPU 모드가 활성화된 시점으로부터 현재 결정된 CPU 모드로 변경할 수 있는 시간을 의미한다. CPU 모드가 적용된 이후, 제한 시간이 경과하기 이전에는 CPU 모드의 변경은 허용되지 않는다.
만일, 이전 동기 큐(SQ_previous)에 의해서 활성화된 CPU 모드가 시작된 후로부터 제한 시간(TL)이 경과되지 않았다면(No 방향), 현재의 동기 큐의 수(SQ_present)에 근거한 CPU 모드의 변경 절차는 종료된다. 왜냐하면, 이전의 이전 동기 큐의 수(SQ_previous)를 참조하여 동기 큐(134)에 누적된 접근 요청들이 처리중인 상황에서 현재의 동기 큐의 수(SQ_present)에 의한 CPU 모드 변경을 성급히 시작할 필요는 없기 때문이다. 반면, 이전 동기 큐의 수(SQ_previous)에 의해서 활성화된 CPU 모드가 시작된 후로부터 제한 시간(TL)이 경과되었다면(Yes 방향), 절차는 현재의 동기 큐의 수(SQ_present)에 근거한 CPU 모드를 활성화하기 위한 S380 단계로 이동한다. 이전 동기 큐의 수(SQ_previous)에 대응하는 CPU 모드의 적용 시간이 충분한 것으로 판단할 수 있기 때문이다.
S380 단계에서, 장치 드라이버(137)는 이전 동기 큐의 수(SQ_previous)와 현재 동기 큐의 수(SQ_present)를 비교한다. 장치 드라이버(137)는 별도로 관리되는 상태 테이블을 참조하여 이전의 동기 큐의 수(SQ_previous)를 검출하고, 현재의 동기 큐의 수(SQ_present)를 비교할 것이다. 비교 결과, 현재의 동기 큐의 수(SQ_present)가 이전의 동기 큐(SQ_previous)에 비해서 감소(Decrease)된 것으로 판단되면, 절차는 S390 단계로 이동한다. 반면, 현재의 동기 큐의 수(SQ_present)가 이전의 동기 큐(SQ_previous)에 비해서 증가(Increase)된 것으로 판단되면, 절차는 S395 단계로 이동한다. 현재의 동기 큐의 수(SQ_present)가 이전의 동기 큐(SQ_previous)와 동일한 경우에도, 절차는 S395 단계로 이동할 것이다.
S390 단계에서, 장치 드라이버(137)는 이전 동기 큐(SQ_previous)에 따라 설정된 CPU 모드보다 레벨을 감소시킬 것이다. 왜냐하면, 이전 동기 큐의 수(SQ_previous)에 의해서 활성화된 CPU 모드에 따라 동기 큐(134)에 누적된 요청들의 수가 감소한 상태이기 때문이다. 반면, S395 단계에서, 장치 드라이버(137)는 이전 동기 큐의 수(SQ_previous)에 의해서 설정된 CPU 모드의 레벨을 증가시킬 것이다. 이전 동기 큐의 수(SQ_previous)에 의해서 설정된 CPU 모드에 따라 동기 큐(134)에 누적된 요청의 수가 증가하여 더 높은 처리 속도가 요구되는 상황이기 때문이다.
이상에서는, 동기 큐의 수(SQ)에 따라 시스템 온 칩(SoC)의 CPU 모드를 가변하여 모바일 장치(100)의 성능을 제어하는 방법이 설명되었다. 동기 큐의 수(SQ)에 따라 시스템 온 칩(SoC)의 처리 속도를 조정하는 경우, 실제로 동기 큐(134)에 스케줄링된 접근 요청들의 실행 시점에 시스템 온 칩(SoC)이 최적의 성능으로 설정될 수 있다. 따라서, 사용자가 느끼는 성능 또는 서비스 품질(QoS)의 최적화가 가능하다.
여기서, CPU 모드와 DVFS 레벨을 개별적으로 적용하는 실시 예들이 설명되었으나, 본 발명은 여기에 국한되지 않는다. 예를 들면, CPU 모드가 DVFS 레벨과 결합하여 적용될 수도 있을 것이다. 즉, 구동 주파수의 크기에 따라 CPU에서 활성화되는 코어들의 수 또는 코어들의 종류가 달라질 수 있을 것이다.
도 15는 본 발명의 제 4 실시 예에 따른 동기 큐의 수(SQ)에 대응하는 시스템 성능 레벨을 보여주는 표이다. 도 15를 참조하면, 동기 큐의 수(SQ)에 따라 최적의 성능 조건을 제공하는 시스템 성능 레벨이 도시되어 있다. 여기서, 시스템 성능 레벨은 예시적으로 QoS 레벨, DVFS 레벨, 그리고 CPU 모드들이 조합된 동작 모드에 해당한다. 즉, 특정 동기 큐의 수(SQ)에서 최적의 성능을 제공하기 위한 QoS 레벨, DVFS 레벨, 그리고 CPU 모드들 중 적어도 하나가 활성화되도록 설정될 수 있음을 의미한다.
본 발명의 장치 드라이버(137)에 의해서 관리되는 시스템 성능 레벨은 예시적으로 6개로 구분되는 것으로 가정한다. 하지만, CPU 모드는 2개 이상 5개 이하로, 또는 7개 이상의 모드들로 다변화될 수 있음은 잘 이해될 것이다.
동기 큐의 수(SQ)가 1 이상이고 5 이하인 경우에, 장치 드라이버(137)는 시스템의 동작 성능을 제 1 성능 레벨(level_1)로 설정할 것이다. 제 1 성능 레벨(level_1)이 시스템 성능 레벨의 디폴트 레벨로 제공될 수 있다. 하지만, 제 1 성능 레벨(level_1)보다 낮은 성능에 해당하는 QoS 레벨, DVFS 레벨, 그리고 CPU 모드들의 조합을 디폴트 레벨(Default level)로 설정할 수도 있다. 제 1 성능 레벨에서, CPU 모드는 코어들(LCore_1, LCore_2)만이 활성화되는 리틀 모드(Little mode)로 설정된다. 그리고 제 1 레벨(level_1)에서 DVFS 레벨은 제 1 레벨(1st DVFS level)로 설정된다. 제 1 레벨(level_1)에서, QoS 레벨은 제 1 스텝으로 설정될 것이다.
동기 큐의 수(SQ)가 6 이상이고 10 이하인 경우에, 장치 드라이버(137)는 시스템의 동작 성능을 제 2 성능 레벨(level_2)로 설정할 것이다. 제 2 성능 레벨(level_2)에서, CPU 모드는 코어들(LCore_1, LCore_2)만이 활성화되는 리틀 모드(Little mode)로 설정된다. 그리고 제 2 성능 레벨(level_2)에서, DVFS 레벨은 제 2 레벨(2nd DVFS level)로 설정된다. 제 2 성능 레벨(level_2), QoS 레벨은 제 2 스텝으로 설정될 것이다.
동기 큐의 수(SQ)가 11 이상이고 30 이하인 경우에, 장치 드라이버(137)는 시스템의 동작 성능을 제 3 성능 레벨(level_3)로 설정할 것이다. 제 3 성능 레벨(level_3)에서, CPU 모드는 코어들(LCore_1, LCore_2)만이 활성화되는 리틀 모드(Little mode)로 설정된다. 그리고 제 3 성능 레벨(level_3)에서, DVFS 레벨은 최대 레벨(Max DVFS level)로 설정된다. 제 3 성능 레벨(level_3)에서, QoS 레벨은 최대 스텝(Max QoS step)으로 설정될 것이다.
동기 큐의 수(SQ)가 31 이상이고 60 이하인 경우에, 장치 드라이버(137)는 시스템의 동작 성능을 제 4 성능 레벨(level_4)로 설정할 것이다. 제 4 성능 레벨(level_4)에서, CPU 모드는 코어들(BCore_1, BCore_2)이 활성화되는 빅 모드(Big mode)로 설정된다. 그리고 제 4 성능 레벨(level_4)에서, DVFS 레벨은 제 1 레벨(1st DVFS level)로 설정된다. 제 4 성능 레벨(level_4)에서, QoS 레벨은 제 1 스텝으로 설정될 것이다.
동기 큐의 수(SQ)가 61 이상이고 100 이하인 경우에, 장치 드라이버(137)는 시스템의 동작 성능을 제 5 성능 레벨(level_5)로 설정할 것이다. 제 5 성능 레벨(level_5)에서, CPU 모드는 코어들(BCore_1, BCore_2)이 활성화되는 빅 모드(Big mode)로 설정된다. 그리고 제 5 성능 레벨(level_5)에서, DVFS 레벨은 제 2 레벨(2nd DVFS level)로 설정된다. 제 5 성능 레벨(level_5)에서, QoS 레벨은 제 2 스텝(2nd QoS level)으로 설정될 것이다.
동기 큐의 수(SQ)가 100 이상인 경우에, 장치 드라이버(137)는 시스템의 동작 성능을 제 6 성능 레벨(level_6)로 설정할 것이다. 제 6 성능 레벨(level_6)에서, CPU 모드는 모든 코어들(LCore_1, LCore_2, BCore_1, BCore_2)이 활성화되는 빅 모드(Little mode)로 설정된다. 그리고 제 6 성능 레벨(level_6)에서, DVFS 레벨은 최대 레벨(Max DVFS level)로 설정된다. 제 6 성능 레벨(level_6)에서, QoS 레벨은 최대 스텝(Max QoS step)으로 설정될 것이다.
이상의 표에서는 동기 큐의 수(SQ)에 따라 최적의 성능을 구현하기 위한 시스템 성능 레벨이 예시적으로 설명되었다. 여기서, 시스템 성능 레벨은 QoS 레벨, DVFS 레벨, 그리고 CPU 모드 각각의 레벨이 가변되는 형태로 적용되었으나, 본 발명은 여기에 국한되지 않는다. 특정 동기 큐의 수(SQ)에서는 QoS 레벨, DVFS 레벨, 그리고 CPU 모드들 중 어느 하나가 활성화되거나, 두 가지 모드가 조합적으로 활성화될 수도 있을 것이다.
도 16은 본 발명의 제 4 실시 예에 따른 동기 큐의 수(SQ)에 따른 시스템 성능 레벨을 변경하는 방법을 보여주는 순서도이다. 도 16을 참조하여, 동기 큐의 수(SQ) 변화에 따라 QoS 레벨, DVFS 레벨, 그리고 CPU 모드들의 조합된 시스템 동작 모드를 조정하는 실시 예가 설명될 것이다. 장치 드라이버(137) 또는 QoS 제어 모듈(138)에 의해서 입출력 스케줄러(135)의 상태를 체크하는 것으로 본 발명의 시스템 성능 레벨의 제어 동작이 시작된다.
S410 단계에서, 장치 드라이버(137)는 입출력 스케줄러(135)에서 관리되는 현재 동기 큐의 수(SQ_present)를 검출할 것이다. 만일, 현재 동기 큐의 수(SQ_present)가 0인 경우(No 방향), 절차는 S420 단계로 이동할 것이다. 하지만, 현재 동기 큐의 수(SQ_present)가 하나 이상인 것으로 판단되면(Yes 방향), 절차는 S430 단계로 이동할 것이다.
S420 단계에서, 장치 드라이버(137)는 상태 테이블(Status table)에서 시스템 성능 레벨과 동기 큐의 수(SQ)를 리셋할 것이다. 장치 드라이버(137)는 현재 동기 큐의 수(SQ_present)를 참조한 시스템 성능 레벨의 설정 절차를 종료할 것이다. 도시된 순서도에서는 동기 큐의 수(SQ)를 검출하고 시스템 성능 레벨을 설정하는 1회의 사이클에 대해서만 설명하였다. 하지만, 동기 큐의 수(SQ)의 검출 동작은 특정 주기 또는 시스템의 성능이 급격히 낮아지는 시점에 트리거될 수도 있을 것이다.
S430 단계에서, 장치 드라이버(137)는 이전 동기 큐의 수(SQ_previous)에 따라 선택된 시스템 성능 레벨을 검출한다. 이전의 시스템 성능 레벨이 디폴트 모드(예를 들면, 제 1 성능 레벨)인 경우, 절차는 S440 단계로 이동하게 될 것이다. 만일, 이전에 설정된 이전의 시스템 성능 레벨이 제 2 성능 레벨(level_2) 이상인 경우, 절차는 S470 단계로 이동하다.
S440 단계에서, 장치 드라이버(137)는 이전에 선택된 시스템 성능 레벨에 관계없이 현재의 동기 큐의 수(SQ_present)에 따른 시스템 성능 모드를 적용한다. 예를 들면, 현재 검출된 동기 큐의 수(SQ_present)가 25인 경우, 도 15의 테이블 기준으로 제 3 성능 레벨(level_3)이 선택 및 적용될 것이다.
S450 단계에서, 장치 드라이버(137)는 선택된 시스템 성능 모드에 따라 시스템 온 칩(SoC)의 QoS 레벨, DVFS 레벨, 그리고 CPU 모드 중 적어도 하나를 활성화할 것이다. 예를 들면, 장치 드라이버(137)는 현재 동기 큐의 수(SQ_present)가 25인 경우에 제 3 성능 레벨(level_3)에 대응하는 시스템 성능 레벨을 적용할 것이다. 즉, 장치 드라이버(137)는 제 1 멀티-코어(MC1)에 포함되는 코어들(LCore_1, LCore_2)을 활성화할 것이다. 그리고 장치 드라이버(137)는 DVFS 레벨은 최대 레벨(Max DVFS level)로, QoS 레벨은 최대 스텝(Max QoS step)으로 설정할 것이다.
S460 단계에서, 장치 드라이버(137)는 현재 결정된 시스템 성능 모드가 적용된 시점, 그리고 적용된 시스템 성능 모드를 상태 테이블(Status table)에 업데이트할 것이다. 상태 테이블(Status table)에 저장된 현재 적용된 시스템 성능 모드와 적용 시점에 대한 정보는, 이후에 특정 시간 후에 재개되는 시스템 성능 모드의 조정 동작에 참조될 것이다.
S470 단계에서, 장치 드라이버(137)는 이전 동기 큐의 수(SQ_previous)에 의해서 활성화된 CPU 모드의 적용 시간이 제한 시간(TL)을 경과했는지를 검출한다. 제한 시간(TL)은 한번 선택된 시스템 성능 모드가 유지되어야 할 최소 시간에 대응한다. 따라서, 제한 시간(TL)은 이전의 시스템 성능 모드가 활성화된 시점으로부터 현재 결정된 시스템 성능 모드로 변경할 수 있는 시간을 의미하기도 한다. 시스템 성능 모드가 적용된 이후, 제한 시간(TL)이 경과하기 이전에는 시스템 성능 모드의 변경은 허용되지 않는다.
만일, 이전 동기 큐의 수(SQ_previous)에 의해서 선택된 시스템 성능 모드가 활성화된 시점부터 제한 시간(TL)이 경과되지 않았다면(No 방향), 현재의 동기 큐의 수(SQ_present)에 근거한 시스템 성능 모드의 변경 절차는 종료된다. 왜냐하면, 이전의 이전 동기 큐의 수(SQ_previous)를 참조하여 동기 큐(134)에 누적된 접근 요청들이 처리중인 상황에서 현재의 동기 큐의 수(SQ_present)에 의한 시스템 성능 모드의 변경을 성급히 시작할 필요는 없기 때문이다. 반면, 이전 동기 큐의 수(SQ_previous)에 의해서 활성화된 시스템 성능 모드가 시작된 후로부터 제한 시간(TL)이 경과되었다면(Yes 방향), 절차는 현재의 동기 큐의 수(SQ_present)에 근거한 시스템 성능 모드를 활성화하기 위한 S480 단계로 이동한다. 이전 동기 큐의 수(SQ_previous)에 대응하는 시스템 성능 모드의 적용 시간이 충분한 것으로 판단할 수 있기 때문이다.
S480 단계에서, 장치 드라이버(137)는 이전 동기 큐의 수(SQ_previous)와 현재 동기 큐의 수(SQ_present)를 비교한다. 장치 드라이버(137)는 별도로 관리되는 상태 테이블을 참조하여 이전의 동기 큐의 수(SQ_previous)를 검출하고, 현재의 동기 큐의 수(SQ_present)를 비교할 것이다. 비교 결과, 현재의 동기 큐의 수(SQ_present)가 이전의 동기 큐(SQ_previous)에 비해서 감소(Decrease)된 것으로 판단되면, 절차는 S390 단계로 이동한다. 반면, 현재의 동기 큐의 수(SQ_present)가 이전의 동기 큐(SQ_previous)에 비해서 동일하거나 증가(Increase)된 것으로 판단되면, 절차는 S495 단계로 이동한다.
S490 단계에서, 장치 드라이버(137)는 이전 동기 큐(SQ_previous)에 따라 설정된 시스템 성능 모드보다 레벨을 감소시킬 것이다. 왜냐하면, 이전 동기 큐의 수(SQ_previous)에 의해서 활성화된 시스템 성능 모드에 따라 동기 큐(134)에 누적된 요청들의 수가 감소한 상태이기 때문이다. 반면, S495 단계에서, 장치 드라이버(137)는 이전 동기 큐의 수(SQ_previous)에 의해서 설정된 시스템 성능 모드의 레벨을 증가시킬 것이다. 이전 동기 큐의 수(SQ_previous)에 의해서 설정된 시스템 성능 모드에 따라 동기 큐(134)에 누적된 요청의 수가 변하지 않거나 증가하여 더 높은 처리 속도가 요구되는 상황이기 때문이다.
이상에서는, 동기 큐의 수(SQ)에 따라 시스템 온 칩(SoC)의 시스템 성능 모드를 가변하여 모바일 장치(100)의 성능을 제어하는 방법이 설명되었다. 동기 큐의 수(SQ)에 따라 시스템 온 칩(SoC)의 처리 속도를 조정하는 경우, 실제로 동기 큐(134)에 스케줄링된 요청들의 실행 시점에 시스템 온 칩(SoC)이 최적의 성능으로 설정될 수 있다. 따라서, 사용자가 느끼는 성능 또는 서비스 품질(QoS)의 최적화가 가능하다.
도 17은 본 발명의 제 5 실시 예에 따른 시스템 성능 모드의 제어 방법을 보여주는 순서도이다. 도 17을 참조하여, 현재 검출된 동기 큐의 수(SQ_present)에 따라 QoS 스텝, DVFS 레벨, 그리고 CPU 모드들 또는 각각의 조합된 시스템 성능 레벨들 중 최적의 케이스를 선택하는 방법이 예시적으로 설명될 것이다.
S510 단계에서, 장치 드라이버(137)는 입출력 스케줄러(135)에서 관리되는 현재 동기 큐의 수(SQ_present)를 검출할 것이다. 만일, 현재 동기 큐의 수(SQ_present)가 1 이상 30 이하인 경우, 절차는 S520 단계로 이동할 것이다. 현재 동기 큐의 수(SQ_present)가 31 이상 60 이하인 경우, 절차는 S530 단계로 이동할 것이다. 하지만, 현재 동기 큐의 수(SQ_present)가 61 이상인 것으로 판단되면, 절차는 S530 단계로 이동할 것이다.
S520 단계에서, 장치 드라이버(137)는 현재의 동기 큐(134)에 누적된 요청들을 처리하기 위한 성능 향상 방안으로 CPU 모드를 적용한다. 즉, 장치 드라이버(137)는 현재 동기 큐의 수(SQ_prenent)에 따라 동종 또는 이종의 멀티-코어의 구동 레벨을 선택할 것이다. 예를 들면, 동기 큐의 수(SQ)가 1 이상이고 5 이하인 경우에, 장치 드라이버(137)는 리틀 모드(Little mode)로 구동되도록 CPU(110)를 설정할 수 있다. 리틀 모드(Little mode)에서는 제 1 멀티-코어(MC1)에 포함되는 코어들(LCore_1, LCore_2)만이 활성화될 것이다. 반면, 동기 큐의 수(SQ)가 20 이상이고 30 이하인 경우, 장치 드라이버(137)는 빅 모드(Big mode)로 CPU(110)를 설정할 것이다. 빅 모드(Big mode)에서는 제 2 멀티-코어(MC2)에 포함되는 코어들(BCore_1, BCore_2)이 활성화될 것이다. 상술한 CPU 모드들에 따라 동종 또는 이종의 멀티-코어들이 선택 방식은 예시적일 뿐이다. 검출된 현재 동기 큐의 수(SQ_present)에 따라 선택되는 코어들의 단위와 수는 다양하게 변경될 수 있을 것이다.
S530 단계에서, 장치 드라이버(137)는 현재의 동기 큐(134)에 누적된 요청들을 처리하기 위한 성능 향상 방안으로 CPU 모드 및 DVFS 레벨 조정을 복합적으로 적용한다. 즉, 장치 드라이버(137)는 현재 동기 큐의 수(SQ_prenent)에 따라 동종 또는 이종의 멀티-코어의 구동 레벨을 선택하고, 각각의 선택된 코어들에 적용되는 DVFS 레벨을 선택할 것이다. 예를 들면, 동기 큐의 수(SQ)가 31 이상이고 40 이하인 경우에, 장치 드라이버(137)는 리틀 모드(Little mode)로 구동되도록 CPU(110)를 설정할 수 있다. 그리고 장치 드라이버(137)는 리틀 모드(Little mode)에서 선택되는 제 1 멀티-코어(MC1)에 대해서 제 2 DVFS 레벨(2nd DVFS mode, 도 9 참조)을 적용할 수 있을 것이다. 이러한 CPU 모드와 DVFS 레벨의 조정을 통해서 검출된 현재 동기 큐의 수(SQ_present)에 대한 최적 시스템 성능으로 설정이 가능할 것이다.
S540 단계에서, 장치 드라이버(137)는 현재의 동기 큐(134)에 누적된 요청들을 처리하기 위한 성능 향상 방안으로 CPU 모드 및 DVFS 레벨, 그리고 QoS 스텝의 조정을 복합적으로 적용한다. 즉, 장치 드라이버(137)는 현재 동기 큐의 수(SQ_prenent)에 따라 앞서 설명된 시스템 성능 레벨을 조정할 것이다. 장치 드라이버(137)에 의한 시스템 성능 레벨의 조정은 앞서 설명된 도 15 및 도 16에 의거하여 수행될 수 있을 것이다. 따라서 상세한 설명은 생략하기로 한다.
S550 단계에서, 장치 드라이버(137)는 선택된 시스템의 성능 향상 방안에 따라 SoC 또는 저장 장치(170)를 설정할 것이다. 장치 드라이버(137)는 선택된 성능 향상 방안에 따라 시스템 온 칩(SoC)의 QoS 레벨, DVFS 레벨, 그리고 CPU 모드 중 적어도 하나를 활성화하고, 하드웨어를 조정할 것이다.
도 18은 본 발명의 다른 실시 예에 따른 모바일 장치의 소프트웨어 구조를 보여주는 블록도이다. 도 18을 참조하면, 워킹 메모리(130)에 로드되고 CPU(110)에 의해서 구동되는 모바일 장치(100)의 소프트웨어 계층 구조는 간략히 응용 프로그램(131)과 커널(Kernel, 133")로 구분될 수 있다. 여기서, 응용 프로그램(131), 입출력 스케줄러(135), 성능 컨트롤러(140), 메모리 인터페이스(160) 등은 앞서 설명된 도 2의 그것들과 동일하므로 이것들에 대한 구체적은 설명은 생략하기로 한다.
커널(133")은 다시 입출력 스케줄러(135)와 장치 드라이버(137")로 나뉠 수 있다. 하지만, 장치 드라이버(137")는 별도의 시스템 성능 향상을 위한 제어 동작에 기여하지 않는다. 대신, 저장 장치(170)에 QoS 제어 모듈(175)이 구비된다. QoS 제어 모듈(175)은 저장 장치(175)에 구비되는 메모리 컨트롤러(Memory controller)의 펌웨어(Firmware)의 일부 모듈로 제공될 수 있다.
QoS 제어 모듈(175)은 장치 드라이버(137")에 의해서 제공되는 동기 큐(134)의 수를 참조하여 시스템 온 칩(SoC)의 성능 또는 저장 장치(170)의 성능 방안을 결정한다. 그리고 QoS 제어 모듈(175)은 결정된 성능 향상 방안에 따라 시스템 온 칩(SoC) 및 저장 장치(170)의 성능을 제어할 수 있다. 즉, QoS 제어 모듈(175)은 성능 컨트롤러(140)에 결정된 성능 향상 방안을 알려줄 수 있을 것이다. 이러한 동작을 위해, 메모리 인터페이스(160)는 시스템 온 칩(SoC)의 동기 큐의 수(SoC)를 저장 장치(170)로 전달해야 한다. 또는, 메모리 인터페이스(160)는 QoS 제어 모듈(175)에 의해서 결정된 성능 향상 방안을 성능 컨트롤러(140)에 전달할 수 있어야 한다. 메모리 인터페이스(160)는 이러한 트랜잭션을 교환하기 위한 적절한 인터페이스 구조를 구비한다.
도 19는 본 발명의 또 다른 실시 예에 따른 모바일 장치를 보여주는 블록도이다. 도 19를 참조하면, 모바일 장치(200)는 시스템 온 칩(210)과 메모리 카드(220)를 포함한다. 메모리 카드(220)는 메모리 컨트롤러(222) 및 불휘발성 메모리 장치(224)를 포함할 수 있다.
시스템 온 칩(210)의 소프트웨어 구조에서는 커널(212)이 포함된다. 그리고 커널(212)은 입출력 스케줄러(211) 및 장치 드라이버(213)를 포함할 것이다. 여기서, 장치 드라이버(213)는 입출력 스케줄러(211)에서 관리되는 동기 큐의 수(SQ)를 지속적으로 모니터링한다. 그리고 동기 큐의 수(SQ)에 따라 장치 드라이버(213)는 서비스 품질 제어 신호(QoS)를 메모리 인터페이스(214)에 제공할 것이다. 서비스 품질 제어 신호(QoS)에 응답하여 메모리 인터페이스(220)는 메모리 카드(220)에 접근 속도(Access speed)를 지정할 수 있다. 물론, 메모리 인터페이스(214)와 메모리 컨트롤러(222) 사이에는 접근 속도를 제어할 수 있는 명령어 셋이나 제어 신호 셋이 구비되어야 한다.
메모리 인터페이스(214)로부터 접근 속도(Access speed)에 대한 명령어 또는 제어 신호를 제공받아, 메모리 컨트롤러(222)는 불휘발성 메모리 장치(224)의 프로그램 속도 또는 독출 속도를 설정할 수 있다. 예를 들면, 접근 속도 정보에 따라 고속의 프로그램을 위해서 메모리 컨트롤러(222)는 불휘발성 메모리 장치(224)의 싱글 레벨 셀(SLC) 영역에 데이터를 프로그램하도록 설정될 수 있다. 또는, 접근 속도 정보에 따라 고속의 프로그램을 위해서 메모리 컨트롤러(222)는 불휘발성 메모리 장치(224)의 멀티 레벨 메모리 셀들의 LSB 페이지에 데이터를 프로그램할 수 있다. 하지만, 접근 속도 정보에 따라서 프로그램 방식이나 읽기 방식을 조정하는 방법은 상술한 방식들에만 국한되지 않는다. 다양한 방식으로 메모리 카드(220) 내부의 동작 속도를 높일 수 있을 것이다.
불휘발성 메모리 장치(224)는 메모리 카드(220)의 저장 매체(Storage Medium)로서 제공된다. 예를 들면, 불휘발성 메모리 장치(224)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)로 구성될 수 있다. 또는, 불휘발성 메모리 장치(224)는 PRAM, MRAM, ReRAM, FRAM 등의 차세대 불휘발성 메모리나 NOR 플래시 메모리로 구성될 수 있다. 특히, 불휘발성 메모리 장치(224)는 메모리 컨트롤러(222)로부터의 명령어나 제어 신호에 응답하여 직류 전압(DC voltage)과 같은 바이어스 레벨을 조정할 수도 있다.
이상에서는 동기 큐의 수에 따라 불휘발성 메모리 장치(224)의 프로그램이나 읽기 속도를 가변하는 실시 예가 설명되었다. 하지만, 메모리 컨트롤러(222)에 의한 접근 속도의 가변 방법은 다양한 변형이 가능함은 잘 이해될 것이다.
도 20은 본 발명의 또 다른 실시 예에 따른 모바일 장치의 성능 제어 방법을 보여주는 순서도이다. 도 20을 참조하여, 동기 큐의 수(SQ) 그리고 비동기 큐의 수(AQ)에 따라 시스템 온 칩의 성능 모드를 조정하는 방법이 설명될 것이다. 동기 큐(134)에 누적된 요청들이 모두 처리되거나 또는 존재하지 않는 경우에도 비동기 큐(136)에는 요청들이 남아 있을 수 있다. 이 경우, 비동기 큐(136)에 남아있는 요청들이 모두 처리되어야만 모바일 장치의 모드 전환이 가능하다. 따라서, 비동기 큐(136)에 누적된 요청들을 신속히 처리함으로써, 모바일 장치(100)는 빠르게 저전력 모드로 진입할 수 있어, 에너지 및 전력 소모를 줄일 수 있다.
처리가 불필요한 비동기 큐를 처리할 경우에도 시스템의 성능 모드를 조정하면 전력 소모를 줄일 수 있을 것이다.
S610 단계에서, 장치 드라이버(137)는 입출력 스케줄러(135)에서 관리되는 현재 동기 큐의 수(SQ_present)를 검출할 것이다. 만일, 현재 동기 큐의 수(SQ_present)가 1 이상인 경우(Yes 방향), 절차는 S620 단계로 이동할 것이다. 하지만, 현재 동기 큐의 수(SQ_present)가 0인 것으로 판단되면(No 방향), 절차는 S630 단계로 이동할 것이다.
S620 단계에서, 장치 드라이버(137)는 앞서 설명된 시스템 온 칩(SoC)의 CPU 모드, QoS 스텝, 그리고 DVFS 레벨 조정들 중 적어도 하나를 적용하는 성능 향상 동작을 수행할 것이다. 이러한 동작은 앞서 설명된 실시 예들에 대응된다.
S630 단계에서, 장치 드라이버(137)는 입출력 스케줄러(135)에서 관리되는 현재 비동기 큐의 수(AQ_present)를 검출할 것이다. 만일, 현재 비동기 큐의 수(AQ_present)가 1 이상 30 이하인 경우, 절차는 S640 단계로 이동할 것이다. 현재 비동기 큐의 수(AQ_present)가 31 이상 60 이하인 경우, 절차는 S650 단계로 이동할 것이다. 하지만, 현재 비동기 큐의 수(AQ_present)가 61 이상인 것으로 판단되면, 절차는 S660 단계로 이동할 것이다.
S640 단계에서, 장치 드라이버(137)는 비동기 큐(136)에 누적된 요청들을 처리하기 위한 성능 향상 방안으로 제 1 시스템 레벨(1st system level)을 선택한다. S650 단계에서, 장치 드라이버(137)는 비동기 큐(136)에 누적된 요청들을 처리하기 위한 성능 향상 방안으로 제 2 시스템 레벨(2nd system level)을 선택한다. S660 단계에서, 장치 드라이버(137)는 비동기 큐(136)에 누적된 요청들을 처리하기 위한 성능 향상 방안으로 제 3 시스템 레벨(3rd system level)을 선택한다. 여기서, 제 1 내지 제 3 시스템 레벨들(1st~3rd system level) 각각은 CPU 모드, QoS 스텝, 그리고 DVFS 레벨들 중 적어도 하나를 변경한 성능 모드임은 잘 이해될 것이다.
S670 단계에서, 장치 드라이버(137)는 선택된 시스템의 성능 향상 방안에 따라 SoC 또는 저장 장치(170)를 설정할 것이다. 장치 드라이버(137)는 선택된 성능 향상 방안에 따라 시스템 온 칩(SoC)의 QoS 레벨, DVFS 레벨, 그리고 CPU 모드 중 적어도 하나를 활성화하고, 하드웨어를 조정할 것이다.
도 21은 본 발명의 실시 예에 따른 휴대용 단말기를 나타내는 블록도이다. 도 21을 참조하면, 본 발명의 실시 예에 따른 휴대용 단말기(1000)는 이미지 처리부(1100), 무선 송수신부(1200), 오디오 처리부(1300), 이미지 파일 생성부(1400), 불휘발성 메모리 장치(1500), 사용자 인터페이스(1600), 그리고 컨트롤러(1700)를 포함한다.
이미지 처리부(1100)는 렌즈(1110), 이미지 센서(1120), 이미지 프로세서(1130), 그리고 디스플레이부(1140)를 포함한다. 무선 송수신부(1210)는 안테나(1210), 트랜시버(1220), 모뎀(1230)을 포함한다. 오디오 처리부(1300)는 오디오 프로세서(1310), 마이크(1320), 그리고 스피커(1330)를 포함한다.
여기서, 불휘발성 메모리 장치(1500)는 본 발명의 실시 예에 따른 메모리 카드(MMC, eMMC, SD, micro SD) 등으로 제공될 수 있다. 더불어, 컨트롤러(1700)는 응용 프로그램, 운영 체제 등을 구동하는 시스템 온 칩(SoC)으로 제공될 수 있다. 시스템 온 칩에서 구동되는 운영 체제의 커널(Kernel)에는 입출력 스케줄러(I/O Scheduler) 및 불휘발성 메모리 장치(1500)를 제어하기 위한 장치 드라이버(Device Driver)가 포함된다. 장치 드라이버(Device driver)는 입출력 스케줄러에서 관리되는 동기 큐의 수를 참조하여 불휘발성 메모리 장치(1500)의 액세스 성능을 제어하거나, SoC 내부의 CPU 모드, DVFS 레벨 등을 제어할 수 있다.
본 발명에 따른 불휘발성 메모리 장치 그리고/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장 될 수 있다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100 : 모바일 장치 110 : CPU
120 : 디램 컨트롤러 130 : 워킹 메모리
140 : 성능 컨트롤러 150 : UI 컨트롤러
152 : 액정 표시 장치 154 : 터치 패널
160 : 메모리 인터페이스 170 : 저장 장치
180 : 가속기 190 : 시스템 인터커넥터
210 : 시스템 온 칩 211 : 입출력 스케줄러
212 : 커널 213 : 장치 드라이버
214 : 메모리 인터페이스 220 : 메모리 카드
222 : 메모리 컨트롤러 224 : 불휘발성 메모리 장치
1000 : 휴대용 단말기 1100 : 이미지 처리부
1110 : 렌즈 1120 : 이미지 센서
1130 : 이미지 프로세서 1140 : 디스플레이 유닛
1200 : 무선 송수신부 1210 : 안테나
1220 : 송수신기 1230 : 모뎀
1300 : 오디오 처리부 1310 : 오디오 프로세서
1320 : 마이크 1330 : 스피커
1400 : 이미지 파일 생성부 1500 : 불휘발성 메모리 장치
1600 : 유저 인터페이스 1700 : 컨트롤러

Claims (20)

  1. 메모리 장치를 포함하는 모바일 장치의 성능 제어 방법에 있어서:
    상기 메모리 장치로의 접근 요청들을 실시간 처리 속성에 따라 동기 큐와 비동기 큐로 구분하여 대기열을 구성하는 단계;
    상기 동기 큐에 누적된 대기열의 수를 검출하는 단계;
    상기 검출된 동기 큐에 누적된 대기열의 수에 따라 상기 메모리 장치로의 접근 속도 또는 상기 모바일 장치의 시스템 온 칩의 구동 속도를 지시하는 제 1 성능 모드를 결정하는 단계; 그리고
    결정된 상기 제 1 성능 모드에 따라 상기 메모리 장치 또는 상기 시스템 온 칩을 설정하는 단계를 포함하되,
    상기 제 1 성능 모드로의 설정은 상기 모바일 장치에서 이전 동기 큐의 수에 따라 적용된 제 2 성능 모드가 활성화 여부 및 상기 제 2 성능 모드의 적용 시간이 제한 시간을 경과했는지의 여부에 따라 실행되는 제어 방법.
  2. 제 1 항에 있어서,
    상기 실시간 처리 속성은 상기 모바일 장치의 사용자 응답에 영향을 미치는지의 여부에 따라 결정되는 제어 방법.
  3. 제 1 항에 있어서,
    상기 시스템 온 칩의 구동 속도는 상기 시스템 온 칩의 동적 전압 주파수 스케일링(DVFS) 레벨의 조정을 통해서 설정되는 제어 방법.
  4. 제 1 항에 있어서,
    상기 시스템 온 칩의 구동 속도는 상기 시스템 온 칩에 포함되는 동종 또는 이종 멀티-코어 프로세서의 구동 모드 선택을 통해서 설정되는 제어 방법.
  5. 제 1 항에 있어서,
    상기 메모리 장치의 접근 속도는 상기 시스템 온 칩과 상기 메모리 장치 사이의 데이터 전송 클록의 주파수 조정을 통해서 설정되는 제어 방법.
  6. 제 1 항에 있어서,
    상기 메모리 장치의 접근 속도는 상기 메모리 장치의 데이터 쓰기 또는 데이터 읽기 속도의 조정을 통해서 설정되는 제어 방법.
  7. 제 1 항에 있어서,
    상기 메모리 장치로의 접근 속도와 상기 모바일 장치의 시스템 온 칩의 구동 속도의 변화는 상호 의존적으로 발생하는 제어 방법.
  8. 데이터를 저장하는 메모리 장치; 그리고
    응용 프로그램 또는 사용자의 요청에 의해서 상기 메모리 장치를 액세스하는 시스템 온 칩을 포함하되,
    상기 액세스 요청에 따라 상기 시스템 온 칩의 기능 블록들과 상기 메모리 장치를 제어하기 위한 커널은:
    상기 메모리 장치로의 접근 요청들을 실시간 처리 속성에 따라 동기 큐와 비동기 큐로 구분하여 대기열을 구성하는 입출력 스케줄러; 및
    상기 동기 큐에 누적된 접근 요청들의 수에 따라 상기 메모리 장치의 접근 속도와 상기 시스템 온 칩의 성능 모드를 조정하는 장치 드라이버를 포함하되,
    상기 장치 드라이버는 상기 동기 큐에 누적된 접근 요청들의 수가 존재하지 않는 경우에, 상기 비동기 큐에 누적된 접근 요청들을 수를 참조하여 상기 메모리 장치의 접근 속도와 상기 시스템 온 칩의 성능 모드를 조정하는 모바일 장치.
  9. 제 8 항에 있어서,
    상기 시스템 온 칩의 성능 모드 조정은 상기 시스템 온 칩에 구비되는 중앙처리장치의 구동 클록 주파수 또는 상기 시스템 온 칩의 동적 전압 주파수 스케일링(DVFS)의 레벨 조정을 통해서 수행되는 모바일 장치.
  10. 제 9 항에 있어서,
    상기 중앙처리장치는 각각 독립적으로 구동되며, 서로 다른 처리 속도를 가지는 동종 또는 이종의 멀티-코어를 포함하고, 상기 성능 모드의 조정은 복수의 멀티-코어 중에서 적어도 하나를 선택적으로 활성화하는 것으로 수행되는 모바일 장치.
  11. 제 8 항에 있어서,
    상기 시스템 온 칩은 상기 장치 드라이버의 지시에 따라 상기 시스템 온 칩의 성능 모드를 조정하는 성능 컨트롤러를 포함하는 모바일 장치.
  12. 제 8 항에 있어서,
    상기 장치 드라이버의 제어에 따라 상기 메모리 장치의 읽기 또는 쓰기 속도를 정의하는 명령어 셋 또는 제어 신호 셋을 상기 메모리 장치에 제공하는 메모리 인터페이스를 포함하는 모바일 장치.
  13. 제 8 항에 있어서,
    상기 장치 드라이버는 상기 시스템 온 칩의 성능을 제어하기 위한 펌웨어로 제공되는 모바일 장치.
  14. 삭제
  15. 메모리 장치를 포함하고, 복수 레벨의 성능 모드들로 제어되는 모바일 장치의 제어 방법에 있어서:
    상기 모바일 장치의 입출력 버퍼에 누적된 현재 동기 큐의 수를 검출하는 단계;
    상기 검출된 현재 동기 큐의 수가 하나 이상인 경우, 상기 모바일 장치에서 이전 동기 큐의 수에 따라 적용된 제 1 성능 모드가 활성화된 상태인지 확인하는 단계;
    상기 제 1 성능 모드의 적용 시간이 제한 시간을 경과했는지 검출하는 단계;
    상기 제한 시간이 경과한 것으로 검출되면, 상기 이전 동기 큐의 수와 상기 현재 동기 큐의 수를 비교하는 단계; 그리고
    상기 비교 결과에 따라 상기 제 1 성능 모드로부터 성능을 상향 또는 하향시킨 제 2 성능 모드를 결정하고 적용하는 단계를 포함하는 모바일 장치의 제어 방법.
  16. 제 15 항에 있어서,
    상기 검출된 동기 큐의 수, 상기 적용된 성능 모드의 레벨, 그리고 상기 적용 시간을 보관 및 업데이트하기 위한 상태 테이블이 포함되는 모바일 장치의 제어 방법.
  17. 제 16 항에 있어서,
    상기 동기 큐의 수를 검출하는 단계에서, 상기 현재 동기 큐의 수가 하나 미만인 것으로 검출된 경우, 상기 상태 테이블에서 상기 현재 동기 큐의 수, 상기 성능 모드 및 상기 적용 시간을 리셋하는 단계를 더 포함하는 모바일 장치의 제어 방법.
  18. 제 15 항에 있어서,
    상기 제 1 성능 모드가 활성화된 상태인지 확인하는 단계에서, 상기 제 1 성능 모드가 비활성화된 상태로 확인되면, 상기 현재 동기 큐의 수에 대응하는 제 3 성능 모드를 결정 및 적용하는 단계를 더 포함하는 모바일 장치의 제어 방법.
  19. 제 15 항에 있어서,
    상기 제한 시간이 경과했는지 검출하는 단계에서, 상기 제한 시간이 경과하지 않은 것으로 검출되면, 상기 현재 동기 큐의 수에 따른 성능 모드를 결정하는 동작은 종료되는 모바일 장치의 제어 방법.
  20. 제 15 항에 있어서,
    상기 성능 모드의 조정은, 상기 메모리 장치의 접근 속도, 상기 모바일 장치에 포함되는 시스템 온 칩의 동적 전압 주파수 스케일링(DVFS), 또는 동종 또는 이종의 멀티-코어 프로세서를 포함하는 중앙처리장치의 구동 모드 조정을 통해서 수행되는 모바일 장치의 제어 방법.
KR1020130085529A 2013-07-19 2013-07-19 모바일 장치 및 그것의 제어 방법 KR102114453B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130085529A KR102114453B1 (ko) 2013-07-19 2013-07-19 모바일 장치 및 그것의 제어 방법
US14/303,860 US9626307B2 (en) 2013-07-19 2014-06-13 Mobile device and a method of controlling the mobile device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130085529A KR102114453B1 (ko) 2013-07-19 2013-07-19 모바일 장치 및 그것의 제어 방법

Publications (2)

Publication Number Publication Date
KR20150010462A KR20150010462A (ko) 2015-01-28
KR102114453B1 true KR102114453B1 (ko) 2020-06-05

Family

ID=52344561

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130085529A KR102114453B1 (ko) 2013-07-19 2013-07-19 모바일 장치 및 그것의 제어 방법

Country Status (2)

Country Link
US (1) US9626307B2 (ko)
KR (1) KR102114453B1 (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090174676A1 (en) 2008-01-04 2009-07-09 Apple Inc. Motion component dominance factors for motion locking of touch sensor data
US8593410B2 (en) 2009-04-10 2013-11-26 Apple Inc. Touch sensor panel design
US9772955B2 (en) * 2013-06-17 2017-09-26 Pixart Imaging Inc. Electronic system and non-transitory computer readable recording medium can perform report rate setting method
US10936120B2 (en) 2014-05-22 2021-03-02 Apple Inc. Panel bootstraping architectures for in-cell self-capacitance
US10289251B2 (en) 2014-06-27 2019-05-14 Apple Inc. Reducing floating ground effects in pixelated self-capacitance touch screens
WO2016048269A1 (en) 2014-09-22 2016-03-31 Onamp Research Llc Ungrounded user signal compensation for pixelated self-capacitance touch sensor panel
EP3213173A4 (en) 2014-10-27 2018-06-06 Apple Inc. Pixelated self-capacitance water rejection
US20160179582A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Techniques to dynamically allocate resources for local service chains of configurable computing resources
CN107209602B (zh) 2015-02-02 2020-05-26 苹果公司 柔性自电容和互电容触摸感测系统架构
US10488992B2 (en) * 2015-03-10 2019-11-26 Apple Inc. Multi-chip touch architecture for scalability
US10031574B2 (en) * 2015-05-20 2018-07-24 Mediatek Inc. Apparatus and method for controlling multi-core processor of computing system
US10444819B2 (en) * 2015-06-19 2019-10-15 Intel Corporation Techniques to control computational resources for an electronic device
US9798376B2 (en) 2015-08-03 2017-10-24 Qualcomm Incorporated Power distribution network (PDN) droop/overshoot mitigation
KR101666549B1 (ko) * 2015-09-15 2016-10-17 인천대학교 산학협력단 컴퓨팅 디바이스의 중앙 프로세싱 유닛의 주파수를 동적으로 제어하는 방법
US10365773B2 (en) 2015-09-30 2019-07-30 Apple Inc. Flexible scan plan using coarse mutual capacitance and fully-guarded measurements
US9965412B2 (en) * 2015-10-08 2018-05-08 Samsung Electronics Co., Ltd. Method for application-aware interrupts management
TWM528451U (zh) * 2016-03-14 2016-09-11 Evga Corp 電腦效能控制裝置
KR20170124017A (ko) * 2016-04-29 2017-11-09 삼성전자주식회사 동작 전압을 조절하는 메모리 장치, 메모리 장치를 제어하는 어플리케이션 프로세서 및 메모리 장치의 동작방법
AU2017208277B2 (en) 2016-09-06 2018-12-20 Apple Inc. Back of cover touch sensors
EP3383099B1 (en) * 2017-03-31 2019-04-24 Intel IP Corporation Communication device and method for processing received data
US10386965B2 (en) 2017-04-20 2019-08-20 Apple Inc. Finger tracking in wet environment
KR102482896B1 (ko) 2017-12-28 2022-12-30 삼성전자주식회사 이종 휘발성 메모리 칩들을 포함하는 메모리 장치 및 이를 포함하는 전자 장치
CN109325628B (zh) * 2018-09-30 2021-08-20 中国银行股份有限公司 一种预测银行网点营业窗口数的方法、装置及电子设备
US11157109B1 (en) 2019-09-06 2021-10-26 Apple Inc. Touch sensing with water rejection
KR20210032213A (ko) * 2019-09-16 2021-03-24 삼성전자주식회사 전력 스텝에 기초한 동적 다이내믹 전압 주파주 스케일링(dvfs) 수행 방법
US11662867B1 (en) 2020-05-30 2023-05-30 Apple Inc. Hover detection on a touch sensor panel
US11115381B1 (en) * 2020-11-30 2021-09-07 Vmware, Inc. Hybrid and efficient method to sync NAT sessions
US11900146B2 (en) 2021-08-31 2024-02-13 Apple Inc. Memory controller with separate transaction table for real time transactions
US11797410B2 (en) * 2021-11-15 2023-10-24 Advanced Micro Devices, Inc. Chiplet-level performance information for configuring chiplets in a processor

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5189345B2 (ja) 2006-11-06 2013-04-24 東ソー株式会社 トリフルオロメチル化用反応試剤
JP2013520759A (ja) * 2010-02-23 2013-06-06 ラムバス・インコーポレーテッド Dramの電力および性能を動的にスケーリングするための方法および回路

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05189345A (ja) * 1992-01-08 1993-07-30 Matsushita Electric Ind Co Ltd 動的入出力データバッファ操作方式
US5854942A (en) 1996-09-06 1998-12-29 International Business Machines Corporation Method and system for automatic storage subsystem configuration
FR2823337B1 (fr) 2001-04-05 2004-10-15 Netseniors Procede de lecture, traitement, transmission et exploitation d'un code a barres
US6996728B2 (en) * 2002-04-26 2006-02-07 Hewlett-Packard Development Company, L.P. Managing power consumption based on utilization statistics
JP3915672B2 (ja) 2002-11-18 2007-05-16 株式会社デンソー リアルタイムタスク制御装置
JP4082706B2 (ja) 2005-04-12 2008-04-30 学校法人早稲田大学 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
US7673111B2 (en) * 2005-12-23 2010-03-02 Intel Corporation Memory system with both single and consolidated commands
US7721127B2 (en) 2006-03-28 2010-05-18 Mips Technologies, Inc. Multithreaded dynamic voltage-frequency scaling microprocessor
KR100782307B1 (ko) 2006-04-26 2007-12-06 삼성전자주식회사 하드 디스크 드라이브의 동작 클럭 주파수를 제어하는방법, 기록매체, 및 하드 디스크 드라이브
US7734836B2 (en) 2006-10-11 2010-06-08 Coatney Douglas W Method and apparatus for dynamically qualifying mass storage devices
JP2008282150A (ja) 2007-05-09 2008-11-20 Matsushita Electric Ind Co Ltd 信号処理装置及び信号処理システム
US7937568B2 (en) 2007-07-11 2011-05-03 International Business Machines Corporation Adaptive execution cycle control method for enhanced instruction throughput
JP2009223863A (ja) 2008-03-19 2009-10-01 Hitachi Ltd コンピュータシステム及びコマンド実行頻度制御方法
JP2009289082A (ja) 2008-05-29 2009-12-10 Panasonic Electric Works Co Ltd クロック制御装置
RU2556443C2 (ru) * 2010-09-16 2015-07-10 Эппл Инк. Многопортовый контроллер запоминающего устройства с портами, ассоциированными с классами трафика
JP2012128627A (ja) 2010-12-15 2012-07-05 Toshiba Corp データ転送システム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5189345B2 (ja) 2006-11-06 2013-04-24 東ソー株式会社 トリフルオロメチル化用反応試剤
JP2013520759A (ja) * 2010-02-23 2013-06-06 ラムバス・インコーポレーテッド Dramの電力および性能を動的にスケーリングするための方法および回路

Also Published As

Publication number Publication date
KR20150010462A (ko) 2015-01-28
US20150026398A1 (en) 2015-01-22
US9626307B2 (en) 2017-04-18

Similar Documents

Publication Publication Date Title
KR102114453B1 (ko) 모바일 장치 및 그것의 제어 방법
US9753771B2 (en) System-on-chip including multi-core processor and thread scheduling method thereof
US11243806B2 (en) System on chip including a multi-core processor and task scheduling method thereof
WO2018082570A1 (zh) I/o请求的调度方法及装置
KR102169692B1 (ko) 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 동적 전력 관리 방법
EP3155521B1 (en) Systems and methods of managing processor device power consumption
CA2988269C (en) Opportunistic multitasking
US9411649B2 (en) Resource allocation method
EP3245587B1 (en) Systems and methods for providing dynamic cache extension in a multi-cluster heterogeneous processor architecture
JP5584821B2 (ja) 低電力メモリアクセスのためのバスアービトレーションの方法
CN109906421B (zh) 基于线程重要性的处理器核划分
CN109906437B (zh) 基于线程重要性的处理器核停止和频率选择
KR20130002046A (ko) 멀티 코어를 포함하는 저장 장치의 전력 관리 방법
US20110161637A1 (en) Apparatus and method for parallel processing
US20130275785A1 (en) Memory control apparatus, memory control method, information processing apparatus and program
US11061841B2 (en) System and method for implementing a multi-threaded device driver in a computer system
TWI432955B (zh) 具備可調效能之系統、以及用來調整系統的效能之方法
KR20150106144A (ko) 메모리 스왑 오퍼레이션 제어 방법 및 이를 적용하는 데이터 처리 시스템
JP4872942B2 (ja) ストレージシステム、ストレージ装置、優先度制御装置および優先度制御方法
US11442522B2 (en) Method of controlling performance boosting of semiconductor device based on at least user input and feedback from previous boosting policies and semiconductor device performing the method
AU2013205570A1 (en) Opportunistic multitasking

Legal Events

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