KR100240729B1 - 매체 액세스 제어/호스트 시스템 인터페이스를 구현하기 위한 방법 및 장치 - Google Patents

매체 액세스 제어/호스트 시스템 인터페이스를 구현하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR100240729B1
KR100240729B1 KR1019990018424A KR19990018424A KR100240729B1 KR 100240729 B1 KR100240729 B1 KR 100240729B1 KR 1019990018424 A KR1019990018424 A KR 1019990018424A KR 19990018424 A KR19990018424 A KR 19990018424A KR 100240729 B1 KR100240729 B1 KR 100240729B1
Authority
KR
South Korea
Prior art keywords
bsi
data
request
frame
host
Prior art date
Application number
KR1019990018424A
Other languages
English (en)
Inventor
트라바그리오마크에이.
영데스몬드더블유.
함스트라제임스알.
브리프데이비스시.
Original Assignee
클라크 3세 존 엠.
내셔널 세미콘덕터 코포레이션
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
Priority claimed from KR1019910006778A external-priority patent/KR100240726B1/ko
Application filed by 클라크 3세 존 엠., 내셔널 세미콘덕터 코포레이션 filed Critical 클라크 3세 존 엠.
Application granted granted Critical
Publication of KR100240729B1 publication Critical patent/KR100240729B1/ko

Links

Classifications

    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F16ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
    • F16BDEVICES FOR FASTENING OR SECURING CONSTRUCTIONAL ELEMENTS OR MACHINE PARTS TOGETHER, e.g. NAILS, BOLTS, CIRCLIPS, CLAMPS, CLIPS OR WEDGES; JOINTS OR JOINTING
    • F16B37/00Nuts or like thread-engaging members
    • F16B37/08Quickly-detachable or mountable nuts, e.g. consisting of two or more parts; Nuts movable along the bolt after tilting the nut
    • F16B37/0807Nuts engaged from the end of the bolt, e.g. axially slidable nuts
    • EFIXED CONSTRUCTIONS
    • E04BUILDING
    • E04GSCAFFOLDING; FORMS; SHUTTERING; BUILDING IMPLEMENTS OR AIDS, OR THEIR USE; HANDLING BUILDING MATERIALS ON THE SITE; REPAIRING, BREAKING-UP OR OTHER WORK ON EXISTING BUILDINGS
    • E04G17/00Connecting or other auxiliary members for forms, falsework structures, or shutterings
    • E04G17/001Corner fastening or connecting means for forming or stiffening elements
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F16ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
    • F16BDEVICES FOR FASTENING OR SECURING CONSTRUCTIONAL ELEMENTS OR MACHINE PARTS TOGETHER, e.g. NAILS, BOLTS, CIRCLIPS, CLAMPS, CLIPS OR WEDGES; JOINTS OR JOINTING
    • F16B37/00Nuts or like thread-engaging members
    • F16B37/16Wing-nuts

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Mechanical Engineering (AREA)
  • Architecture (AREA)
  • Civil Engineering (AREA)
  • Structural Engineering (AREA)
  • Small-Scale Networks (AREA)
  • Communication Control (AREA)

Abstract

본 발명은 근거리 통신망과 상기 네트워크에 부착된 스테이션과 연관된 메모리 시스템 사이의 정보 전송을 위한 인터페이스 시스템에 관한 것이다. 인터페이스 시스템은 인터페이스 시스템과 메모리 시스템사이의 정보의 전송을 구현하기 위한 버스 인터페이스 유닛을 포함한다. 인디케이트 모듈은 네트워크로부터 인터페이스 시스템에 의해 수신된 정보를 버스 인터페이스 유닛을 경유하여 메모리 시스템으로 전송한다. 리퀘스트 모듈은 버스 인터페이스 유닛을 경유하여 메모리 시스템으로부터 인터페이스 시스템에 의해 수신된 정보를 네트워크로 전송한다. 인디케이트 모듈과 리퀘스트 모듈에 연결된 상태 발생/스페이스 관리 모듈을 인디케이트 모듈과 리퀘스트 모듈의 상태를 감시하고, 대응 상태 신호를 발생하며, 인터페이스 시스템을 경유하여 네트워크와 메모리 시스템사이에서 전송된 정보를 위해 메모리 시스템내의 저장 스페이스의 할당을 관리한다.

Description

