KR100545634B1 - 파이프라인 방식의 힙 관리기 및 그의 우선순위 정렬 방법 - Google Patents
파이프라인 방식의 힙 관리기 및 그의 우선순위 정렬 방법 Download PDFInfo
- Publication number
- KR100545634B1 KR100545634B1 KR1020030092190A KR20030092190A KR100545634B1 KR 100545634 B1 KR100545634 B1 KR 100545634B1 KR 1020030092190 A KR1020030092190 A KR 1020030092190A KR 20030092190 A KR20030092190 A KR 20030092190A KR 100545634 B1 KR100545634 B1 KR 100545634B1
- Authority
- KR
- South Korea
- Prior art keywords
- node
- packet
- memory
- sub
- level
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6275—Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/15—Interconnection of switching modules
- H04L49/1515—Non-blocking multistage, e.g. Clos
- H04L49/1546—Non-blocking multistage, e.g. Clos using pipelined operation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
본 발명은 파이프라인 방식의 힙 관리기 및 그의 우선순위 정렬 방법에 관한 것이다.
본 발명에서는 10Gbps급 패킷 스케줄러에서 자신을 포함한 왼쪽 하위 노드들의 점유(Non-empty) 카운터를 이용하여 고속 정렬 기능을 수행한다. 구체적으로, 매 패킷 세그먼트 타임(32㎱)마다 2개의 패킷 세그먼트에 대한 우선순위 값을 받아 정렬을 수행하고, 1개의 가장 높은 우선순위 값을 가지는 패킷 세그먼트를 서비스한다. 따라서, 10Gbps 패킷 스케줄러에서 새로 입력되는 플로우의 패킷과 대기 중인 패킷을 동시에 받아 우선순위를 정렬할 수 있다. 이외에도, 연속적인 두 개의 패킷 세그먼트들 간에 메모리 충돌 없이 정렬 기능을 수행하며, 많은 우선순위 레벨에 대해 쉽게 확장할 수 있다. 또한, 작업 보존 방식과 비 작업 보존 방식으로 구성 가능하여 지연 경계(Delay Bound)나 지터(Jitter) 등 실시간 서비스 품질(QoS)의 보장을 제공할 수 있다.
파이프라인 힙 관리기, 우선순위, 패킷스케줄러, 고속 정렬
Description
도 1은 종래의 기술에 따른 전체 하위 서브노드의 비점유 카운터를 이용한 힙 관리기의 구성도이다.
도 2는 본 발명에 따른 자신을 포함한 왼쪽 하위 점유노드 카운터를 이용한 힙 관리기의 상위 레벨 구성도이다.
도 3a 및 도 3b는 본 발명에 따른 도 2에 도시된 힙 관리기의 서브노드 트리의 내부 구성도와 각 노드의 데이터 구조도이다.
도 4a 내지 도 4d는 각각 본 발명에 따른 도 2에 도시된 자신을 포함한 왼쪽 하위 점유노드 카운터를 이용한 힙 관리기의 셀 입력, 셀 출력 및 셀 입출력 과정을 보이는 상세 흐름도이다.
도 5는 본 발명에 따른 힙 관리기 하드웨어 상위 레벨의 간략한 입출력 인터페이스 구성도이다.
도 6은 본 발명에 따른 도 5에 도시된 힙 관리기 하드웨어의 논리적인 상위 레벨 구성도이다.
도 7a 및 도 7b는 본 발명에 따른 도 6에 도시된 파이프라인 방식의 서브 트리 힙 관리기 하드웨어의 상세 구성도이다.
본 발명은 패킷 스케줄러에서 정렬 기능을 수행하는 힙 관리기에 관한 것으로, 보다 구체적으로, 파이프라인 방식의 고속 힙 관리기 및 그의 우선순위 정렬 방법에 관한 것이다.
광대역 고속 패킷 스위치 네트워크나 라우터들은 상위 레벨(Top-level)의 품질 보장을 제공하기 위해 플로우별 큐잉(Per-Flow Queuing) 방식을 사용한다. 이러한 플로우별 큐잉 방식은 각 플로우별 큐에 존재하는 패킷 세그먼트들(Packet segment)이 매 서비스 시간마다 경쟁하여 우선순위별로 하나의 출력 링크로 전송된다. 또한, 10Gbps 이상에서 우선순위별 정렬 기능 및 전송을 하기 위해서는 파이프라인 기반의 실시간 하드웨어 정렬 장치가 요구된다.
이러한 하드웨어 정렬 장치에서 사용하는 방식으로는 2진 트리 비교기 기반의 우선 큐(Binary-tree of Comparator based Priority Queue) 방식, 시프트-레지스터 기반의 우선 큐(Shift-Register based Priority Queue) 방식, 수축-어레이 기반의 우선 큐(Systolic-array based Priority Queue) 방식, 캘린더 큐(Calendar Queue) 방식, 및 힙 데이터 구조(Heap Data Structure) 방식 등이 있다. 여기서, 상기 2진 트리 비교기 기반의 우선 큐 방식, 시프트-레지스터 기반의 우선 큐 방식, 및 수축-어레이 기반의 우선 큐 방식은 확장성이 나쁘고 하드웨어 구현이 복잡하여 10Gbps 이상의 고속 정렬 장치에는 사용되지 않고 있다. 현재 실시간 고속 정렬 장치에는 상기 캘린더 큐 방식과 힙 데이터 구조 방식을 주로 사용하고 있다.
이러한 캘린더 큐 방식은 큐의 개수가 플로우별 서비스 속도(rate)에 따라 달라지므로, 출력 포트별/클래스별 스케줄러를 고려할 때, 확장성이 뛰어나지 않다. 따라서 작은 수의 큐를 가진 우선순위 정렬에 주로 사용된다. 반면에 힙 데이터 구조 방식은 큐의 개수가 플로우 개수에만 비례하므로 확장성이 뛰어나며, 임의의 서비스 속도를 플로우가 가질 수 있으므로 보다 완벽한 품질 보장을 제공한다. 종래 기술에 따른 힙 데이터 구조는 1개의 우선순위 값을 입력받아 정렬하고, 최상위 노드의 우선순위 값을 출력하는 구조로 되어 있다.
그러나 패킷 스위치 네트워크나 라우터에서는, 스케줄러가 힙 관리기에서 동시에 2개의 우선순위 값을 받아 정렬하고, 최상위 노드의 우선순위 값을 출력할 수 있는 힙 데이터 구조 처리 방안 및 구조가 요구된다. 이때, 상기 2개의 우선순위 값은 한 셀 타임에 힙 관리기로 입력되는 새로운 플로우의 우선순위 값과 서비스를 수행한 플로우의 대기 중인 우선순위 값이 해당된다.
종래 기술로서, 대한민국 특허출원번호 제10-038359호(2003.4.25 출원)에는 "평형화된 파이프라인 힙을 이용한 라우터에서의 출력측 데이터 처리 방법"이 개시되어 있다. 이 종래 기술은 인터넷에서 데이터 패킷을 전달하는데 사용하는 라우터에서 사용되는 큐의 데이터를 처리할 경우, 평형 파이프라인 힙(balanced pipelined heap)을 이용하여 아웃풋 대기열 라우터의 데이터를 신속하게 처리할 수 있도록 한 평형 파이프라인 힙을 이용한 라우터에서의 아웃풋 대기열 데이터 처리 방법에 관한 것으로서, 라우터 출력부에 패킷이 입력되면 스케줄러에 의해 우선순 위를 할당하고, 할당된 우선순위 값은 파이프라인 힙으로 전송하며 패킷 데이터는 큐 메모리에 저장한 후, 각 노드의 용량에 따라 정렬하여 가장 우선순위가 높은 패킷을 전송하는 라우터 구조를 제공하고 있다.
또한, 미합중국 특허번호 제6469983호(2002. 08. 29)에는 "Data packet transmission scheduling using a partitioned heap"이 개시되어 있다. 이 종래 기술은 데이터 통신 네트워크의 스케줄러에서 힙 데이터 구조를 이용하여 우선순위별로 패킷을 서비스하는 방법으로서, 힙 데이터 정렬은 상위 노드에서 하위 노드로 그리고 왼쪽 노드에서 오른쪽 노드로 순서적으로 평형화되게 채움으로써, 비점유 노드는 가장 최근에 저장된 노드를 기준으로 선택된다. 즉, 노드 10번이 가장 최근에 저장되었다면 새로 입력되는 패킷은 우선순위 정렬을 수행하고 11번 노드에 저장한다. 따라서 동일한 우선순위를 가진 패킷들은 각 패킷의 마감 시간(Finish Time)을 비교하여 정렬하고, 매 클럭 사이클에 1개의 데이터 입출력을 서비스를 제공함으로써, 힙이 유효한 노드를 최근에 저장된 노드의 이진(binary) 정보를 이용하여 찾는 정렬 구조를 제공하고 있다.
한편, 도 1은 종래의 기술에 따른 전체 하위 서브노드의 비점유 카운터를 이용한 힙 관리기의 구성도이다.
도 1을 참조하면, 힙 관리기(100)에서 각 노드들은 자신의 전체 하위 비점유(Empty) 노드 수를 나타내는 카운터를 이용하여 힙 정렬을 수행한다. 상기 힙 관리기(100)는 크게 토큰 정렬(Token Array: "T") 모듈(101)과 이진 정렬(Binary Array: "B") 모듈(102)로 구성된다. 상기 토큰 정렬 모듈(101)은 이 진 정렬 모듈(102)에 입력되는 우선순위(Priority)의 값(104)이나 위치(105)를 나타내며, 이진 정렬 모듈은 힙을 구성하는 각 노드의 값(108) 및 상태(107)를 나타낸다.
여기서, 상기 토큰 정렬 모듈(101)은 동작(Operation: 103), 값(Value: 104) 및 위치(Position: 105)로 이루어지는 3개의 필드로 구성된다. 상기 동작 필드(103)는 이진 정렬 모듈(102)의 각 레벨을 나타내고, 상기 값 필드(104)는 이진 정렬 모듈(102) 메모리에 저장될 우선순위 값(108)을 나타내며, 상기 위치 필드(105)는 이진 모듈(102) 메모리에 입력되는 어드레스를 나타낸다.
마찬가지로, 이진 정렬 모듈(102)도 활성 상태(Active: 107), 값(Value: 108) 및 용량(Capacity: 109)으로 이루어지는 3개의 필드로 구성된다. 상기 활성 상태 필드(107)는 각 노드에 유효한 우선순위 값이 채워져 있는지를 나타내고, 값 필드(108)는 각 노드가 활성화 상태일 때, 노드에 채워진 우선순위 값을 나타내며, 용량 필드(109)는 서브노드들에서 비활성(Inactive) 상태 노드의 개수를 나타낸다.
전술한 구조를 갖는 힙 관리기에서, 새로운 우선순위 값이 하위 비점유 노드 카운터를 이용한 힙 관리기(100)에 입력되어 새로운 노드를 점유할 때에는 그 점유된 노드의 모든 상위 노드의 용량 카운터 값(109)들이 1씩 감소한다. 반면에 하나의 노드의 플로우가 제거될 때는 그 제거되는 노드의 모든 상위 노드의 용량 카운터 값(109)들이 1씩 증가한다.
여기서, 이진 정렬 모듈(102)에 새로운 값이 입력되면 비활성화(inactive) 상태의 노드를 찾는다. 상기 비활성화 노드를 찾기 위한 유효한 경로는 용량 필드(109)를 보고 찾는다. 즉, 용량 필드(109)가 0보다 크면 우선순위 값을 저장할 수 있는 유효한 경로가 된다.
그러나 이러한 구조에서는 우선순위 정렬을 위해서 각 노드가 자신의 전체 하위 노드에 몇 개나 비점유 노드가 있는지 알아야 되고, 반드시 오른쪽 왼쪽 하위 노드 2개의 용량 필드(109)를 읽어 비교한 후에 유효한 경로를 찾아야만 한다. 또한, 입력되는 우선순위 값은 상위 레벨부터 왼쪽 노드를 기준으로 순서적으로 저장되므로, 3개 이상의 우선순위 값(104)이 힙 관리기(100)에 입력되면 반드시 하위 노드는 비교기에 의해 비교를 수행한 후에 정렬된다. 따라서 모든 레벨의 각 노드는 용량 필드(109)를 유지해야 하고, 또한 각 레벨마다 토큰 정렬 모듈(101)을 그대로 유지해야 한다.
따라서 현재 수천 내지 수만 개의 큐를 이용한 큐잉 방식에 있어서, 10Gbps 속도의 고속 우선순위 정렬 기능을 수행하여 실시간 서비스의 지연 경계를 보장하고, 2개의 데이터를 동시에 받아 정렬할 수 있는 새로운 힙 관리기 하드웨어 장치 기술이 요구된다.
그러므로, 본 발명이 이루고자 하는 기술적 과제는 종래 기술의 문제점을 해결하기 위한 것으로, 소정 속도(예를 들어, 10Gbps)에서 마감시간에 따라 패킷 세그먼트들을 우선순위별로 정렬하여 실시간 트래픽 서비스의 지연 경계를 보장할 수 있는 파이프라인 방식의 고속 힙 관리기 및 이를 이용하는 우선순위 정렬 방법을 제공하기 위한 것이다.
또한, 본 발명의 다른 기술적 과제는 2개의 패킷 세그먼트를 받아 정렬 기능을 수행하는 힙 데이터 구조를 갖는 파이프라인 방식의 힙 관리기 및 그의 우선순위 정렬 방법을 제공하기 위한 것이다.
이러한 기술적 과제를 달성하기 위한 본 발명의 특징에 따른 힙 관리기는 패킷 스케줄러에서 입력되는 패킷 세그먼트를 우선 순위에 따라 정렬하는 힙 관리기에 있어서, 제1 레벨에 형성되는 최상위 노드; 및 제2 레벨 내지 제n (n은 2보다 큰 정수) 레벨의 각 레벨에 형성되어 각각 입력 패킷 세그먼트를 받아들이는 다수의 노드를 포함하고, 하나의 패킷 세그먼트를 상기 최상위 노드로 전송하여 출력되도록 하는 제1 및 제2 서브노드 트리를 포함하고, 상기 제1 및 제2 서브 노드 트리의 각 노드는 자신을 포함한 제1 방향의 하위 레벨 점유 노드 수를 나타내는 카운터를 포함한다.
여기서, 상기 제1 및 제2 서브노드 트리의 각 노드는 각 노드들로 입력된 패킷 세그먼트의 마감시간 값을 표시하는 마감시간 카운터 필드; 각 레벨의 각 노드의 위치를 나타내는 어드레스 필드; 및 하위 레벨 점유노드 개수를 나타내는 카운터 필드를 포함하는 데이터 필드를 가질 수 있다. 이 때, 데이터 필드는 노드의 데이터들이 유효함을 나타내는 유효(Valid) 필드; 상기 카운터 오버플로우에 따른 정렬 기능을 제공하는 순환 중복(wrap-around) 필드; 스위치 포트를 나타낸 포트 필드; 및 각 포트내의 클래스 안에서 플로우를 구분하는 큐 식별자를 나타내는 클래스필드를 더 포함할 수 있다. 특히, 상기 마감시간 카운터 필드에 저장되는 마감시 간 카운터 비트와 상기 순환 중복 필드에 저장되는 순환 중복 비트는 상기 패킷 세그먼트들 마감순위 값으로 사용되며, 상기 순환 중복 비트는 상기 카운터의 오버플로우(overflow)가 발생될 경우, 잘못된 비교로 인한 우선순위 정렬 수행을 방지하기 위한 것이다. 한편, 상기 각 노드는 상기 카운터의 값과 상기 어드레스 필드에 저장된 어드레스 정보에 따라 패킷 세그먼트의 입출력을 수행한다.
이러한 특징을 가지는 힙 관리기에서, 입력 모드시, 상기 제1 및 제2 서브노드 트리는 자신의 트리안에서 최상위 노드인 서브 최상위 노드의 카운터값과 입력되는 패킷 세그먼트의 마감 시간값에 따라 패킷 세그먼트를 저장할 유효한 비점유 노드를 찾아서 상기 패킷 세그먼트를 저장할 수 있다.
또한, 출력 모드시, 상기 제1 및 제2 서브노드 트리는 자신의 노드 중에서 최상위 노드인 서브 최상위 노드에 저장된 패킷 세그먼트의 마감 시간을 서로 비교한 후, 마감 시간이 적은 패킷 세그먼트를 상기 최상위 노드로 출력할 수 있다.
또한, 입출력 모드시, 상기 제1 및 제2 서브노드 트리는 자신의 트리안에서 최상위 노드인 서브 최상위 노드의 카운터값과 입력되는 패킷 세그먼트의 마감 시간값에 따라 패킷 세그먼트를 저장할 유효한 비점유 노드를 찾아서 상기 패킷 세그먼트를 저장하고, 각 트리의 서브 최상위 노드에 저장된 패킷 세그먼트의 마감 시간을 서로 비교한 후, 마감 시간이 적은 패킷 세그먼트를 상기 최상위 노드로 출력할 수 있다.
또한, 본 발명의 다른 특징에 따른 힙 관리기는 2개의 데이터를 받고 1개의 데이터를 서비스하도록 2개의 레벨 단위의 파이프라인 구조로 이루어지며, 상기 입 력되는 데이터를 저장하는 제1 및 제2 서브 관리기; 상기 제1 및 제2 서브 관리기의 제1 및 제2 데이터의 값을 비교하는 비교기; 및 상기 비교기의 결과에 따라 제1 또는 제2 데이터를 선택하여 저장하고, 서비스 조건에 따라 선택된 데이터를 출력하는 최상위 노드 레지스터를 포함한다.
여기서, 상기 제1 및 제2 서브노드 관리기는 큐를 구성하는 n 레벨별 메모리; 패킷 세그먼트 타임마다 설정수를 카운트하며, 연속하는 2 레벨 단위의 메모리에 대하여 카운트를 수행하는 다수의 2 레벨 카운터; 동작 모드에 따라 상기 메모리에 저장된 값들을 비교하고 비교 결과에 따라 메모리에 저장된 값을 선택적으로 출력하는 n 레벨별 비교기; 상기 2레벨 카운터의 값에 따라 상기 연속하는 2레벨 단위의 메모리에 대한 읽기/쓰기 동작을 제어하며, 입출력 동작에 따라 상기 2레벨 카운터의 값을 증감시키는 다수의 2 레벨 제어기를 포함할 수 있다.
특히, 상기 비교기는 입력 모드에서는 서로 인접한 메모리에 저장된 값들을 비교하고, 출력 모드에서는 동일한 메모리에 저장된 값들을 비교하며, 그리고 입출력 모드에서는 서로 인접한 메모리에 저장된 값과 동일한 메모리에 저장된 두개의 값인 총 3개의 값들을 비교할 수 있다. 이 때, 상기 비교기는 메모리에 저장된 패킷 세그먼트들의 마감시간 값들을 서로 비교한다.
한편, 각 레벨별 메모리는, 출력 동작을 설정 클럭 사이클 안에 수행하도록 레지스터로 이루어지는 L1 메모리; 2개의 큐를 구성하는 DPRAM 메모리를 사용하는 L2 메모리; 4개의 큐를 구성하는 DPRAM 메모리를 사용하는 L3 메모리; 8개의 큐를 구성하는 DPRAM 메모리를 사용하는 L4 메모리; 16개의 큐를 구성하는 DPRAM 메모리 를 사용하는 L5 메모리; 32개의 큐를 구성하는 DPRAM 메모리를 사용하는 L6 메모리; 64개의 큐를 구성하는 DPRAM 메모리를 사용하는 L7 메모리; 및 128개의 큐를 구성하는 DPRAM 메모리를 사용하는 L8 메모리를 포함할 수 있다. 이 때, 상기 2 레벨 제어기는 상기 L1 메모리 및 L2 메모리의 읽기/쓰기 동작을 제어하는 제1 제어기; 상기 L3 메모리 및 L4 메모리의 읽기/쓰기 동작을 제어하는 제2 제어기; 상기 L5 메모리 및 L6 메모리의 읽기/쓰기 동작을 제어하는 제3 제어기; 상기 L7 메모리 및 L8 메모리의 읽기/쓰기 동작을 제어하는 제4 제어기로 이루어진다.
또한, 본 발명의 다른 특징에 따른 우선 순위 정렬 방법은, 제1 레벨에 형성되는 최상위 노드; 및 제2 레벨 내지 제n 레벨의 각 레벨에 형성되는 다수의 노드를 포함하고, 각 노드는 자신을 포함한 제1 방향의 하위 레벨 점유 노드 수를 나타내는 카운터를 포함하는 제1 및 제2 서브노드 트리를 포함하는 구조로 이루어지는 힙 관리기의 우선 순위 정렬 방법에 있어서, a) 패킷 세그먼트의 셀 입력과 상기 제1 및 제2 서브노드 트리의 최상위 노드인 서브 최상위 노드의 상태에 따라 입력 동작, 출력 동작, 및 입출력 동작을 선택하는 동작 모드 선택 단계; b) 상기 제1 또는 제2 서브노드 트리의 서브 최상위 노드값이 존재하지 않거나 또는 존재하나 노드값이 동작 모드에 따른 조건을 만족하지 않고 패킷 세그먼트만 입력된 경우에, 패킷 세그먼트를 비점유 노드로 저장하는 입력(Enqueue) 과정을 수행하는 단계; c) 상기 힙 관리기에 입력된 패킷이 없고, 상기 제1 및 제2 서브노드 트리의 서브 최상위 노드값이 존재하고, 상기 노드값이 동작 모드에 따른 조건을 만족할 경우에, 상기 제1 및 제2 서브노드 트리의 서브 최상위 노드값을 비교하여 작은 값의 마감 시간을 가진 패킷 세그먼트를 상기 최상위 노드로 전송하는 출력(Dequeue) 과정을 수행하는 단계; 및 d) 상기 힙 관리기에 입력된 패킷이 있고, 제1 또는 제2 서브노드 트리의 서브 최상위 노드값이 존재하며, 상기 노드값이 동작 모드에 따른 조건을 만족할 경우에 수행되는 입출력(En-Dequeue) 과정을 수행하는 단계를 포함한다.
이외에도, 상기 힙 관리기에 패킷 세그먼트들이 존재하면 마감시간 안에 순서적으로 정렬된 패킷 세그먼트들을 계속 전송하는 작업 보존 방식, 및 주어진 마감시간이 되는 패킷 세그먼트들만 전송하는 비 작업 보존 방식 중에서 어느 하나를 설정하는 초기화 단계를 더 포함할 수 있다.
이러한 우선 순위 정렬 방법에서, 패킷 세그먼트 타임마다 패킷 세그먼트가 입력되는 b) 단계 또는 패킷 세그먼트가 출력되는 c) 단계 또는 패킷 세그먼트가 입출력되는 거나 아니면 동시에 입출력되는 d) 단계가 수행된다.
한편, 상기 b) 단계는 b-1) 제2 서브노드 트리에서 새로운 패킷 세그먼트가 입력되면, 자신의 트리내의 최상위 노드인 서브 최상위 노드의 카운터값을 판단하여 서브 최상위 노드가 비어있는지를 판단하는 단계; b-2) 상기 서브 최상위 노드가 비어있는 경우에 상기 입력된 패킷 세그먼트를 상기 서브 최상위 노드로 전송하여 저장하는 단계; b-3) 상기 서브 최상위 노드가 비어있지 않은 경우, 패킷 세그먼트를 하위 노드로 전송할 경로를 선택하는 단계; b-4) 상기 입력된 패킷 세그먼트의 마감시간과 상기 서브 최상위 노드에 저장된 패킷 세그먼트의 마감시간을 비교하여 보다 작은 마감시간을 가지는 패킷 세그먼트를 상기 서브 최상위 노드에 저장하고, 보다 큰 마감 시간을 가지는 패킷 세그먼트를 선택된 경로로 전송하여 하 위 노드에 저장시키는 단계를 포함할 수 있다.
또한, 상기 c) 단계는 c-1) 제1 및 제2 서브노드 트리의 서브 최상위 노드에 저장된 패킷 세그먼트의 마감시간을 비교하여, 보다 작은 마감 시간을 가지는 패킷 세그먼트를 상기 최상위 노드로 전송하여 출력되도록 하는 단계; 및 c-2) 상기 작은 마감 시간을 가지는 패킷 세그먼트가 저장되어 있던 서브노드 트리가 비어 있는 자신이 서브 최상위 노드를 채우기 위한 재정렬을 수행하는 단계를 포함할 수 있다. 이 경우, 상기 c-2) 단계는 상기 서브노드 트리의 서브 최상위 노드를 기준으로 제1 방향 및 제2 방향에 위치된 하위 노드의 카운터값을 비교하여 하위 노드의 점유 여부를 판단하는 단계; 및 제1 방향 및 제2 방향에 위치한 하위 노드에 패킷 세그먼트가 존재하여 점유되어 있는 경우, 상기 제1 및 제2 방향의 하위 노드에 각각 저장된 패킷 세그먼트의 마감시간을 비교하여, 보다 적은 마감 시간을 가지는 패킷 세그먼트를 상기 서브 최상위 노드로 전송하여 저장하는 단계를 포함할 수 있다.
이하, 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
본 발명에서는 파이프라인 힙으로 입력된 우선순위 값을 자신을 포함한 왼쪽 하위 노드의 점유 카운터 정보를 이용하여 정렬한 후 가장 우선순위가 높은 패킷을 전송하는 10Gbps급 힙 관리기를 제공한다. 또한, 각 클래스별로 512개의 플로우의 큐에 대해 우선순위 정렬 기능을 수행하는 힙 관리기를 제공하여, 동시에 2개의 큐에서 입력되는 패킷 세그먼트들을 주어진 마감시간에 따라 정렬하게 된다. 상기 2개의 큐에 존재하는 패킷 세그먼트에 대한 우선순위를 제공하기 위해 힙 관리기는 총 9레벨로 구성되며, 1 레벨에 1개의 최상위 노드를 두고 나머지 8 레벨은 각각 256개의 큐를 가진 서브노드 트리 힙 관리기로 구성된다. 여기서, 레벨 1의 최상위 노드는 2개의 서브노드 트리의 최상위 노드값을 읽어 마감시간이 적은 노드의 패킷 세그먼트를 출력 서비스 전까지 대기하는 레지스터로 구성된다. 또한 2개의 서브노드 트리의 마감시간을 비교하기 위한 비교기가 존재한다. 또한, 각 서브노드 트리는 8레벨 256개의 노드로 구성되며, 최상위 노드는 마찬가지로 하나의 레지스터로 구성되며, 나머지 큐들의 메모리는 한 클럭 사이클에 2개의 데이터를 입출력할 수 있는 DPRAM으로 구성된다. 또한 각 레벨마다 한 개의 비교기가 구성되고, 상기 서브노드 트리는 한 개의 패킷 입력과 한 개의 패킷 출력 구조로 구성된다.
그러므로 본 발명은 10Gbps 패킷 스케줄러에서 각 클래스별로 256개의 플로우에 대해 마감시간에 따른 우선순위 고속 정렬 기능을 수행하고, 특히 동시에 2개의 패킷 세그먼트를 입력받아 정렬 기능을 수행하게 되고, 또한 마감시간 우선순위별로 서비스를 수행함으로서 실시간 트래픽에 대한 지연 경계를 보장하게 된다.
도 2는 본 발명의 바람직한 실시 예에 따른 힙 관리기의 노드 구조도이다.
도 2에 도시된 바와 같이, 본 발명의 실시 예에 따른 힙 관리기(200)는 자신을 포함한 왼쪽 하위 점유노드 카운터를 이용한 힙 관리기로서, 레벨 1에 하나의 최상위 노드(201)와 레벨 2와 9 사이에 256개의 노드를 가진 2개의 제1 및 제2 서 브노드 트리(204, 205)로 구성된다. 여기서는 설명의 편의를 위하여, 제1 서브노드 트리를 "왼쪽 서브노드 트리", 제2 서브노드 트리를 "오른쪽 서브노드 트리"라고 명명한다.
이러한 힙 관리기(200)에 입력되는 패킷 세그먼트들의 마감순위 값(206, 207)은 두 개의 서브노드 트리(204, 205)로 입력되어 정렬을 수행한다. 상기 입력되는 패킷 세그먼트들의 마감순위 값(206)들은 하위 점유노드(Non-Empty) 카운터를 이용한 힙 관리기(200)의 왼쪽 서브노드 트리(204)부터 우선순위별로 채워진다. 만약, 동시에 2개의 큐로부터 패킷 세그먼트들의 마감순위 값(206, 207)이 입력되면, 하나는 왼쪽 서브노드 트리(204)로 입력되고, 나머지 하나는 오른쪽 서브노드 트리(205)에 입력된다. 여기서, 최소의 마감순위 값을 가진 패킷 세그먼트의 출력(208)은 최상위 노드(201)에서 서비스되며, 매 셀 타임마다 서브노드 트리의 최상위 값들(202, 203)을 비교하여, 우선순위가 높은 노드의 값을 최상위 노드(201)에 저장한다. 이러한 모듈의 상세한 설명은 후술할 도 3을 참조하기로 한다.
도 3a는 본 발명의 바람직한 실시 예에 따른 자신을 포함한 왼쪽 하위 점유노드 카운터를 이용한 힙 관리기의 서브노드 트리의 내부 구성도이고, 도 3b는 도 3a에 도시된 서브노드 트리의 노드 구성도이다.
도 3a에 도시된 바와 같이, 힙 관리기는 이진-트리 모듈로만 구성된다. 또한 자신을 포함한 하위 왼쪽 노드들의 점유 카운터(302)를 이용하여 패킷 세그먼트 값을 저장할 유효한 경로를 찾기 때문에, 전술한 도 1에 설명된 모든 노드에 용량 카운터(109) 필드를 유지하지 않는다(도면부호 309 참조).
도 3b를 참조하면, 상기 자신을 포함한 왼쪽 하위 점유노드 카운터를 이용한 힙 관리기의 서브노드 트리(300)에서, 각 노드는 자신의 메모리 어드레스 값(313)과 패킷 세그먼트의 마감시간 값을 포함하며, 또한 자신을 포함하여 자신의 하위 왼쪽 트리에 몇 개의 노드가 점유되어 있는지를 나타내는 카운터 값(314) 등을 포함한다. 어드레스 값(313)에 "0"(303)을 추가하면 왼쪽 하위 노드의 어드레스를 나타내고, "1"(304)을 추가하면 오른쪽 하위 노드의 어드레스를 나타낸다.
도 3a에서, 새로운 마감시간 값(311, 312)이 입력되어 새로운 노드를 점유할 때는, 그 점유된 노드의 모든 상위 노드의 카운터 값(314)들이 1씩 증가된다. 반면에 하나의 노드의 우선순위 값이 제거될 때는, 그 제거되는 노드의 모든 상위 노드의 카운터 값(314)들이 1씩 감소한다.
상기 하위 점유노드(Non-Empty) 카운터(314)를 이용한 힙 관리기(B200)의 정렬 규칙은 다음과 같다.
상기 수학식 1은 상위 노드의 카운터(302)의 값이 하위 노드의 카운터(305, 306)의 값보다 항상 크다는 걸 의미한다. 수학식 2는 상위 노드(301)와 하위 노드(307, 308)에 모두 패킷 세그먼트의 마감시간 값(311, 312)이 점유될 때, 하위 노드(307, 308)의 마감시간의 값(312)이 상위 노드(301)의 마감시간 값(312)보다 크다는 걸 의미한다. 수학식 3은 하위 노드(307, 308)에 패킷 세그먼트의 마감시간 값이 점유되어 있으면, 상위 노드(301)의 값도 반드시 점유된다는 것을 의미한다. 수학식 4는 각 노드의 카운터 값(314)이 자신의 왼쪽 하위 노드의 개수보다 적으면 왼쪽 빈 노드로 패킷 세그먼트의 마감시간 값을 보내기 위해 어드레스 값을 "0"(303)으로 설정하는 것을 의미한다. 이와는 반대로 수학식 5는 각 노드의 카운터 값(314)이 자신의 왼쪽 하위 노드의 개수와 같으면 왼쪽 빈 노드가 없으므로 패킷 세그먼트의 마감시간 값을 오른쪽으로 보내기 위해 어드레스 값을 "1"(304)로 설정하는 것을 의미한다. 수학식 6은 왼쪽 하위 노드(307)로 패킷 세그먼트의 마감시간 값을 보내면 상위 노드의 카운터(302)의 값을 1증가시킴을 의미한다. 이와는 반대로 수학식 7은 오른쪽 하위 노드로 패킷 세그먼트의 마감시간 값을 보내면 카운터(302)의 값을 그대로 유지함을 의미한다.
본 발명에 따른 힙 관리기(200)는 왼쪽 노드(307)들부터 채워 나가기 때문에 플로우 수가 전체 노드 개수의 절반 이하일 경우, 오른쪽 노드들(308)을 사용하지 않으므로 메모리 액세스 횟수를 줄일 수 있으며, 그에 따라 정렬을 용이하게 수행하게 된다. 이 모듈의 패킷 세그먼트의 마감시간 값 입출력에 관한 상세한 설명은 후술할 도 4를 참조하기로 한다.
도 3b를 다시 참조하면, 상기 힙 관리기(200)의 노드들의 메모리 구조는 65 비트로 구성된다. 최상위 비트(310)는 이 패킷 정보가 유효함을 나타낸다. 포트 (316) 필드는 물리적인 스위치 포트를 나타내며, 클래스(315) 필드는 각 포트 내의 클래스 안에서 플로우들을 구분하는 큐 식별자를 나타낸다. 또한, 클래스 (315)와 포트(316) 필드를 조합하여 전체 스케줄러에서 각 플로우의 큐 식별자(Queue ID)로 사용된다. 상기 카운터 비트(314)와 어드레스 비트(313)는 힙 관리기(200)안에서의 유효한 경로를 찾는데 사용된다. 또한, 마감시간 카운터 비트(312)와 순환 중복(Warp Around) 비트(311)는 패킷 세그먼트들 마감순위 값으로 사용된다. 상기 순환 중복 비트(311)는 카운터(314)의 오버플로우(overflow)가 발생될 경우, 잘못된 비교로 우선순위 정렬을 수행하는 것을 방지한다. 상기 힙 관리기(200)의 서브노드 트리(300) 안에서는 우선순위 정렬을 수행하기 위해 마감시간 카운터 비트(312)와 순환 중복 비트(311), 카운터 비트(314)와 어드레스 비트(313)만을 사용한다. 상기 힙 관리기 안에서 마감시간 카운터 비트(312)와 순환 중복 비트(311)를 이용한 우선순위 비교는 다음 표 1과 같다.
A (Warp around) | B (Warp around) | 대소 관계 (Deadline) |
00 | 00 | 하위 22비트 마감시간 비교 |
01 | 01 | 하위 22비트 마감시간 비교 |
10 | 10 | 하위 22비트 마감시간 비교 |
00 | 01 | A > B |
00 | 10 | A > B |
01 | 00 | A < B |
01 | 10 | A > B |
10 | 00 | A < B |
10 | 01 | A < B |
다음에는 본 발명의 실시 예에 따른 하위 왼쪽 점유노드 카운터를 이용한 힙 관리기의 패킷 세그먼트 입력(Enqueue), 패킷 세그먼트 출력(Dequeue), 패킷 세그먼트 입출력(En-Dequeue) 처리 과정에 대하여 설명한다.
도 4a 내지 도 4는 힙 관리기의 초기화 과정, 패킷 세그먼트 입력 과정, 출력 및 입출력 과정을 각각 나타낸 흐름도이다.
본 발명의 실시 예에 따른 힙 관리기는 크게 작업 보존 방식과 비 작업 보존 방식으로 구현된다. 작업 보존 방식은 큐 안에 패킷 세그먼트들이 존재하면, 마감시간 안에 순서적으로 정렬된 패킷 세그먼트들을 계속 전송하는 방식으로서, 이때, 마감시간을 초과하는 패킷 세그먼트들은 손실(loss) 처리된다. 비 작업 보존 방식은 주어진 마감시간이 되는 패킷 세그먼트들만 전송하는 방식으로서, 사전에 약속된 지연 경계나 지터 등의 요구 사항을 정확히 보장한다(hold).
힙 관리기는 도 4a에 도시된 초기화 과정에서 둘 중의 하나의 방식으로 설정된다. 본 발명의 실시 예에 따른 힙 관리기에는 매 세그먼트 타임마다 패킷 세그먼트가 입력되거나 또는 출력되거나 아니면 동시에 입출력된다.
먼저, 입력(Enqueue) 동작은 서브노드 트리의 최상위 노드값이 존재하지 않거나 또는 존재하나 동작 모드에 따른 조건을 만족하지 않고 패킷 세그먼트만 힙 관리기의 큐로 입력된 경우에 수행된다(S401).
그리고 출력(Dequeue) 동작은 힙 관리기의 큐에 입력된 패킷이 없고, 서브노드 트리의 최상위 노드값이 존재하고, 동작 모드에 따른 조건을 만족할 경우에 수행된다(S408). 이때, 두 개의 서브노드 트리의 최상위 노드값을 비교(S402)하여 작은 값의 마감시간을 가진 패킷 세그먼트를 전송한다(S403, S404).
또한 입출력(En-Dequeue) 동작은 입력된 패킷이 있고(S401), 그리고 서브노드 트리의 최상위 노드값이 존재하며, 동작 모드에 따른 조건을 만족할 경우에 수행된다(S408).
상기 힙 관리기의 동작 모드 선택 단계(S409)는 위에 기술된 바와 같은 셀 입력(S401)과 서브노드 트리의 최상위 노드의 상태(S402)에 따라 입력 동작, 출력 동작, 및 입출력 동작을 선택한다. 또한, 서브노드 트리의 최상위 노드 중에서 왼쪽 노드가 서비스되면, 왼쪽 트리만 출력 동작을 수행하며(S403), 그렇지 않고 오 른쪽 노드가 서비스되면, 오른쪽 트리만 출력 동작을 수행한다(S404).
도 4b를 참조하여, 힙 관리기의 입력 동작(Enqueue) 처리 흐름을 보다 상세하게 설명하면 다음과 같다.
새로운 패킷 세그먼트가 입력되면, 최상위 노드의 카운터 정보를 읽는다 (S410). 만일, 카운터가 "0"이면 최상위 노드가 비어 있으므로 최상위 노드에 저장하고, 다음 세그먼트 타임을 기다린다(S411). 그렇지 않고 셀 카운터가 "0"보다 크면 패킷 세그먼트를 전송할 하위 노드 경로를 선택한다(S412a). 이러한 경로 선택(S412)은 노드 점유 카운터 값이 서브노드 개수와 동일하면 왼쪽 트리의 노드는 모두 채워진 상태이므로 오른쪽 경로를 선택하고(S414), 그렇지 않으면 왼쪽 경로를 선택한다(S413). 상기 경로 선택(S412a)과 동시에 입력된 패킷 세그먼트의 마감시간 값과 최상위 노드의 마감시간 값을 비교하여(S412b), 마감시간 값이 작은 패킷 세그먼트를 최상위 노드에 저장하고, 큰 마감시간 값을 갖는 패킷 세그먼트를 선택된 경로의 하위 노드로 전송한다(S416). 상기 패킷 세그먼트가 왼쪽 하위 노드로 전송되면, 최상위 노드의 카운터는 1을 증가시킨다(S415). 만일, 하위 노드의 카운터 값이 "0"이면(S417), 최상위 노드에서 전송된 패킷 세그먼트를 저장하고, 다음 세그먼트 타임까지 기다린다(S418). 그렇지 않으면 다시 하위 노드 경로 선택을 수행하며(S419), 패킷 세그먼트가 한 노드에 저장될 때까지 반복하게 된다.
도 4c를 참조하여, 힙 관리기의 출력 동작(Dequeue) 처리 흐름을 보다 상세하게 설명하면 다음과 같다.
먼저, 상기 서브노드 트리의 최상위 노드의 카운터 값을 읽는다(S420). 상 기 카운터 값이 둘 다 "0"이면, 오른쪽 왼쪽 최상위 노드가 모두 비어 있으므로 다음 세그먼트 타임을 기다린다. 그렇지 않고 둘 중 어느 하나라도 셀 카운터가 "0"보다 크면 서로 마감시간을 비교하여, 마감시간이 적은 패킷 세그먼트를 서비스한다(S421). 이때, 서비스된 노드는 비어 있게 되므로 빈 노드를 채우기 위해 하위 노드의 셀 카운터를 읽어 재정렬한다(S422). 다음으로, 오른쪽 왼쪽 하위 노드 카운터가 모두 "0"이면, 정렬할 데이터가 없으므로 최상위 노드의 카운터만 1을 감소시킨다(S423). 만일, 왼쪽 하위 노드의 카운터가 "0"보다 큰지 비교하여(S424), 0보다 크면 왼쪽 하위 노드의 마감시간을 읽는다. 또한, 오른쪽 하위 노드의 카운터가 "0"보다 큰지 비교하여(S425), 0보다 크면 오른쪽 하위 노드의 마감시간을 읽는다. 두 개의 하위 노드 마감시간을 서로 비교하여(S426), 마감시간이 적은 패킷 세그먼트를 상위 노드에 저장한다(S427, S428). 이때, 서비스된 하위 노드는 비어 있게 되므로 빈 노드를 채우기 위해 다음 하위 노드의 셀 카운터를 읽어서(S429) 재정렬한다. 상기 카운터가 모두 "0"이면 하위 노드에 패킷 세그먼트가 존재하지 않으므로 다음 세그먼트 타임까지 기다린다(Halt). 그렇지 않고 왼쪽 하위 노드의 카운터가 "0"보다 크면, 상위 노드의 카운터를 1을 감소시키고(S431), 오른쪽 하위 노드의 카운터가 "0"보다 크면, 카운터는 그대로 유지된다(S430). 이러한 과정은 재정렬이 끝날 때까지 반복 수행된다(S424 내지 S431).
도 4d를 참조하여, 힙 관리기의 입출력 동작(En-Dequeue) 처리 흐름을 보다 상세하게 설명하면 다음과 같다.
새로운 패킷 세그먼트가 입력되면(S401), 최상위 노드의 카운터 정보를 읽는 다(S432). 상기 카운터가 "0"이면 최상위 노드가 비어 있으므로 최상위 노드에 저장하고, 다음 세그먼트 타임을 기다린다(S433). 그렇지 않고 셀 카운터가 "0"보다 크면, 새로 입력된 패킷 세그먼트와 최상위 노드의 패킷 세그먼트의 마감시간 값을 비교한다(S434). 이때, 최상위 노드의 마감시간 값이 크면 입력 패킷 세그먼트를 출력 서비스하고(S436), 입력 패킷 세그먼트의 마감시간 값이 크면 입력 최상위 노드의 패킷 세그먼트를 출력 서비스 한다(S435). 그리고 새로 입력된 패킷 세그먼트의 마감시간 값(S401)을 재정렬하기 위해 2개의 하위 노드의 카운터 값을 읽는다(S438). 만일, 오른쪽 왼쪽 하위 노드 카운터가 모두 "0"이면 정렬할 데이터가 없으므로 최상위 노드에 패킷 세그먼트 값을 저장한다(S439). 만일 왼쪽 하위 노드의 카운터가 "0"보다 큰지 비교하여(S440) 0보다 크면, 왼쪽 하위 노드의 마감시간을 읽는다. 또한 오른쪽 하위 노드의 카운터가 "0"보다 큰지 비교하여 (S441) 0보다 크면, 오른쪽 하위 노드의 마감시간을 읽는다. 두 개의 하위 노드 마감시간은 서로 비교하여(S442), 마감시간이 적은 패킷 세그먼트를 상위 노드로 전송한다(S443, S444). 입력된 패킷 세그먼트의 마감시간 값과 하위 노드에서 전송된 패킷 세그먼트 값을 비교하여(S445), 마감시간 값이 적은 패킷 세그먼트를 최상위 노드에 저장한다(S446, S447). 서비스된 하위 노드는 비어 있게 되므로 빈 노드를 채우기 위해 다음 하위 노드의 셀 카운터를 읽어서(S448) 재정렬한다. 이러한 정렬이 완료될 때까지 계속 S440 내지 S447 단계가 반복된다.
한편, 도 5는 본 발명에 따른 힙 관리기 하드웨어 상위 레벨의 간략화된 입출력 인터페이스 구성도이다.
도 5를 참조하면, 왼쪽 하위 점유노드 카운터를 이용한 힙 관리기(500)는 매 패킷 세그먼트 타임마다 2개의 입력 데이터(501, 502)를 받아 정렬을 수행한 후, 마감시간 값이 제일 작은 1개의 패킷 세그먼트를 출력(507)한다. 상기 입출력 데이터 버스는 64비트로 구성된다(501, 502, 507). 또한, Valid 신호(503, 504, 508)들은 데이터 버스 상에 존재하는 데이터들이 유효함을 나타낸다. 또한, 클럭 신호(505)는 125㎒의 클럭을 사용한다. 또한, 리셋 신호(506)는 왼쪽 하위 점유노드 카운터를 이용한 힙 관리기를 초기화한다.
한편, 도 6은 본 발명에 따른 힙 관리기의 하드웨어의 논리적인 상위 레벨 구성도이다. 힙 관리기(600)는 하드웨어적으로 크게 출력 동작을 위한 최상위 노드 레지스터(610)와 비교기(620), 입력 동작을 위한 2개의 서브노드 트리 힙 관리기(또는 서브노드 관리기)(601, 602)로 구성된다. 상기 서브노드 트리 힙 관리기 (601, 602)는 각 레벨별 비교기(630), 각 레벨별 메모리(640), 10Gbps 정렬을 위해 2 레벨을 관리하는 제어기(650) 및 카운터(660)로 구성된다. 이때, 힙 관리기(600)는 2개의 레벨 단위로 파이프라인 구조를 가진다.
각 레벨별 비교기(630)는 동작 모드에 따라 다르게 구성될 수 있다. 먼저, 입력 모드에서는 서로 인접한 메모리의 값들을 비교하고, 출력 모드에서는 동일한 메모리의 두 개의 값들을 비교한다. 그리고 입출력 모드에서는 서로 인접한 메모리 값과 동일한 메모리의 두개의 값 총 3개의 값들을 비교한다. 이때, 비교기는 22비트의 마감시간 값과 2비트의 순환 중복 값을 서로 비교한다.
각 레벨별 메모리(640)는 큐를 구성한다. 출력 동작을 4 클럭 사이클 안에 수행하기 위해 L1 메모리(641)는 레지스터로 구성된다. L2 메모리(642)는 2개의 큐를 구성하는 DPRAM 메모리를 사용한다. DPRAM 메모리는 1 클럭 사이클에 동시에 2개의 데이터를 받아 저장하고 출력할 수 있으므로, 10Gbps 속도로 정렬을 수행할 수 있게 한다. 그리고 L3 메모리(643)는 4개의 큐를 구성하는 DPRAM 메모리를 사용하고, L4 메모리(644)는 8개의 큐를 구성하는 DPRAM 메모리를 사용한다. L5 메모리(645)는 16개의 큐를 구성하는 DPRAM 메모리를 사용하고, L6 메모리(646)는 32개의 큐를 구성하는 DPRAM 메모리를 사용한다. 그리고 L7 메모리(647)는 64개의 큐를 구성하는 DPRAM 메모리를 사용하고, L8 메모리(648)는 128개의 큐를 구성하는 DPRAM메모리를 사용한다.
상기 2 레벨을 관리하는 제어기들(650)은 파이프라인 단계마다 존재하며, 카운터로부터 1에서 4까지의 카운터 정보를 받아 카운터 값에 따라 힙 관리기 제어를 수행한다. 각 단계의 제어기(651, 652, 653, 654)는 각 레벨의 메모리 읽기/쓰기 동작을 수행하며, 각 노드로부터 점유노드 카운터 값을 읽어 유효한 경로를 찾는 동작을 수행한다. 또한 입출력 동작에 따라 점유노드 카운터 값을 증가/감소하는 기능을 수행한다.
상기 2 레벨을 관리하는 카운터들(660)도 파이프라인 단계마다 존재하며, 매 패킷 세그먼트 타임마다 힙 관리기가 입출력 동작을 시작하면 1에서 4까지 카운터를 수행한다(661). 이 카운터 값은 각 파이프라인 단계에 따라 천이되며(662, 663, 664), 이러한 카운터 값은 10Gbps 정렬을 수행하는데 요구되는 클럭 수에 해당하게 된다.
한편, 도 7a 및 도 7b는 본 발명에 따른 파이프라인 방식의 서브 트리 힙 관리기의 상세 구성도이다. 여기서, 10Gbps 파이프라인 힙 관리기(1000)는 매 4클럭 사이클마다 패킷 세그먼트가 입출력된다. 그러므로 각 레벨들은 4사이클 동안에 정렬을 완료해야 한다.
먼저, 이러한 10Gbps 파이프라인 힙 관리기(1000)의 패킷 입력(S701)에 대한 클럭 사이클별 상세 처리 단계는 다음과 같이 수행된다.
1-A) 1 Clock Cycle
패킷 세그먼트가 입력되면 레벨 1 레지스터(700)에서 점유 카운터 즉, L1/2 셀 카운터의 정보를 읽어(S704) 그 값이 "0"이면 입력된 패킷 세그먼트를 저장하고, 상기 카운터의 값이 "0"이 아니면 L1/L2제어기(706)는 L2 DRAM에 저장된 노드 데이터를 읽어 입력된 패킷 세그먼트와 함께 레벨 1 비교기(701)로 전송한다.
2-A) 2 Clock Cycle
L1/L2 제어기(706)는 점유 카운터(L1/2 셀 카운터) 정보가 "128"이면(S706) L2 메모리 어드레스 A(0) = 0으로 하고, 레벨 1의 점유 카운터 정보를 +1 증가시킨다(S706, S707). 그렇지 않으면 L2 메모리 어드레스 A(0) = 1로 한다(S706, S707). L1 비교기(701)는 L1 노드 데이터의 마감시간과 입력된 패킷 세그먼트의 마감시간을 비교한다(701).
3-A) 3 Clock Cycle
L1 비교기(701)는 L1 노드 데이터의 마감시간과 입력된 패킷 세그먼트의 마감시간을 비교하여, 큰(max) 마감시간을 가지는 패킷 세그먼트를 L2 비교기(703)로 전송하고(S710), 작은(min) 마감시간을 가지는 패킷 세그먼트를 L1 레지스터(700)로 전송한다(S721). 그리고 L1/L2 제어기(706)는 어드레스 정보를 이용해 L2 메모리(702)의 패킷 세그먼트의 점유노드 카운터를 읽는다(S707).
4-A) 4 Clock Cycle
L1/L2 제어기(706)는 L1 비교기(701)에서 출력되는 작은 마감시간을 가지는 패킷 세그먼트를 레벨 1 레지스터(700)에 저장한다(S705, S709). 또한 L1/L2 제어기(706)는 L2 메모리(702)에서 읽은 패킷 세그먼트의 점유노드 카운터가 "64"가 아니면 L3 메모리(704) 어드레스 A(1) = 0으로 하고, 레벨 2의 점유 카운터 정보를 +1 증가한다(S708, S719). 그렇지 않으면 L3 메모리(704) 어드레스 A(1) = 1 한다(S708, S719). 점유노드 카운터가 "0"이면 선택된 메모리 어드레스를 이용하여 L2 메모리(702)에 저장한다(S705, S709). 그리고 L2 비교기(703)는 L1 비교기(701)로부터 제공되는 큰 마감시간을 가지는 패킷 세그먼트의 마감시간과 L2 메모리(702)에서 읽은 패킷 세그먼트의 마감시간을 비교한다.
5-A) 5 Clock Cycle
L2 비교기(703)는 L1 비교기(701)의 패킷 세그먼트와 L2 메모리(702)의 패킷 세그먼트 중 큰 마감시간을 가지는 패킷 세그먼트를 L3 비교기(705)로 전송(S713)하고, 작은 마감시간을 가지는 패킷 세그먼트를 L2 메모리(702)로 전송한다(S712). 그리고 L3/L4 제어기(707)는 어드레스 정보를 이용해 L3 메모리(704)의 패킷 세그먼트의 점유노드 카운터를 읽는다(S719).
6-A) 6 Clock Cycle
L3/L4 제어기(707)는 L2 비교기(703)로부터 제공되는 작은 마감시간을 가지는 패킷 세그먼트를 레벨 2 메모리(702)의 해당 번지에 저장한다(S717, S718). 또한 L3/L4 제어기(707)는 L3 메모리(704)에서 읽은 패킷 세그먼트의 점유노드 카운터가 "32"가 아니면 L4 메모리(708) 어드레스 A(2) = 0으로 하고, 레벨 3의 점유 카운터 정보를 +1 증가시킨다(S720). 그렇지 않으면 L4 메모리(708) 어드레스 A(2) = 1로 한다(S720). 상기 점유노드 카운터가 "0"이면 선택된 메모리 어드레스를 이용하여 L3 메모리(704)에 저장한다. 그리고 L3 비교기(705)는 L2 비교기(703)로부터 제공되는 큰 마감시간을 가지는 패킷 세그먼트의 마감 시간과 L3 메모리(704)에서 읽은 패킷 세그먼트의 마감시간을 비교한다.
상기와 같이 입력된 패킷 세그먼트가 비 점유노드에 저장될 때까지 레벨 3에서 6까지 순서로 각 레벨에서 동일한 절차를 수행한다. 각 레벨 제어기는 4 클럭 사이클에 대해 제어를 수행한다. 즉, 1~4 클럭 사이클은 L1/L2 제어기(706)가 담당하고, 5~8 클럭 사이클은 L3/L4 제어기(707), 9~12 클럭 사이클은 L5/L6 제어기(709), 13~16 클럭 사이클은 L7/L8 제어기(710)가 담당한다. 이러한 4 클럭 사이클 이후에 새로운 다음 패킷 세그먼트 값이 입력될 경우, 레벨 1의 레지스터(700) 정렬이 4 클럭 사이클에 수행되었으므로 메모리 충돌이 발생되지 않는다.
다음으로, 10Gbps 파이프라인 힙 관리기 하드웨어의 패킷 출력에 대한 클럭 사이클별 상세 처리 단계는 다음과 같이 수행된다(S702).
1-B) 1 Clock Cycle
각 서브노드 트리 힙 관리기의 L1/L2 제어기(706)는 레벨 1 레지스터(700)에서 점유 카운터 정보를 읽어(S704) "0"이 아니면, 최상위 노드(610)로 레벨 1의 패킷 세그먼트 값을 전송한다(S702). 그렇지 않으면 아무 동작도 하지 않는다.
2-B) 2 Clock Cycle
최상위 노드의 비교기(601)는 각 서브노드 트리 힙 관리기(601, 602)에서 전송된 패킷 세그먼트의 마감시간을 비교한다. 또한 L1/L2 제어기(706)는 L1 레지스터(700)의 점유 카운터 정보가 "128"보다 적으면 L2 메모리(702)의 어드레스가 0인 패킷 세그먼트를 읽는다(S706). 그렇지 않으면 L2 메모리(702)의 어드레스가 1인 패킷 세그먼트를 읽는다(S706).
3-B) 3 Clock Cycle
최상위 노드 비교기(601)는 각 서브노드 트리 힙 관리기(601, 602)에서 전송된 패킷 세그먼트 중 작은 마감시간을 가지는 패킷 세그먼트를 레지스터(700)에 저장하고, 출력 조건이 될 때 서비스한다. 그리고 상기 작은 마감시간을 가지는 패킷 세그먼트를 전송한 서브노드 트리(601 또는 602)로 재정렬 신호를 전송한다(S703). 재정렬 신호를 받은 서브노드 트리의 L2 비교기(703)는 읽혀진 L2 메모리(702)의 패킷 세그먼트들의 마감시간을 비교하고, 작은 마감시간을 가지는 패킷 세그먼트를 L1 레지스터(700)로 전송(S712)하고, L1/L2 제어기(706)로 점유노드 카운터를 전송한다. 이때, L2 메모리(702) 어드레스 필드 A(0) = 0으로 한다(S707). L2 메모리(702)에 1개의 패킷 세그먼트만 존재하면, 비교를 수행하지 않고 바로 L1 레지스터(700)로 전송한다.
4-B) 4 Clock Cycle
L2 비교기(703)에서 전송된 작은 마감시간을 가지는 패킷 세그먼트를 레벨 1 레지스터(700)에 저장한다(S705, S709). 그리고 L1/L2 제어기(706)는 L2 비교기(703)의 작은 마감시간을 가지는 패킷 세그먼트 점유노드 카운터가 "64"보다 적으면, L3 메모리(704)의 어드레스가 0인 패킷 세그먼트를 읽는다(S708). 그렇지 않으면 L3 메모리(704)의 어드레스가 0, 1인 패킷 세그먼트를 읽는다(S708).
5-B) 5 Clock Cycle
L3 비교기(705)는 읽혀진 L3 메모리(704)의 패킷 세그먼트들의 마감시간을 비교하고, 그 중에서 작은 마감시간을 가지는 패킷 세그먼트를 L2 메모리(702)로 전송하고(S716), L3/L4 제어기(707)로 점유노드 카운터를 전송한다. 이때, L3 메모리(704) 어드레스 필드 A(1) = 0으로 한다(S719). L3 메모리(704)에 1개의 패킷 세그먼트만 존재하면, 비교를 수행하지 않고 바로 L2 메모리(702)로 전송한다.
6-B) 6 Clock Cycle
L3 비교기(705)에서 전송된 작은 마감시간을 가지는 패킷 세그먼트를 레벨 2 메모리(702) 해당 어드레스에 저장한다(S717, S718). 그리고 L3/L4 제어기(707)는 L3 비교기(705)의 상기 작은 마감시간을 가지는 패킷 세그먼트 점유노드 카운터가 "32"보다 적으면 L4 메모리(708)의 어드레스가 0인 패킷 세그먼트를 읽는다(S720). 그렇지 않으면 L4 메모리(708)의 어드레스가 0, 1인 패킷 세그먼트를 읽는다(S720).
상기와 같이 출력된 서브노드 트리가 재정렬을 수행할 때까지 레벨 4에서 6 까지 순서로 각 레벨에서 동일한 절차를 수행한다.
다음으로, 10Gbps 파이프라인 힙 관리기의 패킷 입출력에 대한 클럭 사이클별 상세 처리 단계는 다음과 같이 수행된다(S701, S702).
1-C) 1 Clock Cycle
각 서브노드 트리 힙 관리기(601, 602)의 L1/L2 제어기(706)는 레벨 1 레지스터(700)에서 점유 카운터 정보를 읽어(S704) "0"이 아니면, 입력된 패킷 세그먼트의 마감시간과 레벨 1 패킷 세그먼트의 마감시간을 L1 비교기(701)에서 비교하여, 보다 작은 마감시간을 가지는 패킷 세그먼트를 최상위 노드로 전송한다(S702). 그리고 큰 마감시간을 가지는 패킷 세그먼트는 L2 비교기(703)로 전송한다(S710). 또한 L1/L2 제어기(706)로 L1 레지스터(700)의 점유노드 카운터를 전송한다.
2-C) 2 Clock Cycle
최상위 노드의 비교기(620)는 각 서브노드 트리 힙 관리기(601, 602)에서 전송된 패킷 세그먼트의 마감시간을 비교한다. 또한 L1/L2 제어기(706)는 L1 레지스터(700)의 점유 카운터 정보가 "128"보다 적으면 L2 메모리(703)의 어드레스가 0인 패킷 세그먼트를 읽는다(S706). 그렇지 않으면 L2 메모리(703)의 어드레스가 0, 1인 패킷 세그먼트를 읽는다(S706).
3-C) 3 Clock Cycle
최상위 노드 비교기(620)에서 작은 마감시간을 가지는 패킷 세그먼트를 레지스터에 저장하고, 출력 조건이 될 때 서비스한다. 그리고 상기 작은 마감시간을 가지는 패킷 세그먼트를 전송한 서브노드 트리(601 또는 602)로 재정렬 신호를 전 송한다(S703). 재정렬 신호를 받은 서브노드 트리의 L2 비교기(703)는 읽혀진 L2 메모리(702)의 패킷 세그먼트의 마감시간과 레벨 1에서 전송된 패킷 세그먼트의 마감시간을 비교한다. 레벨 1에서 전송된 패킷 세그먼트의 마감시간이 더 작으면, 레벨 1에서 전송된 패킷 세그먼트를 L1 레지스터(700)로 전송한다(S712). 그렇지 않고 읽혀진 L2 메모리(702)의 패킷 세그먼트의 마감시간이 더 작으면 읽혀진 L2 메모리(702)의 작은 마감시간을 가지는 패킷 세그먼트를 L1 레지스터(700)로 전송하고, 어드레스 A(0) = 0으로 한다(S712, S707). 그리고 레벨 1에서 전송된 패킷 세그먼트는 어드레스 A(0) = 1로 설정하여 L3 비교기(705)로 전송한다(S713).
4-C) 4 Clock Cycle
L2 비교기(703)에서 전송된 작은 마감시간을 가지는 패킷 세그먼트를 레벨 1 레지스터(700)에 저장한다(S705, S709). 그리고 L1/L2 제어기(706)는 L2 비교기 (703)의 작은 마감시간을 가지는 패킷 세그먼트 점유노드 카운터가 "64"보다 적으면 L3 메모리(704)의 어드레스가 0인 패킷 세그먼트를 읽는다(S708). 그렇지 않으면 L3 메모리(704)의 어드레스가 0, 1인 패킷 세그먼트를 읽는다(S708).
5-C) 5 Clock Cycle
L3 비교기(705)는 읽혀진 L3 메모리(704)의 패킷 세그먼트의 마감시간과 레벨 2 메모리(702)에서 전송된 패킷 세그먼트의 마감시간을 비교한다. 레벨 2에서 전송된 패킷 세그먼트의 마감시간이 더 작으면 레벨 2에서 전송된 패킷 세그먼트를 L2 메모리(702) 해당 어드레스로 전송한다. 그렇지 않고 읽혀진 L3 메모리(704)의 패킷 세그먼트의 마감시간이 더 작으면 읽혀진 L3 메모리(704)의 작은 마감시간을 가지는 패킷 세그먼트를 L2 메모리(702) 해당 어드레스로 전송하고 어드레스 A(1) = 0으로 한다(S719, S716). 그리고 레벨 2에서 전송된 패킷 세그먼트는 어드레스 A(1) = 1로 설정하여 L4 비교기(711)로 전송한다(S715).
6-C) 6 Clock Cycle
L3 비교기(705)에서 전송된 작은 마감시간을 가지는 패킷 세그먼트를 레벨 2 메모리(702) 해당 어드레스에 저장한다(S717, S718). 그리고 L3/L4 제어기(707)는 L3 비교기(705)의 작은 마감시간을 가지는 패킷 세그먼트 점유노드 카운터가 "32"보다 적으면 L4 메모리(708)의 어드레스가 0인 패킷 세그먼트를 읽는다(S720). 그렇지 않으면 L4 메모리(708)의 어드레스가 0, 1인 패킷 세그먼트를 읽는다(S720).
상기와 같이 입출력된 서브노드 트리가 재정렬을 수행할 때까지 레벨 4에서 6까지 순서로 각 레벨에서 동일한 절차를 수행한다.
전술한 바와 같이, 본 발명에서는 자노드가 존재하는 노드에만 점유 카운터 정보를 유지하고, 왼쪽 트리의 노드부터 우선순위에 따라 차례대로 저장하므로, 적은 수의 우선순위 값이 힙을 점유할 때 쉽게 정렬을 수행하고, 적은 메모리 액세스 수를 제공한다.
또한, 본 발명에 따른 파이프라인 힙 관리기는 하나의 이진 어레이 모듈로 구성되며, 매 클럭 사이클마다 2개의 데이터 입력 1개의 데이터 출력 서비스를 제공하기 위해 1개의 1레벨의 최상위 노드와 좌/우 2개씩의 8레벨의 서브노드 힙 관리기로 구성되게 된다. 그 입출력 동작은 자신을 포함한 왼쪽 하위 노드의 점유 카운터 정보를 이용하여 정렬 기능을 수행함으로써, 플로우별 큐에서 우선순위 정 렬에 따른 10Gbps 속도의 패킷 전송을 수행하고, 동시에 2개의 입력 우선순위 값을 받아 정렬을 수행할 수 있다. 따라서 고속 네트워크 스위치나 라우터의 플로우별 출력 큐에서 가장 우선순위가 높은 패킷을 전송하여 서비스 품질(QoS)을 보장하게 된다.
그러므로 본 발명은 10Gbps 패킷 스케줄러에서 각 클래스별로 256개의 플로우에 대해 마감시간에 따른 우선순위 고속 정렬 기능을 수행하고, 특히 동시에 2개의 패킷 세그먼트를 입력받아 정렬 기능을 수행하게 되고, 또한 마감시간 우선순위별로 서비스를 수행함으로서 실시간 트래픽에 대한 지연 경계를 보장하게 된다.
위에서 발명을 설명하였지만, 이러한 실시 예는 이 발명을 제한하려는 것이 아니라 예시하려는 것이다. 이 발명이 속하는 분야의 숙련자에게는 이 발명의 기술 사항을 벗어남이 없어 위 실시 예에 대한 다양한 변화나 변경 또는 조절이 가능함이 자명할 것이다. 그러므로 본 발명의 보호 범위는 첨부된 청구 범위에 의해서만 한정될 것이며, 위와 같은 변화예나 변경예 또는 조절예를 모두 포함하는 것으로 해석되어야 할 것이다.
이상에서와 같이 본 발명에 따르면, 왼쪽 하위 레벨 점유노드 카운터를 이용한 파이프라인 방식의 고속 힙 관리기는 10Gbps 패킷 스케줄러에서 고속 데이터 정렬 기능을 수행하여 실시간 트래픽 서비스에서 요구되는 지연 경계 보장을 제공할 수 있다.
또한, 본 발명에 따르면, 자신을 포함한 왼쪽 하위 점유노드 카운터를 이용 하여 힙 관리기를 정렬함으로서 메모리 액세스 수를 줄이고, 파이프라인 방식을 쉽게 제공할 수 있고, 또한, 본 발명에 따른 힙 관리기는 확장성이 용이한 하드웨어 장치를 제공할 수 있다.
또한, 본 발명에 따른 힙 관리기는 패킷 스케줄러에서 새로운 플로우의 패킷 세그먼트와 대기 중인 플로우의 패킷 세그먼트 2개의 입력 패킷 세그먼트를 받아 정렬하는 기능을 제공할 수 있다.
Claims (23)
- 패킷 스케줄러에서 입력되는 패킷 세그먼트를 우선 순위에 따라 정렬하는 힙 관리기에 있어서,제1 레벨에 형성되는 최상위 노드; 및제2 레벨 내지 제n (n은 2보다 큰 정수) 레벨의 각 레벨에 형성되어 각각 입력 패킷 세그먼트를 받아들이는 다수의 노드를 포함하고, 하나의 패킷 세그먼트를 상기 최상위 노드로 전송하여 출력되도록 하는 제1 및 제2 서브노드 트리를 포함하고,상기 제1 및 제2 서브 노드 트리의 각 노드는 자신을 포함한 제1 방향의 하위 레벨 점유 노드 수를 나타내는 카운터를 포함하는 힙 관리기.
- 제1항에 있어서,상기 제1 및 제2 서브노드 트리의 각 노드는각 노드들로 입력된 패킷 세그먼트의 마감시간 값을 표시하는 마감시간 카운터 필드;각 레벨의 각 노드의 위치를 나타내는 어드레스 필드; 및하위 레벨 점유노드 개수를 나타내는 카운터 필드를 포함하는 데이터 필드를 가지는 힙 관리기.
- 제2항에 있어서,상기 각 노드는 상기 카운터의 값과 상기 어드레스 필드에 저장된 어드레스 정보에 따라 패킷 세그먼트의 입출력을 수행하는 힙 관리기.
- 제2항에 있어서,상기 데이터 필드는노드의 데이터들이 유효함을 나타내는 유효(Valid) 필드;상기 카운터 오버플로우에 따른 정렬 기능을 제공하는 순환 중복(wrap-around) 필드;스위치 포트를 나타낸 포트 필드; 및각 포트내의 클래스 안에서 플로우를 구분하는 큐 식별자를 나타내는 클래스필드를 더 포함하는 힙 관리기.
- 제4항에 있어서,상기 마감시간 카운터 필드에 저장되는 마감시간 카운터 비트와 상기 순환 중복 필드에 저장되는 순환 중복 비트는 상기 패킷 세그먼트들 마감순위 값으로 사용되며, 상기 순환 중복 비트는 상기 카운터의 오버플로우(overflow)가 발생될 경우, 잘못된 비교로 인한 우선순위 정렬 수행을 방지하는 것을 특징으로 하는 힙 관리기.
- 제2항에서입력 모드시, 상기 제1 및 제2 서브노드 트리는 자신의 트리안에서 최상위 노드인 서브 최상위 노드의 카운터값과 입력되는 패킷 세그먼트의 마감 시간값에 따라 패킷 세그먼트를 저장할 유효한 비점유 노드를 찾아서 상기 패킷 세그먼트를 저장하는 힙 관리기.
- 제2항에 있어서,출력 모드시, 상기 제1 및 제2 서브노드 트리는 자신의 노드 중에서 최상위 노드인 서브 최상위 노드에 저장된 패킷 세그먼트의 마감 시간을 서로 비교한 후, 마감 시간이 적은 패킷 세그먼트를 상기 최상위 노드로 출력하는 힙 관리기.
- 제2항에 있어서,입출력 모드시,상기 제1 및 제2 서브노드 트리는 자신의 트리안에서 최상위 노드인 서브 최상위 노드의 카운터값과 입력되는 패킷 세그먼트의 마감 시간값에 따라 패킷 세그먼트를 저장할 유효한 비점유 노드를 찾아서 상기 패킷 세그먼트를 저장하고, 각 트리의 서브 최상위 노드에 저장된 패킷 세그먼트의 마감 시간을 서로 비교한 후, 마감 시간이 적은 패킷 세그먼트를 상기 최상위 노드로 출력하는 힙 관리기.
- 패킷 스케줄러에서 입력되는 패킷 세그먼트를 우선 순위에 따라 정렬하는 힙 관리기에 있어서,입력되는 데이터를 저장하는 제1 및 제2 서브 관리기;상기 제1 및 제2 서브 관리기의 제1 및 제2 데이터의 값을 비교하는 비교기; 및상기 비교기의 결과에 따라 제1 또는 제2 데이터를 선택하여 저장하고, 서비스 조건에 따라 선택된 데이터를 출력하는 최상위 노드 레지스터;를 포함하며, 2개의 데이터를 받고 1개의 데이터를 서비스하도록 하는 2개의 레벨 단위로 이루어지는 파이프라인 방식의 힙 관리기.
- 제9항에 있어서,상기 제1 및 제2 서브 관리기는큐를 구성하는 n 레벨별 메모리;패킷 세그먼트 타임마다 설정수를 카운트하며, 연속하는 2 레벨 단위의 메모리에 대하여 카운트를 수행하는 다수의 2 레벨 카운터;동작 모드에 따라 상기 메모리에 저장된 값들을 비교하고 비교 결과에 따라 메모리에 저장된 값을 선택적으로 출력하는 n 레벨별 비교기;상기 2레벨 카운터의 값에 따라 상기 연속하는 2레벨 단위의 메모리에 대한 읽기/쓰기 동작을 제어하며, 입출력 동작에 따라 상기 2레벨 카운터의 값을 증감시키는 다수의 2 레벨 제어기를 포함하는 파이프라인 방식의 힙 관리기.
- 제10항에 있어서,상기 비교기는입력 모드에서는 서로 인접한 메모리에 저장된 값들을 비교하고, 출력 모드에서는 동일한 메모리에 저장된 값들을 비교하며, 그리고 입출력 모드에서는 서로 인접한 메모리에 저장된 값과 동일한 메모리에 저장된 두개의 값인 총 3개의 값들을 비교하는 파이프라인 방식의 힙 관리기.
- 제11항에 있어서,상기 비교기는 메모리에 저장된 패킷 세그먼트들의 마감시간 값들을 서로 비교하는 파이프라인 방식의 힙 관리기.
- 제10항에 있어서,상기 각 레벨별 메모리는,출력 동작을 설정 클럭 사이클 안에 수행하도록 레지스터로 이루어지는 L1 메모리;2개의 큐를 구성하는 DPRAM 메모리를 사용하는 L2 메모리;4개의 큐를 구성하는 DPRAM 메모리를 사용하는 L3 메모리;8개의 큐를 구성하는 DPRAM 메모리를 사용하는 L4 메모리;16개의 큐를 구성하는 DPRAM 메모리를 사용하는 L5 메모리;32개의 큐를 구성하는 DPRAM 메모리를 사용하는 L6 메모리;64개의 큐를 구성하는 DPRAM 메모리를 사용하는 L7 메모리; 및128개의 큐를 구성하는 DPRAM 메모리를 사용하는 L8 메모리를 포함하는 파이프라인 방식의 힙 관리기.
- 제13항에 있어서,상기 2 레벨 제어기는상기 L1 메모리 및 L2 메모리의 읽기/쓰기 동작을 제어하는 제1 제어기;상기 L3 메모리 및 L4 메모리의 읽기/쓰기 동작을 제어하는 제2 제어기;상기 L5 메모리 및 L6 메모리의 읽기/쓰기 동작을 제어하는 제3 제어기; 및상기 L7 메모리 및 L8 메모리의 읽기/쓰기 동작을 제어하는 제4 제어기로 이루어지는 파이프라인 방식의 힙 관리기.
- 제10항에 있어서,상기 2 레벨 카운터의 카운터 값은 각 파이프라인 단계에 따라 천이되며, 10Gbps 정렬을 수행하는데 요구되는 클럭 수에 해당하는 것을 특징으로 하는 파이프라인 방식의 힙 관리기.
- 제10항에 있어서,상기 힙 관리기는 2레벨 단위로 우선순위를 비교하여, 메모리 충돌 없이 데이터를 정렬하는 파이프라인 방식의 힙 관리기.
- 제1 레벨에 형성되는 최상위 노드; 및 제2 레벨 내지 제n 레벨의 각 레벨에 형성되는 다수의 노드를 포함하고, 각 노드는 자신을 포함한 제1 방향의 하위 레벨 점유 노드 수를 나타내는 카운터를 포함하는 제1 및 제2 서브노드 트리를 포함하는 구조로 이루어지는 힙 관리기의 우선 순위 정렬 방법에 있어서,a) 패킷 세그먼트의 셀 입력과 상기 제1 및 제2 서브노드 트리의 최상위 노드인 서브 최상위 노드의 상태에 따라 입력 동작, 출력 동작, 및 입출력 동작을 선택하는 동작 모드 선택 단계;b) 상기 제1 또는 제2 서브노드 트리의 서브 최상위 노드값이 존재하지 않거나 또는 존재하나 노드값이 동작 모드에 따른 조건을 만족하지 않고 패킷 세그먼트만 입력된 경우에, 패킷 세그먼트를 비점유 노드로 저장하는 입력(Enqueue) 과정을 수행하는 단계;c) 상기 힙 관리기에 입력된 패킷이 없고, 상기 제1 및 제2 서브노드 트리의 서브 최상위 노드값이 존재하고, 상기 노드값이 동작 모드에 따른 조건을 만족할 경우에, 상기 제1 및 제2 서브노드 트리의 서브 최상위 노드값을 비교하여 작은 값의 마감시간을 가진 패킷 세그먼트를 상기 최상위 노드로 전송하는 출력(Dequeue) 과정을 수행하는 단계; 및d) 상기 힙 관리기에 입력된 패킷이 있고, 제1 또는 제2 서브노드 트리의 서 브 최상위 노드값이 존재하며, 상기 노드값이 동작 모드에 따른 조건을 만족할 경우에 수행되는 입출력(En-Dequeue) 과정을 수행하는 단계를 포함하는 우선 순위 정렬 방법.
- 제17항에 있어서상기 힙 관리기에 패킷 세그먼트들이 존재하면 마감시간 안에 순서적으로 정렬된 패킷 세그먼트들을 계속 전송하는 작업 보존 방식, 및 주어진 마감시간이 되는 패킷 세그먼트들만 전송하는 비 작업 보존 방식 중에서 어느 하나를 설정하는 초기화 단계를 더 포함하는 우선 순위 정렬 방법.
- 제17항에 있어서패킷 세그먼트 타임마다 패킷 세그먼트가 입력되는 b) 단계 또는 패킷 세그먼트가 출력되는 c) 단계 또는 패킷 세그먼트가 입출력되거나 동시에 입출력되는 d) 단계가 수행되는 우선순위 정렬 방법.
- 제17항에 있어서상기 b) 단계는b-1) 제2 서브노드 트리에서 새로운 패킷 세그먼트가 입력되면, 자신의 트리내의 최상위 노드인 서브 최상위 노드의 카운터값을 판단하여 서브 최상위 노드가 비어있는지를 판단하는 단계;b-2) 상기 서브 최상위 노드가 비어있는 경우에 상기 입력된 패킷 세그먼트를 상기 서브 최상위 노드로 전송하여 저장하는 단계;b-3) 상기 서브 최상위 노드가 비어있지 않은 경우, 패킷 세그먼트를 하위 노드로 전송할 경로를 선택하는 단계;b-4) 상기 입력된 패킷 세그먼트의 마감시간과 상기 서브 최상위 노드에 저장된 패킷 세그먼트의 마감시간을 비교하여 보다 작은 마감시간을 가지는 패킷 세그먼트를 상기 서브 최상위 노드에 저장하고, 보다 큰 마감 시간을 가지는 패킷 세그먼트를 선택된 경로로 전송하여 하위 노드에 저장시키는 단계를 포함하는 우선 순위 정렬 방법.
- 제20항에 있어서상기 b-4) 단계는 상기 선택된 경로가 제1 방향인 경우에만 상기 서브 최상위 노드의 카운터값을 +1 증가시켜서, 제1 방향에 위치된 하위 노드의 점유 여부를 표시하는 우선 순위 정렬 방법.
- 제17항에 있어서상기 c) 단계는c-1) 제1 및 제2 서브노드 트리의 서브 최상위 노드에 저장된 패킷 세그먼트의 마감시간을 비교하여, 보다 작은 마감 시간을 가지는 패킷 세그먼트를 상기 최상위 노드로 전송하여 출력되도록 하는 단계; 및c-2) 상기 작은 마감 시간을 가지는 패킷 세그먼트가 저장되어 있던 서브노드 트리가 비어 있는 자신이 서브 최상위 노드를 채우기 위한 재정렬을 수행하는 단계를 포함하는 우선 순위 정렬 방법.
- 제22항에 있어서상기 c-2) 단계는상기 서브노드 트리의 서브 최상위 노드를 기준으로 제1 방향 및 제2 방향에 위치된 하위 노드의 카운터값을 비교하여 하위 노드의 점유 여부를 판단하는 단계;제1 방향 및 제2 방향에 위치한 하위 노드에 패킷 세그먼트가 존재하여 점유되어 있는 경우, 상기 제1 및 제2 방향의 하위 노드에 각각 저장된 패킷 세그먼트의 마감시간을 비교하여, 보다 적은 마감 시간을 가지는 패킷 세그먼트를 상기 서브 최상위 노드로 전송하여 저장하는 단계를 포함하는 우선 순위 정렬 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020030092190A KR100545634B1 (ko) | 2003-12-16 | 2003-12-16 | 파이프라인 방식의 힙 관리기 및 그의 우선순위 정렬 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020030092190A KR100545634B1 (ko) | 2003-12-16 | 2003-12-16 | 파이프라인 방식의 힙 관리기 및 그의 우선순위 정렬 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20050060553A KR20050060553A (ko) | 2005-06-22 |
KR100545634B1 true KR100545634B1 (ko) | 2006-01-24 |
Family
ID=37253247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020030092190A KR100545634B1 (ko) | 2003-12-16 | 2003-12-16 | 파이프라인 방식의 힙 관리기 및 그의 우선순위 정렬 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100545634B1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101666307B1 (ko) * | 2015-05-14 | 2016-10-13 | 영남대학교 산학협력단 | 메모리 장치 기반의 힙 정렬 방법 및 장치 |
JP7031630B2 (ja) | 2019-03-20 | 2022-03-08 | オムロン株式会社 | パイプライン演算装置、プログラマブルロジックコントローラ、及び、パイプライン処理の実行方法 |
-
2003
- 2003-12-16 KR KR1020030092190A patent/KR100545634B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR20050060553A (ko) | 2005-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11003604B2 (en) | Procedures for improving efficiency of an interconnect fabric on a system on chip | |
US7133399B1 (en) | System and method for router central arbitration | |
KR100620835B1 (ko) | 최적화된 가변 네트워크 스위치 | |
US5835491A (en) | Method for supporting multicast capabilities in switching networks with a reservation ring | |
US7539199B2 (en) | Switch fabric scheduling with fairness and priority consideration | |
US7965624B2 (en) | Data link fault tolerance | |
US7602790B2 (en) | Two-dimensional pipelined scheduling technique | |
US7150021B1 (en) | Method and system to allocate resources within an interconnect device according to a resource allocation table | |
EP1056307B1 (en) | A fast round robin priority port scheduler for high capacity ATM switches | |
US5912889A (en) | ATM switch with output port clustering for dynamically allocating bandwidth between ports | |
KR100488478B1 (ko) | 다중 입력/출력 버퍼형 교환기 | |
US6721796B1 (en) | Hierarchical dynamic buffer management system and method | |
US5949789A (en) | Arbitration ring for accessing a limited bandwidth switching network | |
US7809007B2 (en) | Low cost implementation for a device utilizing look ahead congestion management | |
US7289443B1 (en) | Slow-start packet scheduling particularly applicable to systems including a non-blocking switching fabric and homogeneous or heterogeneous line card interfaces | |
JP2003527755A (ja) | ディジタル通信プロセッサ | |
US5883895A (en) | Arbitration ring with automatic sizing for a partially populated switching network | |
US20020097719A1 (en) | Method and apparatus for traffic shaping for IP router queues/egress | |
KR100545634B1 (ko) | 파이프라인 방식의 힙 관리기 및 그의 우선순위 정렬 방법 | |
US7460544B2 (en) | Flexible mesh structure for hierarchical scheduling | |
US7269158B2 (en) | Method of operating a crossbar switch | |
CN1853379A (zh) | 在异步传输模式信元传输中提供服务质量的系统和方法 | |
CN103780507A (zh) | 缓存资源的管理方法及装置 | |
US7505422B1 (en) | Preference programmable first-one detector and quadrature based random grant generator | |
US20060140191A1 (en) | Multi-level scheduling using single bit vector |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20090102 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |