KR20190021630A - 스위칭을 위한 스케줄링 방법 및 스케줄러 - Google Patents

스위칭을 위한 스케줄링 방법 및 스케줄러 Download PDF

Info

Publication number
KR20190021630A
KR20190021630A KR1020170106607A KR20170106607A KR20190021630A KR 20190021630 A KR20190021630 A KR 20190021630A KR 1020170106607 A KR1020170106607 A KR 1020170106607A KR 20170106607 A KR20170106607 A KR 20170106607A KR 20190021630 A KR20190021630 A KR 20190021630A
Authority
KR
South Korea
Prior art keywords
input
output
scheduler
grant
request
Prior art date
Application number
KR1020170106607A
Other languages
English (en)
Inventor
송종태
김대업
한경은
김광준
박찬성
이준기
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020170106607A priority Critical patent/KR20190021630A/ko
Publication of KR20190021630A publication Critical patent/KR20190021630A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/254Centralised controller, i.e. arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

스위치 스케줄링 방법이 개시된다.
본 발명의 일 실시예에 따른 스위치의 입력단들 각각에 대한 입력 아비터들을 이용하여 상기 입력단들에서 상기 스위치의 출력단들로 리퀘스트를 전송하는 단계; 상기 출력단들 각각에 대한 출력 아비터들을 이용하여 상기 리퀘스트에 대한 그랜트를 상기 입력단들로 전송하는 단계; 및 상기 출력단들에서 상기 입력단들로 상기 출력단들의 그랜트 정보를 전송하는 단계를 포함할 수 있다.

Description

스위칭을 위한 스케줄링 방법 및 스케줄러{SCHEDULING METHOD AND SCHEDULER FOR SWITCHING}
본 발명은 패킷 전송을 위한 스위칭 스케줄링 방법에 관한 것이다. 보다 구체적으로, 출력단의 그랜트 상태, 큐 사이즈 또는 타임슬롯의 카운터를 이용한 스위칭 스케줄링 방법에 관한 것이다.
하나 이상의 입력으로부터 하나 이상의 출력으로 데이터를 스위칭함에 있어서, 입력단으로부터 스위치에 입력된 패킷이 충돌 없이 출력단으로 전송되기 위해서는 스위치의 입력 및 출력에 대한 스케줄링이 필수적으로 요구된다.
종래에는 스위치의 입력단에서 스위치의 출력단으로 패킷 전송시 첫번째 iteration이 진행된 후 두번째 iteration 과정에서 이미 첫번째 iteration 과정에서 그랜트가 완료된 출력단으로 패킷 전송을 위한 리퀘스트를 요청하게 되어 불필요한 리퀘스트가 생기고, 이로 인해 스위치의 지연 성능이 나빠지는 문제가 있었다.
이에 따라, 높은 부하 상태에서도 불필요한 리퀘스트를 줄여 스위치의 지연 성능을 개선할 수 있는 스케줄링 방법이 요청되고 있다.
본 발명은 출력단의 그랜트가 전송되었는지 여부를 나타내는 그랜트 정보를 고려하여 입력단에서의 불필요한 리퀘스트 전송을 줄일 수 있는 효율적인 스위칭 스케줄링 방법 및 스케줄러를 제공한다.
본 발명은 출력단의 그랜트가 전송되었는지 여부를 나타내는 그랜트 정보 및 입력단에 입력된 패킷이 저장되는 VOQ의 큐 사이즈를 고려하여 입력단에서의 불필요한 리퀘스트 전송을 줄이고, 패킷이 특정 출력단으로 몰리는 현상을 줄일 수 있는 효율적인 스위칭 스케줄링 방법 및 스케줄러를 제공한다.
본 발명은 타임슬롯 카운터를 이용하여 입력 아비터 및 출력 아비터의 포인터를 결정함으로써, 하나의 아비터를 이용하여 입력단에서의 불필요한 리퀘스트 전송을 줄이고, VOQ의 큐 사이즈까지 고려할 수 있는 스위칭 스케줄링 방법 및 스케줄러를 제공한다.
본 발명의 일 실시예에 따른 스위치 스케줄링 방법은, 스위치의 입력단들 각각에 대한 입력 아비터들을 이용하여 상기 입력단들에서 상기 스위치의 출력단들로 리퀘스트를 전송하는 단계; 상기 출력단들 각각에 대한 출력 아비터들을 이용하여 상기 리퀘스트에 대한 그랜트를 상기 입력단들로 전송하는 단계; 및 상기 출력단들에서 상기 입력단들로 상기 출력단들의 그랜트 정보를 전송하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 상기 리퀘스트를 전송하는 단계는, 상기 입력 아비터들 중 메인 입력 아비터들의 포인터에 대응하는 출력단들을 식별하는 단계; 상기 식별된 출력단들의 그랜트 전송 여부를 식별하는 단계; 상기 출력단들의 그랜트가 전송되지 않은 경우, 상기 입력단들에서 상기 출력단들로 상기 리퀘스트를 전송하는 단계; 및 상기 메인 입력 아비터들의 포인터를 업데이트 하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 상기 리퀘스트를 전송하는 단계는, 스위치의 입력단들로 입력된 데이터를 저장하는 VOQ(Virtual Output Queue)의 스케줄링 우선순위를 결정하는 단계; 상기 스케줄링 우선순위가 높은 VOQ에 대응하는 출력단들에 있어서, 상기 입력 아비터들 중 세컨더리 입력 아비터들의 포인터에 대응하는 출력단들의 그랜트 전송 여부를 식별하는 단계; 상기 출력단들의 그랜트가 전송되지 않은 경우, 상기 입력단들에서 상기 출력단들로 상기 리퀘스트를 전송하는 단계; 및 상기 세컨더리 입력 아비터들의 포인터를 업데이트 하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 상기 VOQ의 스케줄링 우선순위를 결정하는 단계는, 상기 VOQ의 큐 사이즈(Queue Size)를 식별하는 단계; 및 상기 VOQ의 큐 사이즈를 미리 설정된 임계값과 비교하여 상기 VOQ의 스케줄링 우선순위를 결정하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 상기 그랜트를 상기 입력단들로 전송하는 단계는, 상기 출력 아비터들 중 메인 출력 아비터들의 포인터에 대응하는 입력단들로부터 리퀘스트의 수신 여부를 식별하는 단계; 상기 입력단들로부터 리퀘스트가 수신된 경우, 상기 출력단들에서 상기 메인 출력 아비터의 포인터에 대응하는 입력단들로 상기 그랜트를 전송하는 단계; 및 상기 메인 출력 아비터들의 포인터를 업데이트 하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 상기 그랜트를 상기 입력단들로 전송하는 단계는, 상기 리퀘스트 중 스케줄링 우선순위가 높은 VOQ를 위한 리퀘스트의 수신 여부를 식별하는 단계; 상기 스케줄링 우선순위가 높은 VOQ를 위한 리퀘스트가 수신된 경우, 상기 VOQ를 포함하는 입력단들에 있어서, 상기 출력 아비터들 중 세컨더리 출력 아비터들의 포인터에 대응하는 입력단들을 식별하는 단계; 상기 출력단들에서 상기 식별된 입력단들로 그랜트를 전송하는 단계; 및 상기 세컨더리 출력 아비터들의 포인터를 업데이트 하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 상기 출력단들의 그랜트 정보를 전송하는 단계는, 상기 입력단들 중 그랜트를 수신하지 못한 입력단들을 식별하는 단계; 및 상기 출력단의 그랜트 정보를 상기 식별된 입력단들로 전송하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 스위치 스케줄링 방법은, 스위치 스케줄링을 위한 타임슬롯 카운터를 스위치의 입력단 및 출력단에 제공하는 단계; 상기 타임슬롯 카운터에 기초하여 상기 입력단들에서 상기 출력단들로 리퀘스트를 전송하는 단계; 및 상기 타임슬롯 카운터에 기초하여 상기 출력단들에서 상기 입력단들로 그랜트를 전송하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 상기 출력단들로 리퀘스트를 전송하는 단계는, 상기 타임슬롯 카운터에 기초하여 상기 입력단들의 입력 아비터들에 대하여 포인터를 설정하는 단계; 및 상기 설정된 입력 아비터의 포인터에 대응하는 출력단들로 상기 리퀘스트를 전송하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 상기 출력단들로 리퀘스트를 전송하는 단계는, 스위치의 입력단들로 입력된 데이터를 저장하는 VOQ의 스케줄링 우선순위를 결정하는 단계; 상기 스케줄링 우선순위가 높은 VOQ에 대응하는 출력단들 중 상기 입력 아비터의 포인터에 대응하는 출력단들로 상기 리퀘스트를 전송하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 상기 입력단들로 그랜트를 전송하는 단계는, 상기 타임슬롯 카운터에 기초하여 상기 출력단들의 출력 아비터들에 대하여 포인터를 설정하는 단계; 상기 출력 아비터의 포인터에 대응하는 입력단들로부터 리퀘스트의 수신 여부를 식별하는 단계; 및 상기 입력단들로부터 리퀘스트가 수신된 경우, 상기 출력단들에서 상기 출력 아비터의 포인터에 대응하는 입력단들로 상기 그랜트를 전송하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 상기 입력단들로 그랜트를 전송하는 단계는, 상기 리퀘스트 중 스케줄링 우선순위가 높은 VOQ를 위한 리퀘스트의 수신 여부를 식별하는 단계; 및 상기 스케줄링 우선순위가 높은 VOQ를 위한 리퀘스트가 수신된 경우, 상기 VOQ를 포함하는 입력단들 중 상기 출력 아비터들의 포인터에 대응하는 입력단으로 그랜트를 전송하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 스위치 스케줄러는, 스위치의 입력단들 각각에 대한 입력 아비터들을 이용하여 상기 입력단들에서 상기 스위치의 출력단들로 리퀘스트를 전송하고, 상기 출력단들 각각에 대한 출력 아비터들을 이용하여 상기 리퀘스트에 대한 그랜트를 상기 입력단들로 전송하고, 상기 출력단들에서 상기 입력단들로 상기 출력단들의 그랜트 정보를 전송할 수 있다.
본 발명의 일 실시예에 따른 상기 스위치 스케줄러는, 상기 입력 아비터들 중 메인 입력 아비터들의 포인터에 대응하는 출력단들을 식별하고, 상기 식별된 출력단들의 그랜트의 전송 여부를 식별하고, 상기 출력단들의 그랜트가 전송되지 않은 경우, 상기 입력단들에서 상기 출력단들로 상기 리퀘스트를 전송하고, 상기 메인 입력 아비터들의 포인터를 업데이트 할 수 있다.
본 발명의 일 실시예에 따른 상기 스위치 스케줄러는, 스위치의 입력단들로 입력된 데이터를 저장하는 VOQ(Virtual Output Queue)의 스케줄링 우선순위를 결정하고, 상기 스케줄링 우선순위가 높은 VOQ에 대응하는 출력단들에 있어서, 상기 입력 아비터들 중 세컨더리 입력 아비터들의 포인터에 대응하는 출력단들의 그랜트 전송 여부를 식별하고, 상기 출력단들의 그랜트가 전송되지 않은 경우, 상기 입력단들에서 상기 출력단들로 상기 리퀘스트를 전송하고, 상기 세컨더리 입력 아비터들의 포인터를 업데이트 할 수 있다.
본 발명의 일 실시예에 따른 상기 스위치 스케줄러는, 상기 VOQ의 큐 사이즈(Queue Size)를 식별하고, 상기 VOQ의 큐 사이즈를 미리 설정된 임계값과 비교하여 상기 VOQ의 스케줄링 우선순위를 결정할 수 있다.
본 발명의 일 실시예에 따른 상기 스위치 스케줄러는, 상기 출력 아비터들 중 메인 출력 아비터들의 포인터에 대응하는 입력단들로부터 리퀘스트의 수신 여부를 식별하고, 상기 입력단들로부터 리퀘스트가 수신된 경우, 상기 출력단들에서 상기 메인 출력 아비터의 포인터에 대응하는 입력단들로 상기 그랜트를 전송하고, 상기 메인 출력 아비터들의 포인터를 업데이트 할 수 있다.
본 발명의 일 실시예에 따른 상기 스위치 스케줄러는, 상기 리퀘스트 중 스케줄링 우선순위가 높은 VOQ를 위한 리퀘스트의 수신 여부를 식별하고, 상기 스케줄링 우선순위가 높은 VOQ를 위한 리퀘스트가 수신된 경우, 상기 VOQ를 포함하는 입력단들에 있어서, 상기 출력 아비터들 중 세컨더리 출력 아비터들의 포인터에 대응하는 입력단들을 식별하고, 상기 출력단들에서 상기 식별된 입력단들로 그랜트를 전송하고, 상기 세컨더리 출력 아비터들의 포인터를 업데이트 할 수 있다.
본 발명의 일 실시예에 따른 상기 스위치 스케줄러는, 상기 입력단들 중 그랜트를 수신하지 못한 입력단들을 식별하고, 상기 출력단의 그랜트 정보를 상기 식별된 입력단들로 전송할 수 있다.
본 발명의 일 실시예에 따른 스위치 스케줄러는, 스위치 스케줄링을 위한 타임슬롯 카운터를 스위치의 입력단 및 출력단에 제공하고, 상기 타임슬롯 카운터에 기초하여 상기 입력단들에서 상기 출력단들로 리퀘스트를 전송하고, 상기 타임슬롯 카운터에 기초하여 상기 출력단들에서 상기 입력단들로 그랜트를 전송할 수 있다.
본 발명의 일 실시예에 따른 상기 스위치 스케줄러는, 상기 타임슬롯 카운터에 기초하여 상기 입력단들의 입력 아비터들에 대하여 포인터를 설정하고, 상기 설정된 입력 아비터의 포인터에 대응하는 출력단들로 상기 리퀘스트를 전송할 수 있다.
본 발명의 일 실시예에 따른 상기 스위치 스케줄러는, 스위치의 입력단들로 입력된 데이터를 저장하는 VOQ의 스케줄링 우선순위를 결정하고, 상기 스케줄링 우선순위가 높은 VOQ에 대응하는 출력단들 중 상기 입력 아비터의 포인터에 대응하는 출력단들로 상기 리퀘스트를 전송할 수 있다.
본 발명의 일 실시예에 따른 상기 스위치 스케줄러는, 상기 타임슬롯 카운터에 기초하여 상기 출력단들의 출력 아비터들에 대하여 포인터를 설정하고, 상기 출력 아비터의 포인터에 대응하는 입력단들로부터 리퀘스트의 수신 여부를 식별하고, 상기 입력단들로부터 리퀘스트가 수신된 경우, 상기 출력단들에서 상기 출력 아비터의 포인터에 대응하는 입력단들로 상기 그랜트를 전송할 수 있다.
본 발명의 일 실시예에 따른 상기 스위치 스케줄러는, 상기 리퀘스트 중 스케줄링 우선순위가 높은 VOQ를 위한 리퀘스트의 수신 여부를 식별하고, 상기 스케줄링 우선순위가 높은 VOQ를 위한 리퀘스트가 수신된 경우, 상기 VOQ를 포함하는 입력단들 중 상기 출력 아비터들의 포인터에 대응하는 입력단으로 그랜트를 전송할 수 있다.
본 발명의 일 실시예에 따르면, 출력단의 그랜트가 전송되었는지 여부를 나타내는 그랜트 정보를 고려하여 입력단에서의 불필요한 리퀘스트 전송을 줄일 수 있는 효율적인 스위칭 스케줄링 방법 및 스케줄러를 제공할 수 있다.
본 발명의 일 실시예에 따르면, 출력단의 그랜트가 전송되었는지 여부를 나타내는 그랜트 정보 및 입력단에 입력된 패킷이 저장되는 VOQ의 큐 사이즈를 고려하여 입력단에서의 불필요한 리퀘스트 전송을 줄이고, 패킷이 특정 출력단으로 몰리는 현상을 줄일 수 있는 효율적인 스위칭 스케줄링 방법 및 스케줄러를 제공할 수 있다.
본 발명의 일 실시예에 따르면, 타임슬롯 카운터를 이용하여 입력 아비터 및 출력 아비터의 포인터를 결정함으로써, 하나의 아비터를 이용하여 입력단에서의 불필요한 리퀘스트 전송을 줄이고, VOQ의 큐 사이즈까지 고려할 수 있는 스위칭 스케줄링 방법 및 스케줄러를 제공할 수 있다.
도 1은 본 발명의 일 실시예에 따른 스위치 및 스케줄러를 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 스위치 스케줄링 방법을 나타내는 플로우 차트이다.
도 3은 본 발명의 일 실시예에 따른 리퀘스트를 전송하는 방법을 나타내는 플로우 차트이다.
도 4는 본 발명의 일 실시예에 따른 그랜트를 전송하는 방법을 나타내는 플로우 차트이다.
도 5는 본 발명의 다른 일 실시예에 따른 리퀘스트를 전송하는 방법을 나타내는 플로우 차트이다.
도 6은 본 발명의 다른 일 실시예에 따른 그랜트를 전송하는 방법을 나타내는 플로우 차트이다.
도 7a 및 7b는 본 발명의 일 실시예에 따른 스케줄링 과정을 도시한 도면이다.
도 8는 본 발명의 일 실시예에 따른 스케줄러의 구조를 도시한 도면이다.
도 9는 본 발명의 또 다른 일 실시예에 따른 스케줄링 방법을 나타내는 플로우 차트이다.
도 10은 본 발명의 또 다른 일 실시예에 따른 스케줄러의 구조를 도시한 도면이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 스위치 및 스케줄러를 도시한 도면이다.
본 발명의 일 실시예에 따른 스케줄러(100)는 입력단들(103) 및 출력단들(104)에 대한 독립적인 아비터들을 이용하여 스위치(101)의 입력단들(103)에 입력된 패킷이 타임슬롯마다 동기를 맞추어 스위치(101)의 출력단들(104)로 스위칭될 때, 출력단들(104)에서 충돌이 일어나지 않게 하기 위하여 스케줄링을 수행할 수 있다. 이 때, 타임슬롯은 특정 길이의 프레임을 전송하기 위한 시간이다. 그리고, 패킷은 입력단들(103)의 VOQ(Virtual Output Queue)에 저장되고, 특정 길이의 프레임 단위로 스위칭될 수 있다. 또한, VOQ는 저장된 패킷이 전송될 출력단들에 따라 구분될 수 있다. 예를 들어, 제1 출력단으로 전송될 패킷은 제1 VOQ에 저장되고, 제n 출력단으로 전송될 패킷은 제n VOQ에 저장될 수 있다.
도 2는 본 발명의 일 실시예에 따른 스위치 스케줄링 방법을 나타내는 플로우 차트이다.
단계(201)에서, 스케줄러(100)는 입력 아비터의 포인터에 대응하는 출력단들로 입력단들(103)의 VOQ에 저장된 패킷을 전송하기 위해 입력 아비터의 포인터에 대응하는 출력단들로 리퀘스트를 전송할 수 있다. 예를 들어, 제1 입력단의 입력 아비터의 포인터가 제2 출력단에 대응되는 경우, 스케줄러(100)는 제2 VOQ에 저장된 패킷을 전송하기 위하여 제2 출력단으로 리퀘스트를 전송할 수 있다.
단계(202)에서, 스케줄러(100)는 출력 아비터가 수신한 리퀘스트에 대하여, 출력 아비터의 포인터에 대응하는 입력단들로 그랜트를 전송할 수 있다. 예를 들어, 제1 출력단으로 제1 입력단 및 제2 입력단으로부터 리퀘스트가 전송되었고, 제2 출력단의 출력 아비터의 포인터가 제2 입력단에 대응되는 경우, 스케줄러(100)는 제2 출력단의 그랜트를 제2 입력단으로 전송할 수 있다.
단계(203)에서, 스케줄러(100)는 그랜트를 수신하지 못한 입력단들에 대하여, 출력단들의 그랜트 상태를 나타내는 그랜트 정보를 전송할 수 있다. 예를 들어, 제2 출력단의 그랜트가 제2 입력단으로 전송된 경우, 스케줄러(100)는 제1 입력단 내지 제n 입력단 중 제2 입력단을 제외한 나머지 입력단들로 제2 출력단의 그랜트가 전송되었음을 나타내는 그랜트 정보를 전송할 수 있다.
도 3은 본 발명의 일 실시예에 따른 리퀘스트를 전송하는 방법을 나타내는 플로우 차트이다.
단계(301)에서, 스케줄러(100)는 입력단들(103)의 입력 아비터들의 포인터 이용하여 입력단들(103)의 VOQ에 저장된 패킷을 전송하기 위해 리퀘스트를 전송할 출력단들을 식별할 수 있다. 예를 들어, 제1 입력단에 대한 입력 아비터의 포인터가 제2 출력단에 대응되는 경우, 스케줄러(100)는 제1 입력단의 제2 VOQ에 저장된 패킷을 제2 출력단으로 전송하기 위한 리퀘스트를 제2 출력단으로 전송할 것을 인식할 수 있다.
단계(302)에서, 스케줄러(100)는 그랜트 정보를 참조하여 입력 아비터들의 포인터에 대응되는 출력단들이 그랜트를 전송했는지 여부를 식별할 수 있다. 예를 들어, 제1 입력단에 대한 입력 아비터의 포인터가 제2 출력단에 대응되는 경우, 스케줄러(100)는 현재 타임슬롯에서 제2 출력단이 제1 입력단이 아닌 다른 입력단으로 그랜트를 전송했는지 여부를 식별할 수 있다.
단계(303)에서, 입력 아비터들의 포인터에 대응되는 출력단들이 그랜트를 전송하지 않은 경우, 스케줄러(100)는 해당 출력단들로 리퀘스트를 전송할 수 있다. 예를 들어, 제1 입력단에 대한 입력 아비터의 포인터가 제2 출력단에 대응되고, 제2 출력단이 현재 타임슬롯에서 그랜트를 전송하지 않은 경우, 스케줄러(100)는 제1 입력단의 제2 VOQ에 저장된 패킷의 전송을 위해 제2 출력단으로 리퀘스트를 전송할 수 있다.
단계(304)에서, 스케줄러(100)는 라운드 로빈 방식을 이용하여 입력 아비터들의 포인터를 업데이트 할 수 있다. 예를 들어, 제1 입력단에 대한 입력 아비터의 포인터가 제2 출력단에 대응되고, 스케줄러(100)가 제1 입력단의 제2 VOQ에 저장된 패킷의 전송을 위해 제2 출력단에 리퀘스트를 전송한 경우, 제1 입력단에 대한 입력 아비터의 포인터는 다음 순서의 출력단에 대응되도록 업데이트 될 수 있다. 또는, 제1 입력단에 대한 입력 아비터의 포인터가 제2 출력단에 대응되지만, 제2 출력단이 현재 타임슬롯에서 제1 입력단이 아닌 다른 입력단으로 그랜트를 이미 전송한 경우, 제1 입력단에 대한 입력 아비터의 포인터는 다음 순서의 출력단에 대응되도록 업데이트될 수 있다.
도 4는 본 발명의 일 실시예에 따른 그랜트를 전송하는 방법을 나타내는 플로우 차트이다.
단계(401)에서, 스케줄러(100)는 출력단들(104) 중 입력단들(103)로부터 리퀘스트를 수신한 출력단들을 식별할 수 있다.
단계(402)에서, 스케줄러(100)는 입력단들(103)로부터 리퀘스트를 수신한 출력단들의 출력 아비터들의 포인터를 이용하여 출력단들의 그랜트를 입력단들로 전송할 수 있다. 예를 들어, 제1 출력단이 제1 입력단 및 제2 입력단으로부터 리퀘스트를 수신하고, 제1 출력단의 출력 아비터의 포인터가 제2 입력단에 대응되는 경우, 스케줄러(100)는 제1 출력단의 그랜트를 제2 입력단으로 전송할 수 있다.
단계(403)에서, 스케줄러(100)는 라운드 로빈 방식을 이용하여 입력단들로 그랜트를 전송한 출력단들의 출력 아비터의 포인터를 업데이트 할 수 있다. 예를 들어, 제1 출력단의 출력 아비터의 포인터가 제1 입력단에 대응되지만, 제1 출력단이 제2 입력단으로부터 리퀘스트를 수신한 경우, 스케줄러(100)는 제1 출력단의 그랜트를 제2 입력단에 전송하고, 제1 출력단의 출력 아비터의 포인터는 다음 순서의 입력단인 제3 입력단에 대응되도록 업데이트 될 수 있다.
도 5는 본 발명의 다른 일 실시예에 따른 리퀘스트를 전송하는 방법을 나타내는 플로우 차트이다.
단계(501)에서, 스케줄러(100)는 입력단들의 VOQ의 큐 사이즈를 고려하여 VOQ의 스케줄링 우선순위를 결정할 수 있다.
예를 들어, 스케줄러(100)는 스케줄링 우선순위의 등급을 설정하고, VOQ의 큐 사이즈와 미리 설정된 임계값의 비교를 통해 VOQ의 스케줄링 우선순위를 결정할 수 있다. 이 때, 미리 설정된 임계값은 1개 이상일 수 있다. 즉, 설정되는 우선순위의 등급이 2개 이상으로 나누어질 수 있다. 또는, 스케줄러(100)는 VOQ의 큐 사이즈들을 서로 비교하여 큐 사이즈 순서에 따라 우선순위를 설정할 수 있다. 본 발명의 스케줄링 우선순위를 결정하는 방법은 위의 예시에 제한되지 않을 수 있다.
단계(502)에서, 스케줄러(100)는 현재 스케줄링이 현재 타임슬롯에서 최초로 수행되는 스케줄링인지 식별할 수 있다.
단계(503)에서, 현재 스케줄링이 현재 타임슬롯에서 최초로 수행되는 스케줄링인 경우, 스케줄러(100)는 입력단들(103)의 입력 아비터들 중 메인 입력 아비터들의 포인터를 이용하여 입력단들(103)의 VOQ에 저장된 패킷을 전송하기 위해 리퀘스트를 전송할 출력단들을 식별할 수 있다. 예를 들어, 제1 입력단에 대한 메인 입력 아비터의 포인터가 제2 출력단에 대응되는 경우, 스케줄러(100)는 제1 입력단의 제2 VOQ에 저장된 패킷을 제2 출력단으로 전송하기 위한 리퀘스트를 제2 출력단으로 전송할 것을 인식할 수 있다.
단계(504)에서, 스케줄러(100)는 메인 입력 아비터들을 이용하여 식별된 출력단들로 리퀘스트를 전송할 수 있다.
단계(505)에서, 스케줄러(100)는 라운드 로빈 방식을 이용하여 메인 입력 아비터들의 포인터를 업데이트 할 수 있다. 예를 들어, 제1 입력단에 대한 메인 입력 아비터의 포인터가 제2 출력단에 대응되고, 스케줄러(100)가 제1 입력단의 제2 VOQ에 저장된 패킷의 전송을 위해 제2 출력단에 리퀘스트를 전송한 경우, 제1 입력단에 대한 메인 입력 아비터의 포인터는 다음 순서의 출력단에 대응되도록 업데이트 될 수 있다.
단계(506)에서, 현재 스케줄링이 현재 타임슬롯에서 최로로 수행되는 스케줄링이 아닌 경우, 스케줄러(100)는 현재 타임슬롯에서 출력단으로부터 그랜트를 수신하지 못한 입력단들의 VOQ 중 스케줄링 우선순위가 높은 VOQ가 존재하는지 여부를 식별할 수 있다.
단계(507)에서, 그랜트를 수신하지 못한 입력단들의 VOQ 중 스케줄링 우선순위가 높은 VOQ가 존재하는 경우, 스케줄러(100)는 입력단들의 입력 아비터들 중 세컨더리 입력 아비터들의 포인터를 이용하여 입력단들의 높은 스케줄링 우선순위를 가지는 VOQ에 저장된 패킷을 전송하기 위해 리퀘스트를 전송할 출력단들을 식별할 수 있다. 예를 들어, 제2 입력단의 제3, 제4 VOQ가 높은 스케줄링 우선순위를 가지고, 제2 입력단의 세컨더리 입력 아비터의 포인터가 제4 출력단에 대응되는 경우, 스케줄러(100)는 제2 입력단의 제4 VOQ에 저장된 패킷을 제4 출력단으로 전송하기 위한 리퀘스트를 제4 출력단으로 전송할 것을 인식할 수 있다.
단계(508)에서, 스케줄러(100)는 그랜트 정보를 참조하여 세컨더리 입력 아비터들의 포인터에 대응되는 출력단들이 그랜트를 전송했는지 여부를 식별할 수 있다. 예를 들어, 제2 입력단에 대한 세컨더리 입력 아비터의 포인터가 제4 출력단에 대응되는 경우, 스케줄러(100)는 현재 타임슬롯에서 제4 출력단이 제2 입력단이 아닌 다른 입력단으로 그랜트를 전송했는지 여부를 식별할 수 있다.
단계(509)에서, 세컨더리 입력 아비터들의 포인터에 대응되는 출력단들이 그랜트를 전송하지 않은 경우, 스케줄러(100)는 해당 출력단들로 리퀘스트를 전송할 수 있다. 예를 들어, 제2 입력단에 대한 세컨더리 입력 아비터의 포인터가 제4 출력단에 대응되고, 제4 출력단이 현재 타임슬롯에서 그랜트를 전송하지 않은 경우, 스케줄러(100)는 제2 입력단의 제4 VOQ에 저장된 패킷의 전송을 위해 제4 출력단으로 리퀘스트를 전송할 수 있다.
단계(510)에서, 스케줄러(100)는 라운드 로빈 방식을 이용하여 세컨더리 입력 아비터들의 포인터를 업데이트 할 수 있다. 예를 들어, 제2 입력단에 대한 입력 아비터의 포인터가 제4 출력단에 대응되고, 스케줄러(100)가 제2 입력단의 제4 VOQ에 저장된 패킷의 전송을 위해 제4 출력단에 리퀘스트를 전송한 경우, 제2 입력단에 대한 입력 아비터의 포인터는 다음 순서의 출력단에 대응되도록 업데이트 될 수 있다. 또는, 제2 입력단에 대한 입력 아비터의 포인터가 제4 출력단에 대응되지만, 제4 출력단이 현재 타임슬롯에서 제2 입력단이 아닌 다른 입력단으로 그랜트를 이미 전송한 경우, 제2 입력단에 대한 입력 아비터의 포인터는 다음 순서의 출력단에 대응되도록 업데이트될 수 있다.
단계(511)에서, 현재 스케줄링이 현재 타임슬롯에서 최초로 수행되는 스케줄링이 아니고, 현재 타임슬롯에서 출력단으로부터 그랜트를 수신하지 못한 입력단들의 VOQ 중 스케줄링 우선순위가 높은 VOQ가 존재하지 않는 경우, 스케줄러(100)는 현재 타임슬롯에서 출력단으로부터 그랜트를 수신하지 못한 입력단들의 VOQ 중 스케줄링 우선순위가 낮은 VOQ가 존재하는지 여부를 식별할 수 있다.
단계(512)에서, 스케줄러(100)는 입력단들(103)의 아비터들 중 메인 입력 아비터들의 포인터를 이용하여 입력단들(103)의 낮은 스케줄링 우선순위를 가지는 VOQ에 저장된 패킷을 전송하기 위해 리퀘스트를 전송할 출력단들을 식별할 수 있다. 예를 들어, 제2 입력단의 제5, 제6 VOQ가 낮은 스케줄링 우선순위를 가지고, 제2 입력단에 대한 메인 입력 아비터의 포인터가 제5 출력단에 대응되는 경우, 스케줄러(100)는 제2 입력단의 제5 VOQ에 저장된 패킷을 제5 출력단으로 전송하기 위한 리퀘스트를 제5 출력단으로 전송할 것을 인식할 수 있다.
단계(513)에서, 스케줄러(100)는 그랜트 정보를 참조하여 메인 입력 아비터들의 포인터에 대응되는 출력단들이 그랜트를 전송했는지 여부를 식별할 수 있다. 예를 들어, 제2 입력단에 대한 메인 입력 아비터의 포인터가 제5 출력단에 대응되는 경우, 스케줄러(100)는 현재 타임슬롯에서 제5 출력단이 제2 입력단이 아닌 다른 입력단으로 그랜트를 전송했는지 여부를 식별할 수 있다.
단계(514)에서, 메인 입력 아비터들의 포인터에 대응되는 출력단들이 그랜트를 전송하지 않은 경우, 스케줄러(100)는 해당 출력단들로 리퀘스트를 전송할 수 있다. 예를 들어, 제2 입력단에 대한 메인 입력 아비터의 포인터가 제5 출력단에 대응되고, 제5 출력단이 현재 타임슬롯에서 그랜트를 전송하지 않은 경우, 스케줄러(100)는 제5 입력단의 제5 VOQ에 저장된 패킷의 전송을 위해 제5 출력단으로 리퀘스트를 전송할 수 있다.
도 6은 본 발명의 다른 일 실시예에 따른 그랜트를 전송하는 방법을 나타내는 플로우 차트이다.
단계(601)에서, 스케줄러(100)는 현재 스케줄링이 현재 타임슬롯에서 최초로 수행되는 스케줄링인지 식별할 수 있다.
단계(602)에서, 현재 스케줄링이 현재 타임슬롯에서 최초로 수행되는 스케줄링인 경우, 스케줄러(100)는 입력단들로부터 리퀘스트를 수신한 출력단들을 식별할 수 있다.
단계(603)에서, 스케줄러(100)는 입력단들(103)로부터 리퀘스트를 수신한 출력단들의 출력 아비터들 중 메인 출력 아비터들의 포인터를 이용하여 출력단들이 그랜트를 전송할 입력단들을 식별할 수 있다. 예를 들어, 제2 출력단이 제2 입력단 및 제4 입력단으로부터 리퀘스트를 수신하고, 제2 출력단의 메인 출력 아비터의 포인터가 제4 입력단에 대응되는 경우, 스케줄러(100)는 제2 출력단의 그랜트를 제4 입력단으로 전송할 것을 인식할 수 있다.
단계(604)에서, 스케줄러(100)는 메인 출력 아비터들을 이용하여 식별된 입력단들로 그랜트를 전송할 수 있다.
단계(605)에서, 스케줄러(100)는 라운드 로빈 방식을 이용하여 입력단들로 그랜트를 전송한 출력단들의 메인 출력 아비터의 포인터를 업데이트 할 수 있다. 예를 들어, 제2 출력단의 메인 출력 아비터의 포인터가 제3 입력단에 대응되지만, 제2 출력단이 제2 입력단 및 제4 입력단으로부터 리퀘스트를 수신한 경우, 스케줄러(100)는 제2 출력단의 그랜트를 제4 입력단에 전송하고, 제2 출력단의 메인 출력 아비터의 포인터는 다음 순서의 입력단인 제5 입력단에 대응되도록 업데이트 될 수 있다.
단계(606)에서, 현재 스케줄링이 현재 타임슬롯에서 최초로 수행되는 스케줄링이 아닌 경우, 스케줄러(100)는 현재 타임슬롯에서 출력단들이 입력단들로부터 수신한 리퀘스트 중 높은 스케줄링 우선순위를 가지는 VOQ에 저장된 패킷의 전송에 대한 리퀘스트가 존재하는지 여부를 식별할 수 있다.
단계(607)에서, 출력단들이 입력단들로부터 수신한 리퀘스트 중 높은 스케줄링 우선순위를 가지는 VOQ에 저장된 패킷의 전송에 대한 리퀘스트가 존재하는 경우, 스케줄러(100)는 출력단들의 출력 아비터들 중 세컨더리 출력 아비터들의 포인터를 이용하여 높은 스케줄링 우선순위를 가지는 VOQ에 저장된 패킷의 전송을 위한 리퀘스트에 대하여 그랜트를 전송할 입력단들을 식별할 수 있다. 예를 들어, 제3 출력단이 제6 입력단 및 제8 입력단으로부터 높은 스케줄링 우선순위를 가지는 VOQ에 저장된 패킷의 전송을 위한 리퀘스트를 수신하고, 제3 출력단의 세컨더리 출력 아비터의 포인터가 제8 입력단에 대응되는 경우, 스케줄러(100)는 제3 출력단의 그랜트를 제8 입력단으로 전송할 것을 인식할 수 있다.
단계(608)에서, 스케줄러(100)는 세컨더리 출력 아비터들을 이용하여 식별된 입력단들로 그랜트를 전송할 수 있다.
단게(609)에서, 스케줄러(100)는 라운드 로빈 방식을 이용하여 입력단들로 그랜트를 전송한 출력단들의 세컨더리 출력 아비터의 포인터를 업데이트 할 수 있다. 예를 들어, 제3 출력단의 세컨더리 출력 아비터의 포인터가 제7 입력단에 대응되지만, 제3 출력단이 제6 입력단 및 제8 입력단으로부터 리퀘스트를 수신한 경우, 스케줄러(100)는 제3 출력단의 그랜트를 제8 입력단에 전송하고, 제3 출력단의 세컨더리 출력 아비터의 포인터는 다음 순서의 입력단인 제9 입력단에 대응되도록 업데이트 될 수 있다.
단계(610)에서, 현재 스케줄링이 현재 타임슬롯에서 최초로 수행되는 스케줄링이 아니고, 현재 타임슬롯에서 출력단들이 입력단들로부터 수신한 리퀘스트 중 높은 스케줄링 우선순위를 가지는 VOQ에 저장된 패킷의 전송에 대한 리퀘스트가 존재하지 않는 경우, 스케줄러(100)는 현재 타임슬롯에서 출력단들이 입력단들로부터 수신한 리퀘스트 중 낮은 스케줄링 우선순위를 가지는 VOQ에 저장된 패킷의 전송에 대한 리퀘스트가 존재하는지 여부를 식별할 수 있다.
단계(611)에서, 출력단들이 입력단들로부터 수신한 리퀘스트 중 낮은 스케줄링 우선순위를 가지는 VOQ에 저장된 패킷의 전송에 대한 리퀘스트가 존재하는 경우, 스케줄러(100)는 출력단들의 출력 아비터들 중 메인 출력 아비터들의 포인터를 이용하여 낮은 스케줄링 우선순위를 가지는 VOQ에 저장된 패킷의 전송을 위한 리퀘스트에 대하여 그랜트를 전송할 입력단들을 식별할 수 있다. 예를 들어, 제3 출력단이 제10 입력단 및 제11 입력단으로부터 낮은 스케줄링 우선순위를 가지는 VOQ에 저장도니 패킷의 전송을 위한 리퀘스트를 수신하고, 제3 출력단의 메인 출력 아비터의 포인터가 제10 입력단에 대응되는 경우, 스케줄러(100)는 제3 출력단의 그랜트를 제10 입력단으로 전송할 것을 인식할 수 있다.
단계(612)에서, 스케줄러는 메인 출력 아비터들을 이용하여 식별된 입력단들로 그랜트를 전송할 수 있다.
도 7a 및 7b는 본 발명의 일 실시예에 따른 스케줄링 과정을 도시한 도면이다.
도 7a에서, 스케줄러(100)는 입력단의 입력 아비터들(701 내지 704)을 이용하여 출력단들으로 리퀘스트를 전송할 수 있다. 제1 입력단의 경우, 입력 아비터(701)의 포인터(700)가 제1 출력단에 대응되므로, 스케줄러(100)는 제1 입력단의 제1 VOQ에 저장된 패킷의 전송을 위한 리퀘스트를 제1 출력단으로 전송할 수 있다. 그리고, 스케줄러(100)는 제2 입력단의 제2 VOQ에 저장된 패킷의 전송을 위한 리퀘스트를 제2 출력단으로, 제3 입력단의 제1 VOQ에 저장된 패킷의 전송을 위한 리퀘스트를 제1 출력단으로, 제4 입력단의 제3 VOQ에 저장된 패킷의 전송을 위한 리퀘스트를 제3 출력단으로 리퀘스트를 전송할 수 있다.
도 7b에서, 리퀘스트를 전송한 입력단들의 입력 아비터의 포인터는 업데이트 될 수 있다. 스케줄러(100)는 출력단의 출력 아비터들(710 내지 740)을 이용하여 입력단들로 그랜트 또는 그랜트 정보를 전송할 수 있다. 제1 출력단의 경우, 제1 입력단 및 제3 입력단으로부터 리퀘스트를 수신하였지만, 제1 출력단의 출력 아비터(710)의 포인터가 제1 출력단에 대응되므로, 스케줄러(100)는 제1 출력단의 그랜트를 제1 입력단으로 전송할 수 있다. 그리고, 스케줄러(100)는 제2 출력단의 그랜트를 제2 입력단으로, 제3 출력단의 그랜트를 제4 입력단으로 전송할 수 있다.
또한, 제1 출력단의 경우, 제1 입력단으로 그랜트를 전송 하였으므르, 스케줄러(100)는 제1 출력단으로부터 그랜트를 전송받은 제1 입력단을 제외한 제2 입력단 내지 제4 입력단으로 제1 출력단의 그랜트 전송이 완료되었음을 알려주는 그랜트 정보를 전송할 수 있다. 그리고, 스케줄러(100)는 제2 출력단의 그랜트 정보를 제1 입력단, 제3 입력단 및 제4 입력단으로, 제3 출력단의 그랜트 정보를 제1 입력단 내지 제3 입력단으로 전송할 수 있다. 그랜트를 전송한 출력단들의 출력 아비터의 포인터는 업데이트 될 수 있다.
도 8는 본 발명의 일 실시예에 따른 스케줄러의 구조를 도시한 도면이다.
스케줄러(100)는 각 입력단들에 대한 입력 아비터들(801 내지 804) 및 각 출력단들에 대한 출력 아비터들(810 내지 840)을 포함할 수 있다. 그리고, 입력 아비터들(801 내지 804)의 포인터에 기초하여 경로(81)을 통해 출력단들로 리퀘스트를 전송하고, 출력 아비터들(810 내지 840)의 포인터에 기초하여 경로(81)을 통해 입력단들로 그랜를 전송할 수 있다. 또한, 출력단들의 그랜트를 전송함과 동시에 그랜트 정보(83)에 출력단들의 그랜트 전송 상태를 나타낼 수 있고, 그랜트 정보(83)는 경로(82)를 통해 입력단으로 전송될 수 있다. 그리고, 입력단들로 전송된 그랜트 정보(83)과 로직(84)에 기초하여, 이후 스케줄링에서 그랜트 전송이 완료된 출력단으로의 리퀘스트 전송이 배제될 수 있다.
도 9은 본 발명의 또 다른 일 실시예에 따른 스케줄링 방법을 나타내는 플로우 차트이다.
단계(901)에서, 스케줄러(100)는 타임슬롯 카운터를 스위치 사이즈로 모듈러 시킨 값을 입력단들 및 출력단들로 제공할 수 있다. 여기서, 타임슬롯 카운터는 복수의 타임슬롯들 중 특정 타임슬롯을 식별하기 위한 값일 수 있다.
단계(902)에서, 스케줄러(100)는 현재 스케줄링이 현재 타임슬롯에서 최초로 수행되는 스케줄링인지 식별할 수 있다. 그리고, 현재 스케줄링이 현재 타임슬롯에서 최초로 수행되는 스케줄링인 경우, 스케줄러(100)는 타임슬롯 카운터를 스위치 사이즈로 모듈러 시킨 값과 스위치의 사이즈를 이용하여 입력단들의 입력 아비터의 싸이클릭 포인터를 결정하고, 입력 아비터들의 싸이클릭 포인터에 대응하는 출력단으로 리퀘스트를 전송할 수 있다. 예를 들어, 스케줄러(100)는 타임슬롯 카운터를 스위치 사이즈로 모듈러 시킨 값 t와 i번째 입력단의 합을 스위치 사이즈 N으로 모듈러 시킨 값을 싸이클릭 포인터로 결정할 수 있다. 즉, 타임슬롯 카운터를 스위치 사이즈로 모듈러 시킨 값이 t일 때, i번째 입력단의 입력 아비터의 싸이클릭 포인터 값은 (t+i) mod N일 수 있다.
또는, 현재 스케줄링이 현재 타임슬롯에서 최초로 수행되는 스케줄링이 아닌 경우, 스케줄러(100)는 현재 타임슬롯에서 출력단으로부터 그랜트를 수신하지 못한 입력단들의 VOQ의 큐 사이즈를 고려하여 VOQ의 스케줄링 우선순위를 결정할 수 있다. 그리고, 스케줄러(100)는 현재 타임슬롯에서 출력단으로부터 그랜트를 수신하지 못한 입력단들의 입력 아비터의 싸이클릭 포인터 및 입력단들의 VOQ의 스케줄링 우선순위를 고려하여 현재 타임슬롯에서 그랜트를 전송하지 않은 출력단으로 리퀘스트를 전송할 수 있다. 예를 들어, 제1 입력단의 제2, 제3 VOQ가 높은 스케줄링 우선순위를 가지고, 제1 입력단의 입력 아비터의 싸이클릭 포인터가 제3 출력단에 대응되는 경우, 스케줄러(100)는 제1 입력단의 제3 VOQ에 저장된 패킷을 제3 출력단으로 전송하기 위한 리퀘스트를 제3 출력단으로 전송할 수 있다.
단계(903)에서, 스케줄러(100)는 현재 스케줄링이 현재 타임슬롯에서 최초로 수행되는 스케줄링인지 식별할 수 있다. 그리고, 현재 스케줄링이 현재 타임슬롯에서 최초로 수행되는 스케줄링인 경우, 스케줄러(100)는 출력단들의 리퀘스트 수신 여부를 식별할 수 있다. 입력단들로부터 리퀘스트를 수신한 출력단들이 존재하는 경우, 스케줄러(100)은 타임슬롯 카운터를 스위치 사이즈로 모듈러 시킨 값과 스위치 사이즈를 이용하여 출력단들의 출력 아비터의 싸이클릭 포인터를 결정하고, 출력 아비터들의 싸이클릭 포인터에 대응하는 입력단으로 그랜트를 전송할 수 있다. 예를 들어, 스케줄러(100)는 타임슬롯 카운터를 모듈러 시킨 값 t와 d번째 출력단의 차이를 스위치 사이즈 N으로 모듈러 시킨 값을 싸이클릭 포인터로 결정할 수 있다. 즉, 타임슬롯 카운터를 스위치 사이즈로 모듈러 시킨 값이 t일 때, d번째 출력단의 출력 아비터의 싸이클릭 포인터 값은 (d-t) mod N일 수 있다.
또는 현재 스케줄링이 현재 타임슬롯에서 최초로 수행되는 스케줄링이 아닌 경우, 스케줄러(100)는 입력단들로부터 리퀘스트를 수신한 출력단들의 출력 아비터의 싸이클릭 포인터 및 출력단들로 리퀘스트를 전송한 입력단들의 VOQ의 스케줄링 우선순위를 고려하여 현재 타임슬롯에서 그랜트를 수신하지 못한 입력단들로 그랜트를 전송할 수 있다. 예를 들어, 제1 출력단이 제1 입력단 내지 제3 입력단으로부터 리퀘스트를 수신하고, 제1 입력단의 제1 VOQ 및 제3 입력단의 제1 VOQ가 높은 스케줄링 우선순위를 가지며, 제1 출력단의 출력 아비터의 싸이클릭 포인터가 제2 입력단에 대응될 수 있다. 이 경우, 스케줄러(100)는 스케줄링 우선순위를 고려하여 그랜트 전송 대상에서 제2 입력단을 배제하고, 다음 순서인 제3 입력단으로 그랜트를 전송할 수 있다.
도 10은 본 발명의 또 다른 일 실시예에 따른 스케줄러의 구조를 도시한 도면이다.
스케줄러(100)는 각 입력단들에 대한 입력 아비터들(1001 내지 1004) 및 각 출력단들에 대한 출력 아비터들(1010 내지 1040)을 포함할 수 있다. 그리고, 스케줄러(100)는 정규화된 TS 카운터(91)를 이용하여 타임슬롯 카운터를 스위치 사이즈로 모듈러 시킨 값을 입력단들 및 출력단들로 전송할 수 있다. 또한, 스케줄러는 현재 타임슬롯에서 현재 스케줄링이 최초 수행되는 것이 아닌 경우, Max VOQ Selector(13)를 이용하여 스케줄링 우선순위가 높은 VOQ를 선택할 수 있고, Max Queued Rep Selector(12)를 이용하여 출력단에 수신된 리퀘스트 중 스케줄링 우선순위가 가장 높은 VOQ로부터의 리퀘스트를 식별할 수 있다.
한편, 본 발명에 따른 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성되어 마그네틱 저장매체, 광학적 판독매체, 디지털 저장매체 등 다양한 기록 매체로도 구현될 수 있다.
본 명세서에 설명된 각종 기술들의 구현들은 디지털 전자 회로조직으로, 또는 컴퓨터 하드웨어, 펌웨어, 소프트웨어로, 또는 그들의 조합들로 구현될 수 있다. 구현들은 데이터 처리 장치, 예를 들어 프로그램가능 프로세서, 컴퓨터, 또는 다수의 컴퓨터들의 동작에 의한 처리를 위해, 또는 이 동작을 제어하기 위해, 컴퓨터 프로그램 제품, 즉 정보 캐리어, 예를 들어 기계 판독가능 저장 장치(컴퓨터 판독가능 매체) 또는 전파 신호에서 유형적으로 구체화된 컴퓨터 프로그램으로서 구현될 수 있다. 상술한 컴퓨터 프로그램(들)과 같은 컴퓨터 프로그램은 컴파일된 또는 인터프리트된 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 기록될 수 있고, 독립형 프로그램으로서 또는 모듈, 구성요소, 서브루틴, 또는 컴퓨팅 환경에서의 사용에 적절한 다른 유닛으로서 포함하는 임의의 형태로 전개될 수 있다. 컴퓨터 프로그램은 하나의 사이트에서 하나의 컴퓨터 또는 다수의 컴퓨터들 상에서 처리되도록 또는 다수의 사이트들에 걸쳐 분배되고 통신 네트워크에 의해 상호 연결되도록 전개될 수 있다.
컴퓨터 프로그램의 처리에 적절한 프로세서들은 예로서, 범용 및 특수 목적 마이크로프로세서들 둘 다, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 요소들은 명령어들을 실행하는 적어도 하나의 프로세서 및 명령어들 및 데이터를 저장하는 하나 이상의 메모리 장치들을 포함할 수 있다. 일반적으로, 컴퓨터는 데이터를 저장하는 하나 이상의 대량 저장 장치들, 예를 들어 자기, 자기-광 디스크들, 또는 광 디스크들을 포함할 수 있거나, 이것들로부터 데이터를 수신하거나 이것들에 데이터를 송신하거나 또는 양쪽으로 되도록 결합될 수도 있다. 컴퓨터 프로그램 명령어들 및 데이터를 구체화하는데 적절한 정보 캐리어들은 예로서 반도체 메모리 장치들, 예를 들어, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM(Compact Disk Read Only Memory), DVD(Digital Video Disk)와 같은 광 기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-Optical Media), 롬(ROM, Read Only Memory), 램(RAM, Random Access Memory), 플래시 메모리, EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM) 등을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로조직에 의해 보충되거나, 이에 포함될 수 있다.
또한, 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용매체일 수 있고, 컴퓨터 저장매체 및 전송매체를 모두 포함할 수 있다.
본 명세서는 다수의 특정한 구현물의 세부사항들을 포함하지만, 이들은 어떠한 발명이나 청구 가능한 것의 범위에 대해서도 제한적인 것으로서 이해되어서는 안되며, 오히려 특정한 발명의 특정한 실시형태에 특유할 수 있는 특징들에 대한 설명으로서 이해되어야 한다. 개별적인 실시형태의 문맥에서 본 명세서에 기술된 특정한 특징들은 단일 실시형태에서 조합하여 구현될 수도 있다. 반대로, 단일 실시형태의 문맥에서 기술한 다양한 특징들 역시 개별적으로 혹은 어떠한 적절한 하위 조합으로도 복수의 실시형태에서 구현 가능하다. 나아가, 특징들이 특정한 조합으로 동작하고 초기에 그와 같이 청구된 바와 같이 묘사될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우에 그 조합으로부터 배제될 수 있으며, 그 청구된 조합은 하위 조합이나 하위 조합의 변형물로 변경될 수 있다.
마찬가지로, 특정한 순서로 도면에서 동작들을 묘사하고 있지만, 이는 바람직한 결과를 얻기 위하여 도시된 그 특정한 순서나 순차적인 순서대로 그러한 동작들을 수행하여야 한다거나 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안 된다. 특정한 경우, 멀티태스킹과 병렬 프로세싱이 유리할 수 있다. 또한, 상술한 실시형태의 다양한 장치 컴포넌트의 분리는 그러한 분리를 모든 실시형태에서 요구하는 것으로 이해되어서는 안되며, 설명한 프로그램 컴포넌트와 장치들은 일반적으로 단일의 소프트웨어 제품으로 함께 통합되거나 다중 소프트웨어 제품에 패키징 될 수 있다는 점을 이해하여야 한다.
한편, 본 명세서와 도면에 개시된 본 발명의 실시 예들은 이해를 돕기 위해 특정 예를 제시한 것에 지나지 않으며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 자명한 것이다.
100: 스케줄러

Claims (1)

  1. 스위치의 입력단들 각각에 대한 입력 아비터들을 이용하여 상기 입력단들에서 상기 스위치의 출력단들로 리퀘스트를 전송하는 단계;
    상기 출력단들 각각에 대한 출력 아비터들을 이용하여 상기 리퀘스트에 대한 그랜트를 상기 입력단들로 전송하는 단계; 및
    상기 출력단들에서 상기 입력단들로 상기 출력단들의 그랜트 정보를 전송하는 단계
    를 포함하는 스위치 스케줄링 방법.
KR1020170106607A 2017-08-23 2017-08-23 스위칭을 위한 스케줄링 방법 및 스케줄러 KR20190021630A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170106607A KR20190021630A (ko) 2017-08-23 2017-08-23 스위칭을 위한 스케줄링 방법 및 스케줄러

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170106607A KR20190021630A (ko) 2017-08-23 2017-08-23 스위칭을 위한 스케줄링 방법 및 스케줄러

Publications (1)

Publication Number Publication Date
KR20190021630A true KR20190021630A (ko) 2019-03-06

Family

ID=65761126

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170106607A KR20190021630A (ko) 2017-08-23 2017-08-23 스위칭을 위한 스케줄링 방법 및 스케줄러

Country Status (1)

Country Link
KR (1) KR20190021630A (ko)

Similar Documents

Publication Publication Date Title
US7596644B2 (en) Transmit rate pacing system and method
EP2902914B1 (en) Data transmission method and device
KR102269068B1 (ko) 스위칭을 위한 스케줄링 방법 및 스케줄러
US8065447B2 (en) Method and apparatus for determining priorities in direct memory access device having multiple direct memory access request blocks
US8819309B1 (en) Low latency bypass buffer
US11463369B2 (en) Communication device, communication method and computer readable medium
US7184443B2 (en) Packet scheduling particularly applicable to systems including a non-blocking switching fabric and homogeneous or heterogeneous line card interfaces
EP3326347B1 (en) Method and system for usb 2.0 bandwidth reservation
US11146494B2 (en) Scheduling prioritized traffic in a scrambled coded multiple access (SCMA) system
EP2363807B1 (en) Address encryption/rate pacing
KR102524566B1 (ko) 언더런을 방지하기 위한 패킷 메모리 시스템, 방법, 및 디바이스
US7023865B2 (en) Packet switch
CN109905331B (zh) 队列调度方法及装置、通信设备、存储介质
CN109947390B (zh) 缓冲器系统及其操作方法
WO2016132402A1 (ja) 通信フレーム転送装置および通信システム
US20210152493A1 (en) Centralized scheduling apparatus and method considering non-uniform traffic
CN112995058B (zh) 一种令牌的调整方法及装置
KR20190021630A (ko) 스위칭을 위한 스케줄링 방법 및 스케줄러
KR100468946B1 (ko) 간단한 파이프라인 방식을 이용한 입력 버퍼형 스위치 및그 경합 방법
US20140321279A1 (en) Random early drop based processing circuit and method for triggering random early drop based operation according to at least trigger event generated based on software programmable schedule
JP2006217600A (ja) 通信システムにおける送信キューデータの移動方法及び装置
EP2704381A1 (en) Queue control in a memory
CN104919769A (zh) 通过选择多个候选输出队列之一决定最终输出队列的调度器及相关方法
WO2021118516A1 (en) Age class based arbitration
EP3082298A1 (en) Slave device and method for controlling the same