KR100256679B1 - 비동기 전달 모드 셀 세그멘테이션 장치 - Google Patents

비동기 전달 모드 셀 세그멘테이션 장치 Download PDF

Info

Publication number
KR100256679B1
KR100256679B1 KR1019970073035A KR19970073035A KR100256679B1 KR 100256679 B1 KR100256679 B1 KR 100256679B1 KR 1019970073035 A KR1019970073035 A KR 1019970073035A KR 19970073035 A KR19970073035 A KR 19970073035A KR 100256679 B1 KR100256679 B1 KR 100256679B1
Authority
KR
South Korea
Prior art keywords
buffer
cell
address
descriptor
virtual channel
Prior art date
Application number
KR1019970073035A
Other languages
English (en)
Other versions
KR19990053412A (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 이계철
Priority to KR1019970073035A priority Critical patent/KR100256679B1/ko
Publication of KR19990053412A publication Critical patent/KR19990053412A/ko
Application granted granted Critical
Publication of KR100256679B1 publication Critical patent/KR100256679B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/104Asynchronous transfer mode [ATM] switching fabrics
    • H04L49/105ATM switching elements
    • H04L49/108ATM switching elements using shared central buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5638Services, e.g. multimedia, GOS, QOS
    • H04L2012/5646Cell characteristics, e.g. loss, delay, jitter, sequence integrity
    • H04L2012/5652Cell construction, e.g. including header, packetisation, depacketisation, assembly, reassembly

Landscapes

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

Abstract

1. 청구범위에 기재된 발명이 속한 기술분야
본 발명은 비동기 전달 모드 셀 세그멘테이션 장치에 관한 것임.
2. 발명이 해결하려고 하는 기술적 과제
본 발명은 각 연결 정보와 버퍼 디스크립터의 정보를 이용하여 호스트 메모리에서 데이터를 능동적으로 가져와 비동기 전달 모드 셀을 만들어 전달하는 기능을 가지는 셀 세그멘테이션 장치를 제공하고자 함.
3. 발명의 해결방법의 요지
본 발명은 가상 채널 정보를 새로운 비사용 버퍼 디스크립터 번지에 복사하여 해당 가상 채널 테이블에 연결하는 버퍼 연결 관리 수단과, 외부로부터 형성된 셀을 입력받아 저장한 후에 순차적으로 출력하는 스케듈링 및 세그멘테이션 수단과, 새로운 비사용 버퍼 디스크립터 번지를 제공하는 비사용 디스크립터 관리 수단과, 부정 비트율 포인터를 제공하는 부정 비트율 포인터 탐색 수단, 및 상태 신호를 받아 외부에 기록하고 관리하고 호스트 중앙 처리 장치에 인터럽트를 거는 상태 보고 관리 수단을 포함 함.
4. 발명의 중요한 용도
본 발명은 비동기 전달 모드 시스템에 이용됨.

Description

비동기 전달 모드 셀 세그멘테이션 장치
본 발명은 비동기 전달 모드 단말의 송신부에서 셀 세그멘테이션 장치에 관한 것이다.
비동기 전달 모드(ATM : asynchronous transfer mode) 트래픽은 고정 비트율(CBR : Constant Bit Rate)과, 가변 비트율(VBR : Variable Bit Rate)과, 가용 비트율(ABR : Available Bit Rate), 및 부정 비트율(UBR : Unspecified Bit Rate)로 나누어지는데, 고정 비트율은 일정한 비트율로 전송되는 트래픽을, 가변 비트율은 비트율이 일정치 않으나 최대 버스트(burst)의 길이가 정의된 트래픽을, 가용 비트율은 최소 대역폭(bandwidth)의 전송을 보장되면서 고정 비트율이나 가변 비트율이 사용하지 않는 대역폭을 최대한 사용할 수 있는 트래픽을, 부정 비트율은 고정 비트율과 가변 비트율이 사용하지 않는 대역폭을 사용하되 최소 비트율이 보장되지 않고 최대 대역폭이 제한되는 트래픽을 의미한다.
종래의 기술은 전송할 연결별로 데이타를 분할하여 비동기 전달 모드 셀로 전달하기 위하여 호스트 중앙 처리 장치가 호스트 메모리의 데이타를 일단 로컬 메모리에 옮겨 놓아야 하기 때문에 데이타의 이동을 위하여 호스트 중앙 처리 장치의 시간을 많이 사용하는 문제점이 있었다.
또한, 로컬 메모리에 데이타를 옮겨 놓는 경우에는 메모리의 크기에 제약이 있기 때문에 여러 채널의 데이타를 고속으로 전달하기에는 성능이 저하된다는 문제가 있었다.
또한, 트래픽 쉐이핑에 있어서는 고정 비트율과 가변 비트율, 그리고 부정 비트율 등의 특성을 갖는 트래픽의 비동기 전달 모드 셀을 생성시키기 위한 효과적인 제어 방식이 마련되어 있지 않아서 셀의 생성 순서를 정확하게 제어할 수 없었다는 문제점이 있었다.
따라서, 본 발명은 상기한 바와 같은 문제점을 해결하기 위하여 안출된 것으로서, 비동기 전달 모드 셀로 분할하여 전송할 공통 부분 수렴 부계층 프로토콜 데이터 유니트(CPCS-PDU : Common Part Convergence Sublayer-Protocol Data Unit)의 데이타를 호스트 메모리에 둔 채로 호스트 중앙 처리 장치는 데이타 전달에 필요한 최소한의 제어 정보의 전달 및 상태 정보의 수신만 하도록 하고, 대부분의 주요 데이타의 전달은 직접 메모리 엑세스(DMA : Direct Memory Access) 마스터 기능을 가지는 비동기 전달 모드 셀 세그멘테이션(ATM SEGMENTATION) 장치의 마스터(master) 기능을 이용하여 가져오도록 함으로써 최소의 중앙 처리 장치의 개입으로 원하는 성능을 얻도록 하는 비동기 전달 모드 셀 세그멘테이션 장치를 제공하는데 그 목적이 있다.
또한, 고정 비트율과, 가변 비트율과, 부정 비트율의 생성시점을 셀 단위로 제어할 수 있도록 하는 방법을 제시하는 비동기 전달 모드 셀 세그멘테이션 장치를 제공하는데 그 목적이 있다.
도 1 은 본 발명이 적용되는 일반적인 비동기 전달 모드 망 인터페이스 제어 시스템을 개략적으로 나타낸 블록도.
도 2 는 본 발명의 일실시예에 따른 셀 세그멘테이션 장치의 구성을 나타낸 블록도.
도 3 은 도 2 의 디스크립터의 전달과 연결 과정을 나타낸 일예시도.
도 4 는 도 2 의 버퍼 연결의 과정을 나타낸 일예시도.
도 5 는 도 2 의 스케듈링 및 세그멘테이션기의 구성을 나타낸 블록도.
도 6 은 도 2 의 셀 버퍼의 구성을 나타낸 블록도.
도 7 은 도 5 의 제어기의 간략화된 상태 천이도.
* 도면의 주요 부분에 대한 부호의 설명
200 : 버퍼 연결 관리기 210 : 스케쥴링 및 세그멘테이션기
220 : 비사용 디스크립터 관리기 230 : 부정 비트율 포인터 탐색기
240 : 상태 보고 관리기 500 : 가상 채널 해석기
510 : 버퍼 디스크립터 레지스터 파일 520 : 제어기
530 : 셀 버퍼 600 : 쓰기 및 삽입 제어기
610 : 읽기 제어기 620 : 셀 선입 선출기
630 : 다중화기
상기 목적을 달성하기 위한 본 발명은, 가상 채널 정보를 새로운 비사용 버퍼 디스크립터 번지에 복사하는 버퍼 연결 관리 수단; 호스트 시작 정보를 수신하여 외부에 직접 메모리 엑세스를 요구하고, 외부로부터 형성된 셀을 입력받아 저장한 후에 순차적으로 출력하며, 사용된 번지를 비사용번지로 반환하는 요구 신호와 상태 정보를 출력하는 스케듈링 및 세그멘테이션 수단; 상기 스케듈링 및 세그멘테이션 수단으로부터 사용된 번지에 대한 비사용 번지로 반환 요구를 받아 사용된 번지를 비사용 번지로 반환하고 상기 버퍼 연결 관리 수단의 비사용 버퍼 디스크립터 번지 요구에 대해 새로운 비사용 버퍼 디스크립터 번지를 제공하는 비사용 디스크립터 관리 수단; 가상 채널 정보중에 부정 비트율에 대한 번지를 탐색하여 상기 스케쥴링 및 세그멘테이션 수단이 부정 비트율 포인터를 요구할 경우에 부정 비트율 포인터를 제공하는 부정 비트율 포인터 탐색 수단; 및 상기 스케줄링 및 세그멘테이션 수단의 상태 신호를 받아 외부에 기록하고 관리하고 호스트 중앙 처리 장치에 인터럽트를 거는 상태 보고 관리 수단을 포함하여 이루어지는 것을 특징으로 한다.
이하, 첨부된 도 1 내지 도 7 을 참조하여 본 발명에 따른 일실시예를 상세히 설명한다.
도 1 은 본 발명이 적용되는 일반적인 비동기 전달 모드 망 인터페이스 제어 시스템을 개략적으로 나타낸 블록도이다.
도면에 도시된 바와 같이, 주변 장치 인터페이스 국부 버스(100)를 통하여 호스트 메모리의 데이타를 읽어오는 기능을 담당하는 직접 메모리 엑세스(DMA : Direct Memory Access) 마스터(Master) 읽기부(110)와, 호스트가 셀 세그멘테이션부(130)의 레지스터나 로컬 메모리(150)에 직접 읽고 쓸 수 있도록 해 주는 직접 메모리 엑세스 슬레이브(DMA Slave)부(120)와, 트래픽 쉐이핑과 셀의 발생에 관련된 제반 기능을 수행하는 셀 세그멘테이션부(130), 직접 메모리 엑세스 슬래이브부(120)와 로컬 메모리(150) 사용에 대한 중재기능과 타이밍 인터페이스를 담당하는 로컬메모리 중재 및 인터페이스부(140), 및 직접 메모리 엑세스 마스터 읽기부(DMA Master Read)(110)와 직접 메모리 엑세스 슬래이브부(DMA slave)(120)를 호스트에 접속시키기 위한 주변 장치 인터페이스 국부 버스(PCI Local Bus : Peripheral Component Interface Local Bus)(100), 및 셀을 생성하여 보내는데 필요한 각종 데이터 스트럭쳐가 보관되어 있는 로컬 메모리부(Local Memory)(150)를 구비하고 있다.
로컬 메모리부(150)는 버퍼 디스크립터를 엔트리로 가지는 일종의 선입선출(FIFO : first in first out) 기능을 하는 전송 규(Transmit Queue)(151)와, 비동기 전달 모드 적응 계층 구조에 대한 정보와 연결된 디스크립터의 연결된 리스트(linked list)의 시작과 끝을 나타내는 정보 등을 가지고 있는 가상 채널 데이블(VC table : virtual channel table)(152)과, 버퍼 디스크립터의 정보를 저장하고 있는 버퍼 디스크립터 데이블(153)과, 운용 코드(OP code : operating code)에 관한 관련 정보를 저장하고 있는 레이트(Rate) 테이블(154), 및 상태 정보를 가지고 있는 상태 규(status Queue)(155)를 구비하고 있다.
직접 메모리 엑세스 마스터 읽기부(110)는 셀 세그멘테이션부(130)로부터 직접 메모리 엑세스 정보를 전달받아, 주변 장치 인터페이스(PCI) 국부 버스(100)를 통하여 호스트에 전달하고, 호스트로부터 데이타를 받아 셀 세그멘테이션부(130)로 전달하며, 셀 세그멘테이션부(130)에서 만들어진 비동기 전달 모드 셀의 전달과 함께 직접 메모리 엑세스의 완료를 알린다.
또한, 셀의 전달없이 직접 메모리 엑세스(DMA) 요구의 완료를 알리는 경우도 있다.
셀 세그멘테이션부(130)와 직접 메모리 엑세스 마스터 읽기부(DMA MASTER Read)(110) 사이의 직접 메모리 엑세스(DMA)의 요구와 그 완료는 다음과 같은 경우에 일어나게 된다.
① 한번의 직접 메모리 엑세스(DMA) 요구와 그 완결로 인하여 하나의 셀이 생성되는 경우.
② 두 번의 직접 메모리 엑세스(DMA) 요구와 그 완결의 결과로 하나의 셀이 생성되는 경우 (비동기 전달 모드 적응층-5(AAL type 5)의 경우 하나의 셀에 해당하는 데이타가 두개의 버퍼에 거쳐 존재하는 경우에 해당함).
③ 비동기 전달 모드 적응층-5(AAL type 5)의 경우 덧 붙이는(padding) 데이타 만으로 구성되는 셀을 생성하는 경우(세그멘테이션 회로가 별도의 신호를 사용하여 전부 덧붙이는(all-padding) 셀임을 알린다.)
④ 비동기 전달 모드 적응층-5(AAL type 5)의 경우 앞에서 요구한 직접 메모리 엑세스(DMA)의 결과로 1 셀 버퍼 및 정렬회로에 남아있는 데이타를 삭제(clear)하고자 할 경우(별도의 중단(abort) 요구신호를 사용하여 직접 메모리 엑세스(DMA)요구를 전달한다.)
직접 메모리 엑세스(DMA) 요구신호 중에는 셀 요구신호가 있는데 하나의 셀 데이타가 연속하는 두개의 버퍼에 나뉘어 존재하는 경우에 셀 세그멘테이션부(130)는 앞의 버퍼의 데이타에 대해서 셀 요구 신호를 디어서트(deassert)한 상태에서 첫번째 직접 메모리 엑세스(DMA) 읽기를 요구하고 그 직접 메모리 엑세스(DMA)가 끝나면 사용된 버퍼를 비사용 리스트(free list)로 반환한 뒤에 연결된 리스트(linked list)에 연결되어 있던 다음 버퍼 디스크립터를 읽어 나머지 데이타에 대해 셀 요구신호를 어서트(assert)한 상태에서 직접 메모리 엑세스(DMA)를 요구한다.
셀 세그멘테이션부(130)은 버퍼디스크립터를 만들어 보낼 때 패킷의 마지막 버퍼(EOP)가 0인 버퍼의 세그멘테이션 후에 47 바이트 이하의 데이타가 남는 경우에는 뒤따르는 버퍼의 내용을 합하여 반드시 하나의 셀이 만들어질 수 있도록 보장해야 하며, 패킷의 마지막 버퍼(EOP)가 1인 경우에는 모자라는 부분을 덧붙이는(padding) 바이트로 채워 보낼 수 있으므로 남은 바이트를 요구하면서 셀요구신호를 어서트(assert)하게 되고 직접 메모리 엑세스 마스터 읽기부(110)가 바이트(byte)를 가져오고 나머지 데이타는 덧 붙여(padding) 보내게 된다.
직접 메모리 엑세스 마스터 읽기부(110)는 셀요구가 없는 직접 메모리 엑세스(DMA) 요구에 대해서는 주변부 인터페이스(PCI) 국부 버스(100)에서 요구된 데이타를 가져와 1 셀 버퍼에 저장한 상태에서 직접 메모리 엑세스(DMA)의 완료를 보내게 된다. 이후에 셀요구신호와 함께 직접 메모리 엑세스(DMA)요구가 오면 나머지 데이타를 가져와 셀을 만들고 셀을 보내는 마지막 시점에 직접 메모리 엑세스(DMA)의 완료를 알리게 된다.
전송 규(Transmit Queue)(151)는 호스트가 호스트메모리에 있는 송신할 데이터에 관한 정보를 비동기 전달 모드 셀 송신 회로에 알려 줄 때 사용하며, 버퍼 디스크립터를 엔트리로 가지는 일종의 선입선출(FIFO)기로서 로컬 메모리(150)에 위치하며 전송 큐(151)의 쓰기번지는 호스트가 소프트 웨어적으로 증가시키고 읽기번지는 셀 세그멘테이션부(130)가 하드웨어적으로 증가시킨다.
전송 규(151)의 읽기와 쓰기 번지는 최대값에 도달하면 다시 처음 번지로 돌아가도록 구현됨으로써 로컬 메모리(150)의 일정영역을 선입선출 기능을 하는 부분으로 쓸수 있게 된다.
호스트에 의해 전송 규(Transmit Queue)(151)에 기록되는 버퍼 디스크립터의 구조는 다음의 표 1 과 같다.
Figure kpo00007
버퍼 디스크립터는 호스트 메모리에 존재하는 송신할 데이타에 대한 관련 정보를 주 내용으로 가지며 호스트 메모리 내에서의 버퍼의 시작번지와 그 버퍼가 가지고 있는 송신할 데이타의 바이트 수, 비동기 적응 계층-5(AAL 5 : ATM Adapatation Layer)의 경우 공통 부분 수렴 부계층 프로토콜 데이터 유니트(CPCS-PDU : Common Part Convergence Sublayer-Protocol Data Unit)의 트레일러로 사용할 값과 필요한 패딩바이트의 수(오직 패딩 에러를 확인하기 위해 사용된다.) 등이 기록되며 별도의 버퍼모드가 기록된다.
버퍼 모드(SEG MODE)는 비동기 적응 계층-5를 위하여 사용되는 값으로 패킷의 마지막 버퍼(EOP : Enod of CPCS-PDU Packet) 인지의 여부, 버퍼의 내용을 모두 전송한 후에 호스트 측으로 보고를 하여야 할 지의 여부, 현재 전송하고 있던 공통 부분 수렴 부계층 프로토콜 데이터 유니트(CPCS-PDU : Common Part Convergence Sublayer-Protocol Data Unit)의 중단(abort)을 요구하는 정보 등이 전달된다.
또한 버퍼 디스그립터에는 부정 비트율(UBR)에 속하는 연결에 해당하는 버퍼임을 나타내는 정보를 포함하고 있다.
버퍼 디스크립터가 가지는 영역 중에서 가상 채널 연결 인덱스(VCC index : virtual channel connection index)가 있는데 이 값은 상기 세그멘테이션부(130)가 전송 규(Transmit Queue)(151)에서 버퍼디스크립터를 읽어와 새로운 버퍼디스크립터를 할당받아 복사하고 그 할당받은 번지를 이용하여 연결할(connect to) 가상 채널 테이블(VC table)의 시작번지를 찾는데 사용된다.
그러나 가상 채널 테이블(VC table)에 연결된 상태에서는 버퍼 디스크립터를 연결된 리스트(linked list)로 연결하는데 필요한 다음 번지(next pointer)로 사용된다.
상기 가상 채널 테이블의 형식을 살펴보면 다음의 표 2 와 같다.
SEG_MODE CURR_DESCR(24)
RSVD(8) LAST_DESCR(24)
BUFF_RD_CNT(8) BURST_SIZE(8) CELL_COUNT(16)
ATM_HEADER(32)
CRC_32(32) : CRC_32 for AAL5
RSVD(8) UBR_NEXT_PNTR(24)
UBR_TMR_STEP(16) UBR_TMR_CNT(16)
RSVD(8) VCC_INDEX(24)
상기 표 2 에서 세그 모드(SEG_MODE)는 비동기 적응 계층의 타입과, 버퍼의 데이타가 헤더를 포함하는지 등의 정보를 나타내고, 현재 디스크립터(CURR_DSCR)와 마지막 디스크립터(LAST_DSCR)는 각각 가상 채널 테이블(VC table)에 연결된 디스크립터의 연결된 리스트(linked list)의 시작과 끝을 나타내는데, 현재 디스크립터(CURR_DSCR)값은 현재 세그멘테이션(segmentation)이 진행 중인 버퍼의 디스크립터의 번지를 나타내게 된다.
버퍼 읽기 카운터(BUFF_RD_CNT)는 현재 디스크립터에서 이미 읽어 낸 바이트의 수를 나타내며, 하나의 새로운 버퍼가 현재 디스크립터로 사용되기 시작하면 0으로 리셋(reset)되고 직접 메모리 엑세스가 진행되어 바이트를 읽어오는 만큼 증가하게 되는데 셀 세그멘테이션부(130)는 이 값을 사용하여 다음에 직접 메모리 엑세스를 시작할 번지를 알게 된다.
즉, 호스트 메모리 상의 버퍼의 시작 번지가 N이고 지금까지 그 버퍼에서 읽은 바이트 수가 M이면 새로 읽기를 시작할 번지는 N+M이 된다.
이렇게 하면 버퍼 디스크립터의 내용은 바뀌지 않고 오직 가상 채널 테이블(VC table)의 읽기 계수(count)값만 증가시키면 되므로 하나의 연결에 대해 서비스하고 나서 버퍼 디스크립터를 재 쓰기(write back)할 필요가 없게 되어 메모리 사용의 빈도를 줄일 수 있다.
레이트 테이블의 형식을 살펴보면 표 3 과 표 4 와 같다.
운용코드(OP code) 관련 데이터(Associated Data)
운용코드(OP code) 관련 데이터(Associated Data)
운용코드(OP code) 관련 데이터(Associated Data)
운용코드(OP code) 관련 데이터(Associated Data)
운용 코드 관련 데이터
"즉시 전송" 해당 연결 정보를 가지는 가상채널테이블의 시작 번지
"비할당셀삽입" 삽입할 비할당 셀의 수
"통과"
"점프" 점프할 레이트 테이블 엔트리
레이트 테이블(Rate table)(154)의 각 엔트리(entry)는 상기 표 3 과 같이 운용 코드(OP code)와 관련 데이터를 가지고 있다.
상기 표 4 에서 알수 있는 것처럼 운용 코드(OP code)에는 "즉시 전송", "비할당 셀 삽입", "통과","점프" 등의 명령이 있는데, "즉시 전송"일 경우에 관련 데이터는 셀을 보낼 연결의 가상 연결 테이블 엔트리(VC table entry)의 시작 번지를, "비할당 셀 삽입"일 경우에 관련 데이터는 삽입할 비할당 셀의 수를, "점프"일 경우에 관련 데이터는 레이트 테이블(rate table)에서 점프할 위치의 번지를 나타낸다.
"통과"일 경우는 레이트 테이블(rate table)의 다음 엔트리(entry)로 통과할 것을 나타내는 것이므로 별도의 정보가 필요 없게 된다.
도 2 는 본 발명의 일실시예에 따른 셀 세그멘테이션 장치의 구성을 나타낸 블록도이다.
도면에 도시된 바와 같이, 버퍼 연결관리기(200)와, 셀발생 스케줄링 및 세그멘테이션기(210)와, 비사용(free) 디스크립터 관리기(220)와, 부정 비트율(UBR) 포인터 탐색기(230), 상태 보고 관리기(240)를 구비하고 있다.
상기 버퍼 연결 관리기(200)는 호스트로부터 전달된 버퍼 디스크립터 정보를 해당하는 가상 채널 테이블(VC table)에 연결하는 기능을 가지며, 전송규(Transmit Queue)(151)의는 읽기번지를 하드웨어적으로 증가시킨다.
버퍼 연결 관리기(200)는 버퍼 디스크립터가 가지는 영역 중에서 가상 채널 연결 인덱스(VCC index)를 전송 큐(Transmit Queue)(151)에서 읽어와 새로운 버퍼디스크립터를 할당하여 복사하고 복사한 번지를 이용하여 연결할(connect to) 가상 채널 테이블(VC table)의 시작번지를 찾는데 사용한다.
스케듈링 및 세그멘테이션기(210)는 해당 가상 채널 테이블(VC table)에 기록된 비동기 전달 모드 적응층(AAL) 관련 정보와 가상 채널 테이블(VC table)에 연결된 버퍼 디스크립터 정보를 이용하여 호스트 메모리에서 데이타를 가져오도록 버퍼 연결 관리기(200)에 직접 메모리 엑세스(DMA) 요구를 하고, 직접 메모리 엑세스(DMA)가 끝나면 가상 채널 테이블(VC table)을 업 테이트(update)하면서 레이트 테이블(Rate Table)에 정해진 순서대로 각 연결의 셀을 발생시킨다.
비사용 디스크립터 관리기(220)는 버퍼디스크립터 중에서 어느 가상 채널 테이블(VC table)에도 연결되어 있지 않은 버퍼 디스크립터를 연결된 리스트(linked list)로 관리한다.
또한, 비사용 디스크립터 관리기(220)는 버퍼 연결 관리기(200)가 새로운 버퍼의 연결을 위해 사용중이 아닌 새로운 버퍼 디스크립터의 번지를 요구할 때 헤드(head)에 위치한 번지를 알려주며 또한 스케듈링 및 세그멘테이션기(210)가 특정 연결의 직접 메모리 엑세스를 마치고 분할하던 버퍼의 데이타가 모두 전송되어 사용하던 버퍼 디스크립터를 다시 비사용 리스트(free list)로 보내야 할 경우에 그 사용된 버퍼 디스크립터의 번지와 함께 비사용 리스트(free list)로의 반환을 요구하면 그 버퍼 디스크립터의 번지를 받아 비사용 디스크립터의 연결된 리스트(linked list)의 마지막 부분에 연결한다.
비사용 디스크립터 관리기(220)는 비사용 디스크립터가 모자라는 상황에서는 사용된 디스크립터가 새로 반환될 때까지 기다림으로써 비사용 리스트(free list)가 정상으로 유지되게 보장한다.
부정 비트율(UBR)에 해당하는 연결은 고정 비트율(CBR)과 가변 비트율(VBR)에 할당된 시간에 해당하는 연결의 송신할 정보가 없을 경우에 서비스되는데 가상 채널 테이블(VC table) 엔트리 중에서 부정 비트율(UBR)에 해당하는 것들은 가상 채널 테이블(VC table)에 가지는 다음 번지(next pointer)를 이용하여 서로 연결된 리스트(linked list)로 연결되어 있게 된다.
부정 비트율(UBR) 포인터 탐색기(230)는 이 부정 비트율 가상 채널 테이블(UBR VC table)에 대해서 항상 다음에 서비스 될 부정 비트율(UBR) 연결의 가상 채널(VC) 테이블 엔트리 번지를 찾아줌으로써 스케쥴링 및 세그멘테이션기(210)가 부정 비트1율(UBR) 포인터를 요구할 경우에 즉시 부정 비트율(UBR) 포인터를 얻을 수 있도록 하여 고정 비트율(CBR), 가변 비트율(VBR) 데이타가 없을 경우에 지체함 없이 부정 비트율(UBR) 연결의 셀이 전송될 수 있도록 한다.
부정 비트율(UBR) 포인터 탐색기(230)는 로컬메모리(150)의 효율적인 사용을 위하여 부정 비트율에 속하는 버퍼가 어느 가상 채널 테이블(VC table)에든지 1개 이상 연결되어 있을 경우에만 부정 비트율(UBR) 포인터를 탐색하도록 되어 있다.
현재 부정 비트율(UBR)에 속하는 버퍼가 전체적으로 몇 개 연결되어 있는지 파악하기 위하여 부정 비트율(UBR) 버퍼 카운터를 두는데 버퍼 디스크립터에는 부정 비트율(UBR)에 속하는 연결에 해당하는 버퍼임을 나타내는 비트를 두어 버퍼연결 관리기(200)가 버퍼를 연결할 때 부정 비트율(UBR) 버퍼카운터를 증가시킬 수 있도록 한다.
부정 비트율에 속하는 가상 체널 테이블(VC table)에는 다음 부정 비트율 번지(next UBR pointer)를 가지고 있어서 부정 비트율(UBR)끼리 서로 링(ring)으로 연결되게 된다.
부정 비트율 포인터 탐색기(230)에는 부정 비트율(UBR)의 가상 체널 테이블(VC Table) 엔트리의 번지를 찾는 프로세서가 있어서 부정 비트율 가상 체널(UBR VC) 테이블의 연결된 리스트 링(linked list ring)을 따라가며 현재 보낼 데이타가 있는 가상 채널(VC)의 시작 번지를 찾아놓고 대기상태에 있다가 상기 스케줄링 및 세그멘테이션기(210)가 부정 비트율(UBR)의 번지(pointer)를 원할 때 준비하고 있던 부정 비트율 번지(UBR pointer)를 주고 즉시 다음 부정 비트율 데이터를 찾는 작업을 실시하여 다시 대기상태에 있게 된다.
부정 비트율 포인터 탐색기(230)는 현재 사용중인 (어느 가상 채널 테이블에든지 연결되어 있는) 버퍼 디스크립터 중에서 부정 비트율 데이터에 속한 것이 하나 이상 있을 경우에만 부정 비트율 번지(Pointer)를 찾는 행위를 하게 되어 불필요한 메모리의 사용을 줄이게 된다.
이를 위하여 전체적으로 부정 비트율(UBR)에 속한 버퍼디스크립터의 수를 표시하는 레지스터를 두고 버퍼 연결 관리기(200)가 버퍼를 해당 가상 채널 테이블에 연결할 때 그 가상 채널이 부정 비트율에 속한 경우에는 이 부정 비트율 버퍼 카운터를 증가시키게 되고 부정 비트율에 속하는 버퍼가 다 사용되어 비사용 리스트(free list)로 반환될 때마다 이 카운터가 1 감소하게 된다.
부정 비트율 번지(UBR point)의 탐색은 이 카운터의 값이 영값이 아닐 경우(non-zero)일 때만 이루어진다.
스케줄링 밑 세그멘테이션기(210)는 만일 부정 비트율(UBR) 포인터를 얻을 시점에서 부정 비트율(UBR) 포인터가 준비되어 있지 않은 경우에는 비할당 셀이 전송되도록 한다.
상태 보고 관리기(240)는 스케줄링 및 세그멘테이션기(210)가 상태 보고 정보와 함꼐 상태 보고 요구 신호를 보내면 로컬 메모리의 상태큐에 순환적인 위치에 상태 정보를 기록하고 호스트 중앙 처리 장치에 인터럽트를 거는 기능을 담당한다.
상태 보고 관리기(240)는 상태정보를 래치(latch)하고 접수되었음을 알리고 나서 상태 큐(Status Queue)의 다음 번지 플래그를 읽어 호스트가 아직 읽지 않은 부분인지 확인하고 사용할 수 있는 영역이면 상태(status) 값을 적고 인터럽트를 통하여 알리게 된다.
상태 보고 관리기(240)에는 상태를 알려주는 상태정보를 기록하여 호스트로 보내면서 1로 세트(set)하고 호스트는 상태정보를 읽으면 다시 0으로 리세(reset)하는 값으로서 상기 상태보고관리기(240)가 새로운 상태정보로 호스트가 아직 읽지 않은 상태정보의 위치에 오버라이트(overwrite)하지 못하도록 방지하기 위한 것이다.
도 3 은 상기 도 2 의 디스크립터의 전달과 연결 방법을 나타낸 일예시도이다.
도면에 도시된 바와 같이, 버퍼 연결 관리기(200)는 전송 큐(Transmit Queue)(151)에 저장되어 있는 버퍼 디스크립터를 헤드(Head)의 위치로부터 하나씩 읽어 버퍼 디스크립터 테이블(153)의 사용되지 않는 버퍼 디스크립터의 위치에 복사한 후에 버퍼 디스크립터 테이블(153)의 디스크립터에 기록되어 있던 가상 채널 연결 인덱스(VCC index)를 이용하여 해당하는 가상 채널 테이블(VC table)(152)에 연결하는 기능을 담당한다.
사용할 새로운 버퍼 디스크립터의 번지는 비사용 디스크립터 관리기(220)로부터 받게 된다.
이를 위하여 버퍼 연결 관리기(200)는 전송 규(Transmit Queue)(151)의 레벨(level)을 나타내는 레지스터를 관리한다.
또한 호스트와의 통신을 위하여 별도의 레지스터(SEG_NEW라고 부르기로 함)가 있어서 호스트는 1개 또는 2개 이상의 버퍼 디스크립터를 전송 큐(Transmit Queue)(151)에 차례로 적은 후에 기록해 넣은 버퍼 디스크립터의 숫자를 이 특정 레지스터에 쓴다.
버퍼 연결 관리기(151)는 세그 뉴(SEG_NEW)에 영 값이 아닌(non-zero) 값이 쓰여 진 것을 감지하면 이 값을 현재의 전송 큐(Transmit Queue)(151) 레벨 카운터에 더하는 동시에 세그 뉴(SEG_NEW) 레지스터를 클리어한다.
또한 버퍼 연결 관리기(200)는 전송 큐(Transmit Queue)(151) 레벨 카운터가 0이 아닐 경우에는 전송 큐(Transmit Queue)(151)의 헤드(Head)위치에서 하나씩 버퍼 디스크립터를 가져오면서 전송 큐(Transmit Queue)(151)의 레벨 카운터를 1 감소시키고 비사용디스크립터 관리기(220)로부터 사용하지 않고 있는 버퍼 디스크립터의 번지를 할당받아 읽어 온 디스크립터의 내용을 복사하고 그 버퍼 디스크립터에 있던 가상 채널 연결 인덱스(VCC index)의 값과 새로 할당받은 디스크립터의 번지를 이용하여 새로 가져온 디스크립터를 해당 가상 채널 연결 테이블(VCC table)에 연결한다.
이러한 버퍼 연결작용은 전송 큐(Transmit Queue)(151) 레벨 카운터가 0이 아닐 경우에는 계속 일어나게 된다.
이렇게 하여 전송 큐(Transmit Queue)(151)의 레벨 카운터는 항상 해당 시점의 전송 큐(Transmit Queue)(151)에 남아 있는 연결되지 않은 디스크립터의 수를 나타내게 되는데 호스트의 중앙 처리 장치는 이 값을 읽어봄으로써 전송 큐(Transmit Queue)(151)의 남은 양을 알 수 있어 오버플로우(overflow)를 방지할 수 있다.
전송 큐(Transmit Queue)(151)의 레벨 카운터의 값을 조정하는 회로는 호스트의 요구로 세그 뉴(SEG_NEW)의 값을 레벨 카운터에 더할 때와 전송 큐(Transmit Queue)(151)에서 하나의 디스크립터가 읽혀져서 레벨 카운트의 값이 1 감소할 때는 두 이벤트(event)가 동시에 일어나지 않도록 중재하는 기능도 담당한다. 또한 세그 뉴(SEG_NEW)에 쓰여진 값이 송신 큐(Queue)를 오버 플로우(overflow)상태로 가게 할 경우에는 세그 뉴(SEG_NEW)에 쓰여진 값을 더하지 않고 무시하며 인터럽트를 통하여 중앙 처리 장치로 알리게 된다.
도 4 는 상기 도 2 의 버퍼 연결의 과정을 나타낸 일예시도이다.
도면에 도시된 바와 같이, 먼저 비사용 디스크립터 관리기(220)로부터 새로운 버퍼디스크립터의 번지를 받은 후 전송 큐(Transmit Queue)(151)에서 하나의 버퍼디스크립터의 데이타를 읽어와 이 번지에 그대로 기록한다.
이 과정에서 그 버퍼 디스크립터에 쓰여 있던 가상 채널 연결 인덱스(VCC index)는 따로 기억하여 두고 가상 채널 연결 인덱스(VCC index)가 쓰여 있던 부분은 가상 채널 테이블(VC table)(152)에 연결될 때는 다음 번지(next pointer)로 사용되게 되므로 할당받은 번지에 복사할 때는 연결된 리스트(linked list)의 마지막을 나타내는 널(null) 값으로 써야 한다.
또한 버퍼 디스크립터의 모드는 오버 라이트(overwrite)하지 않도록 한다.
기억해 둔 가상 채널 연결 인덱스(VCC index)는 그 디스크립터가 몇 번째 가상 체널 테이블(VC table) 엔트리에 속하는가를 나타내므로 가상 채널 테이블(VC table)의 베이스 어드레스(base address)와 가상 채널 연결 인덱스(VCC index)를 알면 해당하는 연결의 가상 채널 테이블(VC table) 엔트리의 시작번지를 알 수 있다.
이렇게 얻어진 가상 체널 테이블(VC table) 엔트리의 시작번지로 해당 연결의 현재 디스크립터의 포인터와 마지막 디스크립터의 포인터를 읽어온다.
현재의 디스크립터의 포인터는 현재 세그멘테이션이 진행중인 버퍼의 디스크립터 번지를 나타내며 마지막 디스크립터 포인터는 그 가상 채널 테이블(VC table)에 연결된 버퍼 디스크립터 연결된 리스트(linked list)의 마지막 디스크립터 번지를 나타낸다.
현재 (CURRENT)값이 0이면 현재 그 가상 채널 테이블(VC table)에 연결된 디스크립터가 없다는 뜻이므로 현재(CURRENT)와 마지막(LAST) 영역에 새로 연결되고자 하는 디스크립터의 번지를 써 준다.
만약 현재(CURRENT)값이 0이 아니면 먼저 마지막(LAST)이 가르키는 번지에 있는 디스크립터의 다음(next) 부분을 현재 연결하고자 하는 디스크립터의 번지로 써 준 후에 마지막(LAST) 값에 같은 값을 써 준다.
이렇게 함으로써 새로운 디스크립터가 기존의 연결된 리스트(linked list)에 연결되게 된다.
한편, 버퍼 연결 관리기(200)와 스케쥴링 및 세그멘테이션기(210)가 동시에 같은 가상 채널 테이블을 사용하면 데이타의 동기문제가 발생할 수 있다.
예를 들어 스케쥴링 및 세그멘테이션기(210)가 어느 시점에서 특정 가상 채널 테이블을 읽어가서 처리하고 있는 도중에 버퍼 연결 관리기(200)가 가상 채널 테이블의 현재(CURRENT)와 마지막(LAST)값을 읽어 판단을 하여 새로운 버퍼를 연결했다고 하면 스케쥴링 및 세그멘테이션기(210)가 그 가상 채널 연결에 대해서 셀을 보내고 다시 가상 채널 테이블(VC table)을 다시 쓰기(write back)하였을 경우에 버퍼 연결 관리기(200)가 연결해 놓은 버퍼의 정보를 잃어버리게 된다.
이런 경우에는 서로 사용중인 가상 채널을 알려주어 동시에 하나의 엔트리만 그 값을 사용할 수 있도록 함으로써 동기화(coherency) 문제를 방지할 수 있다.
그러나 메모리의 읽고 쓰기에 있어 레턴시(latency)가 있는 경우에는 해결하기가 더 힘이든데 버퍼 연결 관리기(200)는 현재(CURRENT)와 마지막(LAST)값을 읽기 전에 스케쥴링 및 세그멘테이션기(210)에 가상 채널 테이블을 읽을 것을 요구하고 허락이 오면 가상 채널 테이블을 읽어서 판단을 하고 연결이 완전히 끝난 후에( 가상 채널 테이블에 현재(CURRENT)와 마지막(LAST)값이 다 쓰여진 후에) 버퍼의 연결이 끝났음을 알리는 방법을 사용할 수 있다.
이때 스케쥴링 및 세그멘테이션기(210)는 레이트 테이블(Rate Table)(154)을 읽기 전에 버퍼 연결 관리기(200)의 요구가 있는지 확인하여 요구가 있을 경우에는 레이트 테이블(Rate Table)(154)의 읽기를 중지하고 있다가 연결이 끝났다는 신호를 받으면 재개하도록 하면 된다.
이러한 방식이 메모리 중재 및 인터페이스가 읽기와 쓰기 간에 순환적으로 서비스되는 경우에 사용 가능하다.
버퍼 연결 관리기(200)는 하나의 연결이 끝나면 스케쥴링 및 세그멘테이션기(210)에 이 사실을 알리고 다음 디스크립터의 연결 처리로 진행할 수 있으나 가상 채널 테이블(VC table)을 읽기 전에는 마찬가지로 스케쥴링 및 세그멘테이션기(210)의 허락을 받을 때까지 기다려야 한다.
도 5 는 상기 도 2 의 스케듈링 및 세그멘테이션기의 구성을 나타낸 블록도이다.
도면에 도시된 바와 같이, 스케쥴링 및 세그멘테이션기(210)는 전체의 셀 세그멘테이션부(130)의 주 처리부분으로서 주 제어를 담당하는 상태머싱(statemachine)인 제어기(520)와, 로컬 메모리(150)에서 읽어온 데이터를 가상 채널 테이블(152)에 저장하고 가상 채널 테이블(152)의 값과 해당 버퍼 디스크립터의 값을 종합하여 제어기(520)가 필요로 하는 제어 정보를 제공하고 또한 직접 메모리 엑세스 요구에 필요한 파라미터를 추출하여 제어기(520)의 명령을 받아 직접 메모리 엑세스 마스터 읽기부(110)에 직접 메모리 엑세스 요구를 전달하고 직접 메모리 엑세스가 완료되는 시점에서 로드되어 있는 가상 채널 테이블을 업테이트(update)하는 기능을 담당하는 가상 채널 테이블 해석기(500)와, 로컬 메모리(150)에서 읽어 온 버퍼 디스크립터의 내용을 보관하기 위한 버퍼 디스크립터 레지스터 파일(510), 및 물리계층으로 셀을 전달하기 전에 일시적으로 셀을 보관하기 위한 셀 버퍼(530)를 구비하고 있다.
제어기(520)는 로컬 메모리(150)에서 레이트 테이블(Rate Table)(154)의 테이터를 읽고 이에 해당하는 가상 채널 테이블(152)과 가상 채널 테이블(152)에 연결된 버퍼 디스크립터를 읽는 일과 직접 메모리 엑세스 종료 후에 업테이트(update)된 가상 채널 테이블(VC Table)의 테이타를 로컬 메모리(150)에 다시 적는 기능을 담당하는데 이 과정에서 가상 채널 테이블(VC table)(152)의 연결된 버퍼의 유무 및 셀을 생성하는데 필요한 충분한 데이타가 있는지의 여부, 직접 메모리 엑세스 후에 버퍼의 데이타가 모두 전송되는지 등의 정보를 가상 채널 테이블 해석기(500)로부터 받아 가상 채널 테이블 읽기, 버퍼 디스크립터 읽기, 직접 메모리 엑세스 요구, 버스트의 경우 다수의 직접 메모리 엑세스 요구, 가상 채널 테이블 다시 쓰기, 부정 비트율 서비스로의 전환, 비할당셀의 삽입 등 제어의 흐름을 조정한다.
가상 채널 테이블 해석기(500)는 읽혀진 가상 채널 테이블의 값을 가지고 있으며 비동기 적응 계층의 타입 등의 정보와 현재의 디스크립터의 값을 기준으로 현재 버퍼에 남아 있는 전송할 데이타의 양, 그리고 후속 디스크립터가 이미 연결되어 있는지의 여부 등을 기준으로 직접 메모리 에세스를 요구할 수 있는지, 그 경우 호스트 메모리의 몇 번지부터 몇 바이트의 데이타를 직접 메모리 엑세스 읽기 요구해야 하는지의 정보와 함께 비동기 전달 모드 셀 헤더 값, 부분 순환 리던던스 검토(partial CRC : partial Cyclic Redundancy)값, 공통 부분 수렴 부계층 프로토콜 데이터 유니터(CPCS-PDU)의 트레일러 값 등 직접 메모리 엑세스 요구 파라미터를 생성하고 제어기(520)의 명령을 받아 직접 메모리 엑세스를 요구한다.
또한, 가상 채널 테이블 해석기(500)는 직접 메모리 엑세스의 완료신호와 함께 가상 채널 테이블(VC table)(152)을 업 테이트(update)하는 기능을 담당하는데 비동기 전달 모드 적응층-5(AAL type 5)의 경우는 다음에 순환 리던던스 검토 32(CRC32)의 계산을 할 때 시작값으로 사용할 순환 리던던스 검토 32(CRC32)의 값도 새로 로드(load)되게 된다.
또한, 가상 채널 테이블 해석기(500)는 제어기(520)측으로 현재(CURRENT)와 마지막(LAST)값 외에 제어에 필요한 몇 가지 정보를 제공하는데 대표적인 것으로는 한 셀을 만들기에 충분한 데이타가 있는지의 여부와 그런 경우에 직접 메모리 엑세스 후에 그 버퍼를 비사용 리스트(free list)로 돌려 보내야 하는지의 여부이다.
이러한 정보는 가상 채널 테이블 해석기(500)에서 디코드(decode)할 수도 있고 또는 모든 값을 제어기(520)로 보내어 제어기(520)에서 필요로 하는 정보를 디코드(decode)하게 할 수도 있으나 근본적으로는 차이가 없다.
가상 채널 테이블과 현재의 버퍼 디스크립터가 로드(load)된 상황에서 직접 메모리 엑세스를 요구해야할 지의 여부와 직접 메모리 엑세스와 함께 셀을 요구할 지의 여부, 그리고 버퍼를 비사용으로 돌려야 하는 지의 여부는 중단(Abort) 지시의 유무, 완전 셀 타입(Full Cell Type)인지의 여부, 비동기 전송 모드 적응 계층의 타입, 남아 있는 바이트 수, 후속 버퍼가 있는지의 유무, 비동기 전송 모드 적응 계층-5(AAL 5)의 경우 패킷의 마지막 버퍼(EOP)의 값, 두 버퍼에 걸쳐 직접 메모리 엑세스할 경우 두 번째 직접 메모리 엑세스를 할 차례인지 등의 여부를 종합하여 결정하게 된다.
비동기 전송 모드 적응 계층-5(AAL type 5)의 경우에 남아있는 바이트 수가 작더라도 버퍼 디스크립터에 패킷의 마지막 버퍼(EOP)로 세트되어 있는 경우는 모자라는 부분 만큼을 덧붙이(padding)기를 하도록 하고 UUI비트(비동기 전송 모드 적응 계층-5(AAL 5)에서 공통 수렴 부계층 프로토콜 데이터 유니터(CPCS-PDU)의 마지막 셀임을 나타내는 표시로서 셀 헤더의 CPI의 상위 비트를 사용한다.)를 1로 세트하도록 하여 직접 메모리 엑세스를 요구하게 된다.
특기할 것은 비동기 전송 모드 적응 계층-5(AAL 5)의 경우 버퍼에 패킷의 마지막 버퍼(EOP)가 세트(set)되어 있지 않고 현재의 버퍼에 하나의 셀을 만들 데이타가 충분하지 않을 경우에 후속 버퍼가 없는 경우에는(CURR = LAST) 그 가상 채널 연결의 서비스를 중단하고 부정 비트율 서비스나 비할당셀 삽입으로 넘어가지만 만약 다음 버퍼가 이미 연결되어 있을 경우에는(CURR ≠ LAST) 다음 버퍼의 데이타를 포함하면 하나의 셀이 만들어 질 것으로 가정하고 현재의 버퍼의 남아있는 데이타에 대해서 직접 메모리 엑세스를 요구하고 나서 직접 메모리 엑세스가 끝나고 나면 다음 버퍼 디스크립터를 읽어와서 나머지 데이타에 대해서 직접 메모리 엑세스를 요구한다는 것이다.
이때 처음 직접 메모리 엑세스에 대해서는 셀의 전달을 요구하지 않는다는 것을 별도의 신호를 통하여 전달하고 두 번째 직접 메모리 엑세스에 대해서는 정상적인 경우와 같이 비동기 전송 모드 셀의 전달을 요구한다.
버퍼 디스크립터 레지스터 파일(510)은 제어기(520)의 제어를 받아 읽혀진 버퍼 디스크립터의 내용을 보관하고 있으며 가상 채널 테이블 해석기(500)로 버퍼 디스크립터의 값을 제공하여 앞에서 설명한 직접 메모리 엑세스 파라미터 및 제어 관련 정보들을 추출할 수 있도록 한다.
도 6 은 상기 도 5 의 셀 버퍼의 구성을 나타낸 블록도이다.
도면에 도시된 바와 같이, 쓰기 및 삽입 제어기(600)는 직접 메모리 엑세스의 결과로 전달되는 셀을 셀 선입선출기(620)에 적는 기능을 담당하며 동시에 제어기(520)에서 오는 비할당 셀 삽입요구에 따라 요구된 수 만큼의 비할당 셀을 다중화기(630)를 통하여 셀 선입선출기(620)에 써 넣고 완료됨을 알리며, 요구된 수 만큼의 비할당셀을 삽입하면서 항상 버퍼의 레벨을 감시하여서 오버 플로우(overflow)가 일어나지 않도록 보장하며 감시한 결과를 읽기 제어기(610)와 쓰기 및 삽입 제어기(600)에 전달한다.
읽기 제어기(610)는 셀 선입선출기(620)에 읽기 제어신호를 전송한다.
셀 선입선출기(620)는 쓰기 및 삽입 제어기(600)과 읽기 제어기(610)의 제어를 받아 다중화기(630)을 통해 직접 메모리 엑세스 마스터 읽기부(110)의 출력과 쓰기 및 삽입 제어기(600)의 비할당 셀을 입력받아 먼저 들어온 신호를 먼저 출력하는 기능을 담당한다.
다중화기(630)은 직접 메모리 엑세스 마스터 읽기부(110)의 출력과 쓰기 및 삽입 제어기(600)의 비할당 셀을 입력받아 다중화하여 셀 선입 선출기(620)에 제공한다.
제어기(520)는 비할당 셀의 삽입이 끝나면 다음 엔트리(entry)를 읽도록 되어 있다. 레이트 테이블(Rate Table)(154)의 운용 코드(OP code)가 "점프"일 경우에는 함께 읽혀진 번지로 점프하여 새로운 엔트리를 읽어 들여 레이트 엔트리(rate table)(154) 읽기를 계속한다.
도 7 은 도 5 의 제어기의 간략화된 상태 천이도이다.
도면에 도시된 바와 같이, 제어기(520)는 대기상태(600)에서 송신 기능이 인 에이블(enable)되어 있을 경우 레이트 테이블(Rate Table)을 순차적으로 읽으며(601), 셀의 발생을 수행한다.
운용 코드(OP code)가 "비할당 셀 삽입"일 경우는 셀 버퍼에게 지정된 수의 비할당 셀 삽입을 요구하고(602) 완료되면 레이트 테이블(Rate Table)의 다음 엔트리를 읽는다(601).
요구 신호를 셀 버퍼(530)로 보내어 셀 버퍼(530)로 지정된 수 만큼의 비할당 셀이 삽입되도록 요구하고 완료될 때까지 기다린다.
또한 운용 코드(OP code)가 "통과"일 경우는 다음 번지로 진행하고 "점프"일 경우는 표시된 번지로 점프하여 레이트 테이블 읽기를 계속한다(603).
읽어 들인 운용 코드가 "즉시 전송"일 경우 해당 가상 채널 테이블(VC table)을 읽어 와서(604) 해독기(500)에 로드하고 현재(Current) 값을 해석하여 적어도 하나 이상의 버퍼가 연결되어 있고(CURR≠0), 부정 비트율 데이터가 아니거나 부정 비트율 데이터이나 시간이 경과한 경우에는 가상 채널 테이블(VC table)의 현재 디스크립터(Current descriptor) 포인터 값이 가리키는 버퍼 디스크립터를 읽어(606) 버퍼 디스크립터 레지스터 파일(510)에 로드하게 된다.
현재(Current) 값을 해석하였을 때 부정 비트율 데이터이면서 시간이 남았을 경우에는 비 할당 셀 삽입을 셀 버퍼(530)에 요구하고(612), 만약 가상 채널 테이블이 로드된 상태에서 연결된 버퍼 디스크립터가 없는 경우에는(즉, CURR값이 0이면) 부정 비트율 연결을 서비스하기 위해서 부정 비트율의 가상 채널 테이블 포인터를 패치(fetch)하는 상태로 천이하게 된다(613).
부정 비트율의 가상 채널 테이블의 가상 채널 테이블 포인터를 패치한 후에는 비할당 셀을 삽입하고(612), 레이트 테이블을 읽는 과정(601)으로 천이한다.
현재 디스크립터(Current descriptor) 포인터 값이 가리키는 버퍼 디스크립터를 읽은 후에(606) 해당 가상 연결 테이블(VC table)과 전송할 데이타 버퍼의 디스크립터가 실리고 나면 가상 채널 테이블 해석기(500)가 직접 메모리 엑세스 요구가 가능한지를 해석한다(607).
해석 결과 데이터가 불충분하고 직접 메모리 엑세스 경험이 없으며 부정 비트율이 아니면 부정 비트율 포인터를 패치하고(613), 데이터가 불충분하고 직접 메모리 엑세스 경험이 없으며 부정 비트율이 '1'이면 부정 비트율을 '0'으로 놓으면서 비할당 셀 삽입을 요구하고(612) 완료 신호가 오면 다시 레이트 테이블 읽기로 천이하고(601), 직접 메모리 엑세스가 가능한 것을 알게 되면 가상 채널 테이블 레지스터 파일(510) 측으로 직접 메모리 엑세스의 요구를 한 후에 대기 상태에 있게 된다(608).
제어기(520)는 가상 채널 테이블 레지스터 파일(510)로부터 직접 메모리 엑세스 완료 메시지 수신하면 직접 메모리 엑세스 플래그를 '1'로 놓고 버퍼 소진이 아니면 다시 직접 메모리 엑세스를 필요한지를 판단하고(610), 버퍼가 다 소진되었으면 버퍼 교환 플래그를 '1'로 놓은 후에 버퍼 디스크립터를 비사용으로 놓은 후에(609) 다시 직접 메모리 엑세스 할지를 판단한다(610).
버스트 전송을 위하여 새로운 가상 채널 테이블을 로드한 상태에서 셀을 보낼 때는 버스트 카운트를 버스트 값으로 로드하고 직접 메모리 엑세스를 마칠 때마다 버스트 카운트를 1씩 감소시키게 된다.
직접 메모리 엑세스가 끝난 후 다시 직접 메모리 엑세스를 수행하는 경우는 두 가지로 나뉘어지는데 첫째는 하나의 셀 데이타가 두개의 버퍼에 나뉘어 존재한 경우에 첫번째 버퍼에 대해 직접 메모리 엑세스를 마친 경우이고 (Split DMA) 두번째는 버스트 카운트가 아직 0이 되지 않은 경우이다.
스플리트 직접 메모리 엑세스(Split DMA)의 경우는 직접 메모리 엑세스가 마치는 순간에 자동적으로 가상 채널 테이블의 현재(CURRENT)값이 영이 아닌(non-zero)경우는 다음 버퍼의 번지로 업 테이트(update)된다.
따라서 버퍼 디스크립터 읽기부터 새로 시작하면 된다.
두 번째 경우(버스트 카운트 값이 아직 0이 되지 않았을 경우)에는 가상 채널 테이블과 버퍼 디스크립터를 그대로 둔 채로 버스트 카운트가 0이 될 때까지 직접 메모리 엑세스 요구/완료 및 가상 채널 테이블의 업 테이트(udpate)를 반복한다.
버스트 카운트가 0이 되기 전에 전송할 데이타가 떨어지면 새로 업 테이트(update)된 현재(CURRENT)값이 0일 경우는 일단 가상 채널 테이블 쓰기 과정으로 갔다가(611) 나중에 부정 비트율 서비스로 전환한다.
이를 위하여 부정 비트율 레프트(UBR_LEFT)라는 플래그를 사용한다. 만약 (updated된) 현재(CURRENT) 값이 영이 아니면 버퍼 디스크립터 읽기부터 새로 시작하고 현재(CURRENT) 값이 영이 아니지만 그것이 사용 중이던 버퍼라면 직접 메모리 엑세스를 경험했음을 나타내는 플래그(flag)를 세트(set)하고 같은 버퍼를 가지고 남은 바이트가 충분한지 확인하게 된다.
이 때 만약 남은 바이트가 직접 메모리 엑세스에 충분하다면 직접 메모리 엑세스를 요구하는 상태로 가서 직접 메모리 엑세스를 반복하게 되고 만약 남은 바이트가 직접 메모리 엑세스를 하기에 부족하다면 직접 메모리 엑세스를 경험했을 경우에 가상 채널 테이블을 다시 써 넣는 상태로 천이한다.
만약 가상 채널 테이블에 표시된 버스트(burst)만큼 셀을 만들지 못하고 데이타가 충분하지 못하여 버스트를 끝내는 경우에는 부정 비트율 데이타를 보내게 되며 부정 비트율 포인터가 준비되어 있지 않거나 부정 비트율 포인터가 있어 부정 비트율 서비스로 넘어갔더라도 직접 메모리 엑세스에 충분한 데이타도 준비되어 있지 않을 경우에는 비할당 셀이 전달되도록 한다.
판단 결과, 부정 비트율이 아니고 버스트 카운터가 영이 아니고 버퍼가 있으면 버퍼를 교환 했을 경우 버퍼 교환 플래그를 '0'으로 놓고 버퍼 디스크립터를 읽는 과정(606)으로 이행하고, 버퍼를 교환하지 않았을 때 직접 메모리 엑세스 플래그를 '1'로 놓은 후에 직접 메모리 엑세스 가능 여부를 해석하는 과정(607)으로 이행한다.
판단 결과, 버스트 카운트가 영 또는 부정 비트율이거나, 부정 비트율이 아니고 버스트 카운터가 영이 아니고 현재(current) 플래그가 영이면 부정 비트율 레프트(UBR_LEFT) 플래그를 '1'로 놓은 후에 가상 채널 테이블에 쓴다(611).
가상 연결 테이블에 쓴 후에 부정 비트율 레프트 플래그가 '0'이면 대기 상태(600)로 이행하고, 부정 비트율 레프트 플래그가 '1'이면 부정 비트율 레프트를 '0'으로 한 후에 부정 비트율 포인터를 패치하는 과정(613)으로 이행한다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 있어 본 발명의 기술적 사상을 벗어나지 않는 범위내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 한정되는 것이 아니다.
상기와 같은 본 발명은, 다수의 연결에 대해서 모든 제어정보를 관리하며 비동기 전송 모드 세그멘테이션을 수행하며 직접 메모리 엑세스 마스터 읽기를 하면서 셀을 만들기 때문에 최소한의 호스트 중앙 처리 장치의 개입으로 높은 성능을 얻을 수 있는 효과가 있다.

Claims (3)

  1. 가상 채널 정보를 새로운 비사용 버퍼 디스크립터 번지에 복사하여 해당 가상 채널 테이블에 연결하는 버퍼 연결 관리 수단;
    호스트 시작 정보를 수신하여 외부에 직접 메모리 엑세스를 요구하고, 외부로부터 형성된 셀을 입력받아 저장한 후에 순차적으로 출력하며, 사용된 번지를 비사용번지로 반환하는 요구 신호와 상태 정보를 출력하는 스케듈링 및 세그멘테이션 수단;
    상기 스케듈링 및 세그멘테이션 수단으로부터 사용된 번지에 대한 비사용 번지로 반환 요구를 받아 사용된 번지를 비사용 번지로 반환하고 상기 버퍼 연결 관리 수단의 비사용 버퍼 디스크립터 번지 요구에 대해 새로운 비사용 버퍼 디스크립터 번지를 제공하는 비사용 디스크립터 관리 수단;
    가상 채널 정보중에 부정 비트율에 대한 번지를 탐색하여 상기 스케쥴링 및 세그멘테이션 수단이 부정 비트율 포인터를 요구할 경우에 부정 비트율 포인터를 제공하는 부정 비트율 포인터 탐색 수단; 및
    상기 스케줄링 및 세그멘테이션 수단의 상태 신호를 받아 외부에 기록하고 관리하고 호스트 중앙 처리 장치에 인터럽트를 거는 상태 보고 관리 수단
    을 포함하여 이루어진 비동기 전송 모드 셀 세그멘테이션 장치.
  2. 제 1 항에 있어서,
    상기 스케쥴링 및 세그멘테이션 수단은,
    가상 채널 정보와 버퍼 디스크립터 정보를 입력받아 호스트 시작번지를 인식하여 출력하며, 직접 메모리 엑세스 요구 신호를 입력받아 호스트로 출력하는 가상 채널 테이블 해석 수단;
    상기 비사용 디스크립터 관리 수단에 사용된 번지를 비사용 버퍼 디스크립터 번지로 반환할 것을 요구하고, 상기 부정 비트율 포인터 탐색 수단에 부정 비트율 포인터 탐색을 요구하여 부정 비트율 호스트 번지를 입력받으며, 상기 상태 보고 관리 수단에 상태를 보고하며, 상기 가상 채널 테이블 해석 수단에 직접 메모리 엑세스 요구 신호를 출력하며, 셀 출력 제어 신호를 발생하는 제어 수단;
    외부로부터 형성된 셀을 입력받아 상기 제어 수단의 제어에 의해 먼저 입력된 신호를 먼저 출력하는 셀 버퍼 수단; 및
    상기 제어 수단에 의해 외부로부터 입력된 버퍼 디스크립터 정보를 일시 저장한 후에 상기 가상 채널 테이블 해석 수단에 제공하는 버퍼 디스크립터 레지스터 수단
    을 포함하여 이루어진 비동기 전송 모드 셀 세그멘테이션 장치.
  3. 제 2 항에 있어서,
    상기 셀 버퍼 수단은,
    외부로부터 형성된 셀 신호와 비할당 셀 삽입 신호를 입력받아 다중화하여 출력하는 다중화 수단;
    다중화된 신호를 일시 저장하여 먼저 입력된 신호를 먼저 출력하고, 오버 플로우 발생 여부에 대한 정보를 출력하는 선입 선출 수단;
    상기 선입 선출 수단에 읽기 제어 신호를 제공하고, 외부로 인터렙트 신호를 출력하는 읽기 제어 수단; 및
    직접 메모리 엑세스의 결과로 전달되는 셀을 상기 선입 선출 수단에 기록하고, 상기 제어 수단에서 오는 비할당 셀 삽입 요구에 따라 비할당 셀을 상기 다중화 수단에 제공하는 쓰기 및 읽기 제어 수단
    을 포함하여 이루어진 비동기 전송 모드 셀 세그멘테이션 장치.
KR1019970073035A 1997-12-24 1997-12-24 비동기 전달 모드 셀 세그멘테이션 장치 KR100256679B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019970073035A KR100256679B1 (ko) 1997-12-24 1997-12-24 비동기 전달 모드 셀 세그멘테이션 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970073035A KR100256679B1 (ko) 1997-12-24 1997-12-24 비동기 전달 모드 셀 세그멘테이션 장치

Publications (2)

Publication Number Publication Date
KR19990053412A KR19990053412A (ko) 1999-07-15
KR100256679B1 true KR100256679B1 (ko) 2000-05-15

Family

ID=19528445

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970073035A KR100256679B1 (ko) 1997-12-24 1997-12-24 비동기 전달 모드 셀 세그멘테이션 장치

Country Status (1)

Country Link
KR (1) KR100256679B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100369403B1 (ko) * 1999-12-07 2003-01-30 사단법인 고등기술연구원 연구조합 Aal 처리를 위한 호스트 인터페이스 장치 및 그 제어방법

Also Published As

Publication number Publication date
KR19990053412A (ko) 1999-07-15

Similar Documents

Publication Publication Date Title
US5761427A (en) Method and apparatus for updating host memory in an adapter to minimize host CPU overhead in servicing an interrupt
JP3863912B2 (ja) データ伝送の自動開始装置
US5625825A (en) Random number generating apparatus for an interface unit of a carrier sense with multiple access and collision detect (CSMA/CD) ethernet data network
US5796735A (en) System and method for transmission rate control in a segmentation and reassembly (SAR) circuit under ATM protocol
US5446726A (en) Error detection and correction apparatus for an asynchronous transfer mode (ATM) network device
US6970966B2 (en) System of distributed microprocessor interfaces toward macro-cell based designs implemented as ASIC or FPGA bread boarding and relative common bus protocol
US5640399A (en) Single chip network router
US6741562B1 (en) Apparatus and methods for managing packets in a broadband data stream
US5802287A (en) Single chip universal protocol multi-function ATM network interface
US5594927A (en) Apparatus and method for aligning data transferred via DMA using a barrel shifter and a buffer comprising of byte-wide, individually addressabe FIFO circuits
KR980013142A (ko) 비동기 전송 방식 통신 네트워크, 시스템 처리 성능 및 메모리 이용 증진 방법
EP0939573A2 (en) ATM cell transmission scheduling
EP0752799A2 (en) Interrupt modulator for receiving bursty high speed network traffic
GB2344030A (en) Credit-based scheme for packet communication system.
EP3058684B1 (en) Network interface
US6421343B1 (en) Asynchronous transfer mode host adapter apparatus with ability of shared media access
US20040028053A1 (en) Direct memory access circuit with ATM support
KR100256679B1 (ko) 비동기 전달 모드 셀 세그멘테이션 장치
EP1555620B1 (en) Stream memory manager
Kim et al. Design and implementation of a high-speed ATM host interface controller
Osborne et al. DART-a low overhead ATM network interface chip
KR100236941B1 (ko) 비동기 전달 모드 셀 세그멘테이션 시스템의 직접 메모리 읽기및 셀 송출 장치
WO1994015438A1 (en) Device for the conversion of data blocks, frame structured, into atm cells and vice versa
JP3217667B2 (ja) Atm通信制御方法及びその装置
JP2848370B2 (ja) 通信回線監視装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20040202

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee