KR20160110406A - 휴대용 디바이스에서 동기적 태스크 디스패치를 위한 시스템 및 방법 - Google Patents

휴대용 디바이스에서 동기적 태스크 디스패치를 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20160110406A
KR20160110406A KR1020167020555A KR20167020555A KR20160110406A KR 20160110406 A KR20160110406 A KR 20160110406A KR 1020167020555 A KR1020167020555 A KR 1020167020555A KR 20167020555 A KR20167020555 A KR 20167020555A KR 20160110406 A KR20160110406 A KR 20160110406A
Authority
KR
South Korea
Prior art keywords
processing resource
thread
dispatch
request
task
Prior art date
Application number
KR1020167020555A
Other languages
English (en)
Other versions
KR101798369B1 (ko
Inventor
베네딕트 루벤 게스터
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20160110406A publication Critical patent/KR20160110406A/ko
Application granted granted Critical
Publication of KR101798369B1 publication Critical patent/KR101798369B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

휴대용 컴퓨팅 디바이스는 제 1 프로세싱 리소스로부터 대안적 프로세싱 리소스로 태스크들을 동기적으로 오프로드한다. 오프로드 요청들은 집중화되고 디스패치 제어기에 통신된다. 그 요청은 프라이머리 프로세싱 리소스로부터 식별된 대안적 프로세싱 리소스로 전송 또는 디스패치되길 원하는 스레드에 관련된 공통 또는 공유된 메모리에서의 아이템들의 로케이션 및 대안적 프로세싱 리소스를 정의한다. 디스패치 제어기는, 그 요청에 응답하여, 대안적 프로세싱 리소스에 프라이머리 프로세싱 리소스 상에서 이전에 실행중이었던 스레드의 콘텍스트를 스위칭하도록 요구되는 정보를 제공하는 태스크 디스패치 패킷을 생성한다. 공통 또는 공유된 메모리 공간은 원하는 성능을 제공하기 위해 레버리징된다. 대안적 프로세싱 리소스에 의해 생성된 결과들은 프라이머리 프로세싱 리소스로의 리턴 시에 공유된 메모리 공간에서 이용가능하다.

Description

휴대용 디바이스에서 동기적 태스크 디스패치를 위한 시스템 및 방법{SYSTEM AND METHOD FOR SYNCHRONOUS TASK DISPATCH IN A PORTABLE DEVICE}
컴퓨팅 디바이스들은 유비쿼터스적이다. 일부 컴퓨팅 디바이스들은 스마트폰들, 태블릿들 및 랩톱 컴퓨터들과 같이 휴대용이다. 이들 디바이스들의 주 기능에 더하여, 주변 기능들을 지원하는 엘리먼트를 다수 포함한다. 예를 들어, 셀룰러 전화기는 셀룰러 전화 통화를 인에이블 및 지원하는 주 기능 및 스틸 카메라, 비디오 카메라, 글로벌 포지셔닝 시스템 (GPS) 내비게이션, 웹 브라우징, 이메일들의 전송 및 수신, 텍스트 메시지들의 전송 및 수신, 푸시-투-토크 능력들 등의 주변 기능들을 포함할 수도 있다. 이러한 휴대용 컴퓨팅 디바이스들의 기능성이 증가함에 따라, 요구되는 컴퓨팅 또는 프로세싱 능력 및 일반적으로는 이러한 기능성을 지원하기 위한 데이터 저장 용량이 또한 증가한다.
핸드헬드 휴대용 컴퓨팅 디바이스들에 대한 일부 종래의 설계들은 특정한 컴퓨팅 디바이스를 위해 요망되는 다양한 주 및 주변 기능들을 지원하기 위해 다중 프로세서들 및/또는 다중 코어들을 가진 프로세서들을 포함한다. 이러한 설계들은 종종 단일의 기판 상에 아날로그, 디지털 및 라디오-주파수 회로들 또는 기능들을 통합하고 시스템 온 칩 (system on a chip; SoC) 으로 통칭된다. 소비자들은 그들의 랩톱들, 태블릿들, 및 스마트폰들에 대해 개선된 배터리 수명, 사이즈, 및 중량을 원한다. SoC 내에서 컴포넌트들로 프로세싱 작업을 시프트하는 능력이 전력 관리와 사용자 경험 양자를 위한 고려사항이다. 일부 리소스들로부터 전력을 제거하는 능력은 사용자 요건들이 SoC 상에서 이용가능한 프로세싱 리소스들의 풀 스펙트럼을 요구하지 않을 때 상당한 전력 절약들을 제공할 수 있다. 요청된 태스크를 프로세싱 시에 보다 효율적으로 프로세싱 리소스로 일부 태스크들을 시프트하는 능력은 전력을 절약하고 그리고 성능 이득들을 제공하는 모두를 행할 수 있다.
그러나, 하나의 프로세싱 리소스로부터 또 다른 프로세싱 리소스로의 태스크의 전송 (transfer) 을 관리하는 코스트는, 그 전송을 관리하는 것과 연관된 레이턴시를 회복시키기 위한 작업이 부족할 수도 있기 때문에 조금이라도 태스크가 오프로드되는 것을 막을 수 있다. 또한, 이러한 전송들은 전송을 관리하고 태스크를 완료하고 그리고 그 결과를 요청자에게 리턴하도록 시간이 허락할 때 단지 수행될 수 있다. 즉, 종래의 컴퓨팅 모델들에서의 이러한 전송들은 비동기적으로 관리된다. 사용자 모드 큐잉은 하나의 프로세싱 리소스로부터 또 다른 프로세싱 리소스로의 태스크 전송들을 관리하는 것과 연관된 레이턴시를 상당히 감소시키기 위한 잠재적인 솔루션을 제공하지만, 제안된 모델은 모든 이러한 전송들이 비동기적이라는 전제에 의존한다.
따라서, 비동기적 솔루션들이 아닌 요구하는 상황들에 적용될 수도 있는 프로세싱 리소스들 사이의 태스크 전송들을 관리하기 위한 개선된 메커니즘들에 대한 필요성이 존재한다.
제 1 프로세싱 리소스로부터 대안적 프로세싱 리소스로 프로세싱 태스크들을 동기적으로 오프로드하도록 휴대용 컴퓨팅 디바이스를 구성하는 시스템들 및 방법들의 예의 실시형태들이 개시된다. 태스크 오프로드 요청들은, 일 예의 배열 (arrangement) 에서 SoC 의 중앙 프로세싱 유닛인 호스트 또는 프라이머리 프로세싱 리소스로부터 집중화된다. 개시된 시스템들 및 방법들은 그래픽스 프로세싱 유닛 또는 디지털 신호 프로세서와 같은 디바이스가 자율적인 상태를 유지하는 것을 가능하게 한다. 따라서, 이들 엘리먼트들을 SoC 의 중앙 프로세싱 유닛과는 별개인 상태를 유지하는 것을 허용한다.
호스트 또는 프라이머리 프로세싱 리소스는 디스패치 제어기에 통신되는 요청 또는 태스크 오프로드 요청을 생성한다. 그 요청은 대안적 프로세싱 리소스 및 프라이머리 프로세싱 리소스로부터 전송 또는 디스패치되길 원하는 스레드에 관련된 공통 또는 공유된 메모리에서의 아이템들의 로케이션을 정의한다. 공유된 메모리에 저장된 아이템들 또는 스레드 관련 아이템들은 코드, 데이터 또는 코드와 데이터 양자를 포함할 수도 있다. 디스패치 제어기는, 그 요청에 응답하여, 대안적 프로세싱 리소스에 프라이머리 프로세싱 리소스 상에서 이전에 실행중이었던 스레드의 콘텍스트를 스위칭하도록 요구되는 정보를 제공하는 태스크 디스패치 패킷을 생성한다. 커맨드 또는 공유된 메모리 공간은 원하는 성능을 제공하도록 레버리징 (leveraging) 된다. 호스트 또는 프라이머리 프로세싱 리소스는 스레드의 실행을 재개하기 전에 태스크가 완료되었다는 디스패치 제어기로부터의 표시를 대기한다. 스레드가 대안적 프로세싱 리소스에서 실행되는 동안 생성된 결과들은 프라이머리 프로세싱 리소스로의 리턴 시에 공통 또는 공유된 메모리 공간에서 쉽게 이용가능하다. 대안적으로, 어떤 추가 명령들도 프로세싱되지 않을 때, 프라이머리 프로세싱 리소스는 스레드가 완료되었다는 통지를 오퍼레이팅 시스템에 통신한다.
컴퓨팅 디바이스의 일 예의 실시형태는 프라이머리 프로세싱 리소스, 디바이스 실행 환경에서 디스패치 제어기와 통신하도록 배열된 세컨더리 또는 대안적 프로세싱 리소스를 포함한다. 디스패치 제어기는 프라이머리 프로세싱 리소스로부터 수신된 함수 호출 (function call) 들을 동기적으로 관리한다. 공통 또는 공유된 메모리 공간은 프라이머리 프로세싱 리소스와 세컨더리 프로세싱 리소스 양자에 액세스가능하다. 프라이머리 및 세컨더리 프로세싱 리소스들은 신호/대기 인터페이스에 따라 각각의 신호들을 생성하고 그리고 그것에 응답하는 모두를 행하도록 배열된다.
휴대용 컴퓨팅 디바이스에서 동기적 태스크 디스패치를 위한 방법의 일 예의 실시형태는 프라이머리 프로세싱 리소스, 세컨더리 프로세싱 리소스 및 프라이머리 프로세싱 리소스 및 세컨더리 프로세싱 리소스에 액세스가능한 공유된 메모리 공간을 가진 휴대용 컴퓨팅 디바이스를 배열하는 단계, 태스크 오프로드 조건을 검출하는 단계, 프라이머리 프로세싱 리소스에서 실행중인 스레드의 실행을 중단하는 단계, 태스크 오프로드 조건에 응답하여 요청을 생성하는 단계, 및 디스패치 제어기에 요청을 통신하는 단계로서, 그 요청은 스레드의 실행을 위해 세컨더리 프로세싱 리소스를 식별하는, 상기 디스패치 제어기에 요청을 통신하는 단계를 포함한다.
컴퓨팅 디바이스의 또 다른 예의 실시형태는 다중 프로세싱 리소스들 또는 스레드를 프로세싱하기 위한 수단을 포함하고, 스레드를 프로세싱하기 위한 제 1 수단은 휴대용 컴퓨팅 디바이스 상에서 태스크 오프로드 조건을 검출하기 위한 메커니즘을 포함한다. 스레드를 동기적으로 디스패치하기 위한 메커니즘 또는 수단은 태스크 오프로드 조건에 응답한다. 스레드를 실행하기 위한 제 2 또는 대안적 프로세싱 수단은 스레드를 동기적으로 디스패치하기 위한 수단에 응답한다.
또 다른 예의 실시형태는 태스크 오프로드 조건을 검출하는 것, 프라이머리 프로세싱 리소스에서 실행중인 스레드의 실행을 중단하는 것, 태스크 오프로드 조건에 응답하여 요청을 생성하는 것 및 디스패치 제어기에 요청을 통신하는 것으로서, 그 요청은 스레드의 실행을 위해 프라이머리 프로세싱 리소스와는 상이한 세컨더리 프로세싱 리소스를 식별하는, 상기 디스패치 제어기에 요청을 통신하는 것을 포함한 다양한 기능들을 수행할 것을 프로세서에 지시하는 프로세서 명령들 및 데이터를 저장한 비일시적 프로세서 판독가능 매체이다.
도면들에서, 동일한 참조 부호들은 다르게 나타내지 않는다면 다양한 도면들 전반에 걸쳐 동일한 부분들을 지칭한다. "102A" 또는 "102B" 와 같은 문자 부호 지정 (letter character designation) 들을 가진 참조 부호들의 경우, 문자 부호 지정들은 동일한 도면에 존재하는 2 개의 동일한 부분들 또는 엘리먼트들을 구별할 수도 있다. 참조 부호들에 대한 문자 부호 지정들은 참조 부호가 모든 도면들에 있어서 동일한 참조 부호를 갖는 모든 부분들을 포괄하도록 의도되는 경우에 생략될 수도 있다.
도 1 은 SoC 로서 배열된 컴퓨팅 디바이스의 일 예의 실시형태를 예시하는 개략적 다이어그램이다.
도 2 는 도 1 의 SoC 에서 프라이머리 프로세싱 리소스로부터 세컨더리 프로세싱 리소스로의 태스크들의 디스패치를 동기적으로 관리하기 위한 서브시스템의 일 예의 실시형태를 예시하는 개략적 다이어그램이다.
도 3 은 도 1 의 SoC 에서 태스크들의 디스패치를 관리하는 컴퓨팅 환경의 일 예의 실시형태를 예시하는 개략적 다이어그램이다.
도 4 는 도 1 의 SoC 에서 태스크들의 디스패치를 관리하는 컴퓨팅 환경의 또 다른 예의 실시형태를 예시하는 개략적 다이어그램이다.
도 5 는 도 1 의 SoC 에서 태스크들의 디스패치를 관리하는 컴퓨팅 환경의 제 3 예의 실시형태를 예시하는 개략적 다이어그램이다.
도 6 은 도 3 에서 도입된 컴퓨팅 환경을 이용한 사용자 모드 스케줄링된 태스크의 일 예의 실시형태를 예시하는 개략적 다이어그램이다.
도 7 은 도 4 에서 도입된 컴퓨팅 환경을 이용한 조정자 관리된 태스크를 예시하는 개략적 다이어그램이다.
도 8 은 디스패치 패킷을 정의하기 위해 레지스터들의 세트의 이용을 예시하는 개략적 다이어그램이다.
도 9 는 SoC 에서 동기적 태스크 디스패치를 위한 방법의 일 예의 실시형태의 플로우 다이어그램이다.
단어 "예시적인" 은 본 명세서에서 "일 예, 인스턴스 또는 예시로서 기능하는 것" 을 의미하기 위해 사용된다. 본 명세서에서 "예시적인" 으로서 설명된 임의의 양태가 반드시 다른 양태들에 비해 선호되거나 또는 유리한 것으로서 해석되는 것은 아니다.
본 설명에서, 용어 "애플리케이션" 은 : 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들과 같은 실행가능 콘텐츠를 갖는 파일들을 또한 포함할 수도 있다. 또한, 본 명세서에서 지칭되는 "애플리케이션" 은 공개될 필요가 있을 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들과 같은 사실상 실행가능하지 않은 파일들을 또한 포함할 수도 있다.
용어 "콘텐츠" 는 : 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들과 같은 실행가능 콘텐츠를 갖는 파일들을 또한 포함할 수도 있다. 또한, 본 명세서에서 지칭되는 "콘텐츠" 는 공개될 필요가 있을 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들 또는 데이터 값들과 같은 사실상 실행가능하지 않은 파일들을 또한 포함할 수도 있다.
본 설명에서 사용한 바와 같이, 용어들 "컴포넌트", "모듈", "시스템" 등은 컴퓨터 관련 엔티티, 즉 하드웨어, 펌웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행중인 소프트웨어 중 어느 하나를 지칭하도록 의도된다. 예를 들어, 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 오브젝트, 실행가능물, 실행 스레드, 프로그램, 및/또는 컴퓨터일 수도 있지만, 이들에 제한되지는 않는다. 예시에 의해, 컴퓨팅 디바이스 상에서 실행되는 애플리케이션과 컴퓨팅 디바이스 양자는 컴포넌트일 수도 있다. 하나 이상의 컴포넌트들은 프로세스 및/또는 실행 스레드 내에 상주할 수도 있고, 컴포넌트는 하나의 컴퓨터 상에 로컬화되고 및/또는 2 개 이상의 컴퓨터들 사이에 분산될 수도 있다. 또한, 이들 컴포넌트들은 다양한 데이터 구조들을 저장한 다양한 컴퓨터 판독가능 매체들로부터 실행할 수도 있다. 컴포넌트들은 로컬 및/또는 원격 프로세스들에 의하여, 이를 테면 하나 이상의 데이터 패킷들을 갖는 신호 (예를 들어, 그 신호에 의하여 다른 시스템들과 인터넷과 같은 네트워크를 가로질러 및/또는 로컬 시스템, 분산 시스템에서의 또 다른 컴포넌트와 상호작용하는 하나의 컴포넌트로부터의 데이터) 에 따라 통신할 수도 있다.
본 설명에서, 용어 "휴대용 컴퓨팅 디바이스" ("PCD") 는 배터리 및/또는 커패시터와 같이, 제한된 용량 재충전가능 전력 소스 상에서 동작하는 임의의 디바이스를 설명하기 위해 사용된다. 재충전가능 전력 소스들을 가진 PCD들이 수십년간 사용되어 왔지만, 제 3 세대 ("3G") 및 제 4 세대 ("4G") 무선 기술의 도래와 결합된 재충전가능 배터리들의 기술적 진보들이 다중 능력들을 가진 다수의 PCD들을 가능하게 하였다. 따라서, PCD 는 그 중에서도, 셀룰러 전화기, 위성 전화기, 페이저, PDA, 스마트폰, 내비게이션 디바이스, 스마트북 또는 리더, 미디어 플레이어, 전술한 디바이스들의 조합, 무선 연결을 가진 랩톱 또는 태블릿 컴퓨터일 수도 있다.
PCD 내의 동작을 특별히 참조하여 설명되었지만, 설명된 시스템들 및 방법들은 하나의 프로세싱 시스템으로부터 대안적 프로세싱 시스템으로 태스크들을 자율적으로 그리고 동기적으로 오프로드하는데 유용할 수도 있는 다중 프로세싱 리소스들을 가진 임의의 컴퓨팅 시스템에 적용가능할 수도 있다. 다르게 말하면, 본 명세서에 개시된 컴퓨팅 시스템들 및 방법들은 데스크톱 컴퓨터들, 서버 컴퓨터들 또는 다중 프로세싱 리소스들을 가진 임의의 전자 디바이스에 적용가능하다.
이제 예시된 예들을 참조하게 된다. SoC 에 의해 지원되는 휴대용 컴퓨팅 디바이스 (PCD) 의 비제한적 양태의 일 예의 실시형태가 도시되고 일반적으로 100 으로 지정된다. PCD (100) 는 멀티코어 CPU (210) 를 포함하는 온-칩 시스템 (120) 을 포함한다. 멀티코어 CPU (210) 는 0 번째 코어 (215), 1 번째 또는 제 1 코어 (216), 및 N 번째 코어 (217) 를 포함한다. N 개의 코어들의 각각은 서로 독립적이고 가산, 데이터 이동, 분기 등과 같은 명령들을 프로세싱하도록 배열된다. 멀티코어 CPU (210) 는 스케줄러 (214) 에 의해 나타낸 바와 같이 스케줄을 관리하는 소프트웨어를 실행한다. 대안적으로, 멀티코어 CPU (210) 또는 SoC (120) 의 또 다른 부분은 태스크 스케줄러를 인에이블시키도록 구성된 하드웨어 (즉, 회로) 엘리먼트 또는 하드웨어 엘리먼트들의 세트를 가지고 배열된다.
도 1 에 예시한 바와 같이, 디스플레이 제어기 (128) 및 터치 스크린 제어기 (130) 가 멀티코어 CPU (210) 에 커플링된다. 차례로, 온-칩 시스템 (120) 의 외부에 있는 디스플레이/터치스크린 (132) 이 디스플레이 제어기 (128) 및 터치 스크린 제어기 (130) 에 커플링된다. 비디오 인코더 (134), 예를 들어, PAL (phase alternating line) 인코더, SECAM (sequential couleur a memoire) 인코더, 또는 NTSC (national television system(s) committee) 인코더는 멀티코어 CPU (210) 에 커플링된다. 게다가, 비디오 증폭기 (136) 는 비디오 인코더 (134) 및 디스플레이/터치스크린 (132) 에 커플링된다. 또한, 비디오 포트 (138) 는 비디오 증폭기 (136) 에 커플링된다. 도 1 에 나타낸 바와 같이, 범용 시리얼 버스 (USB) 제어기 (140) 가 멀티코어 CPU (210) 에 커플링된다. USB 저장 디바이스 (142) 는 USB 제어기 (140) 에 커플링된다. 시스템 메모리 (230) 및 가입자 식별 모듈 (SIM) 카드 인터페이스 (146) 는 온-칩 시스템 (120) 의 이들 엘리먼트들 사이에 데이터를 전송하기 위한 2 개 이상의 물리적 채널들 또는 경로들로 이루어진 멀티코어 CPU (210) 와 시스템 메모리 (230) 사이의 연결 (219) 로 멀티코어 CPU (210) 에 또한 커플링될 수도 있다. 게다가, 도 1 에 도시한 바와 같이, 디지털 카메라 (148) 가 멀티코어 CPU (210) 에 커플링될 수도 있다. 예시적인 양태에서, 디지털 카메라 (148) 는 CCD (charge-coupled device) 카메라 또는 CMOS (complementary metal-oxide semiconductor) 카메라이다.
도 1 에 예시한 바와 같이, 스테레오 오디오 코덱 (CODEC) (150) 이 멀티코어 CPU (210) 에 커플링될 수도 있다. 더욱이, 오디오 증폭기 (152) 는 스테레오 오디오 코덱 (150) 에 커플링될 수도 있다. 예시적인 양태에서, 제 1 스테레오 스피커 (154) 및 제 2 스테레오 스피커 (156) 는 오디오 증폭기 (152) 에 커플링된다. 도 1 은 마이크로폰 증폭기 (158) 가 스테레오 오디오 코덱 (150) 에 또한 커플링될 수도 있다는 것을 도시한다. 부가적으로, 마이크로폰 (116) 은 마이크로폰 증폭기 (158) 에 커플링될 수도 있다. 특정한 양태에서, 주파수 변조 (FM) 라디오 튜너 (162) 는 스테레오 오디오 코덱 (150) 에 커플링될 수도 있다. 또한, FM 안테나 (164) 는 FM 라디오 튜너 (162) 에 커플링된다. 게다가, 스테레오 포트 (166) 는 스테레오 오디오 코덱 (150) 에 커플링될 수도 있다.
도 1 은 또한, 라디오 주파수 (RF) 트랜시버 (168) 가 멀티코어 CPU (210) 에 커플링된다는 것을 나타낸다. RF 스위치 (170) 는 RF 트랜시버 (168) 및 RF 안테나 (172) 에 커플링될 수도 있다. 도 1 에 도시한 바와 같이, 키패드 (174) 는 멀티코어 CPU (210) 에 커플링된다. 또한, 마이크로폰을 가진 모노 헤드셋 (176) 은 멀티코어 CPU (210) 에 커플링될 수도 있다. 게다가, 바이브레이터 디바이스 (178) 는 멀티코어 CPU (210) 에 커플링될 수도 있다. 도 1 은 또한, 전력 공급기 (180) 가 USB 제어기 (140) 를 통해 온-칩 시스템 (120) 에 커플링될 수도 있다는 것을 도시한다. 특정한 양태에서, 전력 공급기 (180) 는 전력을 요구하는 PCD (100) 의 다양한 컴포넌트들에 전력을 제공하는 직류 (DC) 전력 공급기이다. 게다가, 특정한 양태에서, 전력 공급기 (180) 는 AC (alternating current) 전력 소스 (미도시) 에 연결되는 AC 투 DC 트랜스포머로부터 유도되는 재충전가능 DC 배터리 또는 DC 전력 공급기이다.
도 1 은 또한, PCD (100) 가 데이터 네트워크, 예를 들어, 로컬 영역 네트워크, 개인 영역 네트워크, 또는 임의의 다른 네트워크에 액세스하는데 이용될 수도 있는 네트워크 카드 (188) 를 또한 포함할 수도 있다는 것을 나타낸다. 네트워크 카드 (188) 는 블루투스 네트워크 카드, WiFi 네트워크 카드, PAN (personal area network) 카드, 또는 당업계에 널리 알려진 임의의 다른 네트워크 카드일 수도 있다. 게다가, 네트워크 카드 (188) 는 집적 회로에 통합될 수도 있다. 즉, 네트워크 카드 (188) 는 칩에서 풀 솔루션일 수도 있고, 별개의 네트워크 카드 (188) 가 아닐 수도 있다.
SoC (120) 는 또한, 랜덤 액세스 메모리 (RAM) (216), 디스패치 제어기 (DC) (212), 디지털 신호 프로세서 (DSP) (220), 및 그래픽스 프로세싱 유닛 (GPU) (225) 을 가지고 배열된다. 예시된 실시형태에서, 이들 엘리먼트들의 각각은 단일의 하드웨어 엘리먼트 또는 유닛으로서 표현된다. 그러나, 멀티코어 CPU (210) 와 마찬가지로, RAM (216), DC (212), DSP (220) 및 GPU (225) 각각은 요망될 수도 있는 바와 같이, 산술 논리 유닛들 또는 특정 태스크들을 위해 설계된 다른 컴퓨팅 엘리먼트들 (예를 들어, 픽셀 셰이딩, 지오메트리 셰이딩, 벡터 프로세싱 등을 위한 회로들) 과 같은 회로 컴포넌트들의 다수의 인스턴스들 또는 카피들을 포함할 수도 있다는 것이 이해되어야 한다. 또한, DC (212) 를 포함한, 이들 엘리먼트들 중 임의의 엘리먼트와 연관된 하나 이상의 기능들의 제 1 세트는 하드웨어 또는 하드웨어와 펌웨어의 조합에서 구현될 수 있는 한편, 각각의 엘리먼트 또는 엘리먼트들과 연관된 하나 이상의 기능들의 제 2 또는 잔여 세트는 소프트웨어에 저장된 명령들을 실행하기에 적합한 프로세서에 의해 실행되는 소프트웨어에서 구현될 수 있다는 것이 이해되어야 한다.
도 1 에 나타낸 바와 같이, 디스플레이/터치스크린 (132), 비디오 포트 (138), USB 포트 (142), 카메라 (148), 제 1 스테레오 스피커 (154), 제 2 스테레오 스피커 (156), 마이크로폰 (116), FM 안테나 (164), 스테레오 포트 (166), RF 스위치 (170), RF 안테나 (172), 키패드 (174), 모노 헤드셋 (176), 바이브레이터 (178), 및 전력 공급기 (180) 는 온-칩 시스템 (120) 의 외부에 있다.
하나 이상의 모뎀들을 포함할 수도 있는 RF 트랜시버 (168) 는 GSM (global system for mobile communications), 코드 분할 다중 액세스 ("CDMA"), 광대역 코드 분할 다중 액세스 ("W-CDMA"), 시간 분할 동기 코드 분할 다중 액세스 ("TDSCDMA"), 롱 텀 에볼루션 ("LTE"), 및 FDB/LTE 및 PDD/LTE 무선 프로토콜들과 같지만 이들에 제한되지는 않는 LTE 의 변형들 중 하나 이상을 지원한다.
예시된 실시형태에서는, 멀티-코어 CPU (210) 의 단일의 인스턴스가 나타내진다. 그러나, 임의의 수의 유사하게 구성된 멀티-코어 CPU들이 PCD (100) 와 연관된 다양한 주변 디바이스들 및 기능들을 지원하기 위해 포함될 수 있다는 것이 이해되어야 한다. 대안적으로, 단일의 프로세서 또는 단일의 산술 논리 유닛 또는 코어를 각각 갖는 다중 프로세서들이 요망될 수도 있는 바와 같이 PCD (100) 와 연관된 다양한 주변 디바이스들 및 기능들을 지원하기 위해 PCD (100) 또는 다른 컴퓨팅 디바이스들에서 전개될 수 있다.
예시된 실시형태는 완전히 통합된 온-칩 시스템 (120) 내에 배열되는 시스템 메모리 (230) 를 도시한다. 그러나, M 바이트의 대응하는 데이터 저장 용량을 갖는 2 개 이상의 벤더 제공된 메모리 모듈들이 온-칩 시스템 (120) 의 외부에 배열될 수도 있다는 것이 이해되어야 한다. 온-칩 시스템 (120) 의 외부에 배열될 때, 시스템 메모리 (230) 를 지원하는 다양한 메모리 모듈들은 메모리 모듈들에 데이터 및 전력을 전송하기에 적합한 배선 (electrical connection) 들을 포함한 변형된 다중 채널 메모리 버스 (미도시) 에 의하여 CPU (210) 에 커플링된다.
특정한 양태에서, 본 명세서에서 설명된 방법 단계들 중 하나 이상은 멀티코어 CPU (210) 또는 다른 하드웨어 엘리먼트들의 하나 이상의 코어들에 의해 요망될 때 취출되고 RAM (216), 내부 캐시 (미도시), 또는 멀티코어 CPU (210) 내의 다양한 레지스터들 (미도시) 에 버퍼링되는 시스템 메모리 (230) 에 저장된 데이터 및 프로세서 명령들에 의해 지원될 때 하드웨어 엘리먼트들 (예를 들어, 멀티코어 CPU (210), DSP (220), GPU (225)) 의 조합을 통해 인에이블될 수도 있다. CPU들, DSP들, 및 GPU들을 설계하는 당업자들은 PCD (100) 상에서 실행중인 다양한 애플리케이션들을 지원하기 위해 데이터 및 프로세싱 명령들을 관리 및 조작하기 위한 다수의 다양한 기법들에 익숙하다.
도 2 는 도 1 에서 도입된 SoC (120) 에서 프라이머리 프로세싱 리소스로부터 세컨더리 프로세싱 리소스로의 태스크들의 디스패치를 동기적으로 관리하기 위한 서브시스템의 일 예의 실시형태를 예시하는 개략적 다이어그램이다. 예시한 바와 같이, 서브시스템 (200) 은 RAM (216) 과 같은 휘발성 및 비휘발성 메모리 엘리먼트들 및 버스 (228) 에 의해 프라이머리 프로세싱 리소스 (202) 및 세컨더리 프로세싱 리소스에 커플링된 시스템 메모리 (230) 를 포함한다. 프라이머리 프로세싱 리소스 또는 호스트 (202) 는 도 1 에서 도입된 멀티-코어 CPU (210) 를 포함하고 O/S (211) 와 같은 오퍼레이팅 시스템을 실행한다. 알려진 바와 같이, O/S (211) 는 PCD (100) 에서의 하드웨어와 애플리케이션들 또는 프로그램들 사이의 중재자로서의 역할을 한다. 애플리케이션 코드가 CPU (210) 와 같은 하드웨어에 의해 실행되지만, 애플리케이션 코드는 O/S (211) 와 자주 상호작용할 것이거나 또는 O/S (211) 가 PCD 리소스들을 관리하고 PCD (100) 상의 다른 애플리케이션들 또는 프로그램들에 대해 공통 서비스들을 제공할 때 O/S (211) 에 의해 인터럽트될 것이다.
디폴트 동작 모드에서, 프라이머리 프로세싱 리소스 (202) 는 PCD (100) 상의 애플리케이션들 또는 프로그램들을 실행하는데 이용된다. 대안적 동작 모드에서, 프라이머리 프로세싱 리소스 (202) 는 프라이머리 프로세싱 리소스 (202) 와 이용가능한 세컨더리 프로세싱 리소스(들) (204) 중 하나 이상의 세컨더리 프로세싱 리소스 사이에서 태스크들 또는 스레드들의 형태로 작업을 분할하기 위한 최적의 솔루션을 동적으로 결정하는 런-타임 인터페이스를 실행한다. 대안적으로, 각각의 프로그램 또는 애플리케이션은 세컨더리 프로세싱 리소스 (204) 로 소정의 스레드들 또는 태스크들을 언제 포워딩할지를 프라이머리 프로세싱 리소스 (202) 에 지시하는 그러한 방식으로 컴파일링될 수 있다. 그러나, 배열되면, 프라이머리 프로세싱 리소스 또는 호스트 (202) 는, 예시된 예에서 DSP (220) 또는 GPU (225) 의 하나 이상의 인스턴스들 또는 카피들일 수도 있는 세컨더리 프로세싱 리소스 (204) 로 태스크를 오프로드하기 위한 요청을 생성 및 포워딩하는 것에 의해 오프로드 조건의 검출에 응답한다. 다른 배열들 (미도시) 에서는, 필드 프로그램가능 게이트 어레이들 (FPGA들), 산술 논리 유닛들 (ALU들) 또는 다른 디바이스들이 일부 스레드들의 부분들을 프로세싱하는데 이용될 수도 있다. 도 2 에 나타낸 바와 같이, 오프로드 요청들은 세컨더리 프로세싱 리소스 (204) 에 간접적으로 통신된다. 제 1 경로 또는 브랜치는 스케줄러 (214) 를 이용하는 한편, 제 2 브랜치 또는 경로는 디스패치 제어기 (212) 를 이용하여 세컨더리 프로세싱 리소스 (204) 와 통신한다.
비동기적 디스패치 요청은 프라이머리 프로세싱 리소스 (202) 에 의해 생성되고 스케줄러 (214) 에 통신된다. 스케줄러 (214) 는 디스패치 제어기 (212) 로 요청을 언제 포워딩할지를 결정하기 위해 하나 이상의 부가적인 입력들 및 우선순위들을 관리하기 위한 조정자 엘리먼트 (250) 를 포함한다. 동기적 디스패치 요청은 디스패치 제어기 (212) 에 통신된다. 그 요청이 스케줄러 (214) 로부터 간접적으로 그리고 비동기적으로 수신되든 또는 프라이머리 프로세싱 리소스 (202) 로부터 직접적으로 그리고 동기적으로 수신되든 간에, 디스패치 제어기 (212) 는 디스패치 패킷을 생성하고, 그 디스패치 패킷은 오프로드된 스레드를 실행하기 위해 디스패치 패킷 정보에서 정의된 세컨더리 프로세싱 리소스 (204) 에 필요한 모든 정보를 제공하는 디스패치 패킷을 생성한다. RAM (216) 내의 공유된 가상 메모리 공간 (240) 은 세컨더리 프로세싱 리소스 (204) 에 스레드의 콘텍스트를 제공하기 위해 레버리징되고 스레드 완료 시 프라이머리 프로세싱 리소스 (202) 에 의한 계속된 프로세싱을 위해 이용가능하다.
프라이머리 프로세싱 리소스 (202) 에 의해 수신된 하나 이상의 입력 신호들 및/또는 프라이머리 프로세싱 리소스 (202) 내에서 실행중인 하나 이상의 애플리케이션 프로그램들 또는 오퍼레이팅 시스템 내에서 생성된 것들과 같은 하나 이상의 내부적으로 식별된 조건들에 응답하여, 태스크 오프로드 조건이 생성된다. 프라이머리 프로세싱 리소스 (202) 에 의해 실행될 때, 태스크 오프로드 조건은 세컨더리 프로세싱 리소스 (204) 로 시프트되길 원하는 실행 스레드를 중단할 것을 프라이머리 프로세싱 리소스 (202) 에 지시하고 로우-레이턴시 (예를 들어, 대략 1nS 미만) 신호/대기 표시자를 생성한다. 예의 시그널링 구성 (construct) 은 데이터를 포함할 필요가 없고 sigresourcealloc_signal(), signal(sigresource); 및 wait(sigresource) 와 같은 명령들의 세트를 포함할 수도 있다. 그 예의 시그널링 구성은 프로세싱 리소스들 및 PCD (100) 에서 프로세싱 리소스들을 지원하는데 이용되는 다른 엘리먼트들에 노출 및/또는 확장된다.
프라이머리 프로세싱 리소스 (202) 는 세컨더리 프로세싱 리소스 (204) 로 스레드를 오프로드하기 위한 요청을 생성 및 통신하기 전에 실행 스레드를 중단하는 것이 바람직하다. 이 중단은 태스크 완료 신호가 프라이머리 프로세싱 리소스 (202) 에 리턴될 때까지 그 스레드가 프라이머리 프로세싱 리소스 (202) 상에서 재시작하는 것을 차단한다. 프라이머리 프로세싱 리소스 (202) 에 의해 이슈된 요청은 함수 호출과 유사하고 스레드의 오프로드된 부분을 실행하기 위해 이용될 세컨더리 프로세싱 리소스 (204) 의 특정한 인스턴스 및 타입을 식별하는 정보를 포함한다.
오프로드된 스레드의 디스패치는 프라이머리 프로세싱 리소스 (202) 가 디스패치 제어기 (212) 를 통해 세컨더리 프로세싱 리소스 (204) 에 커플링된다는 점에서 간접적이다. 단일의 엘리먼트로서 예시되지만, 디스패치 제어기 인스턴스는 프라이머리 프로세싱 리소스 (202) 로부터 세컨더리 프로세싱 리소스 (204) 로 오프로드 또는 전송되는 각각의 스레드에 대해 이용된다는 것이 이해되어야 한다. 예를 들어, 멀티코어 CPU (210) 가 4 개의 프로세싱 코어들을 포함하고 그 프로세싱 코어들 중 2 개가 별도로 식별된 태스크 오프로드 조건들을 갖는다면, 디스패치 제어기 (212) 의 적어도 2 개의 인스턴스들이 DSP (220) 및 GPU (225) 와 같이 별도로 식별된 세컨더리 프로세싱 리소스들로 각각의 디스패치 패킷들을 생성 및 포워딩하기 위해 이용될 것이다. 디스패치 제어기 (212) 는 하드웨어 엘리먼트로서 또는 프라이머리 프로세싱 리소스 (202) 또는 호스트 상에서 실행중인 소프트웨어에서 구현될 수 있다. 더욱이, 디스패치 제어기 (212) 는 레지스터들 또는 다른 저장 엘리먼트들에 커플링된 프로세싱 리소스들에 의해 소프트웨어에서 구현된 다른 디바이스들 및 다른 기능들 중에서, 가산기들 및 레지스터들과 같은 하드웨어 엘리먼트들에서 구현된 일부 기능들로 구현될 수 있다.
디스패치 패킷은 어떤 의존성 제어도 제공하지 않는다. 즉, 디스패치 제어기 (212) 에 제출되고 그것에 의해 포워딩된 모든 것이 실행을 위해 준비된다. 디스패치 제어기 (212) 는 세컨더리 프로세싱 리소스 (204) 를 식별할 뿐만 아니라, 1, 2 또는 3 차원일 수 있는 작업 아이템들의 단일의 공간 (예를 들어, NDRange) 을 식별된 대안적 프로세싱 리소스에 제공하는 디스패치 패킷을 생성한다. 예를 들어, 960×640 이미지에서의 각각의 픽셀에 필터를 적용하길 원한다면, 스레드는 그 이미지에서의 픽셀에 필터를 각각 적용하는 960×640 작업 아이템들을 식별할 것이며, 즉 작업 아이템 (x,y) 은 픽셀 (x,y) 에 필터를 적용한다. 완료 시, 세컨더리 프로세싱 리소스 (204) 는 디스패치 패킷을 이슈한 디스패치 제어기 (212) 에 태스크/스레드 완료 신호를 제공한다. 차례로, 디스패치 제어기 (212) 는 그 동일한 것의 표시를 프라이머리 프로세싱 리소스 (202) 로 포워딩한다. 프라이머리 프로세싱 리소스 (202) 는 그 동일한 것을 멀티코어 CPU (210) 의 잔여 코어들 중 하나 이상 상에서 실행중인 O/S (211) 에 통신할 수도 있다. 배열한 바와 같이, 디스패치 제어기 (212) 는 디스패치 요청이 스레드의 실행을 위해 이용가능한 세컨더리 프로세싱 리소스 (204) 에 이슈되고 그것에 의해 서비스된다는 것을 보증한다. 더욱이, 디스패치 제어기 (212) 는, 특정한 스레드와 PCD (100) 상의 프로세싱 리소스 사이에 1-대-1 관계를 추가 정의하는, 요청들의 세트와 디스패치 패킷들 사이의 관계를 유지할 것이다.
도 2 에 추가 예시한 바와 같이, 글로벌 조정자 또는 스케줄러 (214) 가 오프로드 요청들을 수신하고 디스패치 제어기 (212) 에 대한 디스패치 커맨드들을 비동기적으로 생성하기 위해 제공된다. 글로벌 조정자 또는 스케줄러 (214) 는 프라이머리 프로세싱 리소스 (202) 에 의해 오프로드된 태스크들을 스케줄링하기 위한 수단 또는 메커니즘을 제공한다. 글로벌 조정자 또는 스케줄러는 PCD (100) 상에서 실행되는 애플리케이션들과 연관된 태스크들의 완료를 지시하는데 적합하다. 글로벌 조정자 (214) 또는 스케줄러는 프라이머리 프로세싱 리소스 (202) 로부터 수신된 하나 이상의 요청들에 응답하여 디스패치 커맨드들을 생성 및 이슈하는 조정자 (250) 의 하나 이상의 인스턴스들 또는 카피들을 가지고 배열된다. 각각의 조정자 (250) 는 디스패치 제어기(들) (212) 에 대한 디스패치 커맨드들을 개시하도록 구성된 마이크로-스케줄러를 실행 또는 포함할 수도 있다.
동작적 또는 대안적 배열에서, DSP (220) 는 태스크 오프로드 조건들에 응답하여 디스패치 패킷들을 프로세싱하기 위해 실시간 오퍼레이팅 시스템 (RTOS) (221) 을 가지고 배열된다. RTOS (221) 는 최소 버퍼링 지연들을 가지고 수신될 때 실시간 요청들을 서빙한다. 스케줄러 (222) 는 PCD (100) 내의 임베딩된 시스템들에 대해 예측가능한 실행 패턴을 제공한다. 스케줄러 (222) 는 프라이머리 프로세싱 리소스 (202) 에 의해 오프로드된 태스크들을 스케줄링하기 위한 대안적 수단 또는 메커니즘을 추가 제공한다. RTOS (221) 는 엄격히 정의된 시간 또는 데드라인 내에 응답한다. 이 대안적 배열에서, DSP (220) 는 디스패치 제어기 (212) 의 인스턴스 또는 카피에 의하여 GPU (225) 와 같은 다른 프로세싱 리소스들에 태스크들을 오프로드하기 위한 요청들을 이슈한다.
설명한 바와 같이, 스레드를 프로세싱하기 위한 제 1 수단 또는 메커니즘은 프라이머리 프로세싱 리소스 또는 호스트 (202) 를 포함한다. 스레드를 프로세싱하기 위한 세컨더리 또는 대안적 수단 또는 메커니즘은 DSP (220), GPU (225), ALU (미도시) 또는 다른 회로들 또는 프로세서들 중 하나 이상을 포함한다. 프라이머리 프로세싱 리소스 또는 호스트 (202) 내에서 이전에 실행되고 있는 스레드를 동기적으로 디스패치하기 위한 수단 또는 메커니즘은 디스패치 제어기 (212) 를 포함한다. 스레드를 프로세싱하기 위한 제 1 수단은 디스패치 제어기 (212) 에 직접적으로 또는 스케줄러 (214) 를 통하여 간접적으로 오프로드 요청들을 통신하도록 배열될 수도 있다. 이와 관련하여, 스케줄러 (214) 및 그 스케줄러 (214) 의 지시 하에서 기능하는 하나 이상의 조정자들 (250) 은 스레드를 프로세싱하기 위한 제 1 수단으로부터 요청을 비동기적으로 수신하기 위한 수단을 제공한다. 스케줄러 (214) 는 또한, 컴퓨팅 환경에서 태스크들의 실행을 스케줄링하기 위한 수단 또는 메커니즘 또는 글로벌 조정자로 간주될 수도 있다. 추가 설명한 바와 같이, GPU (225) 는 그래픽스 커맨드들을 프로세싱하기 위한 수단 또는 메커니즘을 제공한다.
도 3 은 도 1 의 SoC (120) 에서 프라이머리 프로세싱 리소스로부터 세컨더리 프로세싱 리소스로의 태스크들 또는 스레드들의 디스패치를 관리하는 컴퓨팅 환경 (300) 의 일 예의 실시형태를 예시하는 개략적 다이어그램이다. 컴퓨팅 환경 (300) 은 프라이머리 프로세싱 리소스 또는 호스트 (202), 대안적 프로세싱 환경 (324) 및 공유된 가상 메모리 (240) 를 포함한다. 프라이머리 프로세싱 리소스 (202) 는 다중 CPU들, 컴퓨팅 엘리먼트들, 또는 코어들을 포함한다. 예시된 실시형태에서, 프라이머리 프로세싱 리소스 (202) 는 CPU(0) (320), CPU(1) (321), CPU(2) (322) 및 CPU(3) (323) 을 포함한다. 그러나, 더 적은 컴퓨팅 엘리먼트들, 더 많은 컴퓨팅 엘리먼트들 또는 다양한 상이한 컴퓨팅 엘리먼트들의 조합이 PCD (100) 내의 호스트 또는 프라이머리 프로세싱 리소스 (202) 에 포함될 수 있다는 것이 이해되어야 한다.
프로세싱 환경 (324) 은 프라이머리 프로세싱 리소스들 (즉, CPU(0) (320), CPU(1) (321), CPU(2) (322) 및 CPU(3) (323)) 과 1-대-1 관계에 있는 일 세트의 디스패치 제어기들 (즉, DC(0) (330), DC(1) (331), DC(2) (332) 및 DC(3) (333)) 을 포함한다. 작업그룹 스케줄러 (325) 는 각각의 디스패치 제어기들로부터 하나 이상의 디스패치 패킷들을 수신하고 그 안에 제공된 정보를 세컨더리 프로세싱 리소스(들) (204) 의 식별된 실행 유닛들로 포워딩한다. 예시된 실시형태에서, 세컨더리 프로세싱 리소스(들) (204) 는 실행 유닛(0) (340) 내지 실행 유닛(N) (348) 을 가지고 배열되고 여기서 N 은 정수이다. 실행 유닛들 (340 내지 348) 은 단일의 DSP 또는 GPU 와 유사하게 배열 및 연관될 수도 있거나 또는 실행 유닛들은 DSP, 여러 DSP들, GPU 또는 여러 GPU들 및/또는 이들의 조합들 중 하나 또는 양자에 독특한 상이한 타입들의 실행일 수도 있다는 것에 주목한다. 정수 N 은 임의의 원하는 수의 실행 유닛들이 세컨더리 또는 대안적 프로세싱 리소스 (204) 에 포함될 수 있다는 것을 나타낸다.
예시된 실시형태들에서, 세컨더리 프로세싱 리소스 (204) 의 실행 유닛들 (340 내지 348) 은 DSP (220) 및 GPU (225) 의 서브-엘리먼트들이다. 그러나, 세컨더리 프로세싱 리소스 (204) 는 이렇게 제한되지는 않는다. 실행 유닛들은 애플리케이션 특정 집적 회로들 (ASIC들) 또는 심지어는 SoC (120) 를 가로질러 분산된 스탠드얼론 산술 논리 유닛들과 같은 다른 디바이스들의 서브-엘리먼트들일 수도 있다.
도 3 에 추가 나타낸 바와 같이, 컴퓨팅 환경 (300) 을 통한 일반적 프로세스 플로우는 동그라미를 친 시퀀스 식별자를 가진 화살표들에 의해 나타내진다. 예를 들어, CPU(2) (322) 는 검출된 오프로드 조건에 응답하여 디스패치 제어기 DC(2) (332) 에 통신되는, 화살표 1 로 나타내진, 요청을 생성한다. 응답하여, DC(2) (332) 는 작업그룹 스케줄러 (325) 로 포워딩되는, 화살표 2 로 나타내진, 디스패치 패킷을 생성한다. 차례로, 작업그룹 스케줄러 (325) 는 화살표 3 으로 도시한 바와 같이, 디스패치 패킷에서 식별된 실행 유닛으로 디스패치 패킷에 포함된 정보를 포워딩한다. 디스패치 패킷에서 또한 식별한 바와 같이, 실행 유닛(0) (340) 은 공유된 가상 메모리 (240) 의 정의된 범위 (245) 에 저장된 정보를 이용하도록 지시받는다. 가상 메모리 (240) 의 정의된 범위 (245) 는 오프로드된 또는 디스패치된 스레드의 콘텍스트를 포함한다. (디스패치 패킷에서 또한 정의한 바와 같이) 정의된 작업의 완료 시, 실행 유닛(0) (340) 은 프라이머리 프로세싱 리소스 (202) 에 의한 부가적인 프로세싱을 위해 공유된 가상 메모리 (240) 의 정의된 범위 (245) 에 정보의 수정된 버전을 남겨둔다. 또한, 실행 유닛(0) (340) 은 화살표 4 로 나타낸 바와 같이, 스레드 또는 태스크가 완료되었다는 표시를 작업 스케줄러 (325) 로 전송한다. 작업그룹 스케줄러 (325) 는 태스크/스레드 완료를 기록하고 그 동일한 것의 표시를 화살표 5 로 나타낸 바와 같이 디스패치 제어기 DC(2) (332) 로 전송한다. 차례로, 그리고 화살표 6 으로 도시한 바와 같이, DC(2) (332) 는 태스크/스레드가 완료되었다는 표시를 CPU(2) (322) 로 포워딩한다. 프라이머리 또는 호스트 프로세싱 리소스 (202) 는 디스패치 제어기로부터의 태스크 완료 신호를 대기하고, 태스크 완료 신호의 수신 시에, 중단된 스레드의 실행을 재개한다.
도 6 은 도 3 에서 도입된 컴퓨팅 환경 (300) 을 이용한 사용자 모드 스케줄링된 태스크의 일 예의 실시형태를 예시하는 개략적 다이어그램이다. 도 6 의 컴퓨팅 환경 (300') 에 도시한 바와 같이, (CPU (2) (322) 로부터 DC(2) (332) 로 통신된 스레드를 오프로드하기 위한) 요청 (375) 은 함수 호출로 보이고, 그 함수 호출은 정의된 디스패치 제어기 (즉, DC(2) (332)) 에 전달되는 정의된 애플리케이션 바이너리 인터페이스 (application binary interface; ABI) 및 인수 (argument) 들을 포함한다. 예시된 사용자 모드 스케줄링된 태스크에서, 도 3 에 화살표 1 로 나타내졌던 요청 (375) 은 화살표 1 및 화살표 2 로 대체된다. 그 후의 프로세싱 시퀀스는 프로세싱 환경 (324) 을 통하여, DC(2) (332) 가 작업그룹 스케줄러 (325) 와 상호작용하고 작업그룹 스케줄러 (325) 가 또한 실행 유닛(0) (340) 을 향하는 것으로 도 3 에 도시한 바와 동일하다. 유사하게, 태스크 완료는 DC(2) (332) 로부터의 태스크 완료 신호가 요청 (375) 에서 표현된 함수 호출의 "While 논리 부분" 을 종료하고, 그 종료가 오프로드된 태스크/스레드가 완료되었다는 것을 CPU (2) (322) 에 알린다는 것을 함께 나타내는 화살표 7 및 화살표 8 에 의해 DC(2) (332) 로부터의 태스크 또는 스레드 완료 표시가 나타내진다는 것을 제외하고는, 도 3 에서와 동일한 방식으로 시그널링된다. 간략하게 설명한 바와 같이, CPU(2) (322) 는 실행 유닛(0) (340) 에 의해 수정된 공유된 가상 메모리 (240) 의 정의된 범위 (245) 에서의 정보를 이용하여 스레드를 계속 실행할 수 있다.
도 4 는 도 1 의 SoC (120) 에서 태스크들 또는 스레드들의 디스패치를 관리하는 컴퓨팅 환경 (400) 의 또 다른 예의 실시형태를 예시하는 개략적 다이어그램이다. 컴퓨팅 환경 (400) 은 프라이머리 프로세싱 리소스 또는 호스트 (202), 대안적 프로세싱 환경 (420) 및 공유된 가상 메모리 (240) 를 포함한다. 프라이머리 프로세싱 리소스 (202) 는 다중 CPU들, 컴퓨팅 엘리먼트들 또는 코어들을 포함한다. 예시된 실시형태에서, 프라이머리 프로세싱 리소스 (202) 는 CPU(0) (320), CPU(1) (321), CPU(2) (322) 및 CPU(3) (323) 을 포함한다. 그러나, 더 적은 컴퓨팅 엘리먼트들, 더 많은 컴퓨팅 엘리먼트들 또는 다양한 상이한 컴퓨팅 엘리먼트들의 조합이 PCD (100) 내의 호스트 또는 프라이머리 프로세싱 리소스 (202) 에 포함될 수 있다는 것이 이해되어야 한다.
프로세싱 환경 (420) 은 일 세트의 디스패치 제어기들 (즉, DC(0) (430), DC(1) (431), DC(2) (432), DC(3) (433) 및 DC(4) (434)) 을 포함한다. 따라서, 프라이머리 프로세싱 리소스 (202) 의 CPU들은 더 이상 디스패치 제어기들 (즉, DC(0) (430), DC(1) (431), DC(2) (432) 및 DC(4) (433)) 과 1-대-1 관계에 있지 않다. 작업그룹 스케줄러 (325) 는 각각의 디스패치 제어기들로부터 하나 이상의 디스패치 패킷들을 수신하고 그 안에 제공된 정보를 세컨더리 프로세싱 리소스(들) (204) 의 식별된 실행 유닛들로 포워딩한다. 예시된 실시형태에서, 세컨더리 프로세싱 리소스(들) (204) 는 실행 유닛(0) (340) 내지 실행 유닛(N) (348) 을 가지고 배열되고 여기서 N 은 정수이다. 실행 유닛들 (340 내지 348) 은 단일의 DSP 또는 GPU 와 유사하게 배열 및 연관될 수도 있거나 또는 실행 유닛들은 DSP, 여러 DSP들, GPU 또는 여러 GPU들 및/또는 이들의 조합들 중 하나 또는 양자에 독특한 상이한 타입들의 실행일 수도 있다는 것에 주목한다. 정수 N 은 임의의 원하는 수의 실행 유닛들이 세컨더리 또는 대안적 프로세싱 리소스 (204) 에 포함될 수 있다는 것을 나타낸다.
도 4 에 예시된 컴퓨팅 환경 (400) 에서, 스케줄러 (410) 는 프라이머리 프로세싱 리소스 (202) 로부터 오프로드 요청들을 비동기적으로 수신한다. 스케줄러 (410) 는 조정자(0) (412) 및 조정자(M) (418) 과 같은 조정자들의 다수의 인스턴스들 또는 카피들을 포함한다. 하드웨어 및/또는 소프트웨어에서 구현될 수도 있는 조정자들 (412 내지 418) 은 디스패치 제어기들 (즉, DC(0) (430), DC(1) (431), DC(2) (432) 및 DC(4) (433)) 의 하나 이상의 인스턴스들 또는 카피들로 스레드 요청들을 동기적으로 오프로드한다. 그 결과, 이 배열에서, 디스패치 제어기들은 조정자들과의 1-대-1 관계에 있다.
도 4 에 추가 나타낸 바와 같이, 컴퓨팅 환경 (300) 을 통한 일반적 프로세스 플로우는 동그라미를 친 시퀀스 식별자를 가진 화살표들에 의해 나타내진다. 예를 들어, CPU(1) (321) 은 검출된 오프로드 조건에 응답하여 스케줄러 (410) 에 통신되는, 화살표 1 로 나타내진, 요청을 생성한다. 스케줄러 (410) 는 PCD (100) 상의 제시 조건들 및 하나 이상의 실행 알고리즘들에 응답하여 오프로드 요청을 조정자(M) (418) 으로 포워딩하고, 이는 차례로 그리고 화살표 2 로 도시한 바와 같이, 그 오프로드 요청을 디스패치 제어기 DC(4) (434) 에 통신한다. 응답하여, DC(4) (434) 는 작업그룹 스케줄러 (325) 로 포워딩되는, 화살표 3 으로 나타내진, 디스패치 패킷을 생성한다. 차례로, 작업그룹 스케줄러 (325) 는 디스패치 패킷에 포함된 정보를 화살표 4 로 도시한 바와 같이, 디스패치 패킷에서 식별된 실행 유닛으로 포워딩한다. 디스패치 패킷에서 식별한 바와 같이, 실행 유닛(N) (348) 은 공유된 가상 메모리 (240) 의 정의된 범위 (445) 에 저장된 정보를 이용하도록 지시받는다. 가상 메모리 (240) 의 정의된 범위 (445) 는 오프로드된 또는 디스패치된 스레드의 콘텍스트를 포함한다. (디스패치 패킷에서 또한 정의한 바와 같이) 정의된 작업의 완료 시에, 실행 유닛(M) (348) 은 프라이머리 프로세싱 리소스 (202) 에 의한 부가적인 프로세싱을 위해 공유된 가상 메모리 (240) 의 정의된 범위 (445) 에 정보의 수정된 버전을 남겨둔다. 또한, 실행 유닛(M) (348) 은 화살표 5 로 나타낸 바와 같이, 스레드 또는 태스크가 완료되었다는 표시를 작업 스케줄러 (325) 로 전송한다. 작업그룹 스케줄러 (325) 는 태스크/스레드 완료를 기록하고 동일한 것의 표시를 화살표 6 으로 나타낸 바와 같이 디스패치 제어기 DC(4) (434) 로 전송한다. 차례로 그리고 화살표 7 로 도시한 바와 같이, DC(4) (434) 는 태스크/스레드가 완료되었다는 표시를 CPU(1) (321) 로 포워딩한다.
조정자들 (412 내지 418) 은 프로세싱 환경에 대해 글로벌적이고 프라이머리 프로세싱 리소스로부터 제 2 또는 대안적 프로세싱 리소스로 태스크들 또는 스레드들을 오프로드하길 원할 수도 있을 때에 디스패치 제어기들 (430 내지 434) 과 통신할 수 있다. 조정자들 (412 내지 418) 은 스케줄러 (410) 와 같은 마이크로-스케줄러에 의해 직접적으로 실행될 수 있고 하나 이상의 도메인 특정 언어들을 통해 개발자들 및 프로그래머들에게 노출될 수 있다. 조정자들 (412 내지 418) 은 설명된 CPU들 (320 내지 323) 과 함께 전개될 때 PCD (100) 내에서 2-레벨들 또는 계층들의 스케줄링을 구성 및 관리하는 능력을 제공한다.
도 7 은 도 4 에서 도입된 컴퓨팅 환경 (400) 을 이용한 사용자 모드 스케줄링된 조정자 가능 태스크의 일 예의 실시형태를 예시하는 개략적 다이어그램이다. 도 4 에 도시된 엘리먼트들에 더하여, 컴퓨팅 환경 (400') 및 보다 구체적으로는 대안적 프로세싱 환경 (720) 은 스케줄러 (410) 와 연결 (405) 을 통해 통신하는 RTOS (349) 를 포함한다. 그 연결 (405) 은 RTOS (349) 및 스케줄러 (410) 가 오프로드된 태스크들 또는 스레드들을 제어가능하게 실행하는 것을 가능하게 하는 양방향 통신 경로이다. 도 7 의 컴퓨팅 환경 (400') 에 도시한 바와 같이, (CPU(1) (321) 로부터 DC(4) (434) 로 통신된 스레드를 오프로드하기 위한) 조정자 요청 (475) 은 함수 호출로 보이고, 이는 정의된 디스패치 제어기 (즉, DC(4) (434)) 에 전달되는 정의된 애플리케이션 바이너리 인터페이스 (ABI) 및 인수들을 포함한다. 예시된 사용자 모드 스케줄링된 조정자 가능 태스크에서, 도 4 에 화살표 2 로 나타내졌던 조정자 요청 (475) 은 화살표 2 및 화살표 3 으로 대체된다. 그 후의 프로세싱 시퀀스는 DC(4) (434) 가 작업그룹 스케줄러 (325) 와 상호작용하고 작업그룹 스케줄러 (325) 가 또한 실행 유닛(N) (348) 을 향하는 것으로 도 4 에 도시한 바와 동일하다. 유사하게, 태스크 또는 스레드 완료는 DC(4) (434) 로부터의 태스크 완료 신호가 조정자 요청 (475) 에서 표현된 함수 호출의 "While 논리 부분" 을 종료하고, 그 종료가 오프로드된 태스크/스레드가 완료되었다는 것을 CPU(1) (321) 에 알린다는 것을 함께 나타내는 화살표 9 및 화살표 10 에 의해 DC(4) (434) 로부터의 태스크 또는 스레드 완료 표시가 나타내진다는 것을 제외하고는, 도 4 에서와 동일한 방식으로 시그널링된다. 그 후, CPU(1) (321) 은 계속해서 실행 유닛(M) (348) 에 의해 수정된 공유된 가상 메모리 (240) 의 정의된 범위 (445) 에서의 정보를 이용하여 스레드를 실행하고 및 또는 스레드가 완료되었다는 것을 O/S 에 시그널링할 수 있다.
도 5 는 도 1 의 SoC 에서 태스크들 또는 스레드들의 디스패치를 관리하는 컴퓨팅 환경 (500) 의 제 3 예의 실시형태를 예시하는 개략적 다이어그램이다. 이 배열에서, 프로세싱 환경 (520) 은 DC(X) 의 인스턴스 대신에 그래픽스 프로세싱 유닛 특정 제어기 (534) 를 가지고 배열된다. 이러한 배열은 작업그룹 스케줄러 (325) 에, 비-그래픽스 타입 스레드들과 독립적으로 그리고 동시에 그래픽스 커맨드들을 프로세싱하도록 허락한다. 또한, 이러한 배열은 작업그룹 스케줄러 (325) 에, 다른 것들에 비해 하나의 타입의 스레드 (예를 들어, 그래픽스 스레드) 를 우선순위하도록 허락한다. 하나의 그래픽스 프로세싱 유닛 특정 제어기 (534) 가 도시되지만, 프로세싱 환경 (520) 은 이렇게 제한되지 않고 임의의 원하는 수의 그래픽스 프로세싱 유닛 특정 제어기들을 포함할 수도 있다는 것에 주목한다.
다른 예시된 실시형태들에서와 같이, 그래픽스 프로세싱 유닛 특정 제어기 (534) 의 각각의 인스턴스 또는 카피는 태스크 또는 스레드를 오프로드하기 위한 프라이머리 프로세싱 리소스 (202) 로부터의 요청을 수신하기 위해 이용가능하다. 그 요청은 하나 이상의 신호들 또는 조건들에 응답하여 프라이머리 프로세싱 리소스 (202) 에 의해 이슈 또는 시그널링된다. 그래픽스 프로세싱 유닛 특정 제어기 (534) 는 그 요청에 응답하는 디스패치 커맨드를 개시하는 것이 가능한 스케줄러 (미도시) 를 실행한다.
도 5 에 추가 나타낸 바와 같이, 컴퓨팅 환경 (500) 을 통한 일반적 프로세스 플로우는 동그라미를 친 시퀀스 식별자를 가진 화살표들에 의해 나타내진다. 예를 들어, CPU(3) (323) 은 검출된 오프로드 조건에 응답하여, 그래픽스 프로세싱 유닛 특정 제어기 (534) 에 통신되는, 화살표 1 로 나타내진, 요청을 생성한다. 응답하여, 그래픽스 프로세싱 유닛 특정 제어기 (534) 는 작업그룹 스케줄러 (325) 로 포워딩되는, 화살표 2 로 나타내진, 디스패치 패킷을 생성한다. 차례로, 작업그룹 스케줄러 (325) 는 화살표 3 으로 도시한 바와 같이, 디스패치 패킷에서 식별된 실행 유닛으로 디스패치 패킷에 포함된 정보를 포워딩한다. 디스패치 패킷에서 또한 식별한 바와 같이, 실행 유닛(0) (540) 은 공유된 가상 메모리 (240) 의 정의된 범위 (545) 에 저장된 정보를 이용하도록 지시받는다. 가상 메모리 (240) 의 정의된 범위 (545) 는 오프로드된 또는 디스패치된 스레드의 콘텍스트를 포함한다. (디스패치 패킷에서 또한 정의한 바와 같이) 정의된 작업의 완료 시에, 실행 패킷(0) (540) 은 프라이머리 프로세싱 리소스 (202) 에 의한 부가적인 프로세싱을 위해 공유된 가상 메모리 (240) 의 정의된 범위 (545) 에 정보의 수정된 버전을 남겨둔다. 또한, 실행 유닛(0) (540) 은 화살표 4 로 나타낸 바와 같이, 스레드 또는 태스크가 완료되었다는 표시를 작업 스케줄러 (325) 로 전송한다. 작업그룹 스케줄러 (325) 는 태스크/스레드 완료를 보고하고 동일한 것의 표시를 화살표 5 로 나타낸 바와 같이 그래픽스 프로세싱 유닛 특정 제어기 (534) 로 전송한다. 차례로 그리고 화살표 6 으로 도시한 바와 같이, 그래픽스 프로세싱 유닛 특정 제어기 (534) 는 태스크/스레드가 완료되었다는 표시를 CPU(3) (323) 으로 포워딩한다. 설명한 바와 같이, 그래픽스 프로세싱 유닛 특정 제어기는 GPU (225) 에 의해 그래픽스 커맨드들의 프로세싱을 스케줄링하기 위한 수단 또는 메커니즘을 제공한다.
도 8 은 디스패치 패킷을 정의하기 위해 레지스터들의 세트의 이용을 예시하는 개략적 다이어그램이다. 디스패치 패킷은 세컨더리 프로세싱 리소스들과 통신하기 위한 애플리케이션 바이너리 인터페이스 (ABI) (800) 를 정의한다. 도 8 에 나타낸 바와 같이, ABI (800) 는 특정한 방식으로 배열된 레지스터들의 세트이다. 예를 들어, ABI 는 원하는 수의 레지스터들을 가진 세트를 포함할 수도 있다. 즉, ABI 는 세컨더리 프로세싱 리소스들에 의해 이용되는 정보를 저장하기 위한 정수 개수의 레지스터들에 의해 정의될 수도 있다. 예를 들어, 레지스터 (801) 는 커널 어드레스를 포함한다. 레지스터 (802) 는 작업 공간의 디멘젼들의 수, 예비된 비트들의 수, 및 작업 공간의 x 디멘젼의 사이즈를 식별하기 위한 2-비트들을 포함한다. 레지스터 (803) 는 작업공간의 y-디멘젼 및 z-디멘젼의 사이즈를 식별하는 비트들을 포함한다. 레지스터 (804) 는 x 및 y 디멘젼들에 대한 작업그룹 사이즈를 식별한다. 레지스터 (805) 는 z 디멘젼에 대한 작업그룹 사이즈 및 작업 그룹 세그먼트 사이즈를 식별한다. 레지스터 (806) 는 완료 값 어드레스를 포함하는 한편, 레지스터 (807) 및 레지스터 (808) 는 세컨더리 프로세싱 리소스에 통신될 수 있는 각각의 인수들을 정의한다. 대안적 레지스터들은 인수 전송들을 최적화하는데 이용될 수 있고 다양한 인코딩 기법들 및/또는 프로세싱 룰들은 디스패치 제어기 (212) 로의 호출들을 차단하도록 구현될 수 있는 것이 가능하다.
도 9 는 SoC (120) 에서 동기적 태스크 디스패치를 위한 방법 (900) 의 일 예의 실시형태의 플로우 다이어그램이다. 예시한 바와 같이, 방법 (900) 은 휴대용 컴퓨팅 디바이스 (100) 가 메모리 공간 (240) 을 공유하는 프라이머리 및 세컨더리 프로세싱 리소스들을 가지고 배열되는 블록 902 로 시작한다. 블록 904 에서, 프라이머리 프로세싱 리소스 (202) 또는 PCD (100) 상에 배열된 다른 검출기들 또는 센서들은 오프로드 조건을 검출한다. 블록 906 에서 나타낸 바와 같이, 오프로드 조건에 응답하여, 프라이머리 프로세싱 리소스 (202) 에서 실행중인 스레드가 중단된다. 블록 908 에서 나타낸 바와 같이, 프라이머리 프로세싱 리소스 (202) 는 오프로드 조건 및/또는 실행 스레드의 중단의 확인에 응답하여 요청을 생성한다. 블록 910 에 추가 도시한 바와 같이, 그 요청은 디스패치 제어기 (212) 에 통신된다. 디스패치 제어기에 그 요청을 통신하는 단계는 스레드와 연관된 정보가 현재 저장되어 있는 프라이머리 프로세싱 리소스 (202) 및 세컨더리 프로세싱 리소스 (204) 에 액세스가능한 공유된 메모리 공간 (즉, SVM (240)) 에서의 적어도 하나의 로케이션을 통신하는 것을 포함한다. 설명한 바와 같이, 그 요청은 이전에 중단된 스레드의 계속적인 실행에 적합한 세컨더리 프로세싱 리소스를 식별한다. 또한 설명한 바와 같이, 공유된 메모리 공간은, 중단된 스레드와 연관된 콘텍스처 정보가 세컨더리 또는 대안적 프로세싱 리소스에 의해 쉽게 이용될 수 있고 완료 시 그 리소스에 의한 추가 프로세싱이 요구되거나 요망될 때 프라이머리 프로세싱 리소스로 단순히 되 전송될 수 있도록 레버리징된다.
오프로드된 스레드 또는 태스크가 여전히 프로세싱중일 때, 판정 블록 912 를 나가는 "아니오" 로 라벨링된 화살표 및 블록 914 에서 나타낸 바와 같이, 대기 커맨드의 완료 시에 질의 (query) 가 반복된다. 그렇지 않다면, 블록 916 에서 나타낸 바와 같이, 디스패치 제어기 (212) 는 태스크 또는 스레드가 완료되었다는 것을 프라이머리 프로세싱 리소스에 명령하는데 이용된다. 그 후, 블록 918 에서 나타낸 바와 같이, 프라이머리 프로세싱 리소스 (202) 는 스레드를 재개하고 블록 904 내지 블록 918 의 기능들이 원하는 대로 반복된다.
예시 및 설명한 바와 같이, 프라이머리 프로세싱 리소스 또는 호스트 (202) 는 스레드를 프로세싱하기 위한 메커니즘을 제공한다. 스레드는 O/S 또는 제어기에 의해 독립적으로 관리될 수 있는 가장 작은 명령들의 시퀀스이다. 추가 설명한 바와 같이, 하나 이상의 디스패치 제어기들 (212) 또는 하나 이상의 그래픽스 프로세싱 특정 제어기들 (334) 은 프라이머리 프로세싱 리소스 (202) 로부터 이슈 또는 통신된 요청에서 명령한 바와 같이 식별된 스레드를 동기적으로 오프로드 또는 디스패치하기 위한 메커니즘을 제공한다. 또한 예시 및 설명한 바와 같이, DSP, GPU, FPGA, ALU 등과 같은 세컨더리 또는 대안적 프로세싱 리소스는 디스패치 패킷에 의해 지시한 바와 같은 오프로드된 스레드를 실행하기 위한 메커니즘을 제공한다.
설명한 바와 같이, 하나 이상의 비일시적 프로세서 또는 컴퓨터 판독가능 매체 또는 매체들은 실행 시, 태스크 오프로드 조건을 검출하는 것, 프라이머리 프로세싱 리소스에서 실행중인 스레드의 실행을 중단하는 것, 태스크 오프로드 조건에 응답하여 요청을 생성하는 것, 디스패치 제어기에 요청을 통신하는 것으로서, 그 요청은 스레드의 실행을 위해 프라이머리 프로세싱 리소스와는 상이한 세컨더리 프로세싱 리소스를 식별하는, 상기 디스패치 제어기에 요청을 통신하는 것의 원하는 기능들을 수행할 것을 프로세서에 지시하는 프로세서 명령들을 저장하고 있을 수도 있다. 디스패치 제어기에 요청을 통신하는 것의 기능은 공유된 메모리 공간에 현재 저장된 스레드 관련 아이템들을 어디에 로케이팅할지를 세컨더리 프로세싱 리소스에 지시하는 애플리케이션 바이너리 인터페이스를 정의하는 것을 포함할 수도 있다.
본 명세서에서 설명된 프로세스들 또는 프로세스 플로우들에서의 소정의 단계들은 본 발명이 설명한 바와 같이 기능하도록 하기 위해 당연히 다른 단계들보다 선행한다. 그러나, 본 시스템 및 방법들은 이러한 순서 또는 시퀀스가 상기 설명된 시스템들 및 방법들의 기능성을 바꾸지 않는다면 설명된 단계들의 순서에 제한되지는 않는다. 즉, 일부 단계들은 다른 단계들 전에, 후에, 또는 그와 병렬로 (실질적으로 동시에) 수행될 수도 있다는 것이 인정된다. 일부 인스턴스들에서, 소정의 단계들은 상기 설명된 시스템들 및 방법들로부터 벗어남 없이 생략될 수도 있고 또는 수행되지 않을 수도 있다. 게다가, "그 후", "그리고 나서", "다음에", "후속하여" 등과 같은 단어들은 단계들의 순서를 제한하도록 의도되지 않는다. 이들 단어들은 단순히, 예시적인 방법의 설명을 통하여 독자를 안내하기 위해 사용된다.
부가적으로, 프로그래밍에서의 당업자는 본 명세서에서의 플로우 차트들 및 연관된 예들에 기초하여 어려움 없이, 개시된 엘리먼트들 및 기능들을 구현하기 위해 컴퓨터 코드를 기입하거나 또는 적절한 하드웨어 및/또는 회로들을 식별하는 것이 가능하다. 따라서, 프로그램 코드 명령들 또는 상세화된 하드웨어 디바이스들의 특정한 세트의 개시는 시스템들 및 방법들을 제조 및 이용하는 방법의 충분한 이해에 필수적인 것으로 간주되지 않는다. 청구된 프로세서-가능 프로세스들의 기능성은 상기 설명에서 그리고 도면들과 함께 더 상세히 설명되며, 그 도면들은 다양한 프로세스 플로우들을 예시할 수도 있다
상기 나타낸 바와 같은 하나 이상의 예시적인 양태들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 그 임의의 조합에서 구현될 수도 있다. 소프트웨어에서 구현되면, 그 기능들은 비일시적 프로세서 판독가능 매체와 같은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장될 수도 있다. 컴퓨터 판독가능 매체들은 데이터 저장 매체들을 포함한다.
저장 매체들은 컴퓨터 또는 프로세서에 의해 액세스될 수도 있는 임의의 이용가능한 매체들일 수도 있다. 제한이 아닌 일 예로, 이러한 컴퓨터 판독가능 매체들은 RAM, ROM, EEPROM, 플래시, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 운반 또는 저장하기 위해 이용될 수도 있고 컴퓨터에 의해 액세스될 수도 있는 임의의 다른 매체를 포함할 수도 있다. 디스크 (disk) 및 디스크 (disc) 는 본 명세서에서 사용한 바와 같이, 콤팩트 디스크 ("CD"), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 ("DVD"), 플로피 디스크 및 블루-레이 디스크를 포함하며, 여기서 디스크 (disk) 들은 보통 데이터를 자기적으로 재생하는 한편, 디스크 (disc) 들은 레이저들로 데이터를 광학적으로 재생한다. 상기의 조합들이 또한 비일시적 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
선택된 양태들이 상세히 예시 및 설명되었지만, 다양한 치환들 및 변경들이 다음의 청구항들에 의해 정의한 바와 같이, 본 시스템들 및 방법들로부터 벗어남 없이 본 명세서에서 이루어질 수도 있다는 것이 이해될 것이다.

Claims (30)

  1. 컴퓨팅 디바이스로서,
    프라이머리 프로세싱 리소스;
    디바이스 실행 환경에서 디스패치 제어기와 통신하도록 배열된 세컨더리 프로세싱 리소스로서, 상기 디스패치 제어기는 상기 프라이머리 프로세싱 리소스로부터의 함수 호출들을 동기적으로 관리하도록 배열된, 상기 세컨더리 프로세싱 리소스; 및
    상기 프라이머리 프로세싱 리소스 및 상기 세컨더리 프로세싱 리소스에 커플링되고 그리고 액세스가능한 공유된 메모리 공간으로서, 상기 프라이머리 프로세싱 리소스 및 상기 세컨더리 프로세싱 리소스는 신호/대기 인터페이스를 생성하고 그리고 상기 신호/대기 인터페이스에 응답하도록 배열되는, 상기 공유된 메모리 공간
    을 포함하는, 컴퓨팅 디바이스.
  2. 제 1 항에 있어서,
    상기 프라이머리 프로세싱 리소스는 태스크 오프로드 조건에 응답하여 상기 세컨더리 프로세싱 리소스를 정의하는 요청을 생성하는, 컴퓨팅 디바이스.
  3. 제 2 항에 있어서,
    상기 프라이머리 프로세싱 리소스는 상기 요청을 생성하기 전에 스레드의 실행을 중단하는, 컴퓨팅 디바이스.
  4. 제 3 항에 있어서,
    상기 프라이머리 프로세싱 리소스는 상기 디스패치 제어기로부터의 태스크 완료 신호를 대기하고, 상기 태스크 완료 신호의 수신 시에, 상기 프라이머리 프로세싱 리소스는 상기 스레드의 실행을 재개하는, 컴퓨팅 디바이스.
  5. 제 4 항에 있어서,
    상기 요청은 상기 세컨더리 프로세싱 리소스가 상기 스레드를 실행하는 것을 가능하게 하는 정보를 제공할 것을 상기 디스패치 제어기에 지시하는, 컴퓨팅 디바이스.
  6. 제 4 항에 있어서,
    상기 디스패치 제어기로부터의 상기 태스크 완료 신호는 오퍼레이팅 시스템에 통신되는, 컴퓨팅 디바이스.
  7. 제 1 항에 있어서,
    상기 프라이머리 프로세싱 리소스에 커플링되고 그리고 태스크 오프로드 조건에 응답하여 요청을 수신하고 그리고 상기 세컨더리 프로세싱 리소스를 정의하는 디스패치 커맨드를 비동기적으로 생성하도록 배열된 글로벌 조정자 (global coordinator) 를 더 포함하는, 컴퓨팅 디바이스.
  8. 제 7 항에 있어서,
    상기 글로벌 조정자는 상기 요청에 응답하는 상기 디스패치 커맨드를 개시하는 것이 가능한 마이크로-스케줄러를 실행하는, 컴퓨팅 디바이스.
  9. 제 1 항에 있어서,
    상기 프라이머리 프로세싱 리소스에 커플링되고 그리고 태스크 오프로드 조건에 응답하여 요청을 비동기적으로 수신하도록 배열된 그래픽스 프로세싱 유닛 특정 제어기를 더 포함하는, 컴퓨팅 디바이스.
  10. 제 9 항에 있어서,
    상기 그래픽스 프로세싱 유닛 특정 제어기는 상기 요청에 응답하는 디스패치 커맨드를 개시하는 것이 가능한 스케줄러를 실행하는, 컴퓨팅 디바이스.
  11. 제 1 항에 있어서,
    태스크 오프로드 조건에 응답하여 요청을 비동기적으로 수신하기 위해 실시간 오퍼레이팅 시스템을 가지고 배열된 디지털 신호 프로세서를 더 포함하는, 컴퓨팅 디바이스.
  12. 제 1 항에 있어서,
    상기 디스패치 제어기는 하드웨어 엘리먼트인, 컴퓨팅 디바이스.
  13. 제 1 항에 있어서,
    상기 디스패치 제어기는 소프트웨어에서 인에이블되는, 컴퓨팅 디바이스.
  14. 제 1 항에 있어서,
    상기 디스패치 제어기의 하나 이상의 기능들의 제 1 세트가 하드웨어 엘리먼트에서 인에이블되고 상기 디스패치 제어기의 잔여 기능들은 소프트웨어에서 인에이블되는, 컴퓨팅 디바이스.
  15. 휴대용 컴퓨팅 디바이스에서 동기적 태스크 디스패치를 위한 방법으로서,
    프라이머리 프로세싱 리소스, 세컨더리 프로세싱 리소스 및 상기 프라이머리 프로세싱 리소스 및 상기 세컨더리 프로세싱 리소스에 액세스가능한 공유된 메모리 공간을 가진 상기 휴대용 컴퓨팅 디바이스를 배열하는 단계;
    태스크 오프로드 조건을 검출하는 단계;
    상기 프라이머리 프로세싱 리소스에서 실행중인 스레드의 실행을 중단하는 단계;
    상기 태스크 오프로드 조건에 응답하여 상기 휴대용 컴퓨팅 디바이스로부터 요청을 생성하는 단계;
    디스패치 제어기에 상기 요청을 통신하는 단계로서, 상기 요청은 상기 스레드의 실행을 위해 상기 세컨더리 프로세싱 리소스를 식별하는, 상기 디스패치 제어기에 상기 요청을 통신하는 단계
    를 포함하는, 휴대용 컴퓨팅 디바이스에서 동기적 태스크 디스패치를 위한 방법.
  16. 제 15 항에 있어서,
    상기 프라이머리 프로세싱 리소스 및 상기 세컨더리 프로세싱 리소스는 신호/대기 인터페이스를 생성하고 그리고 상기 신호/대기 인터페이스에 응답하도록 배열되는, 휴대용 컴퓨팅 디바이스에서 동기적 태스크 디스패치를 위한 방법.
  17. 제 15 항에 있어서,
    상기 프라이머리 프로세싱 리소스는 상기 디스패치 제어기로부터의 태스크 완료 신호를 대기하고, 상기 태스크 완료 신호의 수신 시에, 상기 프라이머리 프로세싱 리소스는 상기 스레드의 실행을 재개하는, 휴대용 컴퓨팅 디바이스에서 동기적 태스크 디스패치를 위한 방법.
  18. 제 15 항에 있어서,
    상기 프라이머리 프로세싱 리소스는 상기 스레드가 완료되었다는 것을 오퍼레이팅 시스템에 시그널링하기 전에 상기 디스패치 제어기로부터의 태스크 완료 신호를 대기하는, 휴대용 컴퓨팅 디바이스에서 동기적 태스크 디스패치를 위한 방법.
  19. 제 15 항에 있어서,
    상기 디스패치 제어기에 상기 요청을 통신하는 단계는 상기 스레드와 연관된 정보가 현재 저장되어 있는 상기 프라이머리 프로세싱 리소스 및 상기 세컨더리 프로세싱 리소스에 액세스가능한 상기 공유된 메모리 공간에서의 적어도 하나의 로케이션을 통신하는 단계를 포함하는, 휴대용 컴퓨팅 디바이스에서 동기적 태스크 디스패치를 위한 방법.
  20. 제 15 항에 있어서,
    상기 디스패치 제어기에 상기 요청을 통신하는 단계는 상기 프라이머리 프로세싱 리소스에 커플링되고 그리고 태스크 오프로드 조건에 응답하여 상기 요청을 비동기적으로 수신하도록 배열된 그래픽스 프로세싱 유닛 특정 제어기를 이용하는 단계를 포함하는, 휴대용 컴퓨팅 디바이스에서 동기적 태스크 디스패치를 위한 방법.
  21. 제 20 항에 있어서,
    상기 그래픽스 프로세싱 유닛 특정 제어기는 상기 세컨더리 프로세싱 리소스로 보내진 디스패치 커맨드를 개시하는 것이 가능한 스케줄러를 실행하는, 휴대용 컴퓨팅 디바이스에서 동기적 태스크 디스패치를 위한 방법.
  22. 제 15 항에 있어서,
    상기 디스패치 제어기에 상기 요청을 통신하는 단계는 상기 태스크 오프로드 조건에 응답하여 상기 프라이머리 프로세싱 리소스로부터 상기 요청을 비동기적으로 수신하기 위해 실시간 오퍼레이팅 시스템을 가지고 배열된 디지털 신호 프로세서를 이용하는 단계를 포함하는, 휴대용 컴퓨팅 디바이스에서 동기적 태스크 디스패치를 위한 방법.
  23. 컴퓨팅 디바이스로서,
    스레드를 프로세싱하기 위한 제 1 수단으로서, 상기 제 1 수단은 태스크 오프로드 조건을 검출하기 위한 메커니즘을 포함하는, 상기 제 1 수단;
    상기 태스크 오프로드 조건에 응답하는 상기 스레드를 동기적으로 디스패치하기 위한 수단; 및
    상기 스레드를 동기적으로 디스패치하기 위한 수단에 응답하는 상기 스레드를 프로세싱하기 위한 제 2 수단
    을 포함하는, 컴퓨팅 디바이스.
  24. 제 23 항에 있어서,
    상기 스레드를 프로세싱하기 위한 제 1 수단은 상기 스레드를 동기적으로 디스패치하기 위한 수단에 대한 상기 스레드를 프로세싱하기 위한 제 2 수단을 식별하는, 컴퓨팅 디바이스.
  25. 제 24 항에 있어서,
    상기 스레드를 프로세싱하기 위한 제 1 수단은 상기 스레드를 동기적으로 디스패치하기 위한 수단에 요청을 통신하기 전에 상기 스레드의 실행을 중단하는, 컴퓨팅 디바이스.
  26. 제 24 항에 있어서,
    상기 스레드를 프로세싱하기 위한 제 1 수단은 상기 스레드의 실행을 재개하기 전에 상기 스레드를 동기적으로 디스패치하기 위한 수단으로부터의 태스크 완료 신호를 대기하는, 컴퓨팅 디바이스.
  27. 제 26 항에 있어서,
    상기 스레드를 프로세싱하기 위한 제 1 수단은 상기 태스크 완료 신호가 수신되었다는 표시를 오퍼레이팅 시스템으로 포워딩하는, 컴퓨팅 디바이스.
  28. 프로세서 명령들을 저장한 비일시적 프로세서 판독가능 매체로서,
    상기 프로세서 명령들은 실행될 때, 프로세서로 하여금, 기능들을 수행하게 하고, 상기 기능들은:
    태스크 오프로드 조건을 검출하는 것;
    프라이머리 프로세싱 리소스에서 실행중인 스레드의 실행을 중단하는 것;
    상기 태스크 오프로드 조건에 응답하여 요청을 생성하는 것;
    디스패치 제어기에 상기 요청을 통신하는 것으로서, 상기 요청은 상기 스레드의 실행을 위해 상기 프라이머리 프로세싱 리소스와는 상이한 세컨더리 프로세싱 리소스를 식별하는, 상기 디스패치 제어기에 상기 요청을 통신하는 것
    을 포함하는, 비일시적 프로세서 판독가능 매체.
  29. 제 28 항에 있어서,
    상기 디스패치 제어기에 상기 요청을 통신하는 것은 공유된 메모리 공간에서의 스레드 관련 아이템들을 어디에 로케이팅할지를 상기 세컨더리 프로세싱 리소스에 지시하는 애플리케이션 바이너리 인터페이스를 정의하는 것을 포함하는, 비일시적 프로세서 판독가능 매체.
  30. 제 29 항에 있어서,
    상기 애플리케이션 바이너리 인터페이스는 N 개의 레지스터들의 세트를 포함하고, N 은 정수인, 비일시적 프로세서 판독가능 매체.
KR1020167020555A 2014-01-21 2015-01-21 휴대용 디바이스에서 동기적 태스크 디스패치를 위한 시스템 및 방법 KR101798369B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/160,385 2014-01-21
US14/160,385 US9588804B2 (en) 2014-01-21 2014-01-21 System and method for synchronous task dispatch in a portable device
PCT/US2015/012283 WO2015112625A1 (en) 2014-01-21 2015-01-21 System and method for synchronous task dispatch in a portable device

Publications (2)

Publication Number Publication Date
KR20160110406A true KR20160110406A (ko) 2016-09-21
KR101798369B1 KR101798369B1 (ko) 2017-11-16

Family

ID=52469310

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167020555A KR101798369B1 (ko) 2014-01-21 2015-01-21 휴대용 디바이스에서 동기적 태스크 디스패치를 위한 시스템 및 방법

Country Status (6)

Country Link
US (1) US9588804B2 (ko)
EP (1) EP3097488A1 (ko)
JP (1) JP6240336B2 (ko)
KR (1) KR101798369B1 (ko)
CN (1) CN105917311B (ko)
WO (1) WO2015112625A1 (ko)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8977255B2 (en) 2007-04-03 2015-03-10 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US8676904B2 (en) 2008-10-02 2014-03-18 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US10417037B2 (en) 2012-05-15 2019-09-17 Apple Inc. Systems and methods for integrating third party services with a digital assistant
DE212014000045U1 (de) 2013-02-07 2015-09-24 Apple Inc. Sprach-Trigger für einen digitalen Assistenten
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
US9830676B2 (en) * 2015-07-28 2017-11-28 Intel Corporation Packet processing on graphics processing units using continuous threads
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
GB2545435B (en) * 2015-12-15 2019-10-30 Advanced Risc Mach Ltd Data processing systems
US10838721B1 (en) * 2016-03-31 2020-11-17 EMC IP Holding Company LLC Adaptive thread processing of IO requests
US10055255B2 (en) * 2016-04-14 2018-08-21 International Business Machines Corporation Performance optimization of hardware accelerators
US10368283B2 (en) 2016-04-29 2019-07-30 International Business Machines Corporation Convergence of cloud and mobile environments
DK201670540A1 (en) 2016-06-11 2018-01-08 Apple Inc Application integration with a digital assistant
US10255105B2 (en) * 2017-04-11 2019-04-09 Imagination Technologies Limited Parallel computing architecture for use with a non-greedy scheduling algorithm
DK180048B1 (en) 2017-05-11 2020-02-04 Apple Inc. MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION
AU2018256560A1 (en) * 2017-05-12 2018-11-29 Apple Inc. Synchronization and task delegation of a digital assistant
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
DK179745B1 (en) 2017-05-12 2019-05-01 Apple Inc. SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT
DK201770427A1 (en) 2017-05-12 2018-12-20 Apple Inc. LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT
CN111052084B (zh) * 2017-08-30 2023-10-17 富士胶片株式会社 图像处理装置、图像处理方法以及图像处理程序
GB2566514B (en) * 2017-09-15 2020-01-08 Imagination Tech Ltd Resource allocation
US11145294B2 (en) 2018-05-07 2021-10-12 Apple Inc. Intelligent automated assistant for delivering content from user experiences
US10928918B2 (en) 2018-05-07 2021-02-23 Apple Inc. Raise to speak
DK180639B1 (en) 2018-06-01 2021-11-04 Apple Inc DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT
US11157437B2 (en) * 2018-09-26 2021-10-26 Micron Technology, Inc. Memory pooling between selected memory resources via a base station
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
CN111026516B (zh) * 2018-10-10 2022-12-02 上海寒武纪信息科技有限公司 异常处理方法、任务分派装置、任务处理系统及存储介质
CN111026520B (zh) * 2018-10-10 2022-12-02 上海寒武纪信息科技有限公司 任务处理方法、处理器的控制装置及处理器
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
DK201970509A1 (en) 2019-05-06 2021-01-15 Apple Inc Spoken notifications
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
US11140099B2 (en) 2019-05-21 2021-10-05 Apple Inc. Providing message response suggestions
US11227599B2 (en) 2019-06-01 2022-01-18 Apple Inc. Methods and user interfaces for voice-based control of electronic devices
US11438452B1 (en) 2019-08-09 2022-09-06 Apple Inc. Propagating context information in a privacy preserving manner
US11875168B2 (en) * 2020-03-19 2024-01-16 Oracle International Corporation Optimizing execution of foreign method handles on a virtual machine
US11061543B1 (en) 2020-05-11 2021-07-13 Apple Inc. Providing relevant data items based on context
US11490204B2 (en) 2020-07-20 2022-11-01 Apple Inc. Multi-device audio adjustment coordination
US11438683B2 (en) 2020-07-21 2022-09-06 Apple Inc. User identification using headphones
CN113190349B (zh) * 2021-04-29 2023-09-01 汕头大学 主机任务异步执行的方法、系统及计算机存储介质
CN113179327B (zh) * 2021-05-14 2023-06-02 中兴通讯股份有限公司 基于大容量内存的高并发协议栈卸载方法、设备、介质

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030110203A1 (en) * 2000-02-17 2003-06-12 Brenner Larry Bert Apparatus and method for dispatching fixed priority threads using a global run queue in a multiple run queue system
US20020178313A1 (en) * 2001-03-30 2002-11-28 Gary Scott Paul Using software interrupts to manage communication between data processors
US6868437B1 (en) 2001-05-18 2005-03-15 Agilent Technologies, Inc. System and method for interprocess communication of remote procedure call messages utilizing shared memory
US7650601B2 (en) * 2003-12-04 2010-01-19 International Business Machines Corporation Operating system kernel-assisted, self-balanced, access-protected library framework in a run-to-completion multi-processor environment
US20070033592A1 (en) * 2005-08-04 2007-02-08 International Business Machines Corporation Method, apparatus, and computer program product for adaptive process dispatch in a computer system having a plurality of processors
US9015501B2 (en) * 2006-07-13 2015-04-21 International Business Machines Corporation Structure for asymmetrical performance multi-processors
US8127113B1 (en) * 2006-12-01 2012-02-28 Synopsys, Inc. Generating hardware accelerators and processor offloads
US20090089792A1 (en) * 2007-09-27 2009-04-02 Sun Microsystems, Inc. Method and system for managing thermal asymmetries in a multi-core processor
US7930574B2 (en) * 2007-12-31 2011-04-19 Intel Corporation Thread migration to improve power efficiency in a parallel processing environment
KR101400286B1 (ko) * 2008-01-22 2014-05-26 삼성전자주식회사 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치
US8390631B2 (en) * 2008-06-11 2013-03-05 Microsoft Corporation Synchronizing queued data access between multiple GPU rendering contexts
US9354944B2 (en) * 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
JP5191980B2 (ja) * 2009-11-19 2013-05-08 公益財団法人鉄道総合技術研究所 鉄道車両運転衝撃事故時の乗客被害低減用袖仕切り装置
US20120110303A1 (en) 2010-10-28 2012-05-03 International Business Machines Corporation Method for Process Synchronization of Embedded Applications in Multi-Core Systems
US20120198458A1 (en) * 2010-12-16 2012-08-02 Advanced Micro Devices, Inc. Methods and Systems for Synchronous Operation of a Processing Device
US8566831B2 (en) * 2011-01-26 2013-10-22 International Business Machines Corporation Execution of work units in a heterogeneous computing environment
US8533720B2 (en) * 2011-02-25 2013-09-10 International Business Machines Corporation Offloading work from one type to another type of processor based on the count of each type of service call instructions in the work unit
US20120331278A1 (en) 2011-06-23 2012-12-27 Mauricio Breternitz Branch removal by data shuffling
US9235769B2 (en) 2012-03-15 2016-01-12 Herta Security, S.L. Parallel object detection method for heterogeneous multithreaded microarchitectures
US10255104B2 (en) * 2012-03-29 2019-04-09 Advanced Micro Devices, Inc. System call queue between visible and invisible computing devices
US9116809B2 (en) 2012-03-29 2015-08-25 Ati Technologies Ulc Memory heaps in a memory model for a unified computing system
US8984511B2 (en) * 2012-03-29 2015-03-17 Advanced Micro Devices, Inc. Visibility ordering in a memory model for a unified computing system
US9286116B2 (en) * 2012-07-06 2016-03-15 Microsoft Technology Licensing, Llc Multiple core real-time task execution
US9104464B2 (en) * 2012-11-06 2015-08-11 International Business Machines Corporation Main processor support of tasks performed in memory
US9588808B2 (en) * 2013-05-31 2017-03-07 Nxp Usa, Inc. Multi-core system performing packet processing with context switching

Also Published As

Publication number Publication date
KR101798369B1 (ko) 2017-11-16
US9588804B2 (en) 2017-03-07
EP3097488A1 (en) 2016-11-30
CN105917311A (zh) 2016-08-31
JP6240336B2 (ja) 2017-11-29
CN105917311B (zh) 2019-03-12
US20150205632A1 (en) 2015-07-23
WO2015112625A1 (en) 2015-07-30
JP2017506777A (ja) 2017-03-09

Similar Documents

Publication Publication Date Title
KR101798369B1 (ko) 휴대용 디바이스에서 동기적 태스크 디스패치를 위한 시스템 및 방법
US10437631B2 (en) Operating system hot-switching method and apparatus and mobile terminal
US9531775B2 (en) Mobile application migration to cloud computing platform
US9697124B2 (en) Systems and methods for providing dynamic cache extension in a multi-cluster heterogeneous processor architecture
US8904399B2 (en) System and method of executing threads at a processor
US8819345B2 (en) Method, apparatus, and computer program product for inter-core communication in multi-core processors
US9606818B2 (en) Systems and methods of executing multiple hypervisors using multiple sets of processors
US20150261686A1 (en) Systems and methods for supporting demand paging for subsystems in a portable computing environment with restricted memory resources
US8725800B1 (en) Mobile photo application migration to cloud computing platform
WO2024088268A1 (zh) Rdma事件管理方法、设备及存储介质
JP4609113B2 (ja) プロセッサ
WO2016182683A1 (en) System and method for dynamic granularity control of parallelized work in a portable computing device (pcd)
US20140325183A1 (en) Integrated circuit device, asymmetric multi-core processing module, electronic device and method of managing execution of computer program code therefor
CN108139932B (zh) 关闭关键执行路径的任务信令
JP5017784B2 (ja) プロセッサ及びこのプロセッサ適用される割込み処理制御方法
KR102447854B1 (ko) 전자 장치 및 이의 부팅 방법
CN118092628A (zh) 控制方法、控制装置、芯片及计算机可读存储介质

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant