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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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
삭제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
CPU (110A) 는, 당업자에 의해 이해되는 바와 같이, 제 0 번째 코어 (222), 제 1 코어 (224) 등에서 제 N 번째 코어 (226) 까지를 포함할 수도 있다. 대안적인 실시형태들에서, 당업자에 의해 이해되는 바와 같이, CPU (110A) 및 그래픽 프로세서 (110B) 대신에, 하나 이상의 디지털 신호 프로세서 ("DSP") 들이 또한 사용될 수도 있다. 또한, 대안적인 실시형태들에서, 2 개 이상의 다중-코어 프로세서들이 포함될 수도 있다.
도 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
도 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
도 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")
PCD (100) 의 상술된 요소들 중 일부 요소들은 하드웨어를 포함할 수도 있으며, 한편 다른 요소들은 소프트웨어를 포함할 수도 있고, 또 다른 요소들은 하드웨어와 소프트웨어의 조합을 포함할 수도 있다. 용어 "자원" 은, 하드웨어, 소프트웨어, 또는 그것들의 조합이든 간에, 프로세서에 의해 제어가능한 임의의 그러한 요소들을 지칭하기 위해 본원에서 이용된다. 자원은 일 양상에서 이러한 요소의 기능성의 캡슐화로서 규정될 수도 있다. 달리 표시될 수도 있는 경우를 제외하고, 용어 "프로세서" 는 프로세서, 예컨대, CPU (110), 그래픽 프로세서 (110B), 아날로그 신호 프로세서 (126), 또는 임의의 다른 프로세서, 제어기, 혹은 소프트웨어, 펌웨어, 혹은 유사한 제어 로직의 제어 하에 동작하는 유사한 요소를 지칭하기 위해 본원에서 이용된다. 2 개 이상의 "프로세싱 엔티티들" 에 대한 언급은 상이한 칩들 상의 프로세서들, 동일한 프로세서 칩의 상이한 프로세싱 코어들, 동일한 코어 상의 실행의 스레드들, 또는 그 사이에 데이터 전송 위반 혹은 비효율이 있을 수도 있는 임의의 다른 프로세싱 엔티티들을 포함한다.Some of the elements of the above-described elements of the
하기에서 보다 상세히 설명되는 바와 같이, 자원의 일 예는 프로세서 상에서 실행하는 소프트에어 요소이다. 프로세서 상의 실행의 스레드, 예컨대, 예를 들어, 실행 애플리케이션 프로그램과 관련되는 스레드는 자원에 대해 발행될 "요청" 을 야기함으로써 자원에 액세스할 수도 있다. 하기에서 설명되는 바와 같이, 자원 요청들은 "프레임워크" 라고 본 개시물에서 지칭되는 소프트웨어-기반 시스템을 통해 프로세싱된다. 용어 "클라이언트" 는 자원을 요청하는 기능을 가져오는 요소를 지칭하기 위해 본 개시물에서 널리 이용된다. 따라서, 용어들이 본원에서 이용되는 바와 같이, 스레드는 자원 요청들을 발행할 목적으로 클라이언트를 생성하거나 이용하게 할 수도 있다. 일부 사례들에서, 자원이 다른 자원에 대해 발행될 자원 요청을 야기할 수도 있도록, 자원은 클라이언트를 생성하거나 이용할 수도 있다는 것이 유의되어야 한다. 하기에서 보다 상세히 설명되는 바와 같이, 이러한 다른 자원은 요청하는 자원과 요청되는 자원 사이의 의존성 관계로 인해 "의존적인" 자원이라고 본원에서 지칭될 수도 있다. 자원들 및 클라이언트들은 메모리에 데이터 구조들에 의해 나타내어질 수도 있다.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
제 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
제 1 프로세서 (202) 가 그를 통해 제 2 프로세서 (206) 와 통신할 수도 있는 버스 또는 프로토콜에 특정한 애플리케이션 프로그램 인터페이스 (API) 를 통해 스레드가 자원 전력 관리자 (204) 에 액세스하는 것이 가능할 수도 있다. 그러나, 하기에서 설명된 프레임워크는 자원-특정 및 버스-특정 API 보다 자원 요청들을 처리하기 위해 보다 균등한 방식을 제공할 수도 있다. 하기에서 설명되는 바와 같이, 프레임워크를 통해, 요청이 자원 요청이 그로부터 발행되는 동일한 프로세서에 의해 제어되는 자원에 대한 것인지 상이한 프로세서에 의해 제어되는 자원에 대한 것인지 여부에 관계없이 균등한 방식으로 자원 요청들이 발행되고 서비스된다. 그로부터 자원 요청이 발행되는 동일한 프로세서에 의해 제어되는 자원은 "네이티브 (native)" 자원으로 지칭될 수도 있다. 그로부터 자원 요청이 발행되는 프로세서 이외의 프로세서에 의해 제어되는 자원은 "원격 자원" 또는 "분산된 자원" 이라고 본원에서 지칭될 수도 있다.It may be possible for a thread to access the
또한, 원격 자원에 대한 요청을 발행하는 것은 시간 지연 또는 대기시간 (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
컴퓨터 명령들의 라이브러리를 포함할 수도 있는 프레임워크 관리자 (440) 가 자원들의 기능성을 캡슐화하는 노드들을 관리한다. 즉, 노드들은 자원들에 간접적으로 액세스하도록 액세스될 수도 있다. 편의를 위해, 자원의 기능성을 캡슐화하는 노드는 자원을 포함시키거나, 포함하거나, 갖거나 하는 등으로 본원에서 언급되 수도 있다. 각각의 노드는 하나 이상의 자원들을 포함할 수도 있다. 노드들은 소프트웨어 코드, 펌웨어코드, 또는 유사한 매체로 규정되고, PCD (100) 의 동작 동안에, 예를 들어, 메모리 (112) 에 데이터 구조들로서 인스턴스화될 수도 있다. 노드들 (601) 은 시동, 전력-업, 초기화, 부트-업 등의 동안에, 또는 시퀀스 , 또는 PCD (100) 의 동작 동안의 임의의 다른 적합한 시간에 인스턴스화될 수도 있다. 자원의 인스턴스화 (instantiate), 자원에 대한 요청 발행, 또는 그렇지 않으면 자원과의 상호작용에 대한 본원에서의 언급은 그 자원을 포함하는 노드와의 상호작용을 의미하는 것으로 이해되어야 함이 유의되어야 한다. 본 개시물의 나머지에 있어서는 도 5 를 참조하여 하기에서 설명되는 바와 같이 포괄적이거나 비특정적인 노드가 도면 번호 (601) 로 지칭될 것이다.A
노드들 (601) 은, 예를 들어, 일반적으로 제 1 하드웨어 요소 또는 중앙 프로세싱 유닛 (110) 과 대응하는 단일 자원을 갖는 제 1 노드 (602) 를 포함할 수도 있다. 본 개시물에서 설명된 소프트웨어 아키텍처로, 노드 (601) 의 각각의 자원에는 하나 이상의 영숫자 문자들을 포함하는 고유한 이름이 제공될 수도 있다. 도 3 에 도시된 예시적인 실시형태에서, 제 1 노드 (602) 의 자원에는 자원 이름 "/core/cpu" 가 할당되었다. 이러한 예시적인 자원 이름은 일반적으로 당업자에게 알려진 종래의 파일 명명 구조들에 대응한다. 그러나, 당업자에 의해 인지되는 바와 같이, 알파벳-숫자 문자들 및/또는 심볼들의 임의의 다른 조합을 포함하는 다른 유형의 자원 이름들이 당연히 본 개시물의 범주 내에 있다.Nodes 601 may include, for example, a
노드들 (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
도 3 은 또한 일반적으로 2 개의 소프트웨어 요소들 (448, 450) 의 액션 또는 기능에 대응하는 제 1 클라이언트 (648) 를 도시한다. 도 3 에 도시된 예시적인 실시형태에서, 제 1 클라이언트 (648) 는 일반적으로 휴대용 컴퓨팅 디바이스 (100) 에 의해 지원되는 특정 애플리케이션 프로그램 모듈 (105) 내에서 일어날 수도 있는 가압 액션에 대응한다. 그러나, 키가압들 외의 소프트웨어 요소들의 다른 액션들 및/또는 기능들이 당연히 본 개시물의 범주 내에 있음을 당업자는 인지한다. 클라이언트 요청들 (648) 및 그것들의 각각의 생성에 관한 보다 세부사항들은 도 11 과 연계하여 하기에서 설명될 것이다.FIG. 3 also illustrates a
도 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
도 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
도 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
프레임워크 관리자 (440) 는, 이로 제한되지는 않으나, 도 3 에 도시된 클라이언트 요청들 (675) 및 의존성들 (680) 을 포함하는, 상술된 관계들을 관리하는 것을 책임진다. 의존성들과 같은 일부 그러한 관계들은 프레임워크 관리자 (440) 가 노드 인스턴스화 프로세스를 시작하기 위해 그러한 시동 시간에 액세스하는 자원들 및 자원들의 노드들 (601) 이 PCD (100) 에서 소프트웨어 코드로 규정된 방식에 의해 PCD 시동 시간 (즉, 전력-업, 초기화, 부트-업 등) 에 존재한다. 클라이언트 요청들 (675) 과 같은 다른 이러한 관계들은, 예컨대, 애플리케이션 프로그램이 자원을 불러오는 애플리케이션 프로그램 스레드의 실행 동안에, 노드들 (601) 이 인스턴스화된 후에 생긴다. 클라이언트 요청들 (675) 이 실행 애플리케이션 프로그램 스레드들 또는 노드들 (601) 이외의 유사한 요소들에서 비롯되거나 (예를 들어, 클라이언트 요청 (675A)) 노드 (601) 에서 비롯되는지 여부에 따라, 클라이언트 요청들 (675) 은 프레임워크 관리자 (440) 를 통해 지시된다. 프레임워크 관리자 (440) 는 노드들 (601) 사이에서 정보의 전송을 지시한다. 개념적으로, 프레임워크 관리자 (440) 는 그를 통해 다수의 스레드들이 근본적으로 동시에 노드들 (601) 과 통신할 수도 있는 매트릭스의 역할을 한다. 상이한 스레드들이 상이한 데이터를 수반할 수도 있으나, 동일한 프레임워크 관리자 소프트웨어 코드가 다수의 스레드들에 서비스할 수도 있다.
하기에서 보다 상세히 설명되는 바와 같이, 프레임워크 관리자 (440) 는 노드의 의존적인 노드들이 인스턴스화되자마자, 즉, 임의의 주어진 노드 (601) 에 대한 의존성들 (680) 이 해결되는 경우, 노드 (601) 를 인스턴스화할 수도 있다. 프레임워크 관리자 (440) 는 PCD (100) 의 소프트웨어 아키텍처에서 규정된 모든 노드들 (601) 을 인스턴스화하려고 시도한다. 의존성 (680) 은 의존성을 지원하는 자원이 의존성 (680) 과 관련된 정보를 처리하기 위해 존재하거나 준비 상태인 경우 완료되거나 해결된다.As described in more detail below, the
예를 들어, 제 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
노드 (601) 의 의존성들 (680) 중 하나 이상의 의존성이 완료되지 않았거나 해결되지 않았기 때문에 프레임워크 관리자 (440) 가 특정 노드 (601) 를 인스턴스화할 수 없는 경우, 프레임워크 관리자 (440) 는 성공적으로 인스턴스화된 이러한 노드들 (601) 에 대응하는 단계들을 계속 가동하거나 실행할 것이다. 프레임워크 관리자 (440) 는 보통 의존적인 자원들이 생성되지 않은 불완전한 의존성들로 인해 존재하지 않을 수도 있는 특정 노드 (601) 에 대한 호출에 대해서는 스킵하고, 그 불완전상 상태를 반영하는 메시지들을 그 호출에 반환할 것이다.If the
도 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
상술된 (메인) 프레임워크 관리자 (440) 와 유사한 원격 프레임워크 관리자 (300) 가 프레임워크 관리자 (440) 와 병렬로 그리고 그에 대한 확장으로서 존재할 수도 있다. 원격 프레임워크 관리자 (300) 는 프레임워크 관리자 (440) 와 협력하거나 작업하여 상이한 프로세서들 상에서의 노드들 (601) 사이의 프로세서간 정보 전송들을 조정한다. 즉, 원격 프레임워크 관리자 (300) 는, 수반된 노드들 (601) 이 상이한 프로세서들 상에 존재하는 경우들에서, 프레임워크 관리자 (440) 가 의존성들 및 클라이언트 요청들과 같은, 상술된 관계들을 유지하는 것을 돕는다. 따라서, 하나의 프로세서 상의 노드들 (601) 은 프레임워크 관리자들 (440 및 300) 의 결합된 효과를 통해 또 다른 프로세서 상의 노드들 (601) 에 액세스가능하도록 제공되지 않을 수도 있다. 또한, 프레임워크 관리자들 (440 및 300) 의 결합은, 수반된 노드들 (601) 이 동일한 프로세서에 존재하든 상이한 프로세서 상에 존재하든, 본 개시물에서 프레임워크 관리자 (440) 에 속하는 것으로 생각되는 기능들의 모두를 수행할 수도 있다. 이러한 다중-프로세서 실시형태들에서, 프레임워크 관리자들 (300 및 440) 이 포함하는 소프트웨어의 개개의 복사본들이 프로세서들의 각각의 도메인에 있을 수도 있다. 따라서, 각각의 프로세서는 동일한 프레임워크 관리자 소프트웨어에 대한 액세스를 갖는다.A
도 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
명확함 및 편리함을 위해, 본 개시물이 노드 (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
다중-프로세서 PCD (100) 에서, 제 1 프로세서가 제 1 자원 그래프에서의 노드들 (601) 의 제 1 세트에 대한 액세스를 가지거나 그를 제어할 수도 있는 한편, 제 2 프로세서가 제 2 자원 그래프에서의 노드들 (601) 의 제 2 세트에 대한 액세스를 가질 수도 있거나 그를 제어할 수도 있으며, 여기서 제 1 및 제 2 자원 그래프들은 임의의 자원들을 공유하지 않는다, 즉, 그것들은 서로 배타적인 자원 그래프들이다. 즉, 이러한 환경에서, 각각의 프로세서는 다른 프로세서들에 의해 액세스가능하지 않은 자원들 및 다른 요소들 사이의 관계들을 규정하는 그 자체의 자원 그래프를 갖는다. 본 개시물의 분산된 자원 관리는, 2 개 이상의 프로세서들이 그것들 자체의 자원 그래프들에서의 자원들에 대한 액세스를 각각 갖고 다른 프로세서들의 자원 그래프들에서의 자원들에 대한 액세스는 갖지 않는 경우들에서, 상술된 관계들, 예컨대, 의존성들 및 클라이언트 요청들을 유지하는 것에 관한 것이다.In the
자원들에 대한 액세스에 관한 위에서 언급된 제한은, 일부 실시형태들에서, 하드웨어 구성에 의해 제한될 수도 있다. 즉, 프로세서는 하드웨어 디바이스에 영향을 미칠 수 있는 수단, 예컨대, 레지스터를 갖지 않을 수도 있는데, 하드웨어 디바이스가 다른 프로세서에 의해 제어되거나 다른 프로세서의 메모리 공간에 있기 때문이다. 대안으로, 또는 이에 더해, 자원들에 대한 액세스에 관한 제한이 소프트웨어에 부과될 수도 있는데, 그 이유는 보안 위험들 (예를 들어, 다른 프로세서를 감염시킬 수도 있는 바이러스) 에 대한 프로세서의 노출을 최소화하기 때문이다.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
도 5 는 또한 제 1 노드 (601A) 의 클라이언트 (648) 가 제 1 노드 (601A) 에 클라이언트 요청 (675) 을 발행할 수도 있는 방법을 도시한다. 이러한 클라이언트 요청들 (675) 이 발행된 후에, 제 2 노드 (601B) 가 이벤트 (690) 를 트리거링하거나 질의 (695) 에 대한 응답을 제공할 수도 있으며, 여기서 이벤트 (690) 및 질의 (695) 에 대응하는 메시지들이 클라이언트 (648) 로 다시 이동한다.Figure 5 also illustrates how a
도 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
예를 들어, 제 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
도 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
도 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
도 7 은 PCD (100) 의 자원(들)을 관리하는 소프트웨어 구조들을 생성하거나 인스턴스화하는 방법 (1000A) 을 도시하는 플로차트이다. 이러한 방법은 수반되는 모든 자원들 및 다른 요소들이 동일한 프로세서에 의해 제어되는, 즉, 그것들이 동일한 자원 그래프에 포함되는 아키텍처의 맥락에서 명확하도록 설명된다. 블록 (1005) 은 PCD (100) 의 자원들을 관리하는 방법 또는 프로세스 (1000) 의 제 1 루틴이다. 블록 (1005) 에서, 루틴은 노드 구조 데이터를 수신하도록 프레임워크 관리자 (440) 에 의해 실행되거나 가동될 수도 있다. 노드 구조 데이터는 특정 노드 (601) 가 다른 노드들 (601) 과 가질 수도 있는 의존성들을 개략적으로 설명하는 의존성 어레이를 포함할 수도 있다. 노드 구조 데이터 및 이러한 루틴 또는 하위방법 (705) 에 관한 보다 세부사항들은 도 9 와 연계하여 하기에서 보다 상세히 설명될 것이다.FIG. 7 is a flowchart illustrating a
다음으로, 블록 (1010) 에서, 프레임워크 관리자 (440) 가 블록 (1005) 에서 수신된 노드 구조 데이터의 일부인 의존성 데이터를 검토할 수도 있다. 결정 블록 (1015) 에서, 프레임워크 관리자 (440) 는 노드 구조 데이터가 리프 노드 (601) 를 규정하는지를 결정할 수도 있다. 리프 노드 (601) 는 일반적으로 노드 구조 데이터에 기초하여 생성될 노드가 도 3 및 도 4 에서의 노드들 (642 및 646) 과 같이 어떠한 의존성들도 갖지 않음을 의미한다. 결정 블록 (1015) 에 대한 조회 (inquiry) 가 긍정적인 경우 (현재 노드를 생성하기 위한 노드 구조 데이터가 어떠한 의존성들도 갖지 않음을 의미한다), 프레임워크 관리자 (440) 는 루틴 블록 (1025) 을 계속한다.Next, at
결정 블록 (1015) 에 대한 조회가 부정적인 경우, 결정 블록 (1020) 에 "아니오" 브랜치가 뒤따르며, 여기서 프레임워크 관리자는 노드 구조 데이터 내의 모든 강한 의존성들이 존재하는지를 결정한다. 강한 의존성은 자원이 그것 없이 존재할 수 없는 것을 포함할 수도 있다. 한편, 약한 의존성은 자원이 선택적 단계로서 의존적인 자원을 이용할 수도 있는 것을 포함할 수도 있다. 약한 의존성은 약한 의존성이 존재하지 않을지라도 약한 의존성을 갖는 노드 (601) 또는 노드 (601) 의 자원이 노드 아키텍처 내에 생성되거나 인스턴스화될 수도 있음을 의미한다.If the query to
약한 의존성의 실시예는 다수의 자원들을 포함하는 자원 지향 노드 (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
결정 블록 (1020) 에 대한 조회가 부정적인 경우, 블록 (1027) 에 "아니오" 브랜치가 뒤따를 것이며, 여기서 노드 구조 데이터가 메모리와 같은 임시 저장부에 프레임워크 관리자 (440) 에 의해 저장되고, 프레임워크 관리자 (440) 가 이러한 인스턴스화되지 않은 노드와 연관된 콜 백 특징를 생성한다.If the query to
결정 블록 (1015) 에 대한 조회가 긍정적인 경우, "예" 브랜치에 뒤이어 루틴 (1025) 이 오며, 여기서 루틴 블록 (1005) 에서 수신된 노드 구조 데이터에 기초하여 노드 (601) 가 생성되거나 인스턴스화된다. 루틴 블록 (1025) 의 추가적인 세부사항들은 도 9 와 연계하여 하기에서 설명될 것이다. 다음으로, 블록 (1030) 에서, 프레임워크 관리자 (440) 가 그것의 고유한 자원 이름(들)을 이용해 새롭게 생성된 노드 (601) 를 공개하여 다른 노드들 (601) 이 새롭게 생성된 노드 (601) 로 정보를 전송하거나 새롭게 생성된 노드로부터 정보를 수신할 수도 있다.If the query to
이제 도 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
두 번째의, 약간 보다 복잡한 구현은 별개의 통지 큐 상에 통지들 모두를 두고, 그 다음에 시간상 단일 지점에서 시작하여 큐를 통해 가동하는 것이다, 즉, 통지들은 반복하여 수행된다. 그래서, 도 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
결정 블록 (1040) 에서, 현재 노드 (601) 의 생성에 기초하여 생성 또는 인스턴스화를 위해 다른 노드들 (601) 또는 약한 의존성들이 이제 해제되는지를 프레임워크 관리자 (440) 가 결정한다. 결정 블록 (1040) 은 일반적으로, 소정의 의존성 관계들 (680) 이 최근에 생성 또는 인스턴스화를 겪은 현재 노드에 의해 달성되었기 때문에 자원들이 생성될 수도 있는지 여부를 결정한다.At
결정 블록 (1040) 에 대한 조회가 긍정적인 경우, "예" 브랜치에 뒤이어 루틴 블록 (1025) 가 뒤따르며, 여기서 방금 생성된 노드 (601) 에 의한 의존성의 달성으로 이해 해제된 노드 (601) 가 이제 생성되거나 인스턴스화될 수도 있다.If the inquiry to
결정 블록 (1040) 에 대한 조회가 부정적인 경우, "아니오" 브랜치에 뒤이어 블록 (1045) 가 오며, 여기서 프레임 워크 관리자 (440) 가 도 2 에 도시된 바와 같은 소프트웨어 아키텍처의 요소들 사이의 통신들을 관리할 수도 있다. 다음으로, 블록 (1050) 에서, 프레임워크 관리자 (440) 는 특정 자원과 연관된 자원 이름들을 이용함으로써 자원들에 의해 취해진 액션들을 계속하여 로그하거나 (log) 액션들을 기록할 수도 있다. 블록 (1045) 은 프레임워크 관리자 (440) 에 의해 취해진 임의의 액션, 또는 프레임워크 관리자 (440) 에 의해 관리되는 요소들, 예컨대, 소스들, 노드들 (601), 클라이언트들 (648), 이벤트들 (695), 및 질의 함수들 (697) 중 임의의 것 후에 프레임워크 관리자 (440) 에 의해 실행될 수도 있다. 블록 (1045) 은 노드 아키텍처의 다른 양상을 도시하며, 이는 프레임워크 관리자 (440) 가 노드 (601) 의 자원과 같은, 특정 요소를 생성한 저자들에 의해 제공되는 각각의 요소의 고유한 식별자 또는 이름에 따라 각각의 요소에 의해 수행되는 액션들을 열거하는 활동도의 가동 로그를 유지할 수도 있다.If the query to
선행 기술과 비교하여, 시스템의 각각의 자원에 할당된 고유한 이름들을 열거하는, 블록 (1050) 에서의 이러한 활동도의 로그하기는 고유하고, 디버깅 및 에러 문제해결에서 이용되는 바와 같이 상당한 이점들을 제공할 수도 있다. 노드 아키텍처 (500A) 의 다른 고유한 양상은 별개의 팀들이 상이한 하드웨어 및/또는 소프트웨어 요소들에 대해 서로 관계없이 작업할 수도 있다는 것으로, 여기서 각각의 팀은 다른 팀들 및/또는 OEM (original equipment manufacturer) 에 의해 할당된 별로 의미 없는 그리고 보통 혼란스러운 자원 이름들을 해석하기 위해 테이블을 생성할 필요 없이 추적하기에 고유하고 쉬운 자원 이름들을 이용하는 것이 가능할 것이다.In comparison to the prior art, logging of this activity in
다음으로, 결정 블록 (1055) 에서, 프레임워크 관리자 (440) 에 의해 기록된 활동도의 로그가 요청되었는지를 프레임워크 관리자 (440) 가 결정한다. 결정 블록 (1055) 에 대한 조회가 부정적인 경우, "아니오" 브랜치에 뒤이어 프로세스의 종료가 오며, 여기서 프로세스는 루틴 (1005) 으로 다시 복귀한다. 결정 블록 (1055) 에 대한 조회가 긍정적인 경우, "예" 브랜치에 뒤이어 블록 (1060) 이 오며, 여기서, 프레임워크 관리자 (440) 는 의미 있는 자원 이름들 및 자원 이름들에 의해 수행되는 각각의 액션들을 포함하는 활동도 로그를 출력 디바이스, 예컨대, 프린터 또는 디스플레이 화면, 및/또는 양자 모두에 전송한다. 프로세스는 그 다음에 상술된 루틴 블록 (1005) 으로 복귀한다.Next, at
도 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
편의를 위해, 고유한 이름들을 생성하기 위해 전방향 슬래시 "/" 문자들을 사용하는 종래의 트리 파일 명명 구조 또는 파일 명명 "비유" 가, 예컨대, 제한하지는 않으나, 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
다음으로, 블록 (1110) 에서, 프레임워크 관리자 (440) 는 생성되는 노드 (601) 의 하나 이상의 자원들과 연관된 하나 이상의 구동 함수들에 대한 데이터를 수신할 수도 있다. 구동 함수는 일반적으로 특정 노드 (601) 에 대한 하나 이상의 자원들에 의해 완료될 액션을 포함한다. 예를 들어, 도 7a 및 도 7b 에서, 노드 (602) 의 자원 (/core/cpu) 에 대한 구동 함수는 요청되어진 요청된 프로세싱의 양을 제공하기 위해 요구하는 버스 대역폭 및 CPU 클록 주파수의 양을 요청할 수도 있다. 이러한 요청들은 노드들 (642) 및 노드 (622) 에서 자원들의 클라이언트들을 통해 이루어질 것이다. 노드 (642) 에서의 /clk/cpu 에 대한 구동 함수는 보통 노드 (602) 의 /core/cpu 자원으로부터 구동 함수가 수신한 요청에 따라 물리적 클록 주파수를 실제로 설정하는 것을 책임질 것이다.Next, at
블록 (1115) 에서, 프레임워크 관리자 (440) 는 노드 속성 데이터를 수신할 수도 있다. 노드 속성 데이터는 일반적으로 보안성 (이는 사용자 공간 애플리케이션들을 통해 노드가 액세스될 수 있는 것이다), 원격성 (이는 시스템에서의 다른 프로세서들로부터 노드가 액세스될 수 있는 것이다), 및 액세스가능성 (이는 자원이 다수의 동시적인 클라이어트들을 지원할 수 있는 것이다) 과 같은 노드 정책들을 규정하는 데이터를 포함한다. 프레임워크 관리자 (440) 는 또한 자원이 디폴트 프레임워크 거동, 예컨대, 요청 평가 또는 로그하기 정책을 무시하는 것을 허용하는 속성들을 규정할 수도 있다.At
후속하여, 블록 (1120) 에서, 프레임워크 관리자 (440) 는 생성되는 특정 노드 (601) 에 대한 맞춤형 사용자 데이터를 수신할 수도 있다. 사용자 데이터는 "C" 프로그래밍 언어에 대한 당업자에 의해 이해되는 바와 같은 void "star" 필드를 포함할 수도 있다. 사용자 데이터는 또한 "trust me" 필더로 당업자에게 알려져 있다. 예시적인 맞춤형 사용자 데이터는, 이로 제한되지는 않으나, 주파수 테이블들과 같은 테이블들, 레지스터 맵들 등을 포함할 수도 있다. 블록 (1120) 에서 수신된 사용자 데이터는 시스템 (500A) 에 의해 참조되지는 않으나, 맞춤이 프레임워크 관리자 (440) 에 의해 인지되지 않거나 완전히 지원되지 않는 경우 자원의 맞춤을 허용한다. 이러한 사용자 데이터 구조는 특정 또는 특수 용도들로 확장되도록 의도된 "C" 프로그래밍 언어에서 기본 클래스이다.Subsequently, at
당업자는 특정 클래스의 특수 용도들을 확장하기 위한 다른 종류의 데이터 구조들이 이러한 개시물의 범주 내에 있음을 인지한다. 예를 들어, "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
후속하여, 블록 (1130) 에서, 프레임워크 관리자 (440) 는 자원 어레이 데이터를 수신할 수도 있다. 자원 어레이 데이터는 생성되는 현재 노드에 대한 파라미터들, 예컨대, 이러한 제 1 노드 (602) 가 생성된 경우 도 7b 및 도 7c 의 제 1 노드 (602) 와 관련된 파라미터들을 포함할 수도 있다. 자원 어레이 데이터는 다음의 데이터: 다른 자원들의 이름들; 유닛; 최대 값; 자원 속성들; 플러그-인 데이터; 및 블록 (1120) 의 맞춤형 사용자 데이터와 유사한 임의의 맞춤형 자원 데이터 중 하나 이상을 포함할 수도 있다. 플러그-인 데이터는 일반적으로 소프트웨어 라이브러리로부터 취출된 함수들을 식별하고, 보통 특정 노드 또는 복수의 생성되는 노드들에 의해 지원될 수도 있는 클라이언트 유형들을 열거한다. 플러그-인 데이터는 또한 클라이언트 생성 및 파괴의 맞춤을 허용한다. 블록 (1130) 후에, 프로세스는 도 7 의 블록 (1010) 으로 복귀한다.Subsequently, at
도 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
도 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
블록 (1210) 에서, 프레임워크 관리자는 블록 (705) 의 노드 구조 데이터에 대응하는 하나 이상의 자원들을 생성하거나 인스턴스화할 수도 있다. 다음으로, 블록 (1215) 에서, 프레임워크 관리자 (440) 는 루틴 블록 (1005) 의 루틴 블록 (1110) 에서 수신된 구동 함수들을 활성화시킬 수도 있다. 일 예시적인 양상에 따르면, 구동 함수들은 루틴 블록 (1005) 의 자원 어레이 데이터 블록 (1130) 에서 수신된 최대 값들을 이용하여 활성화될 수도 있다. 다른, 바람직한, 예시적인 양상에 따르면, 각각의 구동 함수는 루틴 (1005) 으로부터 노드 구조 데이터와 함께 전달되는 선택적, 초기 값으로 활성화될 수도 있다. 초기 데이터가 제공되지 않는 경우, 구동 함수는 0 - 최소 값 - 으로 초기화된다. 구동 함수는 또한 보통 구동 함수가 초기화되는 것으로 알려진 방식으로 활성화된다. 이는 자원이 초기화에 특정적이나, 정규 또는 루틴 동작 동안에는 수행될 필요가 없는 임의의 동작들을 수행하는 것을 가능하게 한다. 프로세스는 그 다음에 도 7 의 단계 (1030) 로 복귀한다.At
도 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
다음으로, 블록 (1310) 에서, 이러한 생성되는 클라이언트 (648) 에 대한 임의의 특정 맞춤들이 있는 경우 프레임워크 관리자 (440) 에 의해 맞춤형 사용자 데이터가 수신될 수도 있다. 블록 (1310) 은 그 단계가 선택적임을 표시하기 위해 파선들로 도시되었다. 블록 (1310) 의 맞춤형 사용자 데이터는 노드들 (601) 에 대한 자원들의 생성과 연계하여 위에서 논의된 맞춤형 사용자 데이터와 유사하다.Next, at
블록 (1315) 에서, 프레임워크 관리자 (440) 는 생성되는 특정 클라이언트에 할당된 클라이언트 유형 카테고리를 수신한다. 이 글에서의 클라이언트 유형 카테고리는 4 개의 유형들: (a) 요구된, (b) 임펄스, (c) 벡터, 및 (d) 등시성 중 하나를 포함할 수도 있다. 클라이언트 유형 카테고리 리스트는 시스템 (101) 에 의해 관리되는 자원들에 의존하여, 그리고 노드들 (601) 의 자원들에 의지하는 애플리케이션 프로그램들에 의존하여 확대될 수도 있다.At
요구되는 카테고리는 일반적으로 요구되는 클라이언트 (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
등시성 카테고리는 일반적으로 통상적으로 재발하고 잘-규정된 시작 시간 및 잘-규정된 종료 시간을 갖는 액션에 대한 요청과 대응한다. 벡터 카테고리는 일반적으로 보통 직렬로 또는 병렬로 요구되는 다수의 액션들의 일부인 데이터의 어레이와 대응한다.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
한편, 비동기식 클라이언트 (648) 는 프레임워크 관리자 (440) 에 의해 액세스는 되는 하나 이상의 스레드들에 의해 병렬로 처리될 수도 있다. 프레임워크 (440) 는 스레드에 대한 콜백을 생성할 수도 있고, 콜백이 각각의 스레드에 의해 실행된 경우 값을 반환할 수도 있다. 비동기식 클라이언트 (648) 는 동기식 클라이언트 (648) 의 태스크가 실행되는 경우에 동기식 클라이언트 (648) 처럼 자원을 잠그지 않는다는 것을 당업자는 인지하다.On the other hand, the
블록 (1320) 후에, 결정 블록 (1325) 에서, 클라이언트 (645) 에 의해 식별된 자원이 이용가능한지를 프레임워크 관리자 (440) 가 결정한다. 결정 블록 (1325) 에 대한 조회가 부정적인 경우, "아니오" 브랜치에 뒤이어 블록 (1330) 이 오며, 여기서 클라이언트 (648) 가 이 시점에서 생성될 수 없음을 표시하는 널 (null) 값 또는 메시지가 사용자에게 반환된다.After
결정 블록 (1325) 에 대한 조회가 긍정적인 경우, "예" 브랜치에 뒤이어 결정 블록 (1335) 이 오며, 여기서 클라이언트 (648) 에 의해 식별되는 각각의 자원이 블록 (1310) 에서 제공된 클라이언트 유형을 지원하는지를 프레임워크 관리자 (440) 가 결정한다. 결정 블록 (1335) 에 대한 조회가 부정적인 경우, "아니오" 브랜치에 뒤이어 블록 (1330) 이 오며, 여기서 클라이언트 (648) 가 이 시점에서 생성될 수 없음을 표시하는 널 값 또는 메시지가 반환된다.If the lookup to
결정 블록 (1335) 에 대한 조회가 긍정적인 경우, "예" 브랜치에 뒤이어 블록 (1340) 이 오며, 여기서 프레임워크 관리자 (440) 가 메모리에 클라이언트 (648) 를 생성하거나 인스턴스화한다. 다음으로, 블록 (1345) 에서, 선택적 인수들과 같은 임의의 맞춤형 사용자 데이터가 블록 (1310) 에서 수신되는 경우, 이러한 선택적 인수들은 특정 노드 (601) 에 대한 그것들 각각의 자원들과 맵핑될 수도 있다. 다음으로, 블록 (1350) 에서, 새롭게 생성된 클라이언트 (645) 가 상술된 바와 같이 유휴 상태에 있는 또는 요청된 상태로 새롭게 생성된 클라이언트의 대응하는 하나 이상의 자원들에 커플링된다. 프로세스는 그 다음에 도 10 의 블록 (1210) 으로 복귀한다.If the lookup to
도 12 는 PCD (100) 에 대한 소프트웨어 아키텍처에서 자원 (601) 에 대한 클라이언트 요청 (675) 을 생성하는 방법 (1400) 을 도시하는 플로 차트이다. 방법 (1400) 은 일반적으로 도 7 내지 도 11 과 연계하여 상술된 바와 같이 클라이언트 및 노드 생성 (인스턴스화) 후에 실행된다.12 is a flow chart illustrating a
블록 (1405) 은 자원 (601) 에 대한 클라이언트 요청 (675) 을 생성하는 방법 (1400) 에서의 제 1 단계이다. 이 방법 (1400) 은 다음의 3 개의 유형의 클라이언트 요청들 (675): (a) 요구된, (b) 임펄스, 및 (c) 벡터가 프레임워크 관리자 (440) 에 의해 처리되는 방법을 설명할 것이다. 상술된 요청들 (675) 의 이름들이 제시하는 바와 같이, 클라이언트 요청들 (675) 은 일반적으로 위에서 생성되고 설명된 클라이언트 유형들과 대응한다.
블록 (1405) 에서, 프레임워크 관리자 (440) 는 상술된 3 개: (a) 요구된, (b) 임펄스, 및 (c) 벡터 중 하나와 같은 특정 클라이언트 요청 (675) 과 연관된 데이터를 수신할 수도 있다. 요구되는 요청과 연관된 데이터는 일반적으로 요구되는 클라이언트 (648) 에서 특정 자원 (601) 으로 전달되는 스칼라 값을 포함한다. 예를 들어, 요구되는 요청은 소정의 개수의 MIP (millions of instructions per second) 들을 포함할 수도 있다. 임펄스 요청은 시작 시간 또는 중지 시간의 임의의 지정 없이 소정의 시간 기간 내에 일부 활동을 완료하기 위한 요청을 포함한다. 벡터 요청에 대한 데이터는 일반적으로 직렬로 또는 병렬로 완료되도록 요구되는 다수의 액션들의 어레이를 포함한다. 벡터 요청은 임의의 길이의 값들을 포함할 수도 있다. 벡터 요청은 보통 사이즈 값 및 값들의 어레이를 갖는다. 노드 (601) 의 각각의 자원은 벡터 요청을 지원하기 위해 포인터 필더를 갖도록 확장될 수도 있다. "C" 프로그래밍 언어에서, 포인터 필드는 당업자에 의해 이해되는 바와 같이 통합 함수에 의해 지원된다.At
다음으로, 블록 (1410) 에서, 프레임워크 관리자 (440) 는 도 11 과 연계하여 상술된 방법에 의해 생성된 클라이언트 (648) 를 통해 요청을 발행한다. 후속하여, 블록 (1415) 에서, 요청이 요구되는 유형 또는 벡터 유형인 경우 프레임 관리자 (440) 는 클라이언트를 통해 전달되는 요청 데이터를 이중 버퍼링한다. 요청이 임펄스 유형인 경우, 블록 (1415) 은 프레임워크 관리자 (440) 에 의해 스킵된다.Next, at
요구된 요청들에 대해, 이러한 블록 (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
블록 (1420) 에서, 프레임워크 관리자 (440) 는 요청된 값들의 현재 세트에서의 요청된 값들의 이전 세트 사이의 델타 및 차이를 계산한다. 결정 블록 (1425) 에서, 요청된 값들의 현재 세트가 요청된 값들의 이전 세트와 동일한지를 프레임워크 관리자가 결정한다. 다시 말해, 요청된 값들의 현재 세트와 요청된 값들의 이전 세트 사이에 차이가 존재하는지를 프레임워크 관리자 (440) 가 결정한다. 요청된 값들의 현재 세트와 이전 세트 사이에 차이가 없는 경우, "예" 브랜치에 뒤이어 (이는 블록들 (1430) 내지 블록 (1470) 을 스킵한다) 블록 (1475) 이 오며, 여기서 프로세스는 종료한다.At
결정 블록 (1425) 에 대한 조회가 부정적인 경우, (이는 요청된 값들의 세트가 미리-이전에 요청된 값들의 세트와 비교해 상이함을 의미한다), "아니오" 브랜치에 뒤이어 결정 블록 (1430) 이 온다.If the lookup to
결정 블록 (1430) 에서, 현재 요청이 비동기식 요청인지를 프레임워크 관리자 (440) 가 결정한다. 결정 블록 (1430) 에 대한 조회가 부정적인 경우, "아니오" 브랜치에 뒤이어 블록 (1440) 이 오며, 여기서 클라이언트 요청 (675) 에 대응하는 자원 (601) 이 프레임워크 관리자 (440) 에 의해 잠긴다. 결정 블록 (1430) 에 대한 조회가 긍정적인 경우 (이는 현재 요청이 비동기식 요청 유형임을 의미한다), "예" 브랜치에 뒤이어 블록 (1435) 이 오며, 여기서 도 1 의 것과 같은 다중-코어 시스템이 프레임워크 관리자 (440) 에 의해 현재 관리되는 경우, 요청은 다른 스레드 상으로 푸쉬될 수도 있고 다른 코어에 의해 실행될 수도 있다. PCD (100) 가 단일 코어 중앙 프로세싱 시스템인 경우 이러한 단계가 선택적일 수도 있음을 표시하기 위해 블록 (1435) 은 파선들로 도시되었다.At
후속하여, 블록 (1440) 에서, 요청 (675) 에 대응하는 자원들 (601) 이 프레임워크 관리자 (440) 에 의해 잠긴다. 다음으로, 블록 (1445) 에서, 자원 (601) 은 일반적으로 도 9 의 블록 (1130) 에서 수신된 자원 어레이 데이터의 플러그-인 데이터에 대응하는 업데이트 함수를 실행한다. 업데이트 함수는 일반적으로 새로운 클라이언트 요청을 고려하여 새로운 자원 상태를 책임지는 함수를 포함한다. 업데이트 함수는 그것의 이전 상태를 클라이언트 요청에서의 요청된 상태와 비교한다. 요청된 상태가 이전 상태보다 큰 경우, 업데이트 함수는 클라이언트 요청을 수행할 것이다. 그러나, 요청된 상태가 현재 상태 이하인 경우 그리고 자원이 현재 상태에서 동작하는 경우, 오래된 상태가 요청된 상태를 달성하거나 만족시키기 때문에 클라이언트 요청은 효율을 증가시키기 위해 수행되지 않을 것이다. 업데이트 함수는 클라이언트로부터 새로운 요청을 취하고 그것을 모든 다른 활성 요청들과 응집하여 (aggregate) 자원에 대한 새로운 상태를 결정한다.Subsequently, at
실시예로서, 다수의 클라이언트들이 버스 클록 주파수를 요청할 수도 있다. 버스 클록에 대한 업데이트 함수는 보통 모든 클라이언트 요청들의 최대치를 취하여 그것을 버스 클록에 대한 새로운 원하는 상태로서 이용할 것이다. 다수의 자원들에 으해 이용될 일부 업데이트 함수들이 있을지라도, 모든 자원들이 동일한 업데이트 함수를 이용할 것은 아니다. 일부 공통 업데이트 함수들은 클라이언트 요청들의 최대치를 취하며, 클라이언트 요청들의 최소치를 취하고, 클라이언트 요청을 합한다. 또는, 자원들은 그것들의 자원이 일부 고유한 방식으로 요청들을 응집할 필요가 있을 경우 자원들 자체의 맞춤 업데이트 함수를 규정할 수도 있다.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
이전의 실시예에서는, 업데이트 함수가 요청된 버스 클록 주파수를 컴퓨팅했다. 구동 함수는 요청된 주파수를 수신할 수도 있고, 클록 주파수 제어 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
오직 임계치들에 기초하여서만 트리거링되는 이벤트들의 이러한 규정은 자원이 필요 이상으로 신청되는 경우 (자원이 지원할 수 있는 것보다 더 많은 동시 사용자들을 갖는다) 의 통지를 허용하며, 통지는 시스템 과부하 조건, 또는 다른 것들이 셧 오프되는 것을 허용할 수도 있는 자원 부족/오프, 시스템이 필요이상으로 신청되는 경우에 디스에이블되는 재저장 기능성 등을 표시한다. 임계치들에 따라 이벤트 등록이 행해질 수도 있기 때문에, 오직 뭔가 정말로 필요한 경우에만 일어나도록 이벤트 통지에 대해 시스템이 해야할 작업의 양을 감소시킨다. 모든 상태 변화에 대한 이벤트를 등록하는 것이 또한 가능하다.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
후속하여, 블록 (1470) 에서, 다른 클라이언트 요청들 (648) 이 현재, 그러나 특정 노드 (601) 의 지금 해제되어진 요청된 자원에 의해 처리될 수도 있도록 프레임워크 (440) 가 요청된 자원을 잠금해제한다. 프로세스는 그 다음에 다음 클라이언트 요청을 수신하기 위해 제 1 블록 (1405) 으로 돌아간다.Subsequently, at block 1470, the
상술된 방법들 및 데이터 구조들은 근본적으로 그것들이 단일-프로세서 PCD (100) 에 적용가능한 것과 같이 다중-프로세서 PCD (100) 에도 적용가능하다. 그러나, 원격 프레임워크 (300) (도 3) 는 다중-프로세서 실시형태에서의 동작을 향상시킬 수도 있는 추가적인 특징들을 제공할 수도 있다. 예를 들어, 원격 프레임워크 (300) 는 유리하게는 애플리케이션 프로그래머 또는 유사한 사람이 알기 쉬운 프로세서간 통신의 세부사항들을 제공할 수도 있다. 따라서, 애플리케이션 프로그램은, 예를 들어, 자원을 제어하는 프로세서 도메인의 임의의 식별을 클라이언트 규정에 포함시켜야할 필요 없이 목표 자원에 대한 요청을 발행하는 클라이언트를 규정할 수도 있다. 오히려, 원격 프레임워크 (300) 는 어느 프로세서가 클라이언트를 제어하는지 그리고 어느 프로세서가 목표 자원을 제어하는지에 상관없이 요청이 목표 자원에 도달할 것을 보장한다. 또한, 원격 프레임워크 (300) 는 프로세서간 통신을 관리하여, 예를 들어, 애플리케이션 프로그램이 프로세서들 사이의 통신 경로들 (예를 들어, 버스들) 의 프로토콜 또는 다른 양상들과 관련된 임의의 명령들을 포함할 필요가 없다. 또한, 상이한 프로세서간 통신 경로들이 상이한 프로토콜들을 이용할 수도 있음에 따라, 원격 프레임워크 (300) 는 자원 규정이 자원의 다른 양상들과 함께 프로토콜을 명시하는 것을 허용한다. 분산된 자원 관리와 관련된 이러한 특징들 및 다른 특징들은 도 13 내지 도 23 에 대하여 하기에서 설명된다.The above-described methods and data structures are fundamentally applicable to
도 13 은 제 1 프로세서 (미도시) 에 의해 제어되는 제 1 자원 (1302) 이 제 2 프로세서 (미도시) 에 의해 제어되는 제 2 자원 (1304) 에 대응하는 분산된 또는 원격 자원의 역할을 하는 실시예 또는 경우를 도시한다. 용어 "분산된 자원" 또는 "원격 자원" 은 다른 프로세서 상의 "네이티브" 자원에 대응하는 하나의 프로세서 상의 자원을 지칭하기 위해 본 개시물에서 이용된다. 본 실시예에서의 제 2 자원 (1304) 은 제 2 프로세서에 대한 네이티브 자원의 역할을 한다. 분산된 자원은 대응하는 네이티브 자원에 액세스하기 위한 수단으로서 이용된다. 이러한 실시예에서, 용어 "자원" 은 용어 "노드" 와 상호교환가능하게 이용될 수도 있는데, 자원이 노드에 포함될 수도 있기 때문에 이와 같이 이해되어야 한다.Figure 13 illustrates that a
점선 (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 의 그러한 자원 그래프에 의해 규정된다는 것에 유의한다.
그것들 각각의 프로세서들의 제어 하에, 제 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
도 14 는 도 13 의 제 1 자원 (1302) 과 같은 분산된 자원을 생성하거나 인스턴스화하는 방법 (1400) 을 도시하는 플로차트이다. 도 14 의 플로차트는, 도 7 내지 도 10 에서 도시된 방법과 같이, 자원들을 인스턴스화하는 방법들에 관하여 상술된 특징들에 더해 또는 상술된 특징들을 증대시키는 특징들을 도시하고자 한다. 이에 따라, 달리 표시될 수도 있는 경우를 제외하고, 도 7 내지 도 10 에서의 블록들 중 임의의 블록 또는 모든 블록들이 포함될 수도 있으나, 명확함을 위에 도 14 에 도시되지는 않는다.FIG. 14 is a flowchart illustrating a
블록 (1402) 에서 표시된 바와 같이, 프레임워크 관리자들 (300 및 440) 은 제 1 자원 (1302) 을 포함하는 것과 같은, 노드를 규정하는 노드 구조 데이터를 수신한다. 예시적인 실시형태에서, 의존성들은, 블록 (1406) 에 의해 표시된 바와 같이, 프로토콜 자원들이 임의의 시간에 인스턴스화될 수도 있다는 점을 제외하고는, 도 7 내지 도 10 에 대하여 상술된 바와 근본적으로 동일한 방식으로 처리된다. 프로토콜 자원에 의존하는 자원은 그것의 프로토콜 자원이 인스턴스화될 때까지 기다릴 필요가 없다. 도 7 내지 도 10 에 대하여 상술된 방식에서의 의존성들의 인스턴스화는 일반적으로 블록 (1408) 에 의해 도시된다.As indicated at
인스턴스화가 일반적으로 도 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
제 1 프로세서 상의 프로토콜 자원 (1306) 은, 다른 함수들 중에서, 도 13 에 도시된 클라이언트 (1312) 와 같은 클라이언트를 생성하고, 실행의 스레드에 의해 이용될 수도 있는 클라이언트에 대한 처리를 반환하는 함수를 포함할 수도 있다. 실행의 스레드 (예를 들어, 애플리케이션 프로그램 또는 다른 소프트웨어 요소의 실행의 일부분) 는 이러한 클라이언트 (1312) 를 생성하는 함수를 불러올 수도 있다. 스레드는 자원 요청들을 발행하기 위해 클라이언트 (1312) 를 이용할 수도 있고, 그렇지 않으면 일반적으로 클라이언트들에 대하여 상술된 바와 동일한 방식으로 클라이언트 (1312) 를 이용할 수도 있다. 자원 요청은 프로토콜-특정이고, 스레드가 프로토콜과 관련된 임의의 정보를 제공해야할 필요 없이 스레드가 제 2 자원 (1304) 에 대해 액세스하는 것을 허용한다. 스레드 및 스레드의 클라이언트들의 관점에서, 프로토콜은 상관없거나 알기 쉬울 수도 있다.The
블록 (1410) 에서 표시되는 바와 같이, 응집 방법이 수신된 노드 구조 데이터에 명시되었는지를 프레임워크들 (300 및 400) 이 결정한다. 응집 방법이 명시되었다고 결정되는 경우, 블록 (1412) 에 표시되는 바와 같이, 응집 방법이 분산된 자원 (노드) 및 네이티브 자원 (노드) 에 설정된다. 2 개의 응집 유형들: 로컬 및 프록시가 있다. 자원을 규정할 시에, 2 개의 응집 유형들 중 하나의 응집 유형이 선택될 수도 있다. 이에 따라, 자원 (노드) 을 인스턴스화할 시에, 자원은 로컬 응집 또는 원격 응집 중 어느 일방을 수행하도록 설정된다.As shown in
자원은 "동시에" 수신할 수도 있는 다수의 자원 요청들에 알고리즘을 적용함으로써 로컬 응집을 수행하다. 이러한 맥락에서, 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
블록 (1416) 에 의해 표시되는 바와 같이, 인스턴스화 프로세스에서의 임의의 잔여 단계들이 일어난다. 분산된 노드를 인스턴스화하는 이러한 양상들은 근본적으로 도 7 내지 도 10 에 대하여 상술된 바와 동일할 수도 있다. 블록 (1418) 에 의해 표시되는 바와 같이, 추가적인 노드들이 규정되는 경우, 방법은 이러한 노드들에 대해 반복하거나 계속한다.As indicated by
도 15 는 클라이언트 요청에 서비스하는 방법 (1500) 을 도시하는 플로차트이다. 도 15 의 플로차트는, 도 12 에서 도시된 방법과 같이, 클라이언트 요청들을 서비스하는 방법들에 관하여 상술된 특징들에 더해 또는 상술된 특징들을 증대시키는 특징들을 도시하고자 한다. 이에 따라, 달리 표시될 수도 있는 경우를 제외하고, 도 12 에서의 블록들 중 임의의 블록 또는 모든 블록들이 포함될 수도 있으나 명확함을 위해 도 15 에 도시되지는 않는다.15 is a flow chart illustrating a
블록 (1502) 에 의해 표시되는 바와 같이, 도 13 에서의 제 1 노드 (1302) 의 것과 같은, 분산된 자원이 클라이언트 요청을 수신한다. 블록 (1504) 에 의해 표시되는 바와 같이, 요청된 자원과 연관된 응집 유형이 로컬 또는 원격인지 여부가 결정된다. 응집 유형이 로컬인 경우, 블록 (1506) 에 의해 표시되는 바와 같이, 요청된 자원은 요청 인수를 동일한 윈도우 내에서 일어나는 다른 것들과 응집하다. 상술된 바와 같이, 응집은 동시적 자원 요청들을 처리하는 것에 관한 것이다. 요청된 자원과 연관된 응집 유형이 원격인 경우, 요청을 다른 것들과 응집하기 위해, 도 13 에서의 제 2 자원 (1304) 과 같은, 대응하는 네이티브 자원에 대해 남겨질 것이다.As indicated by
로컬이든 원격이든, 응집은 클라이언트 요청의 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
도 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
블록 (1602) 에 의해 표시되는 바와 같이, 도 13 에서의 제 1 노드 (1302) 의 것과 같은, 분산된 자원이 상태 질의를 수신한다. 이러한 실시예에서, 제 1 노드 (1302) 는 프록시화되지 않은 노드 또는 자원을 나타낸다. 블록 (1604) 에 의해 표시되는 바와 같이, 도 13 에서의 제 2 자원 (1304) 와 같은 대응하는 네이티브 자원에 상태 질의가 포워딩된다. 블록 (1606) 에 의해 표시되는 바와 같이, 상태 질의에 응답하여 네이티브 자원의 상태가 분산된 자원으로 다시 전송된다. 블록 (1608) 에 의해 표시되는 바와 같이, 분산된 자원이 그 다음에 네이티브 자원의 상태를 나타내는 상태 표시를 질의 요청자 (클라이언트) 에게 제공할 수도 있다.As represented by
도 17a 는 프록시화된 유형의 분산된 자원에 대한 상태 질의를 서비스하는 방법 (1700) 의 제 1 부분을 도시하는 플로차트이다. 블록 (1702) 에 의해 표시되는 바와 같이, 도 13 에서의 제 1 노드 (1302) 의 것과 같은, 분산된 자원이 상태 질의를 수신한다. 이러한 실시예에서, 제 1 노드 (1302) 는 프록시화된 노드 또는 자원을 나타낸다. 각각 블록 (1704) 및 블록 (1706) 에 의해 표시되는 바와 같이, 분산된 자원이 네이티브 자원의 상태의 표시를 수신할 때마다, 분산된 자원이 그것의 상태를 업데이트하여 네이티브 자원의 상태를 반영한다. 블록 (1608) 에 의해 표시되는 바와 같이, 분산된 자원이 질의 요청자 (클라이언트) 에게 분산된 자원의 자체 상태의 표시를 제공한다. 따라서, 프록시화되어진 분산된 자원의 경우에, 분산된 자원의 상태는 오직 대응하는 네이티브 자원으로부터의 상태에서의 변화의 통지를 수신하는 경우에만 변한다.17A is a flow chart illustrating a first portion of a
블록에 의해 표시되는 바와 같이, 도 13 에서의 제 2 자원 (1304) 과 같은 대응하는 네이티브 자원에 상태 질의가 포워딩된다. 블록 (1606) 에 의해 표시되는 바와 같이, 상태 질의에 응답하여 네이티브 자원의 상태가 분산된 자원으로 다시 전송된다.As indicated by the block, the state query is forwarded to the corresponding native resource, such as the
도 17b 는 프록시화된 유형의 분산된 자원에 대한 상태 질의를 서비스하는 방법 (1700) 의 제 2 부분을 도시하는 플로차트이다. 이러한 제 2 부분은 네이티브 자원의 관점을 반영하고, 도 17a 에 도시된 제 1 부분과 비동기식으로 그리고 병행하여 동작한다. 블록 (1710) 에 표시된 바와 같이, 도 13 의 제 2 노드 (1304) 와 같은 네이티브 자원의 상태가 모니터링된다. 각각 블록 (1712) 및 블록 (1714) 에 의해 표시된 바와 같이, 네이티브 자원의 상태에서의 변화가 검출되는 경우, 네이티브 자원의 상태의 표시가 대응하는 분산된 자원에 전송된다.17B is a flow chart illustrating a second portion of a
적절한 경우들에서 프록시화되어진 분산된 자원들의 이용은 프로세서간 트래픽을 최소화한다는 원하는 목표를 증진할 수도 있는데, 상태 정보가 오직 네이티브 자원의 상태가 변하는 경우에만 네이티브 자원의 프로세서에서 분산된 자원의 프로세서로 전송되기 때문이다. 대조적으로, 프록시화되지 않은 자원의 경우에는, 분산된 자원이 상태 질의를 수신할 때마다 상태 질의가 전송되고 상태 정보가 반환된다. 프록시화된 자원들은, 예를 들어, 제 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
자원 요청들의 트랜잭션을 제공하는 것은 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
자원 요청들의 트랜잭션을 발행하기 위해, 자원, 스레드, 또는 자원 요청들의 이전에 규정된 트랜잭션을 "시작" 하거나 설정하는 다른 그러한 엔티티 실행 소프트웨어 코드는 자원 요청들의 트랜잭션의 일부분으로 규정되는 다양한 자원들에 대한 자원 요청들을 발행하고, 그 다음에 자원 요청들의 트랜잭션을 종료하여, 배칭된 요청들의 프로세싱을 개시하고 자원 요청들의 트랜잭션을 종료한다. 자원 요청들의 트랜잭션을 종료하는 프로세스는 제 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
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
명확함을 위해 상기의 의사코드에서는 반영되지 않았으나, 자원 요청들의 트랜잭션은 조건적 로직을 포함할 수도 있음을 유의하는 것이 유용하다. 예를 들어, 자원 요청들의 트랜잭션을 나타내는 코드는 형태 "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
다른 실시형태에서, 자원 요청들의 트랜잭션과 연관된 잠김 유형이 (하기에서 추가로 설명되는 바와 같이) "느슨한" 경우, 자원 요청들의 트랜잭션을 규정하고 발행하는 엔티티는, 자원 요청들의 트랜잭션의 규정 양상 동안에, 트랜잭션의 일부분일 수도 있는 모든 자원들을 규정하거나 열거해야 하는 것으로 제약될 필요가 없다. 트랜잭션의 맥락에서 발행되는 이러한 자원들에 대한 하나 이상의 요청들에 의해, 트랜잭션의 일부분인 (또는, 일부분이 되는 경우의) 자원들이 트랜잭션에 동적으로 포함되는 것이 전적으로 가능하다. 예로서, 상기의 의사코드에서, 트랜잭션을 발행하는 엔티티는, 트랜잭션과 연관되는 잠김 유형이 "느슨한" 것인 경우, 규정 양상 동안에, 트랜잭션의 일부로서 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
각각 블록 (1804) 및 블록 (1806) 에 의해 표시되는 잠금 단계 및 큐에 추가하기 단계는 임의의 순서로 수행될 수도 있고, 하나 이상의 하위-단계들을 수반할 수도 있다는 것이 유의되어야 한다. 예를 들어, 하기에서 설명되는 바와 같이, 회의적 잠금 유형인 것으로 규정된 자원 요청들의 트랜잭션에서, 자원 요청들의 트랜잭션의 규정에서 표시되는 모든 자원들은 자원 요청들과 연관된 임의의 정보가 큐에 추가되기 전에 잠긴다. 그러나, 느슨한 잠금 유형일 것으로 규정된 자원 요청들의 트랜잭션에서, 각각의 자원 요청은 차례로 요청된 자원의 잠금 및 오직 그 자원 요청과 연관된 정보만을 큐에 추가하기를 초래한다. 다시 말해, 자원 요청들의 트랜잭션에서, 잠금 단계 및 큐에 추가하기 단계는 서로 교번하는 방식으로 수행될 수도 있다. 회의적 잠금 및 느슨한 잠금은 하기에서 보다 상세히 설명된다.It should be noted that the locking and queuing steps represented by
블록 (1808) 에 의해 표시되는 바와 같이, 트랜잭션의 종료의 표시에 응답하여 수신자에게 큐가 송신된다. 수신자는, 예를 들어, 다른 프로세서일 수도 있다. 수신자는, 예를 들어, 다른 프로세서, 즉, 그로부터 자원 요청들의 트랜잭션이 발행되는 프로세서 이외의 프로세서일 수도 있다. 이러한 경우에서, 큐는 자원 요청들이 상술된 방식으로 트랜잭션화되지 않은 경우에 발행될 다수의 자원 요청들과 연관된 다수의 메시지들의 위치를 취한다. 발행 엔티티에서, 요청들의 큐가 프로세싱되었다는 수신자로부터의 통지가 있을 때까지 실행의 스레드는 차단된다. 그 다음에, 발행 엔티티에서 임의의 잔여 프로세싱이 완료되고 (이는 로컬 자원 프록시들에 대한 임의의 업데이트들 및 임의의 등록된 콜백들의 실행을 수반할 수도 있다), 트랜잭션은 완료된 것으로 여겨진다. 이 모든 것들은 상기의 의사코드에서 "END_TRANSACTION(HANDLE)" 에 의해 나타내어진다.As indicated by
블록 (1810) 에 의해 표시되는 바와 같이, 자원 요청들의 트랜잭션에서 표시되어지는 자원들의 모두는, 상기의 의사코드에서 "END_TRANS ACTION" 에 의해 나타내어지는 바와 같이, 트랜잭션의 종료 다음에 잠금해제된다. 따라서, 큐가 송신된 다음에 자원들이 잠금해제되고 배칭된 요청들이 프로세싱된다.As indicated by
본 문서에서 자원 요청들의 트랜잭션 내에서 발행된 자원 요청들이 큐에 추가되는 것으로 언급하나, "큐" 는 표준 큐의 특성들 중 임의의 특성, 예컨대, 선입선출 (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
자원 요청들의 트랜잭션이 느슨한 잠금 유형인 것으로 규정된 경우에, 자원 (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
느슨한 잠금 방법은 자원 요청들의 트랜잭션에 수반되는 자원들의 세트를 규정하는 자원 그래프의 특성들이 교착상태 조건의 가능성을 막는 경우 만족스러울 수도 있다. 도 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
이러한 경우에 교착상태 조건의 가능성을 피하기 위해, 자원 요청들의 트랜잭션은 느슨한 잠금 유형보다는 회의적 잠금 유형의 것으로 규정될 수도 있다. 회의적 잠금 유형의 자원 요청들의 트랜잭션에서, 자원 요청들의 트랜잭션에서 표시된 모든 자원들은, 개별적인 자원 요청들의 임의의 표시들 전에 (또는 임의의 개별적인 자원 요청들이 발행되기 전에), 트랜잭션의 시작의 표시에 응답하여 잠긴다. 따라서, 상기의 의사코드 및 도 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
도 23 은 자원 요청에 응답하기 위한 자원에 대한 방법 (2300) 을 도시하는 플로차트이다. 방법 (2300) 에 대해 언급되는 자원은, 예를 들어, 상기 의사코드에서 언급되는 자원들 (A, B, 및 C) 중 임의의 자원일 수도 있다. 블록 (2302) 에 의해 표시되는 바와 같이, 자원이 자원 요청을 수신한다. 예를 들어, 자원 (A) 은 상기의 의사코드에서 "REQUEST(A)" 에 의해 나타내어지는 코드의 실행에 응답하여 요청을 수신할 수도 있다. 자원이 느슨한 잠금 유형의 자원 요청들의 트랜잭션에 수반되는 경우, 자원은 이 시점에서 잠긴다. 그러나, 자원 요청이 발행되는 것에 대한 자원의 관점을 방법 (2300) 이 나타내기 때문에 도 23 에 잠금은 도시되지 않고, 자원은 자원의 일부분이 아닌 제어 엔티티에 의해 잠기고 잠금해제될 수도 있다. 예를 들어, 자원들로 그리고 자원들로부터 메시지들을 라우팅하는데 수반되는 제어 기능들의 일부분으로서, 프레임워크 관리자 (440) 에 포함된 엔티티는 자원들의 잠금과 잠금해제, 및 일어날 수도 있는 임의의 교착상태들의 처리를 제어할 수도 있다.23 is a flow chart illustrating a
블록 (2304) 에 의해 표시되는 바와 같이, 자원은 자원이 자원 요청들의 트랜잭션에 수반되는지 여부를 결정한다. 자원 요청들의 트랜잭션의 시작에서 설정될 수도 있는 상태 표시자가 각각의 자원에 포함되어 자원이 자원 요청들의 트랜잭션에 포함된다는 것을 표시할 수도 있다. 다른 실시형태 (또는 구현예) 에서, "BEGIN_TRANSACTION" 에 의해 나타내어지는 의사코드를 스레드가 실행한 후에 상태 표시자가 스레드에 설정될 수도 있어, 현재 스레드가 자원 요청들의 트랜잭션을 시작했음을 표시한다. 자원이 자원 요청들의 트랜잭션에 수반되지 않는다고 자원이 결정하는 경우, 자원은 블록 (2306) 에 의해 표시되는 바와 같이, 정규 방식으로 자원 요청을 수행한다. 즉, 자원은 도 12 및 도 15 에 대하여 상술된 정규 방식으로 자원 요청을 수행하고 완료할 수도 있다. 도 12 에 대하여 상술된 바와 같이, (트랜잭션화되지 않은) 자원 요청의 수행의 시작에서, 자원은 잠기고, 자원 요청의 완료에서, 자원은 잠금해제된다는 것에 유의한다.As indicated by
자원이 자원 요청들의 트랜잭션에 수반된다고 자원이 결정하는 경우, 블록 (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
도 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
도 24 에 도시된, 2 개의 프록시 자원들 RES0 (207A) 및 RES1 (207B) 의 소유자는 역시 도 2 에 도시된 자원 전력 관리자 ("RPM") (204) 이다. 이러한 2 개의 프록시 자원들 RES0 (207A) 및 RES1 (207B) 의 소유자로서, 도 24 에 도시된 바와 같은 RPM (204) 은 트랜잭션에서 이러한 2 개의 프록시 자원들에 발행된 요청들 중 임의의 요청을 이행한다.The owner of the two
도 24 에 도시된 바와 같은 RES0 (207A) 및 RES1 (207B) 은 프록시들이다. 프록시들은 당업자에 의해 이해되는 바와 같이 실제 자원들의 논리적 표현들이다. 프록시들은, 메모리에서, RPM (204) 을 통해 모뎀 (202) 과 같은 로컬 프로세싱 엔티티에 의해 액세스가능한 원격으로 위치된 하드웨어 또는 소프트웨어자원의 표현들이다. RPM (204) 은 모뎀 (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
상술된 바와 같이, RPM (204) 에 의해 관리되고 RPM (204) 에 아주 근접하여 위치되는 (그리고 간결성을 위해 도시되지 않은) 실제 자원들은 RPM (204) 내에 포함되거나 RPM (204) 내에 있다. 한편, 이러한 프록시들 (207A, 207B) 은 당업자에 의해 이해되는 바와 같이 소프트웨어로 관리되고 모뎀 (202) 에 의해 메모리에 저장된다. 프록시들은 요청들을 수신하고, 그 다음에 이러한 요청들을 RPM (204) 에 인접하게 또는 RPM (204) 내에 위치된 실제 자원들에게 이러한 요청들을 전달한다.As discussed above, the actual resources managed by the
제 1 클라이언트 (208) 와 같은 클라이언트 애플리케이션들은 이러한 예시적인 실시형태에서 제 1 프로세싱 엔티티인 모뎀 (202) 의 소유자들이다. 클라이언트 애플리케이션들 (208) 은 통상적으로 RPM (204) 에 의해 관리되는 2 개의 프록시 자원들 RES0 (207A) 및 RES0 (207B) 에 대한 요청들을 발행한다.Client applications, such as the
제 1 클라이언트 (208) 는 특정 트랜잭션을 위해 그리고 최적화를 위해 2 개의 프록시 자원들 (207A, 207B) 에 액세스할 필요가 있기 때문에, 제 1 클라이언트 (208) 는 이러한 2 개의 별개의 프록시 자원들 (207A, 207B) 에 대한 제 1 클라이언트의 요청들을 함께, 도 24 에 도시된 타임라인에서의 포지션 (305) 에서 트랜잭션으로 배칭하도록 결정할 수도 있다. 도 24 의 타임 라인 포지션 (305) 에서, 2 개의 프록시 자원들 (207A, 207B) 은 배칭된 요청의 착신 (incoming) 이 경고된다.Because the
요청들이 함께 트랜잭션들로 배칭되는 방법의 보다 세부사항들은 도 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
포지션 (310) 에서, 제 1 클라이언트 (208) 가 제 1 프록시 자원 RES0 (207A) 에 제 1 요청을 발행한다. 제 1 요청은 제 1 프록시 자원 (207A) 에 의해 서비스되지 않는다. 대신에, 제 1 프록시 자원 (207A) 은 다른 클라이언트들이 제 1 프록시 자원 (207A) 에 액세스하는 것으로부터 잠긴다. 포지션 (311) 에서, 제 1 프록시 자원 (207A) 이 수신된 제 1 요청을 큐 (115) 에 포워딩한다.At
큐 (115) 는 큐 내에 포함되는 정보에 대하여 임의의 특정 순서화를 가질 수도 있거나 갖지 않을 수도 있다. 큐는 큐의 데이터 구조를 통제하는 임의의 표준 큐 요구사항들을 가질 수도 있거나 갖지 않을 수도 있다. 다시 말해, 큐 (115) 는 당업자에 의해 이해되는 바와 같은 임의의 유형의 논리적 버킷을 포함할 수도 있다. 제 1 프록시 자원 (207A) 은 포지션 (312) 에서 제 1 클라이언트 (208) 에게 다시 확인응답 또는 호출 반환을 발행한다.The
포지션 (315) 에서, 제 1 클라이언트 (208) 는 제 2 프록시 자원 (207B) 에 제 2 요청을 발행한다. 제 1 프록시 자원 (207A) 과 유사하게, 제 2 프록시 자원 (207B) 은 다른 클라이언트들이 제 2 프록시 자원 (207B) 에 액세스하는 것으로부터 잠긴다. 포지션 (316) 에서, 제 2 프록시 자원 (207B) 은 배칭 큐 (115) 에 수신된 제 1 요청을 포워딩한다. 그리고, 제 2 프록시 자원 (207B) 은 포지션 (317) 에서 제 1 클라이언트 (208) 에 다시 확인응답 또는 호출 반환을 발행한다.At
포지션 (252) 에서, 포킹된 트랜잭션 호출이 제 1 클라이언트 (208) 에 의해 초기화되었다. 포지션 (252) 은 또한 도 15 내지 도 23 과 연계하여 상술된 바와 같이 규칙적인 배칭 트랜잭션 호출이 종료될 시간에서의 인스턴스를 마킹한다. 양자 모두의 경우들에서, 배칭된 요청들은 여기서는 RPM (204) 에 송신될 것이다.At
제 1 프록시 자원 (207A) 및 제 2 프록시 자원 (207B) 에 의해 나타내어지는 (본 도면에서 도시되지 않은) 실제 자원들은 배칭된 트랜잭션 동안에 잠길 것이고, 실제 자원들은 포지션 (252) 에서 배칭된 트랜잭션(들)의 그것들의 할당된 요청들을 완료할 것이다. 배칭된 트랜잭션(들)을 완료한 후에, 그러면 실제 자원들의 프록시들 (207A, 207B) 을 통해 실제 자원들은 제 1 클라이언트 (208) 에 확인응답을 반환했을 것이다.The actual resources (not shown in this figure) represented by the
제 1 및 제 2 프록시 자원들 (207A, 207B) 은 그러면 도 15 내지 도 23 에 도시된 정규 배칭된 트랜잭션 시나리오 하에서 잠금해제될 것이다. 포지션 (252) 에서 정규 배칭된 트랜잭션의 실행을 초기화/시작하는 대신에, 도 24 에서 도시된 바와 같이 발명의 시스템 (101) 은 포지션 (252) 에서 포킹된 트랜잭션을 초기화한다.The first and
포킹된 트랜잭션에서, 태스크들 및/또는 동작들이 나눠져서 태스크들 및/또는 동작들이 병렬로 수행될 수도 있다. 파선에 할당된 타임 라인 포지션 (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
포지션 (255) 으로부터의 배칭된 요청을 포함하는 비동기식 호출 바로 후에 있는 포지션 (258) 에서, 프레임워크 관리자 (440) 는 제 1 프록시 자원 (207A) 및 제 2 프록시 자원 (207B) 을 잠금해제한다. 제 1 및 제 2 프록시 자원들 (207A, 207B) 이 잠금해제되고, 당업자에 의해 이해되는 바와 같이, 임의의 후속하는 요청들을 수락하나 프로세싱하지는 않을 수도 있다.At
포지션 (257) 에서, 호출은 제 1 클라이언트 (208) 로 반환되고, 프록시 자원들 (207A 및 207B) 이 잠금해제됨을 표시한다. 제 1 및 제 2 프록시 자원들 (207A, 207B) 은 이 스테이지에서 인코히어런트 (incoherent) 상태에 있다. 이러한 2 개의 프록시 자원들 (207A, 207B) 은 이 단계에서 요청들을 수락하기는 하는 요청들이 프로세싱되지는 않았다.At
타임 라인 포지션 (260) 은 잠재적인 제 1 병렬 프로세싱 블록으로 특징지어졌다. 포지션 (260) 에서, 제 1 클라이언트 (208) 는 제 1 및 제 2 프록시 자원들 (207A, 207B) 에 대해 발행된 요청들이 RPM (204) 으로부터의 제어 하에 완료될 것을 기다리지 않으면서 다른 요청들을 계속 발행하고/하거나 다른 태스크들을 실행할 수도 있다. 종래의 시스템들에서, 제 1 클라이언트 (208) 는 포지션 (260) 에서 차단되었을 것이다.The
포지션 (260) 과 대응하는 포지션 (256) 은 제 2 병렬 프로세싱 블록이라고 특징지어질 수도 있다. 포지션 (256) 에서의 이러한 제 2 병렬 프로세싱 블록은 실제 자원들 (미도시) 에 의해 수행되고 RPM (204) 의 제어 하에 있는 제 1 및 제 2 자원 프록시들 (207A, 207B) 에 의해 중계되는 2 개의 요청들의 프로세싱과 관련된다.The
이러한 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
프레임워크 관리자 (440) 또는 프록시 자원 (207A) 은 발행되는 이러한 제 3 요청을 모니터링할 것인데, 프레임워크 관리자 (440) 또는 프록시 자원 (207A) 이 제 1 클라이언트 (208) 에 의해 발행되는 이전의 2 개의 요청들이 병렬 프로세싱을 위해 (포킹된 요청들이라고 플래그 표시된) 트랜잭션으로부터 포킹해제되었다는 통지를 수신하였기 대문이다.The
프레임워크 관리자 (440) 또는 제 1 프록시 자원 (207A) 은 제 3 요청을 가지고 있고, (배칭 요청을 구성하는) 제 1 요청 및 제 2 요청이 제 1 프록시 자원 (207A) 에 의해 완료되고 서비스되었다고 RPM (204) 으로부터 포지션들 (269 및 270) 에서 통지를 수신할 때까지 기다린다.The
포지션들 (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
당업자에 의해 이해되는 바와 같은, ISR (299) 외에, 2 개의 프로세싱 엔티티들 사이에서 메시지들을 중계하기 위한 임의의 다른 통신 매체가 사용될 수도 있다. 통신들을 중계하는 ISR (299) 의 하나의 이점은, 모뎀 (202) 이 RPM (204) 으로부터의 포킹되어진, 배칭된 요청 완료 신호를 기대할 필요가 없다는 점에서, 2 개의 프로세싱 엔티티들 사이의 통신들이 비동기로 중계될 수도 있다는 것이다.In addition to
ISR (299) 을 이용하여, RPM (204) 은 포킹되어진, 배칭된 요청 완료 신호를 모뎀 (204) 에 전송할 수도 있다. 다른 예시적인 실시형태에서, ISR (299) 을 이용하는 대신에, 모뎀 (202) 은 RPM (204) 을 폴링하고 RPM (204) 에 의해 발행될 포킹되어진, 배칭된 요청 완료 신호를 검색하도록 설계될 수도 있다. 포킹되어진, 배칭된 요청 완료 신호를 통신하는 이러한 대안예들은 당업자에 의해 이해된다.Using the
제 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
후속하여, 포지션 (272) 에서, 제 1 프록시 자원 (207A) 은 RPM (204) 에 제 3 요청을 포워딩한다. 제 3 요청이 제 1 자원 (207A) 에 대응하는 실제 자원 (미도시) 에 의해 서비스된 후에, RPM (204) 은 제 1 프록시 자원 (207A) 과 관련되는 제 3 요청 완료 신호를 포지션 (274) 에서 발행한다.Subsequently, at
도 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
이는 도 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
이러한 인코히어런트 상태에서, 제 1 및 제 2 프록시 자원들 (207A, 207B) 은 포킹된 요청이 완료되고 모든 관련된 클린-업 태스크들이 로컬로 완료될 때까지 새로운 요청들에 서비스할 수 없다. 이러한 시나리오로는, 여러 개의 조인 지점들이 가능할 수도 있다. 조인 지점들이 이제 다음과 같이 설명될 것이다.In this incoherent state, the first and
도 24 에 도시된 예시적인 실시형태에서, 타임 라인 포지션 (270) 에서 배칭 요청 완료 신호가 제 1 프록시 자원 (207A) 과 교차하는 곳에 조인 지점 (280) 이 존재한다. 이러한 조인 지점 (280) 은 제 1 프록시 자원 (207A) 과 배칭 요청을 포함하는 트랜잭션에 대한 조인 지점 (280) 으로 특징지어질 수도 있다.In the exemplary embodiment shown in FIG. 24, there is a
조인 지점 (280) 에서, 2 개의 요청들 (제 1 프록시 자원 (207A) 에 대해 예정된 제 1 요청, 및 제 2 프록시 자원 (207B) 에 대해 예정된 제 2 요청) 이 포함된 트랜잭션임에도 불구하고, 오직 제 1 프록시 자원 (207A) 만이 조인 지점 (280) 에서 조인된다. 제 1 프록시 자원 (207A) 은 제 1 클라이언트 (208) 가 제 3 요청에 대하여 고려하는 유일한 엔티티이기 때문에, 제 2 프록시 자원 (207B) 을 조인하기 위해 필요한 임의의 클린업 작업은 계속 연기될 수도 있다. 클린업 작업은 (제 2 프록시 자원 (207B) 으로 나타내어지는) 제 2 자원을 코히어런트 (coherent) 상태에 있게 하기 위해 필요한 추가적인 태스크들 또는 작업을 지칭할 수도 있으며, 코히어런트 상태에서 제 2 자원은 다른 요청에 서비스할 수도 있다.At
제 1 프록시 자원 (207A) 및 제 2 프록시 자원 (207B) 이 조인 지점 (280) 에서 조인가능할지라도, 제 3 요청이 오직 제 1 프록시 자원 (207A) 만을 요구하기 때문에 오직 제 1 프록시 자원 (207A) 만이 조인 지점 (280) 에서 조인된다. 제 2 프록시 자원 (207B) 은 조인 지점 (280) 에서 인코히어런트 상태에 있는 것으로 특징지어질 수도 있다. 제 2 프록시 자원 (207B) 이 이 스테이지에서 조인가능하나, 제 2 프록시 자원 (207B) 은 제 3 요청에 의해 요구되지 않기 때문에, 제 2 프록시 자원은 그것의 인코히어런트 상태로 있을 수 있다.Although the
본 예시적인 실시형태에서 제 2 프록시 자원 (207B) 과 같은 포킹된 자원은 그것이 다른 요청에 의해 필요할 때까지 조인되지 않는다. 이러한 인코히어런트 상태에 있는 동안에, 다른 엔티티가 제 2 프록시 자원으로부터의 서비스들을 필요로 하지 않는 경우, 제 2 프록시 자원 (207B) 은 포크 요청과 연관된 임의의 클린업 작업 또는 클린업 태스크들을 완료할 필요가 없다. 이는 클린업 작업 또는 클린업 태스크들이 추후에 완료되는 것을 허용한다. 클린업 작업 또는 클린업 태스크들을 추후로 연기하는 것은 프로세싱 전력을 절약한다: 이는 클린업 작업이 절대적으로 필요할 때 (인코히어런트 상태에 있을 수도 있는 자원으로부터의 서비스들이 필요할 수도 있을 때) 까지 연기하는 것을 허용한다.In this exemplary embodiment, the forked resource, such as the
(도 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
따라서, 제 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
트랜잭션에 서비스하도록 이용되고 있는 임의의 하나의 자원에 대한 요청이 이루어질 때마다 트랜잭션은 조인하거나 코히어런트 상태로 진입한다. 트랜잭션의 일부분인 자원들의 각각에 대한 별개의 요청들이 이루어지나, 트랜잭션 엔티티가 실행되는 제 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
트랜잭션을 조인시키기 위한 이러한 매커니즘은 트랜잭션의 모든 요청들이 완료될 때까지 시스템이 기다리게 하도록 설계되기 때문에 차단 호출로 특징지어질 수도 있다. 그래서, 예를 들어, 명시적 호출을 한 제 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
포지션들 (269 및 270) 로 표시되는 바와 같이 제 1 및 제 2 요청들이 완료되었다는 통지를 조인 트랜잭션 호출이 수신하면, 제 1 및 제 2 프록시 자원들 (207A, 207B) 이 트랜잭션의 일부분이기 때문에, 조인 트랜잭션 호출은 제 1 및 제 2 프록시 자원들 (207A, 207B) 을 함께 조인시킬 것이다. 조인 트랜잭션 호출은 그러면 제 1 클라이언트 (208) 와 같은 요청하는 엔티티에 다시 통지 (호출) 를 전송하여, 제 1 및 제 2 프록시 자원들 (207A, 207B) 이 다시 과도한 지연 없이 임의의 다른 추가적인 요청들을 프로세싱하도록 준비된 코히어런트 상태에 있다는 것을 표시한다. 이러한 프록시 자원들 (207A, 207B) 이 조인 트랜잭션 호출이 부재한 인코히어런트 상태에 있도록 된 경우 클린업으로 인해 지원이 존재했을 것이다.Since the first and
조인 트랜잭션 호출이 이용될 예시적인 시나리오들은 다음과 같다: 명시적 동기화, 또는 요청들 및/또는 태스크들의 세트의 게이팅 (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) 이 다양한 유형의 자원들 (207A, 207B) 에 대한 일부 전력 레일들을 턴 온하는 동안에, 클라이언트는 요청을 프로세싱할 수 있기 전에 그러한 레일들이 온 되는데 필요한 로컬 자원에 대한 요청을 발행할 필요가 있다고 가정한다.In this scenario with requests issued for power rails, while the
본원에서는 명시적 조인 호출이 이용되어 로컬 요청을 발행/서비스하기 전에 레일들이 전력 업될 때까지 시스템 클라이언트는 기다릴 수도 있다. 명시적 조인 호출에 반대인 것은 "느슨한 조인" 또는 "파이어-앤드-포겟 (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
시스템은 트랜잭션이 그 자체가 (코히어런트 상태로) 조인하는 지점에서 모든 자원들 (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
상술된 바와 같이, 프록시 자원 (207A, 207B) 이 다수의 요청들을 포함하는 트랜잭션 뿐만 아니라 포킹가능할 수도 있다고 클라이언트 (208) 가 명시할 수도 있다. 클라이언트 (208) 는 또한 (부정적인 맥락에서) 프록시 자원 (207A, 207B) 또는 트랜잭션이 포킹가능하지 않을 수도 있다고 명시할 수도 있다.As described above, the
자원은 클라이언트 (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
클라이언트 (208) 가 제 1 및 제 2 자원들 (207A, 207B) 에 대한 배칭 요청을 포함하는 트랜잭션을 발행했고, 클라이언트가 그 트랜잭션이 포킹가능하도록 지정하지 않았을 수도 있을지라도, 제 2 자원 (207B) 은 그 자체에 따라 트랜잭션으로부터 포킹해제하고 제 1 자원 (207A) 에 의해 프로세싱되는 요청과 관계없이 제 2 자원 (207B) 의 요청을 프로세싱할 수도 있는데, 이는 다시 새롭게 지정된 제 2 로컬 자원 (207B) 에 대한 프록시이다. 이는 트랜잭션이 포킹가능한 것으로 클라이언트 (208) 에 의해 지정되지 않았을 수 있을지라도 제 2 로컬 자원 (207B) 이 트랜잭션으로부터 그 자체로 포킹되는 실시예이다.Although the
상기 트랜잭션들의 관점에서, 다수의 트랜잭션들이 끼워넣어질 (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
클록은 시스템이 소정의 전압으로 가동되고 동작되어 소정의 프로세싱 속도를 유지할 것을 요구할 수도 있다. 그래서, 예를 들어, 당신이 클록 속도를 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) 에 의해 시행되는 동안에 클라이언트가 다른 태스크들을 계속할 수 있도록 트랜잭션이 포킹될 수도 있다. 그러나, 전압이 새로운 클록 속도에 대해 요구되는 레벨에 있지 않은 시나리오에서, 클록 속도가 상승되기 전에 전압이 상승될 필요가 있을 것이다.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) 에 포킹된 트랜잭션을 자원이 발행하는 것이 가능할 수도 있으며, 콜 백은 로컬 클록에 대한 요청을 발행할 것이다.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
(그 클록 자원에 요청을 발행함으로써) 로컬 클록 주파수를 증가시키기 위한 로직을 포함하는 조인 콜백은 따라서 오직 필요한 의존성 (즉, 전압) 이 준비된 후에만 이러한 요청이 프로세싱되는 것을 보장하는데 이용될 수도 있다. 제 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
제 1 클라이언트 (208) 가 RPM (204) 으로 다수의 레일들을 턴 온할 필요가 있기 때문에, 제 1 클라이언트 (208) 는 제 1 클라이언트의 이러한 2 개의 레일들에 대한 요청들을 단일 트랜잭션으로 배칭할 수도 있다. 오직 이러한 단일 트랜잭션이 완료된 경우에만, 제 1 클라이언트 (208) 가 로컬 클록에 대한 변화가 일어날 것을 요청할 수 있다.Because the
포킹된 트랜잭션에서, 제 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
포킹된 트랜잭션은 다수의 지점들에서 조인될 수도 있다. 이러한 다수의 조인 지점들은 조인 토큰이라고 불리는 구성의 이용에 의해 관리된다. 조인 토큰은 트랜잭션이 트랜잭션에서의 자원들 중 하나의 자원에 대한 제 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
설계는 또한 클라이언트 (202) 가 포크 선호를 명시할 수도 있는 매커니즘을 제공한다. 이는 동기식으로 트랜잭션을 포크하거나 트랜잭션을 완료할지 여부를 결정하는 경우에 확장에 의해 이용된다. 트랜잭션들과 함께, 마찬가지로 자원들 (207) 과 함께, 트랜잭션을 포크하기 위한 호출은 요청이다. 확장이 트랜잭션을 포크하는 것이 불가능한 경우, 이는 동기식으로 트랜잭션을 완료할 것이고 그 다음에 등록된 조인트 콜백을 불러올 것이다.The design also provides a mechanism by which the
트랜잭션들에 대한 설계는 클라이언트 (202) 가 begin_transaction 이라는 명칭의 함수를 호출한 후에 로컬 자원들 (도 24 에서 도시되지 않으며, RPM (204) 에 의해 서비스되지 않는 것들을 포함함) 에 대한 요청들을 발행하는 것을 허용한다는 것에 또한 유의한다. 표면상으로는 트랜잭션의 일부분이긴 하나 이러한 요청들은 배칭에 포함되지 않는다. 연관된 자원들은, 그러나, 트랜잭션에서의 다른 자원들로 잠기거나 잠금해제된다.The design for the transactions is that the
포크/조인의 경우에, 이는 로컬 요청이 서비스 동안에 자체적으로 포킹되어 있는 경우에 중요해진다. 이를 도모하기 위해, 트랜잭션의 조인 토큰에 대한 언급은 자원의 자체의 조인 토큰과 구별된다. 이러한 접근법은 자원이 그 자체적으로 그리고 트랜잭션의 일부분으로서 포킹되는 것 양자 모두를 허용한다.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
하나 이상의 예시적인 양상들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독가능 매체 상에 저장되거나 또는 전송될 수도 있다. 컴퓨터 판독가능 매체들은 한 장소에서 다른 장소로 컴퓨터 프로그램의 전송을 가능하게 하는 임의의 매체를 포함하여 컴퓨터 저장 매체들 및 통신 매체들 양자를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수도 있다. 비제한적인 예로서, 이러한 컴퓨터 판독가능 매체들은 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.
상기 자원 요청들의 트랜잭션을 발행하는 단계는 상기 프레임워크 관리자에 의해 완료되는, 자원 요청들을 관리하는 방법.The method according to claim 1,
Wherein issuing a transaction of the resource requests is completed by the framework manager.
상기 프레임워크 관리자는 상기 클라이언트와 상기 자원들 사이의 통신들을 관리하는 것을 책임지는 소프트웨어 모듈을 포함하는, 자원 요청들을 관리하는 방법.The method of claim 3,
Wherein the framework manager comprises a software module responsible for managing communications between the client and the resources.
상기 자원들 및 클라이언트는 소프트웨어 및 하드웨어 중 적어도 하나를 포함하는, 자원 요청들을 관리하는 방법.5. The method of claim 4,
Wherein the resources and the client comprise at least one of software and hardware.
상기 트랜잭션의 포킹 동안에, 각각의 자원을 인코히어런트 (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 .
상기 포킹된 트랜잭션의 하나 이상의 요청들에 대한 외부의 요청을 수신하는 것에 응답하여, 하나 이상의 자원들이 상기 외부의 요청에 서비스할 수도 있도록 상기 외부의 요청과 연관된 자원들 중 하나 이상의 자원에 대한 상기 인코히어런트 상태를 변화시키는 단계를 더 포함하는, 자원 요청들을 관리하는 방법.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.
상기 자원 요청들의 트랜잭션을 발행하는 프로세서는 프레임워크 관리자 모듈에 의해 완료되는, 자원 요청들을 관리하기 위한 컴퓨터 시스템.12. The method of claim 11,
Wherein the processor issuing a transaction of the resource requests is completed by a Framework Manager module.
상기 프레임워크 관리자 모듈은 상기 클라이언트와 상기 자원들 사이의 통신들을 관리하는 것을 책임지는 소프트웨어를 포함하는, 자원 요청들을 관리하기 위한 컴퓨터 시스템.14. The method of claim 13,
The framework manager module comprising software responsible for managing communications between the client and the resources.
상기 자원들 및 클라이언트는 소프트웨어 및 하드웨어 중 적어도 하나를 포함하는, 자원 요청들을 관리하기 위한 컴퓨터 시스템.15. The method of claim 14,
Wherein the resources and the client include at least one of software and hardware.
상기 트랜잭션의 포킹 동안에, 상기 프로세서는 각각의 자원을 인코히어런트 상태로 두도록 동작가능하고, 상기 자원은 포킹된 상기 트랜잭션의 하나 이상의 요청들에 서비스하며, 상기 인코히어런트 상태는 요청과 연관된 클린업 작업을 지연시키고, 요청과 연관된 클린업 작업은 자원이 다른 요청에 서비스할 수도 있도록 자원을 코히어런트 상태에 있게 하기 위해 필요한 작업을 포함하는, 자원 요청들을 관리하기 위한 컴퓨터 시스템.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.
상기 포킹된 트랜잭션의 하나 이상의 요청들에 대한 외부의 요청을 수신하는 것에 응답하여, 상기 프로세서는 하나 이상의 자원들이 상기 외부의 요청에 서비스할 수도 있도록 상기 외부의 요청과 연관된 자원들 중 하나 이상의 자원에 대한 상기 인코히어런트 상태를 변화시키도록 동작가능한, 자원 요청들을 관리하기 위한 컴퓨터 시스템.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.
상기 클라이언트로 자원 요청들의 트랜잭션을 발행하는 원격 프레임워크 수단은 프로세서 상에서 실행되는 소프트웨어를 포함하는, 자원 요청들을 관리하기 위한 컴퓨터 시스템.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.
상기 원격 프레임워크 수단은 상기 클라이언트와 상기 자원들 사이의 통신들을 관리하는, 자원 요청들을 관리하기 위한 컴퓨터 시스템.24. The method of claim 23,
Wherein the remote framework means manages communications between the client and the resources.
상기 자원들 및 클라이언트는 소프트웨어 및 하드웨어 중 적어도 하나를 포함하는, 자원 요청들을 관리하기 위한 컴퓨터 시스템.25. The method of claim 24,
Wherein the resources and the client include at least one of software and hardware.
각각의 자원을 인코히어런트 상태로 두는, 상기 휴대용 컴퓨팅 디바이스 내의 수단을 더 포함하고, 상기 자원은 포킹된 상기 트랜잭션의 하나 이상의 요청들에 서비스하며, 상기 인코히어런트 상태는 상기 트랜잭션 동안에 요청과 연관된 클린업 작업을 지연시키고, 요청과 연관된 클린업 작업은 자원이 다른 요청에 서비스할 수도 있도록 자원을 코히어런트 상태에 있게 하기 위해 필요한 작업을 포함하는, 자원 요청들을 관리하기 위한 컴퓨터 시스템.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.
외부의 요청을 수신하는 것에 응답하여 하나 이상의 자원들이 상기 외부의 요청에 서비스할 수도 있도록 상기 포킹된 트랜잭션의 하나 이상의 요청들에 대한 상기 외부의 요청과 연관된 자원들 중 하나 이상의 자원에 대한 상기 인코히어런트 상태를 변화시키는, 상기 휴대용 컴퓨팅 디바이스 내의 수단을 더 포함하는, 자원 요청들을 관리하기 위한 컴퓨터 시스템.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. .
상기 자원 요청들의 트랜잭션을 발행하는 단계는 프레임워크 관리자에 의해 완료되는, 컴퓨터 판독가능 저장 매체.32. The method of claim 31,
Wherein issuing a transaction of the resource requests is completed by a framework manager.
상기 프레임워크 관리자는 상기 클라이언트와 상기 자원들 사이의 통신들을 관리하는 것을 책임지는 소프트웨어 모듈을 포함하는, 컴퓨터 판독가능 저장 매체.34. The method of claim 33,
Wherein the framework manager comprises a software module responsible for managing communications between the client and the resources.
상기 자원들 및 클라이언트는 소프트웨어 및 하드웨어 중 적어도 하나를 포함하는, 컴퓨터 판독가능 저장 매체.35. The method of claim 34,
Wherein the resources and the client comprise at least one of software and hardware.
상기 방법을 구현하는 상기 프로그램 코드는,
상기 트랜잭션의 포킹 동안에, 각각의 자원을 인코히어런트 상태로 두는 것을 더 포함하고, 상기 자원은 포킹된 상기 트랜잭션의 하나 이상의 요청들에 서비스하며, 상기 인코히어런트 상태는 요청과 연관된 클린업 작업을 지연시키고, 요청과 연관된 클린업 작업은 상기 자원이 다른 요청에 서비스할 수도 있도록 자원을 코히어런트 상태에 있게 하기 위해 필요한 작업을 포함하는, 컴퓨터 판독가능 저장 매체.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.
상기 방법을 구현하는 상기 프로그램 코드는,
상기 포킹된 트랜잭션의 하나 이상의 요청들에 대한 외부의 요청을 수신하는 것에 응답하여, 하나 이상의 자원들이 상기 외부의 요청에 서비스할 수도 있도록 상기 외부의 요청과 연관된 자원들 중 하나 이상의 자원에 대한 상기 인코히어런트 상태를 변화시키는 것을 더 포함하는, 컴퓨터 판독가능 저장 매체.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.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183871B (en) * | 2015-09-17 | 2018-09-25 | 北京京东尚科信息技术有限公司 | Data query method and device |
Citations (3)
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)
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 |
-
2012
- 2012-11-09 EP EP12795178.8A patent/EP2788873A1/en not_active Withdrawn
- 2012-11-09 WO PCT/US2012/064345 patent/WO2013085669A1/en unknown
- 2012-11-09 JP JP2014545909A patent/JP5805887B2/en not_active Expired - Fee Related
- 2012-11-09 KR KR1020147018682A patent/KR101635295B1/en not_active Expired - Fee Related
- 2012-11-09 CN CN201280059980.1A patent/CN103988180B/en not_active Expired - Fee Related
Patent Citations (3)
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 |