[go: up one dir, main page]

KR101635295B1 - Batching of resource requests into a transaction and forking of this transaction in a portable computing device - Google Patents

Batching of resource requests into a transaction and forking of this transaction in a portable computing device Download PDF

Info

Publication number
KR101635295B1
KR101635295B1 KR1020147018682A KR20147018682A KR101635295B1 KR 101635295 B1 KR101635295 B1 KR 101635295B1 KR 1020147018682 A KR1020147018682 A KR 1020147018682A KR 20147018682 A KR20147018682 A KR 20147018682A KR 101635295 B1 KR101635295 B1 KR 101635295B1
Authority
KR
South Korea
Prior art keywords
resource
request
requests
transaction
resources
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1020147018682A
Other languages
Korean (ko)
Other versions
KR20140098851A (en
Inventor
노먼 에스 가르가쉬
비노드 비자야라잔
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/359,770 external-priority patent/US9152523B2/en
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20140098851A publication Critical patent/KR20140098851A/en
Application granted granted Critical
Publication of KR101635295B1 publication Critical patent/KR101635295B1/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/466Transaction processing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)

Abstract

노드-기반 자원 구조를 갖는 휴대용 컴퓨팅 디바이스에서, 자원 요청들은 배칭되거나 그렇지 않으면 트랜잭션화되어 프로세싱간 엔티티 메시징 또는 다른 메시징을 최소화하거나 다른 혜택들을 제공하는 것에 도움이 된다. 아키텍처를 규정하는 자원 그래프에서, 그래프의 각각의 노드 또는 자원은 프로세서 또는 다른 프로세싱 엔티티에 의해 제어되는 하나 이상의 자원들의 기능성의 캡슐화를 나타내며, 각각의 에지는 클라이언트 요청을 나타내고, 그래프의 인접한 노드들은 자원 의존성들을 나타낸다. 자원들 중 2 개 이상의 자원들에 대해 제공되는 자원 요청들의 단일 트랜잭션이 포킹되어, 단일 트랜잭션을 발행하는 클라이언트와 단일 트랜잭션의 요청들을 처리하는 자원들 사이에서 병렬 프로세싱이 달성된다.In a handheld computing device having a node-based resource structure, resource requests are batched or otherwise transactional to help minimize entity messaging or other messaging between processes or to provide other benefits. In a resource graph that defines an architecture, each node or resource in the graph represents an encapsulation of the functionality of one or more resources controlled by a processor or other processing entity, each edge representing a client request, Dependencies. A single transaction of resource requests provided for two or more of the resources is forked so that parallel processing between the client issuing a single transaction and the resources processing requests of a single transaction is achieved.

Description

휴대용 컴퓨팅 디바이스에서의 자원 요청들의 트랜잭션으로의 배칭 및 이러한 트랜잭션의 포킹{BATCHING OF RESOURCE REQUESTS INTO A TRANSACTION AND FORKING OF THIS TRANSACTION IN A PORTABLE COMPUTING DEVICE}BATCHING OF RESOURCE REQUESTS INTO A TRANSACTION IN A PORTABLE COMPUTING DEVICE BACKGROUND OF THE INVENTION 1. Field of the Invention < RTI ID = 0.0 > [0001] <

삭제delete

휴대용 컴퓨팅 디바이스 (portable computing device; "PCD") 들은 점점 더 인기가 많아지고 있다. 이러한 디바이스들은 셀룰러 전화기들, 휴대용/개인용 디지털 어시스턴트 ("PDA") 들, 휴대용 게임 콘솔들, 휴대용 네비게이션 유닛들, 팜탑 컴퓨터들, 및 다른 휴대용 전자 디바이스들을 포함할 수도 있다. 이러한 디바이스들의 각각은 주요 기능을 가질 수도 있다. 예를 들어, 셀룰러 전화기는 일반적으로 전화 호출들을 수신하고 송신하는 주요 기능을 갖는다.Portable computing devices ("PCDs") are becoming more and more popular. Such devices may include cellular telephones, portable / personal digital assistants ("PDAs"), portable game consoles, portable navigation units, palmtop computers, and other portable electronic devices. Each of these devices may have a primary function. For example, a cellular telephone typically has a primary function of receiving and transmitting telephone calls.

이러한 디바이스들의 주요 기능에 더해, 많은 디바이스들은 주변 기능들을 포함한다. 예를 들어, 셀룰러 전화기는 상술된 바와 같은 셀룰러 전화를 거는 주요 기능, 및 스틸 카메라, 비디오 카메라, 글로벌 포지셔닝 시스템 ("GPS") 네비게이션, 웹 브라우징, 이메일들 송수신, 텍스트 메시지들 송수신, 및 푸쉬-투-토크 능력들 등의 주변 기능들을 포함할 수도 있다. PCD 들의 기능성이 증가함에 따라, 이러한 기능성을 지원하기 위해 요구되는 컴퓨팅 또는 프로세싱 파워도 증가한다. 프로세싱 파워는 PCD 에서의 프로세서들의 수를 증가시킴으로써 증가될 수도 있다. 컴퓨팅 파워 및 프로세서들의 수가 증가함에 따라, 프로세서들을 효과적으로 관리하는 것에 대한 보다 큰 필요성이 존재한다.In addition to the main functions of these devices, many devices include peripheral functions. For example, a cellular telephone may have a primary function of placing a cellular telephone, such as a cellular telephone, as described above, and a mobile telephone, such as a still camera, video camera, global positioning system ("GPS") navigation, web browsing, To-talk capabilities, and the like. As the functionality of PCDs increases, the computing or processing power required to support this functionality also increases. The processing power may be increased by increasing the number of processors in the PCD. As computing power and the number of processors increase, there is a greater need for effective management of processors.

상술된 것들과 같은 기능들은 자원들로 지칭될 수도 있는 다양한 대응하는 하드웨어 요소 및 소프트웨어 요소로 구체화될 수도 있다. 프로세서는 애플리케이션 프로그램과 같은 소프트웨어의 제어 하에 다양한 시간들에서 다양한 자원들을 요청할 수도 있다. 다중-프로세서 PCD 에서, 제 1 프로세서는 제 2 프로세서에 의해 제어되는 자원들과는 상이한 자원들을 제어할 수도 있다. 그러나, 제 1 프로세서가 제 2 프로세서에 의해 제어되는 자원들을 요청하는 것이 가능한 것이 바람직할 수도 있다.Functions such as those described above may be embodied in various corresponding hardware elements and software elements that may be referred to as resources. A processor may request various resources at various times under the control of software, such as an application program. In a multi-processor PCD, the first processor may control resources that are different than the resources controlled by the second processor. However, it may be desirable for the first processor to be able to request resources controlled by the second processor.

복수의 자원들을 갖는 휴대용 컴퓨팅 디바이스에서 자원 요청들을 배칭 (batching) 하거나 그렇지 않으면 트랜잭션화하는 방법 및 시스템은 프로세서간 메시징 또는 다른 메시징을 최소화는 것에 도움이 되거나 다른 혜택들을 제공할 수도 있다. 노드-기반 소프트웨어 아키텍처를 갖는 휴대용 컴퓨팅 디바이스에서, 자원은 노드에 포함될 수도 있다. 예시적인 방법에서, 복수의 노드들이 인스턴스화된다. 노드들의 복수의 자원들은 방향성 비순환 그래프에 의해 규정될 수도 있다. 그래프의 각각의 노드 또는 자원은 프로세서 또는 다른 프로세싱 엔티티에 의해 제어되는 하나 이상의 자원들의 기능성의 캡슐화를 나타낸다. 그래프의 각각의 에지는 클라이언트 요청을 나타낸다. 그래프의 인접한 노드들은 자원 의존성들을 나타낸다. 예시적인 방법에 따르면, 자원 요청들의 단일 트랜잭션 (transaction) 이 자원들 중 2 개 이상의 자원들에 대해 제공될 수도 있다.Methods and systems for batching or otherwise transactionizing resource requests in a portable computing device having multiple resources may help minimize inter-processor messaging or other messaging, or may provide other benefits. In a portable computing device having a node-based software architecture, resources may be included in the node. In an exemplary method, a plurality of nodes are instantiated. The plurality of resources of the nodes may be defined by a directional acyclic graph. Each node or resource in the graph represents the encapsulation of the functionality of one or more resources controlled by the processor or other processing entity. Each edge of the graph represents a client request. Adjacent nodes in the graph represent resource dependencies. According to an exemplary method, a single transaction of resource requests may be provided for two or more of the resources.

또한, 자원 요청들의 이러한 단일 트랜잭션은 포킹되어 병렬 프로세싱이 일어날 수도 있다. 예를 들어, 포킹된 트랜잭션으로, 자원 요청들의 단일 트랜잭션을 발행하는 클라이언트가 계속 가동하여, 트랜잭션이 완료되는 것을 기다릴 필요 없이, 즉, 트랜잭션 내에서 발행된 요청들이 자원들에 의해 서비스되는 것을 기다릴 필요 없이, 다른 요청들을 발행하거나 일부 다른 프로세싱을 수행할 수도 있다. 트랜잭션에서의 요청들을 수신하고 그에 대한 책임이 있는 자원들이 병렬로 이러한 요청들을 프로세싱하여 상술된 바와 같이 클라이언트가 계속 가동할 수도 있다. Also, this single transaction of resource requests may be forked, resulting in parallel processing. For example, in a forked transaction, a client issuing a single transaction of resource requests may continue to run, without having to wait for the transaction to complete, i.e., wait for requests issued in the transaction to be serviced by the resources , It may issue other requests or perform some other processing. Clients may continue to operate as described above by receiving requests in the transaction and the resources responsible for processing them in parallel.

도면들에서, 달리 표시되지 않는 한 유사한 도면 부호들은 다양한 도면들 전체에 걸쳐 유사한 부분들을 지칭한다. "102A" 또는 "102B" 와 같이 문자 명칭들을 갖는 도면 부호들에 있어서, 문자 명칭들은 동일한 도면에 있는 2 개의 유사한 부분들 또는 요소들을 구별지을 수도 있다. 도면 부호들에 대한 문자 명칭들은 도면 부호가 모든 도면들에서 동일한 도면 부호를 갖는 모든 부분들을 망라하고자 하는 경우 생략될 수도 있다.
도 1 은 휴대용 컴퓨팅 디바이스 ("PCD") 에서의 분산된 자원 관리에 대한 시스템의 예시적인 요소들을 도시하는 기능적 블록 다이어그램이다;
도 2 는 제 1 프로세서가 제 2 프로세서에 의해 제어되는 자원을 요청할 필요가 있는 사례의 실시예를 도시하는 기능적 블록 다이어그램이다;
도 3 은 PCD 의 자원들을 관리하는 노드 아키텍처의 제 1 양상의 다이어그램이다;
도 4 는 PCD 의 예시적인 자원들의 그룹에 대한 방향성 비순환 자원 그래프이다;
도 5 는 PCD 의 자원들을 관리하는 노드 아키텍처의 제 2 양상의 일반적인 다이어그램이다;
도 6 은 PCD 의 자원들을 관리하는 노드 아키텍처의 제 2 양상의 특정 다이어그램이다;
도 7 은 PCD 의 자원들을 관리하기 위한 노드 아키텍처를 생성하는 방법을 도시하는 플로차트이다;
도 8 은 PCD 의 자원들을 관리하기 위한 노드 아키텍처를 생성하는 방법을 도시하는 도 7 의 계속되는 플로차트이다;
도 9 는 PCD 에 대한 소프트웨어 아키텍처에서 노드 구조 데이터를 수신하는 도 7 및 도 8 의 하위-방법 또는 루틴을 도시하는 플로차트이다;
도 10 은 PCD 에 대한 소프트웨어 아키텍처에서 노드를 생성하는 도 7 및 도 8 의 하위-방법 또는 루틴을 도시하는 플로차트이다;
도 11 은 PCD 의 소프트웨어 아키텍처에서 클라이언트를 생성하는 도 10 의 하위-방법 또는 루틴을 도시하는 플로차트이다;
도 12 는 PCD 에 대한 소프트웨어 아키텍처에서 자원에 대한 클라이언트 요청을 생성하는 방법을 도시하는 플로차트이다;
도 13 은 프로세서들 자체의 자원 그래프의 자원들을 각각 제어하는, 2 개의 프로세서들 사이의 통신 경로를 도시한다;
도 14 는 PCD 의 자원들을 관리하기 위한 노드 아키텍처를 생성하는 방법을 도시하는 다른 플로차트로서, 여기서 자원들 중 일부 자원들은 분산된 자원들이다;
도 15 는 PCD 에 대한 소프트웨어 아키텍처에서 분산된 자원에 대한 클라이언트 요청을 생성하는 방법을 도시하는 다른 플로차트이다;
도 16 은 PCD 에 대한 소프트웨어 아키텍처에서 프록시가 아닌 분산된 자원에 대한 상태 질의를 처리하는 방법을 도시하는 플로차트이다;
도 17a 는 PCD 에 대한 소프트웨어 아키텍처에서 프록시가 아닌 분산된 자원에 대한 상태 질의를 처리하는 방법의 제 1 부분을 도시하는 플로차트이다;
도 17b 는 PCD 에 대한 소프트웨어 아키텍처에서 프록시가 아닌 분산된 자원에 대한 상태 질의를 처리하는 방법의 제 2 부분을 도시하는 플로차트이다.
도 18 은 복수의 자원 요청들을 배칭하거나 트랜잭션화하는 방법을 도시하는 플로차트이다.
도 19 는 그래프 토폴로지가 교착상태 조건을 막는, 예시적인 자원 그래프이다.
도 20 은 그래프 토폴로지가 교착상태 조건을 막지 않는, 다른 예시적인 자원 그래프이다.
도 21 은 교착상태가 일어나는 사례를 도시하는 예시적인 이벤트 타임라인이다.
도 22 는 회의적 잠금 방법이 교착상태를 방지하는 사례를 도시하는 다른 예시적인 이벤트 타임라인이다.
도 23 은 자원 요청들의 트랜잭션의 일부분일 수도 있는, 자원 요청을 처리하기 위한 자원에 대한 방법을 도시하는 플로차트이다.
도 24 는 휴대용 컴퓨팅 디바이스에서 배칭되고 포킹된 자원 요청들을 관리하는 방법 및 시스템의 실시형태의 동작을 도시하는 타임라인 다이어그램이다.
In the drawings, like reference numerals refer to like parts throughout the various views unless otherwise indicated. For reference numerals having character names such as "102A" or "102B ", character names may distinguish two similar portions or elements in the same figure. The character names for the reference numerals may be omitted when the reference numerals are intended to cover all the parts having the same reference numerals in all the drawings.
1 is a functional block diagram illustrating exemplary elements of a system for distributed resource management in a portable computing device ("PCD");
2 is a functional block diagram illustrating an embodiment of an example where a first processor needs to request resources controlled by a second processor;
3 is a diagram of a first aspect of a node architecture for managing resources of a PCD;
Figure 4 is a graphical directional acyclic resource graph for a group of exemplary resources of a PCD;
5 is a general diagram of a second aspect of a node architecture for managing resources of a PCD;
Figure 6 is a specific diagram of a second aspect of a node architecture for managing resources of a PCD;
7 is a flowchart illustrating a method for creating a node architecture for managing resources of a PCD;
Figure 8 is a subsequent flow chart of Figure 7 illustrating a method of creating a node architecture for managing resources of a PCD;
9 is a flowchart illustrating the sub-methods or routines of FIGS. 7 and 8 that receive node structure data in a software architecture for a PCD;
FIG. 10 is a flowchart showing the sub-methods or routines of FIGS. 7 and 8 for generating nodes in a software architecture for a PCD;
Figure 11 is a flowchart showing the sub-method or routine of Figure 10 that creates a client in the software architecture of the PCD;
12 is a flowchart illustrating a method for generating a client request for a resource in a software architecture for a PCD;
Figure 13 shows the communication path between two processors, each controlling the resources of the resource graphs of the processors themselves;
14 is another flowchart illustrating a method of creating a node architecture for managing resources of a PCD, wherein some of the resources are distributed resources;
15 is another flowchart illustrating a method for generating a client request for a distributed resource in a software architecture for a PCD;
16 is a flowchart illustrating a method for processing status queries for non-proxy distributed resources in a software architecture for the PCD;
17A is a flowchart illustrating a first portion of a method for processing a status query for a non-proxy distributed resource in a software architecture for a PCD;
17B is a flowchart illustrating a second portion of a method for processing status queries for non-proxy distributed resources in a software architecture for a PCD.
18 is a flowchart showing a method for batching or transactionizing a plurality of resource requests.
19 is an exemplary resource graph in which graph topology blocks deadlock conditions.
Figure 20 is another example resource graph in which the graph topology does not prevent deadlock conditions.
FIG. 21 is an exemplary event timeline showing an example where a deadlock occurs.
Figure 22 is another exemplary event timeline illustrating an example in which the skeptical locking method prevents deadlocks.
Figure 23 is a flow chart illustrating a method for resources to process a resource request, which may be part of a transaction of resource requests.
24 is a timeline diagram illustrating operations of an embodiment of a method and system for managing resource requests that are batched and faked in a portable computing device.

삭제delete

삭제delete

삭제delete

삭제delete

삭제delete

본 설명에서, 용어 "휴대용 컴퓨팅 디바이스" ("PCD") 는 배터리와 같은 제한된 용량의 전원 상에서 동작하는 임의의 디바이스를 설명하는데 이용된다. 배터리로 동작되는 PCD 들이 수십 년간 이용되어 왔지만, 3 세대 ("3G") 및 4 세대 ("4G") 무선 기술의 출현과 결합하여 재충전가능한 배터리들에서의 기술적 진보들이 다수의 능력들을 갖는 많은 PCD 들을 가능하게 했다. 그러므로, PCD 는, 다른 것들 중에서, 셀룰러 전화기, 위성 전화기, 페이저, 개인용 디지털 어시스턴트 ("PDA"), 스마트폰, 네비게이션 디바이스, 스마트북 또는 리더기, 미디어 재생기, 앞서 언급된 디바이스들의 조합, 및 무선 접속을 갖는 랩탑 컴퓨터일 수도 있다.In this description, the term "portable computing device" ("PCD") is used to describe any device that operates on a limited capacity power source, such as a battery. Although battery operated PCDs have been around for decades, technological advances in rechargeable batteries in combination with the advent of third generation ("3G") and fourth generation ("4G") wireless technologies have led many PCDs . Thus, PCDs include, among others, cellular phones, satellite telephones, pagers, personal digital assistants ("PDAs"), smart phones, navigation devices, smartbooks or readers, media players, Lt; / RTI >

도 1 은 휴대용 컴퓨팅 디바이스에서 분산된 자원 관리를 위한 방법들 및 시스템들을 구현하는 무선 전화기의 형태인 PCD (100) 의 예시적인, 비제한적인 양상의 기능적 블록 다이어그램이다. 도시된 바와 같이, PCD (100) 는 다중-코어, 중앙 프로세싱 유닛 ("CPU") (110A), 그래픽 프로세서 (110B), 및 아날로그 신호 프로세서 (126) 를 갖는 온-칩 시스템 (102) 을 포함한다. 이러한 프로세서들 (110A, 110B, 126) 은, 당업자에게 공지된 바와 같이, 하나 이상의 시스템 버스들, 또는 다른 상호접속 아키텍처로 함께 커플링될 수도 있다.1 is a functional block diagram of an exemplary, non-limiting, aspect of a PCD 100 in the form of a wireless telephone that implements methods and systems for distributed resource management in a portable computing device. As shown, the PCD 100 includes an on-chip system 102 having a multi-core, a central processing unit ("CPU") 110A, a graphics processor 110B, and an analog signal processor 126 do. These processors 110A, 110B, 126 may be coupled together into one or more system buses, or other interconnect architectures, as is known to those skilled in the art.

CPU (110A) 는, 당업자에 의해 이해되는 바와 같이, 제 0 번째 코어 (222), 제 1 코어 (224) 등에서 제 N 번째 코어 (226) 까지를 포함할 수도 있다. 대안적인 실시형태들에서, 당업자에 의해 이해되는 바와 같이, CPU (110A) 및 그래픽 프로세서 (110B) 대신에, 하나 이상의 디지털 신호 프로세서 ("DSP") 들이 또한 사용될 수도 있다. 또한, 대안적인 실시형태들에서, 2 개 이상의 다중-코어 프로세서들이 포함될 수도 있다.CPU 110A may include up to the Nth core 226 from the zeroth core 222, the first core 224, etc., as will be appreciated by those skilled in the art. In alternative embodiments, one or more digital signal processors ("DSPs") may also be used in place of CPU 110A and graphics processor 110B, as will be appreciated by those skilled in the art. Also, in alternative embodiments, two or more multi-core processors may be included.

도 1 에 도시된 바와 같이, 디스플레이 제어기 (128) 및 터치스크린 제어기 (130) 가 다중-코어 CPU (110A) 에 커플링된다. 온-칩 시스템 (102) 의 외부에 있는 터치스크린 디스플레이 (132) 는 디스플레이 제어기 (128) 및 터치스크린 제어기 (130) 에 커플링된다. 또한, PCD (100) 에 포함된 것은, 비디오 코더/디코더 ("코덱") (134), 예를 들어, "PAL" (phase-alternating line) 인코더, "SECAM" (sequential couleur avec memoire) 인코더, "NTSC" (national television system(s) committee) 인코더, 또는 다중-코어 중앙 프로세싱 유닛 ("CPU") (110A) 에 커플링된 임의의 다른 유형의 비디오 인코더 (134) 이다. 비디오 증폭기 (136) 는 비디오 인코더 (134) 및 터치스크린 디스플레이 (132) 에 커플링된다. 비디오 포트 (138) 가 비디오 증폭기 (136) 에 커플링된다. 도 2 에 도시된 바와 같이, 범용 직렬 버스 ("USB") 제어기 (140) 가 CPU (110A) 에 커플링된다. 또한, USB 포트 (142) 가 USB 제어기 (140) 에 커플링된다. 가입자 아이덴티티 모듈 (subscriber identity module; SIM) 카드 (146) 가 또한 CPU (110A) 에 커플링될 수도 있다. 또한, 도 1 에 도시된 바와 같이, 디지털 카메라 (148) 가 CPU (110A) 에 커플링될 수도 있다. 예시적인 양상에서, 디지털 카메라 (148) 는 "CCD" (charge-coupled device) 카메라 또는 "CMOS" (complementary metal-oxide semiconductor) 카메라이다.As shown in FIG. 1, a display controller 128 and a touch screen controller 130 are coupled to the multi-core CPU 110A. The touch screen display 132, which is external to the on-chip system 102, is coupled to the display controller 128 and the touch screen controller 130. Included also in PCD 100 is a video coder / decoder ("codec") 134, e.g., a phase-alternating line (PAL) encoder, a sequential couleur avec memoire (NTSC) encoder, or any other type of video encoder 134 coupled to a multi-core central processing unit ("CPU") 110A. The video amplifier 136 is coupled to the video encoder 134 and the touch screen display 132. A video port 138 is coupled to the video amplifier 136. As shown in FIG. 2, a universal serial bus ("USB") controller 140 is coupled to CPU 110A. Also, the USB port 142 is coupled to the USB controller 140. A subscriber identity module (SIM) card 146 may also be coupled to the CPU 110A. 1, a digital camera 148 may be coupled to the CPU 110A. In an exemplary aspect, the digital camera 148 is a " CCD "(charge-coupled device) camera or a" CMOS "(complementary metal-oxide semiconductor) camera.

도 1 에 또한 도시된 바와 같이, 스테레오 오디오 코덱 (150) 이 아날로그 신호 프로세서 (126) 에 커플링될 수도 있다. 또한, 오디오 증폭기 (152) 가 스테레오 오디오 코덱 (150) 에 커플링될 수도 있다. 예시적인 양상에서, 제 1 스테레오 스피커 (154) 및 제 2 스테레오 스피커 (156) 가 오디오 증폭기 (152) 에 커플링된다. 도 1 은 마이크로폰 증폭기 (158) 가 스테레오 오디오 코덱 (150) 에 또한 커플링될 수도 있음을 도시한다. 또한, 마이크로폰 (160) 이 마이크로폰 증폭기 (158) 에 커플링될 수도 있다. 특정 양상에서, 주파수 변조 (frequency modulation; "FM") 라디오 튜너 (162) 가 스테레오 오디오 코덱 (150) 에 커플링될 수도 있다. 또한, FM 안테나 (164) 가 FM 라디오 튜너 (162) 에 커플링된다. 또한, 스테레오 헤드폰들 (166) 이 스테레오 오디오 코덱 (150) 에 커플링될 수도 있다.As also shown in FIG. 1, a stereo audio codec 150 may be coupled to the analog signal processor 126. In addition, an audio amplifier 152 may be coupled to the stereo audio codec 150. In an exemplary aspect, a first stereo speaker 154 and a second stereo speaker 156 are coupled to the audio amplifier 152. 1 illustrates that a microphone amplifier 158 may also be coupled to the stereo audio codec 150. [ In addition, the microphone 160 may be coupled to the microphone amplifier 158. In a particular aspect, a frequency modulation ("FM") radio tuner 162 may be coupled to the stereo audio codec 150. In addition, an FM antenna 164 is coupled to the FM radio tuner 162. In addition, stereo headphones 166 may be coupled to the stereo audio codec 150.

도 1 은 무선 주파수 ("RF") 송수신기 (168) 가 아날로그 신호 프로세서 (126) 에 커플링될 수도 있음을 또한 표시한다. RF 스위치 (170) 가 RF 송수신기 (168) 및 RF 안테나 (172) 에 커플링될 수도 있다. 도 1 에 도시된 바와 같이, 키패드 (174) 가 아날로그 신호 프로세서 (126) 에 커플링될 수도 있다. 또한, 마이크로폰 (176) 을 구비한 모노 헤드셋이 아날로그 신호 프로세서 (126) 에 커플링될 수도 있다. 또한, 진동기 디바이스 (178) 가 아날로그 신호 프로세서 (126) 에 커플링될 수도 있다. 도 1 은 또한 온-칩 시스템 (102) 에 커플링되는 전원 (180), 예를 들어, 배터리를 도시한다. 특정 양상에서, 전원 (180) 은 AC 전원에 접속되는 교류 ("AC")-대-DC 변압기로부터 유도되는 직류 ("DC") 전원 또는 재충전가능한 배터리를 포함한다.1 also shows that a radio frequency ("RF") transceiver 168 may be coupled to the analog signal processor 126. [ RF switch 170 may be coupled to RF transceiver 168 and RF antenna 172. As shown in FIG. 1, a keypad 174 may be coupled to the analog signal processor 126. In addition, a mono headset with a microphone 176 may be coupled to the analog signal processor 126. Vibrator device 178 may also be coupled to analog signal processor 126. 1 also illustrates a power supply 180, e.g., a battery, coupled to the on-chip system 102. The on- In a particular aspect, the power source 180 includes a direct current ("DC") power source or rechargeable battery derived from an alternating current ("AC ") -to-DC transformer connected to an AC power source.

PCD (100) 의 상술된 요소들 중 일부 요소들은 하드웨어를 포함할 수도 있으며, 한편 다른 요소들은 소프트웨어를 포함할 수도 있고, 또 다른 요소들은 하드웨어와 소프트웨어의 조합을 포함할 수도 있다. 용어 "자원" 은, 하드웨어, 소프트웨어, 또는 그것들의 조합이든 간에, 프로세서에 의해 제어가능한 임의의 그러한 요소들을 지칭하기 위해 본원에서 이용된다. 자원은 일 양상에서 이러한 요소의 기능성의 캡슐화로서 규정될 수도 있다. 달리 표시될 수도 있는 경우를 제외하고, 용어 "프로세서" 는 프로세서, 예컨대, CPU (110), 그래픽 프로세서 (110B), 아날로그 신호 프로세서 (126), 또는 임의의 다른 프로세서, 제어기, 혹은 소프트웨어, 펌웨어, 혹은 유사한 제어 로직의 제어 하에 동작하는 유사한 요소를 지칭하기 위해 본원에서 이용된다. 2 개 이상의 "프로세싱 엔티티들" 에 대한 언급은 상이한 칩들 상의 프로세서들, 동일한 프로세서 칩의 상이한 프로세싱 코어들, 동일한 코어 상의 실행의 스레드들, 또는 그 사이에 데이터 전송 위반 혹은 비효율이 있을 수도 있는 임의의 다른 프로세싱 엔티티들을 포함한다.Some of the elements of the above-described elements of the PCD 100 may include hardware, while other elements may include software, and other elements may comprise a combination of hardware and software. The term "resource" is used herein to refer to any such element, whether hardware, software, or a combination thereof, that is controllable by a processor. Resources may be defined as encapsulation of the functionality of these elements in one aspect. The term "processor ", as used herein, refers to a processor, such as a CPU 110, a graphics processor 110B, an analog signal processor 126, or any other processor, controller, Or similar elements that operate under the control of similar control logic. References to two or more "processing entities" may include processors on different chips, different processing cores of the same processor chip, threads of execution on the same core, or arbitrary Other processing entities are included.

하기에서 보다 상세히 설명되는 바와 같이, 자원의 일 예는 프로세서 상에서 실행하는 소프트에어 요소이다. 프로세서 상의 실행의 스레드, 예컨대, 예를 들어, 실행 애플리케이션 프로그램과 관련되는 스레드는 자원에 대해 발행될 "요청" 을 야기함으로써 자원에 액세스할 수도 있다. 하기에서 설명되는 바와 같이, 자원 요청들은 "프레임워크" 라고 본 개시물에서 지칭되는 소프트웨어-기반 시스템을 통해 프로세싱된다. 용어 "클라이언트" 는 자원을 요청하는 기능을 가져오는 요소를 지칭하기 위해 본 개시물에서 널리 이용된다. 따라서, 용어들이 본원에서 이용되는 바와 같이, 스레드는 자원 요청들을 발행할 목적으로 클라이언트를 생성하거나 이용하게 할 수도 있다. 일부 사례들에서, 자원이 다른 자원에 대해 발행될 자원 요청을 야기할 수도 있도록, 자원은 클라이언트를 생성하거나 이용할 수도 있다는 것이 유의되어야 한다. 하기에서 보다 상세히 설명되는 바와 같이, 이러한 다른 자원은 요청하는 자원과 요청되는 자원 사이의 의존성 관계로 인해 "의존적인" 자원이라고 본원에서 지칭될 수도 있다. 자원들 및 클라이언트들은 메모리에 데이터 구조들에 의해 나타내어질 수도 있다.As will be described in more detail below, an example of a resource is a software element that runs on a processor. A thread of execution on the processor, for example, a thread associated with the executing application program, may access the resource by causing a "request" to be issued to the resource. As described below, resource requests are processed through a software-based system referred to in this disclosure as a "framework ". The term "client" is widely used in this disclosure to refer to an element that brings the ability to request a resource. Thus, as the terms are used herein, a thread may cause a client to be created or utilized for the purpose of issuing resource requests. It should be noted that, in some cases, a resource may create or use a client so that the resource may cause a resource request to be issued to another resource. As will be described in more detail below, these other resources may be referred to herein as "dependent" resources due to the dependency relationship between the requesting resource and the requested resource. Resources and clients may be represented by data structures in memory.

자원들이 다중-프로세서 PCD (100) 에서 특정 프로세서들에 의해 제어되기 때문에, PCD (100) 에서의 모든 프로세서가 PCD (100) 에서의 모든 자원에 대해 액세스를 갖는 것은 아니다. 도 2 는 PCD (100) 에서의 제 2 프로세서 (206) 에 의해 제어되는 자원 (204) 에 대해 PCD (100) 에서의 제 1 프로세서 (202) 가 자원 요청 (203) 을 발행하는 것이 바람직할 수도 있는 사례의 실시예를 도시한다. 제 1 프로세서 (202) 가 또한 복수의 자원들 (205) 을 제어할 수도 있음에 유의한다. 마찬가지로, 제 2 프로세서 (206) 가 복수의 추가적인 자원들 (207) 을 제어할 수도 있다.Not all processors in the PCD 100 have access to all resources in the PCD 100, since the resources are controlled by specific processors in the multi-processor PCD 100. Figure 2 illustrates how the first processor 202 in the PCD 100 may desire to issue a resource request 203 for a resource 204 controlled by the second processor 206 in the PCD 100 Fig. 6 shows an embodiment of the present invention. It is noted that the first processor 202 may also control a plurality of resources 205. Likewise, the second processor 206 may control a plurality of additional resources 207.

제 1 프로세서 (202) 가, 예를 들어, 비디오 재생기 애플리케이션 프로그램과 관련되는 스레드 (208) 를 실행하는 사례에서, 스레드 (208) 는 제 1 프로세서 (202) 의 성능을 향상시키는 제 1 프로세서 (202) 의 하나 이상의 동작 파라미터들의 조정을 요구할 수도 있다. (스레드 (208) 및 자원 (204) 이 명확함을 위해 그것들 각각의 프로세서들 (202 및 206) 에 있는 것으로 개념적으로 도시되나, 이러한 요소들은 잘 이해되는 컴퓨팅 원리들에 따라 프로세서의 메모리 공간에서 프로세서에 의해 실행되거나 그렇지 않으면 동작된다는 것을 당업자는 이해한다.) 이러한 동작 파라미터들은, 예를 들어, 클록 속도 및 버스 속도를 포함할 수도 있다. 예를 들어, 다양한 프로세서들은 동일한 버스 클록을 이용할 수도 있으나, 프로세서들 중 오직 하나의 프로세서만이 버스 클록의 직접적인 (하드웨어-레벨) 제어를 가질 수도 있다. 증가하는 클록 속도는, 예를 들어, 비디오 재생기 애플리케이션 프로그램에 의해 보다 나은 성능을 낳을 수도 있는데, 비디오의 재생이 일반적으로 일부 다른 태스크들보다 더 프로세싱 전력-집약적인 태스크이기 때문이다. 프로세싱 전력이 보통 "MIPS" (millions of instructions per second) 로 표현되므로, 스레드 (208) 는 소정의 수의 MIPS 에 대한 요구를 발행할 수도 있다. 자원 전력 관리자 (204) 는, 특정 수의 MIPS 에 대한 요청에 응답하여, 요청된 MIPS 레벨에서 동작하는 제 1 프로세서 (202) 를 증진하는 클록 속도, 버스 속도, 또는 다른 파라미터들을 나타낼 수도 있는 신호들 (210) 에서의 변화들을 야기하는 알고리즘을 포함할 수도 있다.In an example where the first processor 202 executes a thread 208 associated with a video player application program, for example, the thread 208 includes a first processor 202 that improves the performance of the first processor 202 ) Of one or more of the operating parameters. (Although the thread 208 and the resource 204 are conceptually shown as being in their respective processors 202 and 206 for clarity, these elements are shown in the processor's memory space in accordance with well-understood computing principles Those skilled in the art will appreciate that these operating parameters may be, for example, clock speed and bus speed. For example, the various processors may use the same bus clock, but only one of the processors may have direct (hardware-level) control of the bus clock. Increasing clock speeds may result in better performance, for example, by video player application programs, since playback of video is generally a more processing power-intensive task than some other tasks. Since the processing power is usually expressed in millions of instructions per second (MIPS), the thread 208 may issue a request for a predetermined number of MIPS. In response to a request for a particular number of MIPS, the resource power manager 204 may generate signals that may indicate clock speed, bus speed, or other parameters that enhance the first processor 202 operating at the requested MIPS level RTI ID = 0.0 > 210 < / RTI >

제 1 프로세서 (202) 가 그를 통해 제 2 프로세서 (206) 와 통신할 수도 있는 버스 또는 프로토콜에 특정한 애플리케이션 프로그램 인터페이스 (API) 를 통해 스레드가 자원 전력 관리자 (204) 에 액세스하는 것이 가능할 수도 있다. 그러나, 하기에서 설명된 프레임워크는 자원-특정 및 버스-특정 API 보다 자원 요청들을 처리하기 위해 보다 균등한 방식을 제공할 수도 있다. 하기에서 설명되는 바와 같이, 프레임워크를 통해, 요청이 자원 요청이 그로부터 발행되는 동일한 프로세서에 의해 제어되는 자원에 대한 것인지 상이한 프로세서에 의해 제어되는 자원에 대한 것인지 여부에 관계없이 균등한 방식으로 자원 요청들이 발행되고 서비스된다. 그로부터 자원 요청이 발행되는 동일한 프로세서에 의해 제어되는 자원은 "네이티브 (native)" 자원으로 지칭될 수도 있다. 그로부터 자원 요청이 발행되는 프로세서 이외의 프로세서에 의해 제어되는 자원은 "원격 자원" 또는 "분산된 자원" 이라고 본원에서 지칭될 수도 있다.It may be possible for a thread to access the resource power manager 204 via a bus or protocol specific application program interface (API) through which the first processor 202 may communicate with the second processor 206. However, the framework described below may provide a more uniform way to handle resource requests than resource-specific and bus-specific APIs. Through the framework, through the framework, as described below, whether the request is for a resource controlled by the same processor from which it is issued, or for a resource controlled by a different processor, Are published and serviced. A resource controlled by the same processor from which the resource request is issued may be referred to as a "native" resource. From which a resource controlled by a processor other than the processor from which the resource request is issued may be referred to herein as a "remote resource" or a "distributed resource ".

또한, 원격 자원에 대한 요청을 발행하는 것은 시간 지연 또는 대기시간 (latency) 의 형태로 프로세싱 오버헤드를 초래한다. 즉, 프로세서들 사이에 전송될 자원 요청과 관련되는 메시지 또는 메시지들에 대해 소정의 양의 시간이 요구된다. 일부 사례들에서, 단일 자원 요청이 다수의 프로세서간 메시지들을 초래할 수도 있다. 본 명세서에서 설명되는 자원 요청 배칭 특징은 일부 사례들에서 프로세서간 메시지들의 수를 최소화하는데 도움이 될 수도 있다.In addition, issuing a request for a remote resource results in processing overhead in the form of a time delay or latency. That is, a certain amount of time is required for a message or messages associated with a resource request to be sent between processors. In some cases, a single resource request may result in multiple inter-processor messages. The resource request batting feature described herein may help in minimizing the number of interprocessor messages in some instances.

도 3 은 PCD (100) 의 소프트웨어 또는 하드웨어 (또는 양자 모두) 를 나타내는 기능적 블록들을 도시하는 다이어그램이다. 라인 "A" 의 좌측의 블록들은 CPU (110A) 에 의해 제어되는 PCD (100) 의 자원들을 나타낸다. 이러한 자원들은: 일반적으로 제 1 하드웨어 요소 (하드웨어 요소 #1) 라고도 지칭되는, CPU (110A) 그 자체; 일반적으로 제 2 하드웨어 요소 (하드웨어 요소 #2) 라고도 지칭되는, CPU (110A) 에 대한 클록 (442); 일반적으로 제 3 하드웨어 요소 (하드웨어 요소 #3) 라고도 지칭되는 버스 중재기 또는 스케줄러 (422); 일반적으로 제 1 소프트웨어 요소 (소프트웨어 요소 #1) 라고도 지칭되는, 버스 프로그램 (A - 444A); 일반적으로 제 2 소프트웨어 요소 (소프트웨어 요소 #2) 라고도 지칭되는, 버스 프로그램 (B - 444B); 일반적으로 제 3 소프트웨어 요소 (소프트웨어 요소 #3) 라고도 지칭되는, 클록 프로그램 (AHB); 및 일반적으로 키가압 (448) 이라고 표시되는 소프트웨어 요소에 의해 모니터링되는 액션 또는 기능을 포함할 수도 있다. CPU (110A) 는 위에서-참조된 자원들을 제어하거나 그에 대한 액세스를 갖는데, 자원들이 CPU (110A) 의 메모리 공간 내에 있고, CPU (110A) 가 이러한 자원들에 액세스하는 것을 금지하는 보안 제한들과 같은 다른 제한들이 존재하지 않기 때문이다. 예를 들어, CPU (110A) 가 이러한 자원들의 하드웨어 레지스터들을 제어하거나 액세스하는 것이 가능할 수도 있다. PCD (100) 가 위에서 언급된 자원들 이외의 자원들을 제어하거나 자원들에 대한 액세스를 갖는 다른 CPU 들 (110) (예를 들어, 도 2 참조) 을 포함할 수도 있다는 것이 유의되어야 한다.FIG. 3 is a diagram illustrating functional blocks representing software and / or hardware (or both) of the PCD 100. FIG. The blocks on the left side of line "A " represent the resources of PCD 100 controlled by CPU 110A. These resources include: CPU 110A itself; generally referred to as a first hardware element (hardware element # 1); A clock 442 for CPU 110A, generally referred to as a second hardware element (hardware element # 2); A bus arbiter or scheduler 422, also commonly referred to as a third hardware element (hardware element # 3); A bus program (A-444A), also commonly referred to as a first software element (software element # 1); A bus program (B-444B), also commonly referred to as a second software element (software element # 2); A clock program (AHB), also commonly referred to as a third software element (software element # 3); And an action or function that is typically monitored by a software component labeled key press 448. [ CPU 110A controls or has access to the above-referenced resources, such as security constraints that prohibit resources from being accessed by CPU 110A and that resources are within the memory space of CPU 110A There are no other restrictions. For example, it may be possible for the CPU 110A to control or access the hardware registers of these resources. It should be noted that the PCD 100 may include other CPUs 110 (e.g., see FIG. 2) that control resources other than the above-mentioned resources or have access to resources.

컴퓨터 명령들의 라이브러리를 포함할 수도 있는 프레임워크 관리자 (440) 가 자원들의 기능성을 캡슐화하는 노드들을 관리한다. 즉, 노드들은 자원들에 간접적으로 액세스하도록 액세스될 수도 있다. 편의를 위해, 자원의 기능성을 캡슐화하는 노드는 자원을 포함시키거나, 포함하거나, 갖거나 하는 등으로 본원에서 언급되 수도 있다. 각각의 노드는 하나 이상의 자원들을 포함할 수도 있다. 노드들은 소프트웨어 코드, 펌웨어코드, 또는 유사한 매체로 규정되고, PCD (100) 의 동작 동안에, 예를 들어, 메모리 (112) 에 데이터 구조들로서 인스턴스화될 수도 있다. 노드들 (601) 은 시동, 전력-업, 초기화, 부트-업 등의 동안에, 또는 시퀀스 , 또는 PCD (100) 의 동작 동안의 임의의 다른 적합한 시간에 인스턴스화될 수도 있다. 자원의 인스턴스화 (instantiate), 자원에 대한 요청 발행, 또는 그렇지 않으면 자원과의 상호작용에 대한 본원에서의 언급은 그 자원을 포함하는 노드와의 상호작용을 의미하는 것으로 이해되어야 함이 유의되어야 한다. 본 개시물의 나머지에 있어서는 도 5 를 참조하여 하기에서 설명되는 바와 같이 포괄적이거나 비특정적인 노드가 도면 번호 (601) 로 지칭될 것이다.A framework manager 440, which may include a library of computer instructions, manages nodes that encapsulate the functionality of resources. That is, the nodes may be accessed to access resources indirectly. For convenience, a node encapsulating the functionality of a resource may be referred to herein as including, including, or having resources. Each node may include one or more resources. The nodes may be defined as software code, firmware code, or similar media, and may be instantiated as data structures in memory 112, for example, during operation of PCD 100. Nodes 601 may be instantiated during startup, power-up, initialization, boot-up, or the like, or at any other suitable time during the operation of PCD 100. It should be noted that references herein to instantiate a resource, issue a request to a resource, or otherwise interact with a resource should be understood to mean an interaction with a node containing the resource. For the remainder of this disclosure, a comprehensive or nonspecific node, as described below with reference to FIG. 5, will be referred to as a reference numeral 601.

노드들 (601) 은, 예를 들어, 일반적으로 제 1 하드웨어 요소 또는 중앙 프로세싱 유닛 (110) 과 대응하는 단일 자원을 갖는 제 1 노드 (602) 를 포함할 수도 있다. 본 개시물에서 설명된 소프트웨어 아키텍처로, 노드 (601) 의 각각의 자원에는 하나 이상의 영숫자 문자들을 포함하는 고유한 이름이 제공될 수도 있다. 도 3 에 도시된 예시적인 실시형태에서, 제 1 노드 (602) 의 자원에는 자원 이름 "/core/cpu" 가 할당되었다. 이러한 예시적인 자원 이름은 일반적으로 당업자에게 알려진 종래의 파일 명명 구조들에 대응한다. 그러나, 당업자에 의해 인지되는 바와 같이, 알파벳-숫자 문자들 및/또는 심볼들의 임의의 다른 조합을 포함하는 다른 유형의 자원 이름들이 당연히 본 개시물의 범주 내에 있다.Nodes 601 may include, for example, a first node 602 having a single resource, generally corresponding to a first hardware element or central processing unit 110. With the software architecture described in this disclosure, each resource of node 601 may be provided with a unique name that includes one or more alphanumeric characters. In the exemplary embodiment shown in FIG. 3, the resource of the first node 602 is assigned the resource name "/ core / cpu ". These exemplary resource names generally correspond to conventional file naming structures known to those skilled in the art. However, as will be appreciated by those skilled in the art, other types of resource names including alphanumeric characters and / or any other combination of symbols are naturally within the scope of this disclosure.

노드들 (601) 은, 예를 들어, 복수의 자원들을 갖는 제 2 노드 (622) 를 더 포함할 수도 있다. 이러한 예시적인 실시예에서, 제 2 노드 (622) 는 버스 중재기 또는 스케줄러 (422) 에 대응하는 단일 하드웨어 요소를 포함하는 제 1 자원을 갖는다. 제 2 노드 (622) 의 제 2 자원은 일반적으로 버스 프로그램 A (444A) 의 제 1 소프트웨어 요소에 대응하는 소프트웨어 요소를 포함한다. 제 2 노드 (622) 의 제 3 자원은 일반적으로 버스 프로그램 B (444B) 의 제 2 소프트웨어 요소에 대응하는 다른 소프트웨어 요소를 포함한다. 주어진 노드 (601) 에 대한 임의의 조합 및 임의의 개수의 자원들과 자원 유형들이 당연히 본 개시물의 범주 내에 있음을 당업자는 인지한다.The nodes 601 may further include, for example, a second node 622 having a plurality of resources. In this exemplary embodiment, the second node 622 has a first resource that includes a single hardware element that corresponds to a bus arbiter or scheduler 422. The second resource of the second node 622 typically includes a software element corresponding to the first software element of bus program A 444A. The third resource of the second node 622 typically includes another software element corresponding to the second software element of bus program B 444B. Those skilled in the art will recognize that any combination and any number of resources and resource types for a given node 601 are, of course, within the scope of this disclosure.

도 3 은 또한 일반적으로 2 개의 소프트웨어 요소들 (448, 450) 의 액션 또는 기능에 대응하는 제 1 클라이언트 (648) 를 도시한다. 도 3 에 도시된 예시적인 실시형태에서, 제 1 클라이언트 (648) 는 일반적으로 휴대용 컴퓨팅 디바이스 (100) 에 의해 지원되는 특정 애플리케이션 프로그램 모듈 (105) 내에서 일어날 수도 있는 가압 액션에 대응한다. 그러나, 키가압들 외의 소프트웨어 요소들의 다른 액션들 및/또는 기능들이 당연히 본 개시물의 범주 내에 있음을 당업자는 인지한다. 클라이언트 요청들 (648) 및 그것들의 각각의 생성에 관한 보다 세부사항들은 도 11 과 연계하여 하기에서 설명될 것이다.FIG. 3 also illustrates a first client 648 that generally corresponds to the action or function of two software components 448, 450. In the exemplary embodiment shown in FIG. 3, the first client 648 corresponds to a press action that may occur within a particular application program module 105, which is typically supported by the portable computing device 100. However, those skilled in the art will recognize that other actions and / or functions of software elements other than key presses are, of course, within the scope of the present disclosure. Further details regarding client requests 648 and their respective generation will be described below in conjunction with FIG.

도 3 은 또한 특정 아키텍처적 요소들 사이의 관계들을 도시한다. 예를 들어, 도 3 은 클라이언트 (648) 와 제 1 노드 (602) 사이의 관계를 도시한다. 구체적으로, 제 1 클라이언트 (648) 는 파선들로 도시되는 클라이언트 요청 (675A) 을 발생시킬 수도 있으며, 클라이언트 요청 (675A) 은 자원 "/core/cpu" 을 포함하는 제 1 노드 (602) 에 의해 관리되거나 처리된다. 통상적으로, 미리 결정되거나 설정된 개수의 유형의 클라이언트 요청들 (675) 이 있다. 클라이언트 요청들 (675) 은 도 11 과 연계하여 하기에서 보다 상세히 설명될 것이다.Figure 3 also shows the relationships between specific architectural elements. For example, FIG. 3 illustrates the relationship between a client 648 and a first node 602. Specifically, the first client 648 may generate a client request 675A, shown as dashed lines, and the client request 675A may be generated by the first node 602, which includes the resource "/ core / cpu & Managed or processed. Typically, there are client requests 675 of a predetermined or set number of types. Client requests 675 will be described in more detail below in conjunction with FIG.

도 3 에서 보여진 다른 관계들은 파선들 (680) 로 도시되는 의존성들을 포함한다. 의존성들은 다른 노드 (601) 의 각각의 자원들 사이의 관계들이다. 의존성 관계는 보통 제 1 자원 (A) 에 정보를 제공하거나 일부 거동을 구현할 수도 있는 제 2 자원 (B) 에 제 1 자원 (A) 이 의지하는 것을 표시한다. 이러한 정보는 제 2 소스 (B) 에 의해 수행되는 동작의 결과일 수도 있거나, 이는 단순히 제 1 자원 (A) 에 의해 필요로 하는 상태 정보 또는 이의 임의의 조합을 포함할 수도 있다. 제 1 자원 (A) 과 제 2 자원 (B) 은 동일한 노드 (601) 의 일부분일 수도 있거나, 이들은 상이한 노드들 (601) 의 일부분일 수도 있다. 클라이언트 요청들 (675) 은 상술된 가압 액션의 예에서와 같은 실행의 스레드들, 뿐만 아니라 다른 노드들 (601) 에서도 비롯될 수도 있다는 것이 유의되어야 한다. 의존적인 노드 (601) 로부터 정보 또는 거동을 획득하기 위해, 노드 (601) 는 그것의 의존적인 노드 (601) 에 클라이언트 요청 (675) 을 발행할 수도 있다. 따라서, 의존성들을 표시하는 파선들 (680) 은 또한 잠재적인 클라이언트 요청들 (675) 의 방향을 표시할 수도 있다.Other relationships shown in FIG. 3 include dependencies shown as dashed lines 680. The dependencies are the relationships between the respective resources of the other node 601. The dependency relationship usually indicates that the first resource A relies on a second resource B that may provide information to the first resource A or may implement some behavior. This information may be the result of an operation performed by the second source B, or it may simply include state information required by the first resource A or any combination thereof. The first resource A and the second resource B may be part of the same node 601 or they may be part of different nodes 601. It should be noted that the client requests 675 may also originate not only in the threads of execution, but also in other nodes 601 as in the example of the above-described pressure action. In order to obtain information or behavior from the dependent node 601, the node 601 may issue a client request 675 to its dependent node 601. Thus, dashed lines 680 indicating dependencies may also indicate the direction of potential client requests 675.

도 3 에서, 제 1 노드 (602) 는 제 1 노드 (602) 에서 비롯되어 622 에서의 제 2 노드로 확장하는 의존성 화살표 (680B) 로 표시되는 바와 같은 제 2 노드 (622) 에 의존한다. 도 3 은 또한 의존성 화살표 (680A) 로 도시되는 바와 같이 제 1 노드 (602) 가 제 3 노드 (642) 에도 의존함을 도시한다. 도 3 은 또한 의존성 화살표 (680C) 로 도시되는 바와 같이 제 2 노드 (622) 가 제 4 노드 (646) 에 의존함을 도시한다. 도 3 의 파선 화살표들로 도시되는 의존성들 (680) 은 사실상 단지 예일 뿐이고, 각각의 노드들 (601) 사이의 의존성들의 다른 조합들이 본 개시물의 범주 내에 있는 것으로 당업자는 인지한다.In Figure 3, the first node 602 relies on a second node 622, as indicated by the dependency arrow 680B, which originates at the first node 602 and extends to the second node at 622. [ 3 also shows that the first node 602 also depends on the third node 642 as shown by the dependency arrow 680A. FIG. 3 also shows that second node 622 depends on fourth node 646 as shown by dependency arrow 680C. Those skilled in the art will recognize that the dependencies 680 shown by the dashed arrows in FIG. 3 are merely exemplary, and that different combinations of dependencies between each of the nodes 601 are within the scope of this disclosure.

프레임워크 관리자 (440) 는, 이로 제한되지는 않으나, 도 3 에 도시된 클라이언트 요청들 (675) 및 의존성들 (680) 을 포함하는, 상술된 관계들을 관리하는 것을 책임진다. 의존성들과 같은 일부 그러한 관계들은 프레임워크 관리자 (440) 가 노드 인스턴스화 프로세스를 시작하기 위해 그러한 시동 시간에 액세스하는 자원들 및 자원들의 노드들 (601) 이 PCD (100) 에서 소프트웨어 코드로 규정된 방식에 의해 PCD 시동 시간 (즉, 전력-업, 초기화, 부트-업 등) 에 존재한다. 클라이언트 요청들 (675) 과 같은 다른 이러한 관계들은, 예컨대, 애플리케이션 프로그램이 자원을 불러오는 애플리케이션 프로그램 스레드의 실행 동안에, 노드들 (601) 이 인스턴스화된 후에 생긴다. 클라이언트 요청들 (675) 이 실행 애플리케이션 프로그램 스레드들 또는 노드들 (601) 이외의 유사한 요소들에서 비롯되거나 (예를 들어, 클라이언트 요청 (675A)) 노드 (601) 에서 비롯되는지 여부에 따라, 클라이언트 요청들 (675) 은 프레임워크 관리자 (440) 를 통해 지시된다. 프레임워크 관리자 (440) 는 노드들 (601) 사이에서 정보의 전송을 지시한다. 개념적으로, 프레임워크 관리자 (440) 는 그를 통해 다수의 스레드들이 근본적으로 동시에 노드들 (601) 과 통신할 수도 있는 매트릭스의 역할을 한다. 상이한 스레드들이 상이한 데이터를 수반할 수도 있으나, 동일한 프레임워크 관리자 소프트웨어 코드가 다수의 스레드들에 서비스할 수도 있다.Framework manager 440 is responsible for managing the relationships described above, including, but not limited to, client requests 675 and dependencies 680 shown in FIG. Some such relationships, such as dependencies, may be generated by the framework manager 440 in such a way that the nodes 601 of the resources and resources to which it has access to such start-up time to start the node instantiation process, (I.e., power-up, initialization, boot-up, etc.) by the PCD start time. Other such relationships, such as client requests 675, occur after the nodes 601 are instantiated, for example, during execution of an application program thread in which the application program loads resources. Depending on whether the client requests 675 originated from similar elements other than the executing application program threads or nodes 601 (e.g., client request 675A) or from node 601, (S) 675 are indicated through the framework manager 440. The framework manager 440 directs the transmission of information between the nodes 601. Conceptually, framework manager 440 acts as a matrix through which multiple threads may communicate with nodes 601 at essentially the same time. Different threads may carry different data, but the same framework manager software code may serve multiple threads.

하기에서 보다 상세히 설명되는 바와 같이, 프레임워크 관리자 (440) 는 노드의 의존적인 노드들이 인스턴스화되자마자, 즉, 임의의 주어진 노드 (601) 에 대한 의존성들 (680) 이 해결되는 경우, 노드 (601) 를 인스턴스화할 수도 있다. 프레임워크 관리자 (440) 는 PCD (100) 의 소프트웨어 아키텍처에서 규정된 모든 노드들 (601) 을 인스턴스화하려고 시도한다. 의존성 (680) 은 의존성을 지원하는 자원이 의존성 (680) 과 관련된 정보를 처리하기 위해 존재하거나 준비 상태인 경우 완료되거나 해결된다.As described in more detail below, the framework manager 440 can be configured to allow the nodes 601 (601), 602 (601) and 602 ). ≪ / RTI > The framework manager 440 attempts to instantiate all the nodes 601 defined in the software architecture of the PCD 100. The dependency 680 is completed or resolved when the resource supporting the dependency exists or is ready to process information related to the dependency 680. [

예를 들어, 제 1 노드 (602) 와 제 3 노드 (642) 사이에 존재하는 의존성 관계 (680A) 때문에, 단일 자원 "/clk/cpu" 을 포함하는 제 3 노드 (642) 가 인스턴스화되지 않는 경우, 단일 자원 "/core/cpu" 을 포함하는 제 1 노드 (602) 는 프레임워크 관리자 (440) 에 의해 인스턴스화되지 않을 수도 있다. 제 3 노드 (642) 가 프레임워크 관리자 (440) 에 의해 인스턴스화되면, 프레임워크 관리자 (440) 는 의존성 관계 (680A) 때문에 제 2 노드 (602) 를 인스턴스화할 수도 있다.For example, if the third node 642 containing a single resource "/ clk / cpu" is not instantiated due to the dependency relationship 680A that exists between the first node 602 and the third node 642 , The first node 602 containing a single resource "/ core / cpu" may not be instantiated by the framework manager 440. If the third node 642 is instantiated by the framework manager 440, the framework manager 440 may instantiate the second node 602 due to the dependency relationship 680A.

노드 (601) 의 의존성들 (680) 중 하나 이상의 의존성이 완료되지 않았거나 해결되지 않았기 때문에 프레임워크 관리자 (440) 가 특정 노드 (601) 를 인스턴스화할 수 없는 경우, 프레임워크 관리자 (440) 는 성공적으로 인스턴스화된 이러한 노드들 (601) 에 대응하는 단계들을 계속 가동하거나 실행할 것이다. 프레임워크 관리자 (440) 는 보통 의존적인 자원들이 생성되지 않은 불완전한 의존성들로 인해 존재하지 않을 수도 있는 특정 노드 (601) 에 대한 호출에 대해서는 스킵하고, 그 불완전상 상태를 반영하는 메시지들을 그 호출에 반환할 것이다.If the framework manager 440 can not instantiate a particular node 601 because the dependency of one or more of the dependencies 680 of the node 601 has not been completed or has not been resolved, Gt; 601 < / RTI > The framework manager 440 skips calls to specific nodes 601 that may not be due to incomplete dependencies for which normally dependent resources have not been created and sends messages reflecting the incomplete state to the call Will return.

도 1 에 도시된 바와 같은 다중-코어 환경에서, 프레임워크 관리자 (440) 는 도 1 의 제 0 코어, 제 1 코어, 및 제 N 코어 (222, 224, 및 226) 와 같은 별개의 코어들 상에서 노드들 (601) 을 생성하거나 인스턴스화할 수도 있다. 노드들 (601) 은 일반적으로, 노드들 (601) 이 서로 의존적이지 않는 한, 그리고, 하기에서 설명되는 바와 같이, 특정 노드의 대응하는 의존성들의 모두가 완료되는 경우, 별개의 코어들 상에서 그리고 병렬로 다중-코어 환경에서 생성될 수도 있다. 다중-프로세서 환경에서, 노드들 (601) 은 다양한 프로세서들, 예컨대, 도 1 의 CPU (110A), 그래픽 프로세서 (110B) 등에서 생성되거나 인스턴스화될 수도 있다. 즉, 일부 노드들 (601) 은 하나의 프로세서의 메모리 공간에 존재할 수도 있는 한편, 다른 노드들 (601) 은 다른 프로세서의 메모리 공간에 존재할 수도 있다. 그러나, 하나의 프로세서 상의 노드들 (601) 은 오직 프레임워크 관리자 (440) 를 통해서만 다른 프로세서 상의 노드들 (601) 에 액세스가능한 것은 아닐 수도 있음이 유의되어야 한다.In the multi-core environment as shown in Figure 1, the framework manager 440 may be implemented on separate cores such as the zeroth core, the first core, and the Nth core 222, 224, and 226 of Figure 1 Nodes 601 may be created or instantiated. Nodes 601 are generally located on separate cores and in parallel when nodes 601 are not dependent on each other and when all of the corresponding dependencies of a particular node are completed, In a multi-core environment. In a multi-processor environment, nodes 601 may be created or instantiated in various processors, such as CPU 110A, graphics processor 110B, etc. in FIG. That is, some nodes 601 may reside in the memory space of one processor while other nodes 601 may reside in the memory space of another processor. It should be noted, however, that nodes 601 on one processor may not be able to access nodes 601 on another processor only through framework manager 440. [

상술된 (메인) 프레임워크 관리자 (440) 와 유사한 원격 프레임워크 관리자 (300) 가 프레임워크 관리자 (440) 와 병렬로 그리고 그에 대한 확장으로서 존재할 수도 있다. 원격 프레임워크 관리자 (300) 는 프레임워크 관리자 (440) 와 협력하거나 작업하여 상이한 프로세서들 상에서의 노드들 (601) 사이의 프로세서간 정보 전송들을 조정한다. 즉, 원격 프레임워크 관리자 (300) 는, 수반된 노드들 (601) 이 상이한 프로세서들 상에 존재하는 경우들에서, 프레임워크 관리자 (440) 가 의존성들 및 클라이언트 요청들과 같은, 상술된 관계들을 유지하는 것을 돕는다. 따라서, 하나의 프로세서 상의 노드들 (601) 은 프레임워크 관리자들 (440 및 300) 의 결합된 효과를 통해 또 다른 프로세서 상의 노드들 (601) 에 액세스가능하도록 제공되지 않을 수도 있다. 또한, 프레임워크 관리자들 (440 및 300) 의 결합은, 수반된 노드들 (601) 이 동일한 프로세서에 존재하든 상이한 프로세서 상에 존재하든, 본 개시물에서 프레임워크 관리자 (440) 에 속하는 것으로 생각되는 기능들의 모두를 수행할 수도 있다. 이러한 다중-프로세서 실시형태들에서, 프레임워크 관리자들 (300 및 440) 이 포함하는 소프트웨어의 개개의 복사본들이 프로세서들의 각각의 도메인에 있을 수도 있다. 따라서, 각각의 프로세서는 동일한 프레임워크 관리자 소프트웨어에 대한 액세스를 갖는다.A remote framework manager 300 similar to the (main) framework manager 440 described above may exist in parallel with and as an extension to the framework manager 440. The remote framework manager 300 cooperates with or otherwise works with the framework manager 440 to coordinate the inter-processor information transfers between the nodes 601 on the different processors. In other words, the remote framework manager 300 may be configured such that in cases where the involved nodes 601 are on different processors, the framework manager 440 may be configured to perform the above-described relationships, such as dependencies and client requests, Helping to keep it. Thus, nodes 601 on one processor may not be provided to be accessible to nodes 601 on another processor through the combined effect of framework managers 440 and 300. [ Further, the combination of framework managers 440 and 300 may be implemented in any way that is contemplated to belong to framework manager 440 in this disclosure, whether the accompanying nodes 601 are on the same processor or on different processors Functions may be performed. In such multi-processor embodiments, individual copies of the software that framework managers 300 and 440 include may be in each domain of the processors. Thus, each processor has access to the same framework manager software.

도 4 는 방향성 비순환 그래프 ("DAG") (400) 의 형태로 상술된 노드들 (602, 622, 642, 및 646) 을 편리하게 재조직한다. 그래프 (400) 는 상술된 소프트웨어 아키텍처를 규정하는 다른 방식이다. 그래프 이론의 어휘에서, 그래프 (400) 의 꼭짓점들은 노드들 (601) 에 대응하며, 그래프 (400) 의 에지들은 클라이언트 요청들 (675) 에 대응하고, 인접한 노드들 또는 꼭짓점들은 자원 의존성들을 나타낸다. 프레임워크 관리자 (440) 가 사이클이 자원 A 가 자원 B 에 의존하고 자원 B 가 자원 A 의 의존하는 것으로 규정되는 것을 방지하기 때문에, 당업자는 그래프 (400) 가 의존성들의 결과로 방향성 그래프이고 비순환적임을 인지할 것이다. 즉, 프레임워크 관리자 (440) 는 서로 의존하는 것으로 (잘못되게) 규정되는 2 개의 노드들 (601) 을 인스턴스화하지 않을 것이다. 그래프의 비순환적 속성은 교착상태들을 방지하기 위해 중요한데, 이유는, 하기에서 설명되는 바와 같이, 각각의 노드 (601) 가 액세스되는 경우 (트랜잭션 프로세싱의 면에서) 잠기기 때문이다. 제 2 스레드가 액세스되고 이러한 2 개의 노드들 (601) 중 다른 노드가 잠기는 것과 동시에 제 1 스레드가 액세스되고 이러한 2 개의 노드들 (601) 중 하나의 노드가 잠기는 경우에서 2 개의 노드들 (601) 이 서로 의존하는 경우, 스레드들 양자 모두가 걸려 있게 될 것이다 (hang). 그러나, 소프트웨어 개발자 또는 소프트웨어 아키덱처를 규정하는데 연루되는 다른 그러한 사람이 서로 의존하는 2 개의 자원들을 소프트웨어 아키텍처에 규정하는 것이 바람직하다고 여기는 상대적으로 드문 경우들에서는, 2 (또는 그 이상) 개의 자원들이 서로에 대해 동일한 노드 (601) 에 포함될 수도 있다. 동일한 노드에서의 2 개의 자원들은 동일한 잠금 상태를 공유할 것이다. 이는 적어도 부분적으로는 소프트웨어 개발자 또는 다른 그러한 사람이 아키텍처에서 노드 (622) 와 같은 복수-자원 노드를 규정하는 것을 택할 수도 있기 때문이다.4 conveniently reorganizes the nodes 602, 622, 642, and 646 described above in the form of a directed acyclic graph ("DAG") 400. FIG. The graph 400 is another way of defining the software architecture described above. In the vocabulary of graph theory, the vertices of graph 400 correspond to nodes 601, the edges of graph 400 correspond to client requests 675, and adjacent nodes or vertices represent resource dependencies. As the framework manager 440 prevents the cycle from being dependent on resource B and resource B being defined as dependent on resource A, one skilled in the art will appreciate that graph 400 is a directional graph and acyclic as a result of dependencies I will recognize. That is, the framework manager 440 will not instantiate the two nodes 601 that are (incorrectly) defined as dependent on each other. The acyclic nature of the graph is important to prevent deadlocks because each node 601 is locked (in terms of transaction processing), as described below. Two nodes 601 in the case where a first thread is accessed and one of these two nodes 601 is locked while a second thread is accessed and another of these two nodes 601 is locked, If they depend on each other, both threads will hang. However, in the relatively rare cases where it is desirable to define two resources in software architecture that are dependent on each other, such as a software developer or other such person involved in defining a software architecture, two (or more) May be included in the same node 601 with respect to the same node 601. The two resources at the same node will share the same lock state. This is because at least in part the software developer or other such person may choose to define a multi-resource node, such as node 622, in the architecture.

명확함 및 편리함을 위해, 본 개시물이 노드 (601) 의 "자원" 보다는 "노드" (601) 를 언급할 수도 있기는는 하나, 클라이언트 요청들은 노드들보다는 특정 자원들로 보내질 수도 있음이 이해되어야 한다. 다시 말해, 상술된 바와 같이, 하나 이상의 자원들의 기능성을 캡슐화하는 데이터 구조일 수도 있는 노드 (601) 는 클라이언트 또는 다른 노드 (601) 와 같은 클라이언트 요청의 다른 발행자의 관점에서 알기 쉬울 수도 있다. 클라이언트의 관점에서, 요청은 노드보다는 자원에 대해 발행된다. 마찬가지로, 클라이언트의 관점에서, 아키텍처의 상태 질의, 이벤트, 또는 다른 요소는 노드보다는 자원과 연관된다.It should be appreciated that for clarity and convenience, although the present disclosure may refer to a "node" 601 rather than a "resource" of node 601, client requests may be sent to specific resources rather than nodes . In other words, the node 601, which may be a data structure that encapsulates the functionality of one or more resources, as described above, may be easy to see from the perspective of another issuer of a client request, such as a client or other node 601. From the client's perspective, the request is issued to the resource rather than the node. Likewise, from a client's point of view, an architecture's state query, event, or other element is associated with a resource rather than a node.

예시적인 그래프 (400) 와 같은 자원 그래프는 도 6 내지 도 10 과 관련하여 하기에서 설명되는 의존성들에 따른 노드들 (601) 의 인스턴스화를 이해하는데 유용하다. 노드들 (642 및 646) 과 같은 리프 노드들은 비-리프 노드들 전에 인스턴스화되는데, 리프 노드들이 의존성들을 가지 않기 때문이다. 일반적으로, 노드 (601) 는 노드 (601) 에 의존하는 노드가 인스턴스화될 수도 있기 전에 인스턴스화되어야 한다. 또한, 자원 요청에 서비스하는 것은 방향성 비순환 그래프를 횡단하는 것에 대응함을 알 수 있으며, 방향성 비순환 그래프에서, 꼭짓점들은 노드들 (601) 에 대응하며, 에지들은 클라이언트 요청들 (675) 에 대응하고, 인접한 노드들 또는 꼭짓점들은 자원 의존성들을 나타낸다.A resource graph such as the exemplary graph 400 is useful for understanding instantiation of nodes 601 according to the dependencies described below with respect to Figures 6-10. Leaf nodes, such as nodes 642 and 646, are instantiated before non-leaf nodes, since leaf nodes do not have dependencies. In general, node 601 must be instantiated before a node that relies on node 601 may be instantiated. It can also be seen that servicing a resource request corresponds to traversing a directional acyclic graph, in a directed acyclic graph, vertices correspond to nodes 601, edges correspond to client requests 675, The nodes or vertices represent resource dependencies.

다중-프로세서 PCD (100) 에서, 제 1 프로세서가 제 1 자원 그래프에서의 노드들 (601) 의 제 1 세트에 대한 액세스를 가지거나 그를 제어할 수도 있는 한편, 제 2 프로세서가 제 2 자원 그래프에서의 노드들 (601) 의 제 2 세트에 대한 액세스를 가질 수도 있거나 그를 제어할 수도 있으며, 여기서 제 1 및 제 2 자원 그래프들은 임의의 자원들을 공유하지 않는다, 즉, 그것들은 서로 배타적인 자원 그래프들이다. 즉, 이러한 환경에서, 각각의 프로세서는 다른 프로세서들에 의해 액세스가능하지 않은 자원들 및 다른 요소들 사이의 관계들을 규정하는 그 자체의 자원 그래프를 갖는다. 본 개시물의 분산된 자원 관리는, 2 개 이상의 프로세서들이 그것들 자체의 자원 그래프들에서의 자원들에 대한 액세스를 각각 갖고 다른 프로세서들의 자원 그래프들에서의 자원들에 대한 액세스는 갖지 않는 경우들에서, 상술된 관계들, 예컨대, 의존성들 및 클라이언트 요청들을 유지하는 것에 관한 것이다.In the multi-processor PCD 100, the first processor may have or control access to the first set of nodes 601 in the first resource graph, while the second processor may be in the second resource graph The first and second resource graphs may have access to or control an access to the second set of nodes 601 of the first and second resource graphs, where the first and second resource graphs do not share any resources, that is, they are mutually exclusive resource graphs . That is, in such an environment, each processor has its own resource graph that defines relationships between resources and other elements that are not accessible by other processors. Distributed resource management of the present disclosure is advantageous in situations where two or more processors each have access to resources in their own resource graphs and do not have access to resources in resource graphs of other processors, To maintaining the above relationships, e.g., dependencies and client requests.

자원들에 대한 액세스에 관한 위에서 언급된 제한은, 일부 실시형태들에서, 하드웨어 구성에 의해 제한될 수도 있다. 즉, 프로세서는 하드웨어 디바이스에 영향을 미칠 수 있는 수단, 예컨대, 레지스터를 갖지 않을 수도 있는데, 하드웨어 디바이스가 다른 프로세서에 의해 제어되거나 다른 프로세서의 메모리 공간에 있기 때문이다. 대안으로, 또는 이에 더해, 자원들에 대한 액세스에 관한 제한이 소프트웨어에 부과될 수도 있는데, 그 이유는 보안 위험들 (예를 들어, 다른 프로세서를 감염시킬 수도 있는 바이러스) 에 대한 프로세서의 노출을 최소화하기 때문이다.The above-mentioned restrictions on access to resources may, in some embodiments, be limited by hardware configuration. That is, a processor may not have a means, such as a register, that may affect a hardware device, since the hardware device is controlled by another processor or is in a memory space of another processor. Alternatively, or additionally, a restriction on access to resources may be imposed on the software because it minimizes processor exposure to security risks (e.g., viruses that may infect other processors) .

도 5 는 도 1 의 PCD (100) 의 자원들을 관리하는 시스템에 대한 소프트웨어 아키텍처 (500B1) 의 다른 양상의 일반적인 다이어그램이다. 이러한 양상은 수반된 모든 자원들 및 다른 요소들이 동일한 프로세서에 의해 제어되는, 즉, 그것들이 동일한 자원 그래프에 포함되는 PCD (100) 및 아키텍처의 맥락에서 명확하도록 설명된다. 이러한 일반적인 다이어그램에서, 각각의 노드 (601) 의 하나 이상의 자원들에는 고유한 이름들이 제공되지 않았다. 도 5 의 노드 또는 자원 그래프 (500B1) 는 아키텍처 또는 프레임워크 관리자 (440) 에 의해 지원되는 오직 노드들 (601), 클라이언트들 (648), 이벤트들 (690), 및 질의 함수들 (695) 을 포함한다. 각각의 노드 (601) 는 타원형, 및 노드 (601) 내의 자원들 사이의 각각의 의존성들을 나타내는 특정 방향들을 갖는 화살표들 (680) 로 도시되었다.FIG. 5 is a general diagram of another aspect of the software architecture 500B1 for a system for managing resources of the PCD 100 of FIG. This aspect is described in the context of PCD 100 and architecture in which all the resources and other elements involved are controlled by the same processor, that is, they are included in the same resource graph. In this general diagram, unique names are not provided for one or more resources of each node 601. The node or resource graph 500B1 of Figure 5 includes only nodes 601, clients 648, events 690, and query functions 695 supported by the architecture or framework manager 440 . Each node 601 is shown with arrows 680 having an oval shape and specific directions representing respective dependencies between the resources in the node 601. [

도 5 는 또한 제 1 노드 (601A) 의 클라이언트 (648) 가 제 1 노드 (601A) 에 클라이언트 요청 (675) 을 발행할 수도 있는 방법을 도시한다. 이러한 클라이언트 요청들 (675) 이 발행된 후에, 제 2 노드 (601B) 가 이벤트 (690) 를 트리거링하거나 질의 (695) 에 대한 응답을 제공할 수도 있으며, 여기서 이벤트 (690) 및 질의 (695) 에 대응하는 메시지들이 클라이언트 (648) 로 다시 이동한다.Figure 5 also illustrates how a client 648 of a first node 601A may issue a client request 675 to a first node 601A. After these client requests 675 have been issued, the second node 601B may trigger an event 690 or provide a response to the query 695, where event 690 and query 695 The corresponding messages are moved back to the client 648.

도 6 은 도 1 의 PCD (100) 의 자원들을 관리하는 시스템에 대한 소프트웨어 아키텍처 (500B2) 의 상술된 양상의 보다 구체적인 다이어그램을 도시한다. 도 6 은, 도 3 의 것들에 대응하는, 예시적이긴 하나 특정 자원 이름들을 갖는 노드들 (601), 뿐만 아니라 클라이언트들 (648), 이벤트들 (690), 및 질의 함수들 (695) 만을 포함하는 노드 또는 자원 그래프 (500B2) 를 도시한다. 각각의 노드 (601) 는 타원형, 및 노드 (601) 내의 자원들 사이의 각각의 의존성들을 나타내는 특정 방향들을 갖는 화살표들 (680) 로 도시되었다.FIG. 6 shows a more specific diagram of the above-described aspects of the software architecture 500B2 for a system for managing resources of the PCD 100 of FIG. Figure 6 includes only nodes 601, which are exemplary but specific resource names, as well as clients 648, events 690, and query functions 695, corresponding to those of Figure 3 Lt; RTI ID = 0.0 > 500B2 < / RTI > Each node 601 is shown with arrows 680 having an oval shape and specific directions representing respective dependencies between the resources in the node 601. [

예를 들어, 제 1 노드 (602) 는 제 1 노드 (602) 가 제 2 노드 (622) 의 3 개의 자원들에 의존함을 표시하는 의존성 화살표 (680B) 를 갖는다. 유사하게, 제 2 소프트웨어 요소 (444B) 를 포함하고 일반적으로 도 11C 에서 참조 문자 "C" 로 지정되는 제 3 자원 "/bus/ahb/sysB/" 은 이러한 제 3 자원 (C) 이 제 4 노드 (646) 의 단일 "/clk/sys/ahb" 자원에 의존한다는 것을 나타내는 의존성 화살표 (680C) 를 갖는다.For example, the first node 602 has a dependency arrow 680B indicating that the first node 602 depends on the three resources of the second node 622. [ Similarly, a third resource " / bus / ahb / sysB / ", which includes the second software element 444B and is generally designated by the reference character "C & / Clk / sys / ahb "resource of resource 646, as shown in FIG.

도 6 은 또한 하나 이상의 이벤트들 (690) 또는 질의 함수들 (695) 을 포함할 수도 있는 노드들 (601) 로부터의 출력 데이터를 도시한다. 질의 함수 (695) 는 이벤트 (690) 와 유사하다. 질의 함수 (695) 는 고유할 수도 있거나 고유하지 않을 수도 있는 질의 처리를 가질 수도 있다. 질의 함수는 일반적으로 외부에서 식별되지 않고, 일반적으로 상태를 갖지 않는다. 질의 함수 (695) 는 노드 (601) 의 특정 자원의 상태를 결정하는데 이용될 수도 있다. 질의 함수 (695) 및 이벤트들 (690) 은 확립된 클라이언트 (648) 와 관계들을 가질 수도 있고, 이러한 관계들은 각각의 이벤트 (690) 및 질의 함수 (695) 로부터의 정보가 특정 클라이언트 (648) 로 전달됨을 표시하는 방향성 화살표들 (697) 에 의해 나타내어진다.FIG. 6 also shows output data from nodes 601, which may include one or more events 690 or query functions 695. The query function 695 is similar to the event 690. Query function 695 may have query processing that may or may not be unique. The query function is generally not externally identified, and generally has no status. The query function 695 may be used to determine the state of a particular resource of the node 601. The query function 695 and events 690 may have relationships with the established client 648 and these relationships may include information from each event 690 and query function 695 to a particular client 648 Indicated by directional arrows 697 indicating that it is delivered.

도 5 및 도 6 의 노드 또는 자원 그래프들 (500B) 은 프로세서의 제어 하에 메모리에 존재하고 프레임워크 관리자 (440) 에 의해 관리되는 관계들을 나타낸다. 노드 또는 자원 그래프 (500B) 는 프레임워크 관리자 (440) 에 의해 관리되는 각각의 요소들 사이의 관계들을 식별하기 위해 그리고 소프트웨어 팀에 의한 문제해결을 위해 유용한 툴로써 프레임 관리자 (440) 에 의해 자동적으로 발생될 수도 있다.The nodes or resource graphs 500B of FIGS. 5 and 6 show relationships that exist in memory under the control of the processor and are managed by the framework manager 440. FIG. The node or resource graph 500B may be used by the frame manager 440 to identify relationships between each of the elements managed by the framework manager 440 and to automatically .

도 7 은 PCD (100) 의 자원(들)을 관리하는 소프트웨어 구조들을 생성하거나 인스턴스화하는 방법 (1000A) 을 도시하는 플로차트이다. 이러한 방법은 수반되는 모든 자원들 및 다른 요소들이 동일한 프로세서에 의해 제어되는, 즉, 그것들이 동일한 자원 그래프에 포함되는 아키텍처의 맥락에서 명확하도록 설명된다. 블록 (1005) 은 PCD (100) 의 자원들을 관리하는 방법 또는 프로세스 (1000) 의 제 1 루틴이다. 블록 (1005) 에서, 루틴은 노드 구조 데이터를 수신하도록 프레임워크 관리자 (440) 에 의해 실행되거나 가동될 수도 있다. 노드 구조 데이터는 특정 노드 (601) 가 다른 노드들 (601) 과 가질 수도 있는 의존성들을 개략적으로 설명하는 의존성 어레이를 포함할 수도 있다. 노드 구조 데이터 및 이러한 루틴 또는 하위방법 (705) 에 관한 보다 세부사항들은 도 9 와 연계하여 하기에서 보다 상세히 설명될 것이다.FIG. 7 is a flowchart illustrating a method 1000A for creating or instantiating software structures for managing the resource (s) of the PCD 100. FIG. This method is described in the context of an architecture in which all the resources and other elements involved are controlled by the same processor, that is, they are included in the same resource graph. Block 1005 is a first routine of the method 1000 or process 1000 for managing resources of the PCD 100. At block 1005, the routine may be executed or activated by framework manager 440 to receive node structure data. The node structure data may include a dependency array that outlines the dependencies that a particular node 601 may have with other nodes 601. [ Further details regarding the node structure data and these routines or sub-methods 705 will be described in more detail below in conjunction with FIG.

다음으로, 블록 (1010) 에서, 프레임워크 관리자 (440) 가 블록 (1005) 에서 수신된 노드 구조 데이터의 일부인 의존성 데이터를 검토할 수도 있다. 결정 블록 (1015) 에서, 프레임워크 관리자 (440) 는 노드 구조 데이터가 리프 노드 (601) 를 규정하는지를 결정할 수도 있다. 리프 노드 (601) 는 일반적으로 노드 구조 데이터에 기초하여 생성될 노드가 도 3 및 도 4 에서의 노드들 (642 및 646) 과 같이 어떠한 의존성들도 갖지 않음을 의미한다. 결정 블록 (1015) 에 대한 조회 (inquiry) 가 긍정적인 경우 (현재 노드를 생성하기 위한 노드 구조 데이터가 어떠한 의존성들도 갖지 않음을 의미한다), 프레임워크 관리자 (440) 는 루틴 블록 (1025) 을 계속한다.Next, at block 1010, framework manager 440 may review dependency data that is part of the node structure data received at block 1005. [ At decision block 1015, the framework manager 440 may determine if the node structure data defines a leaf node 601. The leaf node 601 generally means that the node to be created based on the node structure data does not have any dependencies such as nodes 642 and 646 in Figs. 3 and 4. If the inquiry to the decision block 1015 is positive (meaning that the node structure data for creating the current node does not have any dependencies), the framework manager 440 sends the routine block 1025 Continue.

결정 블록 (1015) 에 대한 조회가 부정적인 경우, 결정 블록 (1020) 에 "아니오" 브랜치가 뒤따르며, 여기서 프레임워크 관리자는 노드 구조 데이터 내의 모든 강한 의존성들이 존재하는지를 결정한다. 강한 의존성은 자원이 그것 없이 존재할 수 없는 것을 포함할 수도 있다. 한편, 약한 의존성은 자원이 선택적 단계로서 의존적인 자원을 이용할 수도 있는 것을 포함할 수도 있다. 약한 의존성은 약한 의존성이 존재하지 않을지라도 약한 의존성을 갖는 노드 (601) 또는 노드 (601) 의 자원이 노드 아키텍처 내에 생성되거나 인스턴스화될 수도 있음을 의미한다.If the query to decision block 1015 is negative, then a "no" branch is followed by decision block 1020, where the framework manager determines if all strong dependencies in the node structure data are present. A strong dependency may include that a resource can not exist without it. On the other hand, a weak dependency may include that the resource may utilize a dependent resource as an optional step. A weak dependency means that the resources of node 601 or node 601 with a weak dependency may be created or instantiated in the node architecture even if there is no weak dependency.

약한 의존성의 실시예는 다수의 자원들을 포함하는 자원 지향 노드 (601) 에 대한 동작에 중요하지 않은 최적화 특징을 포함할 수도 있다. 자원 관리자 (440) 는 약한 의존성이 생성되지 않은 약한 의존성들을 갖는 그러한 노드들 또는 자원들에 대해 약한 의존성이 있지 않을지라도 존재하는 모든 강한 의존성들에 대해 노드 또는 자원을 생성하거나 인스턴스화할 수도 있다. 콜 백 (call back) 특징이 약한 의존성을 참조하는데 이용되어, 약한 의존성이 프레임워크 관리자 (440) 에게 이용가능하게 되는 경우, 프레임워크 관리자 (440) 는 약한 의존성들이 이제 이용가능함을 약한 의존성을 참조하는 각각의 콜백에 알릴 것이다.Embodiments of the weak dependency may include optimization features that are not critical to the operation of the resource-oriented node 601 including a plurality of resources. The resource manager 440 may create or instantiate a node or resource for all the strong dependencies that are present even if the weak dependencies are not weakly dependent on those nodes or resources with weak dependencies that are not created. If the call back feature is used to refer to a weak dependency so that a weak dependency is made available to the framework manager 440, then the framework manager 440 may refer to the weak dependency that weak dependencies are now available Will be notified to each callback.

결정 블록 (1020) 에 대한 조회가 부정적인 경우, 블록 (1027) 에 "아니오" 브랜치가 뒤따를 것이며, 여기서 노드 구조 데이터가 메모리와 같은 임시 저장부에 프레임워크 관리자 (440) 에 의해 저장되고, 프레임워크 관리자 (440) 가 이러한 인스턴스화되지 않은 노드와 연관된 콜 백 특징를 생성한다.If the query to decision block 1020 is negative, then a "no" branch will follow block 1027, where the node structure data is stored by the framework manager 440 in a temporary storage such as memory, The work manager 440 creates callback features associated with these un-instantiated nodes.

결정 블록 (1015) 에 대한 조회가 긍정적인 경우, "예" 브랜치에 뒤이어 루틴 (1025) 이 오며, 여기서 루틴 블록 (1005) 에서 수신된 노드 구조 데이터에 기초하여 노드 (601) 가 생성되거나 인스턴스화된다. 루틴 블록 (1025) 의 추가적인 세부사항들은 도 9 와 연계하여 하기에서 설명될 것이다. 다음으로, 블록 (1030) 에서, 프레임워크 관리자 (440) 가 그것의 고유한 자원 이름(들)을 이용해 새롭게 생성된 노드 (601) 를 공개하여 다른 노드들 (601) 이 새롭게 생성된 노드 (601) 로 정보를 전송하거나 새롭게 생성된 노드로부터 정보를 수신할 수도 있다.If the query to decision block 1015 is positive, then the routine 1025 follows the "yes" branch, where the node 601 is created or instantiated based on the node structure data received at the routine block 1005 . Additional details of the routine block 1025 will be described below in conjunction with FIG. Next, at block 1030, the framework manager 440 publishes the newly created node 601 using its unique resource name (s) to allow the other nodes 601 to access the newly created node 601 ) Or may receive information from a newly created node.

이제 도 7 의 계속되는 플로 차트인 도 8 을 참조하면, 블록 (1035) 에서, 프레임워크 관리자 (440) 는 새롭게 생성된 노드 (601) 가 인스턴스화되었고 정보를 수신하거나 송신하도록 준비되었음을 새롭게 생성된 노드 (601) 에 의존하는 다른 노드들 (601) 에게 통지한다. 일 예시적인 양상에 따르면, 통지들은 도 5 의 노드 (601B) 와 같은 의존적인 노드가 생성되는 경우 즉시 트리거링되는데, 즉, 통지들은 재귀적으로 수행된다. 그래서, 도 5 의 노드 (601B) 가 구성되는 경우, 노드 (601A) 에 즉시 통지된다. (노드 (601B) 가 노드 (601A) 의 최종 의존이기 때문에) 이러한 통지는 노드 (601A) 가 구성되는 것을 허용할 수도 있다. 노드 (601B) 의 구성은 다른 노드들 (601) 이 통지되게 하는 것 등을 야기할 수도 있다. 노드 (601B) 는 노드 (601B) 에 의존하는 최종 자원이 완료될 때까지 완료되지 않는다.Referring now to FIG. 8, which is a flowchart of the subsequent flow chart of FIG. 7, at block 1035, framework manager 440 determines that the newly created node 601 has been instantiated and is ready to receive or transmit information to the newly created node 601 to other nodes 601 that depend on that node. According to one exemplary aspect, notifications are immediately triggered when a dependent node, such as node 601B of FIG. 5, is created, i.e., notifications are performed recursively. Thus, when the node 601B of Fig. 5 is configured, it is immediately notified to the node 601A. (Since node 601B is the final dependency of node 601A), this notification may allow node 601A to be configured. The configuration of node 601B may cause other nodes 601 to be notified, and so on. The node 601B is not completed until the final resource that depends on the node 601B is completed.

두 번째의, 약간 보다 복잡한 구현은 별개의 통지 큐 상에 통지들 모두를 두고, 그 다음에 시간상 단일 지점에서 시작하여 큐를 통해 가동하는 것이다, 즉, 통지들은 반복하여 수행된다. 그래서, 도 5 의 노드 (601B) 가 구성되는 경우, 노드 (601A) 에 대한 통지가 리스트 상에 푸쉬된다. 그러면, 그 리스트가 실행되고 노드 (601A) 가 통지된다. 이는 동일한 리스트 상에 올려질 다른 추가적인 노드들 (601) (노드 (601A) 제외, 도 5 에 미도시) 에 대한 통지를 야기하고, 그 통지는 그러면 노드 (601A) 에 대한 통지가 전송된 다음에 전송된다. (노드 (601A) 에 대한 통지 외에) 다른 노드들 (601) 에 대한 통지들은 노드 (601B) 및 노드 (601A) 와 연관된 모든 작업이 완료된 후까지 일어나지 않는다.The second, slightly more complex implementation is to place all of the notifications on a separate notice queue, then run through the queue starting at a single point in time, i.e., notifications are repeatedly performed. Thus, when node 601B of FIG. 5 is configured, the notification for node 601A is pushed on the list. Then, the list is executed and node 601A is notified. This causes a notification to the other additional nodes 601 (other than node 601A, not shown in FIG. 5) to be placed on the same list, and the notification is then sent to node 601A after the notification to node 601A is sent . Notifications to other nodes 601 (in addition to the notification to node 601A) do not occur until after all operations associated with node 601B and node 601A have been completed.

논리적으로, 이러한 2 개의 구현들은 동등하나, 구현들은 구현되는 경우 상이한 메모리 소비 특성들을 갖는다. 재귀적인 실현은 간단하기는 하나 임의의 양의 스택 공간을 소비할 수 있으며, 스택 소비는 의존성 그래프의 심도의 함수이다. 반복적인 구현은 약간 더 복잡하고 좀더 많은 정적 메모리 (통지 리스트) 를 요구하나, 스택 이용은 도 5 에 도시된 바와 같은 의존성 그래프의 심도와 상관없이 일정하다.Logically, these two implementations are equivalent, but implementations have different memory consumption characteristics when implemented. Recursive realization is simple, but it can consume any amount of stack space, and stack consumption is a function of depth of dependency graph. The iterative implementation is slightly more complex and requires more static memory (notification list), but the stack usage is constant regardless of the depth of the dependency graph as shown in FIG.

또한, 블록 (1035) 에서의 노드 생성의 통지는 다른 노드들로 제한되지 않는다. 이는 또한 내부적으로 에일리어스 (alias) 구성에 대해 이용될 수도 있다. 다른 노드들이 아니라 어떤 노드가 이용가능하게 되는 경우, 시스템 (500A) 에서의 어떠한 임의의 요소가 동일한 매커니즘을 이용하여 통지를 요청할 수도 있다. 노드들 모두가 동일한 통지 매커니즘을 이용할 수도 있거나, 어떠한 노드들도 동일한 통지 매커니즘을 이용하지 않을 수도 있다.Also, the notification of node creation at block 1035 is not limited to other nodes. It may also be used internally for an alias configuration. When any node, not other nodes, becomes available, any of the elements in system 500A may request notification using the same mechanism. All of the nodes may use the same notification mechanism, or none of the nodes may use the same notification mechanism.

결정 블록 (1040) 에서, 현재 노드 (601) 의 생성에 기초하여 생성 또는 인스턴스화를 위해 다른 노드들 (601) 또는 약한 의존성들이 이제 해제되는지를 프레임워크 관리자 (440) 가 결정한다. 결정 블록 (1040) 은 일반적으로, 소정의 의존성 관계들 (680) 이 최근에 생성 또는 인스턴스화를 겪은 현재 노드에 의해 달성되었기 때문에 자원들이 생성될 수도 있는지 여부를 결정한다.At decision block 1040, the framework manager 440 determines whether other nodes 601 or weak dependencies are now released for creation or instantiation based on the creation of the current node 601. [ Decision block 1040 generally determines whether resources may be created because certain dependency relationships 680 have been achieved by the current node that has undergone a recent creation or instantiation.

결정 블록 (1040) 에 대한 조회가 긍정적인 경우, "예" 브랜치에 뒤이어 루틴 블록 (1025) 가 뒤따르며, 여기서 방금 생성된 노드 (601) 에 의한 의존성의 달성으로 이해 해제된 노드 (601) 가 이제 생성되거나 인스턴스화될 수도 있다.If the inquiry to decision block 1040 is affirmative, then a "Yes" branch is followed by a routine block 1025, where node 601, which is not understood due to the achievement of dependency by node 601 just created, It can now be created or instantiated.

결정 블록 (1040) 에 대한 조회가 부정적인 경우, "아니오" 브랜치에 뒤이어 블록 (1045) 가 오며, 여기서 프레임 워크 관리자 (440) 가 도 2 에 도시된 바와 같은 소프트웨어 아키텍처의 요소들 사이의 통신들을 관리할 수도 있다. 다음으로, 블록 (1050) 에서, 프레임워크 관리자 (440) 는 특정 자원과 연관된 자원 이름들을 이용함으로써 자원들에 의해 취해진 액션들을 계속하여 로그하거나 (log) 액션들을 기록할 수도 있다. 블록 (1045) 은 프레임워크 관리자 (440) 에 의해 취해진 임의의 액션, 또는 프레임워크 관리자 (440) 에 의해 관리되는 요소들, 예컨대, 소스들, 노드들 (601), 클라이언트들 (648), 이벤트들 (695), 및 질의 함수들 (697) 중 임의의 것 후에 프레임워크 관리자 (440) 에 의해 실행될 수도 있다. 블록 (1045) 은 노드 아키텍처의 다른 양상을 도시하며, 이는 프레임워크 관리자 (440) 가 노드 (601) 의 자원과 같은, 특정 요소를 생성한 저자들에 의해 제공되는 각각의 요소의 고유한 식별자 또는 이름에 따라 각각의 요소에 의해 수행되는 액션들을 열거하는 활동도의 가동 로그를 유지할 수도 있다.If the query to decision block 1040 is negative, then a "no" branch is followed by block 1045 where framework manager 440 manages communications between elements of the software architecture as shown in FIG. 2 You may. Next, at block 1050, the framework manager 440 may continue to log or log actions taken by the resources by using resource names associated with the particular resource. Block 1045 may be any action taken by framework manager 440 or elements that are managed by framework manager 440 such as sources 602 and clients 648, May be executed by framework manager 440 after any of query functions 695, query functions 697, Block 1045 illustrates another aspect of the node architecture in that it is a unique identifier of each element provided by the authors who created the particular element, such as the resources of node 601, Depending on the name, you can also keep an activity log of activity diagrams listing the actions performed by each element.

선행 기술과 비교하여, 시스템의 각각의 자원에 할당된 고유한 이름들을 열거하는, 블록 (1050) 에서의 이러한 활동도의 로그하기는 고유하고, 디버깅 및 에러 문제해결에서 이용되는 바와 같이 상당한 이점들을 제공할 수도 있다. 노드 아키텍처 (500A) 의 다른 고유한 양상은 별개의 팀들이 상이한 하드웨어 및/또는 소프트웨어 요소들에 대해 서로 관계없이 작업할 수도 있다는 것으로, 여기서 각각의 팀은 다른 팀들 및/또는 OEM (original equipment manufacturer) 에 의해 할당된 별로 의미 없는 그리고 보통 혼란스러운 자원 이름들을 해석하기 위해 테이블을 생성할 필요 없이 추적하기에 고유하고 쉬운 자원 이름들을 이용하는 것이 가능할 것이다.In comparison to the prior art, logging of this activity in block 1050, which lists the unique names assigned to each resource in the system, is unique and provides significant advantages as used in debugging and error problem solving . Another unique aspect of the node architecture 500A is that separate teams may work independently of different hardware and / or software components, where each team is associated with another team and / or original equipment manufacturer (OEM) It would be possible to use unique and easy resource names to track without having to create a table to interpret meaningless and usually confusing resource names assigned by.

다음으로, 결정 블록 (1055) 에서, 프레임워크 관리자 (440) 에 의해 기록된 활동도의 로그가 요청되었는지를 프레임워크 관리자 (440) 가 결정한다. 결정 블록 (1055) 에 대한 조회가 부정적인 경우, "아니오" 브랜치에 뒤이어 프로세스의 종료가 오며, 여기서 프로세스는 루틴 (1005) 으로 다시 복귀한다. 결정 블록 (1055) 에 대한 조회가 긍정적인 경우, "예" 브랜치에 뒤이어 블록 (1060) 이 오며, 여기서, 프레임워크 관리자 (440) 는 의미 있는 자원 이름들 및 자원 이름들에 의해 수행되는 각각의 액션들을 포함하는 활동도 로그를 출력 디바이스, 예컨대, 프린터 또는 디스플레이 화면, 및/또는 양자 모두에 전송한다. 프로세스는 그 다음에 상술된 루틴 블록 (1005) 으로 복귀한다.Next, at decision block 1055, framework manager 440 determines if a log of the activity recorded by framework administrator 440 has been requested. If the query to decision block 1055 is negative, then a "no" branch is followed by the end of the process, where the process returns to routine 1005 again. If the lookup for decision block 1055 is affirmative, then block 1060 follows the "Yes" branch, where framework manager 440 determines that each of the resource names An activity log containing actions is transmitted to an output device, e.g., a printer or display screen, and / or both. The process then returns to the routine block 1005 described above.

도 9 는 PCD (100) 의 소프트웨어 아키텍처를 규정하는 노드 구조 데이터를 수신하기 위한 도 7 의 하위-방법 또는 루틴 (1005) 을 도시하는 플로차트이다. 수신하는 방법은 임의의 적합한 시간에, 예컨대, 예를 들어, PCD (100) 가 시동되거나 초기화될 때에 일어날 수도 있다. 이러한 경우에서, 아키텍처에 따른 노드들 (601) 의 인스턴스화의 준비 시에 프로세서가 메모리로부터 대응하는 소프트웨어 코드를 판독하는 경우에 노드 구조 데이터가 수신된다. 블록 (1105) 은 도 7 의 하위 방법 또는 루틴 (1005) 에서의 제 1 단계이다. 블록 (1105) 에서, 프레임워크 관리자 (440) 는 도 7 의 CPU (110) 및 클록 (442) 과 같은 소프트웨어 또는 하드웨어 요소에 대한 고유한 이름을 수신할 수도 있다. 이전에 논의된 바와 같이, 노드 (601) 는 적어도 하나의 자원을 참조해야 한다. 각각의 자원은 시스템 (500A) 에서 고유한 이름을 갖는다. 시스템 (500A) 내의 각각의 요소는 고유한 이름으로 식별될 수도 있다. 각각의 요소는 문자 면에서 고유한 이름을 갖는다. 다시 말해, 일반적으로, 시스템 (500A) 내에 동일한 이름을 갖는 2 개의 요소들이 없다. 시스템의 예시적인 양상들에 따르면, 노드들 (601) 의 자원들은 일반적으로 시스템에 걸쳐 고유한 이름들을 가질 수도 있으나, 클라이언트 또는 이벤트 이름들이 고유할 것이 요구되지는 않으나, 클라이언트 또는 이벤트 이름들은 원한다면 고유할 수도 있다.FIG. 9 is a flowchart showing the sub-method or routine 1005 of FIG. 7 for receiving node structure data defining the software architecture of the PCD 100. FIG. The receiving method may occur at any suitable time, for example, when the PCD 100 is started or initialized. In this case, the node structure data is received when the processor reads the corresponding software code from the memory in preparation for instantiation of the nodes 601 according to the architecture. Block 1105 is the first step in the sub-method or routine 1005 of FIG. At block 1105, framework manager 440 may receive a unique name for a software or hardware element, such as CPU 110 and clock 442 in FIG. As discussed previously, node 601 should reference at least one resource. Each resource has a unique name in system 500A. Each element in the system 500A may be identified by a unique name. Each element has a unique name in the character plane. In other words, generally there are no two elements with the same name in system 500A. According to exemplary aspects of the system, the resources of the nodes 601 may generally have unique names across the system, but the client or event names are not required to be unique, You may.

편의를 위해, 고유한 이름들을 생성하기 위해 전방향 슬래시 "/" 문자들을 사용하는 종래의 트리 파일 명명 구조 또는 파일 명명 "비유" 가, 예컨대, 제한하지는 않으나, CPU (110) 에 대해서는 "/core/cpu", 그리고 클록 (442) 에 대해서는 "/clk/cpu" 로 사용될 수도 있다. 그러나, 당업자에 의해 인지되는 바와 같이, 영숫자 문자들 및/또는 심볼들의 임의의 다른 조합을 포함하는 다른 유형의 자원 이름들이 당연히 본 개시물의 범주 내에 있다.For convenience, a conventional tree file naming scheme or file naming "metaphor" that uses forward slash "/" characters to generate unique names may be used, for example, but not limited to, "/ core / cpu "for clock 442, and" / clk / cpu "for clock 442. However, as will be appreciated by those skilled in the art, other types of resource names including alphanumeric characters and / or any other combination of symbols are naturally within the scope of this disclosure.

다음으로, 블록 (1110) 에서, 프레임워크 관리자 (440) 는 생성되는 노드 (601) 의 하나 이상의 자원들과 연관된 하나 이상의 구동 함수들에 대한 데이터를 수신할 수도 있다. 구동 함수는 일반적으로 특정 노드 (601) 에 대한 하나 이상의 자원들에 의해 완료될 액션을 포함한다. 예를 들어, 도 7a 및 도 7b 에서, 노드 (602) 의 자원 (/core/cpu) 에 대한 구동 함수는 요청되어진 요청된 프로세싱의 양을 제공하기 위해 요구하는 버스 대역폭 및 CPU 클록 주파수의 양을 요청할 수도 있다. 이러한 요청들은 노드들 (642) 및 노드 (622) 에서 자원들의 클라이언트들을 통해 이루어질 것이다. 노드 (642) 에서의 /clk/cpu 에 대한 구동 함수는 보통 노드 (602) 의 /core/cpu 자원으로부터 구동 함수가 수신한 요청에 따라 물리적 클록 주파수를 실제로 설정하는 것을 책임질 것이다.Next, at block 1110, the framework manager 440 may receive data for one or more drive functions associated with one or more resources of the node 601 being created. The drive function generally includes actions to be completed by one or more resources for a particular node 601. [ For example, in FIGS. 7A and 7B, the drive function for the resource (/ core / cpu) of the node 602 is determined by the amount of bus bandwidth and CPU clock frequency required to provide the requested amount of requested processing You can also request it. These requests will be made through the clients of resources at nodes 642 and node 622. [ The drive function for / clk / cpu at node 642 will be responsible for actually setting the physical clock frequency according to the request received by the drive function from the / core / cpu resource of node 602 in general.

블록 (1115) 에서, 프레임워크 관리자 (440) 는 노드 속성 데이터를 수신할 수도 있다. 노드 속성 데이터는 일반적으로 보안성 (이는 사용자 공간 애플리케이션들을 통해 노드가 액세스될 수 있는 것이다), 원격성 (이는 시스템에서의 다른 프로세서들로부터 노드가 액세스될 수 있는 것이다), 및 액세스가능성 (이는 자원이 다수의 동시적인 클라이어트들을 지원할 수 있는 것이다) 과 같은 노드 정책들을 규정하는 데이터를 포함한다. 프레임워크 관리자 (440) 는 또한 자원이 디폴트 프레임워크 거동, 예컨대, 요청 평가 또는 로그하기 정책을 무시하는 것을 허용하는 속성들을 규정할 수도 있다.At block 1115, the framework manager 440 may receive node attribute data. The node attribute data typically includes security (which is that the node can be accessed through user space applications), remoteness (which can be accessed from other processors in the system), and accessibility Which can support a large number of concurrent clients). The framework manager 440 may also define attributes that allow the resource to ignore the default framework behavior, e.g., request evaluation or logging policy.

후속하여, 블록 (1120) 에서, 프레임워크 관리자 (440) 는 생성되는 특정 노드 (601) 에 대한 맞춤형 사용자 데이터를 수신할 수도 있다. 사용자 데이터는 "C" 프로그래밍 언어에 대한 당업자에 의해 이해되는 바와 같은 void "star" 필드를 포함할 수도 있다. 사용자 데이터는 또한 "trust me" 필더로 당업자에게 알려져 있다. 예시적인 맞춤형 사용자 데이터는, 이로 제한되지는 않으나, 주파수 테이블들과 같은 테이블들, 레지스터 맵들 등을 포함할 수도 있다. 블록 (1120) 에서 수신된 사용자 데이터는 시스템 (500A) 에 의해 참조되지는 않으나, 맞춤이 프레임워크 관리자 (440) 에 의해 인지되지 않거나 완전히 지원되지 않는 경우 자원의 맞춤을 허용한다. 이러한 사용자 데이터 구조는 특정 또는 특수 용도들로 확장되도록 의도된 "C" 프로그래밍 언어에서 기본 클래스이다.Subsequently, at block 1120, the framework manager 440 may receive customized user data for the particular node 601 being created. The user data may include a void "star" field as understood by those skilled in the art for the "C" programming language. User data is also known to those skilled in the art as "trust me" field. Exemplary customized user data may include, but is not limited to, tables such as frequency tables, register maps, and the like. The user data received at block 1120 is not referenced by system 500A, but allows customization of resources if alignment is not recognized by framework administrator 440 or is not fully supported. This user data structure is a base class in the "C" programming language intended to be extended to specific or special uses.

당업자는 특정 클래스의 특수 용도들을 확장하기 위한 다른 종류의 데이터 구조들이 이러한 개시물의 범주 내에 있음을 인지한다. 예를 들어, "C++" (C-플러스-플러스) 의 프로그래밍 언어에서, 등가의 구조는 노드 (601) 내의 자원에 대한 확장 매커니즘이 될 키 워드 "공공" 을 포함할 수도 있다.Those skilled in the art will recognize that other types of data structures for extending special uses of a particular class are within the scope of this disclosure. For example, in a programming language of "C ++" (C-plus-plus), an equivalent structure may include the keyword "public" to be an extension mechanism for resources in node 601.

다음으로, 블록 (1125) 에서, 프레임워크 관리자 (440) 는 의존성 어레이 데이터를 수신할 수도 있다. 의존성 어레이 데이터는 생성되는 노드 (601) 가 의존하는 하나 이상의 자원들 (601) 의 고유하고 특수한 이름들을 포함할 수도 있다. 예를 들어, 도 6 의 제 1 노드 (602) 가 생성된 경우, 이러한 블록 (1125) 에서, 의존성 어레이 데이터는 제 1 노드 (602) 가 의존하는 제 2 노드 (622) 의 3 개의 자원들의 자원 이름들 및 제 3 노드 (642) 의 단일 자원 이름을 포함할 수도 있다.Next, at block 1125, framework manager 440 may receive dependent array data. The dependency array data may include unique and specific names of one or more resources 601 upon which the node 601 to be created depends. For example, if the first node 602 of FIG. 6 is created, then at this block 1125, the dependent array data may be stored in the memory of the second node 622 of the second node 622 on which the first node 602 depends, Names and a single resource name of the third node 642. [

후속하여, 블록 (1130) 에서, 프레임워크 관리자 (440) 는 자원 어레이 데이터를 수신할 수도 있다. 자원 어레이 데이터는 생성되는 현재 노드에 대한 파라미터들, 예컨대, 이러한 제 1 노드 (602) 가 생성된 경우 도 7b 및 도 7c 의 제 1 노드 (602) 와 관련된 파라미터들을 포함할 수도 있다. 자원 어레이 데이터는 다음의 데이터: 다른 자원들의 이름들; 유닛; 최대 값; 자원 속성들; 플러그-인 데이터; 및 블록 (1120) 의 맞춤형 사용자 데이터와 유사한 임의의 맞춤형 자원 데이터 중 하나 이상을 포함할 수도 있다. 플러그-인 데이터는 일반적으로 소프트웨어 라이브러리로부터 취출된 함수들을 식별하고, 보통 특정 노드 또는 복수의 생성되는 노드들에 의해 지원될 수도 있는 클라이언트 유형들을 열거한다. 플러그-인 데이터는 또한 클라이언트 생성 및 파괴의 맞춤을 허용한다. 블록 (1130) 후에, 프로세스는 도 7 의 블록 (1010) 으로 복귀한다.Subsequently, at block 1130, the framework manager 440 may receive the resource array data. The resource array data may include parameters for the current node being created, e.g., parameters associated with the first node 602 of FIGS. 7B and 7C when this first node 602 is created. Resource array data includes the following data: names of other resources; unit; Maximum value; Resource attributes; Plug-in data; And any customized resource data that is similar to the customized user data in block 1120. [ The plug-in data generally identifies the functions taken from the software library and typically lists the client types that may be supported by a particular node or a plurality of generated nodes. The plug-in data also allows customization of client creation and destruction. After block 1130, the process returns to block 1010 of FIG.

도 9 에서, 속성 데이터 블록 (1115), 맞춤형 사용자 데이터 블록 (1120), 및 의존성 어레이 데이터 블록 (1125) 은 이러한 특정 단계들이 선택적이고 임의의 주어진 노드 (601) 에 대해 요구되지 않음을 표시하기 위해 파선들로 도시되었다. 한편, 고유한 이름 블록 (1105), 구동 함수 블록 (1110), 및 자원 어레이 데이터 블록 (1130) 은 이러한 루틴 (1005) 의 단계들이 알반적으로 노드 (601) 를 생성하는데 중요함을 표시하기 위해 실선들로서 도시되었다.In Figure 9, attribute data block 1115, customized user data block 1120, and dependent array data block 1125 are used to indicate that these particular steps are optional and are not required for any given node 601 Dashed lines. On the other hand, a unique name block 1105, a driving function block 1110, and a resource array data block 1130 are used to indicate that the steps of this routine 1005 are important for generating the node 601 It is shown as solid lines.

도 10 은 PCD (100) 에 대한 소프트웨어 아키텍처에서 노드를 생성하는 도 7 의 하위-방법 또는 루틴 (1025) 을 도시하는 플로차트이다. 루틴 블록 (1205) 은 일 예시적인 실시형태에 따라 노드 (601) 를 인스턴스화하거나 생성하기 위한 하위-방법 또는 루틴 (1025) 에서의 제 1 루틴이다. 루틴 블록 (1205) 에서, 인스턴스화되는 노드 (601) 와 연관되는 하나 이상의 클라이언트들 (648) 이 이 단계에서 생성된다. 루틴 블록 (1205) 에 대한 추가적인 세부사항들은 도 11 과 연계하여 하기에서 보다 상세히 설명될 것이다.10 is a flow chart showing the sub-method or routine 1025 of Fig. 7 for generating nodes in a software architecture for PCD 100. Fig. Routine block 1205 is a first routine in sub-method or routine 1025 for instantiating or generating node 601 in accordance with one exemplary embodiment. At the routine block 1205, one or more clients 648 associated with the node 601 being instantiated are created at this stage. Additional details on the routine block 1205 will be described in more detail below in conjunction with FIG.

블록 (1210) 에서, 프레임워크 관리자는 블록 (705) 의 노드 구조 데이터에 대응하는 하나 이상의 자원들을 생성하거나 인스턴스화할 수도 있다. 다음으로, 블록 (1215) 에서, 프레임워크 관리자 (440) 는 루틴 블록 (1005) 의 루틴 블록 (1110) 에서 수신된 구동 함수들을 활성화시킬 수도 있다. 일 예시적인 양상에 따르면, 구동 함수들은 루틴 블록 (1005) 의 자원 어레이 데이터 블록 (1130) 에서 수신된 최대 값들을 이용하여 활성화될 수도 있다. 다른, 바람직한, 예시적인 양상에 따르면, 각각의 구동 함수는 루틴 (1005) 으로부터 노드 구조 데이터와 함께 전달되는 선택적, 초기 값으로 활성화될 수도 있다. 초기 데이터가 제공되지 않는 경우, 구동 함수는 0 - 최소 값 - 으로 초기화된다. 구동 함수는 또한 보통 구동 함수가 초기화되는 것으로 알려진 방식으로 활성화된다. 이는 자원이 초기화에 특정적이나, 정규 또는 루틴 동작 동안에는 수행될 필요가 없는 임의의 동작들을 수행하는 것을 가능하게 한다. 프로세스는 그 다음에 도 7 의 단계 (1030) 로 복귀한다.At block 1210, the framework manager may create or instantiate one or more resources corresponding to the node structure data of block 705. [ Next, at block 1215, the framework manager 440 may activate the drive functions received at the routine block 1110 of the routine block 1005. According to one exemplary aspect, the driving functions may be activated using the maximum values received in the resource array data block 1130 of the routine block 1005. [ According to another, preferred, exemplary aspect, each drive function may be activated with an optional, initial value that is passed along with the node structure data from the routine 1005. If no initial data is provided, the drive function is initialized to a zero-minimum value -. The drive function is also activated in a manner that is normally known in which the drive function is initialized. This enables the resource to perform certain operations that are specific to initialization, but that do not need to be performed during regular or routine operations. The process then returns to step 1030 of FIG.

도 11 은 PCD (100) 의 소프트웨어 아키텍처에서 클라이언트 (648) 를 생성하거나 인스턴스화하는 도 10 의 하위-방법 또는 루틴 (1025) 을 도시하는 플로차트이다. 블록 (1305) 은 하나 이상의 소스들 (601) 의 클라이언트 (648) 가 생성되는 루틴 블록 (1205) 의 제 1 단계이다. 블록 (1205) 에서, 프레임워크 관리자 (440) 는 생성되는 클라이언트 (648) 에 할당된 이름을 수신한다. 자원 이름들과 유사하게, 클라이언트 (648) 에 대한 이름은 임의의 유형의 영숫자 및/또는 심볼들을 포함할 수도 있다.FIG. 11 is a flowchart showing the sub-method or routine 1025 of FIG. 10 that creates or instantiates a client 648 in the software architecture of the PCD 100. FIG. Block 1305 is the first step in the routine block 1205 in which the client 648 of one or more of the sources 601 is created. At block 1205, the framework manager 440 receives the name assigned to the client 648 being created. Similar to resource names, the name for the client 648 may include any type of alphanumeric and / or symbols.

다음으로, 블록 (1310) 에서, 이러한 생성되는 클라이언트 (648) 에 대한 임의의 특정 맞춤들이 있는 경우 프레임워크 관리자 (440) 에 의해 맞춤형 사용자 데이터가 수신될 수도 있다. 블록 (1310) 은 그 단계가 선택적임을 표시하기 위해 파선들로 도시되었다. 블록 (1310) 의 맞춤형 사용자 데이터는 노드들 (601) 에 대한 자원들의 생성과 연계하여 위에서 논의된 맞춤형 사용자 데이터와 유사하다.Next, at block 1310, customized user data may be received by framework manager 440 if there are any specific customizations to these generated clients 648. [ Block 1310 is shown with dashed lines to indicate that the step is optional. The customized user data in block 1310 is similar to the customized user data discussed above in connection with the generation of resources for nodes 601. [

블록 (1315) 에서, 프레임워크 관리자 (440) 는 생성되는 특정 클라이언트에 할당된 클라이언트 유형 카테고리를 수신한다. 이 글에서의 클라이언트 유형 카테고리는 4 개의 유형들: (a) 요구된, (b) 임펄스, (c) 벡터, 및 (d) 등시성 중 하나를 포함할 수도 있다. 클라이언트 유형 카테고리 리스트는 시스템 (101) 에 의해 관리되는 자원들에 의존하여, 그리고 노드들 (601) 의 자원들에 의지하는 애플리케이션 프로그램들에 의존하여 확대될 수도 있다.At block 1315, framework manager 440 receives the client type category assigned to the particular client being created. The client type category in this article may include one of four types: (a) required, (b) impulse, (c) vector, and (d) isochron. The client type category list may be extended depending on the resources managed by the system 101 and depending on the application programs that rely on the resources of the nodes 601. [

요구되는 카테고리는 일반적으로 요구되는 클라이언트 (648) 에서 특정 자원 (601) 으로 전달되는 스칼라 값의 프로세싱과 대응한다. 예를 들어, 요구되는 요청은 소정의 개수의 MIP (millions of instructions per second) 들을 포함할 수도 있다. 한편, 임펄스 카테고리는 일반적으로 임의의 시작 시간 또는 중지 시간의 지정 없이 소정의 시간 기간 내에 일부 활동들을 완료하기 위한 요청의 프로세싱과 대응한다.The requested category generally corresponds to the processing of the scalar value passed to the specific resource 601 in the required client 648. For example, the requested request may include a predetermined number of millions of instructions per second (MIP). On the other hand, the impulse category generally corresponds to the processing of a request to complete some activities within a predetermined time period without specifying any start time or stop time.

등시성 카테고리는 일반적으로 통상적으로 재발하고 잘-규정된 시작 시간 및 잘-규정된 종료 시간을 갖는 액션에 대한 요청과 대응한다. 벡터 카테고리는 일반적으로 보통 직렬로 또는 병렬로 요구되는 다수의 액션들의 일부인 데이터의 어레이와 대응한다.An isochronous category generally corresponds to a request for an action that typically recurs and has a well-defined start time and a well-defined end time. The vector category generally corresponds to an array of data that is part of a number of actions that are usually required in series or in parallel.

후속하여, 블록 (1320) 에서, 프레임워크 관리자 (440) 는 클라이언트 (648) 가 동기식으로 또는 비동기식으로 지정되었는지 여부를 표시하는 데이터를 수신한다. 동기식 클라이언트 (648) 는 자원 (601) 이 동기식 클라이언트 (648) 로부터의 요청된 태스크를 완료하는 것을 끝냈다는 표시 및 데이터를 자원 (601) 에 반환할 때까지 프레임워크 관리자 (440) 가 노드 (601) 의 자원을 잠글 것을 통상적으로 요구하는 것이다.Subsequently, at block 1320, the framework manager 440 receives data indicating whether the client 648 has been designated synchronously or asynchronously. The synchronous client 648 may request that the framework manager 440 send an indication to the resource 601 that the resource 601 has finished completing the requested task from the synchronous client 648, Lt; / RTI > of the resource).

한편, 비동기식 클라이언트 (648) 는 프레임워크 관리자 (440) 에 의해 액세스는 되는 하나 이상의 스레드들에 의해 병렬로 처리될 수도 있다. 프레임워크 (440) 는 스레드에 대한 콜백을 생성할 수도 있고, 콜백이 각각의 스레드에 의해 실행된 경우 값을 반환할 수도 있다. 비동기식 클라이언트 (648) 는 동기식 클라이언트 (648) 의 태스크가 실행되는 경우에 동기식 클라이언트 (648) 처럼 자원을 잠그지 않는다는 것을 당업자는 인지하다.On the other hand, the asynchronous client 648 may be processed in parallel by one or more threads that are accessed by the framework manager 440. Framework 440 may generate a callback for the thread and may return a value if the callback is executed by each thread. Those skilled in the art will appreciate that asynchronous client 648 does not lock resources, such as synchronous client 648, when the task of synchronous client 648 is executed.

블록 (1320) 후에, 결정 블록 (1325) 에서, 클라이언트 (645) 에 의해 식별된 자원이 이용가능한지를 프레임워크 관리자 (440) 가 결정한다. 결정 블록 (1325) 에 대한 조회가 부정적인 경우, "아니오" 브랜치에 뒤이어 블록 (1330) 이 오며, 여기서 클라이언트 (648) 가 이 시점에서 생성될 수 없음을 표시하는 널 (null) 값 또는 메시지가 사용자에게 반환된다.After block 1320, at decision block 1325, framework manager 440 determines if the resource identified by client 645 is available. If the query to decision block 1325 is negative, then a "no" branch is followed by block 1330, where a null value indicating that client 648 can not be created at this time, .

결정 블록 (1325) 에 대한 조회가 긍정적인 경우, "예" 브랜치에 뒤이어 결정 블록 (1335) 이 오며, 여기서 클라이언트 (648) 에 의해 식별되는 각각의 자원이 블록 (1310) 에서 제공된 클라이언트 유형을 지원하는지를 프레임워크 관리자 (440) 가 결정한다. 결정 블록 (1335) 에 대한 조회가 부정적인 경우, "아니오" 브랜치에 뒤이어 블록 (1330) 이 오며, 여기서 클라이언트 (648) 가 이 시점에서 생성될 수 없음을 표시하는 널 값 또는 메시지가 반환된다.If the lookup to decision block 1325 is affirmative, a decision block 1335 follows the "yes" branch, where each resource identified by client 648 supports the client type provided at block 1310 Is determined by the framework manager 440. If the query to decision block 1335 is negative, then a "no" branch is followed by block 1330 where a null value or message indicating that client 648 can not be created at this point is returned.

결정 블록 (1335) 에 대한 조회가 긍정적인 경우, "예" 브랜치에 뒤이어 블록 (1340) 이 오며, 여기서 프레임워크 관리자 (440) 가 메모리에 클라이언트 (648) 를 생성하거나 인스턴스화한다. 다음으로, 블록 (1345) 에서, 선택적 인수들과 같은 임의의 맞춤형 사용자 데이터가 블록 (1310) 에서 수신되는 경우, 이러한 선택적 인수들은 특정 노드 (601) 에 대한 그것들 각각의 자원들과 맵핑될 수도 있다. 다음으로, 블록 (1350) 에서, 새롭게 생성된 클라이언트 (645) 가 상술된 바와 같이 유휴 상태에 있는 또는 요청된 상태로 새롭게 생성된 클라이언트의 대응하는 하나 이상의 자원들에 커플링된다. 프로세스는 그 다음에 도 10 의 블록 (1210) 으로 복귀한다.If the lookup to decision block 1335 is affirmative, block 1340 follows the "Yes" branch, where framework manager 440 creates or instantiates client 648 in memory. Next, at block 1345, if any customized user data, such as optional arguments, are received at block 1310, these optional arguments may be mapped to their respective resources for a particular node 601 . Next, at block 1350, the newly created client 645 is coupled to the corresponding one or more resources of the newly created client in the idle state or in the requested state, as described above. The process then returns to block 1210 of FIG.

도 12 는 PCD (100) 에 대한 소프트웨어 아키텍처에서 자원 (601) 에 대한 클라이언트 요청 (675) 을 생성하는 방법 (1400) 을 도시하는 플로 차트이다. 방법 (1400) 은 일반적으로 도 7 내지 도 11 과 연계하여 상술된 바와 같이 클라이언트 및 노드 생성 (인스턴스화) 후에 실행된다.12 is a flow chart illustrating a method 1400 of generating a client request 675 for a resource 601 in a software architecture for the PCD 100. [ The method 1400 is generally executed after client and node creation (instantiation) as described above in connection with Figures 7-11.

블록 (1405) 은 자원 (601) 에 대한 클라이언트 요청 (675) 을 생성하는 방법 (1400) 에서의 제 1 단계이다. 이 방법 (1400) 은 다음의 3 개의 유형의 클라이언트 요청들 (675): (a) 요구된, (b) 임펄스, 및 (c) 벡터가 프레임워크 관리자 (440) 에 의해 처리되는 방법을 설명할 것이다. 상술된 요청들 (675) 의 이름들이 제시하는 바와 같이, 클라이언트 요청들 (675) 은 일반적으로 위에서 생성되고 설명된 클라이언트 유형들과 대응한다.Block 1405 is the first step in method 1400 of generating a client request 675 for a resource 601. The method 1400 describes three types of client requests 675: (a) required, (b) impulse, and (c) how the vector is processed by framework manager 440 will be. As suggested by the names of the requests 675 described above, the client requests 675 generally correspond to the client types created and described above.

블록 (1405) 에서, 프레임워크 관리자 (440) 는 상술된 3 개: (a) 요구된, (b) 임펄스, 및 (c) 벡터 중 하나와 같은 특정 클라이언트 요청 (675) 과 연관된 데이터를 수신할 수도 있다. 요구되는 요청과 연관된 데이터는 일반적으로 요구되는 클라이언트 (648) 에서 특정 자원 (601) 으로 전달되는 스칼라 값을 포함한다. 예를 들어, 요구되는 요청은 소정의 개수의 MIP (millions of instructions per second) 들을 포함할 수도 있다. 임펄스 요청은 시작 시간 또는 중지 시간의 임의의 지정 없이 소정의 시간 기간 내에 일부 활동을 완료하기 위한 요청을 포함한다. 벡터 요청에 대한 데이터는 일반적으로 직렬로 또는 병렬로 완료되도록 요구되는 다수의 액션들의 어레이를 포함한다. 벡터 요청은 임의의 길이의 값들을 포함할 수도 있다. 벡터 요청은 보통 사이즈 값 및 값들의 어레이를 갖는다. 노드 (601) 의 각각의 자원은 벡터 요청을 지원하기 위해 포인터 필더를 갖도록 확장될 수도 있다. "C" 프로그래밍 언어에서, 포인터 필드는 당업자에 의해 이해되는 바와 같이 통합 함수에 의해 지원된다.At block 1405, framework manager 440 receives data associated with a particular client request 675, such as one of the three: (a) requested, (b) impulse, and (c) It is possible. The data associated with the requested request generally includes a scalar value that is passed from the requested client 648 to the particular resource 601. [ For example, the requested request may include a predetermined number of millions of instructions per second (MIP). The impulse request includes a request to complete some activity within a predetermined time period without any designation of a start time or a stop time. The data for the vector request typically includes an array of a number of actions that are required to be completed serially or in parallel. The vector request may contain values of any length. A vector request usually has an array of size values and values. Each resource of node 601 may be extended to have a pointer filter to support vector requests. In the "C" programming language, the pointer field is supported by an integrate function as understood by those skilled in the art.

다음으로, 블록 (1410) 에서, 프레임워크 관리자 (440) 는 도 11 과 연계하여 상술된 방법에 의해 생성된 클라이언트 (648) 를 통해 요청을 발행한다. 후속하여, 블록 (1415) 에서, 요청이 요구되는 유형 또는 벡터 유형인 경우 프레임 관리자 (440) 는 클라이언트를 통해 전달되는 요청 데이터를 이중 버퍼링한다. 요청이 임펄스 유형인 경우, 블록 (1415) 은 프레임워크 관리자 (440) 에 의해 스킵된다.Next, at block 1410, framework manager 440 issues a request through client 648 generated by the method described above in conjunction with FIG. Subsequently, at block 1415, the frame manager 440 double-buffers the request data delivered via the client if the request is of the type or vector type required. If the request is an impulse type, block 1415 is skipped by framework manager 440.

요구된 요청들에 대해, 이러한 블록 (1415) 에서, 이전 요청으로부터의 값들이 메모리에 유지되어 요청된 값들의 현재 세트에서의 이전에 요청된 값들 사이에 임의의 차이가 있는지를 프레임 관리자 (440) 가 결정할 수도 있다. 벡터 요청들에 있어서, 이전 요청들은 보통 메모리에 유지되지 않으나, 노드 (601) 의 자원이 특정 구현에 대한 요구에 따라 이전 요청들을 유지할 수도 있다. 따라서, 블록 (1415) 은 요청들의 벡터 유형들에 대해 선택적이다.For the requested requests, at this block 1415, the values from the previous request are kept in memory to indicate to the frame manager 440 whether there is any difference between the previously requested values in the current set of requested values. May decide. For vector requests, the previous requests are not usually held in memory, but the resources of node 601 may maintain previous requests according to the requirements for a particular implementation. Thus, block 1415 is optional for the vector types of requests.

블록 (1420) 에서, 프레임워크 관리자 (440) 는 요청된 값들의 현재 세트에서의 요청된 값들의 이전 세트 사이의 델타 및 차이를 계산한다. 결정 블록 (1425) 에서, 요청된 값들의 현재 세트가 요청된 값들의 이전 세트와 동일한지를 프레임워크 관리자가 결정한다. 다시 말해, 요청된 값들의 현재 세트와 요청된 값들의 이전 세트 사이에 차이가 존재하는지를 프레임워크 관리자 (440) 가 결정한다. 요청된 값들의 현재 세트와 이전 세트 사이에 차이가 없는 경우, "예" 브랜치에 뒤이어 (이는 블록들 (1430) 내지 블록 (1470) 을 스킵한다) 블록 (1475) 이 오며, 여기서 프로세스는 종료한다.At block 1420, the framework manager 440 calculates the delta and the difference between the previous set of requested values in the current set of requested values. At decision block 1425, the framework manager determines whether the current set of requested values is the same as the previous set of requested values. In other words, the framework manager 440 determines if there is a difference between the current set of requested values and the previous set of requested values. If there is no difference between the current set of requested values and the previous set, block 1475 follows (which skips blocks 1430 through 1470) followed by the "yes" branch, where the process ends .

결정 블록 (1425) 에 대한 조회가 부정적인 경우, (이는 요청된 값들의 세트가 미리-이전에 요청된 값들의 세트와 비교해 상이함을 의미한다), "아니오" 브랜치에 뒤이어 결정 블록 (1430) 이 온다.If the lookup to decision block 1425 is negative (which means that the set of requested values is different compared to a pre-set of previously requested values), a decision block 1430 follows the "no" branch come.

결정 블록 (1430) 에서, 현재 요청이 비동기식 요청인지를 프레임워크 관리자 (440) 가 결정한다. 결정 블록 (1430) 에 대한 조회가 부정적인 경우, "아니오" 브랜치에 뒤이어 블록 (1440) 이 오며, 여기서 클라이언트 요청 (675) 에 대응하는 자원 (601) 이 프레임워크 관리자 (440) 에 의해 잠긴다. 결정 블록 (1430) 에 대한 조회가 긍정적인 경우 (이는 현재 요청이 비동기식 요청 유형임을 의미한다), "예" 브랜치에 뒤이어 블록 (1435) 이 오며, 여기서 도 1 의 것과 같은 다중-코어 시스템이 프레임워크 관리자 (440) 에 의해 현재 관리되는 경우, 요청은 다른 스레드 상으로 푸쉬될 수도 있고 다른 코어에 의해 실행될 수도 있다. PCD (100) 가 단일 코어 중앙 프로세싱 시스템인 경우 이러한 단계가 선택적일 수도 있음을 표시하기 위해 블록 (1435) 은 파선들로 도시되었다.At decision block 1430, framework manager 440 determines if the current request is an asynchronous request. If the query to decision block 1430 is negative, then a "no" branch is followed by block 1440 where the resource 601 corresponding to the client request 675 is locked by the framework manager 440. If the lookup for decision block 1430 is positive (which means that the current request is an asynchronous request type), block 1435 follows the "Yes" branch, where the multi-core system, If currently managed by the work manager 440, the request may be pushed onto another thread or executed by another core. Block 1435 is shown with dashed lines to indicate that this step may be optional if PCD 100 is a single core central processing system.

후속하여, 블록 (1440) 에서, 요청 (675) 에 대응하는 자원들 (601) 이 프레임워크 관리자 (440) 에 의해 잠긴다. 다음으로, 블록 (1445) 에서, 자원 (601) 은 일반적으로 도 9 의 블록 (1130) 에서 수신된 자원 어레이 데이터의 플러그-인 데이터에 대응하는 업데이트 함수를 실행한다. 업데이트 함수는 일반적으로 새로운 클라이언트 요청을 고려하여 새로운 자원 상태를 책임지는 함수를 포함한다. 업데이트 함수는 그것의 이전 상태를 클라이언트 요청에서의 요청된 상태와 비교한다. 요청된 상태가 이전 상태보다 큰 경우, 업데이트 함수는 클라이언트 요청을 수행할 것이다. 그러나, 요청된 상태가 현재 상태 이하인 경우 그리고 자원이 현재 상태에서 동작하는 경우, 오래된 상태가 요청된 상태를 달성하거나 만족시키기 때문에 클라이언트 요청은 효율을 증가시키기 위해 수행되지 않을 것이다. 업데이트 함수는 클라이언트로부터 새로운 요청을 취하고 그것을 모든 다른 활성 요청들과 응집하여 (aggregate) 자원에 대한 새로운 상태를 결정한다.Subsequently, at block 1440, the resources 601 corresponding to the request 675 are locked by the framework manager 440. Next, at block 1445, the resource 601 typically executes an update function corresponding to the plug-in data of the resource array data received at block 1130 of FIG. Update functions typically include functions that take into account new client requests and are responsible for new resource states. The update function compares its previous state with the requested state in the client request. If the requested state is greater than the previous state, the update function will perform the client request. However, if the requested state is less than or equal to the current state, and the resource is operating in the current state, the client request will not be performed to increase efficiency since the old state achieves or satisfies the requested state. The update function takes a new request from the client and aggregates it with all other active requests to determine a new state for the resource.

실시예로서, 다수의 클라이언트들이 버스 클록 주파수를 요청할 수도 있다. 버스 클록에 대한 업데이트 함수는 보통 모든 클라이언트 요청들의 최대치를 취하여 그것을 버스 클록에 대한 새로운 원하는 상태로서 이용할 것이다. 다수의 자원들에 으해 이용될 일부 업데이트 함수들이 있을지라도, 모든 자원들이 동일한 업데이트 함수를 이용할 것은 아니다. 일부 공통 업데이트 함수들은 클라이언트 요청들의 최대치를 취하며, 클라이언트 요청들의 최소치를 취하고, 클라이언트 요청을 합한다. 또는, 자원들은 그것들의 자원이 일부 고유한 방식으로 요청들을 응집할 필요가 있을 경우 자원들 자체의 맞춤 업데이트 함수를 규정할 수도 있다.As an embodiment, multiple clients may request a bus clock frequency. The update function for the bus clock will usually take the maximum of all client requests and use it as the new desired state for the bus clock. Although there are some update functions that will be used for multiple resources, not all resources will use the same update function. Some common update functions take the maximum of client requests, take the minimum of client requests, and sum the client requests. Alternatively, resources may define a custom update function of the resources themselves if their resources need to aggregate requests in some unique way.

다음으로, 블록 (1450) 에서, 프레임워크 관리자 (440) 가 클라이언트 (648) 에 대응하는 자원에 데이터를 전달하여 자원이 노드 (601) 의 자원에 특정한 구동 함수를 실행할 수도 있다. 구동 함수는 업데이트 함수에 의해 컴퓨팅된 자원 상태를 적용한다. 이는 하드웨어 설정들 업데이트, 의존적인 자원들에 대한 요청들 발행, 레거시 기능들의 호출, 또는 위의 것들의 일부의 조합을 수반할 수도 있다.Next, at block 1450, the framework manager 440 may pass data to the resource corresponding to the client 648 so that the resource may execute a drive function specific to the resource of the node 601. [ The drive function applies the computed resource state by the update function. This may involve updating hardware configurations, issuing requests for dependent resources, calling legacy functions, or a combination of the above.

이전의 실시예에서는, 업데이트 함수가 요청된 버스 클록 주파수를 컴퓨팅했다. 구동 함수는 요청된 주파수를 수신할 수도 있고, 클록 주파수 제어 HW 를 업데이트하여 그 주파수로 가동할 수도 있다. 때로는 구동 함수가 업데이트 함수가 완료한 정확한 요청된 상태를 충족시키는 것이 가능하지 않을 수도 있음에 유의한다. 이러한 경우에, 구동 함수는 요청을 가장 잘 충족시키는 주파수를 택할 수도 있다. 예를 들어, 버스 클록 HW 는 오직 128 MHz 와 160 MHz 에서만 가동할 수도 있으나, 요청된 상태가 150 MHz 일 수도 있다. 이러한 경우에, 구동 함수는 요청된 상태를 초과하는 160 MHz 에서 가동해야 할 것이다.In the previous embodiment, the update function computed the requested bus clock frequency. The drive function may receive the requested frequency and update the clock frequency control HW to operate at that frequency. It is noted that sometimes the drive function may not be able to satisfy the exact requested state that the update function has completed. In this case, the driving function may choose a frequency that best meets the request. For example, the bus clock HW may only operate at 128 MHz and 160 MHz, but the requested state may be 150 MHz. In this case, the drive function will have to run at 160 MHz, which exceeds the requested state.

다음으로, 블록 (1455) 에서, 프레임워크 (440) 가 블록 (1450) 에서 구동 함수를 실행한 자원으로부터 상태 제어를 수신한다. 후속하여, 블록 (1460) 에서, 자원에 대해 규정되는 경우, 이벤트 (690) 에 대응하는 클라이언트 (648) 에게로 다시 데이터가 전달되도록 이벤트들 (690) 이 트리거링될 수도 있다. 이벤트들은 다른 스레드에서 프로세싱될 수도 있다. 이는 자원들을 잠그는데 소비되는 시간의 양을 최소화할 수도 있고, 도 1 에서 도시된 바와 같은 다중-코어 시스템에서의 병렬 동작을 허용한다. 본 방법 (1400) 에서 설명된 바와 같은 요청이 자원에 대해 규정될 수도 있는 방식과 유사한 방식으로 하나 이상의 이벤트들 (690) 이 자원에 대해 규정될 수도 있다. 다시 말해, 이벤트 생성 프로세스는 클라이언트 생성 프로세스에 대체로 병렬이다. 이벤트들과 다른 한 가지는 오직 소정의 임계치들을 넘는 경우에만 트리거링되는 이벤트들을 규정하는 것이 가능하다는 것이다.Next, at block 1455, the framework 440 receives state control from the resource that executed the drive function at block 1450. [ Subsequently, at block 1460, events 690 may be triggered such that data is passed back to the client 648 corresponding to the event 690 if defined for the resource. Events may be processed in other threads. This may minimize the amount of time spent in locking resources and allow for parallel operation in a multi-core system as shown in FIG. One or more events 690 may be defined for the resource in a manner similar to the manner in which a request such as that described in method 1400 may be defined for the resource. In other words, the event generation process is largely parallel to the client creation process. One thing that is different from events is that it is possible to define events that are triggered only if they exceed certain thresholds.

오직 임계치들에 기초하여서만 트리거링되는 이벤트들의 이러한 규정은 자원이 필요 이상으로 신청되는 경우 (자원이 지원할 수 있는 것보다 더 많은 동시 사용자들을 갖는다) 의 통지를 허용하며, 통지는 시스템 과부하 조건, 또는 다른 것들이 셧 오프되는 것을 허용할 수도 있는 자원 부족/오프, 시스템이 필요이상으로 신청되는 경우에 디스에이블되는 재저장 기능성 등을 표시한다. 임계치들에 따라 이벤트 등록이 행해질 수도 있기 때문에, 오직 뭔가 정말로 필요한 경우에만 일어나도록 이벤트 통지에 대해 시스템이 해야할 작업의 양을 감소시킨다. 모든 상태 변화에 대한 이벤트를 등록하는 것이 또한 가능하다.This provision of events that are triggered only on the basis of thresholds allows notification of a resource being requested more than necessary (having more simultaneous users than the resource can support), and the notification can be a system overload condition, A resource shortage / off that may allow others to shut off, and a re-store functionality that is disabled if the system is requested more than necessary. Because the event registration may be done according to the thresholds, it only reduces the amount of work the system has to do for the event notification to happen only when something really needs to happen. It is also possible to register events for all state changes.

다음으로, 선택적 블록 (1465) 에서, 프로세싱되는 요청이 벡터 요청인 경우, 이러한 선택적 블록 (1465) 은 보통 수행된다. 선택적 블록 (1465) 은 일반적으로 벡터 포인터가 사용자가 벡터에 전달한 동일한 데이터에 여전히 포지셔닝되는지 여부를 사정하기 위한 검사 또는 결정을 포함한다. 이러한 선택적 블록 (1465) 에 대한 조회가 긍정적인 경우 (이는 포인터가 사용자에 의해 벡터로 전달된 동일한 데이터를 여전히 포인팅하고 있음을 의미한다), 포인터가 삭제되어 오래된 데이터에 대한 참조들이 유지되지 않는다. 이러한 선택적 블록 (1465) 은 일반적으로, 임펄스 요청 및 요구된 요청과 비교하여, 벡터 요청이 프로세싱되는 경우, 상술된 이중 버퍼링 블록 (1415) 을 책임지도록 수행된다.Next, in optional block 1465, if the request being processed is a vector request, then this optional block 1465 is usually performed. Selective block 1465 typically includes a check or decision to assess whether the vector pointer is still positioned to the same data that the user has delivered to the vector. If the lookup for this optional block 1465 is positive (which means that the pointer is still pointing to the same data passed in as a vector by the user), the pointer is erased and references to the old data are not maintained. This optional block 1465 is generally performed to account for the double buffering block 1415 described above when a vector request is processed, as compared to an impulse request and a requested request.

후속하여, 블록 (1470) 에서, 다른 클라이언트 요청들 (648) 이 현재, 그러나 특정 노드 (601) 의 지금 해제되어진 요청된 자원에 의해 처리될 수도 있도록 프레임워크 (440) 가 요청된 자원을 잠금해제한다. 프로세스는 그 다음에 다음 클라이언트 요청을 수신하기 위해 제 1 블록 (1405) 으로 돌아간다.Subsequently, at block 1470, the framework 440 unlocks the requested resource so that other client requests 648 may now be processed by the now-released requested resource of the particular node 601, do. The process then returns to the first block 1405 to receive the next client request.

상술된 방법들 및 데이터 구조들은 근본적으로 그것들이 단일-프로세서 PCD (100) 에 적용가능한 것과 같이 다중-프로세서 PCD (100) 에도 적용가능하다. 그러나, 원격 프레임워크 (300) (도 3) 는 다중-프로세서 실시형태에서의 동작을 향상시킬 수도 있는 추가적인 특징들을 제공할 수도 있다. 예를 들어, 원격 프레임워크 (300) 는 유리하게는 애플리케이션 프로그래머 또는 유사한 사람이 알기 쉬운 프로세서간 통신의 세부사항들을 제공할 수도 있다. 따라서, 애플리케이션 프로그램은, 예를 들어, 자원을 제어하는 프로세서 도메인의 임의의 식별을 클라이언트 규정에 포함시켜야할 필요 없이 목표 자원에 대한 요청을 발행하는 클라이언트를 규정할 수도 있다. 오히려, 원격 프레임워크 (300) 는 어느 프로세서가 클라이언트를 제어하는지 그리고 어느 프로세서가 목표 자원을 제어하는지에 상관없이 요청이 목표 자원에 도달할 것을 보장한다. 또한, 원격 프레임워크 (300) 는 프로세서간 통신을 관리하여, 예를 들어, 애플리케이션 프로그램이 프로세서들 사이의 통신 경로들 (예를 들어, 버스들) 의 프로토콜 또는 다른 양상들과 관련된 임의의 명령들을 포함할 필요가 없다. 또한, 상이한 프로세서간 통신 경로들이 상이한 프로토콜들을 이용할 수도 있음에 따라, 원격 프레임워크 (300) 는 자원 규정이 자원의 다른 양상들과 함께 프로토콜을 명시하는 것을 허용한다. 분산된 자원 관리와 관련된 이러한 특징들 및 다른 특징들은 도 13 내지 도 23 에 대하여 하기에서 설명된다.The above-described methods and data structures are fundamentally applicable to multi-processor PCD 100 as they are applicable to single-processor PCD 100. [ However, the remote framework 300 (FIG. 3) may provide additional features that may improve operation in a multi-processor embodiment. For example, the remote framework 300 may advantageously provide details of interprocessor communication that is easy for an application programmer or similar person to understand. Thus, an application program may define a client issuing a request for a target resource without having to include any identification of the processor domain controlling the resource, for example, in the client specification. Rather, the remote framework 300 ensures that the request reaches the target resource, regardless of which processor controls the client and which processor controls the target resource. The remote framework 300 also manages inter-processor communications, for example, to allow an application program to execute arbitrary instructions associated with protocols or other aspects of communication paths (e.g., busses) between processors You do not need to include it. Also, as different interprocessor communication paths may use different protocols, the remote framework 300 allows the resource provision to specify the protocol with other aspects of the resource. These and other features associated with distributed resource management are described below with respect to Figures 13-23.

도 13 은 제 1 프로세서 (미도시) 에 의해 제어되는 제 1 자원 (1302) 이 제 2 프로세서 (미도시) 에 의해 제어되는 제 2 자원 (1304) 에 대응하는 분산된 또는 원격 자원의 역할을 하는 실시예 또는 경우를 도시한다. 용어 "분산된 자원" 또는 "원격 자원" 은 다른 프로세서 상의 "네이티브" 자원에 대응하는 하나의 프로세서 상의 자원을 지칭하기 위해 본 개시물에서 이용된다. 본 실시예에서의 제 2 자원 (1304) 은 제 2 프로세서에 대한 네이티브 자원의 역할을 한다. 분산된 자원은 대응하는 네이티브 자원에 액세스하기 위한 수단으로서 이용된다. 이러한 실시예에서, 용어 "자원" 은 용어 "노드" 와 상호교환가능하게 이용될 수도 있는데, 자원이 노드에 포함될 수도 있기 때문에 이와 같이 이해되어야 한다.Figure 13 illustrates that a first resource 1302 controlled by a first processor (not shown) acts as a distributed or remote resource corresponding to a second resource 1304 controlled by a second processor (not shown) An embodiment or a case. The term " distributed resource "or" remote resource "is used in this disclosure to refer to a resource on one processor corresponding to a" native "resource on another processor. The second resource 1304 in this embodiment serves as a native resource for the second processor. Distributed resources are used as a means to access corresponding native resources. In such an embodiment, the term "resource" may be used interchangeably with the term "node ", since such resources may be included in the node.

점선 (1301) 은 제 1 프로세서에 의해 제어되는 자원들 (라인 (1301) 의 좌측) 과 제 2 프로세서에 의해 제어되는 자원들 (라인 (1301) 의 우측) 사이의 분할을 도시한다. 제 1 자원 (1302) 은 제 1 프로세서에 의해 제어되는 2 개 이상의 자원들 중 하나의 자원이다. 하나의 이러한 자원은 제 1 자원 (1302) 이 의존하는 프로토콜 자원 (1306) 일 수도 있다. 마찬가지로, 제 2 자원 (1304) 은 제 2 프로세서에 의해 제어되는 2 개 이상의 자원들 중 하나의 자원이다. 일부 실시형태들에서, 오직 분산된 자원만이 프로토콜 자원에 의존하며, 네이티브 자원은 프로토콜 자원에 의존하지 않는다. 따라서, 이러한 실시형태들에서, 오직 제 1 (분산된) 자원 (1302) 만이 프로토콜 자원 (1306) 에 의존한다. 그러나, 다른 실시형태들에서, 임의의 자원이 프로토콜 자원에 의존할 수도 있다. 따라서, 대안적인 실시형태에서, 제 2 자원 (1304) 이 또한 프로토콜 자원 (미도시) 에 의존할 수 있다. 제 1 자원 및 제 2 자원 (1302 및 1306) 은 또한 일반적으로 자원들 또는 노드들에 대하여 상술된 것과 동일한 방식으로 추가적인 자원들에 의존할 수도 있는데, 이러한 추가적인 자원들은 명확함을 위해 도 13 에서 도시되지 않는다. 제 1 프로세서에 의해 제어되는 자원들은 제 1 자원 그래프 (즉, 방향성 비순환 그래프) 에 의해 규정되고, 제 2 프로세서에 의해 제어되는 자원들은 제 1 자원 그래프와 임의의 자원들을 공유하지 않는 제 2 의 그러한 자원 그래프에 의해 규정된다는 것에 유의한다.Dotted line 1301 illustrates the division between the resources controlled by the first processor (left of line 1301) and the resources controlled by the second processor (right of line 1301). The first resource 1302 is one of two or more resources controlled by the first processor. One such resource may be the protocol resource 1306 on which the first resource 1302 depends. Likewise, the second resource 1304 is one of two or more resources controlled by the second processor. In some embodiments, only distributed resources depend on protocol resources, and native resources do not depend on protocol resources. Thus, in these embodiments, only the first (distributed) resource 1302 depends on the protocol resources 1306. [ However, in other embodiments, any resource may depend on the protocol resources. Thus, in an alternative embodiment, the second resource 1304 may also depend on protocol resources (not shown). The first and second resources 1302 and 1306 may also generally rely on additional resources in the same manner as described above for resources or nodes, but these additional resources are not shown in FIG. 13 for clarity. Do not. Resources controlled by the first processor are defined by a first resource graph (i.e., directional acyclic graph), and resources controlled by the second processor are defined by a second such that they do not share any resources with the first resource graph. Note that it is defined by the resource graph.

그것들 각각의 프로세서들의 제어 하에, 제 1 자원 및 제 2 자원 (1302 및 1304) 은 통신 경로 (1303) 를 통해 정보를 통신하는 것이 가능하다. 통신 경로 (1303) 는 제 1 프로세서와 제 2 프로세서 사이의 물리적 매체, 및 그 매체를 통해 통신하는데 이용되는 전송 프로토콜들의 하나 이상의 계층들의 조합을 나타낸다. 이에 따라, 제 1 자원 (1302) 과 제 2 자원 (1304) 사이의 임의의 통신들은 프로토콜들을 준수해야 한다. 프로토콜 자원들 (1306 및 1308) 이 프로토콜을 규정하거나, 라이브리러 (미도시) 에서 프로토콜 규정을 가리킬 수도 있다. 원격 프레임워크 (300) 및 (메인) 프레임워크 (440) 는 서로 연계하여 동작하여 그것들 사이의 자원들 및 통신들을 관리한다. 하기에서 설명되는 바와 같이, 제 1 프로세서의 제어 하에, 클라이언트 (1312) 는 제 1 자원 (1302) 에 대한 하나 이상의 자원 요청들을 발행할 수도 있다. 제 1 자원 (1302) 은 대응하는 제 2 자원 (1304) 의 기능성을 이용하여 자원 요청에 서비스한다.Under the control of their respective processors, the first and second resources 1302 and 1304 are capable of communicating information via communication path 1303. Communication path 1303 represents a physical medium between the first and second processors, and a combination of one or more layers of transport protocols used to communicate through the medium. Accordingly, any communications between the first resource 1302 and the second resource 1304 must conform to the protocols. Protocol resources 1306 and 1308 may define a protocol, or may point to a protocol specification in a library (not shown). The remote framework 300 and (main) framework 440 operate in conjunction with one another to manage resources and communications between them. Under the control of the first processor, the client 1312 may issue one or more resource requests for the first resource 1302, as described below. The first resource 1302 services the resource request using the functionality of the corresponding second resource 1304.

도 14 는 도 13 의 제 1 자원 (1302) 과 같은 분산된 자원을 생성하거나 인스턴스화하는 방법 (1400) 을 도시하는 플로차트이다. 도 14 의 플로차트는, 도 7 내지 도 10 에서 도시된 방법과 같이, 자원들을 인스턴스화하는 방법들에 관하여 상술된 특징들에 더해 또는 상술된 특징들을 증대시키는 특징들을 도시하고자 한다. 이에 따라, 달리 표시될 수도 있는 경우를 제외하고, 도 7 내지 도 10 에서의 블록들 중 임의의 블록 또는 모든 블록들이 포함될 수도 있으나, 명확함을 위에 도 14 에 도시되지는 않는다.FIG. 14 is a flowchart illustrating a method 1400 of creating or instantiating distributed resources, such as the first resource 1302 of FIG. 13. The flowchart of FIG. 14 is intended to illustrate features that enhance the above-described features in addition to or in addition to those described above with respect to methods for instantiating resources, such as the method illustrated in FIGS. Accordingly, any or all of the blocks in Figs. 7 to 10 may be included, except where they may otherwise be displayed, but the clarity is not shown in Fig. 14 above.

블록 (1402) 에서 표시된 바와 같이, 프레임워크 관리자들 (300 및 440) 은 제 1 자원 (1302) 을 포함하는 것과 같은, 노드를 규정하는 노드 구조 데이터를 수신한다. 예시적인 실시형태에서, 의존성들은, 블록 (1406) 에 의해 표시된 바와 같이, 프로토콜 자원들이 임의의 시간에 인스턴스화될 수도 있다는 점을 제외하고는, 도 7 내지 도 10 에 대하여 상술된 바와 근본적으로 동일한 방식으로 처리된다. 프로토콜 자원에 의존하는 자원은 그것의 프로토콜 자원이 인스턴스화될 때까지 기다릴 필요가 없다. 도 7 내지 도 10 에 대하여 상술된 방식에서의 의존성들의 인스턴스화는 일반적으로 블록 (1408) 에 의해 도시된다.As indicated at block 1402, framework managers 300 and 440 receive node structure data that defines a node, such as including a first resource 1302. In an exemplary embodiment, the dependencies are determined in substantially the same manner as described above with respect to Figures 7 to 10, except that the protocol resources may be instantiated at any time, as indicated by block 1406. [ . A resource that depends on a protocol resource does not have to wait for its protocol resources to be instantiated. Instantiation of dependencies in the manner described above with respect to Figures 7-10 is generally illustrated by block 1408. [

인스턴스화가 일반적으로 도 7 내지 도 10 에 대하여 상술된 방법들을 따르지만, 분산된 자원은 분산된 자원에 대응하는 네이티브 자원이 인스턴스화될 때까지 인스턴스화될 수 없음이 유의되어야 한다. 따라서, 네이티브 자원의 인스턴스화는 의존하는 자원들의 인스턴스화가 네이티브 자원에 의존하는 자원의 인스턴스화를 지연시킬 수도 있는 것과 동일한 방식으로 분산된 자원의 인스턴스화를 지연시킬 수도 있다. 또한, 통신 경로 (1303) 를 통해 제 1 프로세서와 제 2 프로세서 그리고 프레임워크 관리자들 (300 및 440) 사이에서 통신되는 네이티브 자원의 인스턴스화의 상태와 관련된 메시지들은 일반적으로 명시된 프로토콜을 준수한다는 것에 유의한다. 예를 들어, 제 1 프로토콜 상의 프로토콜 자원 (1306) 이 인스턴스화된 후에, 원격 프레임워크 관리자 (300) 에 따라 동작하는 제 1 프로세서는 인코딩되거나 그렇지 않으면 프로토콜을 준수하는 통지에 대한 요청을 제 2 프로세서에 전송할 수도 있다. 제 2 자원 (1304) 이 인스턴스화된 경우, 원격 프레임워크 관리자 (300) 에 따라 동작하는 제 2 자원은 제 2 자원 (1304) 이 인스턴스화되었음을 표시하는 응답을 제 1 프로세서에 전송함으로써 통지에 대한 요청에 응답할 수도 있다. 원격 프레임워크 관리자 (300) 는 소프트웨어 아키텍처를 인스턴스화하는 프로세스의 일부분으로서 이러한 통신들 및 다른 것들을 관리할 수도 있다.It should be noted that although instantiation generally follows the methods described above with respect to Figures 7-10, distributed resources can not be instantiated until a native resource corresponding to the distributed resource is instantiated. Thus, instantiation of native resources may delay instantiation of distributed resources in the same way that instantiation of dependent resources may delay instantiation of resources dependent on native resources. It should also be noted that messages relating to the state of instantiation of native resources communicated between the first processor and the second processor and the framework managers 300 and 440 via communication path 1303 generally conform to the stated protocol . For example, after a protocol resource 1306 on a first protocol is instantiated, a first processor operating according to the remote framework manager 300 may send a request for a notification that is encoded or otherwise compliant to a second processor . If the second resource 1304 has been instantiated, the second resource operating in accordance with the remote framework manager 300 may send a request to the notification by sending a response to the first processor indicating that the second resource 1304 has been instantiated You can also respond. The remote framework manager 300 may manage these communications and others as part of the process of instantiating the software architecture.

제 1 프로세서 상의 프로토콜 자원 (1306) 은, 다른 함수들 중에서, 도 13 에 도시된 클라이언트 (1312) 와 같은 클라이언트를 생성하고, 실행의 스레드에 의해 이용될 수도 있는 클라이언트에 대한 처리를 반환하는 함수를 포함할 수도 있다. 실행의 스레드 (예를 들어, 애플리케이션 프로그램 또는 다른 소프트웨어 요소의 실행의 일부분) 는 이러한 클라이언트 (1312) 를 생성하는 함수를 불러올 수도 있다. 스레드는 자원 요청들을 발행하기 위해 클라이언트 (1312) 를 이용할 수도 있고, 그렇지 않으면 일반적으로 클라이언트들에 대하여 상술된 바와 동일한 방식으로 클라이언트 (1312) 를 이용할 수도 있다. 자원 요청은 프로토콜-특정이고, 스레드가 프로토콜과 관련된 임의의 정보를 제공해야할 필요 없이 스레드가 제 2 자원 (1304) 에 대해 액세스하는 것을 허용한다. 스레드 및 스레드의 클라이언트들의 관점에서, 프로토콜은 상관없거나 알기 쉬울 수도 있다.The protocol resources 1306 on the first processor include functions that, among other functions, create a client, such as client 1312 shown in FIG. 13, and return processing for clients that may be used by the thread of execution . A thread of execution (e.g., an application program or a portion of the execution of another software element) may invoke a function to create such a client 1312. The thread may use the client 1312 to issue resource requests or otherwise use the client 1312 in the same manner as described above for clients in general. The resource request is protocol-specific and allows the thread to access the second resource 1304 without the need for the thread to provide any information related to the protocol. From the perspective of clients of threads and threads, the protocol may be irrelevant or easy to understand.

블록 (1410) 에서 표시되는 바와 같이, 응집 방법이 수신된 노드 구조 데이터에 명시되었는지를 프레임워크들 (300 및 400) 이 결정한다. 응집 방법이 명시되었다고 결정되는 경우, 블록 (1412) 에 표시되는 바와 같이, 응집 방법이 분산된 자원 (노드) 및 네이티브 자원 (노드) 에 설정된다. 2 개의 응집 유형들: 로컬 및 프록시가 있다. 자원을 규정할 시에, 2 개의 응집 유형들 중 하나의 응집 유형이 선택될 수도 있다. 이에 따라, 자원 (노드) 을 인스턴스화할 시에, 자원은 로컬 응집 또는 원격 응집 중 어느 일방을 수행하도록 설정된다.As shown in block 1410, frameworks 300 and 400 determine if the aggregation method is specified in the received node structure data. If it is determined that the aggregation method is specified, then the aggregation method is set to the distributed resource (node) and the native resource (node), as indicated at block 1412. There are two types of aggregation: local and proxy. When defining a resource, one of the two flocculation types may be selected as the flocculation type. Thus, when instantiating a resource (node), the resource is set to perform either local cohesion or remote cohesion.

자원은 "동시에" 수신할 수도 있는 다수의 자원 요청들에 알고리즘을 적용함으로써 로컬 응집을 수행하다. 이러한 맥락에서, 2 개 (또는 그 이상의) 요청들은 요청들 양자 모두가 활성으로 남아 있는 동안에 "동시적" 이다. 예를 들어, 제 1 프로세서는 제 1 프로세서의 속도를 50 MIPS 로 설정하도록 자원 요청을 발행할 수도 있고, 제 1 프로세서의 요청이 완료되거나 그렇지 않으면 종료되기 전에, 제 2 프로세서가 제 2 프로세서의 속도를 100 MIPS 로 설정하도록 자원 요청을 발행할 수도 있다. 응집은, 모든 다수의 자원 요청들 중에서 최대 인수를 결정함으로써, 모든 다수의 자원 요청들 중에서 최소 인수를 결정함으로써, 또는 임의의 다른 적합한 방법으로써, 다수의 동시적 자원 요청들의 각각의 인수를 추가하는 것과 같은 방법에 따라 수행될 수도 있다. 응집 방법은 자원 (노드) 를 규정하는 노드 구조 데이터에 응집 유형과 함께 명시되거나 규정될 수도 있다.A resource performs local aggregation by applying an algorithm to a number of resource requests that may be received "simultaneously ". In this context, two (or more) requests are "concurrent" while both requests remain active. For example, the first processor may issue a resource request to set the speed of the first processor to 50 MIPS, and before the request of the first processor is completed or otherwise terminated, Lt; RTI ID = 0.0 > 100 MIPS. ≪ / RTI > Aggregation may be accomplished by determining the maximum of all of the multiple resource requests, by determining the minimum of all of the multiple resource requests, or by adding each argument of the multiple simultaneous resource requests Or the like. The aggregation method may be specified or specified with the aggregation type in the node structure data defining the resource (node).

노드 구조 데이터는 노드가 프록시화된 노드 또는 프록시화되지 않은 노드로서 인스턴스화될 것임을 표시할 수도 있다. 이러한 특징이 이용될 수도 있는 방식이 도 16 및 도 17 에 대하여 하기에서 설명된다. 블록 (1414) 에 의해 표시되는 바와 같이, 노드 유형은 표시된 유형으로 설정된다. 프록시화되지 않은 노드의 경우에, 클라이언트 요청들은 노드 구조에 의해 결정된 방식으로 로컬로 응집되고, 로컬로 응집된 요청을 네이티브 자원에 전송하는 구동 함수가 이용된다. 질의들 및 이벤트들이 분산된 자원에 의해 처리된다. 프록시화된 노드의 경우에, 클라이언트 요청들은 응집되지 않고, 대신에 네이티브 자원들에 개별적으로 전송된다. 또한, 모든 질의들 및 이벤트들이 네이티브 자원으로 포워딩된다.The node structure data may indicate that the node will be instantiated as a proxied node or an unproxy node. The manner in which this feature may be used is described below with reference to Figs. 16 and 17. Fig. As indicated by block 1414, the node type is set to the indicated type. In the case of a non-proxied node, client requests are aggregated locally in a manner determined by the node structure, and a drive function is used to transfer the locally aggregated request to the native resource. Queries and events are handled by distributed resources. In the case of a proxyed node, client requests are not aggregated, but are instead sent separately to native resources. In addition, all queries and events are forwarded to the native resource.

블록 (1416) 에 의해 표시되는 바와 같이, 인스턴스화 프로세스에서의 임의의 잔여 단계들이 일어난다. 분산된 노드를 인스턴스화하는 이러한 양상들은 근본적으로 도 7 내지 도 10 에 대하여 상술된 바와 동일할 수도 있다. 블록 (1418) 에 의해 표시되는 바와 같이, 추가적인 노드들이 규정되는 경우, 방법은 이러한 노드들에 대해 반복하거나 계속한다.As indicated by block 1416, any remaining steps in the instantiation process occur. These aspects of instantiating the distributed nodes may be fundamentally the same as described above with respect to Figs. If additional nodes are defined, as indicated by block 1418, the method repeats or continues for these nodes.

도 15 는 클라이언트 요청에 서비스하는 방법 (1500) 을 도시하는 플로차트이다. 도 15 의 플로차트는, 도 12 에서 도시된 방법과 같이, 클라이언트 요청들을 서비스하는 방법들에 관하여 상술된 특징들에 더해 또는 상술된 특징들을 증대시키는 특징들을 도시하고자 한다. 이에 따라, 달리 표시될 수도 있는 경우를 제외하고, 도 12 에서의 블록들 중 임의의 블록 또는 모든 블록들이 포함될 수도 있으나 명확함을 위해 도 15 에 도시되지는 않는다.15 is a flow chart illustrating a method 1500 of servicing a client request. The flowchart of FIG. 15 is intended to illustrate features that enhance the above-described features in addition to or in addition to those described above with respect to methods of servicing client requests, such as the method illustrated in FIG. Accordingly, any or all of the blocks in FIG. 12 may be included, except where they may be otherwise displayed, but are not shown in FIG. 15 for clarity.

블록 (1502) 에 의해 표시되는 바와 같이, 도 13 에서의 제 1 노드 (1302) 의 것과 같은, 분산된 자원이 클라이언트 요청을 수신한다. 블록 (1504) 에 의해 표시되는 바와 같이, 요청된 자원과 연관된 응집 유형이 로컬 또는 원격인지 여부가 결정된다. 응집 유형이 로컬인 경우, 블록 (1506) 에 의해 표시되는 바와 같이, 요청된 자원은 요청 인수를 동일한 윈도우 내에서 일어나는 다른 것들과 응집하다. 상술된 바와 같이, 응집은 동시적 자원 요청들을 처리하는 것에 관한 것이다. 요청된 자원과 연관된 응집 유형이 원격인 경우, 요청을 다른 것들과 응집하기 위해, 도 13 에서의 제 2 자원 (1304) 과 같은, 대응하는 네이티브 자원에 대해 남겨질 것이다.As indicated by block 1502, a distributed resource, such as the first node 1302 in FIG. 13, receives the client request. As indicated by block 1504, it is determined whether the type of cohesion associated with the requested resource is local or remote. If the cohesion type is local, as indicated by block 1506, the requested resource aggregates the request arguments with others occurring within the same window. As described above, coherence relates to handling concurrent resource requests. If the aggregation type associated with the requested resource is remote, then the request will be left for the corresponding native resource, such as the second resource 1304 in FIG. 13, to coalesce with the others.

로컬이든 원격이든, 응집은 클라이언트 요청의 3 개의 순차적 상태들: (1) 요청 발행 (Request Issued), (2) 요청 진행 (Request in Progress), 및 (3) 요청 적용 (Request Applied) 을 시사한다. 클라이언트 요청들이 동시에 발행된 경우에, 즉, 2 개의 클라이언트 요청들이 실질적으로 동일한 시간에 또는 위에서 언급된 서로의 윈도우 내에서 요청 발행 상태를 각각 시작하는 경우, 첫번째로 일어난 클라이언트 요청은 요청된 자원이 잠기게 하고, 두번째로 일어난 클라이언트 요청은 첫번째로 일어난 클라이언트 요청 후에 처리된다. 클라이언트 요청은 요청 진행 상태 동안에 처리되거나 서비스된다. 클라이언트 요청이 완료된 후에, 클라이언트 요청에는 요청 적용 상태가 할당된다. 다수의 동시적인 클라이언트 요청들이 요청 적용 상태에 이르는 경우에 응집이 작동하게 된다. 예를 들어, 자원이 위에서 언급된 최대 응집 방법을 이용하는 것으로 규정되고, 클라이언트 "A" 가 50 MIPS 를 요청하는 한편, 아마도 몇 마이크로초 후에, 클라이언트 "B" 가 100 MIPS 를 요청하는 경우, 이러한 초기 요청들은 직렬화될 것이다. 이에 따라, 제 1 클라이언트 요청이 프로세싱될 때, 자원은 제 1 클라이언트 요청의 인수 또는 50 MIPS 로 설정될 것이다. 그 다음에, 제 2 클라이언트 요청이 프로세싱될 때, 최대 응집 방법에 따라, 100 이 50 과 100 의 최대치이기 때문에, 자원은 100 으로 설정될 것이다. 그 후에, 이러한 초기 클라이언트 요청들 양자 모두가 요청 적용 상태에 있을 때, 클라이언트 "B" 가 25 MIPS 에 대한 다른 클라이언트 요청을 발행할 수도 있다. 최대 응집 방법에 따라, 50 이 50 과 25 의 최대치이기 때문에, 요청된 자원은 50 으로 설정될 것이다.Whether local or remote, cohesion suggests three sequential states of the client request: (1) Request Issued, (2) Request in Progress, and (3) Request Applied . If the client requests are issued simultaneously, that is, if the two client requests each start the request issuance state at substantially the same time or within the windows of each other mentioned above, the first occurring client request may be that the requested resource is locked The second client request is processed after the first client request. The client request is processed or serviced during the request progress state. After the client request is completed, the client request is assigned a request application status. Aggregation works when a large number of concurrent client requests reach the request application state. For example, if a resource is defined to use the maximum aggregation method mentioned above, and client "A" requests 50 MIPS, perhaps a few microseconds later, when client "B" requests 100 MIPS, The requests will be serialized. Thus, when the first client request is processed, the resource will be set to the argument of the first client request or 50 MIPS. Then, when the second client request is processed, the resource will be set to 100, because 100 is the maximum of 50 and 100, according to the maximum aggregation method. Thereafter, when both of these initial client requests are in the request application state, client "B" may issue another client request for 25 MIPS. According to the maximum flocculation method, the requested resource will be set to 50, since 50 is the maximum of 50 and 25.

블록 (1508) 에서 표시되는 바와 같이, 요청된 자원이 프로토콜 자원, 예컨대, 도 13 에서의 프로토콜 자원 (1306) 에 의존하는지 여부가 결정된다. 요청된 자원이 프로토콜 자원에 의존하는 경우, 각각, 블록 (1510) 및 블록 (1512) 에 의해 표시되는 바와 같이, 자원 요청이 프로토콜 자원이 규정하는 프로토콜을 준수하도록 프로토콜 자원이 불려와 이용된다. 블록 (1514) 에 의해 표시되는 바와 같이, 프로토콜을 준수하여, 응집 결과 (블록 (1506) 의 결과) 를 반영하는 자원 요청이 전송되거나, 원격 자원이 응집을 수행할 경우, 도 13 에서의 제 2 자원 (1304) 과 같은 네이티브 자원에 자원 요청이 포워딩된다. 분산된 자원의 구동 함수 (미도시) 는 프로토콜을 불러온다.As indicated at block 1508, it is determined whether the requested resource is dependent on protocol resources, e.g., protocol resources 1306 in FIG. 13. When the requested resource depends on the protocol resource, the protocol resource is called and used so that the resource request conforms to the protocol defined by the protocol resource, as indicated by block 1510 and block 1512, respectively. As indicated by block 1514, in compliance with the protocol, when a resource request reflecting the aggregation result (the result of block 1506) is sent, or when the remote resource performs aggregation, the second A resource request is forwarded to a native resource, such as resource 1304. The driving function (not shown) of the distributed resource invokes the protocol.

도 15 에 도시되지는 않았으나, 분산된 자원들을 수반하는 이벤트들은 도 12 에 대하여 상술된 것과 근본적으로 동일한 방식으로 처리될 수도 있다. 임계치를 넘는 값에 대해 모니터링하는 이벤트들의 유형은, 하기에서 설명되는 바와 같이, 프록시화된 자원과 결합하여 특히 유용할 수도 있다.Although not shown in FIG. 15, events involving distributed resources may be processed in a manner substantially similar to that described above with respect to FIG. The types of events that monitor for values above a threshold may be particularly useful in combination with the proxyed resource, as described below.

도 16 은 프록시화되지 않은 유형의 분산된 자원에 대한 상태 질의를 서비스하는 방법 (1600) 을 도시하는 플로차트이다. 상태 질의들은 도 5 및 도 6 에 대하여 상술된 바와 같이 프레임워크 (440) 에 의해 관리된다. 도 16 및 도 17 의 플로차트들은 도 5 및 도 6 에 대하여 상술된 특징들에 더하거나 그 특징들을 증대시키는 특징들을 도시하고자 한다. 이에 따라, 달리 표시될 수도 있는 경우를 제외하고, 도 5 및 도 6 에 대하여 상술된 특징들 중 임의의 특징 또는 모든 특징들이 포함될 수도 있으나, 명확함을 위해 도 16 및 도 17 에 도시되지는 않는다.16 is a flow chart illustrating a method 1600 of servicing a status query for a non-proxied type of distributed resource. The state queries are maintained by the framework 440 as described above with respect to Figures 5 and 6. The flowcharts of FIGS. 16 and 17 illustrate features that add to or in addition to the features described above with respect to FIGS. 5 and 6. FIG. Accordingly, any or all of the features described above with respect to Figures 5 and 6 may be included, except where they may be otherwise displayed, but are not shown in Figures 16 and 17 for clarity.

블록 (1602) 에 의해 표시되는 바와 같이, 도 13 에서의 제 1 노드 (1302) 의 것과 같은, 분산된 자원이 상태 질의를 수신한다. 이러한 실시예에서, 제 1 노드 (1302) 는 프록시화되지 않은 노드 또는 자원을 나타낸다. 블록 (1604) 에 의해 표시되는 바와 같이, 도 13 에서의 제 2 자원 (1304) 와 같은 대응하는 네이티브 자원에 상태 질의가 포워딩된다. 블록 (1606) 에 의해 표시되는 바와 같이, 상태 질의에 응답하여 네이티브 자원의 상태가 분산된 자원으로 다시 전송된다. 블록 (1608) 에 의해 표시되는 바와 같이, 분산된 자원이 그 다음에 네이티브 자원의 상태를 나타내는 상태 표시를 질의 요청자 (클라이언트) 에게 제공할 수도 있다.As represented by block 1602, a distributed resource, such as that of the first node 1302 in FIG. 13, receives a status query. In this embodiment, the first node 1302 represents a node or resource that has not been proxied. As indicated by block 1604, the state query is forwarded to the corresponding native resource, such as the second resource 1304 in FIG. As indicated by block 1606, in response to the state query, the state of the native resource is transferred back to the distributed resource. As indicated by block 1608, the distributed resource may then provide a status indication to the query requester (client) indicating the status of the native resource.

도 17a 는 프록시화된 유형의 분산된 자원에 대한 상태 질의를 서비스하는 방법 (1700) 의 제 1 부분을 도시하는 플로차트이다. 블록 (1702) 에 의해 표시되는 바와 같이, 도 13 에서의 제 1 노드 (1302) 의 것과 같은, 분산된 자원이 상태 질의를 수신한다. 이러한 실시예에서, 제 1 노드 (1302) 는 프록시화된 노드 또는 자원을 나타낸다. 각각 블록 (1704) 및 블록 (1706) 에 의해 표시되는 바와 같이, 분산된 자원이 네이티브 자원의 상태의 표시를 수신할 때마다, 분산된 자원이 그것의 상태를 업데이트하여 네이티브 자원의 상태를 반영한다. 블록 (1608) 에 의해 표시되는 바와 같이, 분산된 자원이 질의 요청자 (클라이언트) 에게 분산된 자원의 자체 상태의 표시를 제공한다. 따라서, 프록시화되어진 분산된 자원의 경우에, 분산된 자원의 상태는 오직 대응하는 네이티브 자원으로부터의 상태에서의 변화의 통지를 수신하는 경우에만 변한다.17A is a flow chart illustrating a first portion of a method 1700 of servicing a state query for a distributed resource of a proxyed type. As indicated by block 1702, a distributed resource, such as that of the first node 1302 in FIG. 13, receives the status query. In this embodiment, the first node 1302 represents a proxyed node or resource. As indicated by block 1704 and block 1706, each time a distributed resource receives an indication of the status of a native resource, the distributed resource updates its status to reflect the status of the native resource . As indicated by block 1608, the distributed resource provides an indication of the self-status of the distributed resource to the query requester (client). Thus, in the case of proxied distributed resources, the state of the distributed resource only changes if it receives a notification of a change in state from the corresponding native resource.

블록에 의해 표시되는 바와 같이, 도 13 에서의 제 2 자원 (1304) 과 같은 대응하는 네이티브 자원에 상태 질의가 포워딩된다. 블록 (1606) 에 의해 표시되는 바와 같이, 상태 질의에 응답하여 네이티브 자원의 상태가 분산된 자원으로 다시 전송된다.As indicated by the block, the state query is forwarded to the corresponding native resource, such as the second resource 1304 in FIG. As indicated by block 1606, in response to the state query, the state of the native resource is transferred back to the distributed resource.

도 17b 는 프록시화된 유형의 분산된 자원에 대한 상태 질의를 서비스하는 방법 (1700) 의 제 2 부분을 도시하는 플로차트이다. 이러한 제 2 부분은 네이티브 자원의 관점을 반영하고, 도 17a 에 도시된 제 1 부분과 비동기식으로 그리고 병행하여 동작한다. 블록 (1710) 에 표시된 바와 같이, 도 13 의 제 2 노드 (1304) 와 같은 네이티브 자원의 상태가 모니터링된다. 각각 블록 (1712) 및 블록 (1714) 에 의해 표시된 바와 같이, 네이티브 자원의 상태에서의 변화가 검출되는 경우, 네이티브 자원의 상태의 표시가 대응하는 분산된 자원에 전송된다.17B is a flow chart illustrating a second portion of a method 1700 of servicing a state query for a distributed resource of a proxyed type. This second part reflects the viewpoint of native resources and operates asynchronously and in parallel with the first part shown in Figure 17A. As indicated at block 1710, the state of the native resource, such as the second node 1304 of FIG. 13, is monitored. When a change in the state of the native resource is detected, as indicated by block 1712 and block 1714, respectively, an indication of the state of the native resource is sent to the corresponding distributed resource.

적절한 경우들에서 프록시화되어진 분산된 자원들의 이용은 프로세서간 트래픽을 최소화한다는 원하는 목표를 증진할 수도 있는데, 상태 정보가 오직 네이티브 자원의 상태가 변하는 경우에만 네이티브 자원의 프로세서에서 분산된 자원의 프로세서로 전송되기 때문이다. 대조적으로, 프록시화되지 않은 자원의 경우에는, 분산된 자원이 상태 질의를 수신할 때마다 상태 질의가 전송되고 상태 정보가 반환된다. 프록시화된 자원들은, 예를 들어, 제 1 프로세서의 제어 하에 수행될 태스크와 가장 관련된 것이, 대응하는 네이티브 자원보다는, 분산된 자원의 상태인 경우들에 이용될 수도 있다.The use of distributed resources that are proxied in appropriate cases may promote the desired goal of minimizing interprocessor traffic, but only when the state information changes from the native resource's processor to the distributed resource's processor . In contrast, in the case of a non-proxied resource, a status query is sent each time a distributed resource receives a status query, and status information is returned. Proxyed resources may be used, for example, in situations where the task most relevant to the task to be performed under the control of the first processor is the state of the distributed resource rather than the corresponding native resource.

도 5 및 도 6 에 대하여 위에서 언급된 바와 같이, 이벤트들 및 질의들은 소프트웨어 아키텍처의 관련된 양상들이다. 임계치를 넘는 값을 모니터링하는 이벤트들의 유형은 프록시화된 자원과 결합하여 특히 유용할 수도 있는데, 프로세서간 메시지들이 오직 네이티브 자원의 상태가 변할때마다 보다는 네이티브 자원의 상태가 임계치를 넘는 경우에만 전송되기 때문이다.As mentioned above with respect to Figures 5 and 6, events and queries are related aspects of the software architecture. The types of events that monitor values above a threshold may be particularly useful in combination with proxied resources because interprocessor messages are only sent when the state of the native resource exceeds the threshold rather than only when the state of the native resource changes to be.

일부 경우들에서, 다수의 별개의 자원 요청들을 함께 단일 "자원 요청들의 트랜잭션들" 로 그룹화하거나 "배칭" 하는 것이 바람직할 수도 있다. 다수의 자원 요청들이 서로 동일한 프로세서에 의해 제어되는 원격 자원 또는 분산된 자원에 대한 것인 경우들에서, 자원 요청들을 트랜잭션화하는 것은 제 1 프로세서와 제 2 프로세서 사이의 통신 경로 (1303) (도 13) 를 통해 송신되는 메시지들의 수를 최소화하는데 도움이 될 수도 있다. 당업자에 의해 잘 이해될 것으로, "트랜잭션" 은 통상적으로 약어 ACID: 원자성 (atomicity), 일관성 (consistency), 고립성 (isolation), 및 내구성 (durability) 으로 지칭되는 특성들에 따라 일어나는 액션이다. 원자성은 부분적으로 수행되는 트랜잭션들과 연관된 문제들을 피하도록, 트랜잭션의 구성 단계들 중 모두가 수행되거나 그것들 중 아무것도 수행되지 않는 것을 의미한다. 일관성은 트랜잭션이 하나의 일관적인/코히어런트 (coherent) 상태에서 다른 일관적인/코히어런트 상태로의 시스템을 취할 것을 의미한다. 고립성은 다른 동작들이 아직 완료되지 않은 트랜잭션 동안에 수정된 데이터에 액세스할 수 없음을 의미한다. 데이터에 대한 액세스를 잠그는 것은 통상적으로 트랜잭션을 고립 특정을 보장하기 위해 이용된다. 상술된 바와 같이, 자원은 자원 요청에 응답하여 액세스되는 경우에 잠기고, 자원 요청이 완료되는 경우에 잠금해제된다. 내구성은 시스템 오류들로부터의 복구에 관한 것이다. 용어 "트랜잭션" 은 적어도 원자성 및 고립성의 특성들에 따라 함께 수행되는 자원 요청들의 그룹을 지칭하기 위해 본 명세서에서 이용된다. 자원 요청 트랜잭션들에 대한 프레임워크 또는 프로그래밍 인터페이스는 그것의 설계에서 일관성을 지원하나, 트랜잭션 다음에 시스템이 일관적인 상태에 이르는지 여부는 개개의 트랜잭션화된 자원 요청들의 액션들에 의존하고, 따라서 반드시 프레임워크 또는 프로그래밍 인터페이스의 속성에 의존하는 것은 아니다.In some cases, it may be desirable to group or "batch" a plurality of distinct resource requests together into a single "transactions of resource requests. &Quot; In cases where a plurality of resource requests are for a remote resource or a distributed resource controlled by the same processor, the transactionizing of the resource requests may include a communication path 1303 between the first processor and the second processor Lt; RTI ID = 0.0 > (e. As will be appreciated by those skilled in the art, a "transaction" is an action that typically occurs in accordance with properties referred to as abbreviation ACID: atomicity, consistency, isolation, and durability. Atomicity implies that all of the configuration steps of a transaction are performed or none of them are performed to avoid problems associated with partially executed transactions. Consistency means that a transaction takes a system from one coherent / coherent state to another coherent / coherent state. Isolation means that other operations can not access the modified data during a transaction that has not yet completed. Locking access to data is typically used to ensure isolation of transactions. As described above, the resource is locked when accessed in response to the resource request, and unlocked when the resource request is completed. Durability relates to recovery from system failures. The term "transaction" is used herein to refer to a group of resource requests that are performed together according to at least the characteristics of atomicity and isolation. The framework or programming interface for resource request transactions supports consistency in its design but whether or not the system is in a consistent state after a transaction depends on the actions of the individual transactional resource requests, It does not depend on the properties of the work or programming interface.

자원 요청들의 트랜잭션을 제공하는 것은 2 개의 양상들을 수반할 수도 있다. 일 양상에서, 자원 요청들의 트랜잭션이 규정될 수도 있다. 자원 요청들의 트랜잭션을 규정할 시에, 자원 요청들의 트랜잭션에는 고유한 이름 또는 식별자가 할당되며, 잠금 유형이 명시되고, 자원 요청들의 트랜잭션에 수반될 수도 있는 자원들이 열거된다. 자원 요청들의 트랜잭션을 규정하는 결과는 자원 요청들의 트랜잭션을 발행하기 (또는 자원 요청들의 트랜잭션의 인스턴스를 생성하기) 위해 엔티티에 의해 참조될 수 있는 처리이다.Providing a transaction of resource requests may involve two aspects. In an aspect, a transaction of resource requests may be specified. In defining a transaction of resource requests, a transaction of resource requests is assigned a unique name or identifier, a lock type is specified, and resources that may be involved in the transaction of resource requests are enumerated. The result defining the transaction of resource requests is a transaction that can be referenced by the entity to issue a transaction of resource requests (or to create an instance of a transaction of resource requests).

자원 요청들의 트랜잭션을 제공하는 제 2 양상은 자원 요청들의 규정된 트랜잭션의 인스턴스를 발행하거나 생성하는 것과 관련된다. 자원 요청들의 트랜잭션은 (예를 들어, 의존하는 다른 자원들에 대한 자원 요청들의 배칭으로서) 자원에 의해, 또는 대안으로는 실행 스레드에 의해, 또는 상술된 PCD (100) 의 자원 그래프에 의해 규정된 자원들 중 하나의 자원에 포함되지 않은 디바이스 구동기에 의해서와 같이, 하나의 자원 이외의 다른 엔티티에 의해 발행될 수도 있다. 자원 요청의 트랜잭션은, 다른 자원 요청들처럼, 일 유형의 클라이언트 요청이다. 상술된 방식으로 클라이언트 요청을 발행 (또는, 통상적인 컴퓨터 과학 용어로는 클라이언트를 "소유한다" 이다) 할 수 있는 임의의 엔티티가 자원 요청들의 트랜잭션을 발행할 수도 있다.A second aspect of providing a transaction of resource requests involves issuing or creating an instance of a defined transaction of resource requests. The transaction of resource requests may be performed by a resource (e.g., as a substitute for resource requests to other dependent resources), or alternatively by an execution thread, or by the resource graph of the PCD 100 described above Or may be issued by an entity other than a resource, such as by a device driver not included in one of the resources. A transaction of a resource request, like other resource requests, is a type of client request. Any entity capable of issuing a client request in the manner described above (or, in normal computer science terminology, "possesses" the client) may issue a transaction of resource requests.

자원 요청들의 트랜잭션을 발행하기 위해, 자원, 스레드, 또는 자원 요청들의 이전에 규정된 트랜잭션을 "시작" 하거나 설정하는 다른 그러한 엔티티 실행 소프트웨어 코드는 자원 요청들의 트랜잭션의 일부분으로 규정되는 다양한 자원들에 대한 자원 요청들을 발행하고, 그 다음에 자원 요청들의 트랜잭션을 종료하여, 배칭된 요청들의 프로세싱을 개시하고 자원 요청들의 트랜잭션을 종료한다. 자원 요청들의 트랜잭션을 종료하는 프로세스는 제 1 프로세싱 엔티티에서 제 2 프로세싱 엔티티로 요청들의 배칭을 송신하는 것, 제 2 프로세싱 엔티티에서 배칭된 요청들을 프로세싱하는 것, 제 1 프로세싱 엔티티에서 프로세싱의 완료의 통지를 기다리는 것, 그리고 그 다음에 통지의 수령 시에, 로컬 자원 프록시들에 대한 임의의 업데이트들 또는 제 1 프로세싱 엔티티에서의 등록된 콜백들을 실행하는 것을 수반할 수도 있다.Other such entity execution software code that "starts" or sets a previously defined transaction of a resource, thread, or resource request to issue a transaction of resource requests may be used for various resources defined as part of a transaction of resource requests Issues resource requests, then terminates the transaction of resource requests, initiates processing of the batched requests, and terminates the transaction of resource requests. The process of terminating the transaction of resource requests comprises sending a batch of requests from a first processing entity to a second processing entity, processing batches of requests from a second processing entity, notification of completion of processing at the first processing entity And then upon receipt of the notification, it may involve performing any updates to the local resource proxies or executing the registered callbacks at the first processing entity.

도 18 은 자원 요청들의 트랜잭션을 발행하는 방법 (1800) 을 도시하는 플로차트이다. 방법 (1800) 은 예시적인 의사코드를 참조하여 하기에서 설명된다. 다음은 자원 요청들의 트랜잭션을 발행하는 엔티티에 의해 실행되는 코드를 일반적으로 나타내는 의사코드의 실시예이다:18 is a flow chart illustrating a method 1800 of issuing a transaction of resource requests. The method 1800 is described below with reference to an exemplary pseudo code. The following is an example of a pseudocode that generally represents the code executed by an entity issuing a transaction of resource requests:

BEGIN_TRANSACTION(HANDLE) BEGIN_TRANSACTION (HANDLE)

REQUEST(A) REQUEST (A)

REQUEST(B) REQUEST (B)

REQUEST(C) REQUEST (C)

END_TRANSACTION(HANDLE) END_TRANSACTION (HANDLE)

도 18 에서 블록 (1802) 에 의해 표시되는 바와 같이, 이벤트들의 시퀀스의 표시가 제공된다. 예를 들어, 이벤트들의 시퀀스가 상기의 의사코드에 의해 나타내어지는 코드의 실행에 의해 제공될 수도 있다. 표시되는 이벤트들의 시퀀스는: ("BEGIN_TRANSACTION(HANDLE)" 에 의해 예시적인 의사코드에서 나타내어지는) 자원 요청들의 트랜잭션의 시작의 표시; ("END_TRANS ACTION" 에 의해 예시적인 의사코드로 나타내어지는) 자원 요청들의 트랜잭션의 종료의 표시; 및 트랜잭션 일부로서, 즉, 트랜잭션의 시작과 트랜잭션의 종료 사이에 일어날 2 개 이상의 자원 요청들의 표시들을 포함한다. 의사코드 "BEGIN_TRANSACTION(HANDLE)" 은 상술된 방식으로 규정된 처리에 대한 자원 요청들의 트랜잭션의 설정을 나타낸다. 자원 요청들의 트랜잭션을 발행하는 프로세스가 이러한 많은 단계들에 걸쳐 이어짐에 따라, 처리에 대한 자원 요청들의 임의의 트랜잭션은 그 처리와 연관된 잠금 유형 및 자원 요청들 트랜잭션이 규정된 시간에서 그 처리와 연관된 자원들에 따라 수행될 것이다.An indication of a sequence of events is provided, as indicated by block 1802 in Fig. For example, a sequence of events may be provided by the execution of code represented by the above pseudocode. The sequence of events to be displayed is: an indication of the beginning of a transaction of resource requests (as indicated in the exemplary pseudocode by "BEGIN_TRANSACTION (HANDLE)"); An indication of the end of the transaction of resource requests (indicated by an exemplary pseudo code by "END_TRANS ACTION"); And indications of two or more resource requests that occur as part of the transaction, i. E. Between the start of the transaction and the end of the transaction. The pseudo code "BEGIN_TRANSACTION (HANDLE)" indicates the setting of the transaction of resource requests for the processing specified in the manner described above. As the process of issuing a transaction of resource requests continues through these many steps, any transaction of resource requests for processing may be terminated by the type of lock and resource requests associated with that transaction, Lt; / RTI >

명확함을 위해 상기의 의사코드에서는 반영되지 않았으나, 자원 요청들의 트랜잭션은 조건적 로직을 포함할 수도 있음을 유의하는 것이 유용하다. 예를 들어, 자원 요청들의 트랜잭션을 나타내는 코드는 형태 "IF (조건) THEN (자원 요청 발행)" 을 갖는 로직, 또는 입력 조건들에 응답하여 평가되는 경우, 자원 요청들의 트랜잭션의 규정에 열거되는 자원들의 서브세트에 대한 요청들을 제공하는 결과를 초래하는 유사한 로직을 포함할 수도 있다. 다시 말해, 자원 요청들의 트랜잭션은 오직 특정 조건들이 자원 요청들의 트랜잭션의 발행 시점, 즉, 자원 요청들의 트랜잭션을 나타내는 코드가 실행되는 시점에서 충족되는 경우에만 소정의 자원 요청을 포함하는 것으로 규정될 수도 있다. 예를 들어, 자원 요청들의 트랜잭션은 자원들 (A, B, C, 및 D) 을 수반하는 것으로 규정될 수도 있으나, 주어진 경우에서의 조건적 로직의 평가는 오직 자원들 (A, B, 및 C) 에 대한 자원 요청들의 표시들만을 제공할 수도 있다. 즉, 자원 요청들의 트랜잭션의 이러한 예시적인 사례에서 조건적 로직의 평가의 결과로서, 자원 (D) 에 대한 자원 요청은 자원 요청들의 실제 트랜잭션에 포함되지 않을 수도 있다. 잠재적으로 자원 요청들의 트랜잭션에 수반되는 것으로 규정되는 모든 자원들이 모든 경우들에서 필요로 하는 것은 아닐 수도 있다. 명확함을 위해, 상기의 예시적인 의사코드는 오직 주어진 경우에서 표시되는 자원 요청들만을 보여주고 임의의 조건적 로직을 보여주지는 않는다. 그럼에도 불구하고, 자원 요청들의 트랜잭션은 임의의 개수의 자원 요청들, 및 주어진 경우에 어느 자원 요청들이 포함되는지를 결정할 수도 있는 임의의 적합한 조건적 로직을 포함할 수도 있다는 것이 이해되어야 한다.It is useful to note that transactions of resource requests may include conditional logic, although this is not reflected in the above pseudocode for clarity. For example, a code representing a transaction of resource requests may be a logic having a type "IF (condition) issuing a resource request (THEN) ", or a resource listed in a rule of a transaction of resource requests, Lt; RTI ID = 0.0 > of < / RTI > In other words, a transaction of resource requests may be defined to include a predetermined resource request only if certain conditions are met at the time of issuance of a transaction of resource requests, i.e., at the time the code representing the transaction of resource requests is executed . For example, the transaction of resource requests may be defined as involving resources (A, B, C, and D), but the evaluation of the conditional logic in a given case is limited to only resources (A, ≪ / RTI > only the indications of the resource requests for the resource request. That is, as a result of evaluating the conditional logic in this illustrative example of a transaction of resource requests, the resource request for resource D may not be included in the actual transaction of resource requests. Potentially any resource defined as being involved in a transaction of resource requests may not be required in all cases. For clarity, the exemplary pseudocode above shows only the resource requests displayed in a given case and does not show any conditional logic. Nevertheless, it should be understood that the transaction of resource requests may include any suitable number of resource requests, and any suitable conditional logic that may determine which resource requests are included, if any.

블록 (1803) 에 의해 표시되는 바와 같이, 자원 요청들의 트랜잭션에 수반되는 자원 요청들에 대한 큐가 설정된다. 블록 (1804) 에 의해 표시되는 바와 같이, 자원 요청들의 트랜잭션에 수반되는 각각의 자원은 자원 요청들의 트랜잭션의 지속기간 동안 잠긴다. 하기에서 설명되는 바와 같이, 자원들은 상이한 잠김 유형들, 예컨대, "회의적 (pessimistic) 잠김" 이라고 하기에서 지칭되는 제 1 잠김 유형, 또는 "느슨한 (lazy) 잠김" 이라고 하기에서 지칭되는 제 2 잠김 유형에 따라 잠길 수도 있다. 상술된 바와 같이, 잠김 유형은 자원 요청들의 트랜잭션이 규정될 때에 규정된다. 따라서, 자원 요청들의 트랜잭션이 발행되는 경우, 자원 요청들의 트랜잭션이 회의적 잠김 방법에 따라, 또는 대안으로는 느슨한 잠김 방법에 따라 수행될지 여부는 발행 시점에 미리 결정되었을 것이다. 잠김 방법에 의존하여, 자원 요청들의 트랜잭션에 수반되는 자원들은, 하기에서 보다 상세히 설명되는 바와 같이, 상이한 시간들에서 잠길 수도 있다. 또한, 잠김 유형에 의존하여, 자원 요청들의 트랜잭션의 일부분으로서 규정된 자원들의 모두가 잠기거나 (회의적 잠김), 오직 트랜잭션의 일부분으로서 요청들이 발행되는 이러한 자원들의 서브세트만이 잠긴다 (느슨한 잠김).As indicated by block 1803, a queue is established for resource requests that accompany the transaction of resource requests. As indicated by block 1804, each resource involved in the transaction of resource requests is locked for the duration of the transaction of resource requests. As will be described below, the resources may be assigned different locking types, e.g., a first locking type referred to as "pessimistic locking ", or a second locking type referred to as" lazy locking " . As described above, the lock type is specified when a transaction of resource requests is specified. Thus, if a transaction of resource requests is issued, whether or not the transaction of resource requests will be performed according to a skeptical locking method, or alternatively, according to a loosely locked method, would have been predetermined at the time of publication. Depending on the locking method, the resources involved in the transaction of resource requests may be locked at different times, as described in more detail below. Also, depending on the locking type, only a subset of these resources (loosely locked) in which all of the defined resources as part of the transaction of resource requests are locked (skeptic locking) or only requests are issued as part of the transaction.

다른 실시형태에서, 자원 요청들의 트랜잭션과 연관된 잠김 유형이 (하기에서 추가로 설명되는 바와 같이) "느슨한" 경우, 자원 요청들의 트랜잭션을 규정하고 발행하는 엔티티는, 자원 요청들의 트랜잭션의 규정 양상 동안에, 트랜잭션의 일부분일 수도 있는 모든 자원들을 규정하거나 열거해야 하는 것으로 제약될 필요가 없다. 트랜잭션의 맥락에서 발행되는 이러한 자원들에 대한 하나 이상의 요청들에 의해, 트랜잭션의 일부분인 (또는, 일부분이 되는 경우의) 자원들이 트랜잭션에 동적으로 포함되는 것이 전적으로 가능하다. 예로서, 상기의 의사코드에서, 트랜잭션을 발행하는 엔티티는, 트랜잭션과 연관되는 잠김 유형이 "느슨한" 것인 경우, 규정 양상 동안에, 트랜잭션의 일부로서 A, B, 및 C 를 규정할 필요가 없다. 트랜잭션을 시작하고, 그 다음에 A, B, 및 C 중 2 개 이상에 대한 요청들을 발행할 수 있다. 이러한 자원들은 그 다음에 암시적으로 자원 요청들의 트랜잭션의 일부분이 되고, 이러한 자원들에 대한 요청들은 단지 배칭만 되고 즉시 프로세싱되지는 않는다. 따라서, 본 실시형태에서, 앞서서 모든 것을 규정해야할 필요 없이, 트랜잭션을 시작한 후에, 임의의 개수의 자원들이 트랜잭션에 추가될 수 있다는 점에서, "동적" 또는 "가동-시간 규정된" 트랜잭션을 구성하는 것이 가능하다. 나아가 하기에서의 잠김 유형들의 설명으로부터 명백할 것으로, 자원 요청들의 이러한 "동적" 또는 "가동-시간 규정된" 트랜잭션은 "회의적" 잠긴 유형의 것일 수 없다.In another embodiment, when a lock type associated with a transaction of resource requests is "loose" (as further described below), an entity that defines and issues a transaction of resource requests, There is no need to be constrained to enumerate or enumerate all resources that may be part of a transaction. By one or more requests for these resources issued in the context of a transaction, it is entirely possible that resources that are part of (or become part of) the transaction are dynamically included in the transaction. By way of example, in the above pseudocode, the entity issuing the transaction does not need to specify A, B, and C as part of the transaction during the stipulation phase if the locking type associated with the transaction is "loose" . Initiate a transaction, and then issue requests for two or more of A, B, and C. These resources are then implicitly part of the transaction of resource requests, and requests for these resources are just batched and not immediately processed. Thus, in the present embodiment, it is possible to configure a "dynamic" or " run-time defined "transaction in that any number of resources may be added to the transaction after starting the transaction without having to define everything ahead It is possible. Further, apparent from the description of the locking types in the following, these "dynamic" or "run-time defined" transactions of resource requests can not be of the "skeptical" locked type.

블록 (1806) 에 의해 표시되는 바와 같이, 자원 요청들의 트랜잭션에 포함된 자원 요청들의 각각과 연관된 정보가 큐에 추가된다. 상기의 의사코드를 참조하면, "REQUEST(A)" 이, 예를 들어, 50 MIPS 의 처리량을 프로세싱하기 위한 자원 (A) 에 대한 요청을 나타내는 경우에, 자원 (A) (또는 자원 (A) 이 자원 요청들의 트랜잭션을 발행하는 것 이외의 프로세서에 의해 제어되는 경우에서 자원 (A) 의 분산된 상대방) 은 큐에 50 의 값을 추가할 수도 있다. 마찬가지로, 자원 요청들의 트랜잭션의 일부분인 다른 자원 요청들과 연관된 임의의 적합한 파라미터들이 의사코드 "REQUEST(B)" 에 의해 나타내어지는 코드와 같은 대응하는 코드의 실행 시점에 큐에 추가된다. 명확함을 위해, 상기의 의사코드는 이 실시예에서 "50" 을 나타내는 파라미터와 같은, 자원 요청에 포함될 수도 있는 모든 파라미터들을 반영하지는 않는다.As indicated by block 1806, information associated with each of the resource requests included in the transaction of resource requests is added to the queue. Referring to the pseudocode above, a resource A (or resource A) (e.g., if REQUEST (A) indicates a request for a resource A to process 50 MIPS of throughput, (The distributed counterpart of the resource A) may be added to the queue by a value of 50 if it is controlled by a processor other than issuing a transaction of these resource requests. Likewise, any suitable parameters associated with other resource requests that are part of the transaction of resource requests are added to the queue at the time of execution of the corresponding code, such as the code represented by the pseudo code "REQUEST (B) ". For clarity, the above pseudocode does not reflect all the parameters that may be included in the resource request, such as the parameter representing "50" in this embodiment.

각각 블록 (1804) 및 블록 (1806) 에 의해 표시되는 잠금 단계 및 큐에 추가하기 단계는 임의의 순서로 수행될 수도 있고, 하나 이상의 하위-단계들을 수반할 수도 있다는 것이 유의되어야 한다. 예를 들어, 하기에서 설명되는 바와 같이, 회의적 잠금 유형인 것으로 규정된 자원 요청들의 트랜잭션에서, 자원 요청들의 트랜잭션의 규정에서 표시되는 모든 자원들은 자원 요청들과 연관된 임의의 정보가 큐에 추가되기 전에 잠긴다. 그러나, 느슨한 잠금 유형일 것으로 규정된 자원 요청들의 트랜잭션에서, 각각의 자원 요청은 차례로 요청된 자원의 잠금 및 오직 그 자원 요청과 연관된 정보만을 큐에 추가하기를 초래한다. 다시 말해, 자원 요청들의 트랜잭션에서, 잠금 단계 및 큐에 추가하기 단계는 서로 교번하는 방식으로 수행될 수도 있다. 회의적 잠금 및 느슨한 잠금은 하기에서 보다 상세히 설명된다.It should be noted that the locking and queuing steps represented by blocks 1804 and 1806, respectively, may be performed in any order and may involve one or more sub-steps. For example, as described below, in a transaction of resource requests that are defined as being of a skeptic lock type, all resources indicated in the provision of the transaction of resource requests can be used before any information associated with resource requests is added to the queue It is locked. However, in the transaction of resource requests that are defined to be a loose lock type, each resource request results in the locking of the requested resource in turn and only the addition of information associated with that resource request to the queue. In other words, in the transaction of resource requests, the locking phase and the adding to queue may be performed in an alternating manner. The skeptic and loose locks are described in more detail below.

블록 (1808) 에 의해 표시되는 바와 같이, 트랜잭션의 종료의 표시에 응답하여 수신자에게 큐가 송신된다. 수신자는, 예를 들어, 다른 프로세서일 수도 있다. 수신자는, 예를 들어, 다른 프로세서, 즉, 그로부터 자원 요청들의 트랜잭션이 발행되는 프로세서 이외의 프로세서일 수도 있다. 이러한 경우에서, 큐는 자원 요청들이 상술된 방식으로 트랜잭션화되지 않은 경우에 발행될 다수의 자원 요청들과 연관된 다수의 메시지들의 위치를 취한다. 발행 엔티티에서, 요청들의 큐가 프로세싱되었다는 수신자로부터의 통지가 있을 때까지 실행의 스레드는 차단된다. 그 다음에, 발행 엔티티에서 임의의 잔여 프로세싱이 완료되고 (이는 로컬 자원 프록시들에 대한 임의의 업데이트들 및 임의의 등록된 콜백들의 실행을 수반할 수도 있다), 트랜잭션은 완료된 것으로 여겨진다. 이 모든 것들은 상기의 의사코드에서 "END_TRANSACTION(HANDLE)" 에 의해 나타내어진다.As indicated by block 1808, a queue is sent to the recipient in response to an indication of the end of the transaction. The recipient may be, for example, another processor. The receiver may be, for example, another processor, i.e. a processor other than the processor from which the transaction of resource requests is issued. In this case, the queue takes the location of multiple messages associated with multiple resource requests to be issued when resource requests are not transactional in the manner described above. At the issuing entity, the thread of execution is blocked until there is a notification from the recipient that the queue of requests has been processed. Then, any residual processing at the issuing entity is completed (which may involve the execution of any updates to local resource proxies and any registered callbacks), then the transaction is considered complete. All of these are represented by "END_TRANSACTION (HANDLE)" in the above pseudocode.

블록 (1810) 에 의해 표시되는 바와 같이, 자원 요청들의 트랜잭션에서 표시되어지는 자원들의 모두는, 상기의 의사코드에서 "END_TRANS ACTION" 에 의해 나타내어지는 바와 같이, 트랜잭션의 종료 다음에 잠금해제된다. 따라서, 큐가 송신된 다음에 자원들이 잠금해제되고 배칭된 요청들이 프로세싱된다.As indicated by block 1810, all of the resources represented in the transaction of resource requests are unlocked after the end of the transaction, as indicated by "END TRANS ACTION" in the above pseudocode. Thus, after the queue is transmitted, the resources are unlocked and the batched requests are processed.

본 문서에서 자원 요청들의 트랜잭션 내에서 발행된 자원 요청들이 큐에 추가되는 것으로 언급하나, "큐" 는 표준 큐의 특성들 중 임의의 특성, 예컨대, 선입선출 (first-in-first-out) 방식으로의 요소들의 순서화를 갖추고 있을 필요는 없다는 것이 유의되어야 한다. 이는, 특정 구현에서, 표준 큐가 배칭 요청들에 이용될 수 없다고 말하는 것은 아니다. 이러한 큐가 당연히 이용될 수도 있으나, 다른 구현예들에서, 최종적인 송신 또는 프로세싱 때까지 한번에 하나 이상의 요소들을 수신하여 그것들을 저장할 수 있는 임의의 종류의 컨테이너 또는 버퍼에 요청들이 추가될 수도 있다. 이러한 경우들에서, "큐" 는 자원 요청들의 백 또는 버킷으로 고려될 수도 있다.The term "queue" refers to any of the characteristics of a standard queue, such as a first-in-first-out scheme It should be noted that it is not necessary to have an ordering of the elements to. This does not mean, in certain implementations, that a standard queue can not be used for batting requests. Such queues may of course be used, but in other implementations, requests may be added to any kind of container or buffer that can receive and store one or more elements at a time until final transmission or processing. In these cases, the "queue" may be considered a back or bucket of resource requests.

도 19 는 자원들 (A, B, 및 C) 에 대한 자원 요청들을 포함하는 자원 요청들의 예시적인 트랜잭션에 대한 예시적인 자원 그래프 (1900) 를 도시한다. 예를 들어, 도 19 에서의 자원들 (A, B, 및 C) 은 상기의 예시적인 의사코드에서의 "REQUEST(A)", "REQUEST(B)", 및 "REQUEST(C)" 에 대응하는 것일 수도 있다.19 illustrates an exemplary resource graph 1900 for an exemplary transaction of resource requests that includes resource requests for resources A, B, For example, the resources A, B, and C in FIG. 19 correspond to REQUEST (A), REQUEST (B), and REQUEST (C) in the above exemplary pseudocode It is possible to do.

자원 요청들의 트랜잭션이 느슨한 잠금 유형인 것으로 규정된 경우에, 자원 (A) 에 대한 제 1 자원 요청 (1902) 에 응답하여, 자원 (A) 이 잠기고, 제 1 자원 요청 (1902) 과 연관된 정보가 상기에서 언급된 큐에 추가된다. 자원 (A) 은 그 다음에 자원 (B) 에 대한 제 2 자원 요청 (1094) 을 발행하는데, 자원 (A) 이 자원 (B) 에 의존하기 때문이다. 제 2 자원 요청 (1094) 에 응답하여, 자원 (B) 이 잠기게 되고, 제 2 자원 요청 (1904) 과 연관된 정보가 큐에 추가된다. 자원 (A) 은 그 다음에 자원 (C) 에 대한 제 3 자원 요청 (1906) 을 발행하는데, 자원 (C) 이 자원 (B) 에 의존하기 때문이다. 제 3 자원 요청 (1906) 에 응답하여, 자원 (C) 이 잠기게 되고, 제 3 자원 요청 (1906) 과 연관된 정보가 큐에 추가된다. 상기의 의사코드를 참조하면: 자원 (A) 은 의사코드 "REQUEST(A)" 에 의해 나타내어지는 코드가 실행되는 시점에 잠기며; 자원 (B) 은 의사코드 "REQUEST(B)" 에 의해 나타내어지는 코드가 실행되는 시점에 잠기고; 자원 (C) 은 의사코드 "REQUEST(C)" 에 의해 나타내어지는 코드가 실행되는 시점에 잠긴다.In response to a first resource request 1902 for a resource A, if the transaction of resource requests is defined as a loose lock type, the resource A is locked and the information associated with the first resource request 1902 is Is added to the queue mentioned above. The resource A then issues a second resource request 1094 for the resource B because the resource A depends on the resource B. [ In response to the second resource request 1094, the resource B is locked and the information associated with the second resource request 1904 is added to the queue. The resource A then issues a third resource request 1906 for the resource C because the resource C depends on the resource B. [ In response to the third resource request 1906, the resource C is locked, and the information associated with the third resource request 1906 is added to the queue. Referring to the above pseudocode: Resource A is locked at the time the code represented by pseudo code "REQUEST (A) " is executed; The resource B is locked at the time the code represented by the pseudo code "REQUEST (B) " is executed; The resource C is locked at the time when the code represented by the pseudo code "REQUEST (C) " is executed.

느슨한 잠금 방법은 자원 요청들의 트랜잭션에 수반되는 자원들의 세트를 규정하는 자원 그래프의 특성들이 교착상태 조건의 가능성을 막는 경우 만족스러울 수도 있다. 도 20 은 자원 그래프 (1900) 와 유사하나 교착상태 조건의 가능성을 막지 않는 예시적인 자원 그래프 (2000) 를 도시한다. 도 21 의 이벤트 타임라인 (2100) 을 더 참조하면, 예시적인 경우에서, 제 1 스레드 및 제 2 스레드가 자원 그래프 (2000) (도 20) 에 의해 표시되는 자원들을 각각 요청한다. 제 1 스레드가 자원 (A) 에 대한 제 1 (트랜잭션화된) 자원 요청 (2002) (도 20) 을 발행하며, 이는 자원 (A) 을 잠근다. 자원 (A) 이 자원 (B) 에 의존하므로, 자원 (A) 은 그 다음에 자원 (B) 에 대한 제 2 자원 요청 (2004) 을 발행함으로써, 자원 (B) 을 잠근다. 자원 (B) 이 자원 (D) 에 의존하므로, 자원 (B) 은 그 다음에 자원 (D) 에 대한 제 3 자원 요청 (2006) 을 발행함으로써 자원 (D) 을 잠근다. 그 다음에, 제 2 스레드가 자원 (C) 에 대한 제 4 자원 요청 (2008) 을 발행함으로써, 자원 (C) 을 잠근다. 자원 (C) 이 자원 (D) 에 의존하므로, 자원 (C) 은 그 다음에 자원 (D) 에 대한 제 5 자원 요청 (2010) 을 발행한다. 그러나, 자원 (D) 은 자원 요청 (2006) 의 결과 이미 잠겼으므로, 자원 요청 (2010) 은 "차단" 되고, 따라서 자원 (D) 이 잠금해제될 때까지 완료되지 않는다. 그러나, 제 1 스레드의 맥락에서 발행된, 자원 (A) 의 자원 (C) 에 대한 의존의 결과에 따른 자원 (C) 에 대한 제 6 자원 요청 (2012) 이 또한 차단될 것인데, 이는 자원 (C) 이 제 2 스레드에 의한 자원 요청 (2008) 의 결과로 잠겼기 때문이다. 이러한 경우에, 자원 (A) 이 의존하는 자원들이 잠금해제될 때까지 제 1 스레드가 제 1 스레드의 자원 요청 (2002) 을 완료할 수 없으며, 한편 자원 (C) 이 의존하는 자원들이 잠금해제될 때까지 제 2 스레드가 제 2 스레드의 자원 요청 (2008) 을 완료할 수 없기 때문에, 교착상태 조건이 있다.The loosely locked method may be satisfactory if the characteristics of the resource graph that define the set of resources involved in the transaction of resource requests prevent the possibility of a deadlock condition. Figure 20 illustrates an exemplary resource graph 2000 that is similar to the resource graph 1900 but does not prevent the possibility of a deadlock condition. With further reference to the event timeline 2100 of FIG. 21, in the illustrative case, the first thread and the second thread each request resources represented by the resource graph 2000 (FIG. 20). The first thread issues a first (transactional) resource request 2002 (FIG. 20) for resource A, which locks resource A. Because resource A is dependent on resource B, resource A then locks resource B by issuing a second resource request 2004 for resource B. [ Because resource B depends on resource D, resource B then locks resource D by issuing a third resource request 2006 for resource D. [ Then the second thread locks the resource C by issuing a fourth resource request 2008 for the resource C. [ Since resource C depends on resource D, resource C then issues a fifth resource request 2010 for resource D. [ However, since the resource D has already been locked as a result of the resource request 2006, the resource request 2010 is "blocked ", and thus is not completed until the resource D is unlocked. However, the sixth resource request 2012 for the resource C resulting from the dependence of the resource A on the resource C issued in the context of the first thread will also be blocked, ) Is locked as a result of the resource request 2008 by the second thread. In this case, the first thread can not complete the resource request 2002 of the first thread until the resources on which the resource A depends are unlocked, while the resources on which the resource C depends are unlocked There is a deadlock condition because the second thread can not complete the resource request 2008 of the second thread until.

이러한 경우에 교착상태 조건의 가능성을 피하기 위해, 자원 요청들의 트랜잭션은 느슨한 잠금 유형보다는 회의적 잠금 유형의 것으로 규정될 수도 있다. 회의적 잠금 유형의 자원 요청들의 트랜잭션에서, 자원 요청들의 트랜잭션에서 표시된 모든 자원들은, 개별적인 자원 요청들의 임의의 표시들 전에 (또는 임의의 개별적인 자원 요청들이 발행되기 전에), 트랜잭션의 시작의 표시에 응답하여 잠긴다. 따라서, 상기의 의사코드 및 도 20 과 도 22 를 참조하면, 자원들 (A, B, 및 C) 은 "BEGIN_TRANSACTION" 에 의해 나타내어지는 코드의 실행에 응답하여 모두 잠긴다. 자원들은 일 토폴로지적 정렬 (sort) 의 자원 그래프에 의해 표시되는 순서로 잠길 수도 있다. 토폴로지적으로 정렬하는 방법들로서, 방향성 비순환 그래프가 당업자에게 당연히 이해되나, 그것들은 본 명세서에서 보다 상세히 설명되지 않는다. 임의의 적합한 토폴로지적 정렬 방법이 이용될 수도 있다. 도 22 의 이벤트 시간라인 (2200) 에 의해 나타내어지는 예시적인 경우에, 자원 그래프 (2000) (도 20) 의 토폴로지적 정렬의 결과들은, 예를 들어, A, B, C, D 일 수도 있다. 따라서, 자원 (A) 에 대한 자원 요청들의 트랜잭션의 시작의 표시에 응답하여: 자원 (A) 이 잠긴 후에 자원 (B) 이 잠기며; 그 다음에 자원 (B) 이 잠긴 후에 자원 (C) 이 잠기고; 마지막으로 자원 (C) 이 잠긴 후에 자원 (D) 이 잠긴다. 자원들 (A, B, C, 및 D) 의 모두가 잠긴 후에, 표시된 자원 요청들은 자원들 (B, C, 및 D) 에 대해 진행될 수도 있다. 다른 실시형태 (또는 구현예) 에서, "BEGIN_TRANSACTION" 에 의한 의사코드에서 나타내어지는, 자원 요청들의 트랜잭션의 설정의 일부분으로서, 자원들은 토폴로지적 정렬에 의해 표시되는 순서로 잠길 수도 있다.To avoid the possibility of a deadlock condition in this case, the transaction of resource requests may be defined as a sneak lock type rather than a loose lock type. In the transaction of the skeptic lock type resource requests, all resources indicated in the transaction of resource requests are returned before any indications of the individual resource requests (or before any arbitrary resource requests are issued), in response to the indication of the start of the transaction It is locked. Thus, with reference to the above pseudo code and FIGS. 20 and 22, resources A, B, and C are all locked in response to the execution of the code represented by "BEGIN TRANSACTION ". Resources may be locked in the order indicated by the resource graph of one topological sort. As methods for topological sorting, directional acyclic graphs are well understood by those skilled in the art, but they are not described in further detail herein. Any suitable topological sorting method may be used. The results of the topological sorting of the resource graph 2000 (FIG. 20) may be, for example, A, B, C, D in the exemplary case represented by the event time line 2200 of FIG. Thus, in response to an indication of the start of a transaction of resource requests for resource A: the resource B is locked after the resource A is locked; Then the resource C is locked after the resource B is locked; Finally, the resource (D) is locked after the resource (C) is locked. After all of the resources (A, B, C, and D) are locked, the indicated resource requests may be processed for resources (B, C, and D). In another embodiment (or implementation), as part of the setting of a transaction of resource requests, as indicated in the pseudocode by "BEGIN TRANSACTION ", resources may be locked in the order indicated by the topological sort.

도 23 은 자원 요청에 응답하기 위한 자원에 대한 방법 (2300) 을 도시하는 플로차트이다. 방법 (2300) 에 대해 언급되는 자원은, 예를 들어, 상기 의사코드에서 언급되는 자원들 (A, B, 및 C) 중 임의의 자원일 수도 있다. 블록 (2302) 에 의해 표시되는 바와 같이, 자원이 자원 요청을 수신한다. 예를 들어, 자원 (A) 은 상기의 의사코드에서 "REQUEST(A)" 에 의해 나타내어지는 코드의 실행에 응답하여 요청을 수신할 수도 있다. 자원이 느슨한 잠금 유형의 자원 요청들의 트랜잭션에 수반되는 경우, 자원은 이 시점에서 잠긴다. 그러나, 자원 요청이 발행되는 것에 대한 자원의 관점을 방법 (2300) 이 나타내기 때문에 도 23 에 잠금은 도시되지 않고, 자원은 자원의 일부분이 아닌 제어 엔티티에 의해 잠기고 잠금해제될 수도 있다. 예를 들어, 자원들로 그리고 자원들로부터 메시지들을 라우팅하는데 수반되는 제어 기능들의 일부분으로서, 프레임워크 관리자 (440) 에 포함된 엔티티는 자원들의 잠금과 잠금해제, 및 일어날 수도 있는 임의의 교착상태들의 처리를 제어할 수도 있다.23 is a flow chart illustrating a method 2300 for resources to respond to a resource request. The resource referred to for method 2300 may be any of the resources (A, B, and C) mentioned in the pseudocode, for example. As indicated by block 2302, the resource receives the resource request. For example, the resource A may receive the request in response to the execution of the code represented by "REQUEST (A)" in the above pseudocode. If the resource is accompanied by a transaction of loose lock type resource requests, the resource is locked at this point. However, the lock is not shown in FIG. 23 because the method 2300 indicates a view of the resource on which the resource request is issued, and the resource may be locked and unlocked by the controlling entity that is not part of the resource. For example, as part of the control functions involved in routing messages to and from resources, the entities included in the framework manager 440 may lock and unlock resources and any of the deadlocks that may occur Processing may be controlled.

블록 (2304) 에 의해 표시되는 바와 같이, 자원은 자원이 자원 요청들의 트랜잭션에 수반되는지 여부를 결정한다. 자원 요청들의 트랜잭션의 시작에서 설정될 수도 있는 상태 표시자가 각각의 자원에 포함되어 자원이 자원 요청들의 트랜잭션에 포함된다는 것을 표시할 수도 있다. 다른 실시형태 (또는 구현예) 에서, "BEGIN_TRANSACTION" 에 의해 나타내어지는 의사코드를 스레드가 실행한 후에 상태 표시자가 스레드에 설정될 수도 있어, 현재 스레드가 자원 요청들의 트랜잭션을 시작했음을 표시한다. 자원이 자원 요청들의 트랜잭션에 수반되지 않는다고 자원이 결정하는 경우, 자원은 블록 (2306) 에 의해 표시되는 바와 같이, 정규 방식으로 자원 요청을 수행한다. 즉, 자원은 도 12 및 도 15 에 대하여 상술된 정규 방식으로 자원 요청을 수행하고 완료할 수도 있다. 도 12 에 대하여 상술된 바와 같이, (트랜잭션화되지 않은) 자원 요청의 수행의 시작에서, 자원은 잠기고, 자원 요청의 완료에서, 자원은 잠금해제된다는 것에 유의한다.As indicated by block 2304, the resource determines whether the resource is involved in a transaction of resource requests. A status indicator, which may be set at the beginning of a transaction of resource requests, is included in each resource to indicate that the resource is included in the transaction of resource requests. In another embodiment (or implementation), a status indicator may be set on the thread after the thread executes the pseudo code represented by "BEGIN TRANSACTION ", indicating that the current thread has initiated a transaction of resource requests. If the resource determines that the resource is not involved in a transaction of resource requests, the resource performs the resource request in a regular manner, as indicated by block 2306. [ That is, the resource may perform and complete the resource request in the normal manner described above with respect to Figures 12 and 15. [ Note that at the beginning of the execution of a resource request (which is not transactional), as described above with respect to FIG. 12, the resource is locked, and upon completion of the resource request, the resource is unlocked.

자원이 자원 요청들의 트랜잭션에 수반된다고 자원이 결정하는 경우, 블록 (2308) 에 의해 표시되는 바와 같이, 자원은 (예를 들어, 다른 자원에 의해, 또는 "BEGIN_TRANSACTION" 에 의해 나타내어지는 의사코드에 의해) 상기에서 언급된 큐가 생성되었는지 여부를 결정한다. 큐가 존재하지 않는다고 자원이 결정하는 경우, 블록 (2310) 에 의해 표시되는 바와 같이, 자원은 큐를 생성한다. 블록 (2312) 에 의해 표시되는 바와 같이, 자원 요청들의 트랜잭션에 수반되는 자원은 그 다음에 자원에 대한 요청과 연관된 정보를 큐에 추가한다. 느슨한 잠금 방법 또는 대안적인 회의적 잠금 방법의 결과로, 자원은 큐에 정보를 추가하기 전에는 잠긴 상태에 있다는 것에 유의한다. 잠금은 자원이 정보를 큐에 추가한 후에 제거되지 않는다. 오히려, 상술된 바와 같이, 잠금은 오직 다른 프로세서 또는 다른 수신자로의 큐의 트랜잭션 및 송신의 종료의 표시, 그리고 다른 프로세서 또는 다른 수신자에서의 요청들의 배칭의 후속하는 프로세싱 시에만 제거된다.When a resource determines that a resource is involved in a transaction of resource requests, the resource may be updated (e.g., by another resource, or by a pseudocode indicated by "BEGIN_TRANSACTION ", as indicated by block 2308) ) ≪ / RTI > determines whether the above-mentioned queue has been created. If the resource determines that the queue does not exist, then the resource creates a queue, as indicated by block 2310. As indicated by block 2312, the resource involved in the transaction of resource requests then adds the information associated with the request to the resource to the queue. Note that as a result of loose locking methods or alternative skeptic locking methods, the resources are locked before adding information to the queue. Locks are not removed after the resource has added information to the queue. Rather, as described above, the lock is removed only at the time of subsequent processing of an indication of the transaction and transmission of the queue to another processor or other recipient, and the batching of requests at another processor or other recipient.

도 24 는 휴대용 컴퓨팅 디바이스에서 배칭되고 포킹된 자원 요청들을 관리하는 방법 및 시스템의 실시형태의 동작을 도시하는 타임라인 다이어그램이다. 상술된 도 2 내지 도 6 에서 도시된 시스템의 설명으로부터 이해되는 바와 같이, 모뎀 (202) 및 자원 전력 관리자 (resource power manager; "RPM") (204) 는 도 24 에서 도시되는 바와 같이 2 개의 프로세싱 엔티티들이다. 도 24 에서 도시된 바와 같이, 시스템 (101) 의 예시적인 실시형태는 당업자에 의해 이해되는 바와 같이 모뎀 (202) 및 RPM (204) 외에 다른 프로세싱 엔티티들을 이용할 수도 있다.24 is a timeline diagram illustrating operations of an embodiment of a method and system for managing resource requests that are batched and faked in a portable computing device. The modem 202 and the resource power manager ("RPM") 204, as will be understood from the description of the system shown in Figures 2-6 described above, Entities. As shown in FIG. 24, exemplary embodiments of system 101 may utilize other processing entities in addition to modem 202 and RPM 204, as will be understood by those skilled in the art.

도 24 에 도시된, 2 개의 프록시 자원들 RES0 (207A) 및 RES1 (207B) 의 소유자는 역시 도 2 에 도시된 자원 전력 관리자 ("RPM") (204) 이다. 이러한 2 개의 프록시 자원들 RES0 (207A) 및 RES1 (207B) 의 소유자로서, 도 24 에 도시된 바와 같은 RPM (204) 은 트랜잭션에서 이러한 2 개의 프록시 자원들에 발행된 요청들 중 임의의 요청을 이행한다.The owner of the two proxy resources RES0 207A and RES1 207B, shown in FIG. 24, is also the resource power manager ("RPM") 204 shown in FIG. As an owner of these two proxy resources RES0 207A and RES1 207B, the RPM 204, as shown in Figure 24, fulfills any of the requests issued to these two proxy resources in the transaction do.

도 24 에 도시된 바와 같은 RES0 (207A) 및 RES1 (207B) 은 프록시들이다. 프록시들은 당업자에 의해 이해되는 바와 같이 실제 자원들의 논리적 표현들이다. 프록시들은, 메모리에서, RPM (204) 을 통해 모뎀 (202) 과 같은 로컬 프로세싱 엔티티에 의해 액세스가능한 원격으로 위치된 하드웨어 또는 소프트웨어자원의 표현들이다. RPM (204) 은 모뎀 (202) 에 대해 원격으로 위치된 실제 자원들의 제어 내에 있다.RES0 207A and RES1 207B as shown in Fig. 24 are proxies. Proxies are logical representations of actual resources as understood by those skilled in the art. Proxies are representations of remotely located hardware or software resources accessible by the local processing entity, such as modem 202, via RPM 204, in memory. The RPM 204 is in control of the actual resources remotely located with respect to the modem 202.

이러한 2 개의 프록시들 RES0 (207A) 및 RES1 (207B) 은 프레임워크 관리자 (440) 의 일부분일 수도 있다. 일부 실시형태들에서, 2 개의 프록시 자원들 (207A, 207B) 은 하기에서 설명된 (그리고 도 18 의 블록 (1803) 과 연계하여 앞서 설명된) 바와 같은 배칭된 요청들의 큐 (115) 를 관리할 수도 있다. 프레임워크 관리자 (440) 가 존재하는 다른 실시형태들에서, 프레임워크 관리자 (440) 는 하기에서 설명되는 바와 같이 큐 (115) 를 관리할 수도 있다.These two proxies RES0 (207A) and RES1 (207B) may be part of framework manager (440). In some embodiments, the two proxy resources 207A, 207B manage a queue 115 of batched requests as described below (and described above in conjunction with block 1803 of FIG. 18) It is possible. In other embodiments where the framework manager 440 is present, the framework manager 440 may manage the queue 115 as described below.

상술된 바와 같이, RPM (204) 에 의해 관리되고 RPM (204) 에 아주 근접하여 위치되는 (그리고 간결성을 위해 도시되지 않은) 실제 자원들은 RPM (204) 내에 포함되거나 RPM (204) 내에 있다. 한편, 이러한 프록시들 (207A, 207B) 은 당업자에 의해 이해되는 바와 같이 소프트웨어로 관리되고 모뎀 (202) 에 의해 메모리에 저장된다. 프록시들은 요청들을 수신하고, 그 다음에 이러한 요청들을 RPM (204) 에 인접하게 또는 RPM (204) 내에 위치된 실제 자원들에게 이러한 요청들을 전달한다.As discussed above, the actual resources managed by the RPM 204 and located in close proximity to the RPM 204 (and not shown for brevity) are contained within the RPM 204 or within the RPM 204. On the other hand, these proxies 207A and 207B are managed by software, as understood by those skilled in the art, and stored in memory by the modem 202. [ The proxies receive the requests, and then pass these requests to the actual resources located within the RPM 204 or near the RPM 204. [

제 1 클라이언트 (208) 와 같은 클라이언트 애플리케이션들은 이러한 예시적인 실시형태에서 제 1 프로세싱 엔티티인 모뎀 (202) 의 소유자들이다. 클라이언트 애플리케이션들 (208) 은 통상적으로 RPM (204) 에 의해 관리되는 2 개의 프록시 자원들 RES0 (207A) 및 RES0 (207B) 에 대한 요청들을 발행한다.Client applications, such as the first client 208, are the owners of the modem 202, which is the first processing entity in this exemplary embodiment. Client applications 208 issue requests for two proxy resources RES0 207A and RES0 207B, which are typically managed by RPM 204. [

제 1 클라이언트 (208) 는 특정 트랜잭션을 위해 그리고 최적화를 위해 2 개의 프록시 자원들 (207A, 207B) 에 액세스할 필요가 있기 때문에, 제 1 클라이언트 (208) 는 이러한 2 개의 별개의 프록시 자원들 (207A, 207B) 에 대한 제 1 클라이언트의 요청들을 함께, 도 24 에 도시된 타임라인에서의 포지션 (305) 에서 트랜잭션으로 배칭하도록 결정할 수도 있다. 도 24 의 타임 라인 포지션 (305) 에서, 2 개의 프록시 자원들 (207A, 207B) 은 배칭된 요청의 착신 (incoming) 이 경고된다.Because the first client 208 needs access to two proxy resources 207A, 207B for a particular transaction and for optimization, the first client 208 can use these two distinct proxy resources 207A , 207B together with the transaction at the position 305 in the timeline shown in Fig. In the timeline position 305 of FIG. 24, the two proxy resources 207A and 207B are alerted to the incoming of the batched request.

요청들이 함께 트랜잭션들로 배칭되는 방법의 보다 세부사항들은 도 15 내지 도 23 과 연계하여 상기에서 논의된다. 포지션 (307) 에서, 프레임워크 관리자 (440) 를 통해 프록시 자원들 (207A, 207B) 은 제 1 클라이언트 (208) 에 의해 형성되는 배칭된 요청의 개시를 확인응답했다 (acknowledge).Further details of how requests are batched together into transactions are discussed above in connection with Figures 15-23. At position 307, the proxy resources 207A, 207B via the framework manager 440 acknowledge the initiation of the batched request formed by the first client 208. [

포지션 (310) 에서, 제 1 클라이언트 (208) 가 제 1 프록시 자원 RES0 (207A) 에 제 1 요청을 발행한다. 제 1 요청은 제 1 프록시 자원 (207A) 에 의해 서비스되지 않는다. 대신에, 제 1 프록시 자원 (207A) 은 다른 클라이언트들이 제 1 프록시 자원 (207A) 에 액세스하는 것으로부터 잠긴다. 포지션 (311) 에서, 제 1 프록시 자원 (207A) 이 수신된 제 1 요청을 큐 (115) 에 포워딩한다.At position 310, the first client 208 issues a first request to the first proxy resource RES0 207A. The first request is not serviced by the first proxy resource 207A. Instead, the first proxy resource 207A is locked from accessing the first proxy resource 207A by other clients. At position 311, the first proxy resource 207A forwards the received first request to the queue 115. [

큐 (115) 는 큐 내에 포함되는 정보에 대하여 임의의 특정 순서화를 가질 수도 있거나 갖지 않을 수도 있다. 큐는 큐의 데이터 구조를 통제하는 임의의 표준 큐 요구사항들을 가질 수도 있거나 갖지 않을 수도 있다. 다시 말해, 큐 (115) 는 당업자에 의해 이해되는 바와 같은 임의의 유형의 논리적 버킷을 포함할 수도 있다. 제 1 프록시 자원 (207A) 은 포지션 (312) 에서 제 1 클라이언트 (208) 에게 다시 확인응답 또는 호출 반환을 발행한다.The queue 115 may or may not have any particular ordering for the information contained in the queue. A queue may or may not have any standard queue requirements that control the data structure of the queue. In other words, the queue 115 may comprise any type of logical bucket as will be understood by those skilled in the art. The first proxy resource 207A issues an acknowledgment or call return back to the first client 208 at position 312. [

포지션 (315) 에서, 제 1 클라이언트 (208) 는 제 2 프록시 자원 (207B) 에 제 2 요청을 발행한다. 제 1 프록시 자원 (207A) 과 유사하게, 제 2 프록시 자원 (207B) 은 다른 클라이언트들이 제 2 프록시 자원 (207B) 에 액세스하는 것으로부터 잠긴다. 포지션 (316) 에서, 제 2 프록시 자원 (207B) 은 배칭 큐 (115) 에 수신된 제 1 요청을 포워딩한다. 그리고, 제 2 프록시 자원 (207B) 은 포지션 (317) 에서 제 1 클라이언트 (208) 에 다시 확인응답 또는 호출 반환을 발행한다.At position 315, the first client 208 issues a second request to the second proxy resource 207B. Similar to the first proxy resource 207A, the second proxy resource 207B is locked from accessing the second proxy resource 207B by other clients. At position 316, the second proxy resource 207B forwards the received first request to the serving queue 115. [ The second proxy resource 207B then issues an acknowledgment or call return back to the first client 208 at position 317. [

포지션 (252) 에서, 포킹된 트랜잭션 호출이 제 1 클라이언트 (208) 에 의해 초기화되었다. 포지션 (252) 은 또한 도 15 내지 도 23 과 연계하여 상술된 바와 같이 규칙적인 배칭 트랜잭션 호출이 종료될 시간에서의 인스턴스를 마킹한다. 양자 모두의 경우들에서, 배칭된 요청들은 여기서는 RPM (204) 에 송신될 것이다.At position 252, a forked transaction call was initiated by the first client 208. The position 252 also marks an instance at the time the regular batting transaction call is to end, as described above in connection with Figs. 15-23. In both cases, the batched requests will be sent to the RPM 204 here.

제 1 프록시 자원 (207A) 및 제 2 프록시 자원 (207B) 에 의해 나타내어지는 (본 도면에서 도시되지 않은) 실제 자원들은 배칭된 트랜잭션 동안에 잠길 것이고, 실제 자원들은 포지션 (252) 에서 배칭된 트랜잭션(들)의 그것들의 할당된 요청들을 완료할 것이다. 배칭된 트랜잭션(들)을 완료한 후에, 그러면 실제 자원들의 프록시들 (207A, 207B) 을 통해 실제 자원들은 제 1 클라이언트 (208) 에 확인응답을 반환했을 것이다.The actual resources (not shown in this figure) represented by the first proxy resource 207A and the second proxy resource 207B will be locked during the batched transaction and the actual resources will be locked in the transaction ), ≪ / RTI > After completing the batched transaction (s), then the actual resources would have returned an acknowledgment to the first client 208 via the proxies 207A, 207B of the actual resources.

제 1 및 제 2 프록시 자원들 (207A, 207B) 은 그러면 도 15 내지 도 23 에 도시된 정규 배칭된 트랜잭션 시나리오 하에서 잠금해제될 것이다. 포지션 (252) 에서 정규 배칭된 트랜잭션의 실행을 초기화/시작하는 대신에, 도 24 에서 도시된 바와 같이 발명의 시스템 (101) 은 포지션 (252) 에서 포킹된 트랜잭션을 초기화한다.The first and second proxy resources 207A, 207B will then be unlocked under the regular batched transaction scenario shown in Figures 15-23. Instead of initiating / initiating the execution of a regularly batched transaction at position 252, the inventive system 101 initiates the forked transaction at position 252 as shown in FIG.

포킹된 트랜잭션에서, 태스크들 및/또는 동작들이 나눠져서 태스크들 및/또는 동작들이 병렬로 수행될 수도 있다. 파선에 할당된 타임 라인 포지션 (255) 으로부터, 배칭된 트랜잭션이 비동기식 방식으로 그리고 RPM (204) 으로부터의 임의의 응답을 기다리지 않고 RPM (204) 에 프레임워크 관리자 (440) 에 의해 송신된다.In the forked transaction, tasks and / or operations may be divided so that tasks and / or operations are performed in parallel. From the timeline position 255 assigned to the dashed line, the batched transaction is sent by the framework manager 440 to the RPM 204 in an asynchronous manner and without waiting for any response from the RPM 204.

포지션 (255) 으로부터의 배칭된 요청을 포함하는 비동기식 호출 바로 후에 있는 포지션 (258) 에서, 프레임워크 관리자 (440) 는 제 1 프록시 자원 (207A) 및 제 2 프록시 자원 (207B) 을 잠금해제한다. 제 1 및 제 2 프록시 자원들 (207A, 207B) 이 잠금해제되고, 당업자에 의해 이해되는 바와 같이, 임의의 후속하는 요청들을 수락하나 프로세싱하지는 않을 수도 있다.At position 258, which is immediately after the asynchronous invocation that includes the bqed request from position 255, framework manager 440 unlocks first proxy resource 207A and second proxy resource 207B. The first and second proxy resources 207A and 207B may be unlocked and may not accept or process any subsequent requests as will be understood by those skilled in the art.

포지션 (257) 에서, 호출은 제 1 클라이언트 (208) 로 반환되고, 프록시 자원들 (207A 및 207B) 이 잠금해제됨을 표시한다. 제 1 및 제 2 프록시 자원들 (207A, 207B) 은 이 스테이지에서 인코히어런트 (incoherent) 상태에 있다. 이러한 2 개의 프록시 자원들 (207A, 207B) 은 이 단계에서 요청들을 수락하기는 하는 요청들이 프로세싱되지는 않았다.At position 257, the call is returned to the first client 208, indicating that the proxy resources 207A and 207B are unlocked. The first and second proxy resources 207A, 207B are in an incoherent state at this stage. These two proxy resources 207A, 207B have not been processed with requests to accept requests at this stage.

타임 라인 포지션 (260) 은 잠재적인 제 1 병렬 프로세싱 블록으로 특징지어졌다. 포지션 (260) 에서, 제 1 클라이언트 (208) 는 제 1 및 제 2 프록시 자원들 (207A, 207B) 에 대해 발행된 요청들이 RPM (204) 으로부터의 제어 하에 완료될 것을 기다리지 않으면서 다른 요청들을 계속 발행하고/하거나 다른 태스크들을 실행할 수도 있다. 종래의 시스템들에서, 제 1 클라이언트 (208) 는 포지션 (260) 에서 차단되었을 것이다.The timeline position 260 is characterized by a potential first parallel processing block. At position 260 the first client 208 continues to make other requests without waiting for requests issued for the first and second proxy resources 207A and 207B to be completed under control from the RPM 204. [ Publish and / or execute other tasks. In conventional systems, the first client 208 would have been blocked at position 260.

포지션 (260) 과 대응하는 포지션 (256) 은 제 2 병렬 프로세싱 블록이라고 특징지어질 수도 있다. 포지션 (256) 에서의 이러한 제 2 병렬 프로세싱 블록은 실제 자원들 (미도시) 에 의해 수행되고 RPM (204) 의 제어 하에 있는 제 1 및 제 2 자원 프록시들 (207A, 207B) 에 의해 중계되는 2 개의 요청들의 프로세싱과 관련된다.The position 260 and the corresponding position 256 may be characterized as a second parallel processing block. This second parallel processing block at position 256 is the second parallel processing block in position 2 which is executed by actual resources (not shown) and relayed by first and second resource proxies 207A, 207B under control of RPM 204 Lt; / RTI > requests.

이러한 2 개의 병렬 프로세싱 블록들 (256 및 257) 이 별개의 프로세서들 상에서 일어나는 것으로 도시되었으나, 당업자에 의해 이해되는 바와 같이, 이러한 병렬 프로세싱이 다중-코어 시스템에서의 상이한 코어들 사이에서, 또는 단일 코어 시스템에서의 2 개의 상이한 프로세싱 스레드들 사이에서 칩 상의 동일한 시스템 내에서 일어날 수 있는 것이 가능하다.Although these two parallel processing blocks 256 and 257 have been shown to occur on separate processors, it will be appreciated by those skilled in the art that such parallel processing may be performed between different cores in a multi-core system, It is possible to occur in the same system on the chip between two different processing threads in the system.

다음으로, 타임 라인 포지션 (262) 에서, 제 1 클라이언트 (208) 는 제 1 프록시 자원 (207A) 에 제 3 요청을 발행할 수도 있다. 포지션 (262) 에서, 다른 클라이언트 (미도시) 가 제 1 프록시 자원 (207A) 에 이러한 제 3 요청을 발행할 수도 있는 것이 가능하다. 이러한 제 3 요청은 단일 요청 또는 다른 트랜잭션의 일부분 중 어느 일방이다.Next, at timeline position 262, the first client 208 may issue a third request to the first proxy resource 207A. At the position 262, it is possible that another client (not shown) may issue this third request to the first proxy resource 207A. This third request is either a single request or a portion of another transaction.

프레임워크 관리자 (440) 또는 프록시 자원 (207A) 은 발행되는 이러한 제 3 요청을 모니터링할 것인데, 프레임워크 관리자 (440) 또는 프록시 자원 (207A) 이 제 1 클라이언트 (208) 에 의해 발행되는 이전의 2 개의 요청들이 병렬 프로세싱을 위해 (포킹된 요청들이라고 플래그 표시된) 트랜잭션으로부터 포킹해제되었다는 통지를 수신하였기 대문이다.The framework manager 440 or the proxy resource 207A will monitor this third request to be issued when either the framework manager 440 or the proxy resource 207A has been issued by the first client 208 ≪ / RTI > of the transactions have been unfrozen from the transaction (flagged as forked requests) for parallel processing.

프레임워크 관리자 (440) 또는 제 1 프록시 자원 (207A) 은 제 3 요청을 가지고 있고, (배칭 요청을 구성하는) 제 1 요청 및 제 2 요청이 제 1 프록시 자원 (207A) 에 의해 완료되고 서비스되었다고 RPM (204) 으로부터 포지션들 (269 및 270) 에서 통지를 수신할 때까지 기다린다.The framework manager 440 or the first proxy resource 207A has a third request and the first request and the second request (constituting the binding request) are completed and serviced by the first proxy resource 207A And waits until it receives a notification from the RPM 204 at the positions 269 and 270.

포지션들 (269 및 270) 에서의 메시지들은 RPM (204) 으로부터 완료 통지를 수신한 인터럽트 서비스 루틴 (interrupt service routine; "ISR") (299) 에 의해 발생된다. ISR (299) 은 메시지 운송수단 또는 메시지 매체이며, 여기서 RPM (204) 은 포킹되며 배칭된 요청들이 서비스되었고 완료되었음을, 로컬 프록시들로 나타내어지는 바와 같은 발행 엔티티에 시그널링할 수도 있다. ISR (299) 은 단지 이러한 방식으로 이용될 수도 있는 편리한 종래의 매커니즘이다. 시스템 (101) 은 RPM (204) 과 제 1 클라언트 (208) 사이의 통신들을 중계하기 위해 ISR (299) 로 제한되지 않고, 포킹되며 배칭된 요청이 완료되었다는 것을 표시하도록 메시지들을 전송하기 위한 다른 매커니즘들을 사용할 수 있다.The messages at positions 269 and 270 are generated by an interrupt service routine ("ISR") 299 that has received a completion notification from the RPM 204. The ISR 299 is a message transport or message medium in which the RPM 204 may signal to the issuing entity that it is forked and represented as local proxies that the batched requests have been serviced and completed. ISR 299 is a convenient conventional mechanism that may only be used in this manner. The system 101 is not limited to the ISR 299 for relaying communications between the RPM 204 and the first client 208 and may be any other means for sending messages to indicate that a batched request has been completed, Mechanisms can be used.

당업자에 의해 이해되는 바와 같은, ISR (299) 외에, 2 개의 프로세싱 엔티티들 사이에서 메시지들을 중계하기 위한 임의의 다른 통신 매체가 사용될 수도 있다. 통신들을 중계하는 ISR (299) 의 하나의 이점은, 모뎀 (202) 이 RPM (204) 으로부터의 포킹되어진, 배칭된 요청 완료 신호를 기대할 필요가 없다는 점에서, 2 개의 프로세싱 엔티티들 사이의 통신들이 비동기로 중계될 수도 있다는 것이다.In addition to ISR 299, as will be understood by those skilled in the art, any other communication medium for relaying messages between two processing entities may be used. One advantage of the ISR 299 that relays communications is that communications between the two processing entities are not required in that the modem 202 does not need to expect a forked, batched request completion signal from the RPM 204 And may be relayed asynchronously.

ISR (299) 을 이용하여, RPM (204) 은 포킹되어진, 배칭된 요청 완료 신호를 모뎀 (204) 에 전송할 수도 있다. 다른 예시적인 실시형태에서, ISR (299) 을 이용하는 대신에, 모뎀 (202) 은 RPM (204) 을 폴링하고 RPM (204) 에 의해 발행될 포킹되어진, 배칭된 요청 완료 신호를 검색하도록 설계될 수도 있다. 포킹되어진, 배칭된 요청 완료 신호를 통신하는 이러한 대안예들은 당업자에 의해 이해된다.Using the ISR 299, the RPM 204 may send the forged request completion signal to the modem 204. In another exemplary embodiment, instead of using the ISR 299, the modem 202 may be designed to poll the RPM 204 and retrieve the forged, fired request completion signal to be issued by the RPM 204 have. These alternative examples of communicating the forged, completed request completion signal are understood by those skilled in the art.

제 1 및 제 2 요청을 포함하는 포킹되어진, 배칭된 요청이 포지션 (262) 에서 또는 포지션 (262) (제 3 요청이 발행된 시점) 전에 이미 완료된 경우, 프레임워크 관리자 또는 프록시 제 1 프록시 자원 (207A) 은 기다지리 않고 제 1 클라이언트 (208) 에 의해 발행된 제 3 요청을 프로세싱하는 것을 즉시 시작하는 대신에 제 3 요청을 가지고 있을 것이다.If the forged, batched request containing the first and second requests has already been completed at position 262 or before position 262 (at which the third request is issued), the framework manager or proxy first proxy resource 207A will have a third request instead of immediately starting processing the third request issued by the first client 208 without waiting.

후속하여, 포지션 (272) 에서, 제 1 프록시 자원 (207A) 은 RPM (204) 에 제 3 요청을 포워딩한다. 제 3 요청이 제 1 자원 (207A) 에 대응하는 실제 자원 (미도시) 에 의해 서비스된 후에, RPM (204) 은 제 1 프록시 자원 (207A) 과 관련되는 제 3 요청 완료 신호를 포지션 (274) 에서 발행한다.Subsequently, at position 272, the first proxy resource 207A forwards the third request to the RPM 204. [ After the third request is serviced by the actual resource (not shown) corresponding to the first resource 207A, the RPM 204 sends a third request completion signal associated with the first proxy resource 207A to the position 274, .

도 24 에서 전체적으로 한 단계 뒤로 가서 보면, 타임 라인 포지션 (258) 에서, 이러한 포지션은 제 1 프록시 자원 (207A) 및 제 2 프록시 자원 (207B) 에 대한 포크 (fork) 지점으로 특징지어질 수도 있다. 이는 제 1 프록시 자원 (207A) 및 제 2 프록시 자원 (207B) 이 포킹된 곳인데, 그것들이 포킹된 트랜잭션의 일부분이기 때문이다. 이러한 2 개의 프록시 자원들 (207A, 207B) 은 포킹된 트랜잭션의 일부분이기 때문에 암시적으로 포킹되었다.24, this position may be characterized as a fork point for the first proxy resource 207A and the second proxy resource 207B, in the timeline position 258. [ This is where the first proxy resource 207A and the second proxy resource 207B are forked because they are part of the forked transaction. These two proxy resources 207A, 207B are implicitly forked because they are part of the forked transaction.

이는 도 24 의 배칭된 트랜잭션이 포킹되는 동안 2 개의 프록시 자원들 (207A, 207B) 이 또한 포킹된다는 것을 의미한다. 다시 말해, 3 개의 별개의 논리적 엔티티들 또는 표현들: 트랜잭션 그 자체, 제 1 프록시 자원 (207A), 및 제 2 프록시 자원 (207B) 이 포크 지점 (258) 에서 포킹되었다. 포크 지점 (252) 에서, 제 1 및 제 2 프록시 자원들 (207A, 207B) 은 인코히어런트 상태로 진입하는데, 이는 하기에서 설명될 것으로 제 1 및 제 2 프록시 자원들 (207A, 207B) 이 조인 (join) 지점에서 조인될 때까지 제 1 및 제 2 프록시 자원들 (207A, 207B) 이 새로운 요청에 서비스할 수 없다는 것을 의미한다.This means that the two proxy resources 207A and 207B are also forked while the batched transaction of FIG. 24 is being forked. In other words, three distinct logical entities or representations: the transaction itself, the first proxy resource 207A, and the second proxy resource 207B were forked at the fork point 258. [ At the fork point 252, the first and second proxy resources 207A and 207B enter the incoherent state, as will be described below, where the first and second proxy resources 207A and 207B are joined the first and second proxy resources 207A and 207B can not service the new request until they are joined at the join point.

이러한 인코히어런트 상태에서, 제 1 및 제 2 프록시 자원들 (207A, 207B) 은 포킹된 요청이 완료되고 모든 관련된 클린-업 태스크들이 로컬로 완료될 때까지 새로운 요청들에 서비스할 수 없다. 이러한 시나리오로는, 여러 개의 조인 지점들이 가능할 수도 있다. 조인 지점들이 이제 다음과 같이 설명될 것이다.In this incoherent state, the first and second proxy resources 207A, 207B are unable to service new requests until the forked request is completed and all associated clean-up tasks are completed locally. In this scenario, multiple join points may be possible. The join points will now be described as follows.

도 24 에 도시된 예시적인 실시형태에서, 타임 라인 포지션 (270) 에서 배칭 요청 완료 신호가 제 1 프록시 자원 (207A) 과 교차하는 곳에 조인 지점 (280) 이 존재한다. 이러한 조인 지점 (280) 은 제 1 프록시 자원 (207A) 과 배칭 요청을 포함하는 트랜잭션에 대한 조인 지점 (280) 으로 특징지어질 수도 있다.In the exemplary embodiment shown in FIG. 24, there is a join point 280 at the timeline position 270 where the batched request complete signal crosses the first proxy resource 207A. This join point 280 may be characterized as a first proxy resource 207A and a join point 280 for the transaction that includes the batting request.

조인 지점 (280) 에서, 2 개의 요청들 (제 1 프록시 자원 (207A) 에 대해 예정된 제 1 요청, 및 제 2 프록시 자원 (207B) 에 대해 예정된 제 2 요청) 이 포함된 트랜잭션임에도 불구하고, 오직 제 1 프록시 자원 (207A) 만이 조인 지점 (280) 에서 조인된다. 제 1 프록시 자원 (207A) 은 제 1 클라이언트 (208) 가 제 3 요청에 대하여 고려하는 유일한 엔티티이기 때문에, 제 2 프록시 자원 (207B) 을 조인하기 위해 필요한 임의의 클린업 작업은 계속 연기될 수도 있다. 클린업 작업은 (제 2 프록시 자원 (207B) 으로 나타내어지는) 제 2 자원을 코히어런트 (coherent) 상태에 있게 하기 위해 필요한 추가적인 태스크들 또는 작업을 지칭할 수도 있으며, 코히어런트 상태에서 제 2 자원은 다른 요청에 서비스할 수도 있다.At join point 280, although there are two requests (a first request scheduled for the first proxy resource 207A and a second request scheduled for the second proxy resource 207B) Only the first proxy resource 207A is joined at the join point 280. [ Since the first proxy resource 207A is the only entity that the first client 208 considers for the third request, any cleanup operations needed to join the second proxy resource 207B may be continuously deferred. The cleanup operation may refer to additional tasks or tasks needed to keep the second resource in a coherent state (represented by second proxy resource 207B), and in a coherent state the second resource May serve other requests.

제 1 프록시 자원 (207A) 및 제 2 프록시 자원 (207B) 이 조인 지점 (280) 에서 조인가능할지라도, 제 3 요청이 오직 제 1 프록시 자원 (207A) 만을 요구하기 때문에 오직 제 1 프록시 자원 (207A) 만이 조인 지점 (280) 에서 조인된다. 제 2 프록시 자원 (207B) 은 조인 지점 (280) 에서 인코히어런트 상태에 있는 것으로 특징지어질 수도 있다. 제 2 프록시 자원 (207B) 이 이 스테이지에서 조인가능하나, 제 2 프록시 자원 (207B) 은 제 3 요청에 의해 요구되지 않기 때문에, 제 2 프록시 자원은 그것의 인코히어런트 상태로 있을 수 있다.Although the first proxy resource 207A and the second proxy resource 207B are joinable at the join point 280, only the first proxy resource 207A is selected because the third request only requires the first proxy resource 207A, Are joined at the join point 280. The second proxy resource 207B may be characterized as being in an incoherent state at the join point 280. [ Since the second proxy resource 207B is joinable at this stage, but the second proxy resource 207B is not required by the third request, the second proxy resource may be in its inchoherent state.

본 예시적인 실시형태에서 제 2 프록시 자원 (207B) 과 같은 포킹된 자원은 그것이 다른 요청에 의해 필요할 때까지 조인되지 않는다. 이러한 인코히어런트 상태에 있는 동안에, 다른 엔티티가 제 2 프록시 자원으로부터의 서비스들을 필요로 하지 않는 경우, 제 2 프록시 자원 (207B) 은 포크 요청과 연관된 임의의 클린업 작업 또는 클린업 태스크들을 완료할 필요가 없다. 이는 클린업 작업 또는 클린업 태스크들이 추후에 완료되는 것을 허용한다. 클린업 작업 또는 클린업 태스크들을 추후로 연기하는 것은 프로세싱 전력을 절약한다: 이는 클린업 작업이 절대적으로 필요할 때 (인코히어런트 상태에 있을 수도 있는 자원으로부터의 서비스들이 필요할 수도 있을 때) 까지 연기하는 것을 허용한다.In this exemplary embodiment, the forked resource, such as the second proxy resource 207B, is not joined until it is needed by another request. While in this incoherent state, if the other entity does not require services from the second proxy resource, then the second proxy resource 207B needs to complete any cleanup or cleanup tasks associated with the fork request none. This allows clean-up or clean-up tasks to be completed later. Deferring cleanup or cleanup tasks later saves processing power: it allows you to postpone until cleanup is absolutely needed (when services from resources that might be in an incoherent state may be needed) .

(도 24 에서 도시된 제 2 프록시 자원 (207B) 으로 표현되는) 제 2 자원과 같은, (인코히어런트 상태에 있을 것이 요구되는) 자원으로부터 서비스되는 시점에서, 예컨대, 제 1 클라이언트 (208) 또는 일부 다른 클라이언트로부터 발행되는 제 4 요청 (미도시) 의 시점에서, 그러면, 이러한 클린업 작업 또는 클린업 태스크들은 현재 인코히어런트 상태에 있는 이러한 제 2 자원에 대해 발행된 제 4 요청의 프로세싱 및 처리 전에 (제 2 프록시 자원 (207B) 으로 나타내어지는) 제 2 실제 자원에 의해 완료될 수도 있다.At a point in time when served from a resource (which is required to be in an incoherent state), such as a second resource (represented by a second proxy resource 207B shown in FIG. 24) At the time of a fourth request (not shown) issued from some other client, then such cleanup or cleanup tasks are processed before the processing and processing of the fourth request issued for this second resource in the current incoherent state May be completed by a second actual resource (denoted as second proxy resource 207B).

따라서, 제 4 요청과 같은 요청의 수신 시에, 이전에 포킹된 요청에 기초하여 인코히어런트 상태에 있는 자원은 제 1 클라이언트 (208) 와 같은 엔티티로부터의 정식 요청을 수신하는 경우 클린업 작업을 수행하고 코히어런트 상태로 다시 진입할 수도 있다.Thus, upon receipt of a request, such as a fourth request, a resource in an incoherent state based on a previously forked request performs a cleanup operation when receiving an authoritative request from an entity such as the first client 208 And may enter again in a coherent state.

트랜잭션에 서비스하도록 이용되고 있는 임의의 하나의 자원에 대한 요청이 이루어질 때마다 트랜잭션은 조인하거나 코히어런트 상태로 진입한다. 트랜잭션의 일부분인 자원들의 각각에 대한 별개의 요청들이 이루어지나, 트랜잭션 엔티티가 실행되는 제 1 조인 지점에서 조인될 것으로 여겨지는 경우, 즉, 하기에서 더 설명되는 바와 같이, 제 1 후속하는 요청이 트랜잭션에서의 자원들 중 임의의 자원에 도착하는 경우 또는 트랜잭션 그 자체가 명시적으로 조인되는 경우, 다수의 조인 지점들이 존재할 수도 있다.Each time a request is made for any one resource being used to service a transaction, the transaction joins or enters a coherent state. Separate requests for each of the resources that are part of the transaction are made, but if the transaction entity is deemed to be joined at the first join point to be executed, i.e., as described further below, There may be multiple join points when arriving at any of the resources at, or when the transaction itself is explicitly joined.

그래서, 예를 들어, 제 4 요청이 제 2 프록시 자원 (207B) 에 대해 제 1 클라이언트 (208) 에 의해 발행된 경우, 제 2 조인 지점 (미도시) 은 제 1 조인 지점 (280) 에 비해 이후의 포지션에서 그리고 제 2 프록시 자원 (207B) 에 대하여 일어날 수도 있다. 매커니즘은 트랜잭션을 명시적으로 조인시키도록 제공될 수도 있다. 이러한 매커니즘은 트랜잭션 뿐만 아니라, 트랜잭션의 일부분인 모든 단일 자원을 조인시킬 것이다.Thus, for example, if the fourth request is issued by the first client 208 to the second proxy resource 207B, then the second join point (not shown) Lt; RTI ID = 0.0 > 207B < / RTI > The mechanism may be provided to explicitly join the transaction. This mechanism will join all single resources that are part of the transaction as well as the transaction.

트랜잭션을 조인시키기 위한 이러한 매커니즘은 트랜잭션의 모든 요청들이 완료될 때까지 시스템이 기다리게 하도록 설계되기 때문에 차단 호출로 특징지어질 수도 있다. 그래서, 예를 들어, 명시적 호출을 한 제 1 클라이언트 (208) 와 같은 엔티티가 트랜잭션에 조인하면, RPM (204) 의 제어 하에 실제 제 1 및 제 2 자원들에 의해 제 1 요청 및 제 2 요청이 완료될 때까지 조인 트랜잭션 호출은 클라이언트를 차단할 것이다.This mechanism for joining transactions may be characterized as a blocking call because the system is designed to wait until all requests for a transaction have been completed. Thus, for example, if an entity, such as a first client 208 that made an explicit call, joins a transaction, the first request and the second request by the first and second resources under control of the RPM 204 Until this is done, the join transaction call will block the client.

포지션들 (269 및 270) 로 표시되는 바와 같이 제 1 및 제 2 요청들이 완료되었다는 통지를 조인 트랜잭션 호출이 수신하면, 제 1 및 제 2 프록시 자원들 (207A, 207B) 이 트랜잭션의 일부분이기 때문에, 조인 트랜잭션 호출은 제 1 및 제 2 프록시 자원들 (207A, 207B) 을 함께 조인시킬 것이다. 조인 트랜잭션 호출은 그러면 제 1 클라이언트 (208) 와 같은 요청하는 엔티티에 다시 통지 (호출) 를 전송하여, 제 1 및 제 2 프록시 자원들 (207A, 207B) 이 다시 과도한 지연 없이 임의의 다른 추가적인 요청들을 프로세싱하도록 준비된 코히어런트 상태에 있다는 것을 표시한다. 이러한 프록시 자원들 (207A, 207B) 이 조인 트랜잭션 호출이 부재한 인코히어런트 상태에 있도록 된 경우 클린업으로 인해 지원이 존재했을 것이다.Since the first and second proxy resources 207A and 207B are part of the transaction when a join transaction call receives notification that the first and second requests have been completed, as indicated by the positions 269 and 270, The join transaction call will join the first and second proxy resources 207A, 207B together. The join transaction call may then send a notification back to the requesting entity, such as the first client 208, so that the first and second proxy resources 207A and 207B may again send any other additional requests And is in a coherent state ready for processing. If these proxy resources (207A, 207B) were in an incoherent state with no joining transaction invocation, support would have been due to the cleanup.

조인 트랜잭션 호출이 이용될 예시적인 시나리오들은 다음과 같다: 명시적 동기화, 또는 요청들 및/또는 태스크들의 세트의 게이팅 (gating) 의 필요성이 있는 경우 조인 트랜잭션이 이용될 수도 있다. 그래서, 예를 들어, 일부 전력 레일들을 턴 온하기 위해 RPM (204) 에 대해 발행될 것을 필요로 하는 요청을 가정한다. 각각의 전력 레일에 대한 개별적인 요청들은 트랜잭션으로 묶이거나 배칭될 수도 있다.Exemplary scenarios in which a join transaction call will be used are as follows: A join transaction may be used if there is a need for explicit synchronization, or gating of a set of requests and / or tasks. So, for example, assume a request that needs to be issued to the RPM 204 to turn on some power rails. Individual requests for each power rail may be bundled or batched into a transaction.

전력 레일들에 대해 발행된 요청들을 갖는 이러한 시나리오에서, RPM (204) 이 다양한 유형의 자원들 (207A, 207B) 에 대한 일부 전력 레일들을 턴 온하는 동안에, 클라이언트는 요청을 프로세싱할 수 있기 전에 그러한 레일들이 온 되는데 필요한 로컬 자원에 대한 요청을 발행할 필요가 있다고 가정한다.In this scenario with requests issued for power rails, while the RPM 204 is turning on some of the power rails for the various types of resources 207A, 207B, It is assumed that it is necessary to issue a request for the local resources required for the rails to be turned on.

본원에서는 명시적 조인 호출이 이용되어 로컬 요청을 발행/서비스하기 전에 레일들이 전력 업될 때까지 시스템 클라이언트는 기다릴 수도 있다. 명시적 조인 호출에 반대인 것은 "느슨한 조인" 또는 "파이어-앤드-포겟 (fire-and-forget)" 호출로 특징지어질 수도 있는 호출이다. 느슨한 조인 호출은, 오직 후속하는 요청이 이러한 자원에 대해 이루어진 경우에만 또는 소정의 미리 결정된 시간 기간 후에, 자원들 (207A, 207B) 이 코히어런트 상태에 다시 있게 될 것을 요구한다.An explicit join call is used here and the system client may wait until the rails are powered up before issuing / servicing local requests. The opposite of an explicit join call is a call that may be characterized as a "loose join" or a "fire-and-forget" call. A loose join call requires that resources 207A, 207B remain in a coherent state only if a subsequent request is made to this resource or only after a predetermined time period.

시스템은 트랜잭션이 그 자체가 (코히어런트 상태로) 조인하는 지점에서 모든 자원들 (207A, 207B) 이 다시 코히어런시로 있게 하는 것을 허용한다. 포지션 (262) 에서 세번째로 발행된 요청은, 당업자에 의해 이해되는 바와 같이, 쉽게, 모든 것 (트랜잭션 그 자체, 뿐만 아니라 2 개의 프록시 자원들 (207A, 207B)) 이 다시 코히어런트 상태에 있게 할 수 있었을 수도 있다. 위에서 논의된 바와 같이, 이는, 모든 프록시 자원들 (207A, 207B) 이 코히어런트 상태로 다시 있게 하지 않는 상기에서 논의된 도 24 의 특정 실시형태에 대한 최적화를 위한 것이다. 상술된 실시형태에서, 일부 자원들에 대한 클린업 작업을 지연하는 것이 유리한데, 이는 트랜잭션이 조인된 후에 모든 자원들이 코히어런트 상태에 있는 것은 아님을 의미한다.The system allows all resources (207A, 207B) to co-exist again at the point where the transaction joins itself (coherently). The third issued request at position 262 can easily be used to ensure that everything (transaction itself, as well as two proxy resources 207A, 207B) is again coherent, as understood by those skilled in the art It might have been possible. As discussed above, this is for optimization for the particular embodiment of FIG. 24 discussed above in which all proxy resources 207A, 207B do not come back into a coherent state. In the above-described embodiment, it is advantageous to delay the cleanup operation for some resources, which means that not all resources are in a coherent state after the transaction is joined.

상술된 바와 같이, 프록시 자원 (207A, 207B) 이 다수의 요청들을 포함하는 트랜잭션 뿐만 아니라 포킹가능할 수도 있다고 클라이언트 (208) 가 명시할 수도 있다. 클라이언트 (208) 는 또한 (부정적인 맥락에서) 프록시 자원 (207A, 207B) 또는 트랜잭션이 포킹가능하지 않을 수도 있다고 명시할 수도 있다.As described above, the client 208 may specify that the proxy resources 207A, 207B may be forkable as well as transactions involving multiple requests. The client 208 may also specify (in a negative context) that the proxy resource 207A, 207B or the transaction may not be able to be made available.

자원은 클라이언트 (208) 에 의해 지정되지 않았을 수도 있는 트랜잭션이 포킹되었거나 포킹가능할지라도 자원 그 자체를 포킹할 수도 있다. 예를 들어, 제 2 자원 (207B) 이 로컬 자원이고 프록시가 아니라고 가정한다. 한편, 도 24 에 도시된 바와 같은 제 1 자원 (207A) 은 프록시로 남아 있고 RPM (204) 의 제어 하에 있다. 제 2 자원 (207B) 이 모뎀 (202) 에 대한 로컬 자원인 이러한 시나리오에서, 제 2 자원 (207B) 은 RPM (204) 에 의한 제어 하에 있지 않을 것이다.The resource may fork the resource itself, even if the transaction that may not have been specified by the client 208 is forked or loosable. For example, assume that the second resource 207B is a local resource and not a proxy. On the other hand, the first resource 207A as shown in Fig. 24 remains as a proxy and is under the control of the RPM 204. [ In this scenario, where the second resource 207B is a local resource for the modem 202, the second resource 207B will not be under the control of the RPM 204. [

클라이언트 (208) 가 제 1 및 제 2 자원들 (207A, 207B) 에 대한 배칭 요청을 포함하는 트랜잭션을 발행했고, 클라이언트가 그 트랜잭션이 포킹가능하도록 지정하지 않았을 수도 있을지라도, 제 2 자원 (207B) 은 그 자체에 따라 트랜잭션으로부터 포킹해제하고 제 1 자원 (207A) 에 의해 프로세싱되는 요청과 관계없이 제 2 자원 (207B) 의 요청을 프로세싱할 수도 있는데, 이는 다시 새롭게 지정된 제 2 로컬 자원 (207B) 에 대한 프록시이다. 이는 트랜잭션이 포킹가능한 것으로 클라이언트 (208) 에 의해 지정되지 않았을 수 있을지라도 제 2 로컬 자원 (207B) 이 트랜잭션으로부터 그 자체로 포킹되는 실시예이다.Although the client 208 has issued a transaction involving a batting request for the first and second resources 207A and 207B and the client has not specified that the transaction is forkable, Depending on itself, to process the request of the second resource 207B independently of the request to be forked from the transaction and processed by the first resource 207A, which in turn may request the newly assigned second local resource 207B It is a proxy for. This is an embodiment in which the second local resource 207B is loosened from the transaction itself, even though the transaction may not have been specified by the client 208 as being forkable.

상기 트랜잭션들의 관점에서, 다수의 트랜잭션들이 끼워넣어질 (nest) 수도 있다는 것을 당업자는 인지할 것이다. 끼워넣어진 다수의 트랜잭션 시나리오에서, 끼워넣어진 로컬 트랜잭션들의 안쪽 트랜잭션이 동기식으로 종료되길 원하는 한편 바깥쪽 트랜잭션이 포킹가능하게 되도록 원하는 것이 가능하다. 이러한 시나리오에서, 트랜잭션들의 끼워넣어진 그룹의 거동을 제어하는 것은 끼워넣어진 다수의 트랜잭션의 바깥쪽 트랜잭션이다. 그래서, 방금 설명된 시나리오에서, 바깥쪽 트랜잭션이 포킹가능할 것을 원하는 경우, 안쪽 트랜잭션은 그러한 포킹을 허락할 것이다.Those skilled in the art will recognize that in terms of the transactions, a number of transactions may be nested. In multiple embedded transaction scenarios, it is possible to want the inner transaction of the embedded local transactions to be synchronously terminated while the outer transaction is to be made available. In such a scenario, controlling the behavior of the embedded group of transactions is the outer transaction of a number of inserted transactions. So, in the scenario just described, an inner transaction would allow such forking if it wanted the outer transaction to be able to be forked.

상술된 시스템 (101) 은 또한 조인 콜백들을 지원한다. 조인 콜백들은 단지 트랜잭션에 조건적이고 트랜잭션이 조인된 후에 실행되는 경로들이다. 조인 콜백들은 CPU 의 클록 설정들이 변화되길 원하는 특정 실시예와 연계하여 설명될 수도 있다. 이러한 시나리오에서, RPM (204) 의 제어 하에 있을 수도 있는 도 24 에 도시된 것들과 같은 원격 자원들 뿐만 아니라, 로컬로 관리되는 자원들에 대해 호출들 및 요청들이 이루어질 수도 있다.The system 101 described above also supports join callbacks. Join callbacks are only conditional to the transaction and are the paths that are executed after the transaction is joined. The join callbacks may be described in connection with a particular embodiment in which the clock settings of the CPU are desired to be changed. In such a scenario, calls and requests may be made to locally managed resources, as well as to remote resources such as those shown in FIG. 24, which may be under the control of the RPM 204.

클록은 시스템이 소정의 전압으로 가동되고 동작되어 소정의 프로세싱 속도를 유지할 것을 요구할 수도 있다. 그래서, 예를 들어, 당신이 클록 속도를 200 MHz 에서 400 MHz 로 변화시키길 원하는 경우, 전압 변화가 필요할 수도 있다. 전압은 RPM (204) 에 의해 제어될 수도 있다, 즉, CPU 의 동작 전압을 증가시키기 위해, 하나 이상의 요청들이 원격 자원들에 보내지는 것이 필요할 수도 있다.The clock may require that the system be operated and operated at a predetermined voltage to maintain a predetermined processing rate. So, for example, if you want to change the clock rate from 200 MHz to 400 MHz, you might need to change the voltage. The voltage may be controlled by the RPM 204, i.e., to increase the operating voltage of the CPU, it may be necessary for one or more requests to be sent to the remote resources.

그래서, 효율을 위해, 트랜잭션은 원격 요청들의 세트를 묶도록 생성되어야 한다. 또한, 전압에서의 변화가 RPM (204) 에 의해 시행되는 동안에 클라이언트가 다른 태스크들을 계속할 수 있도록 트랜잭션이 포킹될 수도 있다. 그러나, 전압이 새로운 클록 속도에 대해 요구되는 레벨에 있지 않은 시나리오에서, 클록 속도가 상승되기 전에 전압이 상승될 필요가 있을 것이다.Thus, for efficiency, the transaction must be created to bind a set of remote requests. The transaction may also be forked so that the client can continue with other tasks while the change in voltage is enforced by the RPM 204. [ However, in a scenario where the voltage is not at the required level for a new clock rate, the voltage will need to be raised before the clock rate is raised.

새로운 전압 상승이 있기 전에 클록이 증가된 경우, 일부 하드웨어는 손상될 수도 있으며, 이는 바람직하지 않다. 이러한 시나리오에서, 전압을 변화시키고 그 다음에 그 요청 (조인 콜 백) 의 완료물을 묶도록 RPM (204) 에 포킹된 트랜잭션을 자원이 발행하는 것이 가능할 수도 있으며, 콜 백은 로컬 클록에 대한 요청을 발행할 것이다.If the clock is increased before a new voltage rise, some hardware may be damaged, which is undesirable. In such a scenario, it may be possible for the resource to issue a transaction that is tokenized in the RPM 204 to change the voltage and then bundle the completion of the request (join callback), and the callback may request a request for a local clock Will be issued.

(그 클록 자원에 요청을 발행함으로써) 로컬 클록 주파수를 증가시키기 위한 로직을 포함하는 조인 콜백은 따라서 오직 필요한 의존성 (즉, 전압) 이 준비된 후에만 이러한 요청이 프로세싱되는 것을 보장하는데 이용될 수도 있다. 제 1 클라이언트 (208) 가 RPM (204) 에 의해 제어되는 2 개의 레일들을 턴 온하길 원한다고 가정한다. 또한, 제 1 클라이언트 (208) 는 로컬 클록을 턴 온할 필요가 있다고 가정한다. 이러한 로컬 클록은 이러한 2 개의 레일들이 턴 온될 때까지 특정 값으로 설정되지 않을 수도 있다.A join callback that includes logic to increase the local clock frequency (by issuing a request to that clock resource) may thus be used to ensure that this request is processed only after the necessary dependencies (i.e., voltages) are ready. It is assumed that the first client 208 wants to turn on two rails controlled by the RPM 204. It is also assumed that the first client 208 needs to turn on the local clock. This local clock may not be set to a specific value until these two rails are turned on.

제 1 클라이언트 (208) 가 RPM (204) 으로 다수의 레일들을 턴 온할 필요가 있기 때문에, 제 1 클라이언트 (208) 는 제 1 클라이언트의 이러한 2 개의 레일들에 대한 요청들을 단일 트랜잭션으로 배칭할 수도 있다. 오직 이러한 단일 트랜잭션이 완료된 경우에만, 제 1 클라이언트 (208) 가 로컬 클록에 대한 변화가 일어날 것을 요청할 수 있다.Because the first client 208 needs to turn on multiple rails with the RPM 204, the first client 208 may also bind the requests for these two rails of the first client into a single transaction . Only when such a single transaction has been completed can the first client 208 request a change to the local clock to occur.

포킹된 트랜잭션에서, 제 1 클라이언트 (208) 는 정확히 언제 요청들이 서비스될지를 모르고, 이러한 특정 시나리오에서, 제 1 클라이언트 (208) 는 언제 제 1 및 제 2 레일들이 RPM (204) 에 의해 턴 온되어는지를 모를 것이다. 그래서, 제 1 클라이언트 (208) 는 2 개의 레일들에 대한 2 개의 요청들을 포함하는 제 1 클라이언트의 트랜잭션을 조인 콜백 함수로서 로컬 클록에 첨부할 수도 있다. 이러한 예시적인 실시형태에서, 조인 콜 백은 도 1 에서 도시된 바와 같이 포지션 (270) 에서 일어날 것이다. 포지션 (270) 후에, 제 1 및 제 2 레일들이 RPM (204) 에 의해 턴 온 되었다고 콜백이 표시했을 것이기 때문에 로컬 클록이 조절될 수도 있다. 조인 콜백 특징은 요청 또는 트랜잭션이 서비스된 후에 코히어런시를 달성하는 자원 또는 트랜잭션의 프로세스의 일부분이다.In the forked transaction, the first client 208 does not know exactly when the requests will be serviced, and in this particular scenario, the first client 208 is configured such that when the first and second rails are turned on by the RPM 204 You will not know. Thus, the first client 208 may attach the transaction of the first client, which includes two requests for two rails, to the local clock as a join callback function. In this exemplary embodiment, the join callback will occur at position 270 as shown in FIG. After position 270, the local clock may be adjusted because the callback would have indicated that the first and second rails were turned on by the RPM 204. The join callback feature is part of the process of a resource or transaction that achieves coherency after a request or transaction is serviced.

포킹된 트랜잭션은 다수의 지점들에서 조인될 수도 있다. 이러한 다수의 조인 지점들은 조인 토큰이라고 불리는 구성의 이용에 의해 관리된다. 조인 토큰은 트랜잭션이 트랜잭션에서의 자원들 중 하나의 자원에 대한 제 1 후속하는 요청에 의해 또는 트랜잭션을 조인하기 위한 명시적 클라이언트 호출에 의해 오직 한번만 조인되는 것을 보장하는데 이용되는 상태 정보를 갖는다.The forked transaction may be joined at multiple points. These multiple join points are managed by the use of a configuration called a join token. A join token has state information that is used to ensure that the transaction is joined only once by a first subsequent request to one of the resources in the transaction or by an explicit client call to join the transaction.

포크의 역학 (포크가 달성되는 방법) 은 트랜잭션에 첨부된 확장(들)이라고 불리는 구성들에 의해 결정된다. RPM 의 경우에, 도 24 에서 도시된 바와 같이, 예를 들어, 확장은 RPM 전송 프로토콜 (모뎀 (202) 으로부터의 요청들이 RPM (204) 에 전달되고 응답들이 수신되는 방법) 의 구현일 것이다.The dynamics of the fork (how the fork is achieved) is determined by configurations called extensions (s) attached to the transaction. In the case of RPM, as shown in FIG. 24, for example, the extension would be an implementation of an RPM transport protocol (how the requests from modem 202 are delivered to RPM 204 and responses are received).

설계는 또한 클라이언트 (202) 가 포크 선호를 명시할 수도 있는 매커니즘을 제공한다. 이는 동기식으로 트랜잭션을 포크하거나 트랜잭션을 완료할지 여부를 결정하는 경우에 확장에 의해 이용된다. 트랜잭션들과 함께, 마찬가지로 자원들 (207) 과 함께, 트랜잭션을 포크하기 위한 호출은 요청이다. 확장이 트랜잭션을 포크하는 것이 불가능한 경우, 이는 동기식으로 트랜잭션을 완료할 것이고 그 다음에 등록된 조인트 콜백을 불러올 것이다.The design also provides a mechanism by which the client 202 may specify fork preferences. This is used by extensions when forking a transaction synchronously or when deciding whether to complete a transaction. Along with the transactions, as well as the resources 207, the call to fork the transaction is a request. If the extension is unable to fork the transaction, it will synchronously complete the transaction and then invoke the registered joint callback.

트랜잭션들에 대한 설계는 클라이언트 (202) 가 begin_transaction 이라는 명칭의 함수를 호출한 후에 로컬 자원들 (도 24 에서 도시되지 않으며, RPM (204) 에 의해 서비스되지 않는 것들을 포함함) 에 대한 요청들을 발행하는 것을 허용한다는 것에 또한 유의한다. 표면상으로는 트랜잭션의 일부분이긴 하나 이러한 요청들은 배칭에 포함되지 않는다. 연관된 자원들은, 그러나, 트랜잭션에서의 다른 자원들로 잠기거나 잠금해제된다.The design for the transactions is that the client 202 issues requests for local resources (not shown in Figure 24, including those not serviced by the RPM 204) after calling the function named begin_transaction It is also noted that. On the surface, these requests are part of the transaction, but they are not included in the batting. Associated resources, however, are locked or unlocked with other resources in the transaction.

포크/조인의 경우에, 이는 로컬 요청이 서비스 동안에 자체적으로 포킹되어 있는 경우에 중요해진다. 이를 도모하기 위해, 트랜잭션의 조인 토큰에 대한 언급은 자원의 자체의 조인 토큰과 구별된다. 이러한 접근법은 자원이 그 자체적으로 그리고 트랜잭션의 일부분으로서 포킹되는 것 양자 모두를 허용한다.In the case of a fork / join, this becomes important when the local request is self-popping during the service. To facilitate this, references to a transaction's join token are distinct from the resource's own join token. This approach allows both the resource to be locked on its own and as part of the transaction.

포킹된 트랜잭션들은 애플리케이션 프로그래밍 인터페이스 ("API") 에 의해 지원될 수도 있다. 각각의 트랜잭션 API 는 다음의 함수들을 포함하도록 확장될 것이다: fork_transaction 은 이러한 트랜잭션을 포킹하기 위한 요청이고 end_transaction 을 대신해 호출된다. 이는 트랜잭션이 추후에 조인하는 경우 불러오게될 콜백을 수락한다. 확장이 트랜잭션을 포크하지 않는 경우, 이러한 콜백은 동기식으로 호출될 것이다.Forked transactions may be supported by an application programming interface ("API"). Each transaction API will be extended to include the following functions: fork_transaction is a request to fork this transaction and is called on behalf of end_transaction. This accepts a callback that will be called if the transaction later joins. If the extension does not fork a transaction, these callbacks will be called synchronously.

후속하는 요청이 트랜잭션에서의 자원들 중 임의의 하나의 자원에 도착하는 경우에 트랜잭션이 암시적으로 조인하는 한편, 클라이언트가 새로운 요청을 만들지 않으면서 조인을 강요하길 원하는 경우들이 있을 수도 있다.There may be cases where a transaction implicitly joins when a subsequent request arrives on any one of the resources in the transaction, while the client wants to force the join without creating a new request.

join_transaction 함수는 명시적으로 트랜잭션을 조인할 것이다. 이러한 함수는, 트랜잭션 그 자체와 함께 트랜잭션에 수반된 모든 자원들을 조인하거나, 오직 트랜잭션 엔티티만을 조인할 수도 있는 한편, 후속하는 요청들을 프로세싱하는 경우 후에 자원들이 코히어런트하게 되는 것을 허용하도록 구현될 수도 있다.The join_transaction function will explicitly join the transaction. Such a function may be implemented to allow all resources associated with a transaction to be joined together with the transaction itself, or to join only transaction entities, while allowing subsequent resources to become coherent when processing subsequent requests have.

transaction_get/set_fork_pref API 들을 이용하여, 포크 선호 (FORK_ALLOWED/DISALLOWED/DEFAULT) 함수가 질의되거나 설정될 수도 있다. 확장들은 mark_transaction_forked API 를 불러와 조인 토큰을 획득하고 실제로 트랜잭션을 포크한다.Using the transaction_get / set_fork_pref APIs, a FORK_ALLOWED / DISALLOWED / DEFAULT function may be queried or set. Extensions call the mark_transaction_forked API to obtain the join token and actually fork the transaction.

attach_client_to_transaction 함수 및 attach_resource_to_transaction 함수와 같은 추가적인 API 들이 제공되어, 트랜잭션에 임의적인 자원들을 첨부하는 것을 가능하게 해, 이러한 자원들에 대한 후속하는 요청이 또한 트랜잭션을 조인하게 할 것이다. 이는 '부모' 자원의 구동 함수 내에서부터 트랜잭션이 시작되고 요청들이 발행되는 경우에 유용하다. 부모는 (트랜잭션의 일부분이 아님에도 불구하고) 그 자체를 트랜잭션에 첨부하여, 트랜잭션에 대한 후속하는 요청이 포킹된 트랜잭션이 조인하도록 할 것이다.Additional APIs, such as the attach_client_to_transaction function and the attach_resource_to_transaction function, are provided to allow arbitrary resources to be attached to the transaction, and subsequent requests for these resources will also cause the transaction to join. This is useful if transactions are started and requests are issued from within the driving function of the 'parent' resource. The parent will attach itself to the transaction (even though it is not part of the transaction), allowing subsequent transactions to the transaction to join the forked transaction.

상기의 개시물의 관점에서, 당업자는 컴퓨터 코드를 작성하거나 적절한 하드웨어 및/또는 다른 로직이나 회로를 식별할 수 있어, 예를 들어, 본 명세서에서의 플로차트들 및 연관된 설명에 기초하여 어려움 없이 분산된 자원 관리 시스템 및 방법을 구현한다. 따라서, 프로그램 코드 명령들의 특정 세트 또는 상세한 하드웨어 디바이스들의 개시물은 분산된 자원 관리 시스템 및 방법을 제작하고 이용하는 방식의 적당한 이해를 위해 필수적인 것으로 고려되지는 않는다. 청구된 컴퓨터 구현된 프로세스들의 독창적 기능성은 상기의 설명에서, 그리고 다양한 프로세스 흐름들을 도시할 수도 있는 도면들과 연계하여 보다 상세히 설명된다. 또한, 프로세서들 (110, 126, 202, 206 등) 은, 메모리 (112) 및 메모리에 저장된 명령들과 결합하여, 본원에 설명된 방법 단계들 중 하나 이상의 방법 단계를 수행하는 수단으로서의 역할을 할 수도 있다.From the standpoint of the above disclosure, those skilled in the art will be able to write computer code or identify appropriate hardware and / or other logic or circuitry to determine, for example, distributed resources without difficulty based on the flowcharts and associated descriptions herein Management system and method. Accordingly, the disclosure of a specific set of program code instructions or detailed hardware devices is not considered essential for a proper understanding of how to create and use distributed resource management systems and methods. The inventive functionality of the claimed computer implemented processes is described in more detail in connection with the above description, and with reference to the drawings, which may illustrate various process flows. In addition, the processors 110, 126, 202, 206, etc., in combination with the instructions stored in the memory 112 and memory, serve as means for performing one or more method steps of the method steps described herein It is possible.

하나 이상의 예시적인 양상들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독가능 매체 상에 저장되거나 또는 전송될 수도 있다. 컴퓨터 판독가능 매체들은 한 장소에서 다른 장소로 컴퓨터 프로그램의 전송을 가능하게 하는 임의의 매체를 포함하여 컴퓨터 저장 매체들 및 통신 매체들 양자를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수도 있다. 비제한적인 예로서, 이러한 컴퓨터 판독가능 매체들은 RAM, ROM, EEPROM, CD-ROM 혹은 다른 광학 디스크 스토리지, 자기 디스크 스토리지 혹은 다른 광학 혹은 자기 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 이송하고 저장하는에 이용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수도 있다. 본원에서 이용된 용어 "디스크 (disk)" 와 "디스크 (disc)" 는, 이로 제한되지는 않으나, 컴팩트 디스크(CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크, 및 블루레이 디스크를 포함한다. 위의 조합들도 컴퓨터 판독가능 매체들의 범주 내에 포함되어야 한다.In one or more of the exemplary aspects, the functions described may be implemented in hardware, software, firmware, or any combination thereof. When implemented in software, the functions may be stored on or transmitted over as a computer-readable medium as one or more instructions or code. Computer-readable media includes both computer storage media and communication media including any medium that enables transmission of a computer program from one place to another. The storage medium may be any available media that can be accessed by a computer. By way of example, and not limitation, such computer-readable media may comprise a computer-readable medium such as RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other optical or magnetic storage devices, Or any other medium which can be used to transport and store code and which can be accessed by a computer. The terms "disk" and " disc ", as used herein, include but are not limited to a compact disk (CD), a laser disk, an optical disk, a digital versatile disk (DVD), a floppy disk, Ray disc. Combinations of the above should also be included within the scope of computer readable media.

선택된 양상들이 도시되고 상세히 설명되었지만, 하기의 특허청구범위에 의해 정의되는 바와 같은 본 개시물의 취지와 범주로부터 벗어나지 않으면서 다양한 대체예들 및 수정예들이 이루어질 수도 있음이 이해될 것이다.While the selected aspects have been shown and described in detail, it will be appreciated that various alternatives and modifications may be made without departing from the spirit and scope of the present disclosure as defined by the following claims.

Claims (40)

복수의 자원들을 갖는 휴대용 컴퓨팅 디바이스의 자원 요청들을 관리하는 방법으로서,
클라이언트에 의해 자원 요청들의 트랜잭션 (transaction) 을 발행하는 단계로서, 상기 자원 요청들의 각각은 상기 복수의 자원들 중 2 개 이상의 자원들을 요구하고, 상기 트랜잭션의 상기 자원 요청들은 상기 2 개 이상의 자원들에 의해 완료되며, 상기 발행하는 단계는,
상기 클라이언트에 의해 제 1 요청을 발행하는 단계,
다른 클라이언트들이 제 1 자원에 액세스할 수 없도록 상기 제 1 요청과 연관된 상기 제 1 자원을 잠그는 단계,
상기 제 1 요청의 프로세싱을 위해 상기 제 1 자원에 의해 상기 제 1 요청을 포워딩하는 단계,
상기 클라이언트에 의해 제 2 요청을 발행하는 단계,
다른 클라이언트들이 제 2 자원에 액세스할 수 없도록 상기 제 2 요청과 연관된 상기 제 2 자원을 잠그는 단계, 및
상기 제 2 요청의 프로세싱을 위해 상기 제 2 자원에 의해 상기 제 2 요청을 포워딩하는 단계를 포함하는, 상기 자원 요청들의 트랜잭션을 발행하는 단계; 및
상기 클라이언트가 포킹된 트랜잭션의 요청들 중 적어도 하나의 요청을 완료하는 상기 자원들 중 적어도 하나의 자원에 대해 추가적인 트랜잭션들 또는 요청들을 발행할 수도 있도록 상기 트랜잭션을 포킹 (forking) 하는 단계로서, 상기 포킹하는 단계는,
상기 제 1 요청 및 상기 제 2 요청의 프로세싱을 제어하는 자원 전력 관리자 (resource power manager) 에 상기 트랜잭션을 송신하는 단계;
상기 자원들이 추가적인 자원 요청들을 수락하기는 하지만 프로세싱하지는 않을 수도 있도록 프레임워크 관리자에 의해 상기 제 1 및 제 2 자원들을 잠금해제하는 단계로서, 상기 클라이언트는 상기 제 1 및 제 2 요청들의 완료를 기다리지 않으면서 추가적인 요청들을 발행하고 추가적인 태스크들을 실행하는, 상기 제 1 및 제 2 자원들을 잠금해제하는 단계, 및
상기 클라이언트가 추가적인 요청들을 발행하고 추가적인 태스크들을 실행하는 동안 상기 제 1 및 제 2 요청들 중 적어도 하나의 요청을 프로세싱하는 단계를 포함하는, 상기 트랜잭션을 포킹하는 단계를 포함하는, 자원 요청들을 관리하는 방법.
CLAIMS What is claimed is: 1. A method for managing resource requests of a portable computing device having a plurality of resources,
Claims 1. A method comprising: issuing a transaction of resource requests by a client, wherein each of the resource requests requests two or more of the plurality of resources, and the resource requests of the transaction are directed to the two or more resources Wherein the step of issuing further comprises:
Issuing a first request by the client,
Locking the first resource associated with the first request such that no other clients can access the first resource,
Forwarding the first request by the first resource for processing of the first request,
Issuing a second request by the client,
Locking the second resource associated with the second request such that no other clients can access the second resource, and
And forwarding the second request by the second resource for processing of the second request, comprising: issuing a transaction of the resource requests; And
Forking the transaction so that the client may issue additional transactions or requests for at least one of the resources completing at least one of the requests of the forked transaction, Lt; / RTI >
Sending the transaction to a resource power manager that controls processing of the first request and the second request;
Unlocking the first and second resources by the framework manager so that the resources may not process but accept additional resource requests, wherein the client does not wait for completion of the first and second requests Unlocking the first and second resources, issuing additional requests and executing additional tasks, and
And processing the request for at least one of the first and second requests while the client issues additional requests and executes additional tasks. ≪ Desc / Clms Page number 21 > Way.
삭제delete 제 1 항에 있어서,
상기 자원 요청들의 트랜잭션을 발행하는 단계는 상기 프레임워크 관리자에 의해 완료되는, 자원 요청들을 관리하는 방법.
The method according to claim 1,
Wherein issuing a transaction of the resource requests is completed by the framework manager.
제 3 항에 있어서,
상기 프레임워크 관리자는 상기 클라이언트와 상기 자원들 사이의 통신들을 관리하는 것을 책임지는 소프트웨어 모듈을 포함하는, 자원 요청들을 관리하는 방법.
The method of claim 3,
Wherein the framework manager comprises a software module responsible for managing communications between the client and the resources.
제 4 항에 있어서,
상기 자원들 및 클라이언트는 소프트웨어 및 하드웨어 중 적어도 하나를 포함하는, 자원 요청들을 관리하는 방법.
5. The method of claim 4,
Wherein the resources and the client comprise at least one of software and hardware.
삭제delete 삭제delete 삭제delete 제 1 항에 있어서,
상기 트랜잭션의 포킹 동안에, 각각의 자원을 인코히어런트 (incoherent) 상태로 두는 단계를 더 포함하고, 상기 자원은 포킹된 상기 트랜잭션의 하나 이상의 요청들에 서비스하며, 상기 인코히어런트 상태는 요청과 연관된 클린업 (cleanup) 작업을 지연시키키고, 요청과 연관된 클린업 작업은 자원이 다른 요청에 서비스할 수도 있도록 자원을 코히어런트 (coherent) 상태에 있게 하기 위해 필요한 작업을 포함하는, 자원 요청들을 관리하는 방법.
The method according to claim 1,
Further comprising placing each resource in an incoherent state during fork of the transaction, wherein the resource services one or more requests of the poached transaction, and wherein the incoherent state is associated with the request How to manage resource requests, including the tasks necessary to delay the cleanup operation and to make the cleanup task associated with the request be in a coherent state so that the resource can serve another request .
제 9 항에 있어서,
상기 포킹된 트랜잭션의 하나 이상의 요청들에 대한 외부의 요청을 수신하는 것에 응답하여, 하나 이상의 자원들이 상기 외부의 요청에 서비스할 수도 있도록 상기 외부의 요청과 연관된 자원들 중 하나 이상의 자원에 대한 상기 인코히어런트 상태를 변화시키는 단계를 더 포함하는, 자원 요청들을 관리하는 방법.
10. The method of claim 9,
In response to receiving an external request for one or more requests of the forked transaction, sending, in response to receiving an external request for one or more requests of the forked transaction, The method further comprising: changing a heuristic state.
복수의 자원들을 갖는 휴대용 컴퓨팅 디바이스의 자원 요청들을 관리하기 위한 컴퓨터 시스템으로서,
상기 시스템은 상기 휴대용 컴퓨팅 디바이스 내의 프로세서를 포함하고,
상기 휴대용 컴퓨팅 디바이스 내의 상기 프로세서는,
클라이언트에 의해 자원 요청들의 트랜잭션을 발행하는 것으로서, 상기 자원 요청들의 각각은 상기 복수의 자원들 중 2 개 이상의 자원들을 요구하고, 상기 트랜잭션의 상기 자원 요청들은 상기 2 개 이상의 자원들에 의해 완료되며, 상기 발행하는 것은,
상기 클라이언트에 의해 제 1 요청을 발행하는 것,
다른 클라이언트들이 제 1 자원에 액세스할 수 없도록 상기 제 1 요청과 연관된 상기 제 1 자원을 잠그는 것,
상기 제 1 요청의 프로세싱을 위해 상기 제 1 자원에 의해 상기 제 1 요청을 포워딩하는 것,
상기 클라이언트에 의해 제 2 요청을 발행하는 것,
다른 클라이언트들이 제 2 자원에 액세스할 수 없도록 상기 제 2 요청과 연관된 상기 제 2 자원을 잠그는 것, 및
상기 제 2 요청의 프로세싱을 위해 상기 제 2 자원에 의해 상기 제 2 요청을 포워딩하는 것을 포함하는, 상기 자원 요청들의 트랜잭션을 발행하는 것; 및
상기 클라이언트가 포킹된 트랜잭션의 요청들 중 적어도 하나의 요청을 완료하는 자원들 중 적어도 하나의 자원에 대해 추가적인 트랜잭션들 또는 요청들을 발행할 수도 있도록 상기 트랜잭션을 포킹하는 것으로서, 상기 포킹하는 것은,
상기 제 1 요청 및 상기 제 2 요청의 프로세싱을 제어하는 자원 전력 관리자에 상기 트랜잭션을 송신하는 것,
상기 자원들이 추가적인 자원 요청들을 수락하기는 하지만 프로세싱하지는 않을 수도 있도록 상기 제 1 및 제 2 자원들을 잠금해제하는 것으로서, 상기 클라이언트는 상기 제 1 및 제 2 요청들의 완료를 기다리지 않으면서 추가적인 요청들을 발행하고 추가적인 태스크들을 실행하는, 상기 제 1 및 제 2 자원들을 잠금해제하는 것, 및
상기 클라이언트가 추가적인 요청들을 발행하고 추가적인 태스크들을 실행하는 동안 상기 제 1 및 제 2 요청들 중 적어도 하나의 요청을 프로세싱하는 것을 포함하는, 상기 트랜잭션을 포킹하는 것을 위해 동작가능한, 자원 요청들을 관리하기 위한 컴퓨터 시스템.
A computer system for managing resource requests of a portable computing device having a plurality of resources,
The system comprising a processor in the portable computing device,
The processor in the portable computing device,
Issuing a transaction of resource requests by a client, wherein each of the resource requests requests two or more of the plurality of resources, the resource requests of the transaction are completed by the two or more resources, The above-
Issuing a first request by the client,
Locking the first resource associated with the first request such that no other clients can access the first resource,
Forwarding the first request by the first resource for processing of the first request,
Issuing a second request by the client,
Locking the second resource associated with the second request such that no other clients can access the second resource; and
And forwarding the second request by the second resource for processing of the second request; And
Forking the transaction so that the client may issue additional transactions or requests for at least one of the resources completing the request of at least one of the requests of the forked transaction,
Sending the transaction to a resource power manager that controls processing of the first request and the second request,
Unlocking the first and second resources such that the resources may not process but accept additional resource requests, the client issues additional requests without waiting for the completion of the first and second requests Unlocking the first and second resources to execute additional tasks, and
The method comprising: processing a request for at least one of the first and second requests while the client issues additional requests and executes additional tasks. Computer system.
삭제delete 제 11 항에 있어서,
상기 자원 요청들의 트랜잭션을 발행하는 프로세서는 프레임워크 관리자 모듈에 의해 완료되는, 자원 요청들을 관리하기 위한 컴퓨터 시스템.
12. The method of claim 11,
Wherein the processor issuing a transaction of the resource requests is completed by a Framework Manager module.
제 13 항에 있어서,
상기 프레임워크 관리자 모듈은 상기 클라이언트와 상기 자원들 사이의 통신들을 관리하는 것을 책임지는 소프트웨어를 포함하는, 자원 요청들을 관리하기 위한 컴퓨터 시스템.
14. The method of claim 13,
The framework manager module comprising software responsible for managing communications between the client and the resources.
제 14 항에 있어서,
상기 자원들 및 클라이언트는 소프트웨어 및 하드웨어 중 적어도 하나를 포함하는, 자원 요청들을 관리하기 위한 컴퓨터 시스템.
15. The method of claim 14,
Wherein the resources and the client include at least one of software and hardware.
삭제delete 삭제delete 삭제delete 제 11 항에 있어서,
상기 트랜잭션의 포킹 동안에, 상기 프로세서는 각각의 자원을 인코히어런트 상태로 두도록 동작가능하고, 상기 자원은 포킹된 상기 트랜잭션의 하나 이상의 요청들에 서비스하며, 상기 인코히어런트 상태는 요청과 연관된 클린업 작업을 지연시키고, 요청과 연관된 클린업 작업은 자원이 다른 요청에 서비스할 수도 있도록 자원을 코히어런트 상태에 있게 하기 위해 필요한 작업을 포함하는, 자원 요청들을 관리하기 위한 컴퓨터 시스템.
12. The method of claim 11,
Wherein during the fork of the transaction, the processor is operable to place each resource in an inchoherent state, the resource servicing one or more requests of the tokenized transaction, the incoherent state being associated with a cleanup operation Wherein the cleanup operation associated with the request includes a task required to cause the resource to coherent such that the resource may service another request.
제 19 항에 있어서,
상기 포킹된 트랜잭션의 하나 이상의 요청들에 대한 외부의 요청을 수신하는 것에 응답하여, 상기 프로세서는 하나 이상의 자원들이 상기 외부의 요청에 서비스할 수도 있도록 상기 외부의 요청과 연관된 자원들 중 하나 이상의 자원에 대한 상기 인코히어런트 상태를 변화시키도록 동작가능한, 자원 요청들을 관리하기 위한 컴퓨터 시스템.
20. The method of claim 19,
In response to receiving an external request for one or more requests of the forked transaction, the processor is operable to cause one or more resources to be associated with one or more of the resources associated with the external request Wherein the computer system is operable to change the incoherent state for the resource request.
복수의 자원들을 갖는 휴대용 컴퓨팅 디바이스의 자원 요청들을 관리하기 위한 컴퓨터 시스템으로서,
클라이언트에 의해 자원 요청들의 트랜잭션을 발행하는, 상기 휴대용 컴퓨팅 디바이스 내의 원격 프레임워크 수단으로서, 상기 자원 요청들의 각각은 상기 복수의 자원들 중 2 개 이상의 자원들을 요구하고, 상기 트랜잭션의 상기 자원 요청들은 상기 2 개 이상의 자원들에 의해 완료되며, 상기 발행하는 것은,
상기 클라이언트에 의해 제 1 요청을 발행하는 것,
다른 클라이언트들이 제 1 자원에 액세스할 수 없도록 상기 제 1 요청과 연관된 상기 제 1 자원을 잠그는 것,
상기 제 1 요청의 프로세싱을 위해 상기 제 1 자원에 의해 상기 제 1 요청을 포워딩하는 것,
상기 클라이언트에 의해 제 2 요청을 발행하는 것,
다른 클라이언트들이 제 2 자원에 액세스할 수 없도록 상기 제 2 요청과 연관된 상기 제 2 자원을 잠그는 것, 및
상기 제 2 요청의 프로세싱을 위해 상기 제 2 자원에 의해 상기 제 2 요청을 포워딩하는 것을 포함하는, 상기 원격 프레임워크 수단; 및
상기 클라이언트가 포킹된 트랜잭션의 요청들 중 적어도 하나의 요청을 완료하는 상기 자원들 중 적어도 하나의 자원에 대해 추가적인 트랜잭션들 또는 요청들을 발행할 수도 있도록 상기 트랜잭션을 포킹하는, 상기 휴대용 컴퓨팅 디바이스 내의 수단으로서, 상기 포킹하는 것은,
상기 제 1 요청 및 상기 제 2 요청의 프로세싱을 제어하는 자원 전력 관리자에 상기 트랜잭션을 송신하는 것,
상기 자원들이 추가적인 자원 요청들을 수락하기는 하지만 프로세싱하지는 않을 수도 있도록 상기 제 1 및 제 2 자원들을 잠금해제하는 것으로서, 상기 클라이언트는 상기 제 1 및 제 2 요청들의 완료를 기다리지 않으면서 추가적인 요청들을 발행하고 추가적인 태스크들을 실행하는, 상기 제 1 및 제 2 자원들을 잠금해제하는 것, 및
상기 클라이언트가 추가적인 요청들을 발행하고 추가적인 태스크들을 실행하는 동안 상기 제 1 및 제 2 요청들 중 적어도 하나의 요청을 프로세싱하는 것을 포함하는, 상기 트랜잭션을 포킹하는, 상기 휴대용 컴퓨팅 디바이스 내의 수단을 포함하는, 자원 요청들을 관리하기 위한 컴퓨터 시스템.
A computer system for managing resource requests of a portable computing device having a plurality of resources,
A remote framework means in the portable computing device for issuing a transaction of resource requests by a client, wherein each of the resource requests requests two or more of the plurality of resources, Wherein the issuing is completed by two or more resources,
Issuing a first request by the client,
Locking the first resource associated with the first request such that no other clients can access the first resource,
Forwarding the first request by the first resource for processing of the first request,
Issuing a second request by the client,
Locking the second resource associated with the second request such that no other clients can access the second resource; and
Forwarding the second request by the second resource for processing of the second request; And
Forking the transaction such that the client may issue additional transactions or requests for at least one of the resources to complete at least one of the requests of the forked transaction. , Said forking
Sending the transaction to a resource power manager that controls processing of the first request and the second request,
Unlocking the first and second resources such that the resources may not process but accept additional resource requests, the client issues additional requests without waiting for the completion of the first and second requests Unlocking the first and second resources to execute additional tasks, and
And forking the transaction including processing a request for at least one of the first and second requests while the client issues additional requests and executes additional tasks. A computer system for managing resource requests.
삭제delete 제 21 항에 있어서,
상기 클라이언트로 자원 요청들의 트랜잭션을 발행하는 원격 프레임워크 수단은 프로세서 상에서 실행되는 소프트웨어를 포함하는, 자원 요청들을 관리하기 위한 컴퓨터 시스템.
22. The method of claim 21,
Wherein the remote framework means for issuing a transaction of resource requests to the client comprises software executing on the processor.
제 23 항에 있어서,
상기 원격 프레임워크 수단은 상기 클라이언트와 상기 자원들 사이의 통신들을 관리하는, 자원 요청들을 관리하기 위한 컴퓨터 시스템.
24. The method of claim 23,
Wherein the remote framework means manages communications between the client and the resources.
제 24 항에 있어서,
상기 자원들 및 클라이언트는 소프트웨어 및 하드웨어 중 적어도 하나를 포함하는, 자원 요청들을 관리하기 위한 컴퓨터 시스템.
25. The method of claim 24,
Wherein the resources and the client include at least one of software and hardware.
삭제delete 삭제delete 삭제delete 제 21 항에 있어서,
각각의 자원을 인코히어런트 상태로 두는, 상기 휴대용 컴퓨팅 디바이스 내의 수단을 더 포함하고, 상기 자원은 포킹된 상기 트랜잭션의 하나 이상의 요청들에 서비스하며, 상기 인코히어런트 상태는 상기 트랜잭션 동안에 요청과 연관된 클린업 작업을 지연시키고, 요청과 연관된 클린업 작업은 자원이 다른 요청에 서비스할 수도 있도록 자원을 코히어런트 상태에 있게 하기 위해 필요한 작업을 포함하는, 자원 요청들을 관리하기 위한 컴퓨터 시스템.
22. The method of claim 21,
Further comprising means in the portable computing device for placing each resource in an incoherent state, the resource serving one or more requests of the poached transaction, the incoherent state being associated with a request associated with the request during the transaction Wherein the cleanup operation associated with the request is to coherent the resource such that the resource may service the other request.
제 29 항에 있어서,
외부의 요청을 수신하는 것에 응답하여 하나 이상의 자원들이 상기 외부의 요청에 서비스할 수도 있도록 상기 포킹된 트랜잭션의 하나 이상의 요청들에 대한 상기 외부의 요청과 연관된 자원들 중 하나 이상의 자원에 대한 상기 인코히어런트 상태를 변화시키는, 상기 휴대용 컴퓨팅 디바이스 내의 수단을 더 포함하는, 자원 요청들을 관리하기 위한 컴퓨터 시스템.
30. The method of claim 29,
The method of claim 1, wherein in response to receipt of an external request, the at least one resource for one or more of the resources associated with the external request for one or more requests of the forked transaction, Further comprising means within said portable computing device for changing runt status.
컴퓨터 판독가능 프로그램 코드를 포함한 컴퓨터 판독가능 저장 매체로서,
상기 컴퓨터 판독가능 프로그램 코드는 복수의 자원들을 갖는 휴대용 컴퓨팅 디바이스의 자원 요청들을 관리하는 방법을 구현하기 위해 실행되도록 적응되고,
상기 방법은,
클라이언트에 의해 자원 요청들의 트랜잭션을 발행하는 단계로서, 상기 자원 요청들의 각각은 상기 복수의 자원들 중 2 개 이상의 자원들을 요구하고, 상기 트랜잭션의 상기 자원 요청들은 상기 2 개 이상의 자원들에 의해 완료되며, 상기 발행하는 단계는,
상기 클라이언트에 의해 제 1 요청을 발행하는 단계,
다른 클라이언트들이 제 1 자원에 액세스할 수 없도록 상기 제 1 요청과 연관된 상기 제 1 자원을 잠그는 단계,
상기 제 1 요청의 프로세싱을 위해 상기 제 1 자원에 의해 상기 제 1 요청을 포워딩하는 단계,
상기 클라이언트에 의해 제 2 요청을 발행하는 단계,
다른 클라이언트들이 제 2 자원에 액세스할 수 없도록 상기 제 2 요청과 연관된 상기 제 2 자원을 잠그는 단계, 및
상기 제 2 요청의 프로세싱을 위해 상기 제 2 자원에 의해 상기 제 2 요청을 포워딩하는 단계를 포함하는, 상기 자원 요청들의 트랜잭션을 발행하는 단계; 및
상기 클라이언트가 포킹된 트랜잭션의 요청들 중 적어도 하나의 요청을 완료하는 자원들 중 적어도 하나의 자원에 대해 추가적인 트랜잭션들 또는 요청들을 발행할 수도 있도록 상기 트랜잭션을 포킹하는 단계로서, 상기 포킹하는 단계는,
상기 제 1 요청 및 상기 제 2 요청의 프로세싱을 제어하는 자원 전력 관리자에 상기 트랜잭션을 송신하는 단계,
상기 자원들이 추가적인 자원 요청들을 수락하기는 하지만 프로세싱하지는 않을 수도 있도록 상기 제 1 및 제 2 자원들을 잠금해제하는 단계로서, 상기 클라이언트는 상기 제 1 및 제 2 요청들의 완료를 기다리지 않으면서 추가적인 요청들을 발행하고 추가적인 태스크들을 실행하는, 상기 제 1 및 제 2 자원들을 잠금해제하는 단계, 및
상기 클라이언트가 추가적인 요청들을 발행하고 추가적인 태스크들을 실행하는 동안 상기 제 1 및 제 2 요청들 중 적어도 하나의 요청을 프로세싱하는 단계를 포함하는, 상기 트랜잭션을 포킹하는 단계를 포함하는, 컴퓨터 판독가능 저장 매체.
A computer readable storage medium comprising computer readable program code,
The computer readable program code being adapted to execute to implement a method of managing resource requests of a portable computing device having a plurality of resources,
The method comprises:
Issuing a transaction of resource requests by a client, wherein each of the resource requests requests two or more of the plurality of resources, and the resource requests of the transaction are completed by the two or more resources Wherein the step of issuing comprises:
Issuing a first request by the client,
Locking the first resource associated with the first request such that no other clients can access the first resource,
Forwarding the first request by the first resource for processing of the first request,
Issuing a second request by the client,
Locking the second resource associated with the second request such that no other clients can access the second resource, and
And forwarding the second request by the second resource for processing of the second request, comprising: issuing a transaction of the resource requests; And
Forking the transaction such that the client may issue additional transactions or requests for at least one of the resources completing the request of at least one of the requests of the forked transaction,
Sending the transaction to a resource power manager controlling the processing of the first request and the second request,
Unlocking the first and second resources such that the resources may not process but accept additional resource requests, wherein the client issues additional requests without waiting for completion of the first and second requests And executing additional tasks, unlocking the first and second resources, and
Processing said at least one of said first and second requests while said client issues additional requests and executes further tasks. .
삭제delete 제 31 항에 있어서,
상기 자원 요청들의 트랜잭션을 발행하는 단계는 프레임워크 관리자에 의해 완료되는, 컴퓨터 판독가능 저장 매체.
32. The method of claim 31,
Wherein issuing a transaction of the resource requests is completed by a framework manager.
제 33 항에 있어서,
상기 프레임워크 관리자는 상기 클라이언트와 상기 자원들 사이의 통신들을 관리하는 것을 책임지는 소프트웨어 모듈을 포함하는, 컴퓨터 판독가능 저장 매체.
34. The method of claim 33,
Wherein the framework manager comprises a software module responsible for managing communications between the client and the resources.
제 34 항에 있어서,
상기 자원들 및 클라이언트는 소프트웨어 및 하드웨어 중 적어도 하나를 포함하는, 컴퓨터 판독가능 저장 매체.
35. The method of claim 34,
Wherein the resources and the client comprise at least one of software and hardware.
삭제delete 삭제delete 삭제delete 제 31 항에 있어서,
상기 방법을 구현하는 상기 프로그램 코드는,
상기 트랜잭션의 포킹 동안에, 각각의 자원을 인코히어런트 상태로 두는 것을 더 포함하고, 상기 자원은 포킹된 상기 트랜잭션의 하나 이상의 요청들에 서비스하며, 상기 인코히어런트 상태는 요청과 연관된 클린업 작업을 지연시키고, 요청과 연관된 클린업 작업은 상기 자원이 다른 요청에 서비스할 수도 있도록 자원을 코히어런트 상태에 있게 하기 위해 필요한 작업을 포함하는, 컴퓨터 판독가능 저장 매체.
32. The method of claim 31,
The program code embodying the method,
Further comprising placing each resource in an inchoherent state during fork of the transaction, wherein the resource services one or more requests of the tokenized transaction, the incoherent state delays the cleanup operation associated with the request, And wherein the cleanup operation associated with the request comprises an action required to place the resource in a coherent state such that the resource may service another request.
제 39 항에 있어서,
상기 방법을 구현하는 상기 프로그램 코드는,
상기 포킹된 트랜잭션의 하나 이상의 요청들에 대한 외부의 요청을 수신하는 것에 응답하여, 하나 이상의 자원들이 상기 외부의 요청에 서비스할 수도 있도록 상기 외부의 요청과 연관된 자원들 중 하나 이상의 자원에 대한 상기 인코히어런트 상태를 변화시키는 것을 더 포함하는, 컴퓨터 판독가능 저장 매체.
40. The method of claim 39,
The program code embodying the method,
In response to receiving an external request for one or more requests of the forked transaction, sending, in response to receiving an external request for one or more requests of the forked transaction, Further comprising changing a state of the computer program.
KR1020147018682A 2011-12-07 2012-11-09 Batching of resource requests into a transaction and forking of this transaction in a portable computing device Expired - Fee Related KR101635295B1 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161567963P 2011-12-07 2011-12-07
US61/567,963 2011-12-07
US13/359,770 US9152523B2 (en) 2010-09-15 2012-01-27 Batching and forking resource requests in a portable computing device
US13/359,770 2012-01-27
PCT/US2012/064345 WO2013085669A1 (en) 2011-12-07 2012-11-09 Batching of resource requests into a transaction and forking of this transaction in a portable computing device

Publications (2)

Publication Number Publication Date
KR20140098851A KR20140098851A (en) 2014-08-08
KR101635295B1 true KR101635295B1 (en) 2016-06-30

Family

ID=47279039

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147018682A Expired - Fee Related KR101635295B1 (en) 2011-12-07 2012-11-09 Batching of resource requests into a transaction and forking of this transaction in a portable computing device

Country Status (5)

Country Link
EP (1) EP2788873A1 (en)
JP (1) JP5805887B2 (en)
KR (1) KR101635295B1 (en)
CN (1) CN103988180B (en)
WO (1) WO2013085669A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105183871B (en) * 2015-09-17 2018-09-25 北京京东尚科信息技术有限公司 Data query method and device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010032281A1 (en) * 1998-06-30 2001-10-18 Laurent Daynes Method and apparatus for filtering lock requests
US20020087734A1 (en) * 2000-12-29 2002-07-04 Marshall Donald Brent System and method for managing dependencies in a component-based system
US20030005167A1 (en) * 2001-06-27 2003-01-02 Manoj Khare Method and apparatus for managing transaction requests in a multi-node architecture

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6799208B1 (en) * 2000-05-02 2004-09-28 Microsoft Corporation Resource manager architecture
US7114158B1 (en) * 2001-10-01 2006-09-26 Microsoft Corporation Programming framework including queueing network
US20070136725A1 (en) * 2005-12-12 2007-06-14 International Business Machines Corporation System and method for optimized preemption and reservation of software locks
SG166014A1 (en) * 2009-04-14 2010-11-29 Electron Database Corp Pte Ltd Server architecture for multi-core systems
US8321870B2 (en) * 2009-08-14 2012-11-27 General Electric Company Method and system for distributed computation having sub-task processing and sub-solution redistribution

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010032281A1 (en) * 1998-06-30 2001-10-18 Laurent Daynes Method and apparatus for filtering lock requests
US20020087734A1 (en) * 2000-12-29 2002-07-04 Marshall Donald Brent System and method for managing dependencies in a component-based system
US20030005167A1 (en) * 2001-06-27 2003-01-02 Manoj Khare Method and apparatus for managing transaction requests in a multi-node architecture

Also Published As

Publication number Publication date
JP5805887B2 (en) 2015-11-10
CN103988180B (en) 2018-06-05
CN103988180A (en) 2014-08-13
KR20140098851A (en) 2014-08-08
WO2013085669A1 (en) 2013-06-13
EP2788873A1 (en) 2014-10-15
JP2015503167A (en) 2015-01-29

Similar Documents

Publication Publication Date Title
US9152523B2 (en) Batching and forking resource requests in a portable computing device
US8806502B2 (en) Batching resource requests in a portable computing device
KR101618476B1 (en) Distributed resource management in a portable computing device
KR101551321B1 (en) Method and system for scheduling requests in a portable computing device
US8943504B2 (en) Tracking and releasing resources placed on a deferred unlock list at the end of a transaction
JP5516398B2 (en) Multiprocessor system and method for sharing device between OS of multiprocessor system
JP2013537340A (en) System and method for managing resources of portable computing devices
JP2013516711A (en) System and method for controlling power in an electronic device
JP2014525627A (en) System and method for managing resources of portable computing devices
JP2004310298A (en) Information processing system, information processing apparatus, session management method, and program
JP5982581B2 (en) Publishing host operating system services to auxiliary processors
KR101541664B1 (en) Method and system for managing parallel resource requests in a portable computing device
KR101635295B1 (en) Batching of resource requests into a transaction and forking of this transaction in a portable computing device

Legal Events

Date Code Title Description
PA0105 International application

St.27 status event code: A-0-1-A10-A15-nap-PA0105

A201 Request for examination
E13-X000 Pre-grant limitation requested

St.27 status event code: A-2-3-E10-E13-lim-X000

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

T11-X000 Administrative time limit extension requested

St.27 status event code: U-3-3-T10-T11-oth-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U12-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

PC1903 Unpaid annual fee

St.27 status event code: A-4-4-U10-U13-oth-PC1903

Not in force date: 20190625

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

PC1903 Unpaid annual fee

St.27 status event code: N-4-6-H10-H13-oth-PC1903

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 20190625