매체 액세스 제어/호스트 시스템 인터페이스를 구현하기 위한 방법 및 장치 {METHODS AND APPARATUS FOR IMPLEMENTING A MEDIA ACCESS CONTROL/HOST SYSTEM INTERFACE}
본 발명은 데이터 통신 시스템에 관한 것으로, 특히, 근거리 통신망 매체액세스 제어(MAC ; media access control) 기능과 상기 네트워크에 부착된 호스트 스테이션 사이의 인터페이스를 구현하기 위한 방법 및 장치에 관한 것이다.
데이터 전송망의 스테이션 사이의 통신은 인접 프레임이 명시적 또는 암시적 스타트-스톱 패턴에 의해 분리되면서, 정보 캐릭터(character)의 시리즈 또는 '프레임'의 전송을 통해 발생된다. 유일한 스타트 패턴('스타트 디리미터' ; start delimiter)과 유일한 스톱 패턴('엔드 디리미터' ; end delimiter)을 사용하면, 수신 스테이션은 각 프레임의 정확한 시작과 정확한 끝을 구별할 수 있다.
큰 인기를 끌은 한 형태의 네트워크는 토큰 링이다. 기본적인 토큰 링형 네트워크는 여러개의 중계기가 노드로 구성되는데, 각각의 중계기 노드는 단방향 전송 링크에 의해 연결되어 폐루프 링을 형성한다. 정보 프레임은 한 중계기에서 다음 중계기로 링 주위를 한 비트씩 순차적으로 이송되는데, 각 중계기는 각각의 비트를 재발생 및 재전송한다.
링상의 각 중계기는 재전송 요소로서 기능하는 것 이외에, 호스트 스테이션에 의해 정보를 삽입 및 검색하기 위한 호스트 스테이션 부착점으로서도 작용한다. 정보 프레임이 링 위에서 중계기를 지나서 순환되면, 프레임의 데스티네이션 어드레스 필드는 부착된 호스트의 데스티네이션 어드레스 필드와 비교된다. 호스트는 데스티네이션 어드레스가 자기의 것이라고 인지될 때에는 프레임을 복사한다.
특정 형태의 토큰 링형 네트워크는 파이버 분배 데이터 인터페이스(FDDI) 프로토콜에 의해 한정된다. FDDI 프로토콜은 광섬유 전송 매체를 사용하는 100Mbit/sec 토큰 링형 네트워크에 적용되는 미합중국 표준(ANS) 데이터 전송 포맷이다. FDDI 프로토콜은 여러개의 호스트 컴퓨터 시스템들 사이와 컴퓨터 및 연관된 대량 저장 서브시스템과 기타 주변장치 사이의 고성능 상호접속으로서 계획되었다.
Howard W.Sims & Company에서 1987 년 발생한 Handbook of Computer-Communication Standards, Volume 2, pp.177-179에서 윌리엄 스톨링이 기술하였듯이, FDDI 토큰 링 기술은 모든 스테이션이 유휴(idle)상태에 있을 때 링 주위를 순환하는 작은 토큰 프레임 사용에 기초되었다. 전송하고자 하는 스테이션은 통과되는 토큰을 검출할 때까지 대기하여야 한다. 그 다음에 스테이션은 사용 가능한 토큰이 인지되자마자 토큰 전송을 포기함으로써 토큰을 포착한다. 토큰이 포착되면, 스테이션은 규정 최대 시간까지 전송 매체 제어 기능을 부여받으며, 그 동안에 하나 이상의 프레임을 링 위에 전송할 수 있다.
정보는 일련의 5 - bit 캐릭터 또는 '심볼'로 구성되는 프레임으로 FDDI 링상에서 전송되며, 각각의 심볼은 4개의 데이터 비트 또는 제어 코드를 나타낸다. 정보는 대표적으로 심볼 쌍 또는 '바이트'로 전송된다.
도1은 FDDI 프레임 및 토큰 포맷에서 사용되는 필드를 도시한다. 일련의 유휴 회선-스테이트 심볼로 구성되는 프리앰블 필드(PA)는 각각의 전송에 선행한다. 스타트 디리미터 필드(SD)는 심볼 경계에 무관하게 일의적으로 인지가능한 2개의 제어 심볼 스타트 디리미터 쌍으로 구성된다. 상술한 바와 같이, 스타트 디리미터 바이트는 뒤따르는 정보의 경계를 설정한다. 프레임 제어 필드(FC)는 프레임 형태와 그 특성을 한정하는데, 이것은 동기적 전송과 비동기적 전송을 구별하고, 어드레스의 길이를 규정하며, 프레임 형태를 식별한다. 프레임 제어 필드는 토큰을 일의적으로 구별한다. 토큰의 엔딩 디리미터 필드(ED)는 2개의 엔드 디리미터 제어 심볼로 구성되며, 토큰을 완성시킨다. 데스티네이션 어드레스(DA) 및 소스 어드레스(SA)필드는 전송된 프레임의 데스티네이션 및 소스 어드레스를 포함한다. 데스티네이션 어드레스 필드와 소스 어드레스 필드는 프레임 제어 필드에 의해 결정되는 바와 같이 2개의 바이트 또는 6개의 바이트 길이이다. 데스티네이션 어드레스는 개별적 어드레스 또는 그룹 어드레스일 수도 있다. 프레임 체크 시퀀스 필드(FCS)는 4개의 바이트 길이이며, ANS 표준 폴리노미얼을 사용하는 사이클릭 리던던시 체크를 포함한다. 정보 필드는 프레임 체크 시퀀스 필드가 포함하는 모든 필드와 같이 데이터 심볼로만 구성된다. 프레임의 엔드 디리미터는 번지지정된 스테이션이 그 어드레스를 인지했는지, 프레임이 복사되었는지 또는 어느 스테이션이 프레임내의 오류를 검출했는지를 나타내는 3개의 제어 인디케이터(indicater) 심볼로 구성되는 프레임 상태 필드(FS)가 뒤따르는 한 엔드 디리미터 심볼(T)이다. 3개의 제어 인디케이터가 뒤따르는'T'는 넌-토큰(non-token) 프레임을 위하여 FDDI 프로토콜에 의해 요구되는 최소 엔드 디리미터를 나타낸다. 프로토콜은 엔드 디리미터내의 제어를 심볼의 부가적 쌍 또는 한 개의 마지막 'T' 심볼이 뒤따르는 부가적 홀수의 제어 심볼을 허용한다. 이 규칙을 따르는 모든 수행 수단들은 이 확장된 엔드 디리미터들을 잘라내지 않고 처리할 수 있어야만 한다. 엔드 디리미터 심볼(T)과 2개의 제어 심볼(R,S)은 일의적으로 엔코드되고 정상적 데이터 또는 유휴 심볼로부터 구별 가능하다.
도 2 는 FDDI 프로토콜에 따르는 필요한 스테이션을 위한 콤포넌트의 엔티티를 도시한다. 필요한 콤포넌트 링의 부재로서 적절한 작동을 보장하기 위하여 스테이션의 모든 작용을 제어할 네트워크상의 각각의 호스트 스테이션에 상주하는 스테이션 관리 기능(SMT)을 포함한다. 물리 층 매체 의존도(PMD; Physical Layer Medium Dependent)기능은 링상의 인접 스테이션 사이의 광 섬유 링크를 제공한다. 물리 층 프로토콜(PHY)기능은 엔코딩, 디코딩, 클록 및 동기화 기능을 제공한다. 매체 액세스 제어(MAC)기능은 전송 매체에의 액세스를 제어하며, 다른 스테이션의 매체 액세스 제어 기능으로 또한 그 기능으로부터 프레임을 전송 및 수신한다. PHY 기능은 동시에 수신 및 전송한다. PHY 기능의 전송 논리부는 매체 액세스 제어 기능으로부터 심볼을 수용하고, 이 심볼들을 5비트 코드 그룹으로 변환하며, PMD 능력을 사용하여 엔코드 시리얼 스트림(stream)을 매체에 전송한다 PHY 기능의 수신 논리부는 매체로부터 PMD를 거쳐 엔코드 시리얼 스트림을 수신하고, 스타트 디리미터 심볼 쌍의 인지에 기초하여 심볼 경계를 설정하며, 디코드 심볼을 그와 관련된 매체 액세스 제어 기능으로 보낸다.
FDDI 프로토콜에 관한 추가적인 정보는 본 발명에 관련된 부가적인 배경 정보를 제공하기 위하여 본 명세서에 참조로서 합체된 'FDDI-an Overview', Digest of Papers, Computer Soc. Intl. Conf. Compcon '87, pp. 434-444에서 플로이드 이. 로스(Floyd E. Ross) 의해 제공되었다.
도 3 은 FDDI 토큰 링과 MAC 기능 사이에 통합 인터페이스를 제공하기 위하여 합체하는 일련의 요소들을 도시한다.
클록 회복 장치(10)는 링상의 업 스트림 스테이션에 의해 FDDI 광 섬유 전송 매체상에 놓인 유입(incoming) 시리얼 비트 스트림으로부터 125 MHz 클록을 추출한다.
12.5MHz 크리스탈 기준으로부터, 클록 분배 장치(12)는 물리 층 제어기(Player; 14)와 기본 매체 액세스 제어기(BMAC; 16)에 의해 필요한 여러 가지 클록을 합성한다. 플레이어(14)는 BMAC(16)로부터 검색된 12.5Mbyte/sec 스트림을 변환시키고 유입되는 4B/5B 데이터를 내부 코드로 디코드한다.
BMAC(16)는 FDDI 토큰과 프레임의 전송, 수신, 중계 및 스트립핑을 제어한다.
도 4 와 같이, BMAC(16)는 링 엔진(18), 제어 인터페이스(20), PHY 인터페이스(22) 및 MAC 인터페이스(24)를 포함한다.
링 엔진(18)은 BMAC(16)의 심장부이며, FDDI 링상의 프레임을 전송, 수신, 중계 및 스트립핑을 하기 위해 ANS X3T9.5 MAC 프로토콜을 수행한다.
제어 인터페이스(20)는 제어 버스(도3)에 인터페이스를 제공하는데, 제어 버스를 통해서 BMAC(16)의 작동을 개시하고 감시하며 진단한다.
PHY 인터페이스(22)는 PHY 리퀘스트 버스(request bus)를 경유하여 플레이어(14)에 바이트 스트림을 제공하며, PHY 인디케이트 버스(indicate bus)를 경유하여 플레이어(14)로부터 바이트 스트림을 수신한다.
MAC 인터페이스(24)는 스테이션의 외부 버퍼링 및 제어 논리부에 인터페이스를 제공한다. 바이트 스트림은 MAC 인디케이트 버스를 경유하여 적절한 제어 신호로 버퍼링 및 제어 논리부에 제공된다. 바이트 스트림은 MAC 리퀘스트 버스를 경유하여 적절한 핸드셰이크 제어 신호로 MAC 인터페이스에 제공된다.
도 5를 참조하며, 링 엔진(18)은 타이머/카운터 논리부(30)와 MAC 파라미터 RAM(32)을 공유하는 수신기(26)와 전송기(28)의 2개의 주요 블록을 포함한다.
수신기(26)는 FDDI 링으로부터의 정보를 검증하고, 오류와 고장을 검출하며, 전송기(28)에 의해 사용되고 MAC 인터페이스(24)에 제공되는 적절한 제어 신호 및 플래그를 발생시킨다. 또한, 수신기(26)는 스타트 및 엔드 디리미터의 식별에 기초하여 PHY 인디케이트 버스상에서 수신된 바이트 스트림으로부터 프레임과 토큰과 프래그먼트를 그린다.
MAC 파라미터 RAM(32)은 암시되는 바와 같이 연관된 스테이션의 어드레스와 같은 파라미터를 포함하는 이중-포트 RAM 이다. 수신기(26)는 수신된 어드레스와 자체 어드레스를 비교하기 위하여 파라미터 RAM(32)내에 저장된 값을 사용한다. 전송기(28)는 호스트 스테이션에 의해 발생된 모든 프레임의 소스 어드레스(SA)를 발생시키기 위해 파라미터 RAM(32)을 또한 사용한다.
전송기(28)는 링상의 다른 스테이션으로부터의 프레임을 중계하며, FDDI 타임-토큰 MAC 프로토콜에 따라서 연관된 호스트 스테이션으로부터의 프레임을 링내로 삽입한다. 전송기(28)는 프레임을 중계 또는 스트립핑 또는 발생시킬 것인가를 디코드하는데 수신기(26)에 의해 제공되는 정보를 사용한다. 전송기(28)는 전송 리퀘스트가 호스트 스테이션에 의해 링 엔진(18)으로 전달될 때까지 프레임 중계를 계속한다.
전송 리퀘스트는 리퀘스트된 서비스 등급(즉, 동기적 또는 비동기적) 및 포착 또는 방출할 토큰의 형태를 포함한다. 상술한 바와 같이, 스테이션은 토큰은 포착하므로써 전송권을 얻는다. 일단 토큰이 포착되면, 데이터가 스테이션에 의해 전송될 준비가 될 때까지 링 엔진(18)은 대기한다. 프레임이 전송되면, 프레임은 링을 따라서 통과되고, 각각의 순차적 스테이션은 프레임을 한번에 한 바이트씩 조사한다. 프레임은 매 스테이션에서 중계되고, 프레임을 원래 전송했던 스테이션에 의해 결국 스트립핑된다.
도 5에서도 도시했듯이, 전송기(28)는 전송기 스테이트 머신(TSM;34)과, FCS 발생기(36)와, ROM(38)과 링으로 데이터를 발생시키는 것을 제어하기 위한 다중화 논리부(40)을 포함한다.
전송기 스테이트 머신(34)은 링에 전송될 프레임의 필드를 통한 시퀀싱을 제공한다.
FCS 발생기(36)는 32-bit CRC를 계산하고 이것을 데이터 스트림으로부터의 정보에 첨부시킨다.
ROM(38)은 엔드 디리미터 및 프레임 상태 필드로서 프레임과 함께 전송될 제어 심볼 쌍을 발생시키는데 사용된다.
출력 다중화기(40)는 PHY 리퀘스트 버스상에 올려질 정보 소스를 선택하는데에 사용된다. 상술한 바와 같이, 이 정보는 PHY 인디케이트 버스로부터 중계되거나 또는 연관된 스테이션에 의해 독립적으로 발생된다. 정보는 데이터 스트림, ROM(38), FCS 발생기(36) 또는 파라미터 RAM(32)으로부터 발생될 수 있다.
타이머/카운터 블록(30)은 ANS X3T9.5 MAC 표준을 수행하는데 요구되는 모든 타이머와 여러 가지 이벤트 카운터를 포함한다. 이것은 또한 FDDI 타임-토큰 프로토콜의 수행에 요구되는 토큰 타이밍 논리부를 포함한다.
도6을 참조하면, 토큰 타이밍 논리부(42)는 전송기(28)에 의해 제어된다.
토큰 회전 타이머(TRT; 44)는 링상에서 도착부터 도착까지의 토큰 회전을 시간 조절하는데에 사용된다. 회전 시간이 길수록 링상의 적재량은 크다. 도6에 도시된 토큰 타이밍 논리부(42)내의 타이머는 매 80ns 증가시키는 업-카운터로서 수행된다. 카운터는 임계치의 2진 보수를 적재하므로써 리셋된다. 이것은 타이머 종료를 나타내기 위하여 단순한 캐리(carry)를 허용한다.
토큰 유지 타이머(THT; 46)는 토큰이 스테이션에 의해 포착된 후에 비동기식 전송을 위해 스테이션에 의해 사용되는 링 대역폭의 양을 제한하는데 사용된다. 각각의 프레임이 전송되기 전에, 포착된 토큰이 아직 전송을 위해 사용가능한 지를 결정하기 위해서 THT의 값이 사용된다. THT가 선택된 임계치에 도달되지 않았으면 토큰은 비동기 트래픽을 위해 사용가능하다.
4개의 비동기 임계치가 BMAC(16)에 의해 지지되는데, 3개는 프로그램 가능하고, 1개는 절충 목표 토큰 회전 시간(TTRT)에 고정된다. 우선순위 임계치중의 하나에서 프레임을 전송하기 위한 리퀘스트는 토큰 유지 타이머(46)가 선택된 임계치에 도달되지 않았을 경우에 충족된다. TRT가 0에 도달되면, 토큰이 늦었다는 것을 나타내는 지연 플래그가 셋팅된다. 지연 플래그가 셋팅되는 동안에는, 비동기 프레임은 전송될 수 없고, 토큰은 동기 전송에 이용 가능하다.
토큰의 조기 도착시에는, 즉, 토큰이 도착되었으나 지연 플래그가 셋팅되지 않았을 때에는, TRT는 절충 목표 토큰 회전 시간 TTRT로 적재되고 카운트 업한다. 토큰의 지연 도착시에는, 즉, 토큰이 도착되고 지연 플래그가 셋팅되었을 때에는, 지연 플래그가 지워지고 TRT가 카운트를 계속한다. TRT가 종료되면 지연 플래그가 셋팅되지 않고, 지연 플래그가 셋팅되며 TRT는 TTRT로 적재된다. 누적된 지연은 ANSI X3T9.5 MAC 표준에서 정의된 바와 같이 정확히 수행된다.
토큰이 포착될 때까지 THT는 TRT의 값을 따른다. 토큰이 포착되면, TRT는 TTRT로 재적재되고, THT는 전의 값에서부터 카운트를 계속한다(THT는 랩어라운드(wraparound)하지 않는다). THT는 인에이블 상태로 되면 증가된다. THT의 증가는 예로서 동기 전송 동안에는 디스에이블된다. THT는 토큰이 비동기 리퀘스트에 사용 가능한 지를 결정하는 데에 사용된다. 이러한 목적을 위하여, 토큰은 실제로 지연되기 전에 이미 1 - 바이트 지연된 것으로 간주된다(다소 부주의한 수행에 있어서도 상호호환성을 증진시키기 위함).
비동기 임계치 비교는 파이프라인되고, 따라서, 임계치 크로싱은 즉각 검출되지 않을 수도 있다. 그러나, 가능한 오류는 임계치 정확도의 일부분이다.
지연 플래그가 셋팅되는 동안에 TRT는 TMAX로 적재되고 복구 프로세스가 호출된다. 복구 요구 상태는 역시 다소 부주의한 수행에 있어서도 상호 호환성을 증진시키기 위해 TRT가 종료된 후 1바이트의 시간이 지난 후에 발생된다. TRT가 종료되고 링이 작동되지 않을 때에 TRT는 TMAX로 적재된다. TRT는 또한 리셋시에도 TMAX로 적재된다.
BMAC(16)에 관한 추가적 정보는 다음의 계류중인 미합중국 특허출원에 제공되었는데, 각각의 특허출원은 본 출원과 함게 내쇼널 세미컨덕터 코포레이션(National Semiconductor Corporation)에 공동 양도되었다. 그 계류중인 출원은
1. 햄스트라가 RAM - Based Events Counter 장치 및 방법에 관하여 1989년 11월 14일 출원한 미합중국 특허출원 제 436,212 호와,
2. 펄로프가 Apparatus and Method for Accessing a Cyclic Redundancy Error Check Code Generated in Parallel에 관하여 1989년 12월 4일 출원한 미합중국 특허출원 제 445,964 호와,
3. 그로우 등이 Asynchronous Priority Select Logic에 관하여 1989년 12월 1일 출원한 미합중국 특허출원 제 444,628 호와,
4. 그로우가 Ring Latency Timer에 관하여 1989년 12월 1일 출원한 미합중국 특허출원 제 444,537 호이다.
상기 4개의 특허출원은 본 발명에 관련된 부가적 배경 정보를 제공하기 위하여 본 명세서에 참조로서 합체되었다.
본 발명은 근거리 통신망의 매체 액세스 제어(MAC)기능과 MAC를 경유하여 네트워크 매체에 부착된 호스트 시스템 사이에 인터페이스를 제공한다. 인터페이스는 MAC 수신기로부터 수신된 프레임과 매체에의 전송을 위해 호스트에 의해 제공되는 프레임 모두를 위해 호스트 메모리 시스템과 MAC 사이의 정보 전달을 수행한다.
본 발명에 따른 인터페이스는 2개의 파이프라인 데이터 경로를 포함한다. 인디케이트 모듈은 수신된 프레임을 통합 버스 인터페이스 유닛을 경유하여 MAC 수신기부로부터 호스트 메모리로 전송한다. 리퀘스트 모듈은 MAC 전송기부로의 전송을 위하여 버스 인터페이스 유닛을 경유하여 호스트로부터 프레임을 수신한다. 인디케이트 및 리퀘스트 모듈에 의해 공유되는 상태 발생/스페이스 관리 모듈은 프레임 전달에 필요한 전송 상태를 감시하고 호스트 시스템 메모리내의 저장 스페이스 할당을 관리한다. 제어 버스 인터페이스는 인터페이스내의 레지스터를 제어하기 위하여 호스트 액세스를 제공한다.
수신 프레임 상태가 수신 데이터 플로우에 평행한 경로내에서 MAC 인터페이스로부터 시스템 인터페이스로 통과되는 종래의 인터페이스에 있어서는, 한번에 단 하나의 엔드-오브-프레임(end-of-frame; EOF)만이 수신 FIFO(first in fisrt out; 선입선출)내에 허용될 수 있다. 이것은 드롭 수신 프레임(dropped received frame)을 발생시킨다.
본 발명의 한 특징에 따라서, EOF에서 MAC 인터페이스는 한 최종 단어(word)를 프레임 상태로서 첨가하고 상태 단어를 데이터 뒤에서 수신 FIFO내로 위치시킨다. 시스템 인터페이스는 상태를 처리하기 전에 데이터를 판독하고 EOF 상태 디스크립터(descriptor)를 기입한다. 데이터/상태 동기화는 자동적이며, MAC 인터페이스와 시스템 인터페이스 사이의 여타 통신은 필요하지 않다. 이것은 복잡한 데이터/상태 동기화 없이도 프레임을 몇 개라도 수신 FIFO내에 위치시킬 수 있게 한다. 이것은 많은 소형 프레임을 수신할 때 FIFO의 전체 사용을 허용하며 따라서 장기적 버스 지연으로 인한 드롭 프레임의 가능성을 감소시킨다. 이것은 수신 FIFO가 어떠한 깊이로 될 수 있다는 점에서 설계 신축성을 허용한다.
종래의 인터페이스에 있어서 모든 수신된 프레임을 단일 목록의 풀 스페이스(pool space)디스크립터에 의해 기술된 호스트 메모리 시스템내의 단일 스페이스에 복사된다.
본 발명의 한 특징에 따라서, 다중 채널이 수신된 프레임을 위해 제공되고, 유입 프레임을 위한 채널은 프로그램 소트 모드와, 프레임 FC와, MAC 또는 외부 어드레스 비교 하드웨어가 데스티네이션 어드레스 매치를 나타내는가에 따라 선택된다. 각각의 채널은 프레임 데이터가 시스템 메모리내에서 복사될 위치를 나타내는 자체 풀 스페이스 디스크립터 큐와 완전 독립적 호스트 처리를 위한 상태 큐를 갖는다.
종래의 인터페이스에 있어서, 수신된 프레임 전체는 하나의 호스트 메모리 버퍼 구역에 복사된다. 프로토콜을 운용할 때에 신속한 액세스는 프레임의 헤더 부분에서만 요구되며, 헤더는 프레임 데이터보다 빨리 처리되어야만 한다. 헤더 버퍼 스페이스는 보다 빨리 재순환되어야만 한다. 데이터 버퍼 스페이스가 완전히 소모되어 핸드셰이크 또는 플로우 제어를 유지할 능력을 상실할 때에는 헤더 처리는 계속될 수 없다.
본 발명의 한 특징에 따라서, 인터페이스는 선행 바이트와 후속 바이트의 분리가 일어날 수 있는 프레임내의 하나 이상의 지점을 결정한다. 이 메카니즘은 카운터일 수 있거나, 또는 정보 스트림내의 데이터 값 또는 외부 스티뮬러스(stimulus)에 응답하는 스테이트 머신을 합체할 수도 있다. 분리점에서 연속 정보 바이트는 시스템 메모리내의 별개의 메모리 구역에 복사된다. 버퍼 관리 계획은 각각의 메모리 구역에 대해 별도의 관리를 제공한다. 상태는 한 조합 메모리 구역에 기입될 수 있고, 따라서, 상태는 보다 용이한 처리 및 관리를 위해 호스트에 의해 그룹지워질 수 있다.
이 프레임 분할 메카니즘은 헤더를 데이터가 아닌 별개의 메모리 구역내에 위치시키는 것을 허용한다. 이것은 또한 헤더와 데이터를 위해 별도의 버퍼 관리를 허용한다. 헤더는 데이터 버퍼 스페이스가 완전히 소모되었을 때에도 처리될 수 있다.
FDDI MAC 프레임은 동일 프레임의 긴 버스트의 형태로 발생된다. 그러한 프레임이 모두 복사되면 이것들은 버퍼 스페이스와 처리 오버헤드를 소모한다. 더구나, FDDI 프레임은 버스트로 발생할 수 있다. 통상적으로 프레임마다 한 번의 인터럽트가 주어진다. 이것은 각 프레임에 발생되는 퍼-인터럽트(per-interrupt) 오버헤드에 기인하는 비효과적인 처리를 발생시킨다.
본 발명의 한 특징에 따라서, MAC 프레임은 여과되고, 따라서, 새로운 정보를 포함하는 프레임만 복사된다. 상태(인터럽트)는 새로운 정보를 위한 중단점에서만 호스트에 제공된다. 추가적으로, 전송 및 수신 프레임은 버스트로 전송되고, 상태 요약은 버스트 경계에서만 제공되어 호스트 인터럽트 수를 더욱 최소화 한다. 호스트 프로그램 가능 옵션은 버스트 경계 선택을 위해 제공된다.
종래의 인터페이스는 모든 버스 액세스를 위해서 고정 버스트 사이즈 또는 트랜잭션을 사용하였다. 이것은 버스트 사이즈가 필요한 데이터 액세스와 매치 되지 않을 때마다 버스 사이클의 낭비를 초래한다.
본 발명의 한 특징에 따라서, 시스템 인터페이스는 필요한 데이터의 페칭/저장 시에 페칭/저장을 수행하기에 가장 효과적인 버스 트랜잭션을 계산하는데 데이터 포인터와 카운트를 사용한다.
'충분한'바이트가 요구되는 때에만 보다 긴 버스트가 더욱 효과적이다. 각각의 버스 트랜잭션에 대해 포인터와 카운터를 업데이트시키므로써, 가장 효과적인 트랜잭션이 동적으로 계산된다. 따라서, 인터페이스는 요구되는 데이터를 전달하는데에 가능한 최소 버스트 사이클을 사용하고, 시스템 인터페이스의 버스 대역폭 요구사항을 최소화한다.
종래의 인터페이스는 선취형(pre-empted)전송 리퀘스트는 손실되고, 호스트로 하여금 리퀘스트를 다시 순서를 정하게 하며, 호스트 CPU 시간을 낭비시켰다.
본 발명의 한 특징에 따라서, 시스템 인터페이스는 선취 가능한 채널상에 전송된 각각의 프레임을 위해 제 1 출력 데이터 유닛 디스크립터의 어드레스를 비워둔다. 만약 선취가 발생하면, 보다 높은 우선순위 리퀘스트에 부응하기 위해서 인터페이스는 채널을 교환한다. 보다 높은 우선순위 리퀘스트가 완료되면, 인터페이스는 다시 되돌려 교환되고 비워둔 디스크립터 어드레스에 리퀘스트 처리를 복귀시킨다.
종래의 언터페이스는 데이터와 연관되지 않은 명령은 전달되지 않았다. 따라서, 데이터가 준비될 때까지 명령은 지연될 수 밖에 없었다.
본 발명의 한 특징에 따라, 인터페이스는 각각의 새롭게 페치된 데이터 유닛 디스크립터상에 바이트 카운트 필드를 스캔(scan)한다. 바이트 카운트 필드가 0 이면 디스크립터는 전혀 검증되지 않고, 데이터 페치는 리퀘스트되지 않으며 디스크립터 처리가 계속된다. 이러한 체크가 없으면, 인터페이스는 처리가 계속되기 전에 기술된 데이터가 페치될 때까지 대기하여야 한다. 그러나, 제로 바이트 카운트로는 페치가 발생될 수 없다. 따라서, 모든 데이터 유닛이 데이터를 가져야만 한다는 제한이 부과될 것이다. 본 발명에 따른 인터페이스는 디스크립터 구조체내에 제로-길이 디스크립터를 허용하며, 호스트 소프트웨어로 하여금 디스크립터를 제거하고 넌-제로 길이 디스크립터를 함께 묶기 위해 시간을 낭비하지 않도록 한다.
인터페이스는 제로 프레임을 기술하는 리퀘스트 오브젝트의 제 1 디스크립터가 토큰 포착 리퀘스트임을 인지한다. 동일 오브젝트의 후속 디스크립터는 프레임 데이터를 기술한다. 또한, 오브젝트의 마지막 디스크립터가 제로 프레임을 포함하면, 이것은 토큰 해제 리퀘스트이다. 이러한 디스크립터는 프레임 데이터 사용 가능성과 무관하게 순서가 정해질 수 있다. 이 메카니즘은 데이터를 반드시 준비하지 않고도 어떠한 서비스 등급의 토큰이라도 포착을 리퀘스트할 수 있도록 호스트를 허용하고, 모든 데이터가 디스크립터 스트림 인터페이스를 통해 전송된 후에는 토큰 방출을 허용한다.
종래의 인터페이스에서, 오브젝트의 끝을 표시하는 단일 디스크립터 플래그는 일치성 체크와 리던던시를 제공하지 않으므로 결함 검출도 제공하지 않는다. 모든 시퀀스는 합법적인 것으로 나타난다. 따라서, 오류는 링으로 전파된다.
본 발명의 한 특징에 따라서, 디스크립터는 오브젝트의 경계를 구분하기 위하여 '제 1'플래그와 '최종' 플래그를 포함한다. 어느 플래그도 갖지 않은 디스크립터는 '중간'이며, 두 플래그 모두를 가진 디스크립터는 '유일'이다. '제 1' 또는 '유일'은 '최종' 또는 '유일'에 후속되어야 하고, '제 1' 또는 '중간'은 '최종'에 선행해야만 한다. 그렇지 않으면, 일치성 고장이 검출된다. 이 메카니즘은 디스크립터 일치성 체크를 허용하며, 따라서, 불량 디스크립터에 의해 기술된 프레임은 링에 전송되지 않는다.
종래의 인터페이스에서, 브리징 소프트웨어는 수신된 데이터 디스크립터를 처리하고 전송 인터페이스에 관한 리퀘스트를 처리하기 전에 전송 데이터 디스크립터를 발생시켜야만 한다.
본 발명의 한 특징에 따라서, 수신 인터페이스는 IDUD.Fs를 위한 프레임 DA의 바로 앞에 오는 FC 바이트(또한 IDUD.noFs를 위한 데이터 유닛 스타트를 직접 지적하는)를 지적하는 입력 데이터 유닛 디스크립터(IDUDs)를 바이트 카운트와 데이터 포인터와 F/L 플래그를 가지고 전송 인터페이스가 허용하는 동일 2개 단어 포맷(ODUSs)으로 발생시킨다. 이러한 전송 및 수신 데이터 디스크립터 포맷 호환성은 데이터나 디스크립터를 이동/수정하지 않고 디스크립터 목적에서 전송기를 단순히 지적하므로써 호스트가 프레임을 재전송하도록 허용한다. 이것은 수신된 정보를 재전송할 때 호스트 처리 오버헤드를 감소시킨다.
FDDI 표준은 이더넷(Ethernet) 프로토콜에서의 것들과 역순으로 소스 및 데스티네이션 어드레스의 각각의 바이트내에서 비트의 유의값(significance)을 정의한다.
본 발명의 한 특징에 따라, MAC 인터페이스 바이트와이드 비트 역전 다중화기는 전송 및 수신 데이터 경로 모두에 위치된다. 제어 논리부는 어드레스가 변환을 필요로 하고 어드레스 바이트가 다중화기를 통과하는 시기를 결정하며, 정상 경로와 역전 경로사이에 선택하기 위해 제어 신호를 구동한다. 이것은 FDDI 어드레스는 이더넷 어드레스로 또한 이더넷 어드레스로부터 변환하는 시간을 많이 소모하는 일로부터 브리징 소프트웨어의 짐을 덜어준다.
본 발명의 특징과 이점은 본 발명의 원리가 이용된 실시예를 도시한 첨부 도면과 본 발명의 이하 기술되는 상세한 설명을 참조하여 보다 잘 이해될 것이다.
도 1 은 FDDI 프레임 및 토큰 포맷의 설명도
도 2 는 FDDI 프로토콜에 따르기 위해서 스테이션에 필요한 콤포넌트를 도시하는 블록 다이어그램
도 3은 호스트 스테이션과 FDDI 토큰 링 사이의 통합 인터페이스를 제공하기 위하여 구성되는 요소를 도시하는 블록 다이어그램
도 4 는 FDDI 기본 매체 액세스 제어 (MAC) 기능의 일 실시예의 콤포넌트를 도시하는 블록 다이어그램
도 5 는 BMAC 링 엔진의 일 실시예를 도시하는 블록 다이어그램
도 6 는 BMAC 비동기 우선순위 선택 논리부의 일 실시예를 도시하는 블록 다이어그램
도 7 는 본 발명에 따른 BMAC 시스템 인터페이스 (BSI)의 일 실시예를 도시하는 블록 다이어그램
도 8 는 호스트 시스템 버스에 직접 연결된 BSI를 도시하는 블록다이어그램
도 9 는 공유 메모리를 사용하는 BSI를 도시하는 블록 다이어그램
도 10 은 2개 프레임의 출력 리퀘스트를 도시하는 개략도
도11의a 내지 도11의e는 BSI 에 의해 인지 및/또는 발생되는 5개의 디스크립터 형태를 도시하는 개략도
도 12 는 인디케이트 모듈의 구조를 도시하는 블록 다이어그램
도 13a는 리퀘스트 모듈의 일반적 구조를 도시하는 블록 다이어그램
도 13b 내지 도13f는 리퀘스트 모듈의 여러 가지 콤포넌트의 구조를 도시하는 블록 다이어그램
도 14 는 상태 발생/스페이스 관리 모듈
도 15aaa 내지 도 15dddd는 버스 인터페이스 유닛 모듈의 구조를 도시하는 블록 다이어그램
도 16 은 리퀘스트 데이터 구조를 도시하는 개략도
도 17 은 인디케이트 데이터 구조를 도시하는 개략도
도 18 은 스페이스 데이터 구조를 도시하는 개략도
도 19 는 최소 메모리 레이아웃을 도시하는 개략도
도 20 은 2 - 레벨 어텐션 구조를 도시하는 논리 개략도
도 21은 제어 및 구성 레지스터 셋트의 목록을 제공하는 테이블
도 22는 PTR RAM 레지스터 셋트의 목록을 제공하는 테이블
도 23 은 리미트 RAM 레지스터 셋트의 목록을 제공하는 테이블
도 24 는 리퀘스트 머신의 스테이트 다이어그램
도 25 는 BTU 스테이트 머신을 위한 스테이블 다이어그램
도 26 은 DBus 단일 판독을 위한 파형을 도시하는 타이밍 다이어그램
도27은 ABus 버스트 판독을 위한 파형을 도시하는 타이밍 다이어그램
도 28은 ABus 단일 기록을 위한 파형을 도시하는 타이밍 다이어그램
도 29 는 ABus 버스트 기입을 위한 파형을 도시하는 타이밍 다이어그램
도 30a 내지 도 30cccc는 본 발명에 따른 인터페이스 시스템을 위한 핀아웃 배열을 나타내는 도면
본 발명은 상술한 기본 매체 액세스 제어(BMAC)기능과 FDDI 토큰링에 부착된 호스트 시스템 사이에 인터페이스를 제공하는데, 이 인터페이스는 본 명세서내에서 BMAC 시스템 인터페이스 또는 BSI로 지칭된다.
BSI를 기술하는데 있어서 다음의 규칙(convention)을 사용한다.
바이트 및 비트 오더링 규칙
1. BSI는 '작은-엔디언(little-endian)' 또는 '큰-엔디언(big-endian)' 시스템으로 작동될 수 있다. BSI에 의해 취급되는 모든 디스크립터는 연속 단어-정렬 어드레스에 있는 2 개의 32-비트 단어이다. 이것은 디스크립터가 시스템의 '엔디언-네스(endian-ness)'에 무관하게 동일한 방법으로 보여진다는 것을 뜻한다. 그러나 바이트 스트림은 달리 보여진다. 아래의 설명은 BSI가 메모리의 어드레스를 지정하는 방법을 한정한다.
단어는 32 비트이다. 31번째 비트는 최상위 비트이고, 0번째 비트는 최하위 비트이다. 한 단어는 4바이트로 이루어진다. 바이트는 한 단어에서 바이트 어드레스 0으로부터 바이트 어드레스 3으로 증가하는 방식으로 번지지정된다. 작은-엔디언과 큰-엔디언은 어느 단어 비트가 어느 바이트 어드레스에 대응되는가하는 점에서 아래의 표 1에 도시된 바와 같이 서로 다르다.
네트워크 데이터 바이트(즉, 디스크립터)가 아닌 모든 정보는 바이트가 아니고 단어로 간주된다. 네트워크 데이터는 링상의 상대적 시간 이동에 대해 오더되는 바이트의 스트림이다. 표 1은 작은-엔디언 및 큰-엔디언 시스템에서 시간 오더링을 도시한다. 바이트는 FDDI 링에 보내어지거나 또는 바이트 A로 시작되어 알파벳 순서로 FDDI 링으로부터 수신된다.
표 1
2. 모든 제어 버스(CBus) 레지스터에는 한번에 8비트가 액세스된다. 레지스터는 다음의 비트-순서 규칙을 사용한다.
비트7 -->MS 바이트, 낮은 바이트 어드레스 --> 비트0
비트7 -->LS 바이트, 높은 바이트 어드레스 --> 비트0
소 개
BSI 개요
도7에 블록 다이어그램 형태로 도시된 본 발명에 따른 FDDI BMAC 시스템 인터페이스(BSI; 10)는 BMAC와 호스트 시스템 사이의 인터페이스를 실현한다. 이것은 여러 가지 호스트를 위하여, 그러나, 특히 고성능 가상의 메모리 시스템을 위하여 고성능 낮은 가격의 인터페이스를 효과적으로 제공하도록 설계되었다. BSI(10)는 메인 메모리 또는 외부 공유 메모리에 접속된 시스템 버스상에서 작동할 수 있다. 아래에서 더욱 상세히 기술되었듯이, BSI(10)는 데이터와 디스크립터를 이동시키기 위하여 전송 및 수신 스테이트 머신과 다중 DMA 채널을 갖는다.
BSI(10)는 캐시형(cached)/넌-캐시형, 페이지형(paged) 또는 넌-페이지형 메모리 환경의 어떠한 조합으로도 작동될 수 있다. 페이지형 환경에서 작동될 때에는 BSI(10)는 4K 바이트 페이지 사이지를 사용한다. 이러한 능력을 제공하기 위하여 모든 데이터 구조체는 페이지내에 포함되며, 버스 트랜잭션은 페이지를 결코 넘지 않는다. 이러한 추가적 능력은 넌-페이지형 환경에서는 요구되지 않는다. BSI(10)는 캐시형 환경에의 인터페이스를 용이하게 하기 위하여 정렬된 블록내에서 모든 버스 트랜잭션을 수행한다.
BSI(10)는 2개의 버스 인터페이스, 즉, 데이터경로 버스와 제어 버스를 갖는다.
메인 데이터경로 버스는 ABus라고 지칭되는 32-비트 다중화된(multiplexed)어드레스/데이터 메모리 인터페이스이다. BSI 구조는 30-비트 실제 어드레스까지 지지하지만, 실 수행시에는 28-비트 실시 어드레스를 제공한다.
ABus는 버스트 모드 전달을 지지하여 니블-모드/스태틱 칼럼/페이지 모드 DRAMs 또는 스태틱 RAMs의 사용을 허용한다. ABus는 BSI(10)에 의해 발생된 가상 또는 실제 어드레스로 작동될 수 있다. 가상 어드레스로 작동될 때에에는, BSI(10)는 가상 어드레스를 방출하는데, 가상 어드레스는 외부 MMU(또는 보다 간단한 맵핑 논리부)에 의해 변역되고 어드레스 버스상에 구동된다. 양쪽 번지지정 모드로서도 BSI(10)는 다중-마스터(multi-master)환경에서 작동될 수 있다.
제어 버스는 CBus라고 지칭되는 8-비트 비 다중화된(non-multiplexed)버스이다. 이것은 단순한 비동기 스트로브 및 확인응답 (acknowledge)프로토콜을 사용한다.
최대 성능과 시스템 신축성을 제공하기 위하여, BSI(10)는 2개의 독립 클록을 사용하는데, 하나는 MAC 인터페이스(즉, 링)를 위한 것이고, 또 하나는 시스템/메모리 버스(즉, ABus)를 위한 것이다. BSI(10)는 이러한 2개의 타이밍 도메인 사이에서 완전히 동기화된 인터페이스를 구현하고 제공한다.
도8은 최고 성능을 위해서 호스트 시스템 버스에 직접 접속된 BSI(10)를 도시한다. 도9는 국부 버퍼링을 위하여 공유 메모리를 사용하는 BSI(10)를 도시한다.
BSI(10)는 데이터 구조체 및 대부분의 통신을 위하여 외부 메모리를 사용하는 MAC 데이터 서비스에 인터페이스를 제공한다. BMAC는 플레이어(player)와 신호 프레임 경계에 의하여 제공되는 심볼 스트림과 이벤트 상태를 디코드한다. BSI(10)는 BMAC 데이터 스트림을 외부 메모리내로 맵핑(mapping)한다.
BSI(10)는 시스템 메모리에서 네트워크로 다중 프레임(아래에 정의된 SDUs)을 전송하기 위하여 연관된 호스트로부터 리퀘스트를 수용한다. BSI(10)는 전송시에 32-비트 와이드 메모리 데이터를 언팩킹하고 이것을 한번에 한 바이트씩 BMAC로 보낸다. BSI(10)는 수신시에 BMAC으로부터 바이트 스트림을 수신하고 이것을 32-비트 단어로 팩킹하며 이것을 시스템 메모리에 기입한다. 호스트 소프트웨어와 BSI(10)는 인터럽트에 의해 동기화될 수 있는 외부 메모리 베이스 큐를 경유하여 통신한다.
정의
다음의 용어들이 본 발명의 상세한 설명에 사용될 것이다.
신호 스테이트
신호는 2개의 논리적 스테이트와 3개의 물리적 스테이트를 갖는다. 3개의 물리적 스테이트는 높은, 낮은 및 트라이-스테이트이다. 높은 스테이트는 보다 많은 양의 전압 레벨이다. 낮은 스테이트는 보다 많은 음의 전압 레벨이다. 트라이-스테이트는 출력이 높은 스테이트 또는 낮은 스테이트로 능동적으로 구동되지 않을 때에 존재한다.
참과 거짓의 2개의 논리적 상태가 있다. 혼동을 피하기 위하여, 신호의 논리적 상태를 표시하는데 '가정(assertion)'과 '부정(negation)'이라는 용어가 사용된다. 가정은 참 상태의 신호를 나타내는데 사용된다. 부정은 거짓 상태의 신호를 나타내는데 사용된다.
양논리와 음논리가 모두 있기 때문에, 신호는 참(액티브)높음 일 수 있고 또는 참(액티브)낮은 일 수도 있다. 가정 및 부정은 신호가 액티브-높음 또는 액티브-낮음인가 하는 것과는 무관한다. 액티브-낮음 신호는 신호 명칭의 끝에 있는 언더스코어, 예로서, low_signal_에서의 언더스코어에 의해 표시된다.
'리셋'은 외부 RST 핀을 주장하거나 소프트웨어 마스터 리셋 비트를 주장한 결과로서 BSI(10)(또는 이것의 논리부)의 초기화를 지칭하는데 사용된다.
저장장소 할당
BSI(10)는 바이트-번지지정 가능 메모리에 인터페이스하지만, 정보를 항상 단어로서 전달한다. BSI(10)는 32데이터 비트와 4바이트-패리티 비트를 합한 비트수의 단어폭을 사용한다. 패리티는 무시될 수도 있다.
버스 효율을 최대화하기 위해서, BSI는 항상 정보의 버스트를 전달한다. 전달은 항상 버스트-사이즈 경계에 정렬된다. BSI(10)는 제어 정보 전달을 위해서 한 단어의 버스트-사이즈를 사용하며, 데이터 전달을 위하여 1, 4 또는 8-단어 버스트에의 인터페이스를 동적으로 연속한다.
외부 메모리내의 인접한 저장장소 할당의 초대 '유닛'은 '페이지'이다. BSI(10)는 제어 정보 스페이스를 위해서는 1K 또는 4K 바이트(256 또는 1K 단어, 호스트-선택가능)의 페이지 사이즈를 사용하고, 데이터 스페이스를 위해서는 4K 바이트(1K 단어, 고정 사이즈)의 페이지 사이즈를 사용한다. 데이터 오브젝트(즉, SDUs/프레임)는 다수의 디스죠인트(disjoint) 또는 인접 페이지를 포함할 수 있다.
어드레스 메모리에는 1-비트 페이지 넘버와 12-비트 '오프셋'을 포함하는 '포인터'가 사용된다. 이것은 28비트의 가상 실제 번지지정 능력을 제공한다. 데이터 유니티를 전달할 때에 포인터는 페이지 경계와 접할 때까지 증가되며, 경계와 접하면 새로운 페이지가 사용된다. 제어 유닛을 전송할 때에는, 포인터는 페이지 바운드까지 증가되고, 다음에는 그 페이지 시작점으로 다시 랩어라운드한다. 이러한 특수 구조체를 큐(Queue)라고 한다.
정보 제도
BSI(10)와 호스트 시스템은 두 종류의 '오브젝트'를 교환하므로써 상호 작용한다.
1. 제어 오브젝트는 BSI(10)에 의해 해석되며, 그 동작을 바꿀 수 있다.
2. 데이터 오브젝트는 BSI(10)에 의해 해석되지 않으며, BMAC로 또는 이로부터 통과된다.
제어 및 데이터 오브젝트는 외부 메모리내에서 분리된 상태로 유지된다. 각각의 오브젝트는 항상 단일 오우너(owner)를 가지며, ABus 인터페이스에 걸쳐 신뢰성있는 동기화를 가능하게 한다.
오브젝트는 외부 메모리내에 하나 이상의 '부분'으로 이루어질 수 있다. 오브젝트의 각각의 부분은 인접되어야만 하고 메모리 페이지내에 완전히 수용되어야만 한다.
'단일-부분' 오브젝트는
1. 하나의 온리 부분으로 이루어지며,
'다수-부분' 오브젝트는
1. 하나의 제 1 부분과
2. 0이상의 중간 부분과
3. 하나의 최종 부분으로 이루어진다.
오브젝트 부분들은 제 1 비트(비트[31]에 있는 것)와 최종 비트(비트[30]에 있는 것)를 사용하는 2비트 태그 필드에 의해 식별된다. 결과는 아래의 TABLE Ⅱ에 도시되었다
표 2
제 1 최종 디스크립터 형태 및 사용
1001 0011 오브젝트내의 제 1 부분오브젝트내의 제 1 부분오브젝트내의 최종부분제 1 및 최종 부분인 온리 부분
오브젝트의 각각의 부분은 '디스크립터'에 의해 기술된다. 본 발명의 한 특징에 따라서, 디스크립터는 오브젝트를 구분하기 위해서 제 1 플래그와 최종 플래그를 수용한다. 어느 플래그 셋트도 없는 디스크립터는 '중간'이고, 두 개의 플래그 모두가 있는 디스크립터는 '온리'이다. '제 1' 또는 '온리'는 '최종' 또는 '온리' 다음에 나타나야 하고, '제 1' 또는 '중간'은 '최종'에 선행하여야 한다. 그렇지 않으면, 일관성 고장이 검출된다. 이 메카니즘은 디스크립터 일관성 첵킹을 허용하고, 따라서, 불량 디스크립터에 의해 기술된 프레임은 링에 전송되지 않는다.
'스트림'은 논리적으로 연관된 정보의 한 방향으로의 흐름이다. 오브젝트는 스트림의 형태로 BSI(10)와 호스트 사이에서 전달된다. 각각의 종류의 오브젝트에 대해 별도의 종류의 스트림이 있다.
데이터 오브젝트 또는 제어 스트림의 한 부분을 지적하는 디스크립터는 위치 필드와 '사이즈' 필드를 포함한다. 위치는 메모리에 있어서 그 부분은 제 1 바이트의 어드레스이다. 사이즈는 메모리에 있어서 그 부분의 길이(데이터 유닛 부분에 대해서는 바이트로 표시되고, 제어 스트림 부분에 대해서는 단어로 표시된다)이다.
'메시지'는 일련의 명령 또는 상태 파라미터를 포함하는 제어 오브젝트이다. 메시지는 위치와 사이즈 필드를 갖지 않는데, 왜냐하면, 메시지는 정보를 지적하는 것이 아니고 정보를 포함하기 때문이다.
프레임 또는 '서비스 데이터 유닛(SDU)'은 서비스 사용자와 서비스 제공자 사이의 데이터 전달의 유닛이다. BSI(10)는 BMAC와 외부 메모리 사이에서 MAC SDUs, 즉, MAC 프레임을 전달한다. 프레임은 외부 메모리에서 인접될 수 있거나, 또는 프레임은 다수의 별개의 부분을 포함할 수도 있다. 각각의 프레임 부분은 '데이터 유닛'이라고 불리운다. 각각의 데이터 유닛에 대해서는 '데이터 유닛 디스크립터(DUD)'가 있다. SDU의 어느 부분을 기술하는가에 따라서 제 1, 중간, 최종 및 온리 DUDs가 있다. 입력과 출력을 위해서 데이터 유닛과 디스크립터가 있는데, 각 종류의 부분은 입력 데이터 유닛(IDU), 출력 데이터 유닛(ODU), 입력 데이터 유닛 디스크립터(IDUD) 및 출력 데이터 유닛 디스크립터(ODUD)로 명명된다.
예로서, 도10은 2개의 프레임의 출력(링으로의 출력) 리퀘스트의 예를 도시하는데, 각각의 프레임은 2개의 부분으로 이루어진다. 이것은 다음의 구조체를 가질 것이다.
1. 2개의 ODU 디스크립터 오브젝트(각각의 프레임에 대해 1개)를 지적하는 REQ 디스크립터
2. 여기서 각각의 ODU 디스크립터 오브젝트 ODUD 제 1과 ODUD 최종을 포함한다.
3. 여기서 각각의 ODUD는 ODU 부분을 지적한다.
4. 여기서 4개의 ODU(부분)의 각각은 프레임의 부분을 포함한다.
BSI(10)에 의해 인식되고 발생되는 5개의 디스크립터 형태가 있다. 이들은 도11에 도시되고 아래에 수록되었다.
1. DUD: 데이터 유닛 디스크립터는 데이터 유닛의 위치와 사이즈를 기술한다. ODUDs는 출력 채널상에 폐치된다. 따라서 프레임 부분이 전송을 위해 어셈블될 수 있다. IDUDs는 BSI(10)가 각각의 프레임 부분을 기입한 위치리르 기술하기 위해 입력 채널상에 발생된다.
2. REQ: 리퀘스트 디스크립터는 작동 파라미터와 명령을 BSI에 전달한다.
3. CNF: 확인 상태 메시지(디스크립터)는 리퀘스트 작동의 결과를 기술한다.
4. PSP: 풀 스페이스 디스크립터는 자유 메모리 스페이스의 영역의 위치 및 사이즈를 기술한다.
본 발명의 한 특징에 따라서, 수신 인터페이스는 전송 인터페이스가 수용하는(ODUDs)동일한 2개 단어 포맷의 F/L 플래그와 바이트 카운트와 데이터 포인터를 가지고 IDUD.Fs(또한 IDUD.no Fs를 위한 데이터 유닛 스타트를 직접지적)를 위한 프레임 DA를 선행하는 FC 바이트를 지적하는 입력 데이터 유닛 디스크립터(IDUDs)를 발생시킨다. 이러한 전송 및 수신 데이터 디스크립터 포맷 능력은 호스트가 데이터 또는 디스크립터를 이동/수정하지 않고 단지 디스크립터 목록에서 전송기를 지적하므로써 프레임을 재전송하도록 허용한다. 이것은 수신된 정보를 재전송할 때 호스트 처리 오버헤드를 감소시킨다.
SAPs 및 채널
BSI(10)는 하나 이상의 BMAC 사용자를 위해 MAC 데이터 서비스에 인터페이스를 제공한다. 즉,
1. SMT 엔티티는 MAC 사용자이다(모든 스테이션에서).
2. LLC 엔티티는 MAC 사용자이다(엔드 스테이션에서)
3. 중계 엔티티는 MAC 사용자이다(브릿지에서).
본 발명의 한 특징에 따라서, 각각의 MAC 사용자는 하나 이상의 '서비스 액세스 점(SAPs)'을 경유하여 MAC 데이터 서비스에 액세스한다. MAC 사용자는 하나 이상의 SAPs를 사용할 수 있으나, SAP는 2개 이상의 MAC 사용자에 의해 공유되지 않는다. BSI(10)는 5개의 SAPs를 제공하는데, 2개의 리퀘스트(링으로 향한 출력)RSAPs와 3개의 인디케이트(호스트로 향한 입력) ISAPs이다. 이러한 SAPs는 다음과 같이 할당될 수 있다:
1. 동기와 비동기 전송 각각에 대한 출력상의 RSAP_0과 RSAP_1
2. MAC-SMT 동기 및 비동기 전송 각각에 대한 입력상의 ISAP_0, ISAP__1, ISAP_2이다.
BSI(10)는 여러 가지 적용에 적절한 지지를 제공하기 위하여 SAP 할당을 위해 4개의 다른 옵션을 제공한다. 4개의 옵션은 기본적으로 동기/비동기, 하이/로우 우선순위 비동기, 내부/외부 어드레스(브릿징 적용을 위함)와 헤더/리메인더(고속 프로토콜 처리를 위함)이다.
BSI(10)는 5개의 '채널'을 제공한다 채널은 BSI(10)와 외부 메모리 사이에 관련된 오브젝트의 전송을 제어한다. 채널은 SAPs를 실현하기 위하여 사용된다. 각각의 SAP에는 하나의 채널이 있다. 다수의 채널을 사용하면 각각의 SAP는 독립적이고 동시적인 것으로(약간의 제한이 있음) 나타난다.
각각의 채널은 한 채널내에서 관련 오브젝트의 단일 형태의 전송을 제어하는 서브채널을 경유하여 직접 메모리 액세스(DMA) 능력을 갖는다.
리퀘스트 채널은 4개의 서브채널을 갖는데, 출력 데이터 스트림, ODU 디스크립터 스트림, CNF 메시지 스트림 및 REQ 디스크립터 스트림이다.
인디케이트 채널은 3개의 서브채널을 갖는데, 즉, 입력 데이터 스트림, IDU 디스크립터 스트림 및 PSP 디스크립터 스트림이다.
어텐션/통보
BSI(10)는 폴드 또는 인터럽트-구동 환경에서 작동할 수 있다. 인터럽트 스킴은 호스트에 주어진 인터럽트 수를 최소화하도록 설계된다. BSI(10)는 이벤트 레지스터내에 적절한 이벤트 어텐션 비트를 셋팅하므로써 '어텐션'이라고 불리우는 인터럽트를 발생시킨다. 호스트는 이 어텐션으로 하여금 대응 '통보' 비트를 셋팅시키므로써 인터럽트를 발생할수 있게한다(즉, 마스크를 디스에이블하게 한다).
셋트 및 리셋시에 어떤 어텐션 비트는 신호이다. BSI(10)는 호스트에게 어텐션 신호를 보내기 위해 비트를 셋팅한다. 호스트는 BSI(10)에게 완료/인지 신호를 보내기 우해 비트를 리셋한다. 이것은 BSI(10)로 하여금 어떤 처리 작용(예로서, 메일박스 판독)을 취하도록 할 수도 있다.
상세한 설명
도7을 다시 참조하면, BSI(10)는 일반적으로 다음의 5개의 모듈을 포함하는데, 즉, 인디케이트(수신) 모듈(12), 리퀘스트(전송) 모듈(14), 상태 발생/스페이스 관리 모듈(16), 버스 인터페이스 유닛 모듈(18) 및 제어 버스(CBus) 인터페이스 모듈(20)이다. 인디케이트와 리퀘스트 모듈(12, 14)은 독립적이며 파이프라인된 머신이다. 각각의 파이프라인은 BMAC 인터페이스, 데이터 FIFO(12A, 14A), 버스트 FIFO(12B, 14B) 및 스테이트 머신(12C, 14C)을 포함한다.
각각의 데이터 FIFO(12A, 14A)는 64바이트 깊이이고 16단어로 배열되며, 각각의 단어는 42비트 와이드이다. 인디케이트 데이터 FIFO(12A)내에서 한 단어는 32 데이터 비트, 4패리티 비트(바이트당 1개), 단어가 그 위에서 시스템 메모리로 변환되는 수신 채널(ISAP)과 단어의 '형태'(즉, 언코미티드(uncomitted), 코미탈(commital), 상태)를 식별하는 4비트 태그와, 2개의 사용되지 않는 비트를 포함하며, 리퀘스트 데이터 FIFO(14A)내에서는 한 단어는 32데이터 비트, 4패리티 비트와 6비트 태그(아래에 기술됨)를 포함한다. 데이터 FIFO(12A, 14A)는 버스 대기를 수용하도록 설계된다.
본 발명의 한 특징에 따라서, EOF에서 MAC 인터페이스는 한 최종 단어를 프레임 상태로서 태그하며 상태 단어를 인디케이트 데이터 FIFO(12A)내에 데이터 뒤에 놓는다. 시스템 인터페이스는 상태 처리 전에 데이터를 판독하고 EOF 상태 디스크립터를 기입한다. EOF 상태 디스립터는 EOF 상태를 식별하고 EOF 인디케이터(indicater)(즉, 오류, 복사)를 포함하며 중단점(아래에 기술됨)을 설정한다. 데이터/상태 동기화는 자동적이며 MAC 인터페이스와 시스템 인터페이스 사이의 다른 통신은 필요하지 않다. 이것은 복잡한 데이터/상태 동기화 없이도 어떠한 수의 프레임이 인디케이트 데이터 FIFO(12A)내에 들어갈 수 있도록 허용한다. 이것은 또한 많은 작은 프레임 수신시에 안전한 FIFO 사용을 허용하므로써 긴 버스 대기 시간으로 인한 드롭 프레임의 가능성을 감소시킨다. 이것은 또한 인디케이트 데이터 FIFO(12A)가 어떠한 깊이로도 될 수 있다는 점에서 설계 신축성을 허용한다.
인디케이트 데이터 FIFO(12A)는 원하지 않는 데이터를 제거하도록 자체의 기입 포인터를 리셋할 수 있다.
각각의 버스트 FIFO(12B, 14B)는 완전한 버스 버스트를 유지해야만 하며 32 비트의 16개의 단어로 배열된다. 버스트가 최대 8개의 단어이기 때문에, 버스트 FIFO(12B, 14B)는 하나의 버스트를 각각 유지하는 2개의 뱅크(0.1)를 제공하도록 '핑 - 퐁(ping-pong)' 방식으로 사용된다. 기술된 바와같이, BIU 모듈(18)은 완전한 버스트를 한 뱅크로 판독 또는 기입한다. 인디케이트 스테이트 머신(12C)또는 리퀘스트 스테이트 머신(14C)은 뱅크로부터 적절한 수의 바이트를 판독한다.
즉, 본 발명의 한 특징에 따라서, 또한 아래에 더욱 상세히 기술되었듯이, 데이터 포인터 및 카우트는 필요한 데이터의 페칭 및 저장시에 수행하기 위하여 가장 효율적인 버스 트랜잭션을 계산하는데 사용된다. 버스트가 길수록 더욱 효과적이지만, '충분한'바이트가 요구될 때에만 효과적이다. 포인터와 카운터를 각각의 버스 트랜잭션으로 업데이트하므로써, 가장 효과적인 트랜잭션이 동적으로 계산된다. 따라서, 가능한 최소 버스트 사이클이 필요한 데이터를 전송하는데 사용되며, 시스템 인터페이스의 버스 대역폭 요구사항을 최소화시킨다.
예로서, 프레임을 메모리로 최종 기입시에 버스트의 5개의 바이트만이 유효할 수 있다. 이 경우에 인디케이트 머신(12C)은 뱅크로 5개의 유효 바이트만을 기입하지만, BIU 모듈(18)은 완전한 뱅크를 기입한다. 이것은 상술한 바와 같이 수신되 모든 프레임이 버스트-사이즈 경계에 정렬되기 때문에 허용가능하며, 기입된 DUD는 프레임내에 유효 바이트의 실제 수의 카운트를 포함할 것이다.
버스트 FIFO(12B, 14B)는 또한 링 클록에 다른 하위 레벨 논리 연산과 시스템 버스 클록에 따른 BIU 논리 연산 사이의 비동기적 경계로서 사용된다.
스테이트 머신(12C, 14C)은 아래에서 더욱 상세히 기술된 것이다.
상태 발생/스페이스 관리 모듈(16)은 리퀘스트와 인디케이트 파이프라인 사이에서 공유된다.
BIU(18)는 모든 ABus 트래픽을 처리하며 CBus 인터페이스(20)는 이벤트/어텐션 제어에 액세스한다.
BIU 인터페이스(18)는 모든 데이터경로 정보를 BSI(10)로 또 그로부터 전달하는데 사용되는 32비트 메모리 버스 포트이다. 이것은 데이터, 디스크립터 및 상태를 포함한다. 버스는 32 비트 다중화된 어드레스와 데이터를 사용하며 최대 대역폭에 버스트 전달 능력을 제공한다.
호스트는 BSI 내부 레지스터에 액세스하고 어텐션/통보 논리부를 관리하기 위하여 CBus(20)를 사용한다.
인디케이트 모듈(12)의 더욱 상세한 설명은 도12에 제공되었다.
리퀘스트 모듈(14)의 더욱 상세한 설명은 도 13A 내지 도 13F에 제공되었다.
상태 발생/스페이스 관리 모듈(16)의 더욱 상세한 설명은 도14에 제공되었다.
버스 인터페이스 유닛 모듈(18)의 더욱 상세한 설명은 도15에 제공되었다.
본 발명의 상세한 설명의 나머지 부분에 있어서 이 모듈들을 적절히 참조할 것이다.
데이터 구조체
BSI(10)는 소프트웨어 구동기를 경유하여 어떠한 상위 레벨 인터페이스에도 쉽게 맵핑될 수 있는 단순한 데이터 구조체를 사용한다. 본 발명의 한 특징에 다르고 또한 아래에 더욱 상세히 설명되었듯이, 데이터 유닛 구조체는 입력과 출력에서 기본적으로 대칭이다.
BSI(10)는 메모리를 고정 사이즈 페이지로 분할한다. 이것은 가상 메모리 환경을 위해 이상적 지지를 제공하며, DMA 관리(포인터)를 위해 사용되는 논리부의 양을 감소시킨다.
데이터 유형
BSI(10)는 데이터 유닛, 데이터 유닛 디스크립터(DUDs), 리퀘스트 디스크립터(REQs), 확인 메시지(CNFs) 및 풀 스페이스 디스크립터(PSPs)를 다룬다. 상술한 바와 같이, 디스크립터는 다수-부분의 오브젝트일 수도 있는데, 각각의 부분은 제 1 - 최종 태그에 의해 식별된다.
IDU.ODU(입력/출력 데이터 유닛)
IDU/ODU는 서비스 데이터 유닛(SDU)의 전부 또는 일부를 형성하는 인접 바이트의 그룹이다. 각각의 IDU/ODU는 한 페이지 전부 또는 일부일 수도 있으나, 항상 페이지 내에 들어 맞는다. 입력 및 출력에 대한 데이터 유닛이 있는데, 즉, 각각의 IDUs와 ODUs이다. (리퀘스트 ) ODU는 호스트에 의해 한정된 메모리 구역내에 저장된다. BSI는 풀 스페이스 디스크립터(PSPs)에 의해 구분되는 메모리 구역내에(인디케이드) IDU를 기입한다. 각각의 ISAP는 자체 PSPs 큐로부터 요구되는 때에 PSPs를 페치한다.
DUDs(데이터 유닛 디스크립터)
DUDs(IDU/ODU 디스크립터)는 IDU 또는 ODU를 기술하는 2-단어 엔티티이다, 이것들은 위치 및 사이즈 필드이다. 위치 필드는 페이지 수와 페이지내의 오프셋을 포함한다. 사이즈 필드는 데이터 유닛내에 바이트 수를 한정한다. 페이지는 SAP상에 하나 이상의 데이터 유닛(프레임 사이즈에 의존한다)을 포함할 수도 있다. DUDs는 메모리(1 또는 4K 바이트 경계내에 정렬된)내의 어디에도 위치된 상태 큐, 1 또는 4K 바이트 큐로 기입된다. 입력 및 출력 DUDs가 있는데, 즉, IDUDs와 ODUDs이며, 그 포맷은 도 11의b 와 도11의c 에 각각 도시되었다.
IDUD는 또한 이것들이 기술하는 프레임을 위해 상태를 포함한다. 멀티-파트 IDUD에 있어서 IDUD 최종 디스크립터는 프레임을 위해 유효 최종 상태를 포함한다. IDUD는 인디케이트 상태 큐에 기입된다.
REQ(REQ 디스크립터)
REQ 디스크립터는 ODUD 오브젝트 스트림의 일부분을 지적하는 2-단어 엔티티이다. 이것들은 위치와 사이즈 필드도 포함한다. 위치 필드는 ODUD 스트림의 일부의 스타트 어드레스(정렬된 단어)를 지적한다. 카운트 필드는 ODUD 스트림 부분(즉, 최종 비트 셋트를 가진 ODUD 디스크립터)에 의해 나타내어지는 프레임 수를 정의한다. REQ는 1 또는 4K 바이트 큐로부터 페치된다. 리퀘스트 디스크립터 포맷은 도11의 d에 도시되었다.
CNF(확인 상태 메시지)
CNF는 리퀘스트 상태 큐에 저장된 2-단어 확인 상태 디스크립터이다. 인디케이트에 있어서 IDUD는 디스크립터와 상태 메시지의 조합이다. 확인 디스크립터 포맷은 도11의e에 도시되었다.
PSP(풀 스페이스 디스크립터)
PSP는 인디케이트 데이터 기입에 사용 가능한 자유-스페이스 영역을 위한 2 단어 디스크립터이다. 이것은 위치 및 암시적인 사이즈를 포함한다. 고정 4K 바이트 데이터 페이지 사이즈가 있기 때문에, PSP는 4K 바이트까지의 암시적 카운트를 가진다. 위치 필드는 페이지 수와 오프셋을 포함한다. 통상적으로 오프셋은 0(하위 (버스트) 비트는 0이어야만 한다)이 될 것이며, 스페이스 관리는 단지 전체 정렬된 4K 메모리 페이지만 취급한다. PSP는 1 또는 4K 바이트 큐로부터 페치된다. PSP 디스크립터 포맷은 도 11의a 에 도시되었다.
리퀘스트
도12를 참조하면, 리퀘스트 SAPs(RSAPs)는 출력 SDU를 한정하기 위하여 3개 - 레벨 구조를 사용한다.
각각의 SDU는 ODU 디스크립터(ODUD) 오브젝트에 의해 기술된다. 각각의 ODUD는 한 메모리 페이지내에 완전히 들어가는 ODU를 구분한다. 다수의 ODUD 오브젝트(다수의 SDU)는 단일 REQ 디스크립터 부분에 의해 기술되도록 인접되게 그룹될 수 있다. 다수의 REQ 디스크립터(부분)는 호스트 소프트웨어에 의해 한 리퀘스트 디스크립터 오브젝트로서 그룹될 수도 있다. 각각의 REQ 부분은 RSAP 채널의 Req?_req_ptr 서브채널을 사용하여 REQ 큐로부터 BSI(10)에 의해 페치된다. 각각의 RSAP는 RSAP당, 서비스 기회당, 즉, 최종 태그 비트 셋트를 가지는 REQ 디스크립터까지 하나의 리퀘스트 디스크립터 오브젝트를 처리한다.
리퀘스트 상태(확인)는 리퀘스트 오브젝트당 단일 확인 오브젝트로서 발생된다. 각각의 확인 오브젝트는 하나 이상의 CNF 메시지를 포함한다. 각각의 RSAP는 CNF가 기입되는 1 또는 4K 바이트 확인 상태 큐를 갖는다.
인디케이트 구조체
도17를 참조하면, 인디케이트 SAP(ISAP)는 2레벨 구조체(RSAP 구조체와 호환 가능한)를 발생시킨다.
각각의 SDU는 현재의 IDU 페이지내에 저장된다. 만약 SDU가 완전히 페이지내에 맞으면, IDUD. 온리 디스크립터는 SDU를 구분하기 위해 기입된다. 만약 한 페이지를 넘으면 멀티-파트 IDU 디스크립터 오프젝트가 기입된다. 중간 상태는 각각의 IDUD내에 기입되며, 상태 이벤트가 발생되면 정의 상태가 최종 IDUD내에 기입되고 어텐션이 발생된다. 상태 이벤트는 호스트-정의된다.
3개의 ISAP는 자체의 상태 및 데이터 PSP 큐를 각기 갖는다. 큐는 모두 1K 또는 4K 바이트일 수 있다. 각각의 큐는 메모리내의 어떤 곳에도 위치될 수 있다(1K 또는 4K 바이트 경계에 정렬됨). 각각의 ISAP는 자체 PSP큐로부터 얻어진 자체 메모리 페이지내에 데이터를 기입한다.
풀 스페이스 구조체
도18은 ISAP PSP 큐의 구조체를 도시한다. 큐는 ISAP상에 유입 데이터를 기입하기 위한 사용가능 스페이스 풀을 기술한다. 큐는 1K 또는 4K 바이트이다. PSP당 8바이트이므로 큐는 128 또는 512 PSP(ISAP당 최대 0.5 내지 2M 바이트의 자유 스페이스)를 유지한다.
제어 메모리 할당
BSI(10)는 큐 사이즈 경계에 정렬되는 한 메모리내의 어떠한 곳에도 각각의 큐가 있도록 허용한다. 상술하 바와 같이, 호스트는 큐 사이즈를 위해 2개의 선택, 즉 1K 또는 4K를 갖는다. 모드 레지스터 비트는 모든 큐 사이즈를 선택된 값에 셋팅한다. 전체 10개의 큐가 있다. 제어 메모리의 최소량을 사용하기 위해서, 1K 큐 사이즈가 선택되며, 1K 바이트 상태, REQ 및 PSP 큐는 페이지(10K 소모)로 그룹된다. 다른 스페이스는 ODUD에 필요하다.
도19는 최소 시스템을 위한 제어 메모리 요구사항이 2개의 4K 페이지내에 일치되는 방법을 도시한다. 이 경우에, 단지 2개의 ISAP, 즉, ISAP_0과 ISAP_1이 사용된다. BSI(10)는 내부/외부 소팅 모드에 놓여지며, 외부 어드레스 지정은 사용되지 않는다. 이것은 ISAP_0은 MAC-SMT 프레임을 복사하고 ISAP1은 그외 모든 것을 복사하는 것을 뜻한다.
BMAC 지원
오류 및 예외
'예외'는 상태를 발생시키거나 처리를 수정하거나 특수 호스트 중재를 필요로 하지 않는 복구 가능한 이상 상태이다. 반면에, '오류'는 복구 불가능한 이상 상태로서, 그 상태에서는 BSI(10)는 상태를 발생시킬 것으로 보장되지 않으며, 따라서, 오류는 특수 호스트 처리를 필요로 한다. 예로서 오류는 상태 기입시의 ABus 트랜잭션 오류이다.
리퀘스트
상술한 바와 같이, BSI(10)는 2개의 리퀘스트 SAP를 제공하는데, RSAP_0과 RSAP_1 및 높은 우선순위와 낮은 우선순위이다. 대표적으로, 높은 우선순위는 동기적 트래픽에 사용되고 낮은우선순위는 비동기적 트래픽에 사용되지만, BSI(10)내의 어떤 것도 이 관계를 구속하지는 않는다. 그러나, RSAP_0은 한 서비스 기회내에 RSAP_1 다음에는 서비스되지 않는다.
각각의 RSAP 는 대체로 동일 기능을 갖는다. 각각의 서비스 기회에 RSAP당 단지 하나의(멀티 - 파트) 리퀘스트 오브젝트가 서비스된다. 그러나, 리퀘스트 오브젝트는 다수의 서비스 기회를 포함한다. 물론, 이 기능은 표준 용도를 충족시켜야만 한다. 예로서, THT가 디스에이블(동기적 트래픽)되면, 리퀘스트는 한 서비스 기회만을 포함해야 하며, 그렇지 않으면 리퀘스트는 동기적 대역폭 할당의 초과로 인해 오류가 된다.
프리스테이징, 스테이징 및 선취
리퀘스트 스테이트 머신(14C;도7)은 프리스테이징(prestaging), 스테이징(staging) 및 선취(preemption)를 다룬다. 현재의 프레임이 일단 전송을 수행해 왔고, 그 끝 바이트가 FIFO에 있을 때 RSAP가 다음 프레임에 대한 데이터를 리퀘스트 버스트 FIFO(14B) 내로 페치하는 것을 시작할 때가 '스테이징'이다.
'프리스테이징'은 토큰이 도착되기 전에 다음 프레임이 스테이지되었을 때이다. 즉시 리퀘스트/해제 등급(즉, 토큰이 존재하지 않음)이 있는 리퀘스트에는, 프리스테이징은 적용되지 않는다.
'선취'는 보다 높은 우선순위의 RSAP가 이미 FIFO내에 있는 보다 낮은 우선순위의 RSAP의(넌-커미티드)프레임을 선취할 때이다(BSI는 RSAP_0이 선택적으로 RSAP를 중단시키도록 허용한다). 이것이 갖는 효과는 BSI-MAC가 토큰을 방출하게 하는 것이며 다음에는 서비스 기회 사이에서 우선순위를 재정리하는 것이다.
본 발명의 한 특징에 따라서, BSI(10)는 선취 가능 채널상에 전송된 각각의 프레임을 위해 제 1 ODUD의 어드레스를 비워둔다. 중단이 발생되면, BSI(10)는 보다 높은 우선순위 리퀘스트를 서비스하기 위해 리퀘스트 채널을 스위치한다. 보다 높은 우선순위 리퀘스트가 완료되면, BSI(10)는 다시 스위치되고 비축되었던 디스크립터 어드레스에 리퀘스트 처리를 복귀시킨다.
BSI(10)는 항상 SDU를 스테이지한다. 프리스테이징은 RSAP_1을 위한 사용자-프로그램가능 옵션이며, 항상 RSAP_0만을 위해서 인에이블된다.
BSI(10)는 스타트 스테이트(통상적으로 서비스 기회의 사이에 있음)내에서 능동 리퀘스트의 우선순위를 선정한다. 능동 RSAP_0 리퀘스트는 항상 제일 먼저 서비스 받을 것이며, 통상적으로 RSAP_0은 서비스 기회 동안에 제일 먼저 서비스 받을 것이며 다음에는 RSAP_1이 서비스 받는다. 선취가 가능하게되고 리퀘스트가 (프리)스테이지 되면, RSAP_1은 선취될 수 있다. 이것은 RSAP_0이 능동으로 되면 발생될 것이다. 이미 리퀘스트 FIFO내에 있는 인코미티드 RSSP_1 SDU는 제거되고 RSAP_0을 서비스한 후에 재 페치된다. 프레임은 한번 전송되며, FIFO 임계치에 도달되고, 또는 프레임의 끝은 FIFO내에 있고 BMAC는 전송할 준비가 된다.
확인
확인에는 3가지 대안이 있는데, 즉, 비확인, 전송기 확인 또는 완전 확인이다.
확인이 필요할 때에는, BSI(10)는 통상적으로 리퀘스트 오브젝트의 끝에서 확인 상태만을 기입한다. 리퀘스트가 다수의 서비스 기회를 포함하면, 멀티-파트 확인 상태 오브젝트가 기입될 수 있고, 매 서비스 기회에 한 부분식 서비스된다. 전송기 확인을 위해서는, 리퀘스트 스테이트 머신(14C)은 SDU가 정확하게 전송되었다는 것을 확인한다. 완전 확인을 위해서, 리퀘스트 머신(14 C)은 SDU가 정확하게 전송되었고, '정확하게' 확인된 SDU 수는 전송된 SDU 수와 같다는 것을 증명한다. '정확하게' 프레임은 대체로 매칭 FC, 국부 소스 어드레스(SA 투명이 선택되지 않았을 때), 매칭 예상 E, A 및 C 인디케이터, 유효 데이터 길이 및 유효 FCS를 가진 프레임이다.
인디케이트
BSI(10)는 3개의 인디케이트 SAP를 제공하는데, 즉, ISAP_0, ISAP_1 및 ISAP_2이며, 모두 동일 우선순위를 갖는다. 본 발명의 한 특징에 따라서, 유입 데이터는 여러개의 인디케이트 구성 비트에 따라 3개의 ISAP 상에 소팅된다. 소팅 논리부에 관한 보다 세부 사항은 아래에 설명된 서비스 인터페이스에 주어졌다. 주요 소팅 모드를 결정하는 2개의 비트가 있는데, 이것은 Sort_Mode(1:0)이다. 아래의 표 3은 이러한 2개의 비트의 효과를 보여준다.
표3
SM1.SM0 ISAP_2 ISAP_1 ISAP_0
00011011 비동기외부정보L-비동기 동기내부헤더Hip-비동기 MAC-SMTMAC-SMTMAC-SMTMAC-SMT
ISAP_0은 항상 SMT와 MAC SDU를 수신한다. 다른 2개의 SAP는 BSI(10)소트 모드에 따라 SDU를 수신한다.
모드 0에서 ISAP_1은 동기적 프레임을 수신하고 ISAP_2는 비동기적 프레임을 수신한다. 이 모드는 동기적 트래픽을 지지하는 엔드 스테이션에서의 사용을 위한 것이다.
모드 1에서, ISAP_1은 내부 어드레스(MAC 내의)에 매칭되는 프레임을 수신하고, ISAP_2는 외부 어드레스(EA 입력이 주장될 때)에 매칭되는 프레임을 수신한다. 이 모드는 외부 어드레스 매칭 회로를 가지고 ECLP/EA/EM 핀을 사용하는 브릿지 또는 링 모니터를 위한 것이다.
본 발명의 한 특징에 따라서, 프레임내에서 선행 바이트와 후속 바이트의 분리가 발생될 수 있는 하나 이상의 점이 모드 2에서 결정된다. 이 메카니즘은 카운터일 수도 있으며, 또는, 이것은 외부 스티뮬리 또는 정보 스트림내의 데이터 값에 응답하는 스테이트 머신을 합체할 수도 있다. 분리점에서, 연속 정보 바이트는 시스템 메모리내의 별도 메모리 구역에 복사된다. 버퍼 관리 스킴(scheme)은 각각의 메모리 구역에 별도의 관리를 제공한다. 상태는 호스트에 의해 보다 쉬운 처리와 관리를 위해 그룹핑되도록 한 조합 메모리 구역에 기입될 수 있다.
따라서, 모드 2에서, ISAP_1과 ISAP_2는 복사될 모든 넌-MAC/SMT 프레임을 수신하지만, 그 사이에서는 헤더와 정보(나머지) 부분을 분리한다. ISAP_1은 호스트가 정의한 '헤더 길이'에 도달될 때가지 초기 바이트를 복사한다. 프레임 바이트의 나머지는 ISAP_2상에 복사된다. 단지 한 IDUD 스트림만 발생되지만(ISAP_1상에), PSP 큐는 둘 다 IDU가 기입될 위치를 결정하는데 사용된다. 이 모드는 고성능 프로토콜 처리 적용을 위한 것이다.
모드 3은 높은 우선순위 비동기 프레임을 ISAP_1상에 소트하고, 낮은 우선순위 비동기 프레임을 ISAP_2상에 소트한다. 3-비트 우선순위 필드의 최상위 비트는 높은/낮은 우선순위를 결정한다.
ISAP는 메모리 페이지를 분리하기 위하여 인디케이트 데이터를 각기 기입하며, 자체 PSP 큐를 각기 갖는다. 이것은 3개의 오더 링을 포함하여 다양한 풀 스페이스 관리 스킴을 허용한다. 각각의 ISAP는 자체 상태 큐내에 상태(ISUD)를 기입한다.
외부 메모리 인터페이스(ABus)
BSI(10)는 다중화 어드레스와 데이터 버스(ABus)를 사용한다. 이것은 32 비트 와이드 데이터 전송을 수행하며 28 비트 어드레스를 제공한다.
BSI(10)는 2개의 ABus 모드중의 하나에서 작동하는데, 이것은 가상 또는 실제 번지지정이다. 가상 번지 지정에서는 외부 메모리 관리 유닛(MMU)이 BSI(10)를 위해 어드레스 번역(translation)을 제공한다. BSI는 상위 4개의 어드레스 비트상에 채널 정보를 출력시키며, 더욱 정교한 외부 번지지정 스킴이 지지될 수 있다. 예로써, 제어 정보는 한 메모리에 저장되고 데이터 정보는 다른 메모리(즉, 외부 FIFO)에 저장될 수 있다. BSI(10)는 또한 한 버스트 동안에 3개의 비 다중화된(demultiplexed) 어드레스 비트를 출력시킨다. 이것은 버스내의 어느 단어가 액세스되는 지를 나타낸다.
ABus를 경유하여 액세스된 외부 메모리는 정적이거나 동적일 수 있다. DRAM을 효과적으로 지지하기 위하여, BSI(10)는 버스트 모드 전달을 사용하며, 한 버스트에 4 또는 8개의 단어(16 또는 32 바이트 버스트에 해당함)를 전송한다. 실제 DRAM 어드레스 다중화, 리프레시 등은 외부 DRAM 제어기, 예를들면, 내쇼널 세미콘덕터 코포레이션으로부터 사용가능한 DP9420 DRAM 제어기에 의해 처리되어야만 한다.
BSI(10)는 중재를 위해 단순한 버스-리퀘스트/버스 그랜트(grant) 신호 쌍을 중재를 위해 사용하기 때문에 멀티-마스터 환경에서 작동한다.
버스는 여러 가지 형태의 트랜잭션을 지지한다. 단순한 판독과 기입은 단일 어드레스 및 데이터 전달을 포함한다. 버스트 판독과 기입은 다수의 데이터 전달이 후속하는 단일 어드레스 전송을 포함한다. BSI(10)는 버스트 트랜잭션 동안에 증가하는 어드레스 비트를 제공한다. 버스트는 항상 모듈로 16/32 바이트 어드레스 경계에 정렬된 16 또는 32 바이트이다. 또한, 버스트내의 어드레스를 위한 암시적 랩-어라운드(wrap-around)를 수행하는 시스템내에 공존하기 위해서 BSI(10)는 랩(wrap)할 버스트를 결코 방출하지 않는다.
기본적 번지지정 가능 양은 바이트이며, 예로서, 리퀘스트 데이터는 메모리내에 임의적으로 정렬될 수 있다. 그러나, 모든 정보는 32 비트 단어로 액세스되며, BSI(10)는 판독시에 사용되지 않은 바이트를 무시한다. BSI(10)는 항상 단어의 모든 바이트를 기입하며, 따라서, 모든 인디케이트 데이터를 정렬시킨다. 버스트 판독/기입 데이터는 정렬된 모듈로 버스트-사이즈이어야만 한다. 데이터 판독/기입시에, 단일 단어, 16 바이트 및 32 바이트 버스트 트랜잭션이 최대 효율을 위하여 요구될 때 사용된다.
패리티
BSI(10)는 패리티에 2개의 옵션을 제공하는데, 하나는 패리티를 사용하는 시스템을 위한 것이고, 다른 하나는 패리티를 사용하지 않는 시스템을 위한 것이다. 패리티가 사용될 때, 이것은 메인 데이터경로상에서 플로우-스루(flow-through)모드로 작동된다. 모든 패리티 인터페이스는 홀수 패리티를 사용하며 자체 어텐션을 갖는다.
BSI(10)는 3개의 출력 버스 각각에 항상 패리티를 발생시키는데, 이것은 ABus 인터페이스, CBus 인터페이스 및 BMAC 인터페이스이다.
(플로우-스루)패리티가 인에이블 상태이면, BSI(10)는 ABus 인터페이스에서 데이터상에 패리티를 체크하거나 또는 발생시키지 않는다. 대신에, 이것은 ABus와 BMAC 인터페이스 사이에 흐른다. 어드레스가 BSI(10)내에 저장되어 있을 대에 패리티는 어드레스상에 발생되기 때문에 BSI(10)는 방출된 어드레스상에 패리티를 발생시키지 않는다. CBus와 BMAC 데이터버스 패리티는 체크되고 발생된다.
패리티 체킹이 가능하지 않으면, BSI(10)는 ABus, CBus 또는 MAC 인터페이스로부터 정보상에서 패리티를 체크하지 못한다.
큐 관리
BSI는 10개의 큐를 사용하는데, 6개는 인디케이트(ISAP당 2개씩)상에 4개는 리퀘스트(RSA당 2개씩)상에 사용한다. 각각의 ISAP는 상태와 PSP 큐를 갖는다. 각각의 RSAP는 CNF 및 REQ 큐를 갖는다.
상술한 바와 같이, 호스트는 모든 큐가 1K 또는 4K 바이트가 되게 프로그램한다. BSI(10)는 큐의 리미트를 유지하는 레지스터에 비교되는 큐내에 다음 자유 엔트리에 포인터를 유지하므로써 모든 큐를 관리한다. 큐 포인터는 각각의 판독/기입 후에 증가된다. 포인터가 상위 큐 바운드(페이지 끝)에 도달하면 포인터는 하위 바운드(페이지 시작)로 다시 랩한다. 큐 리미트 레지스터 1 디스크립터(8 바이트)의 유닛내의 오프셋 값으로서 큐의 리미트를 유지한다.
데이터 스페이스 플로우 제어가 보다 정확하지만, 호스트는 데이터 또는 상태 스페이스를 한정하므로써 ISAP상에 플로우 제어를 제공한다.
상태 큐
BSI(10)는 상태 큐에 2-단어 디스크립터(메시지)를 저장한다. 리미트 레지스터는 상태가 기입될 페널티미트(penultimate)(끝의 바로 전) 위치를 한정한다. 각각의 단어는 큐 포인터 레지스터내에서 어드레스에 기입되는데, 그 레지스터는 후에 증가된다. BSI(10)가 호스트-정의된 리미트 전에 큐 엔트리에 기입할 때 이것은 'No_status_space' 어텐션을 발생시킨다. BSI(10)는 파이프라이닝(pipelining)에 기인하여 2개의 디스크립터까지 기입한다. 보다 완전한 세부사항은 아래에 언급된 서비스 인터페이스에 주어졌다. 상태 스페이스가 없을 때, RSAP는 더 이상의 리퀘스트를 처리하지 않고, ISAP는 더 이상의 프레임을 복사하지 않는다.
데이터 스페이스 큐
BSI(10)는 PSP 큐로부터 2-단어 PSP 디스크립터를 적재한다. 리미트 레지스터는 호스트에 의해 기입된 최종 유효 PSP를 한정한다. 각각의 ISAP는 자체 PSP 큐를 작동시키는 DMA 서브채널을 갖는다. PSP는 PSP 포인터에 의해 참조된 위치로부터 페치되며, 포인터는 후에 증가된다. PSP가 큐의 리미트(리미트 레지스터에서 한정된 바와 같음)로부터 (프리)페치된다면, 'Low_Data_Space' 어텐션이 그 ISAP에 대해 발생된다. 이것은 PSP 프리페치될 때에 어텐션이 발생될 때 큐가 하나의 PSP만을 갖지 않는다면 큐내에서 끝에서 두 번재의 PSP상에 발생될 것이다. 호스트는 큐의 테일(tail)에 보다 많은 PSP를 추가하고 리미트 레지스터를 업데이트할 것이다. 호스트가 충분한 PSP 엔트리를 유지하는 한 ISAP가 계속 복사하도록 적절한 스페이스가 사용가능한 것이다.
리퀘스트 작동
BSI(10)는 REQ 큐로부터 REQ 디스크립터를 적재한다. 리미트 레지스터(아래에 기술됨)는 호스트에 의해 기입되는 최종 유효 REQ를 정의한다. 전송을 위해서는, 공통 서비스 형태, 프레임 제어 및 예상-상태를 갖는 모든 SDU가 하나의 리퀘스트 오브젝트에 함께 모인다. 호스트는 Req?_cfg(request configuration)레지스터를 프로그램하고, REQ 디스크립터를 REQ 큐에 추가한 다음에 큐의 리미트 레지스터를 업데이트한다.
REQ 큐 포인터가 큐의 리미트에 도달하지 않고, RQSTOP 비트가 State-attn 레지스트에 리셋되며 RSAP의 상태 큐내에 스페이스가 있는 한 BSI(10)는 REQ 디스크립터를 판독할 것이다. 각각의 REQ 디스크립터는 여러개의 SDU를 위해 프레임 제어 및 서비스 등급을 한정하며, 이것은 위치 및 사이즈 필드를 포함한다. BSI(10)는 사이즈 필드를 내부 프레임 카운터내에 적재하고 위치를 ODUD 포인터 레지스터내에 적재한다. 전체 리퀘스트 오브젝트가 처리될 때까지(즉, 온리 또는 최종 디스크립터가 검출된다) BSI는 REQ 디스크립터를 계속 처리할 것이다(필요하면 다수의 서비스 기호에 걸쳐서 처리한다).
BSI(10)는 리퀘스트 오브젝트를 처리하며, 리퀘스트 상태 큐를 위해 사용되는 현재의 페이지에 확인 상태를 둔다. Req? sts_ptr 레지스터는 현재 페이지 수와 오프셋을 상태 큐내에 유지한다.
2개의 RSAP는 4개의 DMA 서브채널을 각기 가지며, 각각의 서브채널은 여러 가지 데이터 유형, 즉, 0=ODU, 1=ODU, 2=CNF 및 3=REQ를 전송한다.
인디케이트 작동
ISAP가 데이터 및 상태 스페이스를 가질 때, ISAP는 유입 프레임을 IDU의 시리즈(메모리 페이지에 하나씩)로 기입한다. IDU가 한 페이지내에 완전히 들어가도록 제한되고, 따라서, 멀티-파트 IDU 오브젝트는 단일 프레임에 대해 기입될 필요가 있을 수도 있다(최악의 경우에는 4K 데이터 페이지 사이즈에서 최대 길이 프레임에 대해 3개의 IDU까지 될 수도 있음). 각각의 IDU는 어떠한 메모리 페이지에도 저장될 수 있다. 각각의 IDU에 대하여, ISAP는 상태, 사이즈(바이트 카운트) 및 위치를 포함하는 IDUD를 기입한다. IDUD는 인디케이트 상태 큐내의 연속 위치에 기입된다. 각각의 ISAP는 자체 상태 큐를 갖는다.
각각의 프레임을 현재-정의돈 버스트-사이즈 메모리 블록(16 또는 32 바이트)의 스타트에 정렬된다. 제 1 단어는 DA, SA 및 INFO 필드가 다음 단어의 제 1 바이트에 정렬된 상태로 기입된 제 1 단어의 모든 바이트내에 복사된 FC만 포함한다.
BSI(10)는 PSP 큐로부터 판독한 PSPs에 따라 프레임 IDU를 메모리 페이지내에 저장한다. 각각의 ISAP는 필요에 따라 자체 PSP 큐로부터 페이즈를 취한다. 이것은 프레임이 임의적 순서로 처리될 수 있게 하는데, 그 이유는, 스페이스가 BSI에 의해 사용되던 순서와 다른 순서로 PSP 큐에 복귀될 수 있기 때문이다. 각각의 PSP는 ISA의 Ind?_idu_ptr 래지스터내로 적재된다. 페이지 수와 오프셋 모두는 PSP로부터 적재된다. 통상적으로 호스트는 오프셋 필드를 0으로 만들고, 따라서, 4K 바이트 페이지 전체를 통과한다.
각각의 프레임이 수신되면, BSI(10)는 IDU를 각기 구분하는 일련의 IDUDs를 기입하며, 상태 중단점에서 다음 IDUD 상태 필드내에 중단점 비트를 셋팅한다. 프레임은 다수의 페이지의 일부를 잠정적으로 점유할 수 있기 때문에, BSI(10)는 제 1, 중간, 및 최종 IDUD를 기입한다. 프레임이 페이지 경계를 넘을 때, BSI(10)는 IDID.제 1을 기입한다. 또 다른 페이지가 넘어가면 IDUD.중간이 기입될 것이다. 프레임 ??에서, IDUD.최종이 기입된다. BSI(10)는 상태 큐를 위한 호스트-정의된 리미트까지 IDUD를 기입한다. 별도의 IDUD/상태 큐는 각각의 ISAP를 위해 유지된다.
본 발명의 한 특징에 따라서, BSI(10)는 유입 프레임을 그룹핑하고 그룹 또는 버스트 경계에 어텐션을 발생시키는 능력을 제공한다. 이것은 호스트 어텐션(인터럽트)의 수를 현저히 감소시키고 호스트 오버헤드를 감소시킨다.
유입 프레임을 버스트로 그룹핑하기 위해서, BSI(10)는 상태 중단점을 정의한다. 중단점은 관련 데이터의 버스트의 끝을 식별한다. 어텐션 상태는 상태 중단점을 위해 BSI에 의해 발생될 수 있다. 상태 중단점은 SA 체인지, 토큰, SA 변경, DA 변경, MAC 정보 변경, 오류, SA copied_frame_counter 임계값을 포함한다.
각각의 ISAP는 3개의 DMA 서브채널을 갖는다. 서브채널 0은 IDU를 위해 사용되고, 서브채널 1은 IDUD를 위해, 서브채널 2는 PSP를 위해 사용된다. 인디케이트 명령/구성은 호스트에 의해 직접 인디케이트 구성 레지스터에 기입된다(Ind_mode 및 Ind_cfg).
레지스터 셋트
상술한 바와 같이, BSI(10)는 2개의 액세스 포트를 갖는데, 이것은, ABus 인터페이스와 CBus 인터페이스이다. CBus 인터페이스는 언제라도 대부분의 레지스터에 호스트 비동기 액세스를 허용한다. ABus 인터페이스는 큐와 메일 박스를 포함하여 메모리-베이스 제어 구조에 액세스하기 위하여 BSI(10)에 의해 사용된다.
BSI(10)는 3개의 레지스터 셋트를 갖는다. 제 1 셋트는 제어 및 구성 레지스터를 포함하여 CBus 인터페이스를 경유하여 호스트에 의하여 직접 액세스된다. 제 2 셋트는 메모리 어드레스를 CBus 인터페이스를 경유하여 BSI(10)에 보내고 또한 BSI로 하여금 메모리 어드레스(메일박스)와 포인터 위치 사이에서 데이터를 전달하게 하므로써 액세스되어야만 하는 포인터를 포함한다. 제 3 셋트는 큐 리미트 레지스터를 포함한다. 큐 리미트 레지스터는 어드레스(또한 기입을 이한 데이터)를 CBus 레지스터내에 위치시킨 다음에, BSI(10)로 하여금 자동 작동으로서 데이터 전달을 수행하게 하므로써 액세스된다.
프로그래밍 인터페이스
개요
다음의 내용은 BSI(10)에 대한 프로그래머의 견해를 기술한다. 어떤 레지스터가 있으며, 이 레지스터가 무엇을 수행하는지 그리고 레지스터를 어떤방법으로 액세스하는지를 기술한다. 즉, 모든 레지스터에 대한 기능적 명세서가 기술되었다. 이러한 레지스터를 사용하여 BSI(10)를 실제로 작동시키는 방법에 대한 더욱 상세한 정보는 후에 설명되는 서비스 인터페이스에서 제공된다.
프로그래밍 인터페이스의 개요를 먼저 설명한 다음에 상세한 명세서를 설명한다.
기본 구조체
BSI(10)는 프로그래머에게는 3개의 레지스터 셋트와 하나의 메일박스와 어텐션/통보 메카니즘으로 나타난다. 상술한 바와 같이, 제 1( 및 주)레지스터 셋트(CBus 레지스터)는 CBus 인터페이스를 경유하여 액세스되는 제어 및 구성 레지스터를 포함하고, 제 2 레지스터 셋트(PTR 레지스터)는 외부 메모리-베이스메일박스를 경유하여 간접적으로 호스트-액세스되는 포인트(BSI에 의해 조정됨)를 포함하며, 제 3 레지스터 셋트(리미트 레지스터)는 CBus 인터페이스를 경유하여 액세스되는 큐 리미트를 포함한다. 3개의 레지스터 셋트 모두는 호스트-판독 및 기입이 가능하다. 다른 BSI-내부 작동 레지스터가 있으나 이것들은 주사 변경을 경유하여서만 액세스가능하다.
초기화에서, 구성 레지스터와, 몇 개의 포인터 레지스터와 큐 리미트가 적재되어야만 한다.
구성 레지스터의 초기화는 인디케이트 스테이트 머신(12C), 리퀘스트 스테이트 머신(14C) 및 상태/스페이스 머신(도14 참조)에 대한 작동조건을 설정한다. 초기 포인터 레지스터 값은 데이터 구조체 위치를 정의한다. 초기 큐 리미트는 상태 큐의 경계를 정의한다.
전역 제어
상술한 바와 같이, 호스트는 CBus레지스터를 경유하여 BSI(10)를 제어한다. 이 셋트에서 가장 중요한 레지스터는 Master_attn 및 Master_notify와, State attn 및 State_notify, Service_attn 및 Service_notify와, 모드 레지스터이다.
Master_attn 및 Master_notify는 상위 레벨 어텐션 레지스터이며 모든 하위 레벨 어텐션 및 통보 레지스터에 관한 그룹핑된 정보를 제공한다. 하위 레벨 레지스터내의 비트는 호스트-BSI 메일박스 트래픽과, 큐 리미트 업데이트와, 포인터 레지서터 업데이트와, 내부 스테이트 머신 레포팅을 동기화한다.
State_attn 및 State_notify는 각각의 BSI 스테이트 머신을 위하여 오류 어텐션과 RUN/STOP 비트를 포함한다.
Service-attn 및 Service_notify는 포인터 또는 리미트 레지스터 서비스를 리퀘스트하기 위하여 사용된다.
모드 레지스터는 주요 작동 파라미터를 설정하며 통상적으로 파워-온에서 또는 소프트웨어 마스터 리셋 이후에만 프로그램된다.
레지스터 액세스
3개의 레지스터 셋트는 각각의 고유한 방법으로 액세스된다. CBus 레지스터 셋트는 액세스에 CBus 인터페이스를 사용하고 다른 2개의 셋트는 호스트와 BSI(10) 사이의 전송을 동기화하는데에 Service_attn 레지스터를 사용한다.
CBus(제어) 레지스터
CBus 레지스터 셋트는 BSI(10)의 제어 및 구성에 사용된다. 통상적인 CBus 판독 및 기입을 수행하므로서 호스트는 어떤 레지스터도 비동기적으로 액세스할 수 있다. BSI CBus 어드레스 스페이스는 32 위치를 포함하는데, 32 위치 모두가 사용되지는 않는다. 정의되지 않은 위치에 대한 액세스는 아무 작동도 일으키지 않는다.
PTR RAM
포인터(PTR) 레지스터 셋트는 22-와 28-비트 메모리 포인터를 포함하며 그 셋트는 PTR(포인터)RAM(도 15참조)이라고 불리운다. 호스트 Service_attn 레지스터내의 PTOP 기능을 사용하여 간접적으로만 이러한 레지스터에 액세스할 수 있다. PTOP 서비스 기능을 PTR RAM 위치의 판독 및 기입 모두를 허용한다.
호스트는 32-비트 판독/기입 Ptr_mem_adr 레지스터를 PTR RAM 데이터가 기입 또는 판독될 메일박스(메모리) 어드레스로 적재한다. 32-비트 Ptr-mem-adr 레지스터는 하나의 8-비트 CBus 어드레스내에 맵핑되기 때문에, 호스트는 2-비트 바이트 포인터를 적재한 다음에는 동일 CBus 어드레스에 연속적 4개의 판독 또는 기입을 수행한다. 8-비트 Ptr_int_adr 레지스터는 액세스될 PTR RAM 위치(5비트)와, PTOP 기능(판독 또는 기입, 1 비트)의 형태, 액세스될 초기 Ptr_mem_adr 바이트로 적재된다. BSI는 PTR RAM을 메일박스에 또는 이로부터 저장/적재한다.
PTR RAM 어드레스 스페이스는 32 위치이지만, 단지 22 위치만 한정된다. 정의되지않은 위치를 액세스하면 정의 되지 않은 결과를 발생한다.
리미트(LIMIT) RAM
레지스터의 제 3 셋트는 10과 9-비트 큐 리미트를 포함하며, 그 셋트는 리미트 RAM(도15 참조)이라고 불리운다. 호스트는 Service_attn 레지스터내의 LMOP 서비스 기능을 사용하여 이 레지스터에 간접적으로만 액세스할 수 있다. LMOP 서비스 기능은 10개의 리미트 RAM 위치 중의 어느 것이든 판독 및 기입을 하용한다. 호스트는 8-비트 Limit_data 레지스터를 액세스된 리미트 RAM 위치를 위하여 LS 8 비트의 새로운 데이터 값으로 적재한다. Limit_adr 레지스터는 액세스된 리미트 RAM 위치(4비트)와, LMOP 기능(판독 또는 기입, 1 비트)의 형태와, MS 데이터 비트로 적재된다. BSI(10)는 Limit_adr 레지스터에 및 이로부터 리미트 RAM 위치를 저장/적재한다.
리미트 RAM 어드레스 스페이스는 16 위치이지만, 9개만 정의된다. 정의 되지 않은 위치를 액세스하면, 정의 되지 않은 결과를 발생한다.
스테이트 머신 제어
상술한 바와같이, 호스트 제어하에 3개의 스테이트 머신이 있는데, 이것은 인디케이트 머신(12C)과, 리퀘스트 머신(14C)과, 상태/스페이스 머신(16)이다. 각각의 머신은 State_attn 레지스터내에 RUN/STOP 비트를 갖는다. 호스트와 BSI(10) 모두는 State_attn 레지스터 비트를 경유하여 머신을 STOP 또는 RUN 모드에 놓는다.
인디케이트 및 리퀘스트 머신은 RUN 또는 STOP 모드에 있다. 리셋에서 또는 STOP 비트가 셋트되어 있는 동안에 머신은 STOP 모드에 있다. STROP 비트가 지워지면 RUN 모드에 있게 된다. 호스트는 모든 인디케이트/리퀘스트 작동을 정지시키기 위해 STOP 비트를 셋팅할 수 있거나 또는 BSI(10)는 치명적 오류 발생시에 STOP 비트를 셋팅할 수 있다.
상태 머신(16)은 리셋시에 초기화되며, 다음에는 유휴 상태로 된다. STOP 비트가 셋트되어 있는 동안에 이 상태로부터 수행될 수 있는 연산 수가 제한된다. STOP 비트가 지워지면 모든 연산이 수행될 수 있다. 호스트는 머신을 제한된 기능 모드에 위치시키기 위해서 STOP 비트를 셋트할 수도 있고, 또는, BSI(10)는 치명적 오류 발생시에 STOP 비트를 셋트할 수도 있다. 치명적 오류의 예는 기입 상태 동안에 ABus 트랜잭션 오류가 발생하는 때 또는 머신이 무효 스테이트를 검출하는 때이다.
어떠한 STOP 어텐션에서도, 호스트는 적절한 머신에 서비스 해야만 하고 다음에 서비스를 재개하기 위해서 STOP 비트를 다시 지워야 한다.
DMA
DMA는 BSI(10)에 의해 자동적으로 조작된다. 모든 데이터 구조체 포인터는 PTR RAM내에 유지되고, 따라서, 메일박스를 경유해서만 액세스가능하다.
채널 작동
채널 작동의 상세한 설명과 명세서는 아래에 설명된 서비스 인터페이스에 주어진다. 이 절은 간단한 개요만 제공한다.
BSI 초기화
BSI는 다음 순서로 초기화된다.
1. 제어 및 구성 레지스터가 CBus 인터페이스를 경유하여 적재된다.
2. PTR RAM은 'STOP' 모드에서 상태/스페이스 머신으로 적재된다.
3. 리미트 RAM에는 'STOP'모드에서 상태/스페이스 머신으로 적재된다.
4. 상태/스페이스 머신을 RUN 모드에서 실행하므로서 초기 스페이스가 적재된다.
5. 인디케이트 머신(12C)은 유입 데이터를 수신할 수 있도록 인에이블된다.
6. 리퀘스트 머신(14C)은 유출 데이터를 서비스할 수 있도록 인에이블된다.
제어 및 구성 레지스터는 모든 내부 스테이트 머신이 정지된 동안에 프로그램될 수 있다.
STOP 비트가 셋팅되는 동안에 상태/스페이스 머신(16)을 실행하므로써 PTR RAM이 초기화된다. 이 모드에서, 상태/스페이스 머신(16)은 PTOP 또는 LMOP 명령에만 응답한다.
PTR RAM이 일단 초기화되면, 리미트 RAM은 초기화되어야만 한다. 이것은 또한 상태/스페이스 머신(16)이 'STOP' 모드에 있을 때 수행된다. 마지막으로, 상태/스페이스 머신(16)은 SPSTOP 비트를 지우므로써 완전한 기능성을 가지고 실행될 수 있다. 상태/스페이스 머신(16)은 모든 큐상에서 초기 스페이스를 위하여 호스트(어텐션을 경유하여)를 프롬프트한다.
모든 스페이스가 일단 초기화되면, 인디케이트 머신(12C)과 리퀘스트 머신(14C)이 실행될 수 있다.
인디케이트 작동(도12)
입력을 개시하기 위해서, 호스트는 2개의 ISAP 구성 레지스터를 셋업시키고, 다음에는 State_attn내의 INSTOP 비트를 지운다. 인디케이트 머신(12C)은 스페이스를 리퀘스트할 것이며, 다음에는 수신을 시작할 것이다.
인디케이트 머신(12C)은 수신을 배치화 하고자 할 것이다. 상술한 바와 같이, 비록 상태가 각각의 IDUD로 기입되지만, 호스트에의 어텐션은 상태 중단점에서만 발생된다. 이러한 중단점은 관련 데이터의 버스트의 종료를 식별하기 위한 것이다. 따라서, 호스트는 할 일이 충분히 있을 때에만 호출된다.
리퀘스트 작동(도13A)
리퀘스트 머신(14C)은 상태가 기입된 후에 어텐션을 발생시킨다. 통상적으로 이것은 전체 리퀘스트 오브젝트의 완료 후 또는 예외 후에 나타난다. 호스트는 어텐션을 가진 상태 또는 갖지 않은 상태에서 리퀘스트 머신(14C)을 작동시킬 수 있다. 어텐션이 사용되지 않으면, 호스트는 각각의 새로운 리퀘스트(또는 REQ)의 순서를 정의하고 기입된 CNF를 체크하여 어느 프레임이 보내어졌는지 확인한다.
데이터 스페이스 서브채널
데이터 스페이스 서브채널은 BSI(10)내의 인디케이트 머신(12C)과 상태/스페이스 머신(16)에 의해 운영된다. 서브채널은 메모리를 PSP 큐에 할당하고, 충분한 유효 엔트리가 있는 큐를 초기화시키고, BSI의 PSP 큐 포인터를 적재시키며, 큐의 리미트 레지스터를 적재시킨 다음에 State_attn내의 SPSTOP(스페이스/상태 STOP)비트를 지우므로서 초기화된다. 이 모든 것을 다른 머신을 인에이블링하기 전에 이루어져야만 한다.
일단 초기화되면, 호스트와 BSI(10)는 독립적으로 PSP 큐에 액세스한다. BSI(10)가 리미트 위치로부터 PSP를 프리페치하면, 이것은 Low_Data_Space 어텐션을 그 ISAP상에 발생시킨다. 호스트는 PSP 포인터를 판독하고, 보다 많은 PSP가 추가되면, 호스트는 리미트 RAM을 업데이트시킨 다음에는 어텐션을 지운다. PSP 프리페칭은 리미트 RAM이 일단 업데이트되면 그 ISAP상에서 재개된다.
상태 서브채널
BSI(10)는 리퀘스트 및 인디케이트상에 2-단어 디스크립터를 기입한다. 이것들은 상태 큐에 기입되며, 상태는 호스트-정의된 리미트(잠정적으로 1을 더하여)까지 큐에 기입된다. 호스트-정의된 리미트 전에 상태 큐 엔트리가 BSI(10)에 의해 기입될 때 No_Status_Space 어텐션이 발생된다. 호스트는 보다 많은 상태 스페이스가 사용 가능할 큐 리미트를 업데이트시킨다. PSP에 의하여, 리미트를 업데이트시키면 SAP 작동이 재시작된다. 상태 큐에 의하여, 리미트 레지스터를 기입하면 SAP 작동이 자동적으로 재개되지 않는다. No_Status_Space 어텐션은 SAP를 재시작하기 위하여 지워져야만 한다.
레지스터 액세스
CBus 레지스터
CBus 레지스터 셋트는 CBus 인터페이스를 경유하여 비동기적으로 액세스된다. 단일 판독 및 기입이 수행된다. 각각의 호스트 액세스는 내부적으로 동기화되며, 전달이 수행되고, 다음에는 CB_ACK_asserted된다. 어텐션 레지스터(온리)는 조건부 기입 레지스터이다. 조건부 기입 메카니즘은 아래의 이벤트 절에서 기술된다.
PTR RAM(도15)
PTR RAM 연산은 PTR 내용과 외부 메모리-베이스 메일박스를 교환한다. 메일박스의 어드레스는 호스트에 의해 Ptr_mem_adr 레지스터내에 프로그램된다. 통상적으로, 호스트는 메일박스를 위한 전용 메모리 위치를 사용하며, 따라서, 메일박스 어드레스는 한 번(초기화시에)만 적재된다. 따라서, BSI(10)에의 메일박스-어드레스 기입은 각각의 PTR RAM 액세스에 필요하지는 않다.
메일박스 어드레스는 4개의 연속 기입을 적절한 CBus 어드레스에 수행하므로써 Ptr_mem_adr 레지스터에 적재되며, 다음에는 메모리 어드레스의 각각의 바이트를 적재시킨다. 바이트는 기입된 MS 바이트 제 1 인데, 이것은 Ptr_mem_adr내의 비트[7:6]를 0으로 지운 후에 기입된다.
PTR RAM으로부터의 판독
PTR RAM은 다음과 같이 판독된다. 우선, 호스트는 PTOP 비트가 Service_attn 레지스터내에 셋팅되었는지를 체크한다. 둘째, 호스트는 Ptr-int-adr 레지스터를 판독할 PTR RAM 위치(비트[4;0])와, 판독(비트[5])을 위한 PTRW 내의 1로 적재한다. 셋째, 호스트는 PTOP 서비스 비트를 셋트하고, 이것은 BSI(10)로 하여금 PTR RAM을 판독하고, 데이터를 외부 메일박스에 기입하게 한다. 이 연산이 완료되면, BSI(10)는 다시 PTOP 어텐션 비트를 셋트한다. PTOP 어텐션이 셋트되면, 호스트는 메일박스를 판독할 수 있다.
PTR RAM내의 기입
PTR RAM은 다음과 같이 기입된다. 우선, 호스트는 PTOP 비트가 Service_attn 레지스터내에 셋트되었는지를 체크한다. 둘째, 이것은 Ptr_int_adr 레지스터를 기입될 PTR RAM 위치(비트[4:0])와, 기입(비트[5])을 위한 PTRW 비트내의 0으로 적재된다. 섯째, 호스트는 외부 메일박스를 새로운 PTR RAM 데이터로 적재한다. 넷째, 호스트는 PTOP 서비스 비트를 셋트시키며, 이것은 BSI로 하여금 지정된 메모리 위치를 판독하고 데이터를 PTR RAM내에 기입하며 다음에는 PTOP 어텐션 비트를 셋트시킨다.
리미트 RAM(도15)
리미트 RAM은 2개의 CBus 레지스터를 경유하여 액세스된다. 하나는 액세스될 리미트 어드레스를 유지하는데 사용되고, 다른 것은 데이터를 리미트 RAM과 교환하는데 사용된다.
리미트 RAM으로부터 판독
리미트 RAM은 다음과 같이 판독된다. 우선, 호스트는 LMOP 비트가 Service_attn 레지스터에 셋트되었는지를 체크한다. 둘째, 호스트는 Limit_register를 판독될 리미트 RAM 위치(비트[7:4])와, 판독(비트[3])을 위한 LMRW 비트내의 1과, 나머지 비트내의 0들로 적재한다. 셋째, 호스트는 LMOP 서비스 비트를 지우고, 이것은 BSI로 하여금 리미트 RAM을 판독하고 리미트 데이터 레지스터내에 LS 8 데이터 비트를 기입하며 MS 데이터 비트를 Limit_adr 레지스터의 비트[0]내에 기입하고 다음에는 LMOP 어텐션 비트를 셋트시킨다. LMOP 어텐션이 셋트되면, 호스트는 Limit_adr/데이터 레지스터를 판독할 수 있다.
리미트 RAM내에의 기입
리미트 RAM은 다음과 같이 기입된다. 우선, 호스트는 LMOP 비트가 Service_attn 레지스터내에 셋트되었는지를 체크한다. 둘째, 호스트는 Limit_adr 레지스터를 기입될 리미트 RAM 위치(비트[7:4])와, 기입(비트[3])을 위한 LMRW 비트내의 0과, 비트[0]내의 MS 데이터 비트와, 나머지 비트내의 0으로 적재한다. 셋째, 호스트는 Limit_data 레지스터를 새로운 리미트 데이터의 8 LS 비트로 적재시킨다. 넷째, 호스트는 LMOP 서비스 비트를 지우며, 이것은 BSI로 하여금 새로운 9-비트 데이터 값을 리미트 RAM내에 기입한 다음에 LMOP 어텐션 비트를 셋트시킨다.
이벤트
BSI(10)는 어텐션/통보 스킴을 서비스 이벤트 관리에 사용한다. BSI는 양방향으로 가는(즉, 호스트에서 BSI로 및 그 반대로) 어텐션/통보 이벤트를 제공한다.
BSI(10)는 어텐션 레지스터내에 적절한 이벤트의 어텐션 비트를 셋트하므로써 어텐션을 발생시킨다. 호스트는 대응 통보 비트를 셋트시키므로써 이 어텐션이 인터럽트를 발생할수 있게 한다.
특정 어텐션 비트는 셋트되거나 지워진 신호이다. BSI(10)는 어텐션을 호스트에 신호하기 위해서 비트를 셋트한다. 호스트는 BSI에 완료/인지를 신호하기 위해 비트를 지운다. 이것은 BSI(10)로 하여금 어떤 처리 동작(예로서, 메일박스의 판독)을 취하게 한다.
어텐션은 다수의 레지스터를 통해 전파되므로, BSI(10)는 호스트를 위해 2-레벨 구조체를 제공한다. 이것은 도20에 도시되었다. 제 1(하위) 레벨에는, 각각의 어텐션 레지스터 비트가 대응 통보로 마스크된다(ANDed). 모든 마스크된 어텐션은 다음에는 레지스터-레벨 어텐션을 발생시키기 위해 OR 연산된다. Master_attn 레지스터는 이러한 레지스터-레벨 비트를 관측하기 위하여 판독된다. 마지막으로, 각각의 Master_attn 비트는 대응 Master_notify 로 마스크되고, 다음에 이것들은 모두 BSI INT_output 핀을 발생시키기 위해 OR 연산된다.
인터럽트 서비스 루틴에서, 호스트는 다른 어떤 어텐션 레지스터가 판독을 필요로 하는지를 결정하기 위하여 Master_attn 레지스터를 판독해야 한다. Master_attn 레지스터는 판독 전용 레지스터이다.
어텐션 레지스터
하위 레벨 어텐션 레지스터는 호스트와 BSI(10) 모두에 의해서 판독/기입되며, 리셋시에 초기화된다. 각각의 어텐션 비트는 BSI에 의해 셋트 가능하며 호스트에 의하여 지워질 수 있다. 모든 하위 레벨 어텐션 레지스터는 조건부 기입 레지스터이다. 아래의 이벤트 절은 조건부 기입 메카니즘의 명세서를 제공한다.
통보 레지스터
모든 통보 레지스터는 호스트에 의해 판독/기입된다. 이것들은 리셋시에 0으로 지워진다.
조건부 기입
호스트와 BSI(10)는 어텐션 레지스터에 독립적으로 기입하지만, 잠정적으로 동시에 기입한다. 호스트가 어테션을 놓치지 않도록 보장하기 위하여, 어텐션 레지스터는 조건부-기입 메카니즘을 이용한다.
BSI(10)는 언제라도 어텐션 레지스터에 기입할 수 있고, 이것은 어느 호스트 기입을 번복한다(이것은 지움(clear)이 하나의 셋트로서 동시에 일어나는 경우 이벤트가 손실되지 않도록 보증한다).
호스트가 어텐션 레지스터를 판독할 때마다, 판독 값이 동시에 비교 레지스터에 저장된다. 호스트가 어텐션 레지스터에 기입할 때마다, 기입중인 레지스터의 현재의 값은 비교 레지스터와 비교된다. 잘못 비교된 비트는 어떤 것도 기입되지 않는다. 어떤 비트도 기입되지 않으면, State_attn. CWI(조건부 기입 금지) 비트가 셋트된다. 이 비트는 통상적 어텐션 비트가 아니지만, 조건부 기입 레지스터에 최종 판독의 결과를 반영한다. 이것의 대응 통보 비트는 항상 지워진다.
비교 레지스터는 언제라도 호스트에 의하여 어떤 값으로도 기입될 수 있다. 이러한 기능은 어텐션 레지스터상에 비트 지움 연산을 허용한다.
어텐션의 한가지 사용법은 다음과 같을 수 있다. 호스트는 어텐션 레지스터를 판독하고 그 값을 기억한다. 어텐션이 서비스를 받을 대에, 호스트는 비축된 값을 비교 레지스터에 기입하고, 업데이트된 값을 어텐션 레지스터에 기입한다. 따라서, 서비스를 받은 어텐션만이 지워진다. 이 경우에 호스트는 CWI비트를 무시한다.
보다 간단한 사용법은 비트-지움 연산을 사용하는 것이다. 호스트는 언제라도 어텐션 레지스터를 판독하며, 판독된 값을 특별히 기억할 필요는 없다. 호스트가 어텐션을 지우고 싶을 때는 비교 레지스터에 모든 1을 기입하고, 지우고 싶은 어텐션에 0을 기입한다(다른 모든 어텐션 비트에는 1을 기입한다). 당연히, CWI 비트는 셋트될 수 있으나, 안전하게 무시될 수 있다.
레지스터, 메일박스 및 DMA
도21, 도22 및 도23은 페이지에 의해 그룹핑되는 BSI 레지스터(제어 및 구성 레지스터 셋트, PTR RAM 레지스터 셋트 및 리미트 RAM 레지스터 셋트)를 도시한다. 각각의 표내의 제 1 열은 레지스터 어드레스(16진법)를 나타낸다. 제 2 열은 레지스터 명을 나타낸다. 제 3 열은 그 기능을 기술한다. 제 4 열은 리셋 후의 (초기)레지스터 값을 나타낸다. 최종 열은 조건부 기입 레지스터인지를 나타낸다.
BSI에는 2개의 리셋이 있는데, 하나는 하드웨어 리셋(RST 입력을 경유함)이고, 하나는 소프트웨어 리셋(모드 레지스터내의 MRST 비트를 경유함)이다. 둘 다 동일 효과를 발생시킨다. 단일 용어 '리셋'은 양쪽을 나타내어 사용된다.
레지스터 세부사항
이 절은 각각의 레지스터의 레이아웃과 각각의 비트 모드의 기능성을 규정한다.
판독/기입 모드 레지스터는 주요 시스템 구성 옵션을 설정하며, 리셋시에 변경되지 않는다. 이러한 비트는 BSI 작동 전에 리셋시에만 프로그램되어어야 한다.
SMLB SMLQ VIRT BIG-END FLOW MRST FABCLK TEST
SMLB 작은 버스트. SMLB_0일 때에는, BST는 32 바이트(8 단어)버스트를
사용한다. SMLB=1일 때에는, BSI는 ABus상에 16 바이트(4 단어)버
스트만을 사용한다. BSI는 인디케이트 프레임을 버스트-사이즈 경
계상에 정렬시키기 때문에, SMLB=0일 때에는 8 단어 블록의 제 후
반부에 4 단어를 기입하는 일은 결코 발생되지 않는다.
SMLQ 작은 큐 사이즈 SMLQ=0일 때에는 큐 사이즈는 4K 바이트이다.
VIRT VIRT=0일 때에는 ABus상에 실제 어드레스 모드이고, VIRT=1일 때에는 가상 어드레스 모드이다.
BIGEND BIGEND=0일 때에는 작은-엔디언 데이터 포맷이고, BIGEND=1일때
에는 큰-엔디언 포맷이다.
FLOW FLOW=0일 때에는 CBus 또는 ABus상에서 패리티가 체크되지 않는다.
패리티는 항상 3개의 인터페이스의 각각에서 발생된다. FLOW=1일
때에는 플로우-스루 패리티가 사용된다. FLOW=1일때 패리티가
ABus와 BMAC 사이에서 흐르며, 유입 데이터는 ABus 인터페이스에서
체크되지 않으며, 대신에 BMAC로 통과될때 체크된다(BMAC에 의하여)
MRST 마스터 리셋. 이것은 레지스터들을 표 7에 나타낸 값으로 초기화
한다. 이 비트는 리셋이 완료된 후에 지워진다.
FABCLK 고속 ABus 클록. 이 비트는 ABus 클록과 링 클록(LBC)사이의 동기화
를 위한 준안정 지연 기간을 결정한다. 리셋시에는 이 비트는 0으
로 지워지며, 이것은 지연으로서 한 ABus 클록 주기 전체를 선택한
다. 다음에는 이 비트는 1로 셋트되고, ABus 클록 지연의 1/2만
사용된다. BSI는 AB_CLK=LBC(12.5MHz이며, 위상의 일치)에서, 또는
AB_CLK=2×LBC(즉, 25MHz이며, 위상의 일치)에서 적정하게 작동하도
록 설계된다. 이러한 옵션은 둘 다 칩 셋트의 CDD(클록 분배장치)
로부터 사용가능한 클록을 선택하므로써 쉽게 실현된다.
TEST 테스트 모드. 이 비트를 1로 셋팅하면 테스트 논리부를 인에이블
시킨다.
Ptr_int_adr
판독/기입 Ptr_int_adr 레지스터는 PTOP PTR RAM 서비스 기능을 위하여 파라미터를 프로그램하는데 사용된다.
이것은 리셋시에 변경되지 않는다.
M1 MO PTRW A4 A3 A2 A1 A0
M[1:0]] 이 2비트를 기입하면 Ptr_mem_adr 레지스터에 액세스하기 위하여 지
적된 바이트가 프로그램된다. 이것은 메모리 어드레스가
Ptr_mem_adr 레지스터내에 적재될 때 4개의 연속 기입(MS 바이트를
먼저)을 위한 바이트 포인터를 초기화하기 위하여 통상적으로 0에
셋팅된다. BSI는 Ptr_mem_adr 에 각각의 기입 후에 이러한 비트를
내부적으로 증가시킨다.
PTRW 이 비트는 PTOP 기능이 판독 또는 기입인지의 여부를 결정한다.
PTRW=0일 때에는 기입이고, PTRW=1일 때에는 판독이다.
A[4:0] 이 5개 비트를 기입하면 후속 PTOP 기능을 위한 PTR RAM 어드레스가
셋팅된다.
Ptr_mem_adr
판독/기입 Ptr_mem_adr 레지스터는 PTOP PTR RAM 서비스 기능의 데이터 전달에 사용되는 단어-정렬(바이트)메모리 어드레스를 설정하는데 사용된다.
memory_addr[27:24]
memory_addr[23:16]
memory_addr[15:8]
memory_addr[7:02]
비트[1:0]는 0이어야만 한다(이것들은 내부적으로 강제적으로 0으로 된다).
이 CBus 어드레스는 PTOP 메카니즘을 사용하여 PTR RAM과 외부 메모리 사이의 전달을 위한 메모리 어드레스로서 사용될 4개의 내부 바이트 레지스터내의 윈도우이다. 4 바이트 레지스터는 먼저 M[1:0] 비트를 Ptr_mem_adr 레지스터내에 셋팅한 후에 이 어드레스에 연속 기입하므로써 적재된다. 바이트는 M1=M0=0을 셋트한 후에 MS 바이트를 먼저 적재해야 한다. BSI는 각각의 기입 또는 판독 후에 내부적으로 바이트 포인터를 증가시킨다. 이 레지스터는 리셋시에 실리콘 개정 코드로 초기화된다. 개정 코드는 호스트가 중복 기입할 때까지 유지된다.
Master_attn 및 Master_notify
판독 전용 Master_attn 및 판독/기입 Master_notify 레지스터는 BSI 어텐션의 제 1 레벨 뷰를 제공한다. 각각의 비트는 제 2 - 레벨 어텐션/통보 레지스터 쌍의 스테이트를 나타낸다. 비트는 대응 어텐션 레지스터가 가정된 통보 가능 어텐션을 가질 때 Master_attn 레지스터내에 셋트된다. Master_attn 레지스터에의 기입은 내용을 변경시키지 않으나, 허용된다. Master_attn은 리셋팅시에 0으로 지워진다.
STA NSA SVA RQA INA Rsvd Rsvd Rsvd
STA State_attn 레지스터는 어텐션 비트 셋트 중의 하나를 갖는다.
NSA No_space_attn 레지스터는 어텐션 비트 셋트 중의 하나를 갖는다.
SVA Service_attn 레지스터는 어텐션 비트 셋트 중의 하나를 갖는다.
RQA Req_attn 레지스터는 어텐션 비트 셋트 중의 하나를 갖는다.
INA Ind_attn 레지스터는 어텐션 비트 세트 중의 하나를 갖는다.
State_attn 및 State_notify
판독/기입 State_attn/notify 레지스터는 BSI내에 주요 스테이트를 위한 어텐션을 제공한다. 이것은 스테이트 머신 스테이트와 패리티 오류를 포함하며 리셋시에 초기화된다.
ERR BPE CPE CWI CMDE SPSTOP RQSTOP INSTOP
ERR 오류.리셋시에 지워진다. 회복 불가능 오류 발생시에BSI에 의해
셋트된다. 오류는 확인 상태 기입하는 ABus 트랜잭션 오류(ABus 오
류 판독/기입 데이터는 디스크립터내에 레포트된다)와, 내부 논리
오류와, 스테이트 머신이 무효 스테이트에 들어갈 때의 오류이다.
오류 판독/기입 데이터는 디스크립터내에 레포트된다)와, 내부 논리
오류와, 스테이트 머신이 무효 스테이트에 들어갈 때의 오류이다.
BPEBMAC 패리티 오류. 리셋시에 지원진다. BMAC 패리티는 항상 프레임 동
안에 체크된다. 오류가 발생되면 이 어텐션이 셋팅된다. CBus 패
리티 오류. 리셋시에 지워진다. FLOW 패리티가 사용될 때, CBus
패리티가 체크된다. 오류 발생되면, 이 어텐션이 셋트된다. 호스
트 기입시에 CBus 패리티 오류가 있으면 기입은 억제될 것이다.
CWI 조건부 기입 금지. 리셋시에 지워진다. 이 비트는 모든 조건부 기
입 레지스터(어텐션 레지스터)에의 최종 기입의 결과를 반영한다.
I=1은 하나 이상의 비트가 최종 조건부 기입 레지스터 기입시에 잘
못 매치되었음을 뜻한다.
CMDE 명령 오류. 리셋시에 지워진다. 무효 연산이 호스트에 의해 수행
될 때 BSI에 의해 셋트된다. 이것은 무효 값이 Ind_hdrlen 레지스
터(INSTOP 어텐션도 셋트된다)내에 적재될 때에만 발생된다.
SPSTOP 리셋시에 셋팅되거나, 회복 불가능 오류로 인하여 스페이스/상태 머
신이 reduced_functions_state로 들어갈 때 BSI에 의해 셋팅된다.
스테이트 머신은 reduced_functrions_state내에 있을 동안에만
POP 또는 LMOP 리퀘스트를 수행할 것이다.
RQSTOP 3개의 상태하에서 셋트된다. 우선, 리셋시에, 둘째, 리퀘스트 스테
이트 머신이 내부 오류 검출시 또는 무효 스테이트로 들어갈때, 셋
째, ABus 오류가 CNF 기입시에 발생할 때에 셋트된다.
INSTOP 3개의 상태하에서 셋트된다. 첫째, 리셋시, 둘째, 인디케이트 스테
이트 머신이 내부 오류를 검출하거나 또는 무효 스테이트로 들어갈
때, 셋째, 호스트가 Ind_hdrlen 레지스터에 부당한 값으로 적재할
때에 셋트된다.
Service_attn 및 Service_Notify
판독/기입 Service attn/notify 레지스터는 서비스 기능을 위한 어텐션을 제공한다. 호스트는 어텐션을 발생시키기 위해서 어떠한 어텐션 비트도 셋트할 수 있으나, 내부 BSI 스테이트에 영향을 주지 않는다. Service_attn은 리셋시에 OxOf로 셋트되고, 서비스 통보는 0으로 지워진다.
Rsvd Rsvd Rsvd Rsvd ABRO AVR1 LMOP PTOP
ABR? RSAP_? 리퀘스트 포기. BSI가 RSA상의 리퀘스트를 포기하기를 원
할때에는 호스트에 의하여 지워진다. RQABORT를 셋트하면 이 RSA
상의 리퀘스트를 종료시킨다. 호스트는 이 비트에 1을 기입할 수
있으며, 이것은 리퀘스트가 포기되거나 포기되지 않는 것을 방지한
다. 이것은 BSI상에 역효과를 주지 않는다. 리퀘스트가 호스트-포
기될 때 USR어텐션이 셋트된다(Req_attn_에 셋트되며, 그 RSAP상
에서 그 이상의 처리는 중지된다)
LMOP BSI가 데이터를 리미트 RAM과 Limit_data 레지스터 사이에 전달하
기를 원할 때 호스트에 의핼 지원진다. 전달의 방향(판독 또는 기
입)은 Limit_adr내의 LMRW 비트에 의해 결정된다. 리미트 RAM 어
드레스는 Limit_adr내에 있다. LWOP=0인 동안에 호스트는 Limit_
adr 또는 Limit_data 레지스터를 변경해서는 않된다.
PTOP BSI가 데이터를 PTR RAM과 한정된 메모리 위치 사이에 전달하기를
원할 때 호스트에 의해 지워진다. 전달 방향(판독 또는 기입)은
Ptr_mem_adr내의 PRRW 비트에 의해 결정된다. PTR 어드레스는
Ptr_int_adr내에 있다. PTOP=0인 동안에, 호스트는 Ptr_mem_
adr 또는 Ptr_mem_adr 레지스터를 변경하지 않아야 한다.
No_space_attn 및 No_space_notify
판독/기입 No_space_attn/notify 레지스터는 어떠한 큐가 스페이스로부터 나오거나 유효 엔트리로부터 나올 때 발생되는 어텐션을 제공한다. 호스트는 테스트 목적으로만 어텐션을 발생시킬 수 있도록 어떠한 어텐션 비트도 셋트할 수 있다. 이것은 정상 작동 동안에 일어나서는 안된다. No_Data_Space 어텐션은 BSI에 의하여 자동적으로 셋트 또는 지워진다. No_Status/Space 어텐션은 BSI에 의해 셋트되고, 호스트에 의해 지워져야만 한다. 리셋시에 No_Space_attn은 Oxff로 셋트되고, No_space_notify는 0으로 지워진다.
NROS NRIS LIOD NIOS LI1D NI1S LI2D NI2S
NR?S RASP_? 상태 스페이스 없음. 리셋시에 또는 BSI가 CNF를 호스트-
2정의 리미트 RSAP_? 상태 큐 위치에 기입했을 때 BSI에 의해 셋트
된다. 내부 파이프라이닝에 의하여, BSI는 큐에 2개 이상의 CNF를
기입할 수 있다. 따라서, 호스트는 큐내에 사용 가능한 스페이스
보다 하나 작은 리미트를 셋트해야만 한다. 이 비트는 허용하기 위
하여 호스트에 의해 지워져야만 하는데, 즉, BSI는 상태를 기입할
스페이스를 가질 때까지 리퀘스트에 서비스 하지 않을 것이다.
LI?D 낮은 ISAP_? 데이터 스페이스. 리셋시에, 또는, 최종 사용가능
ISAP_? PSP 큐 위치로부터 PSP를 프리페치할 때에 BSI에 의해 셋트
된다. 테스트 목적으로 호스트에 의해 셋트 또는 지워질 수 있다.
PSP 엔트리가 없어서 PSP 페칭이 중지되면, 적절한 리미트 레지스터
가 업데이트될 때 페칭은 자동적으로 재개된다. 이비트는 호스트에
에게 PSP 큐가 낮다는 것을 알려준다. 경고의 양은 프레임 길이에
의존한다는 점에 주의하십시오. 이 어텐션이 발생될 때 항상 BSI
에 사용 가능한 하나 이상의 페이지(4K 바이트)가 하나 더 있을 것
이다. 또 다른 FDDI 최대-길이 프레임(현재의 프레임 후에)은 이
스페이스에 적합하지 않을 것이다.
NI?S ISAP_? 상태 스페이스 없음. 리셋시에 또는 ISAP_? 상태 큐내의
최종 사용가능 엔트리내에 BSI가 IDUD. 최종을 기입했을 때 BSI에
의해 셋트된다. 이것이 발생되면 BSI는 그 ISAP상에 복사를 중지한
다. 이 비트는 ISAP 복사를 인에이블할 수 있도록 호스트에 의해
지워져야만 하는데, 즉, BSI는DUD를 기입할 스페이스를 가질 때까지
ISAP상에 복사하지 않는다.
Limit_adr
판독/기입 Limit_adr 레지스터는 리미트 RAM 위치, MS 데이터 비트 및 수행될 LMOP 서비스 기능의 형태에 의해 프로그램된다. 리셋시에 변경되지 않는다.
A3 A2 A1 A0 LMRW Rsvd Rsvd D8
A[3:0] 이 4개의 비트를 기입하면 후속 LMOP 서비스 기능을 위한 리미트
RAM 어드레스가 셋트된다.
LMRW 이 비트는 LMOP 기능이 판독 또는 기입인지의 여부를 결정한다.
LMRW=0일 때에는 기입이고, LMRW=1일 때에는 판독이다.
D8 이것은 어드레스된 레지스터와 교환을 위한 최상위 데이터 비트이
다.
Limit_data
판독/기입 Limit_data 레지스터는 LMOP 서비스 기능에서 전달될 8개의 최하위 리미트 RAM 데이터 비트로 적재된다. 최상위 데이터 비트는 Limit_adr 레지스터의 비트[0]과 교환된다.
Limit_value[7:0]
리셋시에 변경되지 않는다. 리미트 RAM(LMRW=0인 상태의 LMOP)에 기입을 위해서, 이 레지스터는 선택된 리미트 레지스터에 기입된 새로운 한계치로 적재된다. 리미트 RAM(LMRW=1인 상태의 LMOP)으로부터의 판독을 위해서, 레지스터는 BSI에 의해 선택된 리미트 레지스터내에 현재 한계치로 적재된다. 모든 비트는 OMIT 레지스터내에서 유효해야만 하는데, 즉 작은 큐가 사용되더라도 모든 비트는 연관된 포인터와 비교된다는 점에 주의하십시오.
Req_attn 및 Req_notify
판독/기입 Req_attn/notify 레지스터는 2개의 RSAP 모두에 의해 발생되는 어텐션을 제공한다. 호스트는 어텐션을 발생시키기 위해서 어텐션 비트를 셋트할 수 있으며, USR 비트를 제외하고는 어떠한 내부 BSI 스테이트에도 영향을 주지 않는다. 리셋시에 Req_attn 및 Rea_notify는 0으로 지워진다.
USR_0 RCM-0 EXC_0 BPX_0 USR_1 RCM_1 EXC_1 BRK_1
USR RSAP_? 서비스 불가능 리퀘스트. 리퀘스트가 처리될 수 없을 때
BSI에 의해 셋팅된다. 세가지 원인이 있는데, 즉, Rq_cls가 현재
의 링 스테이트에 적합하지 않을 때(즉, 링이 작동 상태로 된 직후,
), CNF 상태 스페이스가 없을 때, 호스트 포기의 결과일 때(Service
_attn을 경유하여)이다. 이 비트가 셋트되어있는 동안 에는 리퀘
스트는 그 RSAP상에서 처리되지 않을 것이다. 상에서 리퀘스트 오
브젝트의 처리를 완료했을 때 BSI에 의해 셋트된다.
RCM_? RCA_? 리퀘스트 완료. BSI가 이 RSAP상에서 리퀘스트 오브젝트의
처리를 완료했을 때 BSI에 의해 셋트된다.
EXC_? RSAP_? 예외. RSAP_? 예외가 발생할 때마다 BSI에 의해 셋트된
다.
BRK_? RSAP_? 중단점. RSAP_? 중단점을 검출할 때 BSI에 의해 셋트된
다.
Req_cfg
판독/기입 Req_cfg 레지스터는 각각의 RSAP를 위한 연산 파라미터로 프로그램된다. 리셋이 이 레지스터에 영향을 미치지 않는다는 점에 주의하십시오. 이러한 레지스터는 예로서 특정 RSAP에 리퀘스트가 적재되지 않았을 때 리퀘스트 사이에서 변경될 수 있다. 따라서, 호스트는 BSI가 REQ 큐(리미트에 의해 정의된 바와 같이)내의 모든 리퀘스트를 완전히 처리했다는 것을 보장해야만 하며, 그 때에는 호스트는 이 레지스터를 변경할 수 있다.
TT1 TT0 PRE HLD FCT SAT VST FCS
TT[1:0] 전송을 리퀘스트하기 전에 출력 데이터 FIFO에 대한 임계값. 00=8
단어, 01=16 단어, 10=64 단어(Rev A에 적용 불가능), 11=128 단어
(Rev A 에 적용 불가능). 임계값에 도달하거나 또는 전체 프레임이
FIFO에 있을 때 전송이 시작된다.
PRE 선취/프리스테이지. Req0_cfg에서 이것은 선취 옵션을 프로그램한
다. Req1_cfg에서 이것은 프리스테이지 옵션을 프로그램한다(HLD
비트와 함께). 선취: PRE=0일 때 RSAP_0상의 리퀘스트는 RSAP_1
상의 리퀘스트를 선취하지 않을 것이다. PRE=1일 때 RSAP_0은
RSAP_1을 선취할 수 있다. 프리스테이지: PRE=0 일 때 리퀘스트는
프리스테이지 되지 않을 것이다(HLD 비트가 1일때). PRE=1일 때
RSAP_1 리퀘스트는 프리스테이지할 것이다. HLD 비트가 0이면,
RSAP_1은 프리스테이지할 것이다. RSAP_0은 즉각적인 리퀘스트를
제외하고 항상 프리스테이지한다는 점에 주의하십시오.
HLD 유지. HLD=0일 때 이 RSAP상에서 활성인 유효 리퀘스트가 있고, 서
비스 등급이 비즉각적이며, FIFO내에 데이터가 없고, BSI내로 페치
된 유효 REQ가 없다면, BSI는 이 RSAP상에서 서비스 기회를 종료시
킬 것이며, HLD=1일 때에는 리퀘스트가 완료될 때까지 BSI는 서비스
기회를 종료시키지 않을 것이다(THT 또는 TRT가 종료되면 BMAC는 서
비스 기회를 종료시킨다). RSAP_1에서 프리스테이징은 이 비트에
의해서도 영향을 받는다. HLD=0일때 프리스테이징은 PRE 비트에
무관하게 인에이블된다(그러나 즉각적인 서비스 등급에 대해서는 그
렇지 않다). HLD=1일 때 프리스테이징은 PRE 비트에 의해 결정된
다. 이 옵션은 링 대역폭을 잠정적으로 낭비할 수 있고, 따라서,
이 옵션은 주의해서 사용해야 된다. 그러나 RSAP_0상에서 선취
를 이용할 때에는, 호스트 시스템내에서 대형 버스 또는 인터럽트
대기를 가지고 조기 토큰 방출을 중지하도록 HLD가 또한 필요할 것
이다.
FCT 프레임 제어 투명. 이 비트가 셋트되어 있을 때 FC는 데이터(BEQ.
F 디스크럽터가 아님)로부터 발원될 것이다. 리퀘스트 버스트의 각
각의 프레임의 FC 필드는 전송된 FC의 내부 복사를 업데이트시키고,
완전히 확인할 때에는수신된 프레임의 FC에 대하여 비교하는데에 사
용된다. FCT=0일 때 수신된 프레임내의 모든 FC 비트는 '양호'로
확인된 프레임을 위해 REQ〈FC〉매치되어야만 한다. FCT=1일 때에
는 C, L 및 r 비트만 매치되면 된다.
SAT 소스 어드레스 투명. SAT 핀은 이 RSA상에서 리퀘스트를 통해서 구
동된다. 이것은 적용에 따라서 BMAC SAT 핀 또는 SAIGT 또는 둘다
를 구동할 수 있다(SAT,STRIP 및 FCST는 일반적 목적 프레임-동기식
출력 핀). SAT=1일 때에는 완전 확인은 EM 입력 핀의 사용을 요구
한다.
VST 무효 스트립핑. 스트립 핀은 이 RSAP상에서 리퀘스트를 통해 구동
된다. 이것은 적용에 따라 BMAC 스트립 핀 또는 SAT핀도 구동할 수
있다. 무효 스트립핑은 다음과 같이 작동한다. 현재의 서비스 기
회의 끝에서, 2개의 My_Void 프레임은 BMAC에 의해서 발원되고, 그
BMAC는 My_Void 프레임이 복귀되거나, 토큰이 수신되거나, Other_
Void가 수신되거나 My_Claim 이외의 MAC 프레임이 수신되거나 또는
MAC 리셋이 발생될 때까지 스트립핑을 계속한다. 이 서비스 기회
의 모든 프레임은 이 방법을 사용하여 스트립된다.
RCS 프레임 체크 시퀀스 디스에이블. 이것이 셋트될 때 BSI는 이 RSAP
상의 리퀘스트를 통해 FCST 핀을 평가한다. 이것은 적용에 따라서
BMAC FCST 핀 또는 SAT 또는 SAIGT 핀도 구동한다. Req_efs.FCS
비트는 독립적으로 매칭 프레임 확인 기준을 만족시키기 위해 프레
임이 유효 FCS를 필요로 하는지 결정한다. 이 비트는 통상적으로
전달된 프레임에 발생된 FCS를 연결하지 않도록 BMAC를 프로그램하
는데 사용된다.
Req?_efs
판독/기입 Req?efs 레지스터는 각각의 RSAP상에서 확인되는 프레임에 대해 예상 프레임 상태를 정의한다. 프레임은 매칭 프레임으로써 카운트되기 위해서는 프로그램 기준을 충족시켜야만 한다. 이 레지스터에 의해 정의된 프레임 파라미터에 추가하여, 프레임은 유효 엔딩 디리미터를 가져야만 한다. 이 레지스터는 리셋시에 변경되지 않는다. 매칭되지 않는 프레임이 수신된 때에는 BSI는 리퀘스트를 종료하고 RCM, EXC 및 BRK 어텐션을 발생시킨다. 리퀘스트내의 어떠한 나머지 REQ도 REQ.L 또는 REQ.온리를 만날때까지 페치 된다. 그러면 다음 REQ.제1 또는 REQ.온리에서 재개될 것이다(다른 형태의 REQ는 일관성 고장이 될 것이다).
VDL VFCS EE1 EE0 EA1 EA0 EC1 ECO
VDL 유효 데이터 길이. VDL=1일 때 수신된 확인 프레임은 매칭 확인 기
준을 충족시키는 유효 데이터 길이를 가져야만 한다. VDL=0일때는
그렇지 못하다.
VFCS 유효 FCS.FCS=1일 때 수신된 확인 프레임은 매칭 프레임 확인 기준
을 충족시키기 위해 유효 FCS를 가져야만 한다. FCS=1일 때는 그렇
지 못하다.
EE[1:0] 예상 E 인디케이터 선택:00=어떤 것도 좋음, 01=R, 10=S, 11=R|S
EA[1:0] 예상 A 인디케이터 선택:00=어떤 것도 좋음, 01=R, 10=S, 11=R|S
EC[1:0] 예상 C 인디케이터 선택:00=어떤 것도 좋음, 01=R, 10=S, 11=R|S
Ind_attn 및 Ind_notify HA14-15
판독/기입 Ind_attn/notify 레지스터는 ISAP에 의해 발생된 어텐션을 제공한다. 호스트는 어텐션을 발생시키기 위해 어떠한 어텐션 비트도 셋트할 수 있으나, 이것은 어떠한 내부 BST 상태에도 영향을 주지 않는다. 리셋시에 레지스터 둘 다 0으로 지워진다.
Rsvd Rsvd ExCO BRK1 EXC1 BRK1 EXC2 BRK2
EXC_? ISAP_? 예외. 리셋시에 지워진다. 이 ISAP상에 예외가 발생될 때
BSI에 의해 셋트된다. 그 ISAP상에서의 복사를 마감하기 위해 호
스트에 의해셋트될 수도 있다(Ind_gdrlen/Ind_threshold 레지스터
를 업데이트시킬 때 편리하다). 셋트되어 있는 동안에는 그 ISAP
상에서의 복사는 불능이다.
BRK_? ISAP_? 중단점. 리셋시에 지워진다. 이 ISAP상에서 인디케이트
중단점이 검출될 때 셋트된다. 호스트가 이 비트를 셋트하면 어떤
작동도 취해지지 않는다.
Ind_Inthreshold
Ind_threshold 판독/기입 레지스터는 ISAP 임계 카운터 적재 값으로 프로그램된다. 리셋시에 변경되지 않는다. 이 레지스터는 INSTOP 또는 ISAP의 Ind_attn.EXC 비트가 셋트될 때 적재될 수 있다.
THR[7:0]
THR THR=00-FF. 이 값은 SAP이 변경될 때마다 인디케이트 모듈내의 카운
터내에 적재된다. SAP상에 복사된 각각의 유효 프레임은 카운터를
감소시킨다. 카운터가 0에 도달할 때 BOT 비트가 ISAP상태 중단점
어텐션이 발생되고 카운터는 재적재된다.
판독/기입 Ind_mode 레지스터는 공통 ISAP 구성 옵션을 정의한다. 리셋시에 변경되지 않는다. 이 레지스터는 INSTOP이 셋트될 때에만 변경되어야 한다. 그것은 항시(동일)현재 값으로 기입될 수 있다(RSAP_0 상에 한 쇼트(shot)샘플링을 가능하게 하는데 사용된다)
SM1 SM0 SKIP Rsvd BOT1 BOT2 BOB BOS
SM[1:0] 소트 모드, 이러한 비트는 BSI가 인디케이트 데이터를 ISAP상에 소
트 하는 방법을 결정한다. 00=동기/비동기, 01=내부/외부, 10=헤더
/info, 11=높은-우선순위/낮은 우선순위 비동기. 더욱 상세한 사항
에 대해서는 서비스 인터페이스 챕터를 참조하기 바란다.
SKIP 스킵 인에이블. SKIP=0일 때 ISAP_0상에서 스킵핑 디스에이블.
SKIP=1일 때는 스킵핑 인에이블. 더욱 상세한 사항에 대해서는 서
비스 인터페이스 챕터(인디케이트)를 참조하기 바란다. 이 레지스
터에의 기입은 스킵 특성을 증가시킨다.
BOT 임계상에서의 중단점. 프레임 카운트 임계로 하여금 ISAP상에 인디
케이트 중단점 어텐션을 발생시킬 수 있게 한다. BOT1은 ISAP_1을
위한 것이고 BOT2는 ISAP_2를 위한 것이다.
BOB 버스트 끝에서의 중단점. 버스트 엔드 검출로 하여금 인디케이트
중단점 어텐션을 발생하게 한다. 세부사항에 대해서는 인디케이트
연산 절을 참조하기 바란다.
BOS 서비스 기회상의 중단점. 서비스 기회의 끝이 인디케이트 중단점
어텐션을 발생시키게 한다.
Ind_cfg
판독/기입 Ind_cfg 레지스터는 각각의 ISAP를 위한 복사 기준을 설정한다. 세부사항에 대해서는 아래에 제공된 서비스 인터페이스 내용의 인디케이트 연산(ISAP 복사 및 소팅)절을 참조하기 바란다. 리셋시에 변경되지 않는다.
CC7 CC6 Rsvd CC4 CC3 Rsvd CC1 CC0
CC[7:6] ISAP_0사에서의 복사 제어. 00=복사하지 않는다. 01=어드레스가
식별되고 ∼MFLAG이면 복사한다. 10=어드레스가 식별되고 OR MFLAG
이면 복사한다. 11=무조건 복사.
CC[4:3] ISAP_1상에서의 복사 제어. ISAP_0상에서의 복사 제어와 동일.
CC[1:0] ISAP_2상에서의 복사 제어. ISAP_0상에서의 복사 제어와 동일.
Ind_hdrlen
이 판독/기입 레지스터는 헤더/Info 소트 모드에서의 프레임 헤더의 길이를 정의한다. 8-비트 레지스터에는 헤더내의 32-비트 단어의 수가 적재된다. 프레임 FC는 별도 단어로 기입되기 때문에, 그것은 1로 카운트된다. 예로서, 긴 어드레스를 가진 프레임내의 4바이트의 헤더 데이터 후에 분리시키고자 할 때에, 이 레지스터를 05(1 단어 FC, 1.5 DA, 1.5 SA, 1 HDR_데이타)로 프로그램해야 한다. 레지스터는 4미만의 값으로 적재되어서는 안된다. 만약 4미만의 값으로 적재되면, BSI는 CMDE와 INSTOP를 어텐션을 셋트한다. INSTOP를 셋팅하면 모든 인디케이트 처리를 정지시킬 것이다. 이 레지스터는 소트 모드를 헤더/Info에 셋트시키기 전에 초기화되어야 한다. 헤더는 항상 전체 버스트로서 기입된다는 것을 주목하기 바란다. 리셋시에 변경되지 않는다. 이 레지스터는 INSTOP를 셋팅하면 모든 인디케이트 처리를 정지시킬 것이다. 이 레지스터는 소트 모드를 헤더/Info에 셋트시키기 전에 초기화되어야 한다. 헤더는 항상 전체 버스트로서 기입된다는 것을 주목하기 바란다. 리셋시에 변경되지 않는다. 이 레지스터는 INSTOP 또는 Ind_attn.EXC가 셋트되는 동안에 변경될 수도 있다.
단어로 표시된 헤더 길이[7:0]
비교 HAIF
판독/기입 비교 레지스터는 조건부 기입 메카니즘의 일부로서 사용된다. 리셋시에 0으로 된다.
비교값[7:0]
비교 레지스터내의 값은 조건부 기입 레지스터의 기입 액세스와의 비교에 사용된다. 비교 레지스터는 어떤 조건부 이벤트 레지스터의 판독부상에도 적재되거나 또는 그것에 직접 기입하므로써 적재된다. 조건부 기입의 발생시에는, 비교 레지스터내의 대응 비트와 동일한 현재 값을 갖는 비트만이 새로운 값으로 업데이트될 것이다.
DMA
5개의 DMA '채널'이 있는데, 2개는 SAP를 전송위한 것이고 3개는 SAP를 수신위한 것이다. 소프트웨어는 초기에는 BSI 레지스터 중에서 몇 개를 적재시켜야 하지만(기본적으로 큐 포인터), 일단 가동되면 BSI 자체가 대부분의 레지스터를 적재시킨다.
아래의 표 4는 각각의 DMA 채널이 사용하는 작동 레지스터를 요약한다.
표 4
ch 레펀런스 명칭 전송방법
0000 Req1_odu_ptrReq1_dud_ptrReq1_sts_ptrReq1_req_ptr 출력 리퀘스트 ODUs 페칭출력 리퀘스트 ODUs 페칭확인 상태 저장출력 리퀘스트 페칭
1111 Req0_odu_ptrReq0_dud_ptrReq0_sts_ptrReq0_req_ptr 출력 리퀘스트 ODUs 페칭출력 리퀘스트 ODUs 페칭확인 상태 저장출력 리퀘스트 페칭
222 Ind2_idu_ptrInd2_sts_ptrInd2_psp_ptr 인디케이트 IDUs 저장인디케이트 IDUs 저장PSPs 페칭
333 Ind1_idu_ptrInd1_sts_ptrInd1_psp_ptr 인디케이트 IDUs 저장인디케이트 IDUs 저장PSPs 페칭
444 Ind0_idu_ptrInd0_sts_ptrInd0_psp_ptr 인디케이트 IDUs 저장인디케이트 IDUs 저장PSPs 표 3-4 페칭 DMA
ABus를 위한 모든 DMA 작동은 우선순위가 지정된다. 버스 리퀘스트의 우선순위는 일반적으로 다음과 같다. 우선순위가 높은 것으로부터 낮은 것으로 명시하였다.
1. 리퀘스트 데이터 판독
2. 인디케이트 데이터 기입
3. 인디케이트 상태 기입
4. 리퀘스트 상태 기입
5. PSP 큐 판독
6. 메일박스 액세스
7. PTR RAM 연산
그러나, 성능을 적정하게 하기 위하여 BSI는 우선순위를 동적으로 변경시킨다.
서비스 인터페이스
다음의 내용은 BSI(10)에 의해 제공되는 MAC 사용자 데이터 서비스를 기술한다. 제 1 절은 리퀘스트 서비스, 즉, 호스트-프로그램 레지스터와 RSAP 디스크립터에 의해 정의되는 옵션의 범위를 정의한다. 제 2 절은 호스트가 어떻게 RSAP를 구성하고 작동시키는지를 기술한다. 제 3 및 제 4 절은 ISAP에 대한 처리와 유사한 처리를 제공하는데, 즉, 옵션과 구성/작동을 정의한다. 마지막 절은 상태 발생/스페이스 관리 모듈(16)의 구성 및 작동을 정의한다. 상술한 바와 같이, BSI(10)는 5개의 심플렉스 SAP을 제공한다. 2개의 RSAP(리퀘스트) 및 3개의 ISAP(인디케이트)가 있다. 각각의 SAP은 특정 레지스터의 자체 복사(즉, 구성)를 갖는다. 다음 설명에서, SAP 레지스터가 참조될 속명(generic name)이 사용된다. 예로써, 각각의 RSAP는 구성 레지스터를 갖는다. 2개의 레지스터는 Req0_cfg(RSAP_0)과 Reg1_cfg(RSAP_1)으로 지칭된다. 간단히 하기 위하여, 아래의 내용은 레지스터를 속명으로 지칭하는데, 즉, Reg?_cfg와 같이 지칭한다. 적절한 SAP를 식별하기 위해서 명칭속에 0 또는 1을 대치하면 된다.
리퀘스트 서비스는 여러개의 협동하는 스테이트 머신(제 13B도 내지 13F도 참조)으로서 실현된 리퀘스트 머신(14C)( 제 13A도 참조)에 의해 제공된다. 유사하게 인디케이트 서비스는 제 12도와 같이 여러개의 협동하는 스테이트 머신으로서 실현되는 인디케이트 머신(12C)에 의해 제공된다.
리퀘스트 서비스
2개의 리퀘스트 SAP이 있는데, RSAP_0과 RSAP_1이 있으며, 각각 높은 우선순위와 낮은 우선순위를 갖는다. RSAP는 여러 방식으로 맵핑된다. 한 예는 동기식 트래픽을 RSAP_0에 비동기식 RSAP_1에 맵핑시키는데, 그러나 BSI(10)는 어느 RSAP도 이러한 용도에만 국한시키지 않는다. 두개의 RSAP 모두 거의 동일한 기능을 가지므로 다음의 설명은 둘 다에 적용된다. 중요한 차이는 상대적인 우선순위에 기인한 RSAP 사이의 상호작용이다.
상술한 바와 같이, 호스트는 4개의 레지스터를 경유하여 RSAP의 작동 특성을 프로그램한다. 2개의 구성 레지스터가 있는데,주식회사Reg? _cfg 레지스터와(보조) Reg?_desc 레지스터가 있고, 어텐션/통보 레지스터쌍이 있으며, Reg_attn 레지스터와 Reg_notify 레지스터가 있다. 큐는 REQ 디스크립터를 이송하는데 사용되며, REQ 디스크립터는 내부 Reg?_desc 레지스터내에 있다.
호스트는 CBus 인터페이스를 통하여 Reg?_cfg를 프로그램하므로써 주요작동 파라미터를 위한 RSAP를 구성한다.
제 13A 도를 참조하면, 출력 리퀘스트를 요구하기 위해서, REQ 디스크립터의 스트림이 REQ 큐를 경유하여 리퀘스트 스테이트 머신(14C)에 전달된다. 큐가 디스크립터를 포함하는한, 리퀘스트 스테이트 머신(14C)은 디스크립터를 계속 페치하고 처리할 것이다.
각각의 REQ 디스크립터는 출력 리퀘스트 파라미터(내부 Reg?_desc 레지스터내에 적재됨)를 가진 명령 필드와, 포인터 레지스터내에 적재된 위치 필드와, 카운터내에 적재된 프레임 카운트 필드를 포함한다. 확인 상태 오브젝트는 각각의 리퀘스트 오브젝트를 위해 선택적으로 발생될 수 있다.
어텐션 및 통보 레지스터는 리퀘스트 이벤트의 작동을 정의한다.
출력 리퀘스트의 의미는 다음과 같다.
출력 리퀘스트{
8:Req_cfg; /*BSI Reg?_cfg 레지스터내에 적재됨*/
8:Reg_efs; /*Beq상의 나간 프레임 상태*/
3:Reg_attn; /*어텐션*/
3:Reg_notify; /*통보할 어텐션*/
REQ 디스트립터.F; /*REQ-제 1*/
REQ 디스트립터.M; /*REQ-중간*/
REQ 디스트립터.L; /*REQ-중간*/
}
Req_cfg,efs,attn,notify{
8:rqopt; */리퀘스트 구성 옵션, RSAP에 의함*/
8:Req_efs; */Req상에서 예상된 프레임 상태, RSAP에 의함*/
4:Req_attn; */이 RSAP상의 어텐션, 공유 attn 레지스터*/
4:Req_notify; */통보할 어텐션*/
REQ{
6:UID; /*사용자 ID(CNF에 복사됨)*/
8:사이즈; /*REQ 부분내의 프레임 수*/
4:/Cnf_cls /*확인 등급*/
8:fc; /*리퀘스트 등급*/
32:loc; /*ODUD 스트림의 위치(또한 F/L 플래그)*/
또한:
ODUD{
16:사이즈; */loc에서의 ODU 바이트의 수(13비트가 사용됨)*/
32:loc; */ODU와 F/L플래그의 위치*/
Req?_cfg
TT1 TT0 PRE HLD FCT SAT VST FCS
Req?_efs
VDL VFCS EE1 EE0 EA1 EA0 EC1 ECO
Req_attn 및 Req_notify
USR_0 RCM_0 EXC_0 BRK_0 USR_0 RCM_1 EXC_1 BRK_1
REQ
Rsvd UID 사이즈 Cnf_cls Rq_cls fc
loc
Rsvd 비트[31:30]가 유보됨, 0으로 프로그램되어야만 한다.
UID[5:0] 호스트(사용자) 정의 ID 필드. 기입된 각각의 CNF는 현재의 REQ.F
로부터 CNF.UID 필드로 UID 필드를 복사한다.
사이즈[7:0] loc에 의해 지적된 ODUD 스트림에 의해 표시된 프레임 수의 카운트.
Cnf_cls[3:0] Confirm_class[RFIE]. 확인 서비스 등급 값은 아래에 나타내었
다. 이 필드는 REQ.제 1 또는 REQ.온리 상에서만 샘플링되었다.
등급은 4개의 비트를 갖는데, 반복:R=0일 때는, REQ의 모든 프레
임을 페치한다; R=1일 때는, REQ의 제 1 프레임의 전송을 반복한
다. Full/Txr: F=0일 때는, 전송기 확인; F=1일 때는, 완전 확
인. 중간: I=0일 때는, 중간 CNF 불능;I=1일 때는, 중간 CNF 가
능. 끝: E=0일 때는, 끝:CNF 불능, E=1 일때는 끝:CNF 가능.
표 5
확인 등급
cnf_cls 리퀘스트된 등급 확인
x000 무효 (일관성 고장)
xx10 무효 (일관성 고장)
0x00 넌 (확인 안됨, exc상에서 제외)
0001 Tend (tx 확인, exc상에서 CNF 완료 )
0011 Tint (tx 확인, exc상에서 CNF 완료 중간)
0101 Fend (충분히 확인, exc상에서 CNF 완료 중간)
0111 Tint (충분히 확인, exc상에서 CNF 완료 중간)
1100 넌R (확인 안됨, exc상에서 제외, 반복 프레임)
1001 Tend R(tx 확인, exc상에서 CNF 완료 int, 반복 프레임)
1011 Tint R(tx 확인, exc상에서 CNF 완료, 반복 프레임)
1101 Fend(충분히 확인, exc상에서 CNF 완료, 반복 프레임)
1111 Tint R(충분히 확인, exc상에서 CNF 완료 int, 반복 프레임)
Rq_cls[3:0] 리퀘스트/Release_class.
리퀘스트/해제 등급 값이 아래에 도시되었다.
이 필드는 REQ_제 1 또는 REQ.온리에서만 샘플링된다. 확인
등급 작동에 관한 상세사항을 위해서는 확인 설명을 참조하기 바
란다.
표 6
Rq_clsvalue Rq_clsName 등급형태 THTE/D 토큰포착 토큰방출
0000 None None none none
0001 Apr1 Async pri1 E non-r non-r
0010 Apr2 Async pri2 E non-r non-r
0011 Apr3 Async pri3 E non-r non-r
0100 Syn Sync D any capt
0101 Imm Immed D none none
0110 ImrnN Immed D none non-r
0111 ImmR Immed D none restr
1000 Asyn Async E non-r non-r
1001 Rbeg Restricted E non-r restr
1010 Rend Restricted E restr non-r
1011 Rcnt Restricted E restr restr
1100 AlynD Async D non-r non-r
1101 RbegD Restricted D non-r restr
1110 RendD Restricted D restr non-r
1111 RcntD Restricted D restr restr
-enabled, D=disabled, non-r=non-restricted, restr=restricted, capt=captured
fc[7:0] FC 투명이 가능하지 아니하면 사용될 프레임 제어 필드. 이 필드는
OCLM 또는 RQBCN을 가정할 것인지 결정하기 위해 디코드된다. 이
디코팅딩은 예로서 프레임 제어 투명과 무관하게 항상 활성이다.
이 필드는 확인 시(FC 투명이 없이) 수신된 프레임을 비교하기해 tk
용된다.
loc 위치. 비트[31]=제 1 태그, 비트[30]=최종 태그, 비트[29:28]=유보
,비트[27:2]=ODUD 스트림의 메모리 단어 어드레스. 비트[1:0] 예상
00, 체크되지 않음.
ODUD
rsvd 사이즈
loc
rsve 유보, 체크되지 않음.
사이즈[12:0] ODU 내의 바이트 수의 카운트(pate_size내에서). 사이즈가 0이
될 수도 있음에 주목하기 바란다.
loc 위치=비트[31:30]=F-L 플래그. 비트[29:28]=유보. 비트[27:0]=0여의
메모리 바이트 어드레스.
CNF
rs fra frs tfc cfc
f-1 UID fc cs Rsvd
rs[3:0] 리퀘스트 상태, [4:code]
중간
[0000] - 넌
[0001] - 선취
[0010] - Part_done
중단점
[0011] - Service_loss(brkpt)
[0100] - 유보
완료
[0101] - Completed_BC
[0110] - Completed_OK
예외 완료
[0111] - Bad_conf
[1000] - 언더런
[1001] - Host_abort
[1010] - Rad_Ringop
[1011] - MAC_about
[1100] - 타임아웃
[1101] - MAC_reset
[1110] - Con_fail
오류
[1111] - 내부 또는 치명적 ABus 오류
fra[3:0] 프레임 속성=[MFLAG AFLAG TC]. BMAC로부터의 MFLAG 0=∼마인, 1=
마인), BMAC로부터의 AFLAG(0=∼DA 매치, 1=DA매치), TC=종료 상태
(11=프레임이 스트립됨, 10=포맷 오류, 01=ED, 00=기타(즉, MAC
리셋 또는 토큰). 이 필드는 완전 확인에 대해서만 유효화다.
frs[7:0] 프레임 상태=[VDL VFCS EAC].VDL=유효 데이터 길이, VFCS=유효FCS
, FCS, E,A,C=제어 인디케이터, 00=넌, 01=R, 10=S, 11=T. 이것은
프레임이 ED로 종료되면 완전 확인에 대해서만 유효하다.
tfc[7:0] 전송된 프레임 카운트. BSI와 BMAC에 의해 성공적으로 전송된 프
레임 수를 포함한다. 이 필드는 확인 등급에 대해 유효하다.
cfc[7:0] 확인된 프레임 카운트. 이 필드는 완전 확인이 요구될 때에만 유
효하다.
f-1 제 2 단어의 비트[31:30]내의 제 1 및 최종 태그.
UID[5:0] 비트[29:24]는 현재의 REQ.F/0의 UID 필드로부터 복사된다.
fc[7:0] 확인된 버스트의 최종 프레임의 프레임 제어 필드. 완전확인에 대
해서만 유효하다.
cs[5:0] 확인 상태[T R E P U F Ft]. [1:Tx 등급 1: Bad_Ringop 1: 예외
1: Parity_Error 1: 예상되지 않은 프레임 상태 1: Full_Confirm
2: Frame_Type]. BMAC에 의해 복귀되는 것처럼 제한에 대해서는
Tx 등급=0, 또는 비 제한에 대해서는 TxClass=1.Bad_Ringop 비트
는 전송 후에 또는 모든 복귀 프레임이 확인되기 전에 링이 불량
작동 상태로 될 때 셋트된다. 예외가 발생되면, 예외 비트는 발생
생되는 CNF.cx[]내에 셋트될 것이다(주의, EXC 어텐션이 또한 셋트
된다). 양호한 프레임에 대해서 페리티 오류=0이며, 패리티 오류
와 함께 수신된 프레임에 대해서는 패리티 오류=1이다. 패리티는
if 모드를 포함하여 FC로부터 ED로 체크된다. 플로우가 셋트된다.
프레임 상태가 프로그램된 예상 프레임 상태와 매치되지 않을 때에
는 예상되지 않은 프레임 상태 비트가 셋트된다(Req?_efs 참조).
완전 확인에 대해서만 적용된다. Full_Confirm 비트는 리퀘스트
가 완전 확인을 위한 것이었을 때에 셋트된다. Frame_Type 비트
는 완전 확인을 완료한 프레임의 형태를 반영하는데, 11=My_Void,
10=Other_Void, 01=토큰, 00=기타.
리퀘스트 연산
구성
리퀘스트 머신(14C)이 작동되기 위해서는 그것의 스페이스 서브채널이 초기화되어야만 했다. 다음에는 리퀘스트 머신(14C)은 RQSTOP 비트를 스테이트 attn 레지스터내에 리셋하고 No_State_Space 비트를 Space_attn 레지스터내에 리셋하므로써 가능해질 수 있다. 다음에는, REQ 큐 리미트가 업데이트되면, 리퀘스트 머신(14C)은 RSAP를 서비스한 것이다. RSAP는 그것의 Req?_cfg 레지스터를 적재하므로써 구성된다. 이 레지스터는 이 RSAP상에서 모든 후속 리퀘스트에 영향을 미친다. 각각의 REQ.F 디스크립터는 Req?_desc 레지스터 온-더-플라이를 적재하며, 따라서 현재의 리퀘스트 오브젝트만에 영향을 미친다.
다음의 작동은 리퀘스트 서비스를 시작시킬 것이다.
1. CNF와 REQ 큐를 위해서 메모리 스페이스를 할당한다.
2. CBus를 경유하여 구성 레지스터를 프로그램한다.
3. 초기 REQ를 REQ 큐내에 기입한다.
4. RQSTOP 비트를 State_attn내에 리셋한다.
5. NR?S 비트를 Space_attn내에 리셋한다.
6. REQ 큐 리미트 레지스터에 기입한다.
다음에는 BSI(10)는 그것이 REQ 리미트에 도달하거나 또는 상태 스페이스를 초과할 때까지 REQ 디스크립터를 페치하고 처리할 것이다. 각각의 리퀘스트 오브젝트가 완료되면, RCM?_attention이 발생되고, CNF 오브젝트가 기입된다(프로그램되었을 때).
작동
활성적, 유효 리퀘스트
리퀘스트 머신(14C)은 활성적이고 유효한 리퀘스트를 처리한다. 리퀘스트는 다음과 같을 때에 활성적이다.
1. REQ 큐 포인터가 리미트를 통과하지 않았을 때.
2. CNF 큐 포인터가 리미트를 도달하지 않았을 때.
3. RSAP를 위한 Req_attn . USR 비트가 0일 때.
리퀘스트는 다음과 같을 때에 유효하다.
1. REQ 파라미터가 허용가능할 때.
2. Rq_cls가 현재의 링 스테이트와 호환될 때.
각각의 REQ가 페치되면, Req?_req_prt는 다음의 REQ를 업데이트시킨동시에, 현재의(업데이트되지 않음) 값은 Req?_req_limit와 비교된다. 그들이 만약에 같다면, 최종 큐 REQ는 방금 페치된 것이다. 따라서, 호스트가 Req?_req_Limit에 기입할 때까지 더 이상의 REQ 프리페치는 금지된다.
예외가 발생될 때, 리퀘스트 머신(14C)은 CNF를 발생시키고 리퀘스트를 종료시킨다. CNF 큐내에는 상태를 기입할 스페이스가 있어야만 하며, 그렇지 못하면 리퀘스트 머신은 리퀘스트를 완료할 수 없다. 이러한 문제를 피하기 위해서, REQ는 큐내에 적어도 2개의 CNF를 기입할 스페이스가 없을 경우에 처리되지 않을 것이다.
하나의 리퀘스트가 일단 서비스 불가하게 되면 USR 어텐션은 후속 리퀘스트를 막기 위하여 셋트된다.
1. 리퀘스트 오브젝트 제 1 REQ가 적재될 때마다, UID, Cnf_cls, Rq_cls 및 FC는 내부Req?_desc 유지 레지스터내에 적재되고, 따라서, 리퀘스트 오브젝트 전체에 대하여 이러한 파라미터를 설정한다. 각각의 REQ(부분)의 제2 단어는 Req?_dud_ptr 레지스터내에 적재된다. 파라미터 중의 어떤 것이라도 허용가능하지 않으면, 리퀘스트는 포기된다.
2. 리퀘스트 Rq_cls가 현재의 링 스테이트에 대하여 체크되며, 만약에 등급 및 링 스테이트가 호환되지 않으면 리퀘스트는 포기된다. 예로서, 링이 작동 불능일때에는 즉각적인 Rq_cls가 표시되어야만 하며, 비즉각적 Rq_cls에 대해서는 링이 작동되어야만 한다.
리퀘스트 처리
리퀘스트 머신(14C)은 리퀘스트 오브젝트를 판독하며, 선택적으로 확인 오브젝트를 발생시킨다. 성능을 극대화하기 위하여, REQ(또한 그들의 연관 ODUD)는 리퀘스트 머신(14C)에 의헤 프리페치되고, 다르게는-유휴 상태의 버스 사이클을 충전시킨다.
리퀘스트의 제 1 REQ가 적재될 때 리퀘스트 머신(14C)은 BMAC에 원하는 RQRCLS를 표시하며, RQRCLS는 BMAC에게 적절한 토큰을 포착하도록 명령한다. 한편, 제 1 ODUD는 프리페치되고 Req?_odu_ptr(PTR RAM) 및 Req?_frm_cnt 내부 레지스터내에 적재된다. 프리스테이징이 가능하거나 또는 서비스 기회가 이 RSAP상에 도달했을 때, 제 1 ODU로부터의 데이터는 리퀘스트 버스트 FIFO내로 페치되고 리퀘스트 머신(14C)은 BMAC으로부터의 전송을 요구한다. 전송이 시작될 때(프레임이 위탁된다). ODUD는 비유효/사용됨이라고 표시되며 다음의 ODUD가 페치된다. 이것은 상기 리퀘스트 오브젝트상의 모든 프레임이 전송되었거나, 또는, 리퀘스트를 미완성으로 종료시키는 예외가 발생될 때까지 계속된다. CNF 오브젝트는 만약 이것이 Cnf_cls내에 프로그램되거나 또는 예외가 발생하는 경우에 기입될 것이다. 리퀘스트는 THT가 종료되었는지 안되었는지에 따라서 한번 또는 그 이상의 서비스 기회에 걸쳐 서비스될 수 있다.
리퀘스트 머신은 두개의 RSAP상에서 동시에 리퀘스트를 처리한다. 그들의 상호작용은 HLD 및 PRE 구성 비트에 의해 결정된다.
널(Null)오브젝트
본 발명의 한 특징에 따라서, 제로 사이즈 필드를 가진 어떤 오브젝트는 리퀘스트 머신(14C)에 의해 지지된다. 리퀘스트는 프레임 카운트내에 0을 가질수 있다. 이것은 데이터를 반드시 보내지 않고도 리퀘스트를 종료시키는데에 대표적으로 사용된다. 예로써, 제한적 대화를 종료시키기 위해서, 0의 프레임 카운트를 가진 REQ.L이 큐될 수 있다. 이것은 리퀘스트 머신(14C)으로 하여금 BMAC에 명시된 등급의 토큰을 포착 및 해제하도록 명령하게 할 것이다. 이것은 아래에 요약되었다.
1. 사이즈=0인 REQ. 제1: BSI(10)는 REQ 디스크립터 필드를 래치하고, 다음
에는 다음의 REQ를 페치한다. RQRCLS는 BMAC으로 보내지만, RQRDY는 부
정된 상태로 유지된다.
2. 사이즈=0인 REQ. 중간: BSI(10)는 다음의 REQ를 페치한다.
3. 사이즈=0인 REQ. 온리: BSI(10)는 적절한 토큰의 포착을 요구하며, 포착
시에는 RQFINAL을 가정하고 리퀘스트를 종료시킨다.
4. 사이즈=0인 REQ. 최종: BSI(10)는 토큰을 포착하며, RQFINAL을 설정하고
다음에는 리퀘스트 완료를 표시한다(리퀘스트 오브젝트는 제로 프레임을
가질 수 있다).
ODUD는 또한 제로 바이트 카운트를 가질 수도 있다. 이것은 고정 프로토콜 스택에 유용하다. 한 층이 인출될 수 있으며, 만약에 프레임에 더할 데이터가 없다면 그 층은 바이트 카운트를 0으로 하여 ODUD를 목록에 더할 수 있다. 리퀘스트와 달리, ODUD 오브젝트는 적어도 4 바이트를 가져야만 한다(짧은 어드레스에 대해서).
리퀘스트 예외
예외는 리퀘스트를 종료시킨다. 예외는 외부 오류(BMAC, 링,ABus)의 결과로서 발생될 수 있는데, 즉, 리퀘스트 오브젝트내의 호스트 오류(일관성 고장), 스테이트 스페이스의 부족, 또는 불량한 링 스테이트(작동적/비작동적)로부터 발생된다.
한가지 형태의 호스트 오류는 리퀘스트 오브젝트내의 비일관성이다. 리퀘스트 머신(14C)은 REQ 및 ODUD 스트림내의 비일관성을 체크한다. 다음의 이벤트는 일관성 고장으로서 검출된다.
1. 비유효 Cnf_cls를 가진 REQ.F(확인 등급 테이블에 도시된 바와 같음).
2. Rq_cls=0을 가진 REQ.F
3. 전의 REQ가 (REQL;|REQ.O)이 아니었을 때의 REQ.F
4. 전의 REQ가 (REQ.L|REQ.O)이었을 때, REQ.F가 아닌 REQ
5. 전의 ODUD가 (ODUD.L|ODUD.O)이 아니었을 때의 ODUD.F
6. 전의 ODUD가 (ODUD.L|ODUD.O)이었을 때, ODUD.F가 아닌 ODUD
7. 제로 바이트 카운트를 가지고, 그 최종 플래그는 셋트된 ODUD.
일관성 고장이 발생되면, 리퀘스트는 적절한 상태로 종료시킨다. 일관성 고장에 뒤따라서, 리퀘스트 머신(14C)은 현재의 오브젝트(REQ 또는 ODUD)의 끝을 찾는다. 만약에 현재의 디스크립터가 끝이 아니면(최종 비트가 셋트되지 않음), 리퀘스트 머신(14C)은 끝을 검출할때까지 후속 디스크립터를 페치한다. 다음 디스크립터는 그러면 오브젝트의 처음이어야 한다(즉, 상술한 바와 같이 일관성 규칙을 따른다).
확인
호스트는 리퀘스트 오브젝트상에서 확인을 요구할 수 있다. 리퀘스트 머신(14C)은 확인 상태를 2가지 방법으로 보고한다. 즉, 어텐션과 CNF디스크립터를 경유해서 보고한다. 어텐션은 항상 리퀘스트 머신(14C)에 의해 사용되며, 따라서, 호스트는 필요시에 통보 레지스터를 사용해야 한다.
CNF 디스크립터는 예외가 발생되거나(Cnf_cls와 무관하게), 리퀘스트가 완료되거나(엔드 또는 int Cnf_cls에 대하여), 또는 중단점이 발생될 때(int Cnf_cls에서만)기입될 것이다. CNF기입은 REQ.Cnf_cls의 비트[1:0]를 경유하여 제어된다. 비트 0(끝)은 예외/완료시에 CNF 기입을 가능하게 하며, 비트 1은 중단점(Int)에서 CNF 기입을 가능하게 한다.
수행된 확인의 유형은 REQ.Cnf_cls의 비트 2를 경유하여 선택된다. 0에 셋트되었을 때에는, 전송기 확인이 수행되고, 비트가 1에 셋트되었을 때에는 완전 확인이 수행된다. 전송기 확인은 성공적으로 전송된 프레임 수를 단순히 카운트한다. 완전 확인은 올바르게 전송된 프레임의 수와 올바르게 확인된 프레임의 수를 카운트한다. 올바르게 확인된 프레임이라는 것은 다음과 같은 매칭 기준을 만족시키는 프레임이다.
매치=∼Void 및 END 및 FC_Match 및 Our_SA 및 EFS_of 및 VDL 및 parity_ok
여기서:
Void = 무효 프레임(BSI에 의해 무시됨).
ED = 프레임은 종료 디리미터를 갖는다.
FC_Match = 송신 및 수신된 프레임 FC의 선택된 비트는 같다.
OurSA = MFLAG|SAT 및 EM
EFS_ok = FCS_ok 및 EE_ok 및 EC_ok 및 EA_ok
FCS_ok = Req_EFS.FCS|(∼Req_EFS.FCS 및 프레임은 유효
FCS를 갖는다.
VDL = 프레임이 유효 데이터 길이를 갖는다.
parity ok = FC로부터 ED까지의 모든 바이트가 양호한 패리티를 갖
는다(if 모드. 플로우)
확인된 프레임 카운터는 제 1 리퀘스트 버스트 프레임이 BMAC에 의해 코미티드된 후에 Our_SA를 가진 프레임이 수신된 때에 시작된다. 그것은 모든 프레임이 전송되고 전송 및 확인된 프레임 카운트가 동일하거나, MACRESET이거나, 링이 작동가능 상태로부터 비작동상태로 바뀌었거나, 불량 프레임이 수신되었거나(아래를 참조바람), 비매칭 프레임이 수신되었거나(상기 기준을 만족시키지 못함), 토큰이 수신되었을 때에 종료된다. 무효 및 My_Void 프레임은 무시된다는 것을 주목하기 바란다.
Rea?_cfg.SAT가 선택되고 완전 확인이 요구될 때, 확인은 프레임 끝이 가정된 MFLAG|EM이 검출될 때 시작된다. EM은 외부 어드레스 매칭 회로로부터 입력된 SA_match이다.
불량 프레임은 스트립된 프레임 또는 포맷 오류가 있는 프레임, 또는 패리티 오류(모드. 플로우가 셋트된 때)를 가진 프레임이다. BMAC로부터의 정보상의 패리티 체크는 FC로부터의 ED까지의 프레임을 포함한다.
REQ.Cnf_cls의 MS 비트는 REQ의 제 1 프레임의 리페칭을 가능하게 한다. 이것은 정상 작동을 위해서 지워져야 한다. 리페칭이 가능해지면, BSI는 리퀘스트가 포기될 때가지 제 1 프레임을 계속적으로 페치하고 전송 한다.
리퀘스트 상태 코드
CNF내로 복귀된 rs[] 필드는 4-비트 상태 코드이다. 이것은 우선순위가 엔코드된 상태 값이다. 이 값들은 다음의 내용을 뜻한다.
넌 상태가 아님. BSI(10)는 이 상태를 기입하지 않는다. 이 엔
엔코딩은 NULL 또는 비유효 CNF를 식별하기 위하여 소프트 웨
어에 의해 사용될 수도 있다.
선취 RSAP_1이 서비스되고 있었으나, 더욱 높은 우선순위의 리퀘스
터가 RSAP_0상에 활성화되었다. RSAP_1은 R5A0 다음에 서비
스될 것이다. 기입 중간 CNF 가 명령되었을 때에만 발생된다
(REQ.Cnf_cls[1]이 셋트된다).
Part_done BSI(10)가 리퀘스트를 서비스하지만, BSI가 토큰을 유지할 수
없고 (HLD 옵션 참조) 또한 리퀘스트 파트의 최종 프레임이 전
송되었을 때에, BSI(10)는 Part_done상태를 가지고 CNF를 기
입할 것이다(CNF 발생이 가능하다면).
Service_loss THT가 가능한 상태에서 리퀘스트 동안에 THT가 종료된다. 기
입 중간 CNF가 명령되었을 때에만 발생된다(REQ.cmd[1]이 셋트
된다). 중단점이 발생될 것이다.
Completed_bc 비콘(beacon)스테이트에서 전달될 때, 이 스테이트는 BMAC가 My
_Beacon을 수신할 때 복귀된다. 클레임 스테이트에서 전달될
때는, 이 상태는 BMAC가 클레임 과정에서 이겼을 때 복귀된다.
Completed_ok 양호한 상태로 통상적 완료 Bad_conf 전송된 프레임을 확인
하는 동안에 오류가 있었다. 이것은 리퀘스트로 하여금 이 상
태 또는 보다 높은 우선순위중의 하나(아래의 상태)로 완료되
도록 하게 한다. 확인 오류의 유형은 MACRST, 링-작동 변경,
불량 프레임을 수신하는 Other_Void/My_Void/토큰의 수신,
또는 프로그램 예상 프레임 상태에 매치되지 않는 프레임을 수
신하는 것이다.
언더런 리퀘스트 데이터가 BMAC에 제공되도록 요구되었을 때 리퀘스트
데이터에 아무런 데이터가 없었다.
Host_about 호스트가 Service_attn 레지스터내의 ABR? 비트를 지움으로써
직접적으로 또는 CNF큐내의 불충분한 엔트리를 가지므로써 간
접적으로 이 RSAP상에서 리퀘스트를 포기하였다.
Bad_Ringop 리퀘스트는 현재의 링 작동 스테이트에 부적절하였던 Rq_cls
로 적재되었다.
MAC_abort BMAC는 리퀘스트를 포기하였고 TXABORT를 가정하였다. 이것은
인터페이스 패리티 오류로부터, 또는 전송된 프레임이 FC 체크
를 받지 못하였을 때에, 또는 비콘 스테이트에서 전송될 때
MAC 프레임을 수신하였을 때에 발생될 수 있다. 원인의 정확
한 설명은 BMAC 기능 명세서를 참조하기 바란다. 이 상태는
BSI가 비콘 스테이트내에서 전송하는 동안에 Other_Beacon을
BMAC가 수신할 때에, 또는 BSI가 클레임 스테이트에서 전송하
는 동안에 클레임 과정이 분실되었을 때에 복귀된다.
타임 아웃 THT가 불능인 상태에서 리퀘스트 동안에 TRT가 종료되었다.
리퀘스트는 포기된다.
MAC_reset BMAC는 MACRST를 가정하였다.
Con_fail 일관성 고장. REQ 또는 ODUD 스트림내에 일관성 고장이 있었
다.
오류 내부 논리부 오류 또는 치명적 ABus 오류가 있었다(즉, CNF를
기입하는 동안에).
RSAP 상호작용
프리스테이징 및 선취 구성 옵션에 의해 결정되는 RSAP 사이의 상호작용 이 있다.
리퀘스트 머신(14C)은 양쪽 RSAP상에서 REQ를 찾으면서 스타트 스테이트에 있다. 유효 REQ가 적재되자마자, 리퀘스트 머신은 BMAC에 토큰 포착 리퀘스트를 발행한다. 프리스테이징이 가능해지면 머신은 스테이징 스테이트로 즉각 이동될 것이다. 이것은 제 1 ODU를 리퀘스트 버스트 FIFO로 가져온다. 프리스테이징이 가능해지지 않으면, 리퀘스트 머신(14C)은 제 1 프레임을 버스트 FIFO내에 스테이징하기 전에 적절한 토큰이 포착될 때까지 기다린다. 토큰이 일단 포착되면, 리퀘스트 머신(14C)은 상기 RSAP상에 프레임의 전송을 시작한다.
다른 시나리오에서, 리퀘스트 머신(14C)은 RSAP_1 프레임을 프리스테이지할 수도 있고 토큰이 포착되기 전에 RSAP_0 REQ를 식별할 수도 있다. 이 경우에 리퀘스트 머신(14C)은 FIFO내의 스테이지된 데이터를 무시한다. RSAP_0 REQ가 완료될 때, 리퀘스트 머신(14C)은 RSAP_1 리퀘스트 처리를 재개하며, RSAP_1 리퀘스트에서 RSAR_1은 리퀘스트 머신(14C)을 떠나는데, 즉, 데이터는 분실되지 않는다.
또 다른 시나리오에서, 리퀘스트 머신(14C)은 RSAP_0 REQ가 활성화될 때 RSAP_1 REQ를 서비스한다. 선취가 가능해지지 않으면, 리퀘스트 머신(14C)은 인터럽트 되지 않은 상태로 계속된다. 그러나, RSAP_0상에서 선취가 가능해지면, 리퀘스트 머신(14C)은 현재의 프레임을 RSAP_1상에 전송하는 것을 종료하고 토큰을 해제하여 스타트 스테이트로 복귀한다. 이것은 RSAP를 다시 우선순위화하는 효과를 가지며, 따라서, 다음 서비스 기회에는 RSAP_0이 제일 먼저 나갈수 있도록 보장한다. RSAP_0이 서비스되었을 때, RSAP_1은 RSAP_1이 떠났던 장소에서 픽업되고, 역시 데이터를 분실하지 않는다.
프리스테이징은 즉각적인 리퀘스트/해제 등급 없이 리퀘스트에만 적용된다. 프리스테이징은 항상 RSAP_0을 위해 가능하며, RSAP_1상에서 프로그램가능한 옵션이다. 선취는 RSAP_1에 적용가능하지 않으며 RSAP_0상의 프로그램가능한 옵션이다. BSI는 현재의 프레임이 수행되면 항상 현재의 RSAP상의 다음의 이용가능한 프레임을 FIFO내에 스테이지한다.
오류 및 예외
리퀘스트 이벤트 논리의 사용법은 Req_cfg 옵션에 의해 복잡해진다. 아래의 식과 내용은 각각의 기능을 독립적으로 설명하고자 한다(그러나 명백히 상호작용이 있다).
리퀘스트 머신(14c)으로부터 5개의 출력이 있는데, 즉, State_attn.ERR, Req_attn.RCM,Req_attn.BRK,Req_attn.EXC 및 CNF이다.
오류
BSI가 CNF를 기입하려고 시도하는 동안에 ABus 오류를 갖는 때에 Stat_attn.ERR가 셋트된다. 오류는 또한 request-complete 상태를 발생시키며, 아래에 설명된 바와 같은 작용이 발생된다. RQRSTOP 비트가 또한 셋트되며 리퀘스트 머신이 정지된다.
예외
예외는 항상 Req_attn.EXC를 발생시키며, 확인 상태를 기입한다. 예외는 또한 E 비트가 CNF.cs[]내에 셋트되게 한다. 예외는 request-complete상태를 발생시키며, 다음에 설명된 바와 같은 작용이 발생된다.
완료
완료는 리퀘스트 오브젝트가 정상적으로 완료되거나, 오류가 발생되거나, 완료 예외가 발생될 때에 발생된다. 완료는 Req_attn.RCM을 발생시킨다. 완료는 또한 BSI내에서 완전히 완료된 REQ 오브젝트를 표시한다.
중단점
중단점은 CNF가 기입될 때마다 발생된다.
CNF
CNF는 멀티-파트이며, 예로써, Service-loss CNF 가 기입될 때 CNF Middle이 기입될 수 있다. 파이프라이닝에 기인하여, BSI는 최종 바로 전의 CNF 엔트리에의 기입한 내용을 검출한 후에 2개의 CNF 까지 기입할 수 있다. 이러한 이유로, 호스트는 항상 CNF 큐 리미트를 이용가능 스페이스보다 적은 디스크립터가 되도록 정의해야만 한다.
상기한 모든 내용은 다음의 식으로 요약된다.
ERR = internal_error|ABus_error
EXC = 예외
RCM = normal_complete|EXE|ERR
BRK = CNF기입
CNF = CNF_enabled & normal_complete|EXC
리퀘스트 머신(14C)을 위한 상세한 상태 다이어그램이 제 24도에 제공되었다.
인디케이트 서비스
3개의 인디케이트 ISAP가 있는데, 즉, ISAP_0, ISAP_1, ISAP_2가 있으며, 모두 동등한 우선순위를 갖는다. RSAP와는 달리, 각각의 ISAP는 약간 다른 기능을 갖는다. ISAP는 복사 기준을 위해 구성 레지스터를 공유하며, 모든 ISAP를 위해 중단점을 결정하는 모든 레지스터를 역시 공유한다.
사용자는 ISAP를 구성하기 위하여 2개의 공유 ISAP 모드/구성 레지스터를 프로그램한다. Ind_mode는 ISAP를 위해 공통 작동 모드를 설정한다. Ind_cfg 레지스터는 각각의 ISAP를 위해 복사 기준을 설정한다. Ind_threshold는 어텐션이 발생되기 전에 ISAP_1 또는 ISAP_2상에서 수신될 수 잇는 프레임의 최대수를 셋트한다. Ind_attn 및 Ind_notify는 인디케이트 이벤트 논리부의 연산을 정의한다. 만약에 헤더/Info소트 모드가 선택된다면, Ind_hdrlen 레지스터는 헤더의 길
이를 단어로 한정한다(FC를 한 단어로 카운트한다).
ISAP 연산의 의미는 다음과 같다.
인디케이트{
7:Ind_mode /*인디케이트 구성 옵션*/
6:Ind_cfg; /*ISAP 복사 제어*/
8:Ind_threshold; /*중단점 카운터 임계*/
8:Ind_hdrlen; /*헤더 부분의 길이*/
6:Ind_attn; /*어텐션*/
6:Ind_notify; /*통보할 어텐션*/
BSI(10)는 IDUD(상태와 함께)를 다음과 같이 발생시킨다.
IDUDI
4:is; /*인디케이트 상태*/
4:fra; /*프레임 속성*/
8:frs; /*프레임 상태*/
1:vcopy; /*VCOPY는 BMAC에 보내진다*/
2:Rsvd; /*유보-0에 셋트된다*/
13:사이즈; /*loc에 의해 지적되는 IDU 바이트의 카운트*/
32:loc; /*F-L 플래그 및 IDU의 위치*/
Ind_mode
SM1 SM0 SKIP Rsvd BOT1 BOT2 BOB BOS
Ind_cfg
CC7 CC6 Rsvd CC4 CC3 Rsvd CC1 CC0
Ind_threshold
THR[7:0]
Ind_hdrlen
길이[7:0]
Ind_attn 및 Ind_notify
Rsvd Rsvd EXC 0 BRK 0 EXC 1 BRK 1 EXC 2 BRK 2
IDUD
is fra frs VC Rsvd cnt
loc
ia[3:0] 인디케이트 상태, [1:버스트 경계 3:코드]
넌-엔드 프레임 상태
[0000] - 페이지 - 크로스를 가진 큐의 최종 IDUD
[0001] - 페이지 크로스
[0010] - 헤더 - 엔드
[0011] - 헤더 - 엔드를 가진 페이지 - 크로스
정상 - 엔드 프레임 상태
[0100] - 중간(중단점 없음)
[0101] - 버스트 경계
[0110] - 임계
[0111] - 서비스 기회
스페이스가 없으므로 복사 포기
[1000] - 데이터 스페이스 없음(헤더/info모드 아님).
[1001] - 헤더 스페이스 없음
[1010] - 양호한 헤더, info 복사되지 않음
오류
[1100] - IFF 오버런
[1101] - 불량 프레임(VDL 또는 VFCS 아님)
[1110] - 패리티 오류
[1111] - 내부 오류
fra[3:0] 프레임 속성=[MFLAG AFLAG TC] MFLAG=My 어드레스(0=다른 스테이션
에 의해 보내진 프레임, 1=이 스테이션이 보낸 프레임). AFLAG-DA
매치(0=내부, 1=내부). TC=종료 상태(11=프레임이 스트립됨, 10
=포맷 오류, 01=ED,00=기타(즉,Resct/토큰)). MFLAG와 AFAG는
INFORCVD에서 BSI에 의해 샘플된다.
frs[7:0] 프레임 상태=[VDL VFC5 E A C]. VDI=유효 데이터 길이, VFCS=유효
FCS, E, A, C=제어 인디케이터(00=넌, 01=R, 10=S, 11=T). 이 필
드는 프레임이 ED로 끝날 때에만 유효하다.
vc VCOPY. 이 프레임을 위해서 BMAC에 보내진 VCOPY 비트의 상태를
반영한다. 0=VCOPY가 부정됨. 1=VCOPY가 가정됨.
cnt[12:0] ODU내의 바이트 수의 카운트(page_size내임).
loc 비트[31:30]=F-L태그. 비트[27:0]=28-비트의 ODU스타트의 메모리
어데레스. 프레임의 제 1 ODU에 대해서는, 어드레스는 버스트-정
렬된 프레임의 제 4 FC 바이트(즉, 비트 [1:0]=11). 후속 ODU에
대해서는, 어드레스는 ODU의 제 1 바이트(즉, 비트 [1:0]=00).
인디케이트 연산
구성
인디케이트 SAP는 Ind_mode, Ind_cfg, Ind_threshold 및 Ind_hdrlen 레지스터를 적재하므로써 구성된다.
입력을 초기화하는데 필요한 단계는 다음과 같다.
1. ISAP 상태 큐 스페이스를 셋업한다.
2. ISAP 구성/모드 레지스터를 CBus를 경유하여 셋업한다.
3. INSTOP 비트를 Stat_attn내에 리셋한다.
4. IDUD 큐 리미트 레지스터를 프로그램한다.
ISAP 소팅 및 복사
인디케이트 데이터 처리는 인디케이트 머신(12C)에 의해 2단계 과정으로 수행된다고 볼 수 있는데, 즉, 소팅과 복사이다. 첫째, 프레임은 3개의 ISAP 중의 하나에 소트된다. 둘째, 프레임을 메모리에 복사할 것인가 아닌가 하는 것을 결정한다.
프레임은 프레임의 FC와, AFLAG와, 호스트-정의 소팅 모드에 따라 ISAP에 소트된다. 소팅 모드는 Ind_mode 레지스터내에서 비트[SMI.SMO]에 의해 결정된다. 아래의 표 7은 프레임이 어느 ISAP 위에 소트될 것인가를 보여준다.
표 7
ISAP 맵핑에의 프레임
소트 모드SM[1:0] 프레임 형태FC etc. ISAP# Ind cfg(CC)
xx0000010110101111 MAC|SMTSyncAsyncInternalExternalHeaderInfoHi P AsyncLo P Async 012121212 [7:6][4:3][1:0][4:3][1:0][4:3][1:0][4:3][1:0]
BSI(10)는 다음과 같이 어드레스된 자체 스테이션을 식별한다.
Addr_recoginzed=AFLAG|(∼ECIP 및 EA)
아래의 표 8은 각각의 ISAP는 복사 제어 비트를 갖는다. 인디케이트 머신(12C)은 선택된 복사 제어 비트와 여러 가지 플래그를 복사 결정하는데 사용한다. 복사 제어 비트에 의해 프로그램된 기본 형태는 모든 ISAP상에서 동일하다.
표 8
ISAP 복사 결정
복사 제어 복사 결정
00011011 복사하지 않는다Addr recognized 및 ∼MFLAG이면 복사한다Addr recognizedM|FLAG이면 복사한다무조건 복사한다
복사 제어 비트는 Ind_cfg 레지스터내에 프로그램된다.
15A 0상의 스킵
ISAP_0에는 한가지 추가적 특징이 있다. 본 발명의 한 특징에 따라서, 복사 제어가 01 또는 10이고 Ind_mode의 SKIP 비트가 가정될 때 새롭고/다른 MAC 프레임만 복사된다. 이것은 MSKIP 스테이트 비트를 경유하여 달성된다. ISAP_0상에서 프레임이 복사될 때 MSKIP이 셋트된다. MSKIP이 셋트되는 한, 더이상의 MAC 프레임이 복사되지 않을 것이다. 다음 3가지의 조건하에서 MSKIP이 지워지는데, 즉, SAMEINFO가 아님이라는 표시를 가진 MAC 프레임이 수신되거나, 또는 다른 FC를 가진 프레임이 수신되거나, 또는 Ind_mode 레지스터에의 CBus 기록이 수행될 때이다. 이들 중의 마지막 것은 MAC 프레임의 그 외의 점에서 '동일한' 스트림을 샘플링(oneshot)하는데에 사용될 수 있다.
Sync/Async 소팅 모드
이 모드는 엔드 스테이션을 위한 것이거나 또는 동기적 전송을 사용하는 적용을 위한 것이다. MAC-SMT 프레임은 ISAP_0상에 소트되고, 동기적 프레임은 ISAP_1상에 소트되며, 비동기적 프레임은 ISAP_2상에 소트된다.
내부/외부 소팅 모드
이 모드는 브리징 또는 모니터링 적용을 위한 것이다. 내부(BMAC) 어드레스와 매칭되는 MAC-SMT 프레임은 ISAP_0상에 소트된다. BMAC의 내부 어드레스(짧든 길든 간에)와 매칭되는 모든 다른 프레임은 ISAP_1상에 소트된다. 외부 어드레스와 매칭되는 모든 프레임(브리징을 필요로 하는 프레임)은 ISAP_2상에 소트된다(MAC-SMT 프레임도). 내부 매치는 외부 매치보다 우선권을 갖는다는 것을 주목하기 바란다. 이 소팅 모드는 EM/EA ECIP 핀을 사용한다. 그 용도는 다음과 같다.
1. 외부 어드레스 회로는 INFORCVD 가정 전에 FCRCVD 가정으로부터 클록까지의 어느 위치에서 ECIP를 가정하지 않으면 안되며, 그렇지 않 으면 BSI는 외부 어드레스 비교가 일어나지 않는 것으로 가정한다.
2. ECIP는 ECRCVD 전에 부정되어야만 한다. 그렇지 않으면, 프레임은 복사되지 않는다.
3. EA와 EM은 ECIP가 부정된 후에 클록상에 샘플링된다.
4. ECIP는 부정된 후에는 FCRCVD가 다시 가정될 때까지 무시된다.
이 설계는 ECIP가 양 또는 음의 펄스가 되도록 허용한다.
이 모드에서 전송된 프레임을 확인하기 위해(대표적으로 SAT를 사용하 여), EM은 EA와 동일 타임 프레임내에 가정된다.
헤더/Info 소팅 모드
이 모드는 고성능 프로토콜 처리를 위한 것이다. MAC-SMT 프레임은 ISAP_0상에 소트된다. 모든 다른 프레임은 ISAP_1과 ISAP_2상에 소트된다. FC로부터 프로그램 헤더 길이까지의 프레임 바이트는 ISAP_2상에 복사된다. IDUD의 한 스트림만 발생되지만(ISAP_2상에), ISAP의 PSP 큐 둘다 스페이스를 위해 사용된다(즉, ISAP_1으로부터의 PSP는 헤더스페이스를 위한 것이고, ISAP_2로부터의 PSP는 info 스페이스를 위한 것이다). 프레임은 헤더만을 포함하거나 또는 헤더와 info를 포함할 수 있다. info를 가진 프레임을 위해서 멀티-파트 IDUD 오브젝트가 발생된다(프레임 길이가 헤더 길이보다 작거나 같으면 IDUD.온리가 발생될 수 있다.) 프레임이 복사될 것인지를 결정하기 위하여 ISAP_1 복사 제어 비트만이 사용된다는 것을 주목하기 바란다. 이 모드에서, 2개의 어드레스 스페이스(ISAP_1 및 ISAP_2 데이터)는 한 상태 스트림(ISAP_1)내에 IDUD를 갖는다. 이것은 다른 소팅 모드에 다른 스페이스-레클러메이션(Space-reclamation)소프트웨어를 발생시킬 것이다.
Hi/Lo - 우선순위 Async 소팅 모드
이 모드는 비동기적 전송의 2개의 우선순위 레벨을 사용하는 엔드 스테이션을 위한 것이다. MAC-SMT 프레임은 ISAP_0상에 소트되고, 높은 우선순위 Async 프레임은 ISAP_1상에 소트되고, 낮은 우선순위 async 프레임은 ISAP_2에 소트된다. 우선순위는 FC의 MS r-비트에 의해 결정되는데, r=oxx=낮은-우선순위이고, r=1xx=높은-우선순위이다.
채널 차단
인디케이트 머신(12c)은 데이터 및 상태 스페이스가 있는 한 ISAP상에 복사된다. 어느 스페이스든 부족이 특정 ISAP상에서 검출되면, 인디케이트 머신(12C)은 그 ISAP를 위해서 링으로부터 새 프레임을 복사하는 것을 정지한다. 이것은 채널 차단이라고 지칭된다. 인디케이트 데이터 FIFO 12A내에 상기 ISAP를 위한 데이터가 아직 있을 수 있으나, 스페이스 부족으로 데이터는 메모리에 기입될 수 없을 것이다.
ISAP를 위한 최종 PSP가 프리페치될 때, 내부 no_data_space 플립 플롭이 셋트되며, 상기 ISAP상의 모든 추가적 프레임은 복사되지 않는다(계속되고 있는 것은 현재 복사하고 있다면). Low_data_space 어텐션이 또한 발생된다. 호스트가 PSP 큐 리미트를 업데이트시킬 때, 플립 플롭은 지워지고 복사는 계속된다.
ISAP 큐를 위한 끝으로부터 두 번째의 IDUD가 기입될 때, 더이상의 프레임 복사는 정지되고 최종 IDUD는 특수 상태로 기입된다. 호스트가 IDUD 큐를 업데이트시킬 때, 리미트 복사가 계속된다.
인디케이트 상태 코드
IDUD내에 복귀된 is[] 필드는 4비트 상태 코드이다. 값은 우선순위 엔코드되며, 가장 큰 번호를 가지는 최고 우선순위 값을 갖는다. 어떤 코드는 상호 배타적이다(따라서 그들의 상대적 우선순위는 적용불가하다).
프레임의 통상적 끝 전의 상태를 기입할 때 아래의 첫 번째 4개의 값이 기입된다. 프레임이 통상적으로 종료될 때(오류 없음) 두번째 4개의 값이 기입된다. 데이터 및 또는 상태 스페이스의 부족으로 프레임 복사가 포기될 때 세번째 4개의 값이 기입된다. 예외 또는 오류가 있을 때에 마지막 4개의 값이 기입된다. 그 값들은 다음과 같은 의미를 갖는다.
[0000] 큐의 최종 IDUD로서, 페이지를 넘는다. ISAP의 IDUD 큐의 최종이용
가능 위치가 기입되었다. 페이지 넘음이 또한 필요하였는데, 그것
은 기입할 데이터가 더 있었다는 것을 뜻했다. IDUD 스페이스가 더
이상 없으므로 나머지 데이터는 기입되지 않았다. 이 코드는 IDUD.
중간에 기입되지 않을 것이며, 따라서, 제로 F-L 태그를 가진 제로
is[]는 널 디스크립터로서 소프트웨어에 의해 사용될 수 있다.
[0001] 페이지 크로스. 제 1 또는 중간 IDUD이어야만 한다. 이것은 현재
의 페이지의 나머지를 채우는 프레임 부분이며, 데이터의 나머지를
위하여 새로운 페이지로 넘어갔다.
[0010] 헤더 끝. 이것은 프에미의 헤더부분의 최종 IDU를 지칭한다. (분
명히 헤더/Info 소트 모드에만 적용가능하다).
[0011] 페이지 넘음 및 헤더 끝. 상기 두가지 상태가 모두 발생한 경우
이다.
[0100] 중간. 프레임이 정상적으로 종료되었으며, 중단점이 없었다.
[0101] 버스트 경계. 프레임이 정상적으로 종료되었으며, 버스트 경계가
검출되었기 때문에 중단점이 있었다.
[0110] 임계. 이 프레임이 정상적으로 복사되고 종료되었을 때 복사된 프
레임 임계 카운터에 도달한다.
[0111] 서비스 기회. 이 (통상적 끝)프레임은 토큰의 뒤에 오며, 그렇지
않으면 MACRST 또는 MAC 프레임이 수신되고 또는 링 변화가 있었다.
이들 이벤트 중의 어느 것도 버스트 경계를 표시한다.
[1000] 데이터 스페이스 없음. 이 코드는 헤더/info 소트 모드에 있지 않
을 때 기입될 수 있다. 데이터 스페이스가 충분하지 않기 때문에
모든 프레임이 복사되지 못한다.
[1001] 헤더 스페이스가 충분하지 않음. 헤더 스페이스가 다 되었기 때문
에 (헤더/info 소트 모드내에서), 프레임 복사는 포기되었다.
[1010] 성공적인 헤더 복사로서, 프레임 info는 복사되지 않았다. 헤더를
복사하는데 충분한 스페이스가 있었다. info를 복사하고자 했을때
때는 데이터 스페이스, IDUD 스페이스(ISAP_2상에)또는 둘다 충분
하지 않았다. info는 복사되지 않았다.
[1011] info 스페이스 없음. 헤더를 복사하였으며, info를 복사하는 동안
에 데이터 및 또는 IDUD 스페이스가 다 되었다.
[1100] FIFO 오버런. 인디케이트 FIFO는 이 프레임을 복사하는 동안에 오
버런이 있었다.
[1101] 불량 프레임. 이 프레임은 유효 데이터 길이를 갖지 않았거나, 또
는 무효 FCS를 가졌거나, 또는 둘다인 경우이다.
[1110] 패리티 오류. 이 프레임 동안에 패리티 오류가 있었다.
[1111] 내부 오류. 이 프레임 동안에 내부 논리부 오류가 있었다.
인디케이트 중단점
인디케이트 머신(12C)은 매 IDUD와 함께 인디케이트 상태를 발생한다. 인디케이트 머신(12C)은 또한 연관된 데이터의 버스트를 식별한다. 버스트 경계는 중단점 어텐션을 발생한다. 호스트는 모든 ISAP에 공통적인 인디케이트 중단점을 설정하기 위해 Ind_mode, Ind_attn 및 Ind_notify 레지스터를 프로그램한다.
어떤 때에는 데이터의 버스트의 끝을 검출하는 것이 불가능하다. 어텐션을 위해서 호스트가 너무 오래 기다리게 될 것이므로, 복사된 프레임 카운터가 제공된다. 프레임이 ISAP상에 복사될 때마다 이 카운터는 감소된다. 0에 도달할 때마다 중단점이 발생될 수 있다. ISAP가 변경될 때마다 카운터는 Ind_threshold 레지스터로부터 재적재된다. Ind_threshold를 0으로 적재하면 256개의 연속 프레임이 한 ISAP상에 수신된 후에 중단점이 발생된다. 중단점의 발생은 Ind_cfg내의 BOT 비트를 경유하여 ISAP_1 및 ISAP_2를 위해 개별적으로 가능해진다.
다음의 목록은 각각의 상태 중단점 조건을 기술한다.
BOB 버스트상의 중단점. /Ind_cfg.BOB가 셋트되면, 버스트의 끝이 Ind
_attn.BRK를 발생시킬 것이다. 버스트의 끝은 ISAP 변경 또는 DA
변경 또는 SA 변경이다. ISAP 변경은 유효 복사 프레임의 FC로부터
검출된다. 프레임의 DA가 현재의 어드레스로부터 다른 것으로 변
경될 때 DA 변경이 검출된다. 프레임의 SA가 전의 것과 동일하지
않을때에 SA 변경이 검출된다.
BOT 임계상의 중단점. BSI(10)는 중단점이 발생할 때마다 Ind_
threshold 레지스터로부터 복사된-프레임 카운터를 적재한다. 이
카운터는 현재의 ISAP상의 각각의 유효 복사 프레임에 대해 감소된
다. 카운터가 0에 도달하고, ISAP의 Ind_cfg.BOT가 셋트되면, Ind
_attnBRK가 발생한다. BOT_1을 위한 것이고, BOT2는 ISAP_2를
위한 것이다.
BOS 서비스 기회상의 중단점. Ind_cfg.BOS가 셋트되면, 몇가지 복사된
프레임 뒤의 서비스 기회(토큰/MAC 프레임/링 작동 변경)는 Ind_
attn.BRK를 발생시킬 것이다.
MACInfo MACInfo 중단점은 항상 Ind_attn.BRK를 발생시킨다(이 중단점은 항
상 가능하다). MAC 프레임이 전의 프레임과 동일한 첫 번째 4개의
바이트의 info를 갖지 않을 때 MACInfo 중단점이 발생된다. 또한
SAMEINFO 검출은 SAMEINFO가 가정된 상태에서 더 이상의 MAC 프레임
을 복사하는것을 억제하는 데에 사용된다.
오류 및 예외
오류/예외 조작과 관련하여 2개의 어텐션이 있는데, State_attn.ERR/ 및 Ind_attn.EXC이다.
인디케이트상의 오류는 State_attn.ERR 어텐션을 발생시킨다. 호스트는 상기 ISAP상에서 처리를 재개시하기 위해서 INSTOP 어텐션을 리셋해야만 한다.
예외가 발생되면, 현재의 프레임은 완료라고 표시되고, 상태가 IDUD.L내에 기록되며, Ind_attn.EXC가 발생된다.
인디케이트 SDU 포맷
아래의 표 9 및 10은 인디케이트 SDU 포맷을 보여준다. BSI(10)는 각각의 SDU를 16 또는 32-바이트 버스트-사이즈 경계상에 정렬시키는 것을 주목하기 바란다. 리퀘스트상에는 정렬 제한은 없지만, 즉, 각각의 ODU는 몇개의 바이트일 수도 있으며(ODU 0사이즈일 수 있다). 메모리내의 어떤 바이트 어드레스에서도 시작할 수 있다.
표 9
큰-엔디언 인디케이트 SDU(짧은 어드레스)
바이트 0 바이트 3
비트 31 비트 0
FC FC FC FC
DA0 DA1 SA0 SA1
표 10
작은-엔디언 인디케이트 SDU
바이트 3 바이트 0
비트 31 비트 0
FC FC FC FC
SA1 SA0 DA1 DA0
큐 매니지먼트
모든 큐를 위한 큐 엔트리/자유 스페이스의 관리는 상태/스페이스 머신(16)에 의해 조작된다(제 14도). 이 절은 상태/스페이스 머신(16)이 구성 및 작동되는 방법을 기술한다.
구성
상태 큐와 PSP 큐는 State_attn내에 SPSTOP 비트를 리셋하기 전에 초기화되어야만 한다. 초기화는 PRT 및 리미트 RAM을 셋업하고, PSP 큐를 셋업하고, 상태 큐를 셋업하는 것을 포함한다.
호스트와 BSI(10)는 RAM 액세스를 위하여 메모리 베이스 메일박스를 경유하여 통신한다. 메일박스 어드레스는 파워-업시에 한번 Ptr_mem_adr내에 통상적으로 적재된다. PRT RAM을 셋업하기 위하여 이것이 일단 수행되면, 호스트는 다음의 것을 수행한다.
1. PTOP 비트가 셋트되었는지 체크한다(만약 셋트되지 않았으면 기다린 다).
2. PTR RAM의 스타트 위치를 Ptr_int_adr에 적재한다(제로)
3. PTOP 비트를 지운다.
4. 적재될 모든 PTR의 위치에 대해 이 단계를 반복한다.
리미트 RAM을 셋업하기 위해서는 호스트는 다음의 것을 수행한다.
1. LMOP 비트가 셋트되었는지 체크한다(만약 세트되지 않았으면 기다린다.
2. 적재될 리미트 RAM 위치를 Limit_adr에 적재한다(MS 데이터 비트도 함
께)
3. 한계치를 Limit_dat에 적재한다(LS8 비트)
4. LMOP 비트를 지운다.
5. 이 단계를 리미트의 모든 위치에 대해 반복한다.
PSP 큐를 위하여 BSI(10)를 초기화하기 위해 호스트는 다음의 것을 수행해야만 한다.
1. PSP 큐에 메모리를 할당한다.
2. 큐에 유효 PSP를 기입한다.
3. 큐의 스타트 어드레스를 Ind?_psp_ptr 레지스터에 적재한다.
4. State_attn 레지스터내에 SPSTOP 비트를 리셋한다.
5. 큐의 리미트를 리미트 레지스터에 적재한다.
상태 큐를 초기화하기 위하여 호스트는 다음의 것을 수행하여야만 한다.
1. 상태 스페이스를 할당한다.
2. 큐 포인터를 Ind?_sts_prt 레지스터에 적재한다.
3. 리미트를 리미트 RAM에 적재한다.
REQ 큐를 초기화하기 위하여 호스트는 다음의 것을 수행하여야만 한다.
1. REQ 큐에 메모리를 할당한다.
2. 큐 스타트 어드레스를 Req?_req_ptr에 적재한다.
3. State_attn 레지스터내에 RQSTOP 비트를 리셋한다.
4. 큐에 하나 또는 그 이상의 REQ를 기입한다.
5. REQ 큐 리미트 레지스터를 적재한다.
작동
PSP 큐
각각의 ISAP는 그것의 PSP 큐를 작동시키는 DMA 서브채널을 갖는다. 각각의 서브채널은 큐를 관리하기 위하여 2개의 레지스터를 사용한다.
1. Ind?_psp_ptr은 다음 이용가능한 PSP를 참조한다.
2. Ind?_next_psp 레지스터는 다음(프리페치된) PSP를 유지한다.
상태/스페이스 머신(16)은 Ind?_psp_ptr에 의해 참조된 위치로부터 다음 PSP를 프리페치하고, 그것을 잠정적으로 Ind?_next_psp 유지 레지스터내에 저장하며, 따라서, 그것은 인디케이트 머신(12C)으로 즉각 통과될 수 있다. 인디케이트 머신(12C)은 스페이스를 요청할 때, 상태/스페이스 머신(16)은 디스크립터를 유지 레지스터로부터 적절한 ISAP PSP 포인터 레지스터로 이동하며, 그 다음에 PSP를 목록으로부터 프리페치하여 유지 레지스터내로 넣는다. 이 프로세스는 PSP가 큐의 리미트로부터 프리페치될 때까지 반복된다. 이것은 상기 ISAP상에 Low_data 스페이스 어텐션을 발생시키고, 데이터 스페이스가 더 이상 없을 때 더 이상의 복사를 정지한다. 호스트는 더 많은 PSP를 큐 리셋 어텐션내에 두고, 큐의 리미트 레지스터를 업데이트한다. 복사가 정지되었으면, PSP 큐 리미트가 업데이트될 때 상기 ISAP상에서 복사가 재개될 것이다. (이 리미트 레지스터의 어떤 기입도 좋으며, 호스트는 리미트를 앞으로 이동시키는 것으로 가정된다.
호스트는 (충전되지 않은) PSP 큐의 테일(tail)내에 새로운 PSP 디스크립터(리클레임된 스페이스로부터)를 형성한다. 4K 바이트 큐와 8바이트인 각각의 디스크립터를 가지고, 큐는 512 디스크립터를 포함하여, ISAP당 2M바이트의 풀 스페이스 메모리를 어드레스한다. 전체 관련된 스페이스 영역이 이 양보다 크면 호스트는 필요에 따라 Ind?_pap_ptr을 판독함으로써 외부적으로 보다 큰 큐를 용이하게 유지할 수 있다. 새로운 PSP는 큐의 테일과 사용되는 큐의 리미트에 기입된다.
상태 큐
BSI(10)는 2-단어 디스크립터 또는 메시지를 상태 큐에 기입한다. 각각의 단어는 증가된 큐 포인터 레지스터내의 어드레스에 기입된다. 디스크립터 또는 메시지가 기록될 때, 기록된 어드레스는(후에 증가된)큐의 리미트 레지스터와 비교된다. 만약에 두 어드레스가 같으면, 디스크립터 또는 메시지 기입은 끝에서 두번째 큐 엔트리로 보내진다. 이러한 작용의 결과는 인디케이트와 리퀘스트 상태 큐 모두에 대해 매우 유사하다.
두 큐 모두에 대해 이 작용은 No_Status_Space 어텐션을 발생시킨다.
ISPA에 대해서, BSI(10)는 상기 ISAP상에 더 이상의 SDU의 복사를 중지하고, 기입된 ISDU는 IDUD. 최종으로 변경되며, 이것은 상태 스페이스가 없었다는 것을 나타내는 상태를 가질 수도 있다. 이 프레임의 포착을 완료하기 위해 다른 IDUD가 필요했다면, is[]는 [0000]일 것이다. SDU 복사 완료에 이 IDUD만이 필요했다면 is[]는 어떤 통상적인 끝상태를 포함할 것이고, 따라서, No_Status_Space 어텐션만이 호스트에 큐내의 상태 스페이스 부족을 경고할 것이다. No_Space_attention이 지워질 때까지 더 이상의 SDU는 호스트 메모리에 복사되지 않을 것이며, 더 많은 상태 스페이스가 호스트에 의해 큐에 첨가되고 리미트 레지스터를 업데이트한다. BSI는 다른 ISAP상에 SDU 복사를 계속할 것이다(스페이스가 있는 ISAP상에).
RSAP에 대해서는, 끝에서 두번째 기입은 또한 Req_atnn.USR을 셋트할 것이다. USR 어텐션이 RSAP에 셋트되는 동안에 더 이상의 리퀘스트는 서비스되지 않을 것이다. 서비스는 No_Status_Space 및 USR 어텐션을 지움으로써 계속될 수 있다.
PSP 큐와는 달리, 상태 큐 리미트를 업데이트하는 것이 서비스를 재개하지 않으며, 단지 어텐션을 지우는 것만이 서비스를 재개할 것이다.
REQ 큐
BSI(10)는 각각의 REQ 큐로부터 2-단어 디스크립터를 페치한다. 액세스를 제어하기 위하여, 각각의 RSAP는 내부 Request_Queue_Empty(RQE) 비트를 유지한다. REQ? 비트가 지워지는 한, REQ 처리는 계속한다. BSI(10)가 큐의 리미트 위치로부터 REQ를 페치하면, 이것은 REQ 비트를 셋트 한다. 호스트가 큐의 리미트 레지스터에 기록할 때마다, 비트는 리셋된다. 호스트는 리미트 레지스터에 각각의 새로운 리미트를 기록하며, BSI의 REQ 포인터와 리미트 레지스터 사이에 차이가 있는 한, BSI(10)는 REQ를 페치하고 처리할 것이다.
인디케이트 드로틀링(throtting)
호스트는 비록 데이터 스페이스 흐름 제어가 보다 정확하지만, 데이터 또는 상태 스페이스를 제한하므로써 ISPA상에 흐름 제어를 제공할 수 있다.
각각의 ISAP는 자체 PSP 큐를 가지므로, 상대적 ISAP 우선순위는 호스트-정의된다.
ABus 인터페이스
이 절은 BSI-메모리 버스(ABus)인터페이스를 기술한다.
ABus 인터페이스는 버스 인터페이스 유닛(BIU)(18)(제 15도 참조)에 의해 조작된다. ABus 인터페이스는 BSI와 32-비트 외부 메모리를 연결한다.
ABus 인터페이스는 멀티-마스터 버스에 인터페이스하고, 가상 또는 실제 어드레스 지정 시스템을 지지하며, 매우 높은 대역폭을 전송하고, 큰-엔디언 또는 적은-엔디언 시스템을 지지하며, 링과 버스 타이밍 영역사이의 동기화를 제공하도록 설계된다.
버스-리퀘스트/버스-그랜트 메카니즘은 멀티-마스터 버스를 지지한다. BSI(10)는 버스 마스터를 트라이-스테이트화 하지 않을 때에는 모든 버스 출력을 트라이-스테이트화 한다. 메카니즘은 또한 버스 마스터를 선취하는것을 지지한다.
BIU(18)의 작동의 통상적 모드는 실제 어드레스를 방출하는 것이다. 가상적 메모리 시스템을 보조하기 위해서, BSI(10)는 MMU 번역 스테이트를 버스 트랜잭션내에 삽입할 수 있다.
다수의 마스터
BIU(18)는 멀티-마스터 버스이다. 간단한 버스-리퀘스트/버스-그랜트 프로토콜은 중재 스킴(예;회전 또는 고정 우선순위)을 사용하여 외부 중재기가 어떠한 수의 버스 마스터를 지지하도록 허용한다. 이것은 또한 버스 마스터 선취를 지지한다.
최대 대역폭을 전송하기 위해서, BIU(18) ABus는 정렬된 버스트 모드 전송을 사용한다. 이것은 DRAM 또는 SRAM 외부 메모리의 사용을 허용한다. 16-바이트 또는 32-바이트 버스트가 지지된다.
큰/작은-엔디언을 위한 프로그램가능 옵션은 어느 시스템이건 지지한다.
단순한 프로토콜은 다른 버스 프로토콜에의 용이한 적응을 허용한다.
개요
BIU(18)(제 15도 참조)는 버스트 능력을 가진 32-비트 동기적 멀티플렉스 어드레스/데이타 멀티-마스터 버스이다. 모든 버스 신호는 마스터 버스 클록에 동기화된다. 최대 버스트 속도는 클록당 하나의 32-비트 단어이지만, 더욱 느린 속도도 대기-상태를 삽입하므로써 수용될 수 있다.
다수의 마스터
BIU(18)는 멀티-마스터 버스이다. 간단한 버스-리퀘스트/버스-그랜트 프로토콜은 중재스킴(예; 회전 또는 고정 우선순위)을 사용하여 외부 중재기가 어떠한 수의 버스 마스터를 지지하도록 허용한다. 이것은 또한 버스 마스터 선취를 지지한다.
2개의 주요 적용 환경이 있는데, BSI(10)는 호스트 메모리(제 8도 참조)와 호스트-BSI 공유 메모리(제 9도 참조)에 직접 연결된다. 정확한 구성은 BSI(10)에 투명하며, 양쪽의 경우에 버스는 멀티-마스터일 수 있다. 통상적으로, BSI는 호스트의 시스템 버스에 직접 연결되었을 때에는 여러개의 버스 마스터 중의 하나이며, 공유 메모리 환경에서, BSI(10)는 디폴트 버스 마스터이다(대기시간/대역폭의 이유로).
버스는 BSI 내부 DMA 채널과 외부 마스터 사이에서 효과적으로 공유 된다. BSI내에서 채널은 우선순위에 따라서 서비스된다.
어드레스지정 모드
ABus 인터페이스는 가상 또는 실제 번지지정을 선택하는 프로그램가능 버스 모드를 갖는다. 실제 번지지정에서는 BIU(18)는 메모리 어드레스를 방출하고, 데이터를 즉각적으로 전송하기 시작한다. 가상적 번지지정에서는 BIU(18)는 가상 어드레스의 방출과 데이터 전송 시작과의 사이에 2개의 클록을 삽입한다. 이것은 외부 mmu에 의한 어드레스 번역을 허용한다.
대역폭
본 발명의 특징에 따라서, BIU(18)는 단일 판독 및 기입과 버스트 판독 및 기입을 지지한다. 백-투-백(back-to-back) 단일 판독 및 기입은 매 4 클록 사이클마다 실제 어드레스지정으로 발생될 수 있다. 버스트 트랜잭션은 매 12 클록 사이클마다 8개의 32-비트 단어를 전송할 수 있다. 36/MHz 클록을 가지고 96M바이트/초의 피크 대역폭을 제공한다.
버스가 높은 주파수에서 작동하도록 허용하기 위하여, 프로토콜은 모든 신호가 버스 마스터의 슬레이브에 의해 가정(assertion)되고 역가정(deassertion)되도록 정의한다. 버스 장치로 하여금 신호를 능동적으로 해제하는 것은 비활성 전이가 고속인 것을 보장한다. 이것이 정의되지 않았다면, 외부 풀업 레지스터는 신호를 충분히 빨리 해제시킬 수 없을 것이다. 프로토콜은 또한 2개의 버스 장치가 동시에 한 회선을 구동하는 경우를 피하므로써 회선쟁탈(contention)을 감소시킨다.
BSI(10)는 ABus 클록과 동기적으로 작동한다. 일반적으로, 대부분의 적용에 있어서 링에 비동기적 시스템 버스 클록을 가질 것이기 때문에 작동은 링에 비동기적일 것이다. BSI(10)는 호스트 메인 시스템 버스상에 직접 작용하도록 설계되거나 또는 국부 메모리내에 작용하도록 설계된다. 호스트 버스에서 직접 작동할 때에는 두개의 파라미터 즉 대기시간과 대역폭이 중요한 관심 대상이다.
상술한 바와 같이, BSI(10)는 전송과 수신 경로 각각에 2개 FIFO를 사용한다. 한 FIFO는 64-바이트 깊이이고, 다른 FIFO는 각각 버스팅 능력을 제공하는 2개의 뱅크의 32 바이트를 포함한다. 메인 데이터 FIFO(버스트 뱅크중의 하나를 더함)에 의해 포함되는 대기시간 양은 외부 메모리의 평균 및 최대 버스 대기시간은 충족시켜야만 한다. 링으로부터 매 80ns마다 새로운 바이트를 가지면, 64바이트 FIFO는 6×80=5.12us 최대 대기시간을 제공한다. 물론, 버스는 BSI가 링으로부터 버스트를 조립하는 데에 걸리는 시간보다 적은 평균버스 대기시간을 제공해야만 한다. 32-바이트 버스트에 대해 이것은 2560ns이다.
대기시간 문제를 지원하기 위하여, BSI(10)는 한 버스 보유기간(tenure)내에 FIFO를 완전히 비우거나 충전시킨다. 이것을 달성하기 위하여, BSI(10)는 FIFO가 충전/비움이 아니면 버스트-리퀘스트가 다수의 트랜잭션을 위해 가정된 상태로 유지한다. 만약에 버스 중재기가 버스를 다른 어떤 것에 대해서는 해제를 하지 않고 다수의 트랜잭션을 위해 BSI(10)에게 승인한다면, 최대 대기시간이 허용될 수 있다. BSI(10)는 버스-그랜트를 제거하므로써 언제든지 선취될 수 있다. 버스-그랜트가 부정될 때 버스는 현재의 트랜잭션을 완료하고 버스를 해제시킨다. 선취로 부터 버스 해제(메모리 대기 상태를 더함)까지에는 최대 11개의 클록이 있게 된다.
바이트 오더링
ABus 성능 최적화가 어느 정도된 바이트-어드레스지정 가능 버스이다.
디스크립터는 항상 32-비트 어드레스 경계에 정렬된다. 입력 IDU는 항상 burst_size 경계에 정렬된다 (디폴트 burst_size는 모드 레지스터 셋팅에 의해 결정된다). 출력 OUD는 어떠한 수의 바이트일 수도 있으며 (이것이 프레임의 최종 ODU가 아니면 0바이트일 수도 있다). 어떤 바이트 어드레스 경계에도 정렬될 수 있으나, burst_size 경계에도 정렬된 때 가장 효과적으로 작동한다.
버스트는 항상 32-비트 단어, 16 또는 32바이트(burst_size)어드레스 경계에 정렬된다. 버스트는 결코 burst_size 경계를 넘지 않는다. 만약 큰 버스트가 허용된다면, BSI는 16-바이트와 32-바이트 버스트 중에서 보다 큰 버스트를 수행할 것이다(모든 필요한 데이터를 적재/저장하기에 최소 수의 클록).
모든 디스크립터 페치는 2개의 단일 단어가 32-비트 정렬된 경계에 및 그경계로부터 접근할 때에 발생된다.
BSI(10)는 동적 버스 사이징을 수행하지 않을 것이다. 액세스된 메모리는 32비트이어야 한다. 버스 인터페이스는 존-엔디언 또는 작은-엔디언 모드에서 작동될 수 있다. 두가지 모드 모두에 대한 비트/바이트 정렬이 각각 표 11 및 12에 도시되었다. 바이트 0은 링으로부터 수신되거나 또는 링으로 전송하지못한 제 1 바이트이다.
표 11
D[31] D[0]
단어
반부 0 반부 1
바이트0 바이트 1 바이트 2 바이트 3
표 12
D[31] D[0]
단어
반부 0 반부 1
바이트0 바이트 1 바이트 2 바이트 3
디스크립터는 단어 양이며, 따라서, 각 모드에서 같은 것을 배열하는데 단지 데이터 스트림 순서만 바뀐다는 것을 주목하기 바란다.
버스 상태
BIU(18)는 단일 및 버스트 판독 및 기입 사이클을 사용한다. 가상 어드레스 모드로 프로그램된 때는 BSI는 'DMA 마스터'이며 가상 어드레스를 공급하는데, 실제 어드레스는 호스트 CPU/MMU에 의해 발생된다. BSI(10)는 MMU가 어드레스를 번역하고 어드레스를 버스상에 보내도록 허용하기 위해서 실제 어드레스를 방출한 후에 2개의 여분의 사이클을 삽입한다. 실제어드레스 모드에서, BSI는 실제 어드레스만을 방출하고 어떤 여분의 사이클도 삽입하지 않는다.
BIU 마스터 스테이트 다이어그램이 제 25 도에 도시되었다.
마스터 스테이트
Ti 스테이트는 버스 활동이 요구되지 않는 때에 존재한다. BIU(18)는 이 스테이트(모든 것이 해제됨)에 있을 때 버스 신호를 작동하지 않는다. 그러나 BIU(18)가 버스 서비스를 요구하면, BIU(18)는 그것의 버스-리퀘스트를 가정할 수 있다.
트랜잭션이 실행될 때, BIU(18)는 Tbr 스테이트로 되고 버스-리퀘스트를 가정하며 다음에는 버스-그랜트를 기다린다.
Tbr 다음에 오는 스테이트는 Tva 또는 Tpa이다. 가상 어드레스 모드에서, BIU(18)는 Tva로 되고 가상 어드레스와 사이즈 회선을 버스상에 구동시킨다. 실제 어드레스 모드에서 Tpa는 다음에 발생된다.
Tva 스테이트 다음에 Tmmu 스테이트가 온다. 이 사이클 동안에, 외부 MMU는 Tva동안에 방출된 BIU 가상 어드레스의 번역을 수행한다.
Tmmu 스테이트(가상 어드레스) 또는 Tbr 스테이트(실제 어드레스)뒤에 Tpa 스테이트가 온다. 버스 마스터(가상 어드레스 호스트 CPU/MMU, 실제 어드레스 BSI)는 실제 어드레스를 구동하고 BSI(10)는 어드레스, 판독/기입 스트로브 및 사이즈 신호를 구동한다.
Tpa 스테이트 다음에 BIU(18)는 Td 스테이트로 되어 데이터 단어를 전송한다. 각각의 데이터 전송은 Tw 스테이트를 삽입하므로써 무한히 확장될 수 있는데, 슬레이브(Slave)는 확인응답을 가정하고 데이터를 Td e(사이클)내에 전송하므로써 확인응답한다. 슬레이브가 데이터를 클록당 한 단어의 속도로 구동시킬 수 있다면, 슬레이브는 가정된 그의 확인 응답을 유지하게 된다.
최종 Td/Tw 스테이트 다음에 BIU(18)는 버스 트랜시버를 끄고 반환할 시간을 허용하기 위해 Tr 스테이트로 된다.
버스 재시도 리퀘스트는 어떠한 Td/Tw 스테이트에서도 인지된다. BIU(18)는 Tr 스테이트로 되고 다음에는 새로운 버스-그랜트를 얻을 때 트랜잭션을 복귀시킨다. 전체 트랜잭션이 재시도되는데, 즉 버스트의 모든 단어가 재시도된다. 또한, 인터럽트된 트랜잭션이 재시도되기 전에 다른 트랜잭션이 시도될 것이다. BIU(18)는 트랜잭션이 성공적으로 완료되거나 또는 버스 오류가 신호되거나 할 때까지 무한히 재시도한다.
버스 오류는 Td/Tw 스테이트내에서 인지된다.
버스 중재
BIU(18)는 중재를 위해서 버스-리퀘스트 /버스-그랜트 쌍을 사용한다. 외부 논리부는 중재기 기능을 제공해야만 한다. 프로토콜은 보유기간 당 다수의 트랜잭션과 버스 마스터 선취를 제공한다.
BSI(18)는 버스-리퀘스트를 가정하고, 버스-그랜트가 가정되면 마스터 쉽을 수행한다. BIU(18)는 또다른 트랜잭션이 펜딩(pending)되어 있으면, BIU(18)는 버스-리퀘스트가 가정된 스테이트를 유지할 것이며 현재의 트랜잭션이 완료되기전에는 버스-리퀘스트를 재 가정할 것이다. 버스-그랜트가 현재의 트랜잭션 종료전에 (재)가정되면, BIU는 마스터쉽을 유지하고 다음의 트랜잭션을 실행한다. 이 프로세스는 무한히 반복될 수 있다.
만약에 중재기가 BIU를 선취하고자 한다면, 이것은 버스-그랜트를 역가정한다. BIU는 현재의 버스 트랜잭션을 완료하고 버스를 해제할 것이다. 선취로부터 버스 해제까지는 버스 클록의 최대이다(11+8×memory_wait_states).예로서, 1대기-상태 시스템에 있어서, BSI는 최대 19버스 클록내에서 버스를 해제할 것이다.
신호 (제 15aaa도 내지 제 15dddd도)
어드레스 및 데이터
상술한 바와 같이 ABus는 32-비트 멀티플렉스 어드레스/데이타 버스를 사용한다. 버스트 전송 능력으로 사용자를 지원하기 위하여, 버스트 동안에 사이클하는 어드레스의 3비트가 디멀티플렉스되어 출력된다. 버스는 현재 스테이트에 따라 다른 정보를 전송한다.
AB_AD[31:0] 32-비트 멀티플렉스 어드레스/데이타 버스. 3-스테이트 입력/출
력. Tva동안에 AB_AD[27:0]은 액세스될(28 비트)메모리 위치의
가상 어드레스를 전송하며, AB_AD[31:28]은 사이클 식별기/기능
코드(4 비트)를 전송한다. 가상 어드레스 모드에서 호스트 마스
터는 Tpa동안에 번역된 어드레스를 발원할 것이지만, 실제 어드
레스 모드에서 BSI는 Tpa동안에 실제 어드레스와 기능 코드를 구
동할 것이다. Td 및 Tw 스테이트 동안에 AB_AD 버스는 데이터
를 전송한다. 데이터의 정렬은 큰-엔디언 또는 작은-엔디언이
다. 아래의 표는 버스 액세스를 위해 엔코드하는 기능 코드를
도시한다.
AB_AD[3:0] 이것들은 AB_AD를 위한 바이트 패리티 라인이다. AB_BP[3]는
AB_AD[32:24]를 위한 바이트 패리티이고, AB_BP[2]는 AB_AD
[23:16]를 위한 것이며, AB_BP[1]은 AB_AD[15:8]을 위한 것이
고 AB_BP[0]은 AB_AD[7:0]을 위한 것이다. BSI는 ABus로 출력
되는 어드레스상에 패리티를 발생시킨다. 속도를 최대로 하기
위하여 패리티는 예비 계산된다 (어드레스가 저장될 때 계산된다
).
표 13
트랜잭션 기능 코드
AD[31:28] 트랜잭션 형태
0123456789ABCDEF RSAP_1 ODU 적재RSAP_1 ODUD 적재/CNF 저장RSAP_1 REQ 적재RSAP_0 ODU 적재RSAP_0 ODUD 적재/CNF 저장RSAP_0 REQ 적재ISAP_2 IDU 저장ISAP_2 IDUD 저장ISAP_2 PSP 적재ISAP_1 IDU 저장ISAP_1 IDUD 저장ISAP_1 PSP 적재ISAP_0 IDU 저장ISAP_0 IDUD 저장ISAP_0 PSP 적재PTR RAM 적재/저장
AB_A[4:2] 버스트 동안에 사이클하는 디멀티플렉스 어드레스의 3개의 비트.
3-스테이트 출력만 있음. 이것들은 Tpa로부터 최종 Td 스테이트
로 구동되고, 다음의 Tr 스테이트에서 부정되면, 다음에는 해제
된다. 제공된 어드레스는 최적 메모리 타이밍을 위하여 외부 파
이프라이닝을 허용하는 것에 주목한다(세부사항에 대해서는 타이
밍 다이어그램을 참조할 것).
명령
AB_AS_ 어드레스 스트로브 신호는 3-신호 출력으로서, BSI에 의해 Tpa로부터 최종 Td 스테이트까지 가정되며, 그곳에서 신호는 부정되고 Tr 스테이트에서 해제된다. 이것은 2개의 목적을 위해 사용되도록 의도되었다. 어드레스가 가정된 사이클은 AB_AD상에서 구동되며, 따라서, AB_AS는 어드레스 스트로브이다. AB_AS가 비활성이고, AB_ACK_가 활성일 때 다음 사이클은 Tr 스테이트이고 외부 중재기는 bus-reuqest를 모두 샘플링하고 다음의 사이클에서 bus-grant를 방출할 수 있다.
AB_RW_ Read_Write_Singnal는 3-상태 출력이며, Tpa로부터 최종 Td 스
테이트까지 가정되고, 다음의 Tr 스테이트내에서 부정되며, 다음
에는 해제된다. 이것은 판독에 대해서는 높게 구동되고 기입에
대해서는 낮게 구동된다.
AB_DEN_ Data_Enable 신호는 3-스테이트 출력이며, 제 1 Td 스테이트로
부터 최종 Td 스테이트까지 가정되고, 다음의 Tr 스테이트내에서
부정되며, 다음에는 해제된다.
AB_SIZ[2:0] 사이즈 신호는 3-스테이트 출력이며, Tpa로부터 최종 Td 스테이
트까지 가정되고, 다음의 Tr 스테이트내에서 부정되며, 다음에는
해제된다. 이것들은 트랜잭션의 전송 사이즈를 나타낸다. 엔코
딩을 위해서 아래의 표를 참조하기 바란다(AB_SIZ[2]가 버스트
인디케이터임을 주목하기 바란다).
표 14
사이즈 엔코딩
AB_SIZ2 AB_SIZ1 AB_SIZ0 전송 사이즈
NNNNAAAA NNAANNAA NANANANA 4 바이트1 바이트2 바이트유보16 바이트32 바이트유보유보
AB_ACK_ 전송 확인응답 입력은 버스 마스터에 슬레이브의 응답을 나태기
는데 사용된다. 슬레이브는 4개의 선택과 삽입 대기 상태를 가
지며, 트랜잭션을 위해 재시도하며, 오류 발생시 종료되고, 또는
통상적으로 종료된다. BSI는 32-비트의 전송만을 수행한다.
아래의 표 1을 참조하기 바란다.
AB_ERR_ 버스 오류 입력은 트랜잭션 재시도 또는 트랜잭션 포기를 발생시
정된다. 상태 엔코딩은 아래의 표에 도시되었다.
표15
슬레이브 트랜잭션 응답
AB_ACK_ AB_ERR_ 정의
NNAA NAAA 삽입 대기상태버스 오류트랜잭션 재시도확인응답
BIU(18)는 내부 DMA 채널 사이에서 중재하며, 어느 채널이든지 서비스를 요구할 때에는 버스 리퀘스트를 방출한다.
AB_BR_ 버스 리퀘스트 출력은 ABus에 액세스하기 위해 BIU에 의해 설정된
다.
AB_BG_ 버스 그랜트 입력은 버스를 BSI에게 승인하기 위하여 외부 논리부에
의해 가정되는 것이다. 만약에 AB_BG가 트랜잭션(Tbr)의 초기에 가
정된다면, BSI가 트랜잭션을 실행할 것이다. LE.UH '기타'.VL150
AB_CLK_ 모든 ABus 작동은 AB_CLK의 상승 에지에 동기화된다.
실제 어드레스지정 버스 트랜잭션
이 절은 실제 어드레스지정 모드에서의 모든 버스 트랜잭션의 세부사항을제공한다(제 24 도 내지 제 26 도). 다음 절은 가상 어드레스지정을 상세히 설명할 것이다.
단일 판독
Tbr. BSI는 전송을 수행하고자 하는 것을 나타내기 위해 AB_BR을 설정
한다. 호스트는 AB_BR을 가정하고, BSI는 AB_A를 구동하며, AB
_BG가 가정된 때는 AB_AD를 구동한다. 다음 클록에서 Tpa로 이
동한다.
Tpa. BSI는 어드레스와 함께 AB_A와 AB_AD를 구동하며, AB_AS 를 가
정하고, AB_RW와 AB_SIZ[2:0]를 구동하며, 만약에 다른 트랜잭션
이 요구되지 않으면, AB_BR를 부정한다.
Td. BSI는 AB_AS를 부정하고 AB_DEN_을 가정하며, AB_ACK _와 AB
_ERR_을 샘플링한다. 슬레이브는 AB_ACK를 가정하고, AB_ERR
_를 구동하며, 준비가되면 AB_AD(데이타와 함께)를 구동한다.
BSI는 유효 AB_ACK_를 샘플링하고, 판독된 데이터를 포착한다.
Tw 스테이트는 Td 후에 발생할 수 있다.
Tr. BSI는 AB_RW, AB_DEN_ 및 AB_SIZ[2:0]를 부정하고, AB_AS와
AB_AS_를 해제한다. 슬레이브는 AB_ACK_ 및 AB _ERR_을 역
가정하고, AB_AD를 해제한다.
단일 기입
Tbr. BSI는 전송하고자 하는 것을 나타내기 위하여 AB_BR_을 가정한
다. 호스트는 AB_BG_을 가정하고, BSI는 AB_A를 구동하며, AB
_ BG가 가정된 때는 AB_AD를 구동한다. 다음 클록에서 Tpa로 이
동한다.
Tpa. BSI는 어드레스와 하게 AB_A와 AB_AD를 구동하며, AB_AS를 가
정하고, AB_RW_와 AB_SIZ[2:0]를 구동하며, 만약에 다른 트랜잭
션이 요구되지 않으면 AB_BR_을 부정한다.
Td. BSI는 AB_AD_를 부정하고, AB_DEN_을 가정하며, 기입 데이터와
함께 AB_AD를 구동하고, AB_ACK_와 AB_ERR_ 샘플링을 시작한
다. 슬레이브는 AB_AD 데이터를 포착하고, AB_ACK_를 가정하고
AB_ERR_을 구동한다. BSI는 유효 AB_ACK_를 샘플링한다. Tw
스테이트는 Td 후에 발생할 수 있다.
Tr. BSI는 AB_RW_, AB_DEN_ 및 AB_SIZ[2:0]를 부정하고, AB_A와
AB_AD 및 AB_AS_를 해제한다. 슬레이브는 AB_ACK_와 AB_ERR
_을 역가정하고, 데이터와 함께 AB_AD의 구동을 정지시킨다.
버스트 판독
Tbr. BSI는 전송을 수행하고자하는 것을 표시하기 위하여 AB_BR_을 가
정한다. 호스트는 AB_BG_를 가정하고, BSI는 AB_A를 구동하며,
AB_BG_가 가정된 때 AB_AD를 구동한다. 다음 클록에서 Tpa로
이동한다.
Tpa. BSI는 어드레스와 함께 AB_A와 AB_AD를 구동하고, AB_AS를 가정
하며, AB_RW_ 및 AB_SIZ[2:0]을 구동하고, 다른 트랜잭션이 요
구되지 않으면 AB_BR_을 부정한다.
Td. BSI는 AB_DEN_을 가정하고, AB_ACK_와 AB_ERR_을 샘플링하
며, 어드레스를 AB_A상에서 증가시킨다. 슬레이브는 AB_ACK_를
가정하고, AB_ERR_을 구동하며, 준비가된 때에는 AB_AD(데이타
와 함께)를 구동한다. BSI는 유효 AB_ACK_를 샘플링하고, 판독
된 데이터를 포착한다. Tw스테이트는 Td후에 발생될 수 있다. 이
스테이트는 네번 또는 여덟 번 반복된다(버스트 사이즈에 따라).
최종 Td 스테이트상에서 BSI는 AB_AS_를 부정한다.
Tr. BSI는 AB_RW_와 AB_DEN_와 AB_SIZ[2:0]를 부정하고, AB_A와
AB_AS_를 해제한다. 슬레이브는 AB_ACK_ 및 AB_ERR_을 역가
정하고, AB_AD를 해제한다.
버스트 기입
Tbr. BSI는 전송하고자 하는 것을 나타내기 위하여 AB_BR_을 가정한
다. 호스트는 AB_BE_를 가정하고, BSI는 AB_A를 구동하며, AB
_BG_가 가정된 때에는 AB_AD를 구동한다. 다음 클록에서 Tpa로
이동한다.
Tpa. BSI는 어드레스와 함께 AB_A와 AB_AD를 구동하고, AB_AS를 가정
하며, AB_RW_ 및 AB_RW_ 및 AB_SIZ[2:0]를 구동하고, 다른 트
랜잭션이 요구되지 않을 때에는 AB_BR_을 부정한다.
Td. BSI는 AB_DEN_을 가정하며, 기입 데이터와 함께 AB_AD를 구동하고
, AB_ACK_ 및 AB_ERR을 샘플링하며, AB_A상에서 어드레스를 증
가시킨다. 슬레이브는 AB_AD 데이터를 포착하고, AB_ACK_를 가
정하며, AB_ERR_을 구동시킨다. BSI는 유효 AB_ACK_를 샘플링
한다. Tw 스테이트는 Td후에 발생할 수 있다. 이 스테이트는 완
전한 버스트에 대해 요구되는 대로 반복된다. 최종 Td 스테이트상
에서 BSI는 AB_AS를 부정한다.
Tr. BSI는 AB_RW와 AB_DEN_과 AB_SIZ[2:0]를 부정하고, AB_A와
AB_AD와 AB_AS를 해제한다. 슬레이브는 AB_ACK_ 및 AB_ERR_
을 역가정하고, 데이터와 함께 AB_AD의 구동을 정지시킨다.
가상 어드레스지정 버스 트랜잭션
이 절은 가상 어드레스지정 모드에서의 모든 버스 트랜잭션의 세부사항을 제공한다.
단일 판독
Tbr. BSI는 전송을 수행하고자 하는 것을 나타내기 위하여 AB_BR_를
가정한다. 호스트는 AB_BG_를 가정하고 BSI는 AB_A를 구동하고
, AB_BG_가 가정된 때에는 AB_AD를 구동한다. 다음 클록에서
Tva로 이동한다.
Tva. BSI는 한 클록 동안 가상 어드레스로 AB_A와 AB_AD를 구동하고,
AB_AS_를 부정하며, AB_RD_를 가정하고, AB_SIZ[2:0]를 구동
하고, 다른 트랜잭션이 요구되지 않으면 AB_BR_을 부정한다.
Tmmu. 호스트 MMU는 이 클록 동안에 어드레스 번역을 수행한다.
Tpa. 호스트 MMU는 번역된 (실제)어드레스를 가지고 AB_AD를 구동하고,
BSI는 AB_A를 구동하며, AB_AS를 가정한다.
Td. BSI는 AB_AS_를 부정하고, AB_DEN_을 가정하며, AB_ACK_와
AB_ERR_을 샘플링한다. 슬레이브는 AB_ACK_를 가정하고, AB_
_ERR_을 구동하며, 준비가 된 때에는 AB_AD(데이타와 함께)를
구동한다. BSI는 유효 AB_ACK_를 샘플링하고, 판독된 데이터를
포함한다. Tw 스테이트는 Td후에 발생할 수 있다.
Tr. BSI는 AB_RW_와 AB_DEN_과 AB_SIZ[2:0]를 부정하고, AB_A와
AB_AS_를 해제한다. 슬레이브는 AB_ACK_ 및 AB_ERR_을 역가
정하고, AB_AD를 해제한다.
단일 기입
Tbr. BSI는 전송을 수행하고자 하는 것을 나타내기 위해 AB_BR_를 가
정한다. 호스트는 AB_BG_를 가정하고 BSI는 AB_A를 구동하며,
AB_BG가 가정된 때에는 AB_AD를 구동한다. 다음 클록에서 Tva로
이동한다.
Tva. BSI는 한 클록 동안 가상 어드레스를 AB_A와 AB_AD를 구동하고,
AB_AS_를 부정하며, AB_RW_를 부정하고, AB_SIZ[2:0]를 구동
한다.
Tmmu. 호스트 MMU는 이 클록 동안에 어드레스 번역을 수행한다.
Tpa. 호스트 MMU는 어드레스와 함께 AB_AD를 구동하고, BSI는 AB_A를
구동하며 AB_AS를 가정하고, 다른 트랜잭션이 요구되지 않으면
AB_BR_을 부정한다.
Td. BSI는 AB_AS_를 부정하고, AB_DEN_을 가정하며 기입 데이터와
함께 AB_AD를 구동하고 AB_ACK_ 및 AB_ERR_의 샘플링을 시작
한다. 슬레이브는 AB_AD 데이터를 포착하고, AB_ACK_를 가정하
며, AB_ERR_를 구동한다. BSI는 유효 AB_ACK_를 샘플링한다.
Tw 스테이트는 Td후에 발생할 수 있다.
Tr. BSI는 AB_RW_와 AB_DEN_과 AB_SIZ[2:0]를 부정하고, AB_A와
AB_AD와 AB_AS를 해제한다. 슬레이브는 AB_ACK_와 AB_ERR_
를 역가정하고, 데이터와 함께 AB_AD의 구동을 정지시킨다.
버스트 판독
Tbr. BSI는 전송을 수행하고자 하는 것을 나타내기 위하여 AB_BR_를
가정한다. 호스트는 AB_BG_를 가정하고, BSI는 AB_A를 구동하
며, AB_BG_가 가정된 때에는 AB_AD를 구동한다. 다음 클록에서
Tva로 이동한다.
Tva. BSI는 한 클록 동안 가상 어드레스로서 AB_A와 AB_AD를 구동하
고, AB_AS_를 부정하며, AB_RD_를 가정하고, AB_SIZ[2:0]를
구동하며, 다른 트랜잭션이 요구되지 않으면 AB_BR을 부정한다.
Tmmu. 호스트 MMU는 이 클록 동안에 어드레스 번역을 수행한다.
Tpa. 호스트 MMU는 번역된 (실제)어드레스로 AB_AD를 구동하고 BSI는
AB_A를 구동하며, AB_AS_를 가정한다.
Td. BSI는 AB_DEN_을 가정하고, AB_ACK_와 AB_ERR_를 샘플링한
다. 슬레이브는 AB_ACK_를 가정하고, AB_ERR_를 구동하며, 준
비가 된 때에는 AB_AD(데이타와 함께)를 구동한다. BSI는 유효
AB_ACK_를 샘플링하고, 판독 데이터를 포착한다. Tw 상태는 Td
후에 발생할 수 있다. 이 상태는 (버스트 사이즈에 따라서). 최
최종 Td 스테이트에서, BSI는 AB_AS_를 부정한다.
버스트 기입
Tbr. BSI는 전송을 수행하고자 하는 것을 나타내기 위하여 AB_BR_를
가정한다. 호스트는 AB_BG_를 가정하고, BSI는 AB_A를 구동하
며, AB_BG_가 가정된 때에는 AB_AD를 구동한다. 다음 클록에
서 Tva로 이동한다.
Tva. BSI는 한 클록 동안 가상 어드레스로서 AB_A와 AB_AD를 구동하고
하고, AB_AS_를 부정하며, AB_RW_를 부정하고, AB_SIZ[2:0]를
구동한다.
Tmmu. 호스트 MMU는 이 클록 동안에 어드레스 번역을 수행한다.
Tpa. 호스트 MMU는 어드레스와 함께 AB_AD를 구동하고, BSI는 AB_A를
구동하며, AB_AS_를 가정하고, 다른 트랜잭션이 요구되지 않을
때에는 AB_BR_을 부정한다.
Td. BSI는 AB_DEN_을 가정하고, 기입된 데이터와 함께 AB_AD_를
구동하며 AB_ACK_ 및 AB_ERR_을 샘플링하기 시작한다. 슬레이
브는 AB_AD 데이터를 포착하고, AB_ACK_를 가정하며, AB_ERR
_을 구동한다. BSI는 유효 AB_ACK_를 샘플링한다. Tw 스테이
트는 Td 후에 발생할 수 있다. 이 스테이트는 완전한 버스트를
위해 필요에 따라 반복된다. 최종 Td 스테이트상에서 BSI는 AB_
AS_를 부정한다.
Tr. BSI는 AB_RW_와 AB_DEN_과 AB_SIZ[2:0]를 부정하고, AB_A와
AB_AD와 AB_AS_를 해제한다. 슬레이브는 AB_ACK_ 및 AB_
ERR_을 역가정하고, 데이터와 함께 AB_AD의 구동을 정지시킨다.
BMAC 인터페이스
이 절은 BMAC와 BSI사이의 인터페이스를 기술한다. 제 30A 도 내지 제 30C 도에 도시된 바와 같이, 인터페이스는 2개의 부분으로 되어 있는데, 즉, MAC 인디케이트 인터페이스와 MAC 리퀘스트 인터페이스이다.
리퀘스트 인터페이스
데이터
MRD[7:0] 이것은 BSI로부터의 8-비트 출력 데이터이다.
MRP 이것은 MRD상의 패리티이다.
리퀘스트된 서비스
RQRCLS[3:0] 리퀘스트/해제 등급의 형태를 선택한다
RQBCN 프레임이 비콘 스테이트로부터 보내질 것을 요구한다.
RQCLM 프레임이 클레임 스테이트로부터 보내질 것을 요구한다.
옵션
STRIP 무효 스트립 옵션
SAT 데이터 스트림으로부터 SA를 선택하고 MAC파라미터 램을 선택하지
않는다 (이것은 통상적으로 BMAC상에서 SAT와 SAIGT 모두에 연결
된다).
FCST BMAC-발생 FCS를 불가능(disable)하게 하고, 대신에 데이터 스트림
을 사용한다.
전송 핸드셰이크
RQRDY 포착하면, 요구되는 등급의 토큰이 사용될 것이라는 것을 나타낸다.
TXRDY 사용가능한 토큰이 포착되었음을 나타낸다.
RQSEND 데이터가 전송될 준비가 되었음을 나타낸다.
MRDSMRD 전송 데이터를 스트로브한다. BMAC상에서 TXACK에 연결한다.
RQEOF 데이터의 최종 바이트가 전송 인터페이스에 있음을 나타낸다.
RQFINAL 리퀘스트의 마지막 프레임을 나타낸다.
RQABORT 현재의 프레임을 포기하고자 BSI에 의해 가정된다.
TXED ED가 전송되고 있음을 나타낸다.
TXPASS 서비스 기회가 없음을 나타낸다.
TXABORT MAC 전송 DID가 이 프레임을 포기하였음을 나타낸다.
전송 상태
TXRINGOP 국부 MAC 전송기 링 작동 플래그의 스테이트를 나타낸다.
TXCLASS 현재의 토큰의 등급을 나타낸다.
인디케이스 인터페이스
데이터
MID[7:0] 이것은 BSI로 입력되는 8-비트 입력 데이터이다.
MIP 이것은 MID상의 패리티이다.
프레임 시퀸싱 및 핸드셰이크
FCRCVD 프레임 제어가 수신되었음을 나타낸다.
INFORCVD INFO 필드의 처음 4개의 바이트가 수신되었음을 나타낸다.
EDRCVD 프레임 시퀀스의 끝(EDFS)이 수신되고 있음을 나타낸다.
MIDS MAC 인디케이트 데이터 스트로브이며, 유효 데이터에 대해 가정된다.
프레임 정보
AFLAG DA 필드상에 내부 어드레스 매치가 발생했음을 나타낸다.
MFLAG 수신된 SA가 MLA 또는 MSA(BMAC) 레지스터와 매치되는 것을 나타낸
다.
SAMESA 현재의 프레임의 SA가 전의 프레임의 SA와 같고, 프레임이 MAC 프
레임이 아니었으며, 그 2개의 사이즈가 동일함을 나타낸다.
SAMEINFO 현재 프레임의 info 필드의 처음 4개 바이트가 최종 프레임의 처음
4개의 info 바이트와 같고, 이것들은 MAC 프레임이며, 그들의 어드
레스 길이가 같다는 것을 나타낸다.
프레임 상태
VDL 수신된 프레임을 위한 유효 데이터 길이를 나타낸다.
VFCS 수신된 프레임을 위한 유효 FCS를 나타낸다.
TKRCVD 완전한 토큰이 수신되었음을 나타낸다.
FRSTRP 프레임이 스트립되었음을 나타낸다.
FOERROR 표준-정의 포맷 오류를 나타낸다.
MACRST 내부 오류, MAC 프레임, MAC 리셋, 소프트웨어 리셋 또는 하드웨어
리셋을 나타낸다.
상태 인디케이터
VCOPY COPY 인디케이터를 셋트하는데 사용된다.
EA 외부 A-플래그, 외부 DA 매치가 검출되었을 때에 가정된다. ECIP가
가정으로부터 부정으로 바뀔 때 샘플링된다. 샘플 윈도우는 JK->ED
로부터 온다.
ECIP 프로그레스내에서의 외부 비교. EA 입력을 스트로브하는데 사용된
다.
EM 외부 M_Flat. 외부 SA 매치가 검출 되었을때 가정된다. 프레임의
최종 바이트 상에서(통상적으로 EDRCVD가 가정되었을때)또는 ∼ECIP
상에서 BSI에 의해 샘플링된다.
기타
LBC[5, 3, 1] CDD로부터의 국부 바이트 클록의 여러가지 위상
SSER 링 클록 스캔 체인을 위한 스캔경로 인에이블
SSEB 버스 클록 스캔 체인을 위한 스캔경로 인에이블
SIR[1:0] 클록 스캔 체인을 위한 스캔 체인 입력
SIB[1:0] 버스 클록 스캔 체인을 위한 스캔 체인 입력
CBus 인터페이스
BSI(10)는 내부 레지스터와 논리부에 8-비트 비동기적 인터페이스를 제공한다. 내부 레지스터에 액세스가 가능하다. 이 인터페이스는 다른 NSC FDDI 칩 셋트 부재상의 유사한 인터페이스와 호환되며, CBus라고 지칭된다.
어텐션/통보 플래그에의 액세스는 CBus를 경유해야만 한다. 연산 명령은 CBus를 경유하여 BSI내에 적재된다. CBus를 위한 프로토콜이 이절에 기술된다. 명령 레지스터 용도와 내부 레지스터 맵은 위의 프로그래밍 인터페이스 절에 기술되었다.
CBus 신호
CB[4:0] 제어 버스 어드레스 입력은 액세스될 BSI 위치를 선택한다.
CBD[7:0] 양방향 제어 버스 데이터 신호는 BSI로 또한 BSI로부터 8-비트 데
이터를 전송한다.
CBP 이것은 CBD 버스를 위한 기수 패리티이다.
CE_ 칩 인에이블
CB_RW_ 판독/기입_입력은 데이터 전송 방향을 선택한다.
CB_ACK_ 확인응답 개방-드레인 출력
INT_ BSI로부터의 개방-드레인 출력을 인터럽트시킨다.
RST_ BSI로의 하드 리셋 입력.
CBus 프로토콜
프로토콜은 간단한 비동기적 핸드셰이크이다. 호스트는 CBA와 CBD상에(기록을 위해) 어드레스와 데이터를 셋업하고, CB_RW_를 구동하며, 다음에는 CE_를 가정한다. 전송이 완료될 때 BSI는 CB_ACK_를 가정한다. CB_ACK_가 일단 가정되면 CE_는 역가정될 수 있고, CB_ACK_가 일단 역가정되면 새로운 트랜잭션이 개시될 수 있다. CB_ACK_는 개방-드레인 출력이고, 따라서, 높은 출력으로 구동되지 않는다.
본 명세서에 기술된 본 발명의 실시예에 대한 여러가지 수정이 본 발명의 실시에 사용될 수 있다는 것을 이해해야 한다. 다음의 청구항들은 본 발명의 범위를 한정하고, 이 청구항들의 범위내의 구조물과 방법 및 그와 동등한 것들이 그 범위에 포함되게 하는 것이 의도하는 바이다.
본 발명에 따른 데이터 통신 시스템은, 근거리 통신망의 매체 액세스 제어(MAC)기능과 MAC를 경유하여 네트워크 매체에 부착된 호스트 시스템 사이에 인터페이스를 제공한다. 인터페이스는 MAC 수신기로부터 수신된 프레임과 매체에의 전송을 위해 호스트에 의해 제공되는 프레임 모두를 위해 호스트 메모리 시스템과 MAC 사이의 정보 전달을 수행한다.
본 발명에 따른 MAC 인터페이스(EOF에서)는 한 최종 단어(word)를 프레임 상태로서 첨가하고 상태 단어를 데이터 뒤에서 수신 FIFO내로 위치시킨다. 시스템 인터페이스는 상태를 처리하기 전에 데이터를 판독하고 EOF 상태 디스크립터(descriptor)를 기입한다. 데이터/상태 동기화는 자동적이며, MAC 인터페이스와 시스템 인터페이스 사이의 여타 통신은 필요하지 않다. 이것은 복잡한 데이터/상태 동기화 없이도 프레임을 몇 개라도 수신 FIFO내에 위치시킬 수 있게 한다. 이것은 많은 소형 프레임을 수신할 때 FIFO의 전체 사용을 허용하며 따라서 장기적 버스 지연으로 인한 드롭 프레임의 가능성을 감소시킨다. 이것은 수신 FIFO가 어떠한 깊이로 될 수 있다는 점에서 설계 신축성을 허용한다.

Claims (3)

  1. 근거리 통신망과 상기 네트워크에 부착된 스테이션과 연관된 메모리 시스템과의 사이에서 정보의 전송을 위한 인터페이스 시스템에 있어서,
    (가) 상기 인터페이스 시스템과 상기 메모리 시스템 사이에서의 정보 전송을 구현하기 위한 버스 인터페이스 수단과,
    (나) 상기 네트워크로부터 상기 인터페이스 시스템에 의해 수신된 정보를 상기 버스 인터페이스 수단을 경유하여 상기 메모리 시스템에 전송하기 위한 인디케이트 수단과,
    (다) 상기 버스 인터페이스 수단에 의해 상기 메모리 시스템으로부터 상기 인터페이스 시스템에 의해 수신된 정보를 상기 네트워크에 전송하기 위한 리퀘스트 수단과,
    (라) 상기 인디케이트 수단과 상기 리퀘스트 수단의 상태를 감시하고, 대응 상태 신호를 발생시키며, 상기 인터페이스 시스템을 경유하여 상기 네트워크와 상기 메모리 시스템 사이에 전송된 정보를 위하여 상기 메모리 시스템내의 저장 스페이스의 할당을 관리하기 위하여 상기 인디케이트 수단과 상기 리퀘스트 수단에 연결된 상태 발생/스페이스 관리 수단을 포함하며,
    연관된 데이터를 가지지 않는 전송 명령을 처리하기 위한 수단을 추가로 포함하는 것을 특징으로 하는 인터페이스 시스템.
  2. 제1항에 있어서,
    제로 프레임을 기술하는 리퀘스트 오브젝트의 제1 디스크립터가 토큰 포착 리퀘스트인 것을 인식하기 위한 수단을 추가로 포함하는 것을 특징으로 하는 인터페이스 시스템.
  3. 제1항에 있어서,
    제로 프레임을 기술하는 리퀘스트 오브젝트의 최종 디스크립터가 토큰 해제 리퀘스트인 것을 인식하기 위한 수단을 추가로 포함하는 것을 특징으로 하는 인터페이스 시스템.
KR1019990018424A 1990-04-27 1999-05-21 매체 액세스 제어/호스트 시스템 인터페이스를 구현하기 위한 방법 및 장치 KR100240729B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US51624590A 1990-04-27 1990-04-27
US516,245 1990-04-27
KR1019910006778A KR100240726B1 (ko) 1990-04-27 1991-04-26 매체액세스제어/호스트시스템 인터페이스를 구현하기 위한 장치

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1019910006778A Division KR100240726B1 (ko) 1990-04-27 1991-04-26 매체액세스제어/호스트시스템 인터페이스를 구현하기 위한 장치

Publications (1)

Publication Number Publication Date
KR100240729B1 true KR100240729B1 (ko) 2000-03-15

Family

ID=26628575

Family Applications (6)

Application Number Title Priority Date Filing Date
KR1019990018426A KR100240730B1 (ko) 1990-04-27 1999-05-21 매체 액세스 제어/호스트 시스템 인터페이스를 구현하기 위한 방법 및 장치
KR1019990018422A KR100240728B1 (ko) 1990-04-27 1999-05-21 매체 액세스 제어/호스트 시스템 인터페이스를 구현하기 위한 방법 및 장치
KR1019990018429A KR100240732B1 (ko) 1990-04-27 1999-05-21 매체 액세스 제어/호스트 시스템 인터페이스를 구현하기 위한 방법 및 장치
KR1019990018428A KR100240731B1 (ko) 1990-04-27 1999-05-21 매체 액세스 제어/호스트 시스템 인터페이스를 구현하기 위한 방법 및 장치
KR1019990018421A KR100240727B1 (ko) 1990-04-27 1999-05-21 매체 액세스 제어/호스트 시스템 인터페이스를 구현 하기 위한 방법 및 장치
KR1019990018424A KR100240729B1 (ko) 1990-04-27 1999-05-21 매체 액세스 제어/호스트 시스템 인터페이스를 구현하기 위한 방법 및 장치

Family Applications Before (5)

Application Number Title Priority Date Filing Date
KR1019990018426A KR100240730B1 (ko) 1990-04-27 1999-05-21 매체 액세스 제어/호스트 시스템 인터페이스를 구현하기 위한 방법 및 장치
KR1019990018422A KR100240728B1 (ko) 1990-04-27 1999-05-21 매체 액세스 제어/호스트 시스템 인터페이스를 구현하기 위한 방법 및 장치
KR1019990018429A KR100240732B1 (ko) 1990-04-27 1999-05-21 매체 액세스 제어/호스트 시스템 인터페이스를 구현하기 위한 방법 및 장치
KR1019990018428A KR100240731B1 (ko) 1990-04-27 1999-05-21 매체 액세스 제어/호스트 시스템 인터페이스를 구현하기 위한 방법 및 장치
KR1019990018421A KR100240727B1 (ko) 1990-04-27 1999-05-21 매체 액세스 제어/호스트 시스템 인터페이스를 구현 하기 위한 방법 및 장치

Country Status (1)

Country Link
KR (6) KR100240730B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100738955B1 (ko) 2005-12-28 2007-07-16 에스케이 텔레콤주식회사 다기능 usb 슬레이브 장치와 usb 호스트 장치 간의기능 변경 방법 및 이를 위한 다기능 usb 슬레이브 장치

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040042731A (ko) * 2002-11-15 2004-05-20 엘지엔시스(주) 호스트 시스템의 파일 및 레지스트리 모니터링방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100738955B1 (ko) 2005-12-28 2007-07-16 에스케이 텔레콤주식회사 다기능 usb 슬레이브 장치와 usb 호스트 장치 간의기능 변경 방법 및 이를 위한 다기능 usb 슬레이브 장치

Also Published As

Publication number Publication date
KR100240728B1 (ko) 2000-03-15
KR100240731B1 (ko) 2000-03-15
KR100240732B1 (ko) 2000-03-15
KR100240730B1 (ko) 2000-03-15
KR100240727B1 (ko) 2000-03-15

Similar Documents

Publication Publication Date Title
KR100240726B1 (ko) 매체액세스제어/호스트시스템 인터페이스를 구현하기 위한 장치
US6145016A (en) System for transferring frame data by transferring the descriptor index data to identify a specified amount of data to be transferred stored in the host computer
JP3452590B2 (ja) システムメモリからネットワークへのパケットに配列されるデータのフローを制御するネットワークアダプタおよびデータのフローを制御する方法
US7277449B2 (en) On chip network
US4807109A (en) High speed synchronous/asynchronous local bus and data transfer method
US6161160A (en) Network interface device architecture for storing transmit and receive data in a random access buffer memory across independent clock domains
US4947366A (en) Input/output controller incorporating address mapped input/output windows and read ahead/write behind capabilities
KR100611268B1 (ko) 가상 채널 설정을 위한 강화된 일반 입출력 아키텍처 및관련 방법
US5367643A (en) Generic high bandwidth adapter having data packet memory configured in three level hierarchy for temporary storage of variable length data packets
US6996651B2 (en) On chip network with memory device address decoding
US7051150B2 (en) Scalable on chip network
US7139860B2 (en) On chip network with independent logical and physical layers
US7200137B2 (en) On chip network that maximizes interconnect utilization between processing elements
US6047001A (en) Apparatus and method in a network interface device for storing a data frame and corresponding tracking information in a buffer memory
EP0459757A2 (en) Network adapter
JPH01231159A (ja) データを転送するための方法およびそのための直接メモリアクセス手段
JP2004318901A (ja) データ処理モジュール相互間の高速制御およびデータバスシステム
US7603488B1 (en) Systems and methods for efficient memory management
US6401142B1 (en) Apparatus and method for selective bus transfer using master and slave modes
KR100240729B1 (ko) 매체 액세스 제어/호스트 시스템 인터페이스를 구현하기 위한 방법 및 장치
US6615306B1 (en) Method and apparatus for reducing flow control and minimizing interface acquisition latency in a hub interface
JPS61177560A (ja) 高速の並列バス構造およびデ−タ転送方法
JPH09506219A (ja) ネットワーク・インタフェース・コントローラ
Bainbridge et al. Transaction Layer

Legal Events

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

Payment date: 20101018

Year of fee payment: 12

EXPY Expiration of term