KR20060009000A - Threshold for unblocking processing nodes blocked due to the passage of data packets - Google Patents
Threshold for unblocking processing nodes blocked due to the passage of data packets Download PDFInfo
- Publication number
- KR20060009000A KR20060009000A KR1020057021123A KR20057021123A KR20060009000A KR 20060009000 A KR20060009000 A KR 20060009000A KR 1020057021123 A KR1020057021123 A KR 1020057021123A KR 20057021123 A KR20057021123 A KR 20057021123A KR 20060009000 A KR20060009000 A KR 20060009000A
- Authority
- KR
- South Korea
- Prior art keywords
- threshold
- context
- buffer
- consumer
- producer
- 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.)
- Withdrawn
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
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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/461—Saving or restoring of program or task context
-
- 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/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
동일한 자원(예를 들어, CPU) 상에서 실행하는 생산자와 대응하는 소비자가 문맥 스위치의 총 수를 감소시키는 방법으로 생산자와 소비자 사이에 문맥을 스위치할 수 있도록 하는 임계값 메커니즘이 제공된다. 이 임계값 메커니즘은, 소비자가 패킷을 제거하도록 허용되기 전에 생산자가 주어진 임계값까지 패킷을 저장하는 버퍼와 연관된다. 이 버퍼는 버퍼 내에 저장될 수 있는 패킷의 수에 연관된 상위 한계값을 가지고 있다. 플러쉬(flush)는 생성될 패킷이 더 이상 없을 때 나머지 패킷의 버퍼를 비운다. 일반적으로 문맥 스위치의 총 수가 저감되면 지연시간이 증가하지만 성능은 더 우수해진다.Threshold mechanisms are provided that allow producers and corresponding consumers running on the same resource (eg, CPU) to switch contexts between producers and consumers in a way that reduces the total number of context switches. This threshold mechanism is associated with a buffer where the producer stores the packet up to a given threshold before the consumer is allowed to drop the packet. This buffer has an upper limit associated with the number of packets that can be stored in the buffer. Flush flushes the buffer of the remaining packets when there are no more packets to be generated. In general, reducing the total number of context switches increases latency, but provides better performance.
Description
본 발명은 동일한 CPU에 상주하는 생산자와 소비자 사이에 데이터 패킷의 교환을 제어하기 위한 임계값에 관한 것이다. 보다 상세하게는, 본 발명은 처리 노드의 그래프에 기초한 소프트웨어 스트리밍에 관한 것이며 그리고 동일한 CPU에 상주하는 2개의 처리 노드 사이에 데이터 패킷의 통과로 인해 차단된 처리 노드를 차단해제하기 위한 임계값을 위한 시스템 및 방법에 관한 것이다. The present invention relates to a threshold for controlling the exchange of data packets between producers and consumers residing on the same CPU. More specifically, the present invention relates to software streaming based on graphs of processing nodes and for thresholds for unblocking processing nodes that are blocked due to the passage of data packets between two processing nodes residing on the same CPU. System and method.
소프트웨어 스트리밍은 처리 노드 사이에 개별적인 데이터 패킷을 사용하여 통신이 수행되는 처리 노드의 그래프에 기초하고 있다. 이 노드는 능동적으로 그 입력 에지로부터 그 출력 에지로 패킷을 통과시키며, 이 그래프를 통해 데이터가 흐르게 한다. 각 패킷은 이 그래프를 통한 특정 루프를 따라가며 소스 노드에서 시작하여 싱크 노드에서 종료한다.Software streaming is based on graphs of processing nodes where communication is performed using individual data packets between processing nodes. This node actively passes packets from its input edge to its output edge, allowing data to flow through this graph. Each packet follows a specific loop through this graph, starting at the source node and ending at the sink node.
동일한 자원(예를 들어, CPU)에서 실행되는 2개의 처리 노드는 정확하게 병렬로 실행될 수 없다. 대신에 이 자원은 2개의 노드의 실행 사이를 스위칭한다. 이것은 문맥 스위치(context switch)라고 언급된다. 문맥 스위치는 모든 레지스터가 저장되어야 하는 사실로 인해 비교적 고가이며 그리고 캐쉬를 가지고 있는 CPU에 대해서는 이 캐쉬를 마구때리기(thrash)(스위치로 인해 더 이상 국지성이 없음) 때문에 훨씬 더 고가이다. Two processing nodes running on the same resource (e.g. CPU) cannot run in parallel correctly. Instead, this resource switches between executions of two nodes. This is referred to as a context switch. Context switches are relatively expensive due to the fact that all registers must be stored, and even more expensive for CPUs that have caches (though they are no longer local due to switches).
2개의 통신 처리 노드(생산자, 소비자)가 동일한 자원 상에서 실행되고 생산자가 패킷을 생성할 때, 소비자가 이 패킷을 소비할 수 있기 전에 문맥 스위치가 요구된다. 각 패킷 이후에 문맥 스위치가 수행될 때, 2개의 문맥 스위치(후방 및 전방)가 각 패킷에 대해 요구된다. 이 문맥 스위치를 저감시키기 위해, 스트리밍 그래프를 구성할 때 시스템을 동조시키기 위한 여러 옵션이 존재한다:When two communication processing nodes (producer, consumer) run on the same resource and the producer generates a packet, a context switch is required before the consumer can consume this packet. When a context switch is performed after each packet, two context switches (rear and forward) are required for each packet. To reduce this context switch, there are several options for tuning the system when constructing a streaming graph:
- 패킷 사이즈를 증가시키고 이에 따라 패킷을 생성하는 빈도를 저감시키는 옵션. 이 옵션은 생산자와 소비자 둘 다가 파라미터화된 패킷 사이즈를 처리할 수 있어야 하는 단점을 가진다. 이것은 노드의 복잡도를 증가시킨다.An option to increase the packet size and thus reduce the frequency of generating packets. This option has the disadvantage that both producers and consumers must be able to handle parameterized packet sizes. This increases the complexity of the node.
- 소비자로 스위칭하기 전에 생산자가 다수의 패킷을 생성한다고 해보자.Let's say a producer creates a lot of packets before switching to a consumer.
·이 생산자에게 소비자보다 더 높은 우선순위를 제공하는 옵션. 이 생산자는 더 이상 진행할 수 없을 때까지 계속할 것이다. 그 이유는 통상적으로 채워서 소비자에게 송신할 이용가능한 비어있는 패킷이 더 이상 존재하지 않기 때문이다. 이때, 소비자는 시작할 수 있다. 그러나, 소비자가 하나의 패킷을 소비하고 이 패킷을 해제하여 이 패킷이 다시 재사용에 이용가능하게 되자마자, 생산자는 즉시 활성되는데, 그 이유는 다시 비어있는 패킷이 존재하며 생산자가 소비자보다 더 높은 우선순위를 가지고 있기 때문이다. 그래서 생산자에게 더 높은 우선순위를 제공하는 것은 대부분의 경우에 문제를 해결하지 못한다. 나아가, 우선순위는 제어의 응답성에 대한 것이고 이 문맥 스위치의 문제에 대해서 사용되는 것이 아니다. Option to give this producer higher priority than consumer. This producer will continue until it can no longer proceed. The reason is that there are no longer empty packets available to fill and send to the consumer. At this point, the consumer can start. However, as soon as the consumer consumes one packet and releases it and this packet becomes available for reuse again, the producer is immediately active because there is an empty packet again and the producer has a higher priority than the consumer. Because it has a ranking. So giving producers higher priority does not solve the problem in most cases. Further, the priority is on the responsiveness of the control and is not used for this context switch problem.
·생산자와 소비자에게 동일한 우선순위를 제공하는 옵션. 이들은 일반적으로 라운드 로빈 방식(round robin fashion)으로 처리될 수 있다. 이 문맥 스위치는 운영 시스템에 의해 사용되는 타임 슬라이스에 따라 제한될 수 있다. 그러나, 작업에 동일한 우선순위를 제공하는 것은 최악의 동작(최악의 응답)에 대해 부정적인 영향을 제공한다. 그래서, 이 옵션은 문맥 스위치의 오버헤드와 최악의 응답의 비용 사이에 트레이드오프(trade-off) 관계에 있다. Option to give equal priority to producers and consumers. These can generally be handled in a round robin fashion. This context switch may be limited depending on the time slice used by the operating system. However, giving the same priority to a task provides a negative impact on the worst case behavior (worst response). Thus, this option is in a trade-off relationship between the overhead of the context switch and the cost of the worst response.
·패킷이 생산자에 의해 생성될 때 바로 소비자가 소비를 시작하는 것을 금지하는 임계값 메커니즘을 제공하는 옵션. 그리고, 추가로 소비자가 패킷을 해제하여 이 패킷을 다시 재사용하게 할 때 생산자는 그 패킷을 즉시 소비하지 못하도록, 즉 패킷의 양이 그 임계값에 도달할 때까지 기다리게 하는 임계값 메커니즘을 제공하는 옵션.Option to provide a threshold mechanism that prohibits consumers from starting to consume as soon as a packet is produced by the producer. And, additionally, when a consumer releases a packet and reuses it again, the producer provides an threshold mechanism that prevents the producer from consuming the packet immediately, that is, waiting for the amount of packets to reach its threshold. .
전술된 모든 옵션의 일반적인 단점은 종단 대 종단 지연시간(end-to-end latency)을 증가시키는 것이며 이는 임계값 메커니즘에 대해서도 그러하다.A common disadvantage of all the above mentioned options is the increased end-to-end latency, which is also true for the threshold mechanism.
기본적인 임계값 메커니즘은 차단된 소비자가 (이용가능한 패킷의) 특정 임계값에 도달할 때 차단해제되는 것이다. 5의 임계값(5개의 패킷이 이용가능할 때 다시 패킷이 존재한다는 것만을 소비자에게 알린다)은 약 동일한 계수(5)로 문맥 스위치의 수를 저감시킨다.The basic threshold mechanism is to unblock when a blocked consumer reaches a certain threshold (of available packets). A threshold of 5 (which informs the consumer only that a packet is present again when five packets are available) reduces the number of context switches by about the same factor (5).
이 메커니즘은 소비자가 차단될 때 사용되며 즉 소비자가 이전에 데이터 패킷을 취하려고 시도했지만 실패했을 때 사용된다. 소비자가 데이터 패킷 입력에서 차단되지 않고 5의 임계값에 도달하는 경우에 이 메커니즘은 사용되지 않는다. 이 임계값 메커니즘은 처리 노드에 무관하며 즉 처리 노드는 임계값이 사용되었는지 그리고 임계값이 어떤 값을 가지고 있는지를 알지 못한다. 시스템 적분기는 적분 동안 이 임계값을 구성할 수 있다. This mechanism is used when the consumer is blocked, that is, when the consumer has previously tried to take a data packet but failed. This mechanism is not used if the consumer reaches a threshold of 5 without blocking at the data packet input. This threshold mechanism is independent of the processing node, i.e., the processing node does not know whether the threshold is used and what value the threshold has. The system integrator can configure this threshold during integration.
그러나, 이 임계값 메커니즘은 여러 단점, 즉However, this threshold mechanism has several disadvantages, namely
- 너무 높은 임계값은 데드록(deadlock) 상황을 야기할 수 있는 단점과,Too high a threshold can lead to deadlock situations,
- 데이터 패킷이 생산되지 않는 경우, 소비자가 여전히 몇몇 패킷이 존재한다는 것을 알지 못하기 때문에, 나머지 데이터 패킷(임계값 한계값 아래에 있는)은 소비되지 못할 수 있다는 단점The disadvantage that if the data packet is not produced, the remaining data packets (below the threshold limit) may not be consumed because the consumer still does not know that some packets exist.
을 가지고 있다.Have
요약하면, 문맥 스위치를 제한하기 위한 임계값에 관한 종래 기술의 현재 상태는,In summary, the current state of the art regarding thresholds for limiting context switches is
- 전술된 바와 같이, 일반적인 임계값과,As described above, with a general threshold,
- 데이터 패킷의 통과와,-Passing of data packets,
- 데이터 패킷 동기화와,Data packet synchronization,
- 데이터 패킷 임계값이 사용되는 경우 콜백 기능을 호출하는 것-Calling the callback function when the data packet threshold is used
이다.to be.
본 발명의 임계값 메커니즘은 주어진 프로세서에서 일어나는 데이터 패킷의 통과의 결과인 문맥 스위치의 수를 저감시키기 위한 효과적인 수단이다. 문맥 스위치의 수의 저감은 프로세서의 보다 효과적인 사용을 유발한다. 본 발명의 임계값 메커니즘은 처리 노드에서는 보이지 않는데, 즉 노드 내의 추가적인 복잡도가 요구되지 않는다.The threshold mechanism of the present invention is an effective means for reducing the number of context switches that are the result of the passage of data packets occurring at a given processor. Reducing the number of context switches leads to more efficient use of the processor. The threshold mechanism of the present invention is not visible at the processing node, i.e. no additional complexity in the node is required.
본 발명은 문맥 스위치의 오버헤드를 저감시키기 위해 차단된 처리 노드를 차단해제하는데 대한 임계값을 제공함으로써 전술된 단점을 처리한다. 추가적으로, 본 발명은 버퍼 내에 교착된 데드록이나 데이터를 방지하는 메커니즘에 의해 확장될 수 있다. 예시적인 확장은, 임계값이 소비자로의 통지를 지연시키거나 또는 시스템이 '유휴(idle)' 상태로 되는 경우에 모든 임계값을 제거하는 낮은 우선순위를 갖는 시스템 내의 추가적인 작업을 지연시킬 수 있는 최대 시간을 결정하는 임계값에 대한 타임아웃이거나 이다. The present invention addresses the aforementioned disadvantages by providing a threshold for unblocking blocked processing nodes to reduce the overhead of context switches. In addition, the present invention can be extended by a mechanism that prevents deadlocks or data stuck in a buffer. Exemplary extensions may delay the notification to the consumer or delay further work in the low priority system to remove all thresholds when the system is in an 'idle' state. Or is the timeout for the threshold that determines the maximum time.
도 1은 버퍼 콤포넌트(120)를 통해 높은 우선순위의 소비자 콤포넌트(110)에 연결된 낮은 우선순위의 생산자 콤포넌트(100)를 도시하는 도면.1 shows a low
도 2a는 임계값이 사용되지 않는 경우 도 1의 높은 우선순위의 소비자 콤포넌트에 대한 낮은 우선순위의 생산자 콤포넌트 생산 버퍼를 위한 버퍼 충진 및 문맥 스위치(200)를 도시하는 도면.2A shows a buffer fill and
도 2b는 5의 임계값이 사용되는 경우 도 1의 높은 우선순위의 소비자 콤포넌트에 대한 낮은 우선순위의 생산자 콤포넌트 생산 버퍼를 위한 버퍼 충진 및 문맥 스위치(210)를 도시하는 도면.2B shows a buffer fill and
도 3은 3개의 패킷을 보유할 수 있는 버퍼와 연관된 2의 임계값을 갖는 본 발명의 일 실시예에 대한 상태 전이도를 도시하는 도면.3 illustrates a state transition diagram for one embodiment of the present invention with a threshold of two associated with a buffer that can hold three packets.
본 발명의 시스템 및 방법은 선매 우선순위 기반 스케쥴러(pre-emptive priority based scheduler)를 갖는 시스템에서 더 높은 우선순위의 스트리밍 콤포넌트에 패킷을 통과한 결과인 문맥 스위치의 수를 저감시킨다. 일반적으로 문맥 스위치의 수의 저감은 더 나은 성능을 초래하지만 지연시간을 증가시킨다.The system and method of the present invention reduces the number of context switches that result from passing packets to higher priority streaming components in a system with a pre-emptive priority based scheduler. In general, reducing the number of context switches results in better performance but increases latency.
바람직한 실시예에서, 버퍼 임계값은 충분한 패킷이 버퍼에 이용가능할 때까지 즉 패킷의 임계값 양이 버퍼에 존재할 때까지 패킷을 기다리며 차단된 소비자 콤포넌트의 신호송신을 지연시키는 메커니즘이다. 버퍼의 임계값이 x로 설정될 때, 이 버퍼와 연관된 대기하는 즉 차단된 콤포넌트는 x개의 패킷이 버퍼에 이용가능할 때에만 신호송신된다. In a preferred embodiment, the buffer threshold is a mechanism that delays the signaling of blocked consumer components until the packet is available to the buffer, i.e., until the threshold amount of packets is present in the buffer. When the threshold of the buffer is set to x, the waiting, ie blocked component associated with this buffer is signaled only when x packets are available to the buffer.
도 1은 버퍼 콤포넌트(120)를 통해 높은 우선순위의 소비자 콤포넌트(110)에 연결된 낮은 우선순위의 생산자 콤포넌트(100)를 도시하며, 이들 콤포넌트는 모두 동일한 프로세서 상에 있다. 도 2a는 데이터 패킷이 통과될 때, 즉 생산된 직후 바로 소비될 때 도 1의 버퍼 콤포넌트(120)의 충진(filling)을 도시한다. 즉, 생산자 콤포넌트(100)가 버퍼(120) 내에 패킷을 놓는 경우, 콤포넌트(100)는 {소비자 콤포넌트(110)가 실행할 준비가 된 것으로 가정하면} 소비자 콤포넌트(110)에 의해 즉시 선매될 수 있다. 소비자 콤포넌트(110)가 준비되어 다시 새로운 입력을 기다릴 때, 생산자 콤포넌트(100)는 다시 시작된다. 도 2a에 도시된 바와 같이, 이러한 통신의 결과 문맥 스위치(200)의 수는 패킷을 통과시키는 빈도에 따라 좌우된다. 도 2b는 버퍼가 5의 연관된 임계값을 갖는 것을 제외하면 동일한 상황을 도시한다. 문맥 스위치(210)의 수는 거의 5와 동일한 계수만큼 저감된다. 이 저감은 소비자 콤포넌트(110)가 먼저 버스트로 모두 5개의 이용가능한 패킷을 소비한 후 생산자 콤포넌트(100)가 다시 시작하는 경우 새로운 입력을 기다리기 때문에 일어난다. 생산자 콤포넌트(100)는 소비자 콤포넌트(110)에 의해 선매되기 전에 5개의 패킷을 생산할 수 있다. 도 2a 및 도 2b 모두에 있는 불규칙성은, 전체 패킷이 버퍼에 이용가능한 것으로 신호송신될 때, 예를 들어, 소비자 콤포넌트(110)의 결과 비어있는 패킷이 없는 것으로 신호송신될 때와 같은 몇몇 이유 때문에 소비자 콤포넌트(110)가 실행될 준비가 되어있지 않은 경우 유발된다.1 shows a low
버퍼 내 패킷은, 이 버퍼와 연관된 임계값에 도달하지 않은 한, 소비자 콤포넌트에 이용가능하지 않다. 예를 들어, 생산자 입력에 대한 파일의 종료로 인해, 생산자 콤포넌트(100)에 의해 버퍼 콤포넌트(120) 내에 놓인 이 패킷이 소비자 콤포넌트(110)에 이용가능하게 되지 않는 것도 가능하다. 이 경우에, 버퍼(120) 내에 남아있는 패킷이 플러쉬(flush)되는(즉 소비자에 의해 처리되는) 것을 보장할 수 있도록 추가적인 주의를 하여야 한다.Packets in the buffer are not available to the consumer component unless the threshold associated with this buffer has been reached. For example, due to the end of the file for producer input, it is also possible that this packet placed within the
이 주의는 너무 높은 버퍼 임계값을 사용하는 것이 데드록을 유발시키지 않도록 예를 들어 생산된 패킷의 수가 버퍼 임계값에 도달하기에 불충분하도록 요구된다. 기본적인 예는, 4개의 패킷이 시스템을 통해 순환하는 경우, 임계값을 5로 설정하는 것에 의해, 이 임계값에 결코 도달하지 않기 때문에, 시스템을 로크업(lock-up)하게 할 수 있다는 것이다. 그래서 기본적인 규칙은 임계값이 생산되는 패킷의 양과 동일하거나 이보다 더 낮게 하는 것이다. 보다 복잡한 시스템에서, 패킷의 이용가능성이 다른 패킷의 이용가능성에 좌우되는 경우, 이 간단한 규칙만으로는 충분하지 않을 수 있으며, 복수의 임계값을 고려해야 하는 보다 복잡한 규칙이 요구된다.This attention is required so that, for example, using a buffer threshold that is too high does not cause deadlock, for example, the number of packets produced is insufficient to reach the buffer threshold. The basic example is that if four packets are circulating through the system, setting the threshold to 5 will allow the system to lock up since the threshold is never reached. So the basic rule is to make the threshold equal or lower than the amount of packets produced. In more complex systems, where the availability of a packet depends on the availability of other packets, this simple rule may not be sufficient, and more complex rules are required that take into account multiple thresholds.
더우기, 버퍼 임계값의 선택은 이 임계값의 사용으로 일어나는 연쇄 지연시간의 증가를 최소화하여야 한다. 거의 모든 경우에, 낮은 지연시간을 가지는 것이 바람직하며(예를 들어, 오디오는 최종 사용자가 이 오디오를 알기 시작하기 전 2밀리초만큼만 지연될 수 있다), 그래서 심지어 10의 임계값을 허용하는 시스템 내에 10개의 패킷이 순환하는 경우에도, 낮은 지연시간의 요구조건은 문맥 스위치의 오버헤드에 대해 준 최적인 더 낮은 임계값 설정을 지시할 수 있다.Moreover, the selection of the buffer threshold should minimize the increase in the chain delay caused by the use of this threshold. In almost all cases, it is desirable to have a low latency (for example, audio can only be delayed by 2 milliseconds before the end user starts to know this audio), so even a system that allows a threshold of 10 Even if 10 packets are cycled within, the low latency requirement may indicate a suboptimal lower threshold setting for the context switch overhead.
초기에 버퍼 임계값은 활성이지 않다. 콤포넌트가 차단되거나 파일이 종료되는 경우, 특별한 명령 패킷이 연쇄 작용을 통해 버퍼 콤포넌트에 의해 유지된 패킷을 플러쉬(flush)하도록 송신된다. 3개의 패킷을 보유할 수 있고 2로 설정된 임계값을 갖는 버퍼를 위한 가능한 상태는 도 3에 도시된다. 다음의 상태 전이가 가능하다:Initially, the buffer threshold is not active. When the component is blocked or the file is terminated, a special command packet is sent to flush the packets held by the buffer component through a cascade action. A possible state for a buffer that can hold three packets and has a threshold set to two is shown in FIG. 3. The following state transitions are possible:
- 단계 310을 취함 : 패킷이 송신자에 의해 버퍼에 추가되는 단계(310)Take
- 단계 320을 취함 : 패킷이 수신기에 의해 버퍼로부터 성공적으로 제거되는 단계(320)Take step 320:
- 단계 330에서 시도하지만 실패하는 단계 : 소비자가 버퍼로부터 패킷을 얻고자 시도하지만 버퍼가 비어있어 실패하는 단계(330). 이것은 임계값 메커니즘을 활성시킴.Attempt but fail at step 330: Consumer attempts to get a packet from the buffer but fails because the buffer is empty (330). This activates the threshold mechanism.
- 단계 340에서 플러쉬하는 단계 : 플러쉬 명령이 임계값을 비활성시키는 단계(340), 그래서 소비자는 임계값에 도달하지 않았음에도 패킷을 얻을 수 있는 단계.Flushing in step 340: the flush command deactivating the
- 단계 350에서 소비자에게 통지하는 단계 : 임계값에 도달하여 소비자가 버퍼로부터 패킷을 얻기 시작할 수 있다는 것을 알게 되는 단계(350)Notifying the consumer at step 350: reaching a threshold and discovering that the consumer may begin obtaining packets from the
얻고자 하지만 실패하는 전이 이후에, 소비자는 버퍼 내에 2개의 패킷이 있다는 것을 알게 될 때까지 스케쥴링되지 않으므로 문맥 스위치는 방지된다. 이 상태 전이도는 더 큰 버퍼 및 더 높은 임계값을 포함하도록 단순한 방법으로 확장될 수 있다.After the transition to get but fails, the context switch is prevented because the consumer is not scheduled until it knows there are two packets in the buffer. This state transition diagram can be extended in a simple way to include larger buffers and higher thresholds.
본 명세서에 설명된 본 발명의 실시예는 소프트웨어로 구현되는 것이 바람직하지만, 전술된 실시예 중 전부나 일부는 별도의 하드웨어 요소 및/또는 로직 회로를 사용하여 구현될 수도 있다. Although embodiments of the invention described herein are preferably implemented in software, all or some of the embodiments described above may be implemented using separate hardware elements and / or logic circuits.
이런 점에서, 본 발명은 특정 예시적인 실시예에 관해 설명되었다. 그러나 본 발명은 전술된 실시예와 그 변형예로 제한되는 것은 아니며 이 기술 분야에 통상의 지식을 가진 자라면 첨부된 청구항의 사상과 범위를 벗어남이 없이 여러 변경과 변형을 수행할 수 있을 것이라는 것을 이해할 수 있을 것이다. In this regard, the present invention has been described with respect to specific exemplary embodiments. However, the present invention is not limited to the above-described embodiments and modifications thereof, and one of ordinary skill in the art will be able to make various changes and modifications without departing from the spirit and scope of the appended claims. I can understand.
전술된 바와 같이, 본 발명은 동일한 CPU에 상주하는 생산자와 소비자 사이에 데이터 패킷의 교환을 제어하는 등에 이용가능하다. As described above, the present invention can be used for controlling the exchange of data packets between producers and consumers residing on the same CPU.
Claims (14)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US46906803P | 2003-05-08 | 2003-05-08 | |
US60/469,068 | 2003-05-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20060009000A true KR20060009000A (en) | 2006-01-27 |
Family
ID=33435218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020057021123A Withdrawn KR20060009000A (en) | 2003-05-08 | 2004-04-29 | Threshold for unblocking processing nodes blocked due to the passage of data packets |
Country Status (6)
Country | Link |
---|---|
US (1) | US7490178B2 (en) |
EP (1) | EP1625498A1 (en) |
JP (1) | JP2006525578A (en) |
KR (1) | KR20060009000A (en) |
CN (1) | CN1784658A (en) |
WO (1) | WO2004099983A1 (en) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7546582B2 (en) * | 2005-03-30 | 2009-06-09 | International Business Machines Corporation | Managing dynamic configuration data for producer components in a computer infrastructure |
US8588253B2 (en) * | 2008-06-26 | 2013-11-19 | Qualcomm Incorporated | Methods and apparatuses to reduce context switching during data transmission and reception in a multi-processor device |
US9436969B2 (en) * | 2009-10-05 | 2016-09-06 | Nvidia Corporation | Time slice processing of tessellation and geometry shaders |
CN102298580A (en) | 2010-06-22 | 2011-12-28 | Sap股份公司 | Multi-core query processing system using asynchronous buffer |
EP2405353B1 (en) * | 2010-07-07 | 2017-11-22 | Sap Se | Multi-core query processing using asynchronous buffers |
US10235220B2 (en) * | 2012-01-23 | 2019-03-19 | Advanced Micro Devices, Inc. | Multithreaded computing |
US9229847B1 (en) * | 2012-04-18 | 2016-01-05 | Open Invention Network, Llc | Memory sharing for buffered macro-pipelined data plane processing in multicore embedded systems |
EP3345771B1 (en) * | 2013-02-13 | 2021-03-24 | Composecure, LLC | Durable card |
CN103793207B (en) * | 2014-01-21 | 2016-06-29 | 上海爱数信息技术股份有限公司 | A kind of intelligent dispatching method of single-threaded multipriority system |
US9767040B2 (en) * | 2015-08-31 | 2017-09-19 | Salesforce.Com, Inc. | System and method for generating and storing real-time analytics metric data using an in memory buffer service consumer framework |
US11792307B2 (en) | 2018-03-28 | 2023-10-17 | Apple Inc. | Methods and apparatus for single entity buffer pool management |
US11558348B2 (en) | 2019-09-26 | 2023-01-17 | Apple Inc. | Methods and apparatus for emerging use case support in user space networking |
US11829303B2 (en) | 2019-09-26 | 2023-11-28 | Apple Inc. | Methods and apparatus for device driver operation in non-kernel space |
US11606302B2 (en) | 2020-06-12 | 2023-03-14 | Apple Inc. | Methods and apparatus for flow-based batching and processing |
US11775359B2 (en) | 2020-09-11 | 2023-10-03 | Apple Inc. | Methods and apparatuses for cross-layer processing |
US11954540B2 (en) | 2020-09-14 | 2024-04-09 | Apple Inc. | Methods and apparatus for thread-level execution in non-kernel space |
US11799986B2 (en) * | 2020-09-22 | 2023-10-24 | Apple Inc. | Methods and apparatus for thread level execution in non-kernel space |
US11876719B2 (en) | 2021-07-26 | 2024-01-16 | Apple Inc. | Systems and methods for managing transmission control protocol (TCP) acknowledgements |
US11882051B2 (en) | 2021-07-26 | 2024-01-23 | Apple Inc. | Systems and methods for managing transmission control protocol (TCP) acknowledgements |
-
2004
- 2004-04-29 US US10/555,831 patent/US7490178B2/en not_active Expired - Fee Related
- 2004-04-29 EP EP04730332A patent/EP1625498A1/en not_active Withdrawn
- 2004-04-29 JP JP2006506592A patent/JP2006525578A/en not_active Withdrawn
- 2004-04-29 CN CNA2004800122450A patent/CN1784658A/en active Pending
- 2004-04-29 WO PCT/IB2004/001447 patent/WO2004099983A1/en not_active Application Discontinuation
- 2004-04-29 KR KR1020057021123A patent/KR20060009000A/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
EP1625498A1 (en) | 2006-02-15 |
JP2006525578A (en) | 2006-11-09 |
CN1784658A (en) | 2006-06-07 |
US7490178B2 (en) | 2009-02-10 |
WO2004099983A1 (en) | 2004-11-18 |
US20070008983A1 (en) | 2007-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20060009000A (en) | Threshold for unblocking processing nodes blocked due to the passage of data packets | |
KR100922965B1 (en) | Network on chip device and operating frequency control method for same | |
JP2006155646A (en) | Register transfer unit for electronic processor | |
JP2015513336A (en) | Dynamic power management in real-time systems | |
US20220222116A1 (en) | Memory management in data processing systems | |
Diemer et al. | Back suction: Service guarantees for latency-sensitive on-chip networks | |
CN113535361A (en) | Task scheduling method, device, device and storage medium | |
WO2021197128A1 (en) | Traffic rate-limiting method and apparatus | |
WO2016177081A1 (en) | Notification message processing method and device | |
KR100617228B1 (en) | Implementation method of event delivery system of real-time operating system kernel | |
US20210240528A1 (en) | Apparatus and method for deferral scheduling of tasks for operating system on multi-core processor | |
US8141080B2 (en) | Asynchronous data structure pull application programming interface (API) for stream systems | |
JP4609070B2 (en) | Multi-call processing thread processing method | |
US11588747B2 (en) | Systems and methods for providing lockless bimodal queues for selective packet capture | |
CN107589993A (en) | A kind of dynamic priority scheduling algorithm based on linux real time operating systems | |
US20180004574A1 (en) | Averting Lock Contention Associated with Core-Based Hardware Threading in a Split Core Environment | |
CN108632172A (en) | Network-on-chip and the dead release method of extension that liquidates | |
JP2015041199A (en) | Information processing device | |
CN107621974B (en) | Interrupt request distribution device and method for operating same | |
CN112948314B (en) | Interrupt controller and inter-core communication system | |
WO2017020639A1 (en) | Network processor, packet processing data acquisition method, and storage medium | |
WO2024022572A1 (en) | A hardware device for automatic detection and deployment of qos policies | |
Schmitt et al. | Adaptive receiver notification for non-dedicated workstation clusters | |
Gambord | Network Abnormalities in Routerless Networks on Chip | |
CN118277132A (en) | Method and system for executing double-thread pool of remote call of graphics processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0105 | International application |
Patent event date: 20051107 Patent event code: PA01051R01D Comment text: International Patent Application |
|
PG1501 | Laying open of application | ||
PC1203 | Withdrawal of no request for examination | ||
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |