[go: up one dir, main page]

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 PDF

Info

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
Application number
KR1020057021123A
Other languages
Korean (ko)
Inventor
에지디우스 게라르두스 페트루스 반 도렌
헨드리쿠스 크리스티아누스 빌헬무스 반 헤쉬
Original Assignee
코닌클리케 필립스 일렉트로닉스 엔.브이.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 코닌클리케 필립스 일렉트로닉스 엔.브이. filed Critical 코닌클리케 필립스 일렉트로닉스 엔.브이.
Publication of KR20060009000A publication Critical patent/KR20060009000A/en
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; 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

데이터 패킷의 통과로 인해 차단된 처리 노드를 차단해제하는데 대한 임계값{THRESHOLD ON UNBLOCKING A PROCESSING NODE THAT IS BLOCKED DUE TO DATA PACKET PASSING}THRESHOLD ON UNBLOCKING A PROCESSING NODE THAT IS BLOCKED DUE TO DATA PACKET PASSING}

본 발명은 동일한 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 priority producer component 100 connected to a high priority consumer component 110 via a buffer component 120.

도 2a는 임계값이 사용되지 않는 경우 도 1의 높은 우선순위의 소비자 콤포넌트에 대한 낮은 우선순위의 생산자 콤포넌트 생산 버퍼를 위한 버퍼 충진 및 문맥 스위치(200)를 도시하는 도면.2A shows a buffer fill and context switch 200 for a low priority producer component production buffer for the high priority consumer component of FIG. 1 when no threshold is used.

도 2b는 5의 임계값이 사용되는 경우 도 1의 높은 우선순위의 소비자 콤포넌트에 대한 낮은 우선순위의 생산자 콤포넌트 생산 버퍼를 위한 버퍼 충진 및 문맥 스위치(210)를 도시하는 도면.2B shows a buffer fill and context switch 210 for a low priority producer component production buffer for the high priority consumer component of FIG. 1 when a threshold of 5 is used.

도 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 priority producer component 100 coupled to a high priority consumer component 110 via a buffer component 120, all of which are on the same processor. FIG. 2A shows the filling of the buffer component 120 of FIG. 1 when a data packet is passed, that is, consumed immediately after being produced. That is, when producer component 100 places a packet in buffer 120, component 100 may be immediately preempted by consumer component 110 (assuming consumer component 110 is ready to execute). . When the consumer component 110 is ready and waits for new input again, the producer component 100 is restarted. As shown in FIG. 2A, the number of context switches 200 as a result of this communication depends on the frequency of passing packets. 2B shows the same situation except that the buffer has an associated threshold of five. The number of context switches 210 is reduced by a factor equal to approximately five. This reduction occurs because the consumer component 110 first consumes all five available packets in bursts and then waits for new input when the producer component 100 restarts. The producer component 100 may produce five packets before being preempted by the consumer component 110. The irregularities in both Figures 2A and 2B are due to several reasons, such as when the entire packet is signaled as available in the buffer, for example when the consumer component 110 is signaled that there are no empty packets. Triggered when the consumer component 110 is not ready to run.

버퍼 내 패킷은, 이 버퍼와 연관된 임계값에 도달하지 않은 한, 소비자 콤포넌트에 이용가능하지 않다. 예를 들어, 생산자 입력에 대한 파일의 종료로 인해, 생산자 콤포넌트(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 buffer component 120 by the producer component 100 is not available to the consumer component 110. In this case, extra care must be taken to ensure that packets remaining in the buffer 120 are flushed (ie processed by the consumer).

이 주의는 너무 높은 버퍼 임계값을 사용하는 것이 데드록을 유발시키지 않도록 예를 들어 생산된 패킷의 수가 버퍼 임계값에 도달하기에 불충분하도록 요구된다. 기본적인 예는, 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 step 310, where the packet is added to the buffer by the sender (310).

- 단계 320을 취함 : 패킷이 수신기에 의해 버퍼로부터 성공적으로 제거되는 단계(320)Take step 320: step 320, where the packet is successfully removed from the buffer by the receiver

- 단계 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 threshold 340, so that the consumer can get the packet even though the threshold has not been reached.

- 단계 350에서 소비자에게 통지하는 단계 : 임계값에 도달하여 소비자가 버퍼로부터 패킷을 얻기 시작할 수 있다는 것을 알게 되는 단계(350)Notifying the consumer at step 350: reaching a threshold and discovering that the consumer may begin obtaining packets from the buffer 350

얻고자 하지만 실패하는 전이 이후에, 소비자는 버퍼 내에 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)

패킷의 생산자의 실행 문맥(execution context)과 이 패킷의 소비자의 실행 문맥 사이에 문맥의 스위치를 제어하기 위한 장치에 있어서,An apparatus for controlling a switch of context between an execution context of a producer of a packet and an execution context of a consumer of this packet, 상기 생산자에 의한 패킷의 내부 저장과 상기 소비자에 의한 상기 패킷의 제거를 위한 버퍼(buffer)와,A buffer for internal storage of the packet by the producer and removal of the packet by the consumer, 상기 버퍼에의 패킷의 저장과 상기 버퍼로부터의 패킷의 제거에 각각 응답하여 증가하고 감소하기 위한 카운트(count)와,A count for incrementing and decrementing in response to storage of the packet in the buffer and removal of the packet from the buffer, respectively; 상기 카운트에 부과된 임계값(threshold)으로서, 상기 임계값은 미리 설정된 값과 온(on) 및 오프(off) 상태를 가지고 있는, 임계값과,A threshold imposed on the count, the threshold having a preset value and an on and off state; 상기 카운트에 대한 한계값(limit)으로서, 상기 한계값은 미리 설정된 값을 가지고 있는, 한계값과,A limit value for the count, the limit value having a preset value, 제 1 수단으로서, As the first means, (a) 만일 상기 임계값이 온(on)이고 상기 카운트가 상기 임계값의 미리설정된 값보다 더 작은 경우 문맥의 스위치로부터 상기 소비자의 실행 문맥으로의 상기 생산자를 지연시키며, 여기서 상기 제 1 수단은 상기 문맥이 스위치되기 전에 상기 임계값을 오프로 설정하며,(a) delaying the producer from the switch in the context to the consumer's execution context if the threshold is on and the count is less than the predetermined value of the threshold, wherein the first means Set the threshold to off before the context is switched, (b) 상기 임계값이 온(on)이고 상기 소비자로 하여금 상기 버퍼 내 나머지 패킷을 처리하도록 하는데 버퍼 플러쉬(buffer flush)가 필요한 경우 문맥의 스위치로부터 상기 소비자의 실행 문맥으로의 상기 생산자의 지연을 중지하며, 여 기서 상기 제 1 수단은 상기 문맥이 스위치되기 전에 상기 임계값을 오프로 설정하는, (b) delay the producer's delay from the switch in the context to the consumer's execution context when the threshold is on and a buffer flush is required to cause the consumer to process the remaining packets in the buffer. Stop, where the first means sets the threshold off before the context is switched, 제 1 수단과,With the first means, 만일 상기 카운트가 제로(0)인 경우, 상기 임계값을 온으로 설정하며 문맥 스위치를 상기 생산자로 향하게 하는 제 2 수단Second means for setting the threshold to on and directing a context switch to the producer if the count is zero 을 포함하는, 문맥 스위치를 제어하기 위한 장치.And a device for controlling a context switch. 제 1 항에 있어서, 상기 한계값의 상기 미리 설정된 값은 상기 임계값의 미리설정된 값보다 더 큰, 문맥 스위치를 제어하기 위한 장치.The apparatus of claim 1, wherein the preset value of the threshold value is greater than a preset value of the threshold value. 제 1 항에 있어서, 상기 제 1 및 제 2 수단은 소프트웨어로 구현되는, 문맥 스위치를 제어하기 위한 장치.The apparatus of claim 1, wherein the first and second means are implemented in software. 제 1 항에 있어서, 상기 제 1 및 제 2 수단은 제어 로직으로 구현되는, 문맥 스위치를 제어하기 위한 장치.The apparatus of claim 1, wherein the first and second means are implemented with control logic. 제 1 항에 있어서, 상기 제 1 및 제 2 수단은 우선순위에 기초한 스케쥴러(priority based scheduler)이며, 상기 생산자는 상기 소비자보다 더 높은 우선순위를 가지고 있는, 문맥 스위치를 제어하기 위한 장치.The apparatus of claim 1, wherein the first and second means are a priority based scheduler and the producer has a higher priority than the consumer. 제 5 항에 있어서, 상기 한계값의 미리설정된 값은 상기 임계값의 미리설정된 값보다 더 큰, 문맥 스위치를 제어하기 위한 장치.6. The apparatus of claim 5, wherein the preset value of the threshold value is greater than the preset value of the threshold value. 제 5 항에 있어서, 상기 우선순위에 기초한 스케쥴러는 소프트웨어로 구현되는, 문맥 스위치를 제어하기 위한 장치.6. The apparatus of claim 5, wherein the priority based scheduler is implemented in software. 제 5 항에 있어서, 상기 우선순위에 기초한 스케쥴러는 제어 로직으로 구현되는, 문맥 스위치를 제어하기 위한 장치.6. The apparatus of claim 5, wherein the priority based scheduler is implemented with control logic. 생산자에 의한 패킷의 생성을 제어하며 소비자에 의한 상기 패킷의 소비를 제어하기 위한 장치에 있어서, An apparatus for controlling the generation of a packet by a producer and for controlling the consumption of the packet by a consumer, the apparatus comprising: 내부에 패킷을 저장하기 위한 버퍼 저장소로서, 상기 버퍼는 상기 버퍼 내 저장된 패킷의 수에 부과된 임계값과 한계값을 가지고 있으며, 상기 임계값과 상기 한계값은 각 미리설정된 값을 가지고 있으며, 상기 임계값은 온(on) 및 오프(off) 상태를 가지고 있는, 버퍼 저장소와,A buffer storage for storing packets therein, the buffer having a threshold and a threshold imposed on the number of packets stored in the buffer, the threshold and the threshold having respective preset values, Thresholds are buffer stores, which have on and off states, 제어 로직Control logic 을 포함하며,Including; 상기 임계값이 오프일 때, 상기 제어 로직은 상기 생산자로 하여금 패킷을 생성하여 상기 버퍼 저장소에 저장하게 하며 문맥 스위치를 소비자로 향하게 하며,When the threshold is off, the control logic causes the producer to generate a packet and store it in the buffer store and direct the context switch to the consumer, 상기 임계값이 온일 때, 상기 제어 로직은 상기 생산자로 하여금 패킷을 생 성하여 이 패킷을 상기 버퍼 저장소에 저장하게 하며 상기 버퍼 저장소 내에 저장된 패킷의 수가 상기 임계값과 동일할 때까지 상기 소비자로 향하는 문맥 스위치를 지연시키며, 이후 상기 제어 로직은 상기 임계값을 오프로 설정하며 문맥 스위치를 상기 소비자의 문맥으로 향하게 하며,When the threshold is on, the control logic causes the producer to generate a packet and store the packet in the buffer store and to the consumer until the number of packets stored in the buffer store is equal to the threshold. Delay the context switch, and then the control logic sets the threshold off and directs the context switch to the consumer's context, 상기 임계값이 온이고 버퍼 플러쉬(buffer flush)가 요구될 때, 상기 제어 로직은 상기 임계값을 오프로 설정하며 상기 스케쥴러로 하여금 상기 버퍼 내의 나머지 패킷을 처리하도록 상기 소비자의 실행 문맥으로 스위치하게 하며, When the threshold is on and a buffer flush is required, the control logic sets the threshold to off and causes the scheduler to switch to the consumer's execution context to process the remaining packets in the buffer. , 상기 버퍼가 비어있을 때, 상기 제어 로직은 상기 임계값을 온으로 설정하며 문맥 스위치를 상기 생산자로 향하게 하는,When the buffer is empty, the control logic sets the threshold on and directs a context switch to the producer, 패킷의 생성과 소비를 제어하기 위한 장치.Device for controlling the generation and consumption of packets. 제 9 항에 있어서, 상기 한계값의 상기 미리설정된 값은 상기 임계값의 미리설정된 값보다 더 큰, 패킷의 생성과 소비를 제어하기 위한 장치.10. The apparatus of claim 9, wherein the predetermined value of the threshold value is greater than a predetermined value of the threshold value. 패킷의 생산자의 문맥과 패킷의 소비자의 문맥 사이에 문맥의 스위치를 제어하는 방법에 있어서,A method of controlling a context switch between a context of a packet producer and a context of a consumer of a packet, 생성된 패킷의 수에 대한 임계값(threshold)과 한계값(limit)을 제공하는 단계로서, 상기 임계값과 한계값은 각 미리설정된 값을 가지고 있으며, 상기 임계값은 온(on) 및 오프(off) 상태를 가지고 있는, 임계값과 한계값을 제공하는 단계와,Providing a threshold and a limit for the number of generated packets, the threshold and limit having respective preset values, the threshold being on and off ( providing a threshold and a threshold having an off state; 상기 문맥이 상기 생산자의 문맥이고 상기 임계값이 오프일 때, 상기 생산자 는 상기 문맥의 스위치를 상기 소비자의 문맥으로 향하게 하는 동안 패킷을 생성하는 단계를 수행하며,When the context is the context of the producer and the threshold is off, the producer performs a step of generating a packet while directing the switch of the context to the context of the consumer, 상기 문맥이 상기 생산자의 문맥이고 상기 임계값이 온일 때, 상기 생산자는, When the context is the context of the producer and the threshold is on, the producer, (a) 상기 문맥의 스위치를 상기 소비자의 문맥으로 향하게 하지 않는 동안 패킷의 임계값 수를 생성하는 단계와,(a) generating a threshold number of packets while not directing the switch of the context to the context of the consumer; (b) 패킷의 임계값 수가 생성되었을 때, 상기 임계값을 오프로 설정하는 단계(b) when the threshold number of packets has been generated, setting the threshold off 를 수행하는 단계와,Performing the step, 상기 문맥이 상기 소비자의 문맥일 때 상기 소비자는,When the context is the context of the consumer, the consumer, (c) 상기 생산자에 의해 생성된 패킷을 소비하는 단계와,(c) consuming a packet generated by the producer; (d) 소비될 패킷이 더 이상 없을 때, (d) when there are no more packets to be consumed, - 상기 임계값을 온으로 설정하는 하위 단계와, A substep of setting the threshold on; - 상기 문맥을 상기 생산자의 문맥으로 스위칭하는 하위 단계Substep of switching the context to the producer's context 를 수행하는 단계Steps to perform 를 포함하는, 문맥의 스위치를 제어하는 방법.A method for controlling a switch of context, comprising. 제 11 항에 있어서, 상기 한계값의 미리설정된 값은 상기 임계값의 미리설정된 값보다 더 큰, 문맥의 스위치를 제어하는 방법.12. The method of claim 11, wherein the preset value of the threshold value is greater than the preset value of the threshold value. 제 11 항에 있어서, 상기 생산자에 의해 생성된 패킷을 저장하기 위한 버퍼를 제공하는 단계를 더 포함하며,12. The method of claim 11, further comprising providing a buffer for storing packets generated by the producer, 상기 생성하는 단계들 각각은 상기 제공된 버퍼 내에 상기 생성된 패킷을 저장하는 단계를 더 포함하는, 문맥의 스위치를 제어하는 방법.Wherein each of the generating steps further comprises storing the generated packet in the provided buffer. 제 13 항에 있어서, 상기 한계값의 미리설정된 값은 상기 임계값의 미리설정된 값보다 더 큰, 문맥의 스위치를 제어하는 방법.The method of claim 13, wherein the preset value of the threshold value is greater than the preset value of the threshold value.
KR1020057021123A 2003-05-08 2004-04-29 Threshold for unblocking processing nodes blocked due to the passage of data packets Withdrawn KR20060009000A (en)

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)

* Cited by examiner, † Cited by third party
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

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