KR20130024155A - 이종의 가속기들 사이에서 스위칭할 수 있는 데이터 처리 시스템과 그 방법 - Google Patents
이종의 가속기들 사이에서 스위칭할 수 있는 데이터 처리 시스템과 그 방법 Download PDFInfo
- Publication number
- KR20130024155A KR20130024155A KR1020110087411A KR20110087411A KR20130024155A KR 20130024155 A KR20130024155 A KR 20130024155A KR 1020110087411 A KR1020110087411 A KR 1020110087411A KR 20110087411 A KR20110087411 A KR 20110087411A KR 20130024155 A KR20130024155 A KR 20130024155A
- Authority
- KR
- South Korea
- Prior art keywords
- accelerator
- cpu
- default
- software
- hardware
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 230000001133 acceleration Effects 0.000 claims description 129
- 230000008859 change Effects 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 abstract description 3
- 102100039424 Polyadenylate-binding protein 4 Human genes 0.000 description 10
- 102100038359 Xaa-Pro aminopeptidase 3 Human genes 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000011017 operating method Methods 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
- G06F15/7842—Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Advance Control (AREA)
- Power Sources (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
데이터 처리 시스템의 동작 방법이 개시된다. 상기 방법은 애플리케이션 프로그램이 실행됨에 따라 생성된 가속 요청을 수신하는 단계와, 상기 가속 요청에 따라, CPU의 현재 사용량과 기준 사용량을 비교하고 비교 신호를 생성하는 단계와, 상기 비교 신호에 응답하여, 상기 애플리케이션 프로그램에 의해 실행되는 멀티미디어를 가속하기 위해 이종의 가속기들 사이에서 스위칭을 수행하는 단계를 포함한다.
Description
본 발명의 개념에 따른 실시 예는 가속기 선택 기술에 관한 것으로, 특히 소비 전력 또는 성능에 기초하여 하드웨어 가속기와 소프트웨어 가속기 사이에서 스위칭할 수 있는 시스템-온 칩과 상기 시스템-온 칩의 동작 방법에 관한 것이다.
그래픽들(graphics), 오디오(audio), 비디오(video), 애니메이션 (animation), 게임(game), 및 텍스트(text)를 포함하는 멀티미디어(multimedia)를 지원하는 데이터 처리 시스템은 오디오 코덱(audio codec), 비디오 코덱(video codec), 2차원 가속기(2-dimentional accelerator), 및/또는 3차원 가속기(3-dimentional accelerator)와 같은 다양한 종류의 가속기들(accelerators)을 포함한다.
상기 가속기들 각각은 하드웨어 또는 소프트웨어로 구현될 수 있다.
하드웨어 가속기(hardware accelerator)는 CPU(central processing unit) 보다 빠르게 여러 기능들(some functions)을 수행하기 위해서 전용 하드웨어 (dedicated hardward) 또는 전용 하드웨어 장치를 사용한다.
즉, 하드웨어 가속기는 CPU의 로드(laod)를 증가시키지 않고 빠른 속도로 멀티미디어를 가속(accelerate)할 수 있으나 별도의 하드웨어를 필요로 하므로 제조 비용이 증가하는 단점이 있다.
컴퓨터-실행가능한 프로그램(computer-executable program)으로 구현될 수 있는 소프트웨어 가속기(software accelerator)는 프로그램 변경이 용이하고 별도의 하드웨어를 필요로 하지 않고 적은 전력을 소모하면서 멀티미디어를 가속할 수 있다는 장점이 있으나, CPU의 전체 로드(total load)가 큰 경우 데이터 처리 시스템 전체의 동작 속도 또는 반응 속도를 감소시키는 단점이 있다.
본 발명이 이루고자 하는 기술적인 과제는 멀티미디어를 가속하기 위하여 실시간으로 동적(dynamic)으로 하드웨어 가속기와 소프트웨어 가속기 사이에서 스위칭할 수 있는 시스템-온 칩과 상기 시스템-온 칩의 동작 방법을 제공하는 것이다.
본 발명의 실시 예에 따른 시스템-온 칩의 동작 방법은 애플리케이션 프로그램이 실행됨에 따라 생성된 가속 요청 신호를 수신하는 단계와, 상기 가속 요청 신호에 따라, CPU의 현재 사용량과 기준 사용량을 비교하고 비교 신호를 생성하는 단계와, 상기 비교 신호에 응답하여, 상기 애플리케이션 프로그램에 의해 실행되는 멀티미디어를 가속하기 위해 이종의 가속기들(heterogeneous accelerators) 사이에서 스위칭을 수행하는 단계를 포함한다.
상기 이종의 가속기들은 하드웨어 장치로 구현된 하드웨어 가속기와 상기 CPU에서 실행가능한 프로그램 코드로 구현된 소프트웨어 가속기를 포함하며, 상기 소프트웨어 가속기는 메모리로부터 상기 CPU로 로드된 후 실행된다.
실시 예에 따라 상기 비교 신호를 생성하는 단계는 상기 애플리케이션 프로그램에 대해 디폴트로 설정된 가속기가 상기 하드웨어 가속기이고 상기 하드웨어 가속기가 동작 중일 때 수행된다.
다른 실시 예에 따라 상기 비교 신호를 생성하는 단계는 상기 애플리케이션 프로그램에 대해 디폴트로 설정된 가속기가 상기 소프트웨어 가속기일 때 수행된다.
실시예에 따라 상기 현재 사용량과 상기 기준 사용량 각각은 상기 CPU의 유휴 시간(idle time)이다.
다른 실시예에 따라 상기 현재 사용량과 상기 기준 사용량 각각은 상기 CPU의 동작 전압과 상기 CPU의 동작 주파수 중에서 적어도 하나이다.
본 발명의 다른 실시예에 따른 시스템-온 칩의 동작 방법은 애플리케이션 프로그램이 실행됨에 따라 생성된 가속 요청 신호를 수신하는 단계와, 상기 가속 요청 신호에 따라, 상기 애플리케이션 프로그램에 의해 실행되는 멀티미디어를 가속하기 위한 디폴트 가속기가 하드웨어 가속기인지 또는 CPU에서 실행가능한 프로그램으로 구현된 소프트웨어 가속기인지를 판단하는 단계와, 상기 디폴트 가속기가 상기 소프트웨어 가속기일 때 또는 상기 하드웨어 가속기이면서 다른 멀티미디어를 가속하고 있을 때, 상기 CPU의 현재 사용량과 기준 사용량을 비교하고 비교 신호를 생성하는 단계; 및 상기 비교 신호에 따라 상기 디폴트(defalut) 가속기를 넌-디폴트(non-default) 가속기로 변경하는 단계를 포함한다.
상기 판단하는 단계는 테이블에 저장된 가속기 정보에 기초하여 판단한다.
본 발명의 실시 예에 따른 시스템-온 칩은 이종의 가속기들(heterogeneous accelerators)과, 애플리케이션 프로그램에 의해 실행되는 멀티미디어를 가속하기 위해 상기 이종의 가속기들 사이의 스위칭을 위한 비교 신호를 생성하는 가속기 컨트롤러 모듈을 실행시킬 수 있는 CPU(central processing unit)를 포함한다.
상기 가속기 컨트롤러 모듈은 상기 CPU의 현재 사용량과 기준 사용량을 비교하고 상기 비교 신호를 출력하고, 상기 이종의 가속기들은 하드웨어 장치로 구현된 하드웨어 가속기와 상기 CPU에서 실행가능한 프로그램 코드로 구현된 소프트웨어 가속기를 포함하며, 상기 소프트웨어 가속기는 메모리로부터 상기 CPU로 로드된 후 실행된다.
실시 예에 따라 상기 하드웨어 가속기가 상기 멀티미디어를 가속하기 위한 디폴트 가속기로 설정되고 다른 멀티미디어를 가속하고 있을 때, 상기 가속기 컨트롤러 모듈은 상기 현재 사용량에 대응되는 상기 CPU의 유휴 시간이 상기 기준 사용량에 대응되는 상기 CPU의 유휴 시간보다 길 때 생성된 상기 비교 신호에 따라, 상기 멀티미디어를 가속하기 위해 상기 하드웨어 가속기를 상기 소프트웨어 가속기로 변경한다.
다른 실시 예에 따라 상기 소프트웨어 가속기가 상기 멀티미디어를 가속하기 위한 디폴트 가속기로 설정되어 있을 때, 상기 가속기 컨트롤러 모듈은 상기 현재 사용량에 대응되는 상기 CPU의 유휴 시간이 상기 기준 사용량에 대응되는 상기 CPU의 유휴 시간보다 짧을 때 생성된 상기 비교 신호에 따라, 상기 멀티미디어를 가속하기 위해 상기 소프트웨어 가속기를 상기 하드웨어 가속기로 변경한다.
또 다른 실시예에 따라 상기 하드웨어 가속기가 상기 멀티미디어를 가속하기 위한 디폴트 가속기로 설정되고 다른 멀티미디어를 가속하고 있을 때, 상기 가속기 컨트롤러 모듈은 상기 현재 사용량에 대응되는 상기 CPU의 동작 주파수가 상기 기준 사용량에 대응되는 상기 CPU의 주파수보다 낮을 때 생성된 상기 비교 신호에 따라, 상기 멀티미디어를 가속하기 위해 상기 하드웨어 가속기를 상기 소프트웨어 가속기로 변경한다.
또 다른 실시 예에 따라 상기 소프트웨어 가속기가 상기 멀티미디어를 가속하기 위한 디폴트 가속기로 설정되어 있을 때, 상기 가속기 컨트롤러 모듈은 상기 현재 사용량에 대응되는 상기 CPU의 동작 주파수가 상기 기준 사용량에 대응되는 상기 CPU의 주파수보다 높을 때 생성된 상기 비교 신호에 따라, 상기 멀티미디어를 가속하기 위해 상기 소프트웨어 가속기를 상기 하드웨어 가속기로 변경한다.
실시 예에 따라 상기 현재 사용량과 상기 기준 사용량 각각은 상기 CPU의 유휴 시간이고, 다른 실시 예에 따라 상기 현재 사용량과 상기 기준 사용량 각각은 상기 CPU의 동작 전압과 상기 CPU의 동작 주파수 중에서 적어도 하나이다.
본 발명의 실시예에 따른 휴대용 장치는 멀티미디어를 저장하는 불휘발성 메모리와, 디스플레이와, 이종의 가속기들(heterogeneous accelerators)과, 애플리케이션 프로그램에 의해 실행되는 상기 멀티미디어를 가속하기 위해 상기 이종의 가속기들 사이의 스위칭을 위한 비교 신호를 생성하는 가속기 컨트롤러 모듈을 실행시킬 수 있는 CPU(central processing unit)를 포함한다.
상기 가속기 컨트롤러 모듈은 상기 CPU의 현재 사용량과 기준 사용량을 비교하고 상기 비교 신호를 출력하고, 상기 이종의 가속기들 중에서 상기 비교 신호에 따라 선택된 가속기는 가속된 멀티미디어를 상기 디스플레이를 통하여 디스플레이하고, 상기 이종의 가속기들은 하드웨어 장치로 구현된 하드웨어 가속기와 상기 CPU에서 실행가능한 프로그램 코드로 구현된 소프트웨어 가속기를 포함하며, 상기 소프트웨어 가속기는 메모리로부터 상기 CPU로 로드된 후 실행된다.
본 발명의 실시 예에 따른 시스템-온 칩은 하드웨어 가속기와, 애플리케이션 프로그램, 가속기 제어 모듈, 및 소프트웨어 가속기를 저장하는 메모리와, 상기 하드웨어 가속기와 상기 메모리를 제어하기 위한 CPU를 포함하며, 상기 CPU에 의하여 상기 애플리케이션 프로그램, 상기 가속기 제어 모듈, 및 상기 소프트웨어 가속기가 실행됨에 따라 상기 가속기 제어 모듈은 상기 애플리케이션 프로그램이 실행됨에 따라 생성된 가속 요청 신호를 수신하고, 상기 가속 요청 신호에 따라, 상기 애플리케이션 프로그램에 의해 실행되는 멀티미디어를 가속하기 위한 디폴트 가속기가 하드웨어 가속기인지 또는 상기 CPU에서 실행가능한 프로그램으로 구현된 소프트웨어 가속기인지를 판단하고, 상기 디폴트 가속기가 상기 소프트웨어 가속기일 때 또는 상기 하드웨어 가속기이면서 다른 멀티미디어를 가속하고 있을 때, 상기 CPU의 현재 사용량과 기준 사용량을 비교하고 비교 신호를 생성하고, 상기 비교 신호에 따라 상기 디폴트 가속기를 넌-디폴트 가속기로 변경한다.
상기 가속기 제어 모듈은 상기 메모리에 저장되고 상기 디폴트 가속기에 대한 가속기 정보에 기초하여 상기 디폴트 가속기를 판단한다.
상기 가속기 제어 모듈은 사용자 입력 인터페이스로부터 입력된 정보에 따라 상기 기준 사용량을 조절한다.
본 발명의 또 다른 실시 예에 따른 시스템-온 칩의 동작 방법은 가속기 제어 모듈이 애플리케이션 프로그램이 실행됨에 따라 생성된 가속 요청 신호를 수신하는 단계와, 상기 가속기 제어 모듈이 상기 가속 요청 신호에 따라 테이블로부터 가속기 정보를 읽어오는 단계와, 상기 가속기 정보에 따라 상기 가속기 제어 모듈이, 상기 애플리케이션 프로그램에 의해 실행되는 멀티미디어를 가속하기 위하여 하드웨어 장치로 구현된 하드웨어 가속기와 CPU에서 실행가능한 프로그램 코드로 구현된 소프트웨어 가속기 중에서 어느 하나를 선택적으로 구동하는 단계를 포함하며, 상기 가속기 정보는 상기 하드웨어 가속기의 가속 시간과 상기 소프트웨어 가속기의 가속 기간 중에서 짧은 가속 시간을 갖는 가속기를 나타낸다.
본 발명의 또 다른 실시 예에 따른 시스템-온 칩의 동작 방법은 변경 신호를 수신하는 단계와, 상기 변경 신호가 전력 소모량을 기준으로 선택된 디폴트 가속기를 선택하는 지시 신호인지 또는 성능을 기준으로 선택된 디폴트 가속기를 선택하는 지시 신호인지를 판단하는 단계와, 상기 판단 결과에 따라 다수의 테이블 중에서 어느 하나에 저장된 가속기 정보를 참조하는 단계와, 상기 가속기 정보에 따라, 하드웨어 장치로 구현된 하드웨어 가속기와 CPU에서 실행가능한 프로그램 코드로 구현된 소프트웨어 가속기 중에서 디폴트로 설정된 상기 디폴트 가속기를 구동하는 단계를 포함한다.
상기 변경 신호가 전력 소모량을 기준으로 선택된 디폴트 가속기를 선택하는 지시 신호일 때, 상기 CPU의 현재 사용량과 기준 사용량을 비교하고 비교 신호를 생성하는 단계와, 상기 비교 신호에 따라 상기 디폴트 가속기를 넌-디폴트(non-default) 가속기로 변경하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 방법과 상기 방법을 수행할 수 있는 시스템-온 칩은 가속기 제어 모듈을 이용하여 애플리케이션 프로그램에 의하여 실행되는 멀티미디어를 가속하기 위하여 이종의 가속기들 사이에서 스위칭을 할 수 있는 효과가 있다.
이종의 가속기들을 포함하는 시스템-온 칩에서, 전력 소모량 및/또는 성능을 기반으로 상기 스위칭이 수행됨에 따라 상기 시스템-온 칩의 전력 소모량을 감소시키면서 성능을 향상시킬 수 있는 효과가 있다.
또한, 멀티-가속을 수행하며 이종의 가속기들을 포함하는 시스템-온 칩은 상기 이종의 가속기들을 동시에 구동시킬 수 있다. 따라서, 가속 능력이 증가하는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 2는 도 1에 도시된 데이터 처리 시스템의 동작 방법을 설명하기 위한 블록도이다.
도 3은 본 발명의 실시예에 따른 하드웨어 가속기와 소프트웨어 가속기 사이의 스위칭 방법을 설명하기 위한 개념도이다.
도 4는 본 발명의 일 실시 예에 따라 소비 전력을 기준으로 애플리케이션 프로그램별로 디폴트 가속기를 선택하는 방법을 설명하기 위한 플로우차트이다.
도 5는 도 4에 도시된 방법에 따라 애플리케이션 프로그램별 설정된 디폴트 가속기에 대한 선택 정보를 포함하는 테이블의 일 실시 예를 나타낸다.
도 6은 도 1에 도시된 데이터 처리 시스템의 동작 방법의 일 실시 예를 나타내는 플로우차트이다.
도 7은 도 1에 도시된 데이터 처리 시스템의 동작 방법의 다른 실시 예를 나타내는 플로우차트이다.
도 8은 도 1에 도시된 데이터 처리 시스템의 동작 방법의 또 다른 실시 예를 나타내는 플로우차트이다.
도 9는 본 발명의 다른 실시 예에 따라 성능을 애플리케이션 프로그램별로 디폴트 가속기를 선택하는 방법을 설명하기 위한 플로우차트이다.
도 10은 도 1에 도시된 데이터 처리 시스템의 동작 방법의 또 다른 실시 예를 나타내는 플로우차트이다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 2는 도 1에 도시된 데이터 처리 시스템의 동작 방법을 설명하기 위한 블록도이다.
도 3은 본 발명의 실시예에 따른 하드웨어 가속기와 소프트웨어 가속기 사이의 스위칭 방법을 설명하기 위한 개념도이다.
도 4는 본 발명의 일 실시 예에 따라 소비 전력을 기준으로 애플리케이션 프로그램별로 디폴트 가속기를 선택하는 방법을 설명하기 위한 플로우차트이다.
도 5는 도 4에 도시된 방법에 따라 애플리케이션 프로그램별 설정된 디폴트 가속기에 대한 선택 정보를 포함하는 테이블의 일 실시 예를 나타낸다.
도 6은 도 1에 도시된 데이터 처리 시스템의 동작 방법의 일 실시 예를 나타내는 플로우차트이다.
도 7은 도 1에 도시된 데이터 처리 시스템의 동작 방법의 다른 실시 예를 나타내는 플로우차트이다.
도 8은 도 1에 도시된 데이터 처리 시스템의 동작 방법의 또 다른 실시 예를 나타내는 플로우차트이다.
도 9는 본 발명의 다른 실시 예에 따라 성능을 애플리케이션 프로그램별로 디폴트 가속기를 선택하는 방법을 설명하기 위한 플로우차트이다.
도 10은 도 1에 도시된 데이터 처리 시스템의 동작 방법의 또 다른 실시 예를 나타내는 플로우차트이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
본 명세서에서 기재된 가속기(accelerator)는 다음의 가속기를 포함한다.
하드웨어 가속기 또는 소프트웨어 가속기로서 구현될 수 있는 비디오 코덱 (video codec)은 디지털 비디오를 압축(compression) 및/또는 해제(decompression)할 수 있는 장치 또는 소프트웨어를 의미한다.
소프트웨어 가속기로 구현될 수 있는 오디오 코덱(audio codec)은 주어진 오디오 파일 포멧(given audio file format) 또는 스트리밍 오디오 포멧(streaming audio format)에 따라 디지털 오디오 데이터를 압축 및/또는 해제할 수 있는 알고리즘을 구현한 컴퓨터 프로그램을 의미한다. 또한, 하드웨어 가속기로 구현될 수 있는 오디오 코덱은 아날로그 오디오를 디지털 신호들로 인코드(encode)하고 디지털 신호들을 아날로그 오디오로 디코드(decode)할 수 있는 하나의 장치를 의미한다.
소프트웨어 가속기로 구현될 수 있는 다운로드 가속기(download accelerator) 또는 다운로드 매니저(download manager)는 다운로딩(downloading)을 위한 전용 소프트웨어를 의미한다.
하드웨어 가속기로 구현될 수 있는 그래픽스 프로세싱 유닛(graphics processing unit) 또는 그래픽스 가속기(graphics accelarator)는 전용 그래픽스 랜더링 장치(dedicated graphics rendering device)를 의미한다. 소프트웨어 가속기로 구현될 수 있는 가속기(라이브러리(library))는 상기 그래픽스 프로세싱 유닛을 위한 프로그램들을 라이트하기 위한 라이브러리를 의미한다.
하드웨어 가속기 또는 소프트웨어 가속기로서 구현될 수 있는 암호 가속기 (cryptographic accelerator)는 암호화(encrypting) 및/또는 복호화(decrypting)를 수행할 수 있는 장치 또는 소프트웨어를 의미한다.
하드웨어 가속기로 구현될 수 있는 웹 가속기(web accelerator)는 웹사이트를 빠르게 액세스할 수 있는 프록시 서버(proxy server)를 의미한다.
MP3 플레이어 또는 MP4 플레이어는 하드웨어 또는 소프트웨어로 구현될 수 있다. 또한, 2D 또는 3D 가속기는 하드웨어 또는 소프트웨어로 구현될 수 있다.
상술한 가속기 이외에 멀티미디어를 가속할 수 있는 가속기는 하드웨어 또는 소프트웨어로 구현될 수 있다. 또한, 오디오 인코더, 오디오 디코더, 비디오 인코더, 및 비디오 디코더도 가속기에 포함될 수 있다.
즉, 본 발명의 실시 예에 따른 데이터 처리 시스템은 이종의 가속기들 (heterogeneous accelerators), 예컨대 하드웨어 가속기와 소프트웨어 가속기를 함께 포함하고 있으며 CPU의 현재 사용량(current usage)과 기준 사용량(reference usage)의 비교 결과를 나타내는 비교 신호에 따라 상기 이종의 가속기들 사이에서 스위칭을 할 수 있다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 1을 참조하면, 데이터 처리 시스템(1)은 이동 전화기, 스마트폰, 태블릿 컴퓨터(tablet computer), PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PDN(personal navigation device 또는 portable navigation device), 손으로 들고다닐 수 있는 게임 콘솔(handheld game console), 또는 e-북(e-book)과 같이 손으로 들고다닐 수 있는 장치(handheld device)로 구현될 수 있다.
데이터 처리 시스템(11)은 시스템-온 칩(system-on chip(SoC); 10), 메모리 (21), 및 디스플레이(26)를 포함한다. 예컨대, SoC(10), 메모리(21), 및 디스플레이(26)는 시스템 PCB(printed circuit board)에 구현될 수 있다.
SoC(10)는 CPU(central processing unit; 12), ROM(read only memory; 14), RAM(random access memory; 16), 하드웨어 가속기(18), 입출력 인터페이스(20), 버스(22), 및 디스플레이 컨트롤러(26)를 포함한다.
프로세서(processor)라고도 불릴 수 있는 CPU(12)는 메모리(14 또는 16)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 예컨대, CPU(12)는 클락 신호 발생기(미 도시)로부터 출력된 클락 신호에 응답하여 상기 프로그램들 및/또는 상기 데이터를 처리 또는 실행할 수 있다.
CPU(12)는 멀티-코어 프로세서(multi-core processor)로 구현될 수 있다. 상기 멀티-코어 프로세서는 두 개 또는 그 이상의 독립적인 실질적인 프로세서들('코어들(cores)'이라고 불림)을 갖는 하나의 컴퓨팅 컴포넌트(computing component)이고, 상기 프로세서들 각각은 프로그램 명령들(program instructions)을 읽고 실행할 수 있다. 상기 멀티-코어 프로세서는 다수의 가속기를 동시에 구동할 수 있으므로, 상기 멀티-코어 프로세서를 포함하는 데이터 처리 시스템은 멀티-가속(multi-acceleration)을 수행할 수 있다.
메모리(14 또는 16)에 저장된 프로그램들 및/또는 데이터는 필요에 따라 CPU (12)의 메모리, 예컨대 캐시 메모리에 로드(load)될 수 있다.
ROM(14)은 영구적인 프로그램들 및/또는 데이터를 저장할 수 있다. ROM(14)은 EPROM(erasable programmable read-only memory) 또는 EEPROM(electrically erasable programmable read-only memory)으로 구현될 수 있다.
RAM(16)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대, 메모리(14 또는 21)에 저장된 프로그램들 및/또는 데이터는 CPU(12)의 제어 또는 ROM(14)에 저장된 부팅 코드(booting code)에 따라 RAM(16)에 일시적으로 저장될 수 있다. RAM(16)은 DRAM(dynamic RAM) 또는 SRAM(static RAM)으로 구현될 수 있다.
하드웨어 가속기(18)는 멀티미디어(또는 멀티미디어 데이터), 예컨대 텍스트 (text), 오디오(audio), 정지 영상들(still images), 애니메이션(animation), 비디오(video), 2차원 데이터, 또는 3차원 데이터의 처리 성능을 향상시키기 위한 하드웨어 장치 또는 코-프로세서(co-processor)를 의미할 수 있다.
도 1에서는 설명의 편의를 위하여, 하나의 하드웨어 가속기(18)만을 도시하나, 실시 예에 따라 SoC(10)는 하나 또는 그 이상의 하드웨어 가속기들을 포함할 수 있다. 예컨대, 적어도 하나의 애플리케이션 프로그램은 하나의 하드웨어 가속기를 실행시킬 수 있다.
SoC(10)와 메모리(21)는 입출력 인터페이스(20)를 통하여 데이터를 주고받을 수 있다.
메모리(21)는 CPU(12)에 의하여 처리될 프로그램들 및/또는 멀티미디어를 저장할 수 있다. 메모리(21)는 불휘발성(non-volatile) 메모리로 구현될 수 있다. 상기 불휘발성 메모리는 플래시(flash) 메모리 또는 저항성(resistive) 메모리로 구현될 수 있다. 이때, 입출력 인터페이스(20)는 메모리 컨트롤러로 구현될 수 있다.
각 구성 요소(12, 14, 16, 18, 20, 및 24)는 버스(22)를 통하여 서로 통신할 수 있다.
디스플레이(26)의 동작을 제어할 수 있는 디스플레이 컨트롤러(24)는 CPU (12)에 로드된 소프트웨어 가속기 또는 하드웨어 가속기(18)에 의하여 가속된(또는 처리된) 멀티미디어를 디스플레이할 수 있다.
도 2는 도 1에 도시된 데이터 처리 시스템의 동작 방법을 설명하기 위한 블록도이고, 도 3은 본 발명의 실시예에 따른 하드웨어 가속기와 소프트웨어 가속기 사이의 스위칭 방법을 설명하기 위한 개념도이다.
도 1부터 도 3을 참조하면, CPU(12)의 OS(operating system)는 CPU(12)의 동작을 전반적으로 제어한다. 예컨대, 애플리케이션 프로그램(또는 멀티미디어 플레이어(multimedia player); 12-1)이 CPU(12)의 메모리로 로드되고 실행되면, 애플리케이션 프로그램(12-1)은 가속 요청 신호(ACC_REQ)를 생성한다. 실시 예에 따라, 애플리케이션 프로그램(12-1)이 사용자에 의하여 실행되면, RAM(16)에 로드된 애플리케이션 프로그램(12-1)은 CPU(12)의 메모리로 로드될 수 있다.
각 프로그램(12-1~12-6)은 메모리(14 또는 20)로부터 RAM(16)으로 로드될 수 있다. RAM(16)에 로드되어 있던 가속 컨트롤러 모듈(또는 가속 컨트롤 코드; 12-2)은 버스(22)를 통하여 CPU(12)의 메모리로 로드되고, RAM(16)에 로드되어 있던 테이블(12-3)은 CPU(12)의 상기 메모리로 로드된다.
가속 컨트롤러 모듈(12-2)은 가속 요청 신호(ACC_REQ)에 응답하여 애플리케이션 프로그램(12-1)에 의해 실행되는 멀티미디어를 가속하기 위해 디폴트 (default)로 설정된 디폴트 가속기가 하드웨어 장치로 구현된 하드웨어 가속기인지 또는 CPU(12)에서 실행가능한 프로그램으로 구현된 소프트웨어 가속기인지를 판단한다. 이때, 가속 컨트롤러 모듈(12-2)은 테이블(12-3)에 저장된 가속기 정보를 참조하여 상기 디폴트 가속기를 판단할 수 있다.
예컨대, 애플리케이션 프로그램(12-1)에 대해 디폴트로 설정된 디폴트 가속기가 하드웨어 가속기(18)일 때, RAM(16)에 로드된 하드웨어 가속기 드라이버(12-5)는 가속 컨트롤러 모듈(12-2)의 제어(ACC_CTR)에 따라 CPU(12)로 로드되고, 하드웨어 가속기(18)는 CPU(12)로 로드된 하드웨어 가속기 드라이버(12-5)의 제어에 따라 구동한다.
따라서 하드웨어 가속기(18)는 애플리케이션 프로그램(12-1)에 의하여 요구되는(또는 실행되는) 멀티미디어를 가속하고 가속된 멀티미디어를 디스플레이 컨트롤러(24)를 통하여 디스플레이(26)로 전송한다.
그러나, 애플리케이션 프로그램(12-1)에 대해 디폴트로 설정된 디폴트 가속기가 소프트웨어 가속기일 때, RAM(16)에 로드된 소프트웨어 가속기(12-4)는 가속 컨트롤러 모듈(12-2)의 제어(ACC_CTR)에 따라 CPU(12)로 로드되고, CPU(12)로 로드된 소프트웨어 가속기(12-4)는 가속 컨트롤러 모듈(12-2)의 제어(ACC_CTR)에 따라 실행(execute) 또는 구동(drive)된다.
따라서 소프트웨어 가속기(12-4)는 애플리케이션 프로그램(12-1)에 의하여 요구되는(또는 실행되는) 멀티미디어를 가속하고 가속된 멀티미디어를 디스플레이 컨트롤러(24)를 통하여 디스플레이(26)로 전송한다.
도 4는 본 발명의 일 실시 예에 따라 소비 전력을 기준으로 애플리케이션 프로그램별로 디폴트 가속기를 선택하는 방법을 설명하기 위한 플로우차트이고, 도 5는 도 4에 도시된 방법에 따라 애플리케이션 프로그램별 설정된 디폴트 가속기에 대한 가속기 정보를 포함하는 테이블의 일 실시 예를 나타낸다.
도 4와 도 5를 참조하면, 가속기 설정 동작이 시작되면, CPU(12)로 로드된 가속 컨트롤러 모듈(12-2)은 제1애플리케이션 프로그램(APP1)에 할당된 하드웨어 가속기가 실행될 때 소모되는 전력(Phw)을 측정(또는 예측)한다(S10).
그리고, 가속 컨트롤러 모듈(12-2)은 제1애플리케이션 프로그램(APP1)에 할당된 소프트웨어 가속기가 실행될 때 소모되는 전력(Psw)을 측정(또는 예측)한다 (S20).
도 4에서는 S10단계가 S20단계보다 먼저 수행되는 실시 예를 도시하나, 실시 예에 따라 S10단계보다 S20단계가 먼저 수행될 수도 있다.
가속 컨트롤러 모듈(12-2)은 제1애플리케이션 프로그램(APP1)에 할당된 하드웨어 가속기의 소모 전력(Phw)과 소프트웨어 가속기의 소모 전력(Psw)을 서로 비교한다(S30).
예컨대, 소프트웨어 가속기의 소모 전력(Psw)이 하드웨어 가속기의 소모 전력(Phw)보다 많을 때(S30), 가속 컨트롤러 모듈(12-2)은 제1애플리케이션 프로그램 (APP1)에 대한 하드웨어 가속기(ACChw)를 디폴트 가속기(ACCdef_pow)로서 선택한다 (S40).
그러나, 소프트웨어 가속기의 소모 전력(Psw)이 하드웨어 가속기의 소모 전력(Phw)보다 적을 때, 가속 컨트롤러 모듈(12-2)은 제1애플리케이션 프로그램 (APP1)에 대한 소프트웨어 가속기(ACCsw)를 디폴트 가속기(ACCdef_pow)로 선택한다 (S50).
즉, 가속 컨트롤러 모듈(12-2)은 소프트웨어 가속기와 하드웨어 가속기 중에서 적은 전력을 소모하는 가속기를 제1애플리케이션 프로그램(APP1)에 대한 디폴트 가속기로서 선택한다.
가속 컨트롤러 모듈(12-2)은 S40단계의 결과 또는 S50단계의 결과에 따라 선택된 가속기 정보(SI)를 테이블(12-3)에 저장한다.
도 1의 SoC(10)가 n(n은 자연수)개의 애플리케이션 프로그램들과 n개의 하드웨어 가속기들과 n개의 소프트웨어 가속기들을 포함할 때, 가속 컨트롤러 모듈(12-2)은 도 4를 참조하여 설명한 바와 같이 소모 전력을 기준으로 상기 n개의 애플리케이션 프로그램들 각각에 대한 디폴트 가속기를 선택하고 선택된 가속기에 대한 가속기 정보(SI)를 테이블(12-3)에 저장할 수 있다.
도 5에 도시된 바와 같이, 가속 컨트롤러 모듈(12-2)은 제1애플리케이션 프로그램(APP1)에 대한 디폴트 가속기로서 하드웨어 가속기(ACChw)를 선택하고 가속기 정보(SI; 예컨대 1)를 테이블(12-3)에 저장한다.
가속 컨트롤러 모듈(12-2)은 제2애플리케이션 프로그램(APP2)에 대한 디폴트 가속기로서 하드웨어 가속기(ACChw)를 선택하고 가속기 정보(SI, 예컨대, 1)를 테이블(12-3)에 저장한다. 또한, 가속 컨트롤러 모듈(12-2)은 제3애플리케이션 프로그램(APP3)에 대한 디폴트 가속기로서 소프트웨어 가속기(ACCsw)를 선택하고 가속기 정보(SI, 예컨대 0)를 테이블(12-3)에 저장한다. 가속 컨트롤러 모듈(12-1)은 제n애플리케이션 프로그램(APPn)에 대한 디폴트 가속기로서 하드웨어 가속기 (ACCsw)를 선택하고 가속기 정보(SI, 예컨대 0)를 테이블(12-3)에 저장한다.
가속기 정보(SI)를 포함하는 테이블(12-3)은 ROM(14) 또는 메모리(20)에 저장될 수 있다. ROM(14) 또는 메모리(20)에 저장된 테이블(12-3)은 SoC(10)가 부팅 (booting)될 때 또는 특정 애플리케이션 프로그램 실행될 때마다 RAM(16)에 로드된 후 CPU(12)의 메모리로 로드될 수 있다. 따라서, 테이블(12-3)은 가속 컨트롤러 모듈(12-2)에 의하여 참조될 수 있다.
도 6은 도 1에 도시된 데이터 처리 시스템의 동작 방법의 일 실시 예를 나타내는 플로우차트이다. 도 6에 도시된 동작 방법은 전력 소모량을 기준으로 하드웨어 가속기와 소프트웨어 가속기 중에서 어느 하나를 디폴트 가속기로 설정한 후, 각 가속기의 성능을 기준으로 상기 디폴트 가속기를 넌-디폴트 가속기로 스위칭하는 동작을 나타낸다.
도 1, 도 2, 도 5, 및 도 6을 참조하면, 가속 컨트롤러 모듈(12-2)은, 제1애플리케이션 프로그램(APP1; 12-1)이 실행됨에 따라, 제1애플리케이션 프로그램(12-1)에 의하여 생성된 가속 요청 신호(ACC_REQ)를 수신한다(S110).
가속 컨트롤러 모듈(12-2)은 가속 요청 신호(ACC_REQ)에 따라 테이블(12-3)로부터 제1애플리케이션 프로그램(12-1)에 대한 가속기 정보(SI)를 읽어온다. 따라서 가속 컨트롤러 모듈(12-2)은 가속기 정보(SI)에 따라 제1애플리케이션 프로그램 (12-1)에 의해 실행될 멀티미디어를 가속할 수 있는 디폴트 가속기를 판단할 수 있다.
가속 컨트롤러 모듈(12-2)은 가속 요청 신호(ACC_REQ)에 따라 CPU(12)의 현재 사용량과 기준 사용량을 비교하고 비교 결과에 따라 비교 신호를 생성한다 (S112). 상기 비교 신호는 이종의 가속기들(18과 12-4) 사이에서 스위칭을 위한 신호(예컨대, ACC_CTR)로써 사용될 수 있다.
상기 비교 신호에 따라, 가속 컨트롤러 모듈(12-2)은 제1애플리케이션 프로그램(12-1)에 대해 디폴트로 설정된 디폴트 가속기(예컨대, 하드웨어 가속기 (ACChw))를 넌-디폴트(non-default) 가속기(예컨대, 소프트웨어 가속기(ACCsw))로 변경하고(S114), 상기 넌-디폴트 가속기를 구동할 수 있다. 이에 따라 상기 넌-디폴트 가속기는 제1애플리케이션 프로그램(12-1)에 대응하는 멀티미디어를 가속할 수 있다.
다른 예로서, 가속 컨트롤러 모듈(12-2)은 제3애플리케이션 프로그램(APP3)이 실행됨에 따라 제3애플리케이션 프로그램(APP3)에 의하여 생성된 가속 요청 신호를 수신한다(S110).
가속 컨트롤러 모듈(12-2)은 상기 가속 요청 신호에 따라 테이블(12-3)로부터 제3애플리케이션 프로그램(APP3)에 대한 가속기 정보(SI)를 읽어온다. 따라서 가속 컨트롤러 모듈(12-2)은 가속기 정보(SI)에 기초하여 제3애플리케이션 프로그램(APP3)에 의해 실행될 멀티미디어를 가속할 수 있는 디폴트 가속기를 판단할 수 있다.
가속 컨트롤러 모듈(12-2)은 상기 가속 요청 신호에 따라 CPU(12)의 현재 사용량과 기준 사용량을 비교하고(S112), 비교 결과에 따라 제3애플리케이션 프로그램(APP3)에 대해 디폴트로 설정된 디폴트 가속기(예컨대, 소프트웨어 가속기 (ACCsw))를 넌-디폴트 가속기(예컨대, 하드웨어 가속기(ACChw))로 변경하고(S114), 상기 넌-디폴트 가속기를 구동할 수 있다. 이에 따라 상기 넌-디폴트 가속기는 제3애플리케이션 프로그램(APP3)에 대응하는 멀티미디어를 가속할 수 있다.
즉, 가속 컨트롤러 모듈(12-2)은 각 가속기의 성능을 비교하고 비교 결과에 따라 이종의 가속기들(18과 12-4) 사이에서 스위칭할 수 있다(S114).
상기 현재 사용량과 상기 기준 사용량 각각은 CPU(12)의 유휴 시간(idle time)일 수 있다. 또한, 상기 현재 사용량과 상기 기준 사용량 각각은 CPU(12)의 동작 전압과 CPU(12)의 동작 주파수 중에서 적어도 하나일 수 있다.
도 6에 도시된 데이터 처리 시스템의 동작 방법은 도 7 또는 도 8을 통하여 좀더 상세히 설명된다.
도 7은 도 1에 도시된 데이터 처리 시스템의 동작 방법의 다른 실시 예를 나타내는 플로우차트이다. 상술한 바와 같이 디폴트 가속기(ACCdef)는 하드웨어 가속기의 전력 소모량과 소프트웨어 가속시의 전력 소모량의 비교 결과에 따라 결정된 가속기이다.
도 1, 도 2, 및 도 7을 참조하면, 가속 컨트롤러 모듈(12-2)이 요청자, 예컨대 제1애플리케이션 프로그램(12-1)에 의하여 생성된 가속 요청 신호(ACC_REQ)를 수신하면(S210), 가속 컨트롤러 모듈(12-2)은 테이블(12-3)에 저장된 가속기 정보 (SI)에 기초하여 제1애플리케이션 프로그램(12-1)에 의해서 실행되는 멀티미디어를 가속하기 위한 디폴트 가속기(ACCdef)가 하드웨어 가속기(ACChw; 18)인지 또는 소프트웨어 가속기(12-4)인지를 판단한다(S212).
디폴트 가속기(ACCdef)가 하드웨어 가속기(ACChw; 18)일 때, 가속 컨트롤러 모듈(12-2)은 하드웨어 가속기(ACChw; 18)의 현재 상태, 즉 다른 멀티미디어를 가속하고 있는지의 여부를 판단한다(S214).
하드웨어 가속기(ACChw; 18)가 현재 동작하지 않고 있을 때, 가속 컨트롤러 모듈(12-2)은 하드웨어 가속기 드라이버(12-5)를 이용하여 하드웨어 가속기(ACChw; 18)를 구동시킨다(S216).
그러나, 하드웨어 가속기(ACChw; 18)가 현재 동작 중일 때, 즉 다른 애플리케이션 프로그램에 대응하는 멀티미디어를 가속하고 있을 때, 가속 컨트롤러 모듈 (12-2)은 CPU(12)의 현재 사용량을 판단하고 판단 결과에 따라 하드웨어 가속기 (ACChw; 18)를 사용할지 또는 하드웨어 가속기(ACChw; 18) 대신에 소프트웨어 가속기(12-4)를 사용할지를 판단한다(S218).
보다 구체적으로, 가속 컨트롤러 모듈(12-2)은 CPU(12)의 현재 사용량에 대응되는 현재 유휴 시간(idle time)을 확인 또는 계산한다(S220). 상기 유휴 시간이 짧으면 짧을수록 CPU(12)의 부하(load)는 증가한다.
가속 컨트롤러 모듈(12-2)은 현재 유휴 시간(Idle_cur)과 기준 사용량에 대응되는 기준 유휴 시간(Idle_thr)을 서로 비교한다(S222).
현재 유휴 시간(Idle_cur)이 기준 유휴 시간(Idle_thr)보다 짧으면(S222), 가속 컨트롤러 모듈(12-2)은 하드웨어 가속기(ACChw; 18)의 동작이 종료될 때까지 기다린 후(S224), 하드웨어 가속기 드라이버(12-5)를 실행시킨다. 즉, 가속 컨트롤러 모듈(12-2)은 CPU(12)의 과부하(over load)를 피하기 위하여 소프트웨어 가속기 (12-4) 대신에 하드웨어 가속기(ACChw; 18)를 선택한다. 따라서 하드웨어 가속기 드라이버(12-5)는 제1애플리케이션 프로그램(12-1)에 대응하는 멀티미디어를 가속하기 위하여 하드웨어 가속기(ACChw; 18)를 구동한다.
그러나, 현재 유휴 시간(Idle_cur)이 기준 유휴 시간(Idle_thr)보다 길면 (S222), 가속 컨트롤러 모듈(12-2)은 소프트웨어 가속기(12-4)를 구동시키기 위하여 소프트웨어 가속기(12-4)가 현재 동작 중인지의 여부를 판단한다(S226).
판단 결과 소프트웨어 가속기(12-4)가 현재 동작하고 있지 않을 때, 가속 컨트롤러 모듈(12-2)은 소프트웨어 가속기(ACCsw; 12-4)를 실행시킨다(S228). 그러나, 소프트웨어 가속기(12-4)가 현재 동작 중일 때, 즉 다른 애플리케이션 프로그램에 대응하는 멀티미디어를 가속하고 있을 때, 소프트웨어 가속기(12-4)는 상기 가속 동작이 종료될 때까지 기다린 후(S230), 가속 컨트롤러 모듈(12-2)의 제어 (ACC_CTR)에 따라 소프트웨어 가속기(12-4)는 제1애플리케이션 프로그램(12-1)에 대응하는 멀티미디어를 가속한다.
도 8은 도 1에 도시된 데이터 처리 시스템의 동작 방법의 또 다른 실시 예를 나타내는 플로우차트이다. 상술한 바와 같이 디폴트 가속기(ACCdef)는 하드웨어 가속기의 전력 소모량과 소프트웨어 가속시의 전력 소모량의 비교 결과에 따라 결정된 가속기이다.
도 1, 도 2, 및 도 8을 참조하면, SoC(10)로 전원이 공급되면, 메모리(14 또는 20)에 저장되어 있던 동적 전압과 주파수 스케일링(dynamic voltage and frequency scaling(DVFS)) 프로그램(12-6)은 RAM(16)으로 로드된 후 CPU(12)의 메모리로 로드된다. DVFS 프로그램(12-6)은 CPU(12)의 로드(load)를 고려하여 CPU (12)의 동작 전압과 동작 주파수를 제어할 수 있다.
가속 컨트롤러 모듈(12-2)이 요청자, 예컨대 제1애플리케이션 프로그램(12-1)에 의하여 생성된 가속 요청 신호(ACC_REQ)를 수신하면(S310), 가속 컨트롤러 모듈(12-2)은 테이블(12-3)에 저장된 가속기 정보(SI)에 기초하여 제1애플리케이션 프로그램(12-1)에 대한 디폴트 가속기(ACCdef)가 하드웨어 가속기(ACChw; 18)인지 또는 소프트웨어 가속기(12-4)인지를 판단한다(S312).
디폴트 가속기(ACCdef)가 하드웨어 가속기(ACChw; 18)일 때, 가속 컨트롤러 모듈(12-2)은 하드웨어 가속기(ACChw; 18)의 현재 상태, 즉 현재 동작 중인지의 여부를 판단한다(S314).
하드웨어 가속기(ACChw; 18)가 현재 동작하지 않고 있을 때, 가속 컨트롤러 모듈(12-2)은 하드웨어 가속기 드라이버(12-5)를 이용하여 하드웨어 가속기(ACChw; 18)를 구동시킨다(S316).
그러나, 하드웨어 가속기(ACChw; 18)가 현재 동작 중일 때, 즉 다른 애플리케이션 프로그램에 대응하는 멀티미디어를 처리 중일 때, 가속 컨트롤러 모듈(12-2)은 CPU(12)의 현재 사용량과 기준 사용량을 비교하고 비교 결과에 따라 하드웨어 가속기(ACChw; 18)를 사용할지 또는 하드웨어 가속기(ACChw; 18) 대신에 소프트웨어 가속기(12-4)를 사용할지를 판단한다(S318).
미리 설정된 상기 기준 사용량은 메모리(14 또는 20)에 저장될 수 있다. 또한, 가속 컨트롤러 모듈(12-2)은 버스(22)를 통하여 통신할 수 있는 사용자 입력 인터페이스(미도시)를 통하여 입력된 정보에 따라 상기 기준 사용량을 조절할 수 있다.
보다 구체적으로, 가속 컨트롤러 모듈(12-2)은 DVFS 프로그램(12-6)이 실행중인지의 여부를 판단한다(S320). DVFS 프로그램(12-6)이 실행 중일 때, 가속 컨트롤러 모듈(12-2)은 DVFS 프로그램(12-6)으로부터 CPU(12)의 현재 동작 전압에 대한 정보와 CPU(12)의 현재 동작 주파수에 대한 정보를 얻어 CPU(12)의 로드(load)를 확인한다.
가속 컨트롤러 모듈(12-2)은 CPU(12)의 현재 사용량에 대응하는 동작 주파수 (Fre_cur)와 기준 사용량에 대응하는 기준 주파수(Fre_thr)를 비교하고 비교 신호를 출력한다(S322).
동작 주파수(Fre_cur)가 기준 주파수(Fre_thr)보다 높을 때(S322), 가속 컨트롤러 모듈(12-2)은 이때 발생한 비교 신호에 응답하여 하드웨어 가속기(ACChw; 18)의 동작이 종료될 때까지 기다린 후(S324), 하드웨어 가속기 드라이버(12-5)를 실행시킨다. 즉, CPU(12)의 과부하를 줄이기 위하여, 가속 컨트롤러 모듈(12-2)은 소프트웨어 가속기(12-4) 대신에 하드웨어 가속기(ACChw; 18)를 선택한다.
따라서 하드웨어 가속기 드라이버(12-5)는 제1애플리케이션 프로그램(12-1)에 대응하는 멀티미디어를 가속하기 위하여 하드웨어 가속기(ACChw; 18)를 구동한다(S316).
동작 주파수(Fre_cur)가 기준 주파수(Fre_thr)보다 낮을 때(S322), 가속 컨트롤러 모듈(12-2)은 이때 발생한 비교 신호에 응답하여 소프트웨어 가속기(12-4)의 현재 상태, 즉 소프트웨어 가속기(12-4)가 현재 동작 중인지의 여부를 판단한다(S326).
판단 결과 소프트웨어 가속기(12-4)가 현재 동작하고 있지 않을 때, 가속 컨트롤러 모듈(12-2)은 소프트웨어 가속기(ACCsw; 12-4)를 실행시킨다(S328). 그러나, 소프트웨어 가속기(12-4)가 현재 동작 중일 때, 즉 다른 애플리케이션 프로그램에 대응하는 멀티미디어를 처리 중일 때, 소프트웨어 가속기(12-4)는 상기 처리가 종료될 때까지 기다린 후(S330), 가속 컨트롤러 모듈(12-2)의 제어(ACC_CTR)에 따라 제1애플리케이션 프로그램(12-1)에 대응하는 멀티미디어를 가속한다(S328).
DVFS 프로그램(12-6)이 실행되고 있지 않을 때(S320), 가속 컨트롤러 모듈 (12-2)은 CPU(12)의 현재 유휴 시간(Idle_cur)을 확인한다(S332). 유휴 시간이 짧으면 짧을수록 CPU(12)의 로드(load)는 증가한다.
가속 컨트롤러 모듈(12-2)은 현재 사용량에 대응하는 현재 유휴 시간 (Idle_cur)과 기준 사용량에 대응하는 기준 유휴 시간(Idle_thr)을 서로 비교한다 (S334).
현재 유휴 시간(Idle_cur)이 기준 유휴 시간(Idle_thr)보다 짧으면(S334), 가속 컨트롤러 모듈(12-2)은 하드웨어 가속기(ACChw; 18)의 동작이 종료될 때까지 기다린 후(S324), 하드웨어 가속기 드라이버(12-5)를 실행시킨다. 따라서 하드웨어 가속기 드라이버(12-5)는 제1애플리케이션 프로그램(12-1)에 대응하는 멀티미디어를 가속하기 위하여 하드웨어 가속기(ACChw; 18)를 구동한다(S316).
그러나, 현재 유휴 시간(Idle_cur)이 기준 유휴 시간(Idle_thr)보다 길면 (S334), 가속 컨트롤러 모듈(12-2)은 소프트웨어 가속기(12-4)가 현재 동작 중인지의 여부를 판단한다(S326).
판단 결과 소프트웨어 가속기(12-4)가 현재 동작하고 있지 않을 때, 가속 컨트롤러 모듈(12-2)은 소프트웨어 가속기(ACCsw; 12-4)를 실행시킨다(S328). 그러나, 소프트웨어 가속기(12-4)가 현재 동작 중일 때, 즉 다른 애플리케이션 프로그램에 대응하는 멀티미디어를 처리 중일 때, 소프트웨어 가속기(12-4)는 상기 처리가 종료될 때까지 기다린 후(S330), 가속 컨트롤러 모듈(12-2)의 제어(ACC_CTR)에 따라 실행된다(S328). 따라서 소프트웨어 가속기(12-4)는 제1애플리케이션 프로그램(12-1)에 대응하는 멀티미디어를 가속한다.
상술한 바와 같이, 본 발명의 실시 예에 따른 가속 컨트롤러 모듈(12-2)은 애플리케이션 프로그램별로 소모 전력을 기준으로 디폴트로 설정된 디폴트 가속기를 상기 디폴트 가속기의 현재 상태와 CPU(12)의 현재 사용량에 따라 동적으로 및/또는 실시간으로 이종의(heterogeneous) 가속기들 사이에서 스위칭할 수 있다.
즉, 가속 컨트롤러 모듈(12-2)은 데이터 처리 시스템(1) 또는 SoC(10)의 품질을 좌우하는 주요 팩터(factor)인 전력 소모량을 기준으로 이종의 가속기들 중에서 어느 하나를 디폴트 가속기를 설정한 후, 상기 디폴트 가속기의 성능과 넌-디폴트 가속기의 성능을 비교하고, 비교 결과에 따라 상기 디폴트 가속기를 상기 넌-디폴트 가속기로 스위칭 또는 변경할 수 있다.
예컨대, MP3 플레이어와 비디오 플레이어를 동시에 실행시킬 때, 상기 MP3 플레이어를 위한 MP3 디코더 가속기와 상기 비디오 플레이어가 실행될 때 오디오를 재생하기 위한 별도의 MP3 디코더 가속기는 동시에 구동되어 멀티-가속이 가능하다.
도 9는 본 발명의 다른 실시 예에 따라 성능을 애플리케이션 프로그램별로 디폴트 가속기를 선택하는 방법을 설명하기 위한 플로우차트이다.
도 9에 도시된 플로우차트는 하드웨어 가속기의 성능과 소프트웨어 가속기의 성능의 비교 결과를 기준으로 디폴트 가속기를 설정하는 방법을 나타낸다.
도 1, 도 2, 및 도 9를 참조하면, 가속기 설정 동작이 시작되면, CPU(12)로 로드된 가속 컨트롤러 모듈(12-2)은 애플리케이션 프로그램에 할당된 하드웨어 가속기가 가속 동작을 수행하는데 필요한 가속 시간(Thw)을 측정(또는 예측)한다 (S410).
그리고, 가속 컨트롤러 모듈(12-2)은 상기 애플리케이션 프로그램에 할당된 소프트웨어 가속기가 가속 동작을 수행하는데 필요한 가속 시간(Tsw)을 측정(또는 예측)한다(S420).
도 9에서는 S410단계가 S420단계보다 먼저 수행되는 실시 예를 도시하나, 실시 예에 따라 S410단계보다 S420단계가 먼저 수행될 수도 있다.
가속 컨트롤러 모듈(12-2)은 상기 애플리케이션 프로그램에 할당된 하드웨어 가속기의 가속 시간(Thw)과 소프트웨어 가속기의 가속 시간(Tsw)을 서로 비교한다 (S430).
예컨대, 상기 하드웨어 가속기의 가속 시간(Thw)이 상기 소프트웨어 가속기의 가속 시간(Tsw)보다 길 때, 가속 컨트롤러 모듈(12-2)은 상기 애플리케이션 프로그램에 대한 소프트웨어 가속기(ACCsw)를 디폴트 가속기(ACCdef_perf)로서 선택한다(S440).
그러나, 상기 하드웨어 가속기의 가속 시간(Thw)이 상기 소프트웨어 가속기의 가속 시간(Tsw)보다 짧을 때, 가속 컨트롤러 모듈(12-2)은 상기 애플리케이션 프로그램에 대한 하드웨어 가속기(ACChw)를 디폴트 가속기(ACCdef_porf)로 선택한다(S450).
즉, 가속 컨트롤러 모듈(12-2)은 소프트웨어 가속기의 가속 시간과 하드웨어 가속기의 가속 시간 중에서 짧은 가속 시간을 갖는 가속기를 상기 애플리케이션 프로그램에 대한 디폴트 가속기로서 선택한다.
가속 컨트롤러 모듈(12-2)은 S440단계의 결과 또는 S450단계의 결과에 따라 선택된 가속기 정보를 테이블에 저장한다(S460). 예컨대, 상기 테이블은 테이블(12-3)과 별도의 테이블일 수도 있고 동일한 테이블일 수도 있다. 상기 테이블은 메모리(14 또는 21)에 저장된 후 RAM(16)으로 로드된 후 CPU(12)로 로드될 수 있다.
예컨대, 도 1의 SoC(10)가 n(n은 자연수)개의 애플리케이션 프로그램들과 n개의 하드웨어 가속기들과 n개의 소프트웨어 가속기들을 포함할 때, 가속 컨트롤러 모듈(12-2)은 성능, 예컨대 가속 시간을 기준으로 상기 n개의 애플리케이션 프로그램들 각각에 대한 디폴트 가속기를 선택하고 선택된 가속기에 대한 가속기 정보를 테이블(12-3)과 동일한 테이블 또는 서로 다른 테이블에 저장할 수 있다.
따라서, 전력 소모를 기준으로 하는 제1애플리케이션 프로그램(APP1)에 대한 디폴트 가속기가 하드웨어 가속기로 설정되어 있더라고 성능을 기준으로 하는 제1애플리케이션 프로그램(APP1)에 대한 디폴트 가속기는 소프트웨어 가속기로 설정될 수 있다.
도 10은 도 1에 도시된 데이터 처리 시스템의 동작 방법의 또 다른 실시 예를 나타내는 플로우차트이다.
도 1부터 도 10을 참조하면, 가속 컨트롤러 모듈(12-2)은 프로그램에 따라 또는 사용자의 요청 신호에 따라 도 4의 전력 소모를 기준으로 설정된 디폴트 가속기를 선택할지 또는 도 9의 성능을 기준으로 설정된 디폴트 가속기를 선택할 수 있다.
예컨대, 가속 컨트롤러 모듈(12-2)은 변경 신호(ACC_fac)를 수신한다(S510). 변경 신호(ACC_fac)는 사용자 인터페이스를 통하여 입력된 신호이거나 또는 CPU (12)로부터 출력된 신호일 수 있다.
가속 컨트롤러 모듈(12-2)은 변경 신호(ACC_fac)에 응답하여 디폴트 가속기가 전력 소모를 기준으로 설정되었는지 또는 성능을 기준으로 설정되었는지를 판단한다(S520).
상기 디폴트 가속기가 상기 전력 소모를 기준으로 설정되었는지 또는 상기 성능을 기준으로 설정되는지에 대한 정보는 메모리(14 또는 21)에 저장될 수 있다. 따라서, 가속 컨트롤러 모듈(12-2)은 부팅시에 또는 애플리케이션 프로그램이 실행될 때 메모리(14 또는 21)에 저장된 정보를 참조하여 상기 애플리케이션 프로그램에 대한 디폴트 가속기가 상기 전력 소모량을 기준으로 설정되었는지 또는 상기 성능을 기준으로 설정되었는지를 판단할 수 있다(S520).
예컨대, 변경 신호(ACC_fac)가 전력 소모량(PWR)을 기준으로 설정된 디폴트 가속기를 선택하라는 지시 신호일 때(S520), 가속 컨트롤러 모듈(12-2)은 전력 소모량을 기준으로 선택된 디폴트 가속기(ACCdef_pow)를 테이블을 참조하여 선택한다.
그러나, 변경 신호(ACC_fac)가 성능을 기준으로 설정된 디폴트 가속기를 선택하라는 지시 신호일 때(S520), 가속 컨트롤러 모듈(12-2)은 성능을 기준으로 선택된 디폴트 가속기(ACCdef_perf)를 테이블을 참조하여 선택한다.
예컨대, 도 7 또는 도 8에 도시된 바와 같이, 각 디폴트 가속기(ACCdef_pow 또는 ACCdef_perf)는 넌-디폴트 가속기로 스위칭될 수 있다.
상술한 바와 같이, 본 발명의 개념에 따른 가속 컨트롤러 모듈(12-2)은 다음과 같은 동작들을 수행할 수 있다.
i) 전력 소모량을 기준으로 선택된 디폴트 가속기(ACCdef_pow)를 선택,
ⅱ) 성능을 기준으로 선택된 디폴트 가속기(ACCdef_perf)를 선택,
ⅲ) 전력 소모량을 기준으로 선택된 디폴트 가속기(ACCdef_pow), 예컨대 하드웨어 가속기와 소프트웨어 가속기 중에서 어느 하나를 상기 하드웨어 가속기와 상기 소프트웨어 가속기 각각의 성능(performance)에 따라 넌-디폴트 가속기, 예컨대 상기 하드웨어 가속기와 상기 소프트웨어 가속기 중에서 다른 하나로 변경,
ⅳ) 성능을 기준으로 선택된 디폴트 가속기(ACCdef_perf), 예컨대 하드웨어 가속기와 소프트웨어 가속기 중에서 어느 하나를 상기 하드웨어 가속기와 상기 소프트웨어 가속기 각각의 전력 소모량에 따라 넌-디폴트 가속기, 예컨대 상기 하드웨어 가속기와 상기 소프트웨어 가속기 중에서 다른 하나로 변경.
CPU(12)가 다수의 독립적인 코어들을 포함하는 멀티-코어 프로세서(multi-core processor)일 때, 각 코어에 대한 하드웨어 가속기와 소프트웨어 가속기 중에서 어느 하나를 디폴트 가속기로 설정하는 방법은 상술한 바와 같이 각 코어의 전력 소모량 또는 성능에 따라 결정될 수 있다. 이 경우 가속 컨트롤러 모듈(12-2)은 상술한 4가지 방법들을 수행할 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10: 데이터 처리 시스템
12: CPU
12-2: 가속 컨트롤러 모듈
12-4: 소프트웨어 가속기
14: ROM
16: RAM
18: 하드웨어 가속기
20: 메모리
24: 전원 관리 유닛
26: 디스플레이
12: CPU
12-2: 가속 컨트롤러 모듈
12-4: 소프트웨어 가속기
14: ROM
16: RAM
18: 하드웨어 가속기
20: 메모리
24: 전원 관리 유닛
26: 디스플레이
Claims (22)
- 애플리케이션 프로그램이 실행됨에 따라 생성된 가속 요청 신호를 수신하는 단계;
상기 가속 요청 신호에 따라, CPU(central processing unit)의 현재 사용량 (current usage)과 기준 사용량을 비교하고 비교 신호를 생성하는 단계; 및
상기 비교 신호에 응답하여, 상기 애플리케이션 프로그램에 의해 실행되는 멀티미디어를 가속하기 위해 이종의 가속기들(heterogeneous accelerators) 사이에서 스위칭을 수행하는 단계를 포함하는 시스템-온 칩(system-on chip)의 동작 방법. - 제1항에 있어서,
상기 이종의 가속기들은 하드웨어 장치로 구현된 하드웨어 가속기와 상기 CPU에서 실행가능한 프로그램 코드로 구현된 소프트웨어 가속기를 포함하며,
상기 소프트웨어 가속기는 메모리로부터 상기 CPU로 로드된 후 실행되는 시스템-온 칩의 동작 방법. - 제2항에 있어서, 상기 비교 신호를 생성하는 단계는,
상기 애플리케이션 프로그램에 대해 디폴트로 설정된 가속기가 상기 하드웨어 가속기이고 상기 하드웨어 가속기가 동작 중일 때 수행되는 시스템-온 칩의 동작 방법. - 제2항에 있어서, 상기 비교 신호를 생성하는 단계는,
상기 애플리케이션 프로그램에 대해 디폴트로 설정된 가속기가 상기 소프트웨어 가속기일 때 수행되는 시스템-온 칩의 동작 방법. - 제1항에 있어서,
상기 현재 사용량과 상기 기준 사용량 각각은 상기 CPU의 유휴 시간(idle time)인 시스템-온 칩의 동작 방법. - 제1항에 있어서,
상기 현재 사용량과 상기 기준 사용량 각각은 상기 CPU의 동작 전압과 상기 CPU의 동작 주파수 중에서 적어도 하나인 시스템-온 칩의 동작 방법. - 애플리케이션 프로그램이 실행됨에 따라 생성된 가속 요청 신호를 수신하는 단계;
상기 가속 요청 신호에 따라, 상기 애플리케이션 프로그램에 의해 실행되는 멀티미디어를 가속하기 위한 디폴트 가속기가 하드웨어 가속기인지 또는 CPU (central processing unit)에서 실행가능한 프로그램으로 구현된 소프트웨어 가속기인지를 판단하는 단계;
상기 디폴트 가속기가 상기 소프트웨어 가속기일 때 또는 상기 하드웨어 가속기이면서 다른 멀티미디어를 가속하고 있을 때, 상기 CPU의 현재 사용량과 기준 사용량을 비교하고 비교 신호를 생성하는 단계; 및
상기 비교 신호에 따라 상기 디폴트(defalut) 가속기를 넌-디폴트(non-default) 가속기로 변경하는 단계를 포함하는 시스템-온 칩의 동작 방법. - 제7항에 있어서, 상기 판단하는 단계는,
테이블에 저장된 가속기 정보에 기초하여 판단하는 시스템-온 칩의 동작 방법. - 이종의 가속기들(heterogeneous accelerators); 및
애플리케이션 프로그램에 의해 실행되는 멀티미디어를 가속하기 위해 상기 이종의 가속기들 사이의 스위칭을 위한 비교 신호를 생성하는 가속기 컨트롤러 모듈을 실행시킬 수 있는 CPU(central processing unit)를 포함하며,
상기 가속기 컨트롤러 모듈은,
상기 CPU의 현재 사용량과 기준 사용량을 비교하고 상기 비교 신호를 출력하고,
상기 이종의 가속기들은 하드웨어 장치로 구현된 하드웨어 가속기와 상기 CPU에서 실행가능한 프로그램 코드로 구현된 소프트웨어 가속기를 포함하며,
상기 소프트웨어 가속기는 메모리로부터 상기 CPU로 로드된 후 실행되는 시스템-온 칩. - 제9항에 있어서,
상기 하드웨어 가속기가 상기 멀티미디어를 가속하기 위한 디폴트 가속기로 설정되고 다른 멀티미디어를 가속하고 있을 때,
상기 가속기 컨트롤러 모듈은,
상기 현재 사용량에 대응되는 상기 CPU의 유휴 시간이 상기 기준 사용량에 대응되는 상기 CPU의 유휴 시간보다 길 때 생성된 상기 비교 신호에 따라, 상기 멀티미디어를 가속하기 위해 상기 하드웨어 가속기를 상기 소프트웨어 가속기로 변경하는 시스템-온 칩. - 제9항에 있어서,
상기 소프트웨어 가속기가 상기 멀티미디어를 가속하기 위한 디폴트 가속기로 설정되어 있을 때,
상기 가속기 컨트롤러 모듈은,
상기 현재 사용량에 대응되는 상기 CPU의 유휴 시간이 상기 기준 사용량에 대응되는 상기 CPU의 유휴 시간보다 짧을 때 생성된 상기 비교 신호에 따라, 상기 멀티미디어를 가속하기 위해 상기 소프트웨어 가속기를 상기 하드웨어 가속기로 변경하는 시스템-온 칩. - 제9항에 있어서,
상기 하드웨어 가속기가 상기 멀티미디어를 가속하기 위한 디폴트 가속기로 설정되고 다른 멀티미디어를 가속하고 있을 때,
상기 가속기 컨트롤러 모듈은,
상기 현재 사용량에 대응되는 상기 CPU의 동작 주파수가 상기 기준 사용량에 대응되는 상기 CPU의 주파수보다 낮을 때 생성된 상기 비교 신호에 따라, 상기 멀티미디어를 가속하기 위해 상기 하드웨어 가속기를 상기 소프트웨어 가속기로 변경하는 시스템-온 칩. - 제9항에 있어서,
상기 소프트웨어 가속기가 상기 멀티미디어를 가속하기 위한 디폴트 가속기로 설정되어 있을 때,
상기 가속기 컨트롤러 모듈은,
상기 현재 사용량에 대응되는 상기 CPU의 동작 주파수가 상기 기준 사용량에 대응되는 상기 CPU의 주파수보다 높을 때 생성된 상기 비교 신호에 따라, 상기 멀티미디어를 가속하기 위해 상기 소프트웨어 가속기를 상기 하드웨어 가속기로 변경하는 시스템-온 칩. - 제9항에 있어서,
상기 현재 사용량과 상기 기준 사용량 각각은 상기 CPU의 유휴 시간인 시스템-온 칩. - 제9항에 있어서,
상기 현재 사용량과 상기 기준 사용량 각각은 상기 CPU의 동작 전압과 상기 CPU의 동작 주파수 중에서 적어도 하나인 시스템-온 칩. - 멀티미디어를 저장하는 불휘발성 메모리;
디스플레이;
이종의 가속기들(heterogeneous accelerators); 및
애플리케이션 프로그램에 의해 실행되는 상기 멀티미디어를 가속하기 위해 상기 이종의 가속기들 사이의 스위칭을 위한 비교 신호를 생성하는 가속기 컨트롤러 모듈을 실행시킬 수 있는 CPU(central processing unit)를 포함하며,
상기 가속기 컨트롤러 모듈은,
상기 CPU의 현재 사용량과 기준 사용량을 비교하고 상기 비교 신호를 출력하고,
상기 이종의 가속기들 중에서 상기 비교 신호에 따라 선택된 가속기는 가속된 멀티미디어를 상기 디스플레이를 통하여 디스플레이하고,
상기 이종의 가속기들은 하드웨어 장치로 구현된 하드웨어 가속기와 상기 CPU에서 실행가능한 프로그램 코드로 구현된 소프트웨어 가속기를 포함하며,
상기 소프트웨어 가속기는 메모리로부터 상기 CPU로 로드된 후 실행되는 휴대용 장치(portable device). - 하드웨어 가속기;
애플리케이션 프로그램, 가속기 제어 모듈, 및 소프트웨어 가속기를 저장하는 메모리; 및
상기 하드웨어 가속기와 상기 메모리를 제어하기 위한 CPU(central processing unit)를 포함하며,
상기 CPU에 의하여 상기 애플리케이션 프로그램, 상기 가속기 제어 모듈, 및 상기 소프트웨어 가속기가 실행됨에 따라,
상기 가속기 제어 모듈은,
상기 애플리케이션 프로그램이 실행됨에 따라 생성된 가속 요청 신호를 수신하고,
상기 가속 요청 신호에 따라, 상기 애플리케이션 프로그램에 의해 실행되는 멀티미디어를 가속하기 위한 디폴트 가속기가 하드웨어 가속기인지 또는 상기 CPU에서 실행가능한 프로그램으로 구현된 소프트웨어 가속기인지를 판단하고,
상기 디폴트 가속기가 상기 소프트웨어 가속기일 때 또는 상기 하드웨어 가속기이면서 다른 멀티미디어를 가속하고 있을 때, 상기 CPU의 현재 사용량과 기준 사용량을 비교하고 비교 신호를 생성하고,
상기 비교 신호에 따라 상기 디폴트 가속기를 넌-디폴트 가속기로 변경하는 시스템-온 칩. - 제17항에 있어서, 상기 가속기 제어 모듈은,
상기 메모리에 저장되고 상기 디폴트 가속기에 대한 가속기 정보에 기초하여 상기 디폴트 가속기를 판단하는 시스템-온 칩. - 제17항에 있어서, 상기 가속기 제어 모듈은,
사용자 입력 인터페이스로부터 입력된 정보에 따라 상기 기준 사용량을 조절하는 시스템-온 칩. - 가속기 제어 모듈이 애플리케이션 프로그램이 실행됨에 따라 생성된 가속 요청 신호를 수신하는 단계;
상기 가속기 제어 모듈이 상기 가속 요청 신호에 따라 테이블로부터 가속기 정보를 읽어오는 단계; 및
상기 가속기 정보에 따라 상기 가속기 제어 모듈이, 상기 애플리케이션 프로그램에 의해 실행되는 멀티미디어를 가속하기 위하여 하드웨어 장치로 구현된 하드웨어 가속기와 CPU에서 실행가능한 프로그램 코드로 구현된 소프트웨어 가속기 중에서 어느 하나를 선택적으로 구동하는 단계를 포함하며,
상기 가속기 정보는 상기 하드웨어 가속기의 가속 시간과 상기 소프트웨어 가속기의 가속 기간 중에서 짧은 가속 시간을 갖는 가속기를 나타내는 시스템-온 칩의 동작 방법. - 변경 신호를 수신하는 단계;
상기 변경 신호가 전력 소모량을 기준으로 선택된 디폴트 가속기를 선택하는 지시 신호인지 또는 성능을 기준으로 선택된 디폴트 가속기를 선택하는 지시 신호인지를 판단하는 단계;
상기 판단 결과에 따라 다수의 테이블 중에서 어느 하나에 저장된 가속기 정보를 참조하는 단계; 및
상기 가속기 정보에 따라, 하드웨어 장치로 구현된 하드웨어 가속기와 CPU에서 실행가능한 프로그램 코드로 구현된 소프트웨어 가속기 중에서 디폴트로 설정된 상기 디폴트 가속기를 구동하는 단계를 포함하는 시스템-온 칩의 동작 방법. - 제21항에 있어서,
상기 변경 신호가 전력 소모량을 기준으로 선택된 디폴트 가속기를 선택하는 지시 신호일 때, 상기 CPU의 현재 사용량과 기준 사용량을 비교하고 비교 신호를 생성하는 단계; 및
상기 비교 신호에 따라 상기 디폴트 가속기를 넌-디폴트(non-default) 가속기로 변경하는 단계를 포함하는 시스템-온 칩의 동작 방법.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110087411A KR101861742B1 (ko) | 2011-08-30 | 2011-08-30 | 이종의 가속기들 사이에서 스위칭할 수 있는 데이터 처리 시스템과 그 방법 |
DE102012106830A DE102012106830A1 (de) | 2011-08-30 | 2012-07-27 | Datenverarbeitungssystem und Verfahren zum Schalten zwischen heterogenen Beschleunigern |
CN201210315767.4A CN103164215B (zh) | 2011-08-30 | 2012-08-30 | 数据处理系统和用于在异类加速器之间进行切换的方法 |
US13/599,042 US9223581B2 (en) | 2011-08-30 | 2012-08-30 | Data processing system and method for switching between heterogeneous accelerators |
JP2012189619A JP6207818B2 (ja) | 2011-08-30 | 2012-08-30 | システムオンチップ及びその動作方法並びに携帯用装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110087411A KR101861742B1 (ko) | 2011-08-30 | 2011-08-30 | 이종의 가속기들 사이에서 스위칭할 수 있는 데이터 처리 시스템과 그 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130024155A true KR20130024155A (ko) | 2013-03-08 |
KR101861742B1 KR101861742B1 (ko) | 2018-05-30 |
Family
ID=47665337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110087411A KR101861742B1 (ko) | 2011-08-30 | 2011-08-30 | 이종의 가속기들 사이에서 스위칭할 수 있는 데이터 처리 시스템과 그 방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9223581B2 (ko) |
JP (1) | JP6207818B2 (ko) |
KR (1) | KR101861742B1 (ko) |
CN (1) | CN103164215B (ko) |
DE (1) | DE102012106830A1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150045348A (ko) * | 2013-10-18 | 2015-04-28 | 삼성전자주식회사 | 전자 장치의 메모리 압축 방법 및 장치 |
WO2019027111A1 (ko) * | 2017-07-31 | 2019-02-07 | 서울대학교 산학협력단 | 이종 시스템의 가속기 제어 방법 및 이를 수행하기 위한 이종 시스템 |
KR20220086449A (ko) * | 2020-12-16 | 2022-06-23 | 한국과학기술원 | 스케줄링 방법 및 장치 |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140380025A1 (en) * | 2013-01-23 | 2014-12-25 | Empire Technology Development Llc | Management of hardware accelerator configurations in a processor chip |
US8782265B1 (en) | 2013-03-14 | 2014-07-15 | Dmitry Bokotey | Network visualization system and method of using same |
CN104795072A (zh) * | 2015-03-25 | 2015-07-22 | 无锡天脉聚源传媒科技有限公司 | 一种音频数据的编码方法及装置 |
US10198294B2 (en) | 2015-04-17 | 2019-02-05 | Microsoft Licensing Technology, LLC | Handling tenant requests in a system that uses hardware acceleration components |
US9792154B2 (en) * | 2015-04-17 | 2017-10-17 | Microsoft Technology Licensing, Llc | Data processing system having a hardware acceleration plane and a software plane |
US20160378551A1 (en) * | 2015-06-24 | 2016-12-29 | Intel Corporation | Adaptive hardware acceleration based on runtime power efficiency determinations |
KR102402672B1 (ko) * | 2015-09-01 | 2022-05-26 | 삼성전자주식회사 | 컴퓨팅 시스템 및 컴퓨팅 시스템에서 연산들을 처리하는 방법 |
CN105357258B (zh) * | 2015-09-28 | 2020-06-26 | 华为技术有限公司 | 一种加速管理节点、加速节点、客户端及方法 |
US9911417B2 (en) * | 2016-04-01 | 2018-03-06 | Tai-An Lu | Internet of things system with voice-controlled functions and method for processing information of the same |
CN107592287A (zh) * | 2016-07-07 | 2018-01-16 | 深圳市中兴微电子技术有限公司 | 一种报文加速方法及装置 |
US10417012B2 (en) * | 2016-09-21 | 2019-09-17 | International Business Machines Corporation | Reprogramming a field programmable device on-demand |
US10599479B2 (en) | 2016-09-21 | 2020-03-24 | International Business Machines Corporation | Resource sharing management of a field programmable device |
US10572310B2 (en) | 2016-09-21 | 2020-02-25 | International Business Machines Corporation | Deploying and utilizing a software library and corresponding field programmable device binary |
US10355945B2 (en) | 2016-09-21 | 2019-07-16 | International Business Machines Corporation | Service level management of a workload defined environment |
US10740152B2 (en) * | 2016-12-06 | 2020-08-11 | Intel Corporation | Technologies for dynamic acceleration of general-purpose code using binary translation targeted to hardware accelerators with runtime execution offload |
US20190250957A1 (en) * | 2016-12-12 | 2019-08-15 | Hitachi, Ltd. | System and method of dynamic allocation of hardware accelerator |
CN109426529B (zh) * | 2017-08-16 | 2023-03-21 | 龙芯中科技术股份有限公司 | 基于x窗口系统图形绘制的方法、装置及终端 |
EP3707572B1 (en) * | 2017-11-10 | 2023-08-23 | Nvidia Corporation | Systems and methods for safe and reliable autonomous vehicles |
US11210537B2 (en) | 2018-02-18 | 2021-12-28 | Nvidia Corporation | Object detection and detection confidence suitable for autonomous driving |
CN111095291B (zh) | 2018-02-27 | 2024-04-09 | 辉达公司 | 由自动驾驶车辆实时检测车道和边界 |
WO2019178548A1 (en) | 2018-03-15 | 2019-09-19 | Nvidia Corporation | Determining drivable free-space for autonomous vehicles |
US11340949B2 (en) * | 2018-05-08 | 2022-05-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and node for managing a request for hardware acceleration by means of an accelerator device |
US11144357B2 (en) * | 2018-05-25 | 2021-10-12 | International Business Machines Corporation | Selecting hardware accelerators based on score |
US10892944B2 (en) | 2018-11-29 | 2021-01-12 | International Business Machines Corporation | Selecting and using a cloud-based hardware accelerator |
WO2020140049A1 (en) | 2018-12-28 | 2020-07-02 | Nvidia Corporation | Distance to obstacle detection in autonomous machine applications |
US11648945B2 (en) | 2019-03-11 | 2023-05-16 | Nvidia Corporation | Intersection detection and classification in autonomous machine applications |
DE112020004139T5 (de) | 2019-08-31 | 2022-05-12 | Nvidia Corporation | Erstellung von karten und lokalisierung für anwendungen im bereich des autonomen fahrens |
CN114185837A (zh) * | 2020-09-15 | 2022-03-15 | 阿里巴巴集团控股有限公司 | 片上系统和调节电压和频率的方法 |
US11978266B2 (en) | 2020-10-21 | 2024-05-07 | Nvidia Corporation | Occupant attentiveness and cognitive load monitoring for autonomous and semi-autonomous driving applications |
CN114860353A (zh) * | 2022-05-31 | 2022-08-05 | 苏州浪潮智能科技有限公司 | 一种程序执行方法、系统、设备以及存储介质 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04367337A (ja) | 1991-06-11 | 1992-12-18 | Raiden:Kk | 鋼板コイルの口開き装置 |
JP4212676B2 (ja) * | 1998-02-12 | 2009-01-21 | 富士ゼロックス株式会社 | 情報処理システムおよび情報処理方法 |
US9195784B2 (en) * | 1998-08-31 | 2015-11-24 | Cadence Design Systems, Inc. | Common shared memory in a verification system |
KR20000032335A (ko) | 1998-11-13 | 2000-06-15 | 구자홍 | 휴대용 컴퓨터의 디스플레이 성능 향상방법 |
US6925641B1 (en) * | 2000-02-04 | 2005-08-02 | Xronix Communications, Inc. | Real time DSP load management system |
JP4367337B2 (ja) | 2004-12-28 | 2009-11-18 | セイコーエプソン株式会社 | マルチメディア処理システム及びマルチメディア処理方法 |
JP2007328461A (ja) | 2006-06-06 | 2007-12-20 | Matsushita Electric Ind Co Ltd | 非対称マルチプロセッサ |
JP2009122925A (ja) | 2007-11-14 | 2009-06-04 | Toshiba Corp | データ処理プログラム、データ処理方法およびデータ処理システム |
US8055872B2 (en) * | 2008-02-21 | 2011-11-08 | Arm Limited | Data processor with hardware accelerator, accelerator interface and shared memory management unit |
US8432405B2 (en) | 2008-06-26 | 2013-04-30 | Microsoft Corporation | Dynamically transitioning between hardware-accelerated and software rendering |
CN101441564B (zh) * | 2008-12-04 | 2011-07-20 | 浙江大学 | 为程序定制的可重构加速器实现方法 |
US8368702B2 (en) | 2010-01-06 | 2013-02-05 | Apple Inc. | Policy-based switching between graphics-processing units |
KR101115708B1 (ko) | 2010-01-26 | 2012-03-06 | 한국원자력연구원 | 단결정 성장용 앰플 및 이를 포함하는 단결정 성장장치 |
US20110249022A1 (en) * | 2010-04-08 | 2011-10-13 | Rajesh Poornachandran | Techniques for managing power use |
US8839256B2 (en) * | 2010-06-09 | 2014-09-16 | International Business Machines Corporation | Utilization of special purpose accelerators using general purpose processors |
WO2012124125A1 (ja) * | 2011-03-17 | 2012-09-20 | 富士通株式会社 | システムおよびスケジューリング方法 |
-
2011
- 2011-08-30 KR KR1020110087411A patent/KR101861742B1/ko active IP Right Grant
-
2012
- 2012-07-27 DE DE102012106830A patent/DE102012106830A1/de active Pending
- 2012-08-30 US US13/599,042 patent/US9223581B2/en active Active
- 2012-08-30 CN CN201210315767.4A patent/CN103164215B/zh active Active
- 2012-08-30 JP JP2012189619A patent/JP6207818B2/ja active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150045348A (ko) * | 2013-10-18 | 2015-04-28 | 삼성전자주식회사 | 전자 장치의 메모리 압축 방법 및 장치 |
US10895987B2 (en) | 2013-10-18 | 2021-01-19 | Samsung Electronics Co., Ltd. | Memory compression method of electronic device and apparatus thereof |
WO2019027111A1 (ko) * | 2017-07-31 | 2019-02-07 | 서울대학교 산학협력단 | 이종 시스템의 가속기 제어 방법 및 이를 수행하기 위한 이종 시스템 |
KR20190013063A (ko) * | 2017-07-31 | 2019-02-11 | 서울대학교산학협력단 | 이종 시스템의 가속기 제어 방법 및 이를 수행하기 위한 이종 시스템 |
KR20220086449A (ko) * | 2020-12-16 | 2022-06-23 | 한국과학기술원 | 스케줄링 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
KR101861742B1 (ko) | 2018-05-30 |
US9223581B2 (en) | 2015-12-29 |
US20130061033A1 (en) | 2013-03-07 |
CN103164215B (zh) | 2017-08-11 |
JP2013050953A (ja) | 2013-03-14 |
DE102012106830A1 (de) | 2013-02-28 |
JP6207818B2 (ja) | 2017-10-04 |
CN103164215A (zh) | 2013-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101861742B1 (ko) | 이종의 가속기들 사이에서 스위칭할 수 있는 데이터 처리 시스템과 그 방법 | |
US11372472B2 (en) | System on chip for reducing wake-up time, method of operating same, and computer system including same | |
JP5661774B2 (ja) | デバイスを無効にするための方法及び装置 | |
JP2021520537A (ja) | プロセッサの最適スロットルのためのシステム、機器、及び方法 | |
US8810584B2 (en) | Smart power management in graphics processing unit (GPU) based cluster computing during predictably occurring idle time | |
US12111714B2 (en) | Application profiling for power-performance management | |
JP2011100431A (ja) | 仮想マシン制御装置及び仮想マシン制御方法 | |
KR20180048886A (ko) | 커맨드 스트림 힌팅을 사용한 gpu 작업부하 특성화 및 전력 관리 | |
US20140189708A1 (en) | Terminal and method for executing application in same | |
US20140025930A1 (en) | Multi-core processor sharing li cache and method of operating same | |
US8046565B2 (en) | Accelerator load balancing with dynamic frequency and voltage reduction | |
JP4945410B2 (ja) | 情報処理装置及び情報処理方法 | |
US9342477B2 (en) | Multi-core processor, controlling method thereof and computer system with such processor | |
JP2021117971A (ja) | ディスプレイクロック周波数を動的に変化させるための方法および装置 | |
KR100463642B1 (ko) | 보조프로세서를 이용한 멀티미디어 처리를 위한 가속장치 | |
JP2022546250A (ja) | 電力に基づいたsramの適応割り当て | |
US8279229B1 (en) | System, method, and computer program product for providing access to graphics processor CPU cores, to both a graphics processor and a CPU | |
KR100465913B1 (ko) | 보조프로세서를 이용한 멀티미디어 처리를 위한 가속장치 | |
JP6141073B2 (ja) | 情報処理装置及び情報処理装置の制御方法 | |
KR20210022850A (ko) | 반도체 장치의 성능 부스팅 제어 방법 및 이를 수행하는 반도체 장치 | |
KR20010047483A (ko) | 컴퓨터에서의 터치 패드 기능 제어 방법 | |
Gwennap | Qualcomm Extends Hexagon DSP | |
KR20200123750A (ko) | 임시 레지스터들에 대한 레인 당 동적 인덱싱 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
GRNT | Written decision to grant |