KR100638067B1 - 고성능 통신 제어기 - Google Patents

고성능 통신 제어기 Download PDF

Info

Publication number
KR100638067B1
KR100638067B1 KR1020017012668A KR20017012668A KR100638067B1 KR 100638067 B1 KR100638067 B1 KR 100638067B1 KR 1020017012668 A KR1020017012668 A KR 1020017012668A KR 20017012668 A KR20017012668 A KR 20017012668A KR 100638067 B1 KR100638067 B1 KR 100638067B1
Authority
KR
South Korea
Prior art keywords
processor
request
data
task
coupled
Prior art date
Application number
KR1020017012668A
Other languages
English (en)
Other versions
KR20010105407A (ko
Inventor
요람 예이빈
엘리저 웨이츠
모티 쿠르닉
아비 샬레브
아비 하가이
Original Assignee
프리스케일 세미컨덕터, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 프리스케일 세미컨덕터, 인크. filed Critical 프리스케일 세미컨덕터, 인크.
Publication of KR20010105407A publication Critical patent/KR20010105407A/ko
Application granted granted Critical
Publication of KR100638067B1 publication Critical patent/KR100638067B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/387Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)
  • Bus Control (AREA)
  • Computer And Data Communications (AREA)
  • Small-Scale Networks (AREA)

Abstract

프레임들로 구성된, 고속 다중 프로토콜 데이터 스트림을 처리하는 통신 제어기가 개시된다. 통신 제어기는 2개의 프로세서를 포함하고, 제 2 프로세서는 제 1 프로세서와 하이 레벨 관리 및 프로토콜 기능을 개시하고, 제 1 프로세서는 데이터 스트림 트랜잭션을 처리한다. 제 1 프로세서 및 제 2 프로세서는 2개의 외부버스에 연결된다. 제 1 프로세서는 태스크를 실행함으로써 프레임의 트랜잭션을 처리한다. 제 1 프로세서는 프레임 모두를 처리하였다면, 또는 통신 채널로부터 프레임의 일부를 인출할 필요가 있다면, 제 1 또는 제 외부버스에 연결된, 외부 장치로부터 정보 인출 필요성이 있을 때 태스크 전환을 수행한다.
태스크, 프로토콜, 데이터 스트림, 메모리 뱅크, 인터페이스

Description

고성능 통신 제어기{High performance communication controller}
본 발명은 일반적으로 통신 제어기들, 특히 고성능 통신 제어기에 관한 것이다.
통신 제어기들은 통상적으로 네트워킹 및 원격통신 제품들에서 발견된다. 통신 제어기들은 각종의 다층 통신 프로토콜에 따라 데이터 스트림들을 처리하고, 한 통신 계층에 연관한 데이터 패킷들을 다른 통신 계층에 연관한 데이터 패킷으로 변환한다.
통신 프로세서가 각종의 통신 프로토콜들에 연관된 데이터 스트림을 처리할 때, 통신 제어기는 개별 모드에서 각각의 통신 프로토콜을 처리하고 여러 모드들 간을 스킵한다.
통신 제어기들은 고속의 데이터 스트림들을 처리할 필요가 있다. 또한 통신 제어기는 각종의 다층 통신 프로토콜들에 따라 데이터 스트림들을 처리할 필요가 있다. 고속 데이터 스트림들을 처리하기 위해서, 통신 제어기는 수 백의 MIP, 또는 그 이상의 매우 큰 대역폭을 가질 것을 필요로 한다. 각종의 통신 프로토콜에 따라 데이터를, 특히, 매우 고속으로 송수신 및 처리하기 위해, 통신 제어기는 이의 여러 가지 모드들 간을 신속하게 스킵할 필요가 있다.
도 1은 종래 기술에 따른 종래 통신 채널(1180), 종래 외부 메모리 뱅크(1100) 및 종래 통신 제어기(101)의 단순화한 개략도이다. 종래의 통신 제어기(101)는 모토롤라의 MC68360 칩과 유사하다. 종래의 통신 제어기(101)는 종래의 스케쥴러(1060), 종래의 제 1 직접 메모리 액세스 제어기(즉, 종래 제 1 DMA)(1060), 종래 제 1 메모리 뱅크(1070), 종래 제 1 프로세서(1090), 종래 명령 메모리 뱅크(1130), 종래 제 2 프로세서(1070), 종래 제 1 프로세서(1090), 종래 명령 메모리 뱅크(1130), 종래 제 2 프로세서(1100) 및 종래 인터페이스(1160)로 구성된다. 종래의 통신 제어기(101)는 종래 외부 메모리 뱅크(1110)에 연결된다. 종래 통신 제어기(101)는 이를테면 다른 외부 메모리 뱅크, 호스트 시스템 및 그 외 다른 프로세서들로 제한되는 것은 아니라, 다른 외부 장치들에 연결될 수도 있다. 종래의 통신 제어기(101)는 복수의 외부 메모리 뱅크에 연결될 수 있다. 설명의 편의상, 복수의 메모리 뱅크를 종래 외부 메모리(1110)라 한다.
종래의 스케쥴러(1050)는 입력(1054, 1056) 및 입력/출력(즉, I/O)(1052)을 포함한다. 종래 제 1 DMA(1060)는 입력(1066), 출력(1068), 출력(1068) 및 I/O(1062, 1064)를 포함한다. 종래 제 1 메모리 뱅크(1070)는 I/O(1072, 1074, 1076)을 포함한다. 종래 제 1 프로세서(1090)는 입력(1095), 출력(1096) 및 I/O(1092, 1094, 1098). 종래 제 2 프로세서(1100)은 I/O(1102)를 포함한다. 종래 외부 메모리 뱅크(1110)는 I/O(1116)을 포함한다. 종래 인터페이스(1060)은 I/O(1162, 1165)를 포함한다.
전체를 1140으로 표시한 N 종래 주변 장치(PR(1) 내지 PR(N))은 종래 주변 버스(1112)에 연결된다. 바람직하게, N 종래 주변 장치(1140)은 종래 통신 제어기(101) 내에 배치된다. N 주변 장치(1140)은 종래 통신 제어기(101)을, 전체를 1180으로 표기한 복수의 종래 통신 채널(CC(1) 내지 CC(K))에 연결한다. 종래 통신 채널(1180)은 전체를 1182로 표기한 I/O를 포함한다. 종래의 주변 장치는 전체를 1144로 표기한 I/O를 포함한다. I/O(1182)는 I/O(1144)에 연결된다.
종래 주변 장치(1140)의 I/O(1142), 종래 제 1 메모리 뱅크(1070)의 I/O(1072) 및 종래 스케쥴러(1150)의 입력(1054)는 종래 주변 버스(1112)에 연결된다. 종래 제 1 DMA(106)의 I/O(1062), 종래 외부 메모리 뱅크(1116)의 I/O(1116), 종래 제 2 프로세서(1110)의 I/O(1102), 및 종래 인터페이스(1160)의 I/O(1162)는 단일 버스(1113)에 연결된다. 단일 버스(1113)은 종래 통신 제어기(101)을 각종의 외부 장치에 연결하는 외부 버스이다. 종래 스케쥴러(1050)의 I/O(1052)는 종래 제 1 프로세서(1090)의 I/O(1092)에 연결된다. 종래 제 1 프로세서(109)의 I/O(1094)는 종래 명령 메모리 뱅크(1130)의 I/O(1132)에 연결된다. 종래 제 1 프로세서(90)의 I/O(1095)는 종래 인터페이스(1160)의 I/O(1165)에 연결된다. 종래 제 1 프로세서(90)의 I/O(1098)은 종래 제 1 메모리 뱅크(1070)의 I/O(1076)에 연결된다. 종래 제 1 프로세서(90)의 출력(1096)은 종래 제 1 DMA(100)의 입력(1066)에 연결된다. 종래 제 1 DMA(1060)의 I/O(1064)는 종래 제 1 메모리(1070)의 I/O(1074)에 연결된다.
종래의 인터페이스(1060)은 종래의 제 1 프로세서(1090)에 의해서, 그리고 단일 버스(1113)에 액세스할 수 있는 임의의 장치에 의해 액세스될 수 있는 한 세 트의 레지스터이다.
종래의 주변 장치는 통상적으로 하나 이상의 통신 프로토콜을 처리하도록 되어 있다. 일부 종래의 주변 장치들은 단일 통신 채널에 연결될 수 있고 일부는 복수 통신 채널에 연결될 수 있다. 주변 장치 중 하나는 직렬 통신 제어기(즉, SCC)이며, 이것은 이를테면 IEEE 802.3/이서넷, 하이-레벨/동기 데이터 링크 제어(즉, HDLC/SDLC), 유니버설 비동기 수신기 송신기(즉, UART)와 같은 여러 가지 통신 프로토콜을 처리한다. 또다른 주변 장치는 직렬 관리 제어기(즉, SMC)로서, 이것은 UART를 처리하고 완전히 명료한 기능성을 제공한다. 또다른 주변 장치는 기존의 통신 제어기(101)가 다른 제어 제어기들 및 이를테면 ISDN 장치 및 아날로그 디지털 변환기와 같은 많은 주변 장치들과 데이터를 교환할 수 있게 하는 직렬 주변 인터페이스(즉, SPI)이다. 직렬 통신 프로토콜을 처리하는 주변 장치들은 대개는 이를테면 통신 채널로부터 직렬 데이터 비트 스트림을 수신하여 종래 제 1 프로세서(1090)로 보내도록 비트 스트림을 한 세트의 복수의 비트 워드로 변환하는 시프트 레지스터와 같은 병렬 직렬 변환기로부터 구성된다. 이들 주변 장치는 종래 제 1 프로세서(1090)로부터 복수의 비트 워드를 수신하여 각각의 워드를 단일 비트의 스트림으로 변환하는 이를테면 시프트 레지스터와 같은 병렬 직렬 변환기로 구성된다. 편의상, 각각의 종래의 주변 장치는 상태 머신이다.
종래 통신 프로세서(101)는 매우 다양한 통신 프로토콜에 따라 데이터를 처리할 수 있을 것이다. 종래 통신 제어기(101)는 종래 명령 메모리 뱅크(1130), 종래 제 1 메모리 뱅크(1070) 또는 임의의 다른 메모리 뱅크에 저장될 수 있는 프로 그래머블 루틴에 따라, 각종의 통신 프로토콜을 처리할 수 있는 종래 제 1 프로세서(1090)을 포함한다. 데이터를 처리할 때, 종래 제 1 프로세서(1090)은 종래 제 1 메모리 뱅크(1070) 또는 종래 외부 메모리 뱅크(1110)에 저장되는 한 세트의 파라미터(요청 채널 파라미터, 통신 채널 파라미터)를 사용한다. 편의상, 파라미터는 각각의 통신 프로토콜의 일부이다(즉, 프로토콜). 대개, 파라미터는 이 기술에 공지되어 있다. 예를 들면, 이서넷 프로토콜에 특정한 파라미터는 모토롤라 MC68360 사용자 매뉴얼의 페이지(7-247 내지 7-248)에 기재되어 있고, HDLC 프로토콜에 특정한 파라미터는 7-173 페이지에 기재되어 있고, BISYNC 프로토콜에 특정한 파라미터는 7-203 페이지에 기재되어 있고, 트랜스패런트 프로토콜에 특정한 파라미터는 7-225 페이지에 기재되어 있다. 요청 채널의 상태를 정의하는 요청 채널 파라미터, 및 단일 통신 채널의 상태를 정의하는 통신 채널 파라미터와 같은 각종의 유형의 파라미터가 있다. 예를 들면, SCC와 유사한 요청 채널의 요청 채널 파라미터는 모토롤라의 MC68260 사용자의 매뉴얼의 7-125에 기재되어 있고, 여러 가지 통신 프로토콜의 통신 채널 파라미터는 모토롤라의 사용자의 매뉴얼의 페이지(7-145, 7-173, 7-203, 7-225, 7-247 내지 7-2489)에 기재되어 있다.
종래 제 2 프로세서(1100)는 종래 제 1 프로세서(1090)를 초기화하고 이를테면 바이트-교환, 인캡슐레이션 및 루팅과 같은 하이 레벨 관리 및 프로토콜 기능을 취급한다. 종래 제 1 프로세서(1090)은 모든 데이터 스트림 트랙잭션을 제어한다. 종래 제 1 프로세서(1090)은 종래 스케쥴러(1150)가 트랜잭션 처리 요청을 수신하고 트랜잭션 처리 요구를 종래 제 1 프로세서에 알린 후에 트랜잭션을 처리한다. 일부 종래 주변 장치들로부터 하나 이상의 요청이 있을 경우, 종래 스케쥴러(1050)은 가장 높은 우선순위의 요청을 선택한다.
"태스크(task)"는 데이터 프레임의 단일의 트랜잭션을 제어하는 종래 제 1 프로세서(1090)에 의해 실행되는 한 세트의 명령으로서 정의된다. 보통, 데이터의 트랜잭션은 주변 장치들 중 하나로부터 수신 요청 또는 송신 요청에 의해 개시된다.
도 2는 종래 제 1 메모리 뱅크 부분 및 종래 외부 메모리 뱅크 부분의 개략도이다.
통신 채널에 연관된 데이터 프레임은 버퍼 BK(k)(814)에 저장되며, 버퍼BK(k)(814)의 크기는 프로그램될 수 있다. 데이터 프레임(각각의 통신 프로콜에서 정의된 바와 같은)은 하나 이상의 버퍼들에 저장되고, 단일의 버퍼는 하나 이상의 데이터 프레임으로부터의 데이터는 저장하지 않는다. 적어도 하나의 데이터 프레임은 단일의 통신 채널에 연관된다. 단일 통신 채널에 연관된 데이터를 저장하는 한 세트의 버퍼는 원형 큐를 형성한다. 대부분의 버퍼는 종래 외부 메모리 뱅크(1110) 내에 위치하여 있다. 버퍼 BF(k)(814))는 버퍼 디스크립터 BD(k)(812)에 의해 참조되고, 버퍼 디스크립터를 통칭으로 288로 표기하였다. 대부분의 버퍼 디스크립터는 종래 제 1 메모리 뱅크(1070) 내에 저장되며 일부는 종래 외부 메모리 뱅크(1110)에 저장된다.
편의상, 버퍼 디스크립터 BD(k)(812)는 포인터 필드(즉, PT(k))(810), 상태 및 제어 필드(즉, SW(k))(806) 및 길이 필드(즉, LW(k))(808)로 구성된다. 버퍼 BF(k)(814)의 시작 부분은 PT(k)(810)에 의해 참조된다. LW(k)(808)은 버퍼 BF(k)(814)의 길이를 결정한다. SW(k)(806)은 종래 제 1 및 종래 제 2 프로세서(1090 및 1100) 중 어느 것이 버퍼 BF(k)(812)를 처리 및/또는 액세스할 수 있는가를 판정하는 F/S 비트 FSB 비트 FSB(k)(802)로 구성된다. 종래 제 1 프로세서(109)는 BF(k)(812)에 저장된 모든 데이터의 송신을 종료하였을 때, 또는 데이터 프레임의 수신을 종료하였을 EO, 또는 수신된 데이터가 BF(k)(812)을 채웠을 때 FSB(k)를 셋한다. 종래 제 2 프로세서(1100)는 FSB(k)(802)가 BF(k)(814)를 통신 채널에 송신할 데이터로 채웠을 때, 또는 BK(k)(814) 내에 저장된, 통신 채널로부터 수신되어 있는 데이터의 독출을 마쳤을 때 FSB(k)(802)을 리셋(reset)한다. SW(k)(806)은 BD(k)(814)가 통신 채널에 관계된 마지막 버퍼 디스크립터인지 여부를 나타내는 랩 필드(wrap field)(즉, WB(k))(804)로 구성된다. PT(k)(810)은 BK(k)(814)의 시작 부분을 가리킨다. 버퍼는 복수의 메모리 워드로 구성되기 때문에, 임시 카운터 TMP(k)(816)은 CC(k)로부터 수신된 새로운 데이터 워드가 저장되어 있는, 또는 CC(k)에 송신될 데이터가 저장되어 있는 어드레스를 가리킨다. 데이터 워드가 저장/송신된 후 TMP(k)(816)이 갱신된다.
각각의 버퍼 디스크립터 BD(k)(814)는 디스크립터 포인터 DP(k)(818)에 의해 참조된다. 디스크립터 포인터는 종래 제 1 메모리 뱅크(1070) 내에 저장된다.
종래 제 1 프로세서(1090)는 새로운 버퍼 디스크립터 BD(k+1)를 인출하지 않으며, 버퍼 BK(k)(814) 처리를 종료할 때까지는 이 버퍼 디스크립터에 연관된 버퍼 BF(k+1) 내에 저장된 데이터를 처리하지 않는다.
데이터의 송신 및 수신은 요청 채널 파라미터, 통신 채널 파라미터, TMP(k)(816), DP(k)(818), BD(k)(812)와 BF(k)(814) 내에 저장된 데이터(즉, 정보)를 인출하는 것을 포함한다. 외부 메모리로부터 정보를 인출할 필요가 있다면, 종래 제 1 프로세서(109)는 종래 제 1 DMA(1060)을 활성화시키고 정보를 인출할 때까지 기다린다. 정보를 인출한 후에, 종래 제 1 프로세서(1090)는 종래 외부 메모리(1100)로부터 정보를 인출하는 것을 포함한 태스크를 계속 수행한다.
종래 제 1 프로세서(1090) 및 종래 제 2 프로세서(1010)은 단일 외부 버스를 공유하므로, 종래 통신 제어기(101)의 주파수 및 사용가능 밴드폭이 제한된다.
종래의 제 1 프로세서(1090)는 이를테면 외부 메모리로부터 정보를 인출하는 것과 같은 시간 소비적인 동작이 종료되는 동안 아무 것도 하지 않고 있기 때문에 이의 빈도가 감소되었다.
종래 통신 제어기(101)는 필요한 대역폭을 갖지 않고, 태스크들 간에 스킵할 수 없고, 고속의 데이터 스트림, 특히 각종의 통신 프로토콜에 연관된 고속 데이터 스트림을 처리할 수 없었다.
고속 데이터 스트림, 특히 각종의 통신 프로토콜에 연관된 고속 데이터 스트림을 처리할 수 있는 향상된 고성능 통신 제어기의 필요성이 있다.
도 1은 종래 기술에 따른 종래 통신 채널, 종래 외부 메모리 및 종래 통신 제어기의 단순화한 개략도.
도 2는 종래 기술에 따른 종래 제 1 메모리 뱅크 부분 및 종래 외부 메모리 뱅크 부분의 개략도.
도 3은 본 발명의 바람직한 실시예에 따른 통신 채널, 외부 메모리 뱅크 및 통신 제어기의 개략도.
도 4는 본 발명의 바람직한 실시예에 따른 제 1 직접 메모리 액세스 제어기의 제어 유닛의 개략도.
도 5는 본 발명의 바람직한 실시예에 따른 제 1 직접 액세스 메모리 제어기의 버퍼부의 개략도.
도 6은 본 발명의 실시예에 따른 인에이블 유닛, 스케쥴러 및 마스킹 로직의 개략도.
도 7은 본 발명의 바람직한 실시예에 따른 스케쥴러의 개략도.
도 8은 본 발명의 바람직한 실시예에 따른 블록 전송 머신의 개략도.
도 9는 본 발명의 바람직한 실시예에 따른 제 1 메모리 뱅크의 개략도.
도 10은 본 발명의 바람직한 실시예에 따른 제 1 메모리 뱅크 내의 메모리 뱅크들 중 하나의 메모리 뱅크의 개략도.
도 11은 본 발명의 바람직한 실시예에 따른 태스크들을 실행하고 태스크 전환을 수행하기 위한 방법의 바람직한 실시예를 도시하는 흐름도.
도 12는 반 발명의 바람직한 실시예에 따른 수신 또는 송신 요청에 의해 개시된 태스크를 실행하기 이한 방법의 바람직한 실시예를 도시하는 흐름도.
도 13은 본 발명의 바람직한 실시예에 따른 다양한 수신/송신 요청들에 대한 제 1 프로세서의 응답을 도시하는 시간도.
도 14는 본 발명의 바람직한 실시예에 다른 다양한 수신/송신 요청들에 대한 제 1 프로세서의 응답을 도시하는 시간도.
본 발명은 추가된 청구항들에서 상세한 사항을 나타내고, 본 발명의 다른 특징들은 첨부한 도면과 연관하여 취해진 다음의 상세한 설명에 의해 개시된다.
통상적으로, 본 발명의 일 면은 고속 데이터 스트림들, 특히, 각종의 통신 프로토콜들에 연관된 고속 데이터 스트림들을 처리하는 능력이다.
사용된 특정의 용어들 및 표현들과 상세한 설명 및 첨부한 도면에 기술된 특정한 구조 및 동작의 상세는 단지 예시 목적의 것으로 첨부한 청구범위에 기술된 본 발명의 범위를 제한하는 것으로 의도된 것이 아님에 유의해야 한다.
도 3은 본 발명의 바람직한 실시예에 따른, 통신 채널들(180), 외부 메모리 뱅크(110) 및 통신 제어기(111)의 개략도이다. 점선(119)로 나타낸 바와 같이, 통신 제어기(111)는 스케쥴러(50), 제 1 DMA(60), 제 2 DMA(160), 제 1 메모리 뱅크(70), 제 1 프로세서(90), 명령 메모리 뱅크(130), 제 2 프로세서(100) 및 전체적으로 140으로 표기한 복수의 주변 장치들을 포함한다. 통신 제어기(111)는 2개의 외부버스들, 즉, 제 1 버스(113) 및 제 2 버스(114)에 연결된다. 통신 제어기는 또한 외부 메모리 뱅크(110) 및 전체적으로 180으로 표기한 복수의 통신 채널들에 연결된다. 편의상, 복수의 통신 채널들(180)은 복수의 주변 장치들(140)에 연결된다. 통신 제어기(111)는 또한 다른 외부 메모리 뱅크, 호스트 시스템 및 그 외 다른 프로세서들과 같은 것들로 한정되는 것은 아니지만, 그 외의 다른 외부 장치들에 연결될 수도 있다. 통신 제어기는 또한 브리지(120), 인터페이스(160) 및 블록 전송 머신(즉, BTM(block transfer machine))(40)을 포함할 수 있다. 통신 제어기(111)는 복수의 외부 메모리 뱅크들에 연결될 수 있다. 설명의 편의상, 복수의 메모리 뱅크들을 외부 매모리 뱅크(110)라 칭한다.
스케쥴러(50)는 입력들(561 내지 568) 및 I/O(52)를 포함한다. 제 1 DMA(60)는 출력(67) 및 I/O(62, 54, 65)를 포함한다. 제 2 DMA(160)는 제 1 DMA(60)와 유사하며, 출력(167) 및 I/O(162, 164, 165)를 포함한다. 제 1 메모리 뱅크는 I/O(72, 74, 76, 78)를 포함한다. 제 1 프로세서(90)는 I/O(92, 93, 94, 95, 96, 97, 98)(설명의 편의상 I/O(97)가 도 8에 도시됨)를 포함한다. 제 2 프로세서(100)는 I/O(102, 104)를 포함한다. 외부 메모리 뱅크(110)는 I/O(116, 118)을 포함한다. 명령 메모리 뱅크(130)은 I/O(132)를 포함한다. BTM(40)은 I/O(43, 45, 47)(설명의 편의상 I/O(46)가 도 8에 도시됨)을 포함한다. 브리지(120)는 I/O(124, 122)를 포함한다. 인터페이스(160)는 I/O(162, 164)를 포함한다. 140으로 일괄 표기한 M개의 주변 장치들 PR(1) 내지 PR(M)(1401 내지 1408)은 일괄하여 144로 표기한 M개의 I/O와, 142로 일괄 표기한 M개의 I/O를 포함한다. 바람직하게, M개의 주변 장치(140)는 통신 제어기(111) 내에 배치된다. 복수(M개) 주변 장치들(140)은 통신 제어기(111)를 I/O(144, 182)를 통해 180으로 일괄 표기된 복수(K개) 통신 채널들 CC(1) 내지 CC(K)(1801 내지 1808)에 연결한다.
주변 장치들(140)의 I/O(142), BTM(40)의 I/O(43) 및 스케쥴러(50)의 입력들(561 내지 568)은 주변 버스(112)에 연결된다. 제 2 DMA(160)의 I/O(162), 외부 메모리 뱅크(110)의 I/O(118), 제 2 프로세서(110)의 I/O(104) 및 브리지의 I/O(162)는 제 2 버스(114)에 연결된다. 제 1 DMA(60)의 I/O(62), 외부 메모리 뱅크(110)의 I/O(116) 및 브리지(120)의 I/O(122)는 제 1 버스(113)에 연결된다. 제 1 메모리 뱅크(70)의 I/O(72)는 BTM(40)의 I/O(45)에 연결된다. 제 1 메모리 뱅크(70)의 I/O(74)는 제 2 DMA(160)의 I/O(164)에 연결된다. 제 1 메모리 뱅크(70)의 I/O(78)는 제 1 DMA(60)의 I/O(64)에 연결된다. 제 1 메모리 뱅크(70)의 I/O(76)는 제 1 프로세서(90)의 I/O(98)에 연결된다. 제 1 프로세서(90)의 I/O(93)는 제 2 DMA(160)의 I/O(165)에 연결된다. 제 1 프로세서(90)의 I/O(96)는 제 1 DMA(60)의 I/O(65)에 연결된다. 제 1 프로세서(90)의 I/O(94)는 명령 메모리 뱅크(130)의 I/O(132)에 연결된다. 제 1 프로세서(90)의 I/O(95)는 인터페이스(160)의 I/O(164)에 연결된다. 제 1 프로세서(90)의 I/O(92)는 스케쥴러(50)의 I/O(52)에 연결된다. 제 2 프로세서(100)의 I/O(102)는 브리지(120)의 I/O(124)에 연결된다. 제 2 DMA(160)의 I/O(167) 및 제 1 DMA(60)의 I/O(67)는 마스킹 로직(masking logic; 도 6에 도시됨)을 통해 스케쥴러의 입력(561 내지 568)에 연결된다.
브리지(120)는 제 2 프로세서(100)를 제 1 버스(113) 인터페이스시키는데 사용된다. 인터페이스(160)는 레지스터로 구성되고, 제 1 버스(100)를 통해 제 2 프로세서(100)와 같은 각종의 유닛들에 제 1 프로세서(90)을 연결하는데 사용된다. 인터페이스(160)는 제 1 프로세서(90)에 명령들을 기록하는데 사용될 수 있다.
주변 장치들(140) 중 일부 주변 장치들은 통신 채널들(180) 중 하나 이상의 통신 채널들에 연결되는 버퍼 또는 큐로 구성된다. 편의상, 주변 장치는 보다 복잡하고 보통 각각의 주변 장치는 하나 이상의 통신 프로토콜을 처리하도록 되어 있다. 일부 주변 장치들은 단일 통신 채널에 연결될 수 있고 일부 주변 장치들은 복수의 통신 채널들에 연결될 수 있다. 예를 들어, 본 발명의 범위를 제한하지 않고, HDLC 프로토콜들을 처리하는 주변 장치가 256개의 통신 채널들에 연결될 수 있다.
예를 들어, 본 발명의 범위를 제한하지 않고, 하나의 주변 장치는 모토롤라의 MC68360 SCC와 유사하지만, 비동기 전송 모드(Asynchronous Transfer Mode) 통신 프로토콜을 처리할 수 있다. 또다른 주변 장치는 모토롤라의 MC68360 SMC와 유사하다. 또다른 주변 장치는 모토롤라의 MC68360 SPI와 유사하다. 또다른 주변 장치는 통신 제어기(111)가 ATM 프로토콜들을 처리할 수 있도록 하며, 또다른 주변 장치는 통신 제어기(111)가 고속 이더넷 프로토콜(Fast Ethernet protocol)을 처리할 수 있도록 한다. 직렬 통신 프로토콜들을 다루는 주변 장치들은 보통은 직렬 데이터 비트 스트림을 통신 채널로부터 수신하여 비트 스트림을 제 1 프로세서(90)로 전송될 한 세트의 복수의 비트 워드들로 변환하는 시프트 레지스터와 같은 병렬-직렬 변환기들을 포함한다. 이들 주변 장치들은 제 1 프로세서(90)로부터 복수의 비트 워드들을 수신하여 각각의 워드를 단일 비트의 스트림으로 변환하는 시프트 레지스터들과 같은 병렬-직렬 변환기들을 더 포함한다. 편의상, 각각의 주변 장치는 적어도 하나의 통신 프로토콜에 맞게 한 상태 머신을 포함한다. 상태 머신 은 원 데이터 비트 스트림을 통신 프로토콜과 호환되는 비트 스트림으로 변환한다.
통신 프로세서(111)는 매우 다양한 통신 프로토콜들에 따라 데이터를 처리한다. 통신 제어기(111)는 명령 메모리 뱅크(130), 제 1 메모리 뱅크(70) 또는 임의의 다른 메모리 뱅크에 저장될 수 있는 프로그램가능한 루틴들에 따라, 각종 통신 프로토콜들을 처리할 수 있는 제 1 프로세서(90)를 포함한다. 데이터를 처리할 때, 제 1 프로세서(90)는 제 1 메모리 뱅크(70) 또는 외부 메모리 뱅크(110)에 저장되는 한 세트의 파라미터들(요청 채널 파라미터들, 통신 채널 파라미터들)을 사용한다. 편의상, 파라미터들은 각각의 통신 프로토콜(즉, 프로토콜)의 일부이다. 일반적으로, 파라미터들은 이 기술에 공지되어 있다. 예를 들어, 본 발명의 범위를 제한하지 않고, 이더넷 프로토콜에 특정한 파라미터들은 모토롤라 MC68360 사용자 매뉴얼의 7-247, 7-248 페이지에 기재되어 있고, UART 프로토콜에 특정한 파라미터들은 7-145 페이지에 기재되어 있고, HDLC 프로토콜에 특정한 파라미터는 7-173 페이지에 기재되어 있고, BISYNC 프로토콜에 특정한 파라미터는 7-203 페이지에 기재되어 있고, 트랜스패런트 프로토콜(transparent protocol)에 특정한 파라미터들은 7-225 페이지에 기재되어 있다. 요청 채널의 상태를 정의하는 요청 채널 파라미터들, 및 단일 통신 채널의 상태를 정의하는 통신 채널 파라미터들과 같은 각종 유형의 파라미터들이 있다. 예를 들면, SCC와 유사한 요청 채널의 요청 채널 파라미터들은 모토롤라의 MC68260 사용자 매뉴얼의 7-125 페이지에 기재되어 있고, 여러 가지 통신 프로토콜들의 통신 채널 파라미터들은 모토롤라의 사용자 매뉴얼의 페이지(7-145, 7-173, 7-203, 7-225, 7-247, 7-248)에 기재되어 있다.
제 2 프로세서(100)는 제 1 프로세서(90)를 초기화하고 바이트-교환(byte-swapping), 인캡슐레이션(encapsulation) 및 라우팅(routing)과 같은 하이 레벨 관리 및 프로토콜 기능들을 취급한다. 편의상, 제 2 프로세서는 모토롤라 MC68360 칩의 CPU32+과 유사하다(모토롤라의 MC68360 칩 사용자 매뉴얼에 기재되어 있음). 제 1 프로세서(90)는 데이터 스트림 트랜잭션들을 제어한다.
"태스크(task)"는 프레임의 트랜잭션을 제어하는 제 1 프로세서(90)에 의해 실행되는 한 세트의 명령으로서 정의된다. 보통, 프레임의 트랜잭션은 주변 장치들 중 하나로부터의 수신 요청 또는 송신 요청에 의해 개시된다.
편의상, 주변 장치는 데이터를 수신하거나 데이터를 송신할 수 있다. 설명의 편의상, 각각의 주변 장치(140)는 2개의 요청 채널들, 즉, 데이터를 송신하고 송신 요청을 보내는 송신 요청 채널과 데이터를 수신하고 수신 요청을 보내는 수신 요청 채널을 포함하는 것으로 간주된다. 설명의 편의상, z번째 요청 채널을 RC(z)로서 표기하고, z 555는 1 내지 2M의 값을 갖는 지수이다. z 555는 z번째 요청 채널이 수신 또는 송신 요청을 보냈음을 표시한다.
편의상, 통신 제어기(111)에 의해 처리된 데이터는 외부 메모리 뱅크(110) 내에 저장되고, 처리는 버퍼 BK(k), 버퍼 디스크립터 BD(k), 디스크립터 포인터 DP(k), 포인터 필드 PT(k), 임시 포인터 TMP(k), 상태 및 제어 필드 SCW(k), 필드 LW(k), 제 1 및 제 2 프로세서들(90, 100) 중 어느 것이 버퍼 BF(k)를 처리 및/또는 액세스할 수 있는지 판정하는 F/S 비트 FSB(k)의 사용을 포함한다. 이들 BF(k), BD(k), DP(k), PT(k), TMP(k), SCW(k), LW(k) 및 FSB(k)는 종래 통신 프로세서(101)의 버퍼 BF(k), 버퍼 디스크립터 BD(k), 디스크립터 포인터 DP(k), 포인터 필드 PT(k), 상태 및 제어 필드 SCW(k), 랩 필드 WB(k), 길이 필드 LW(k), 및 F/S 비트 FSB(k)와 유사하다. 제 1 프로세서(90)는 BF(k)에 저장된 모든 데이터의 송신을 종료하였을 때, 또는 데이터 프레임의 수신을 종료하였을 때, 또는 수신된 데이터가 BF(k)을 채웠을 때 FSB(k)를 셋한다. 제 2 프로세서(110)은 FSB(k)가 BF(k)를 통신 채널에 송신될 데이터로 채웠을 때, 또는 BK(k) 내에 저장된 통신 채널로부터 수신된 데이터의 판독을 종료했을 때 FSB(k)를 리셋한다. PT(k)는 BK(k)의 시작 부분을 가리킨다.
데이터 워드가 저장/송신된 후에 TMP(k)가 갱신된다. 갱신된 TMP(k)는 제 1 프로세서(90)가 태스크 전환을 실행하고/그에 따라 태스크 수행을 시작할 때 제 1 메모리 뱅크(70)로/로부터 보내진다.
제 1 프로세서(90)는 보통은 새로운 버퍼 디스크립터 BD(k+1)를 인출(fetch)하지 않으며, 전체 현재의 버퍼 BF(k)의 처리를 종료할 때까지, 이 버퍼 디스크립터에 연관된 버퍼 BF(k+1) 내에 저장된 데이터를 처리한다.
도 10에 보다 상세히 설명된 바와 같이, 데이터 송신 또는 수신은 요청 채널 파라미터들, 통신 채널 파라미터들, TMP(k), DP(k), BD(k) 및 BF(k) 내에 저장된 데이터 인출을 포함한다. 상기 인출 중 임의의 인출 동안, DMA 동작을 수행할 필요가 있다면, 제 1 프로세서(90)는 DMA 요청이 제 1 버스(113)로의 액세스를 필요할 경우에는, 제 1 DMA(60)을 활성화시키고, DMA 요청이 제 2 버스(114)로의 액세스를 필요로할 경우에는, 제 2 DMA(160)를 활성화시킨다.
도 4는 본 발명의 바람직한 실시예에 따른 제 1 DMA(60)의 제어 유닛의 개략도이다. 제 1 DMA(60)의 제어 유닛은 제 2 DMA(160)의 제어 유닛와 유사하다. 편의상, 제 1 DMA(60)의 제어 유닛은 DMA 요청 큐(즉, 큐)(62), 및 인에이블 유닛(64)을 포함한다. 후술하는 바와 같이, 큐(62)는 복수의 DMA 요청을 저장할 수 있다. 인에이블 유닛(64)은 요청 채널들로부터 스케쥴러(50)로 보내진 송신 요청 또는 수신 요청을 마스크한다. 바람직하게, 제 1 DMA(60)의 제어 유닛은 큐(62), 인에이블 유닛(64), 요청 바이패스 레지스터(즉, 바이패스 레지스터; 68), 인에이블 유닛(64), 입력 멀티플렉서(즉, DI_MUX)(66), 출력 멀티플렉서(즉, DO_MUX)(69)를 포함한다. DI_MUX(66)는 입력(662, 668), 출력(666)을 포함한다. 큐(62)는 입력(626), 출력(628) 및 일괄하여 624로 표기한 복수의 N개의 출력을 포함한다. 바이패스 레지스터(68)는 입력(682) 및 출력(684, 686)을 포함한다. DO_MUX(69)는 입력(692, 694, 696) 및 출력(698)을 포함한다. 인에이블 유닛(64)은 646으로 표기된 복수의 N개의 입력을 갖고 있으며, 제 1 DMA(60)의 출력(67)에 연결된 입력(646) 및 2M 비트 출력(676)을 갖고 있다. DI_MUX(66)의 입력(662, 668)은 제 1 DMA(60)의 입력(65)에 연결된다.
큐(62)는 N 메모리 워드(621-628)를 포함한다. 편의상, 각각의 메모리 워드(621-628)는 2개의 부분(6211-6281 및 6212-6282)를 포함한다. 제 1 부분(6211-6281)은 어느 요청 채널이 직접 액세스 메모리 요청(즉, DMA 요청)에 연관되는가를 나타내는 z 555를 저장하기 위한 것이다. 제 2 부분(6212-6282)은 DMA 요청을 저장하기 위한 것이다. DMA(60)는 메모리 내 제 1 위치로부터 메모리 내 제 2 위치로 한 블록의 정보를 이동 및/또는 복사한다. 편의상, DMA 요청은 소스, 목적지, 제 1 DMA(60)에 의해 전송되는 블록의 크기를 포함한다.
바이패스 레지스터(68)는 2개의 부분을 포함한다. 제 1 부분(681)는 z 555를 저장하기 위한 것이고, 제 2 부분(682)은 DMA 요청을 저장하기 위한 것이다.
DI_MUX(66)은 입력(664)을 통해 DMA 요청 및 z 555를 수신한다. DI_MUX(66)는 DMA 요청 및 z 555를 바이패스 레지스터(68) 또는 큐(62)에 기록할 것인가를 판정하는 BYQ 신호(668')를 입력(668)을 통해 수신한다.
바이패스 레지스터(68)가 비어있지 않으면, DO_MUX(69)는 입력(696)을 선택하도록 하며 바이패스 레지스터(68)에 저장되어 있는 DMA 요청을 출력하도록 하는 제어 신호를 입력(692)을 통해 수신한다. 또는, DO_MUX(69)는 입력(694)을 선택하고, 제 2 부분(6212)에 저장되는 DMA 요청을 출력한다.
송신 요청은 태스크를 개시한다. 수신 요청은 태스크를 개시한다.
제 1 부분(6211 내지 6281)은 큐(62)의 출력(624)를 통해, 인에이블 유닛(64)의 입력(646)에 연결된다. 제 1 프로세서(70)가 RC(z)에 연관된 DMA 요청을 제 1 DMA(60)로 보낼 때, RC(z)의 송신 또는 수신 요청은 디스에이블된다. RC(z)에 관계된 모든 DMA 요청이 수행된 후에, 이의 수신 또는 송신 요청이 인에이블된다. 보통, 수신 또는 송신 요청은 요청에 연관된 태스크가 종료될 때 디스에이블된다.
인에이블 유닛(64)은 DMA 큐(62) 내에 저장되는 DMA 요청에 연관된 요청 채널의 송신 또는 수신 요청을 마스크한다. 인에이블 유닛(64)은 대응하는 z 555를 가진 인에이블 신호를 출력(648)을 통해 스케쥴러(50)로 보낼 수 있다. 편의상, 출력(648)은 2M 요청 채널 각각에 1비트씩 2M 비트를 가지며, 인에이블 유닛(64)은 1비트 신호를 RC(z)에 연관된, 출력(648)의 제 n 비트로 보낸다.
도 5는 본 발명의 바람직할 실시예에 따른 제 1 DMA(60)의 버퍼부의 개략도이다. 제 1 DMA(60)의 버퍼부는 제 2 DMA(160)의 버퍼부와 유사하다. 버퍼부는 제 1 송신(즉, TX) 버퍼(612), 제 2 송신(즉, TX) 버퍼(614), 제 1 수신(즉, RX) 버퍼(616), 제 2 수신(즉, RX) 버퍼(618), 송신 제어 유닛(610), 수신 제어 유닛(615)을 포함한다.
제 1 송신 버퍼(612)는 입력(6126, 6124) 및 출력(6122)를 포함한다. 제 2 수신 버퍼(614)는 입력(6146, 6144) 및 출력(6142)를 포함한다. 송신 제어 유닛(610)은 입력(6108) 및 출력(6104, 6102)를 포함한다. 수신 제어 유닛(615)은 입력(6158) 및 출력(6154, 6105)를 포함한다. 제 1 수신 버퍼(616)는 입력(6162, 6164) 및 출력(6166)을 포함한다. 제 2 수신 버퍼(618)는 입력(6182, 6184) 및 출력(6186)을 포함한다.
제 1 송신 버퍼(612)의 출력(6122) 및 제 1 수신 버퍼(616)의 입력(6162)은 제 1 DMA(60)의 I/O(64, 62)에 연결된다. 제 2 송신 버퍼(614)의 입력(6146) 및 제 1 수신 버퍼(618)의 출력(6186)은 제 1 버스(113)에 연결된다. 제 1 송신 버퍼(612)의 입력(6126)은 제 2 송신 버퍼(614)의 출력(6142)에 연결된다. 제 1 수신 버퍼(616)의 출력(6166)은 제 2 수신 버퍼(618)의 입력(6182)에 연결된다. DO_MUX(69)의 출력(898)은 수신 제어 유닛(615) 및 송신 제어 유닛(610)의 입력(6158, 6108)에 각각 연결된다. 송신 제어 유닛(610)의 출력(6102)은 제 1 송신 버퍼(612)의 입력(6124)에 연결된다. 수신 제어 유닛(615)의 출력(6152)은 제 1 수신 버퍼(616)의 입력(6164)에 연결된다. 송신 제어 유닛(610)의 출력(6104)은 제 2 송신 버퍼(610)의 입력(6144)에 연결된다. 수신 제어 유닛(615)의 출력(6154)은 제 2 수신 버퍼(618)의 입력(6184)에 연결된다.
송신 제어 유닛(610)은 제 1 메모리 뱅크(70)의 I/O(78), 제 1 프로세서(90)의 I/O(96) 중 어느 하나로부터 I/O(64, 96)를 통해 제 1 버스(113)로 데이터를 보내는 것을 포함하는, DO_MUX(69)로부터 보내진 DMA 명령을 저장하는 레지스터를 포함한다. 송신 제어 유닛(610)은 제 1 송신 버퍼(612)를 활성화시켜 I/O(64 또는 96)에 데이터를 보내고, 제 2 송신 버퍼(614)가 제 1 버스(113)로부터 제 2 송신 버퍼(614)로부터의 데이터를 판독하도록 동작시킨다. 송신 제어 유닛은 제어 신호들을 제 1 및 제 2 송신 버퍼(612, 614)로 보내어 제 2 송신 버퍼(614)로부터의 데이터를 제 1 송신 버퍼(612)로 보낸다. 송신 제어 유닛은 z 555를 조정하기 위한 필드(6102)를 포함한다. 바람직하게, 제 1 및 제 2 송신 버퍼는 독립적으로 동작할 수 있다.
수신 제어 유닛(615)은 제 1 메모리 뱅크(70)의 I/O(78) 또는 제 1 프로세서(90)의 I/O(96) 중 어느 하나로부터 I/O(64, 96)를 통해 제 1 버스(113)로데이터를 보내는 것을 포함하는, DO_MUX(69)로부터 보내진 DMA 명령을 저장하는 레지스터를 포함한다. 수신 제어 유닛(615)은 제 1 수신 버퍼(616)를 활성화시켜 I/O(64 또는 96)로부터의 데이터를 보내고, 제 2 수신 버퍼(618)를 활성화시켜 제 2 수신 버퍼(618)로부터의 데이터를 제 1 버스(113)로 보낸다. 수신 제어 유닛(615)은 제어 신호들을 제 1 및 제 2 수신 버퍼(616, 618)로 보내어 제 1 수신 버퍼(616)로부터의 데이터를 제 2 수신 버퍼(618)로 보낸다. 수신 제어 유닛(615)은 z 555를 조정하기 위한 필드(6502)를 포함한다. 바람직하게, 제 1 및 제 2 송신 버퍼(616, 618)는 독립적으로 동작할 수 있다.
편의상, 인에이블 유닛(64)은 큐(62)의 제 1 부분(6211 내지 6281, 681) 및 그에 따른 바이패스 레지스터(682)의 내용을 체크하지 않는다. 수신 및 송신부(615, 610)의 필드(6502, 6102)의 내용은 제 1 부분(6211 내지 6281, 628)의 내용과 비교되고, 일치한 것이 없으면, 필드(6502, 6102)의 내용은 인에이블 유닛(64)으로 보내진다.
도 6은 인에이블 유닛(64), 스케쥴러(50) 및 마스킹 로직(80)의 개략도이다. 마스킹 로직은 복수의 AND 로직 게이트를 포함한다. 편의상, 이 설명은 복수의 AND 로직 게이트 중에서 4개의 3-입력 로직 AND 게이트(81 내지 84)에 관한 것이다. 제 1 게이트(81)는 입력(812, 814, 818) 및 출력(816)을 포함한다. 제 2 게이트(82)는 입력(822, 824, 828) 및 출력(826)을 포함한다. 제 3 게이트(83)는 입력(832, 834, 838) 및 출력(836)을 포함한다. 제 4 게이트(84)는 입력(842, 844, 848) 및 출력(846)을 포함한다.
인에이블 유닛(64)의 출력(671)은 제 1 게이트(81)의 입력(812)에 연결된다. 인에이블 유닛(64)의 출력(672)은 제 2 게이트(82)의 입력(822)에 연결된다. 인에이블 유닛(64)의 출력(673)은 게이트(83)의 입력(832)에 연결된다. 인에이블 유닛(64)의 출력(674)는 제 4 게이트(84)의 입력(842)에 연결된다. 인에이블 유닛(164)의 출력(1671)은 제 1 게이트(81)의 입력(818)에 연결된다. 인에이블 유닛(164)의 출력(1672)은 제 2 게이트(82)의 입력(828)에 연결된다. 인에이블 유닛(164)의 출력(1673)은 게이트(83)의 입력(838)에 연결된다. 인에이블 유닛(164)의 출력(1674)은 제 4 게이트(84)의 입력(848)에 연결된다. 제 4 게이트(84)의 출력(846)은 스케쥴러(50)의 입력(564)에 연결된다. 제 3 게이트(83)의 출력(836)은 스케쥴러(50)의 입력(563)에 연결된다. 제 2 게이트(82)의 출력(826)은 스케쥴러(50)의 입력(562)에 연결된다. 제 1 게이트(81)의 출력(816)은 스케줄러(50)의 입력(561)에 연결된다. 제 4 게이트(84)의 입력(844)은 라인(14012)에 연결되어 요청 채널로부터 수신 또는 송신 요청을 수신한다. 제 3 게이트(83)의 입력(834)은 라인(l4012)에 연결되어 다른 요청 채널로부터 수신 또는 송신 요청을 수신한다. 제 2 게이트(82)의 입력(824)은 라인(14032)에 연결되어 요청 채널로부터 수신 또는 송신 요청을 수신한다. 제 1 게이트(81)의 입력(814)은 라인(14042)에 연결되어 요청 채널로부터 수신 또는 송신 요청을 수신한다.
제 1 DMA(60) 또는 제 2 DMA(160)가 수신 채널에 관계된 DMA 요청을 수신할 때, 그 요청 채널로부터 수신 또는 송신 요청을 수신하는 게이트에 디스에이블 신호(로우 레벨 신호)를 보내고, 인에이블 신호는 그 채널로부터 들어오는 요청을 마스크한다. 제 1 DMA(60) 또는 제 2 DMA가 요청 채널에 관계된 요청들을 갖고 있지 않을 때 이들은 요청 채널에 연결된 게이트에 인에이블 신호를 보낸다. 제 1 및 제 2 DMA(60, 160) 모두가 인에이블 신호를 보낸다면, 요청 채널의 수신 또는 송신 요청이 스케쥴러(50)에 도달할 수 있다.
예를 들면, 제 1 게이트(81)는 제 1 요청 채널(RZ(1))에 연결된다. 제 1 요청 채널은 라인(14042)을 통해 송신 요청(하이 레벨의 신호)을 보낸다. 제 1 또는 제 2 DMA(60, 160) 어느 하나에 있어서 제 1 요청 채널(RZ(1))에 관계된 DMA 요청들은 없다. 제 1 및 제 2 DMA(60, 160) 모두는 하이 레벨 신호를 제 1 게이트(81)의 입력(812, 818)에 보낸다. 스케쥴러(50)는 제 1 요청 채널(RZ(1))로부터 입력(561)을 통해 송신 요청을 수신하며, 송신 요청을 처리하기 위해 제 1 태스크(T(1))의 실행을 제 1 프로세서(90)가 시작할 수 있도록 한다. 제 1 태스크(T(1))가 DMA 요청을 필요로 할 때, 제 1 프로세서(90)는 제 1 또는 제 2 DMA(60 또는 160)에 DMA 요청을 보낸다. 설명의 편의상, 제 1 프로세서(90)는 제 1 DMA(60)에 DMA 요청을 보내는 것으로 가정한다. 제 1 DMA(60)가 DMA 요청의 수행을 종료하지 않을 때까지, 인에이블 유닛(64)은 로우 레벨의 신호를 제 1 게이트(81)의 입력(812)에 보내어, 제 1 게이트의 출력 신호를 강제로 로우가 되도록 하고, 이에 따라 제 1 요청 채널(RZ(1))의 송신 요청을 마스킹한다.
디스에이블 신호는 제 1 프로세서(90)로부터 더 들어 올 수 있다. 디스에이블 신호는 제 1 프로세서(90)가 DMA 요청을 보낼 때 보내진다. 제 1 프로세서(90) 및 인에이블 유닛(64)은 플립플롭에 연결되는 한편, 제 1 프로세서는 플립플롭의 리셋 입력에 연결되고, 인에이블 유닛(64)은 플립플롭의 셋 입력에 연결된다. 플립플롭의 출력은 전술한 바와 같이 AND 로직 게이트의 입력에 연결된다. 제 1 프 로세서는 제 2 DMA(160)의 인에이블 유닛(164)에도 연결된다.
도 7은 본 발명의 바람직한 실시예에 따른 스케쥴러(50)의 개략도이다. 스케쥴러(50)는 요청 선택기(56), 스택 포인터 입력 멀티플렉서(즉, sp 입력 mux)(52), 스택 포인터 출력 멀티플렉서(즉, sp 출력 mux)(58), 및 540으로 일괄 표기된 2M 스택 포인터 레지스터(1sp_reg 내지 2Msp_reg(541 내지 548))를 포함한다.
스케쥴러(50)는 2M 스택 포인터까지의 세트를 저장한다. 스택 포인터는 태스크 T(z)의 일부가 명령 I(z, r)의 어드레스이며, r은 정수이고 z는 1 내지 2M의 값을 갖는다. 바람직하게, 태스크 T(z)는 요청 채널(RC(z))로부터 단일의 수신 또는 송신 요청에 사용된다. 태스크 T(z)는 명령 메모리 뱅크(130) 내에 또는 제 1 메모리 뱅크(70) 내에 또는 외부 메모리 뱅크(110) 내에 저장될 수 있다. 태스크 T(z), 또는 이의 일부는 다른 메모리 뱅크에 저장될 수도 있다.
예를 들면, 선택된 송신 또는 수신 요청이 RC(c)에 연관된다면, 제 1 프로세서(90)로 하여금 Dsp_reg로부터 스택 포인터를 인출하도록 한다. Csp_reg의 내용은 명령 I(c, r)의 어드레스이다. 이어서 제 1 프로세서(90)는 태스크 T(c)의 일부를 실행한다.
통상, 도 13에 따라 상세히 설명된 바와 같이, 제 1 프로세서(90)는 외부 장치로부터 정보를 인출할 필요가 있을 때까지 제 z 태스크(T(z))의 어떤 명령(I(z, r) - I(z, r+d), d는 정수)을 실행한다. 제 1 프로세서(90)는 RC(z)에 연관된 DMA 요청을 제 1 DMA(60) 또는 제 2 DMA(160)에 보내고, 갱신된 스택 포인터(명령(I(z, r+d+1))를 가리킴)를 보내고, 이어 명령(I(z, r+d))이 이어진다. 편의상, 태스크 T(z)이 종료되면, I(z, 1)이 Zsp_reg로 보내지고, 스케쥴러(50)로부터 새로이 선택된 스택 포인터의 수신을 기다린다. 스케쥴러가 제 1 프로세서(90)에 x번째 태스크(T(x))에 연관된 새로이 선택된 스택 포인터를 보낼 때, 제 1 프로세서(9)는 태스크(T(x))에서 명령들을 실행하기 시작한다.
"태스크 전환(task switch)"은 태스크의 실행을 정지하고, 선택된 태스크의 수신을 기다리고 선택된 태스크로부터 명령들을 실행하기 시작하는, 제 1 프로세서(90)에 의해 행해지는 프로세스로서 정의된다. 통상, 선택된 태스크는 정지되었던 태스크와는 다르지만 반드시 그럴 필요는 없다.
요청 선택기(56)는 2M 입력(561 내지 568), 제어 입력(56) 및 출력(560)을 포함한다. sp 입력 mux(52)는 입력(520, 529), 제 1 세트의 2M 출력(511 내지 518) 및 제 2 세트의 2M 출력(521 내지 528)을 포함한다. 스택 포인터 레지스터(즉, sp 레지스터)(541 내지 548)는 제 1 세트의 입력(5411 내지 5481), 제 2 세트의 입력(5412 내지 5482) 및 출력(5413 내지 5483)을 포함한다. Sp 출력 mux(58)는 2M 입력(581 내지 588), 입력(580) 및 출력(589)을 포함한다. 요청 선택기(56)의 출력(560)은 2M 입력(581 내지 588) 중에서 어느 입력이 출력(589)에 연결될 것인가를 선택하기 위해서 sp 출력 mux(58)의 입력(580)에 연결된다. 요청 선택기의 입력(561 내지 568)은 150으로 일괄 표기된 2M 요청 채널(RC(1) 내지 RC(2M))에 연결된다. 출력(648)은 도 4에 따라 상세히 설명한 바와 같이 수신 채널에 인에이블 신호를 보낸다. 편의상, 2M AND 로직 게이트(도시되지 않음)는 각각의 2개의 입력 과 하나의 출력을 갖고 있는 것으로서 인에이블 유닛(64)의 2M 비트 출력(648)과 일측으로부터 2M 수신 및 송신 채널들과, 다른 측으로부터 2M 입력(561 내지 568)에 연결된다.
송신 요청은 요청 채널이 통신 채널에 데이터를 보내는 것을 종료하고 요청 채널을 새로운 데이터를 수신할 수 있을 때 보내진다. 수신 요청은 요청 채널이 데이터를 수신할 때 보내진다.
요청 선택기(56)는 하나 이상의 요청 채널에서 송신 또는 수신 요청을 수신하였는지 여부를 체크한다. 대답이 "예"이면, 요청 선택기(56)는 가장 높은 우선 순위를 갖는 요청을 선택한다. 설명의 편의상, 가장 높은 우선 순위를 갖는 요청이 z번째 요청 채널(RC(z))로부터 왔다고 가정한다. 요청 선택기(56)는 Gsp_reg에 저장된 z번째 스택 포인터를 제 1 프로세서(90)로 보내지게 하는 제어 신호를 Sp 입력 mux(52)로 보낸다. 제 1 프로세서(90)는 명령 메모리 뱅크(130)로부터 z번째 스택 포인터가 가리키는 명령 I(z, r)을 인출하여 이 명령과 태스크(T(z))의 다음 명령들을 실행하기 시작한다.
요청의 우선 순위는 고정되어 있을 수 있고 또는 변경될 수 있다. 예를 들면, 제 1 입력(561)을 통해 입력되는 요청은 가장 낮은 우선 순위를 가질 수 있고 M번째 입력(568)을 통해 입력되는 요청은 가장 높은 우선 순위를 가질 수 있다.
도 8은 본 발명의 바람직한 실시예에 따른 블록 전송 머신(즉, BTM)(40)의 개략도이다. BTM(40)은 BTM 데이터 레지스터(즉, bdata buffer ; 41), BTM 제어 유닛(즉, bcontrol unit; 46), 데이터 조작기(44) 및 CRC 머신(48)을 포함한다. BTM(40)은 CRC REG.(42)와, 제 1 메모리 뱅크(70)와 주변 장치(140)에 연결된다. CRC REG(42)는 제 1 프로세서(90)의 레지스터들 중 하나이다.
편의상, BTM(40)은 주변 장치(14)로부터(로) 제 1 메모리 뱅크(70)로(로부터) 데이터 전송을 처리한다. 통상, 제 1 프로세서(90)는 전송되는 데이터의 소스와 목적지, 및 데이터 길이를 나타내는 전송 요청을 BTM(40)에 보낸다. 예를 들면, BTM(40)이 주변 장치 및 제 1 메모리 뱅크(70)에 32 비트 버스에 의해 연결되고, 8 x 32 = 256비트를 전송할 필요가 있다면, 제 1 프로세서(70)는 8개의 32비트 전송이 실행될 것임을 나타내는 8의 길이 필드를 갖는 전송 명령을 보낼 것이다. 보통 ATM 통신 프로토콜은 48 x 32 = 1536비트와 같은 큰 데이터 블록의 전송을 요한다. 편의상, BTM(40)은 DMA 제어기만으로 구성될 수 있다. 바람직하게, DMA(40)는 데이터의 전송을 처리하며 이것이 전송하는 데이터를 처리할 수 있다. 각각의 주변 장치(1401 내지 1408)는 I/O(1421 내지 1428)를 갖는다.
BTM 데이터 버퍼(41)는 입력(414), I/O(412, 416)을 포함한다. CRC REG(41)는 입력(424) 및 I/O(426)을 포함한다. BRAM(43)은 I/O(432) 및 입력(434)를 포함한다. 데이터 조작기(44)는 입력(442, 444) 및 I/O(446)을 포함한다. BTM 제어 유닛(46)은 입력(462) 및 출력(464)를 포함한다. CRC 머신(48)은 입력(484, 484) 및 I/O(486)을 포함한다.
주변 버스(112)는 BTM(40)의 I/O(43)을 통해, 데이터 조작기(44)의 I/O(442) 및 CRC 머신(48)의 입력(482)에 연결된다. BTM 제어 유닛(46)의 출력(464)은 BTM(40)의 I/O(46)을 통해 CRC REG(42)의 입력(424)과 CRC 머신(48)의 입력(484) 과, 데이터 조작기(44)의 입력(444)과 BRAM(43)의 입력(344)과 BTM 데이터 버퍼(41)의 입력(414)에 연결된다. BTM 제어 유닛(46)의 입력(462)은 BTM의 I/O(47)를 통해 제 1 프로세서(90)의 I/O(97)에 연결된다. CRC REG(42)의 I/O(426)는 BTM(40)의 I/O(47)를 통해 CRC 머신(48)의 I/O(486)에 연결된다. 데이터 조작기(44)의 I/O(446)는 BTM 데이터 버퍼(41)의 I/O(412)에 연결된다. BTM 데이터 버퍼(41)의 I/O(416)는 I/O(45)를 통해 제 1 메모리 뱅크(70)의 I/O(72)에 연결된다.
BTM 제어 유닛(46)은 제 1 프로세서(90)의 출력(97)으로부터 보내진 제어 신호 및 오퍼랜드에 의해 활성화된다. BTM 제어 유닛(46)은 출력(464)을 통해 CRC reg(42), CRC 머신(48), 데이터 조작기(44) 및 BTM 데이터 버퍼(41)에 제어 신호를 보냄으로써 BTM(40)의 동작을 제어한다. BTM 제어 유닛(46)은 주변 버스(112)로부터(로) 메모리 뱅크(70)로(로부터) 데이터가 흐르도록 하는 제어 신호를 보낸다. BTM 제어 유닛은 CRC 머신으로 하여금 데이터에 관한 CRC 체크를 행하게 할 수 있고 CRC REG(42)에 결과를 저장하게 할 수 있다. 편의상, CRC 머신(48)은 단일 클럭 사이클 동안 16비트의 데이터 워드에 관하여 CRC 체크를 행할 수 있다. 데이터 조작기(44)는 I/O(442)를 통해 데이터 워드를 읽을 수 있고, 데이터 워드를 교환할 수 있고, 또는 시프트된 데이터 워드를 생성할 수 있으며 BTM 데이터 버퍼(41)의 I/O(412)에 I/O(446)를 통해 새로운 데이터 워드를 보낼 수 있다. BTM 데이터 버퍼(41)는 새로운 데이터 워드를 저장하고 이를 BRAM(43)으로 보낸다. BTM 데이터 버퍼(41)는 BRAM(43)으로부터 데이터 워드를 수신할 수 있고, 이를 데이터 조작기(44)에 보낼 수 있다. 바람직하게, CRC 머신은 단일 클럭 동안 16비트의 데이터 워드를 CRC 체크할 수 있다. 데이터 조작기(44)는 데이트 워드를 교환할 수 있고, 또는 시프트된 데이터 워드를 생성할 수 있으며, 새로운 데이터 워드를 I/O(442)를 통해 주변 버스(112)로 보낼 수 있다.
도 9는 본 발명의 바람직한 실시예에 따른, 제 1 메모리 뱅크(70)의 개략도이다. 메모리 뱅크(70)는 편의상 Q개의 섹션들(즉, 메모리 뱅크) 1BANK 내지 QBANK(701 내지 708)를 포함한다. 1BANK 내지 QBANK(701 내지 708) 각각의 메모리 뱅크는 제 1 프로세서(90), 제 1 DMA(60), 제 2 DMA(160) 및 BTM(40)에 연결된다. 설명의 편의상, 단지 2개의 메모리 뱅크 1BANK(701)과 QBANK(708)만을 도시하였지만, 임의의 수(Q)의 메모리 뱅크가 구현될 수 있다. 설명의 편의상 제 2 DMA(160)는 도시하지 않았다.
제 1 프로세서(90)의 I/O(98)는 제 1 메모리 뱅크(70)의 I/O(78)를 통해서, 1BNAK(701)의 입력(7148), QBANK(708)의 입력(7848), 1BANK(701)의 I/O(7168) 및 QBANK(708)의 I/O(7868)에 연결된다. 제 1 DMA(60)의 I/O(64)는 제 1 메모리 뱅크(70)의 I/O(78)을 통해 1BANK(701)의 입력(7148), QBANK(708)의 입력(7848), 1BANK(701)의 I/O(7166) 및 QBANK(708)의 I/O(7866)에 연결된다. BTM(40)의 I/O(45)는 제 1 메모리 뱅크(70)의 I/O(72)를 통해서, 1BANK(701)의 입력(7144), QBANK(708)의 입력(7844), 1BANK(701)의 I/O(7164) 및 QBANK(708)의 I/O(7864)에 연결된다. 도 8에 따라 상세히 설명한 바와 같이, 메모리 뱅크(예를 들면 1BANK(701))가 제 1 프로세서(90), 제 1 DMA(60) 및 BTM(40) 중에서 하나 이상의 요소에 의해 동시에 액세스되면, 1BANK(701)는 어느 요소를 먼저 사용할 것인지와 제 1 요소가 사용된 후에 사용될 것인지 결정한다.
도 10은 본 발명의 바람직한 실시예에 따라, 제 1 메모리 뱅크(70) 내에 Q 메모리 뱅크의 메모리 뱅크 1BANK(701)의 개략도이다. 1BANK(701)는 메모리 어레이(718), 데이터 멀티플렉서(즉, 데이터 MUX)(716), 어드레스 멀티플렉서(즉, 어드레스 MUX)(714) 및 메모리 선택기(712)를 포함한다. 데이터 MUX(716)는 입력(7163), I/O(7164, 7166, 7168) 및 출력(7142)을 포함한다. 어드레스 MUX(714)는 입력(7146, 7144, 7148, 7149) 및 출력(7142)를 포함한다. 메모리 선택기(712)는 입력(7124, 7126, 7128)과 출력(7123, 7125)를 포함한다. 메모리 어레이(718)는 입력(7182) 및 I/O(7184)를 포함한다. 데이터 MUX(716)의 입력(7163)은 메모리 선택기(712)의 출력(7123)에 연결된다. 어드레스 MUX(714)의 입력(7149)은 메모리 선택기(712)의 출력(7125)에 연결된다. 어드레스 MUX(714)의 출력(7142)은 메모리 어레이(718)의 입력(7182)에 연결된다. 데이터 MUX(716)의 I/O(7169)는 메모리 어레이(718)의 I/O(7184)에 연결된다.
BTM(40), 제 1 DMA(60), 제 2 DMA(160) 및 제 1 프로세서(90)는 어드레스 워드를 어드레스 MUX(714)의 입력(7144, 7146, 7148)에, 그리고 메모리 선택기(712)의 입력(7124, 7126, 7128)에 보낼 수 있다. 어드레스 워드 비트 중 일부는 메모리 선택기(712)에 보내지고, 나머지 비트는 어드레스 MUX(714)에 보내진다. 메모리 선택기(712)에 보내지는 어드레스 비트는 1BANK 내지 QBANK(701 내지 708) 중에서 하나의 메모리 뱅크를 선택하는데 사용된다.
제 1 프로세서(90), 제 1 DMA(60) 및 BTM(40) 중에서 단지 하나의 요소만이 어드레스 워드를 보낸다면, 이 요소가 선택되고, 메모리 선택기(712)는 출력(7125 및 7163)에서 어드레스 MUX(714)의 입력(7149) 및 데이터 MUX(716)의 입력(7163)으로 선택 신호를 보낸다. 선택 신호는 선택된 요소로부터 메모리 어레이(718)의 입력(7182)로 보내진 어드레스 워드의 나머지 비트들을 어드레스 MUX(714)가 보내지도록 한다. 선택 신호는 메모리 어레이(718)의 I/O(7184)를 선택된 요소의 I/O에 데이터 MUX(716)가 연결하도록 한다. 예를 들면, BTM(40)이 데이터 워드를 BANK 1에 기록할 때, 어드레스 워드를 BANK1(712)에 보내고 데이터 워드를 데이터 MUX(716)의 I/O(7164)에 보낸다. 메모리 선택기(712)는 어드레스 워드의 비트의 일부를 수신하고 BTM(40)이 데이터 워드를 1BANK(701)로(로부터) 데이터 워드를 기립하는 것을 확인한다. 메모리 선택기(712)는 I/O(7164)(결국 BTM(40)의 I/O(42))를 데이터 MUX(716)의 출력(7169)에 연결하고 따라서 메모리 어레이(718)의 I/O(7184)에 연결하는 데이터 MUX(716)에 선택 신호를 보낸다.
BTM(40), 제 1 DMA(60) 및 제 1 프로세서(90) 중에서 하나 이상의 요소가 1BANK에 데이터 어드레스를 보낸다면, 메모리 선택기(712)는 가장 높은 우선 순위의 요소로부터의 요청을 선택하여 선택 신호를 데이터 MUX(716) 및 어드레스 MUX(714)로 보낸다. 예를 들면, BTM(40) 및 제 1 프로세서(90)가 동시에 어드레스 워드를 1BANK에 보내고, 제 1 프로세서(90)가 BTM(40)보다 높은 우선 순위를 갖는다면, 메모리 선택기는 어드레스 MUX(714)의 입력(7148)이 메모리 어레이(718)의 입력(7182) 및 메모리 어레이(718)의 I/O(7184)에 연결될 데이터 MUX(716)의 I/O(7168)에 연결되도록 하는 선택 신호를 보낸다.
메모리 뱅크(BANK 내지 QBANK) 중 일부는 인터리브되어 높은 순차 액세스율을 제공할 수 있다. 이러한 인터리빙은 제 1 메모리 워드가 제 1 데이터 뱅크에서 발견되고 제 2 메모리 워드가 제 2 메모리 뱅크에서 발견되는 것을 제공한다. 인터리빙은 어드레스 워드의 최하위 비트와 최상위 비트를 교환함으로써 수행된다. 예를 들면, 메모리 뱅크가 각각 2K 워드의 16 메모리 뱅크로 구성되면, 어드레스 워드는 15비트이어야 하고 4비트는 16 메모리 뱅크 중 하나를 선택하는 데 사용되고, 다른 11 비트는 2k 워드 메모리 뱅크 내의 어느 데이터 워드가 선택될 것인가를 정한다. 인터리빙은 15비트 어드레스 워드의 4개의 최하위 비트를 각각의 메모리 선택기(712)의 어드레스 버스의 4개의 최상위 비트로 보냄으로써 행해질 수 있고, 나머지 11비트는 어드레스 MUX(714)로 보내진다.
도 11은 태스크를 실행하고 본 발명의 바람직한 실시예에 따라 태스크 전환을 수행하는 방법(900)의 바람직한 실시예를 도시한 흐름도이다.
방법(900)은 임의의 요청 채널로부터 하나 이상의 수신 또는 송신 요청을 스케쥴러(50)가 수신하였는지 여부를 체크하는 단계 910에서 시작한다. 단계 910에 의해 경로 913로 나타낸 바와 같이 단계 920이 이어진다.
단계 920에서 스케쥴러(50)는 가장 높은 우선 순위를 갖는 수신/송신 요청을 선택한다. 설명의 편의상, 요청은 CR(z)로부터 온 것으로 가정한다. 스케쥴러(50)는 제 1 프로세서(90)로 하여금 CR(x)에 연관된 태스크 T(z)을 실행하게 하는, 선택된 수신/송신 요청에 연관된 스택 포인터를 보낸다. 태스크 T(z)의 실행은 데이터, 상태 워드, 요청 채널 파라미터, 통신 채널 파라미터 및 포인터(즉, 정보)의 인출을 포함한다. 단계 920에서, 제 1 프로세서(90)는 태스크 T(z)이 종료할 때까지 또는 외부 메모리 뱅크(110) 또는 외부 장치로부터 정보를 인출할 필요가 있을 때까지 태스크 T(z)을 실행한다.
경로(934)로 나타낸 바와 같이, 단계 962에서, 외부 메모리 뱅크(110)에 저장된 정보를 인출할 필요가 있다면, 제 1 프로세서는 DMA 요청을 제 1 DMA(60)로 보내고, 스케쥴러(50)의 z번째 스택 포인터 레지스터(즉, Zsp_reg)에 갱신된 스택 포인터(SP(z))를 저장하고, RC(z)으로부터 어떤 송신 또는 수신 요청을 마스크하는 디스에이블 신호를 스케쥴러(50)에 보낸다. 경로(962)로 나타낸 바와 같이 단계 960이 단계 910에 이어진다.
경로 964로 나타낸 바와 같이, DMA 요청이 보내진 후에, 제 1 DMA(60) 또는 제 2 DMA(160)는 요청을 실행하고 단계 970에서 정보를 인출한다. 정보가 인출된 후에, 제 1 DMA(60) 또는 제 2 DMA(160)는 인에이블 신호를 스케쥴러(50)로 보내어, T(z)로부터 어떤 수신 또는 송신 요청을 언마스크(unmask)한다. 단계 970은 단계 910, 920, 930, 940, 950, 960이 태스크 T(x)에 따라 실행되는 동안 실행될 수 있다.
점선표시의 경로(972)로 나타낸 바와 같이 단계 910에 단계 972가 이어지며, 이것은 태스크 T(z)에 관계된 정보가 인출된 후에 태스크 T(z)이 단계 910으로부터 실행될 수 있음을 의미한다. 도 4에 따라 상세히 설명된 바와 같이, T(z)는 한 세트의 명령으로 구성되는 반면 제 1 프로세서는 이들 명령(I(z, r) - I(z, r+d)) 중 일부를 실행하고, 태스크 전환을 수행할 수 있다. 제 1 프로세서(90)가 RC(z)로부터 오는 요청에 응답할 때, I(z, r+d+1)부터 시작하는 다음 명령들을 인출할 것이고, 이에 이어 명령 I(z, r+d)가 이어진다.
경로(924, 952) 및 단계 950으로 나타낸 바와 같이, 태스크 T(z)이 종료하면, 제 1 프로세서(90)는 갱신된 스택 포인터를 Zsp_reg로 보내고 방법(900)은 스케쥴러(50)가 어떤 송신/수신 요청을 수신하였는지 여부를 체크하는 단계 910을 시작한다.
단계 960의 시작에서 제 1 프로세서(90)는 태스크 T(z)에 연관된 정보를 인출하기 위해서 DMA 요청을 제 1 DMA(60) 또는 제 2 DMA(160)에 보내고, 디스에이블 신호를 CR(z)로부터 어떤 송신 또는 수신 요청을 마스크하는 스케쥴러(50)로 보낸다. 제 1 프로세서(90)는 Zsp_reg를 이의 현재 스택 포인터로 보낸다. 디스에이블 신호는 제 1 DMA(60) 또는 제 2 DMA(160)에 의해 보내질 수 있다.
도 12는 본 발명의 바람직한 실시예에 따라, 수신 또는 송신 요청에 의해 개시된 태스크를 실행하는 방법(1000)의 바람직한 실시예를 도시한 흐름도이다.
단계 1014, 1018, 1022, 1030은 정보 인출을 포함한다. 정보가 외부 메모리 뱅크(110) 또는 어떤 다른 외부 장치에 저장되면, 제 1 프로세서(90)는 도 9에 따라 설명된 바와 같이 태스크 전환을 실행한다. 단계 1046에 이어 태스크 전환이 이어질 수 있다. 예를 들면, 요청 주변 장치가 그 프레임 부분을 제외한 전체 프레임을 저장하지 않고 제 1 프로세서(90)가 그 부분의 처리를 종료하였다면, 그 프레임의 나머지 부분을 인출할 필요가 있고, 이에 따라 제 1 프로세서(90)는 태스크 전환을 수행하고, 프레임의 또다른 부분이 주변 장치에 저장되었을 때 이 태스크를 수행하기 위해 되돌아 갈 수 있다. 설명의 편의상 이들 태스크 전환은 도 10에는 도시하지 않았고, 방법(1000)은 태스크 전환 없이 실행되는 것으로 도시되었다.
단계 1010에서, 제 1 프로세서(90)는 T(z)의 제 1 명령 I(z, 1)을 인출함으로써, 선택된 태스크 T(z)로부터의 명령 실행을 시작한다.
경로 1012에 의해 나타낸 바와 같이, 단계 1010에 다음에 단계 1014가 이어진다. 단계 1014에서, 제 1 프로세서(90)는 선택된 채널 RC(z)의 요청 채널 파라미터를 인출하여 판독한다.
예를 들어, 본 발명의 범위를 제한하지 않고, 채널 파라미터는 PD(k)를 포함할 수 있다. ATM 통신 프로토콜에 따라 보내진 데이터 스트림을 수신하였을 때, 제 1 프로세서(90)는 셀의 헤더를 읽을 수 있다. 헤더는 가상 접속(즉, CV)에 연관된 어드레스를 포함한다. 어드레스는 단계 1018에서 판독될 채널 파라미터를 갖는 채널을 정의한다. 고속 이더넷 통신 프로토콜에 따른 데이터 스트림을 수신하는 동안, 제 1 프로세서(90)는 충돌이 있는지, 또는 충돌이 소정의 시간 구간 내에 나타났는지 체크하고 응답이 "예"이면 통신 제어기(111)는 수신된 정보를 무시하거나, RC(z)에 데이터 송신을 포함하는 태스크를 제 1 프로세서가 실행할 때, 데이터 스트림을 재송신한다. 응답이 "아니오"이면, 제 1 프로세서(90)는 에러 신호를 제 2 프로세서(100)로 보낸다.
경로(1016)로 나타낸 바와 같이, 단계 1014에 이어 단계 1018이 이어진다. 단계 1018에서, 제 1 프로세서는 통신 채널 파라미터를 인출한다. 제 1 프로세서(90)는 통신 제어기(111)에 의해 수신될(또는 송신될) 데이터 워드가 통신 프레임 내 제 1 데이터 워드인지 체크한다. 응답이 예이면 단계 1018에 이어 단계 1022로 이어지고, 아니면 단계 1030으로 간다. 통상, 통신 채널 파라미터는 데이터 워드가 프레임 내 제 1 데이터 워드인지 여부를 나타내는 필드를 포함한다. 예를 들면, ATM 통신 프로토콜에 따라 셀들을 수신할 때, 이 표시는 셀의 헤더에서 발견될 수 있다.
경로 1020으로 나타낸 바와 같이 단계 1018 다음에 단계 1022가 이어진다. 단계 1022에서, 제 1 프로세서(90)는 이전에 인출되었던 DP(k)에 따라 BF(k)를 인출한다. 제 1 프로세서(90)가 CC(k)부터 BF(k)의 시작 부분까지 수신된 데이터 워드의 기록을 시작할 것이기 때문에 TMP(k)는 PT(k)의 값을 얻는다.
경로 1024로 나타낸 바와 같이 단계 1022 다음에 단계 1026이 이어진다. 단계 1026에서, 제 1 프로세서는 FSB(k)를 판독한다. 비트가 셋되었으면 제 1 프로세서(90)은 BF(k)를 액세스할 수 없다. 편의상, 제 1 프로세서(90)는 제 2 프로세서(100)가 FSB(k)를 리셋할 때까지 기다릴 것이고 다른 버퍼 디스크립터들에 데이터를 기록하는 것을 시도하지는 않을 것이며, 이것은 필요하지 않다. 경로(1028)로 나타낸 바와 같이, FSB(k)가 리셋되었을 때, 제 1 프로세서는 단계 1030 동안 TMP(k)를 인출한다. TMP(k)는 수신된 데이터 워드가 저장될 어드레스(또는 송신될 데이터 워드의 어드레스)를 가리킨다.
경로 1032로 나타낸 바와 같이 단계 1030 다음에 단계 1034가 이어진다. 통신 제어기(111)가 CC(k)로부터 주변 장치를 통해 데이터를 수신하는 동안 단계 1034가 실행되면, 데이터 워드(또는 데이터 워드들)는 CC(k)로부터 제 1 메모리 뱅크(70)로 보내지고, 제 1 메모리 뱅크(70)로부터 TMP(k)에 의해 지정된 어드레스로 보내진다. 통신 제어기(111)가 주변 장치를 통해 CC(k)로 데이터를 송신하는 동안 단계 1034가 실행된다면, 데이터 워드(또는, 데이터 워드들)는 TMP(k)에 의해 지정된 어드레스로부터 제 1 메모리 뱅크(70)로 보내지고 이이서 제 1 메모리 뱅크(70)로부터 CC(k)로 보내진다. 도 8에 따라 설명된 바와 같이, BTM(40)은 CC(k)로부터(로) 제 1 메모리 뱅크(70)로(로부터) 데이터의 송신을 처리한다.
경로(1036)로 나타낸 바와 같이, 단계 1034 다음에 질의(query) 단계 1038가 이어진다.
질의 단계 동안 제 1 프로세서(90)는 단계 1034 동안 BF(k)에 저장된(BF(k)로부터 보내진) 데이터 워드/워드들이 프레임 내 마지막 데이터 워드인지의 여부 및 BF(k)가 모두 채워져 있는지(비어있는지)를 체크한다.
경로(1048)로 나타낸 바와 같이, 이들 양 질문에 대한 응답이 "아니오"이면 단계 1038 다음에 단계 1046이 이어진다. 단계1046에서, TMP(k)가 증가됨으로써, 이것은 BF(k) 내에 비어있는 데이터 워드(CC(k)로 송신될 다음 데이터 워드)를 가리키고, 이것은 TMP(k)에 의해 이전에 지정된 메모리 워드 다음이다. 경로 1056으로 나타낸 바와 같이 단계 1046 다음에 단계 1034가 이어진다.
경로 1044로 나타낸 바와 같이, 데이터 워드가 프레임의 끝이면, BF(k)의 상태에 관계없이, 질의 단계 1038 다음에 단계 1050이 이어진다. 단계 1050 동안에 제 1 프로세서(90)는 프레임 끝의 표시를 제 2 프로세서(100)로 보내고, FSB(k)를 설정함으로써 BD(k)를 닫고, 통신 채널 파라미터를 갱신한다. 이러한 갱신은 다음 디스크립터 포인터 DP(k+1)로 DP(k)를 대치하는 것을 포함할 수 있다.
예를 들면, ATM AL5 통신 프로토콜(ATM 통신 프로토콜의 서브셋)에 따른 데이터 스트림을 수신하면, 제 1 프로세서(90)는 CRC 체크에서 프레임의 송신 중에 에러가 있었는지를 나타내는지 여부와 그러하다면 제 2 프로세서에 인터럽트를 보낼 것인지 체크해야 한다. 또한, 제 1 프로세서(90)는 마지막 셀의 길이를 체크할 수 있고, LW(k)를 갱신할 수 있다.
경로(1040)로 나타낸 바와 같이, BF(k)가 모두 채워져 있다면(통신 제어기(111)로부터 데이터 워드가 송신될 때, 비어있다면), 단계 1038 다음에 단계 1042가 이어진다. 단계 1042 동안 제 1 프로세서(90)는 FSB(k)를 설정하고 통신 채널 파라미터를 갱신함으로써 BD(k)를 닫는다. 이러한 갱신은 다음 디스크립터 포인터 DP(k+1)로 DP(k)를 대치하는 것을 포함할 수 있다.
도 13은 본 발명의 바람직한 실시예에 따라, 각종 수신/송신 요청에 대한 제 1 프로세서의 응답을 도시하는 타이밍도이다.
신호(PR1)는 제 1 프로세서(90)에 의한 제 1 태스크 T(1)의 실행을 나타낸다. 신호(PR2)는 제 1 프로세서(90)에 의한 제 2 태스크 T(2)의 실행을 나타내고, 신호(PR3)는 제 1 프로세서(90)에 의한 제 3 태스크 T(3)의 실행을 나타낸다. 제 1 태스크 T(1)는 제 2 태스크 T(2)보다 높은 우선 순위를 가지며, 제 3 태스크 T(3)는 제 2 태스크 T(2)보다 낮은 우선 순위를 갖는다.
천이(1550, 1551)로 나타낸 바와 같이, 제 1 프로세서(90)는 제 1 태스크 T(1)가 외부 메모리 뱅크(110)로부터의 정보 인출을 요구할 때까지 제 1 태스크 T(1)의 실행을 시작한다. 제 1 태스크 T(1)은 높은 우선 순위 때문에 제 2 테스크T(2) 및 제 3 태스크T(3)이 전에 실행된다. 천이(1551)로 나타낸 바와 같이, 제 1 프로세서(90)은 DMA 요청을 제 1 DMA(60)로 보내어 태스크 전환을 수행한다. 제 1 프로세서(90)는 제 1 태스크 T(1)의 실행을 중지시키고, 천이(1551, 1560)로 나타낸 바와 같이 태스크 T(2)의 실행을 시작한다. DMA 요청은 천이(1562) 이전에 수행되며, 그렇지 않으면 제 1 태스크 T(1)에 연관된 요청 채널로부터의 어떤 요청도 디스에이블되어, 제 1 프로세서는 태스크 T(1)을 실행하지 않을 것이다.
천이(1561) 다음에, 제 1 프로세서(90)는 제 1 태스크 T(1)을 실행한 것과 동일한 방식으로 제 2 태스크 T(2)의 실행을 시작한다. 제 2 태스크 T(2)는 천이(1560, 1561)로 나타낸 바와 같이, 외부 메모리 뱅크(110)으로부터 정보를 인출할 필요가 있을 때까지 실행된다. 천이(1561, 1570)로 나타낸 바와 같이, 제 1 프로세서(90)는 태스크 전환을 수행하고, 이것은 제 1 및 제 2 태스크 T(1) 및 T(2)를 실행한 것과 동일한 방식으로 제 3 태스크 T(3)의 실행을 시작한다. 천이(1580, 1581)로 나타낸 바와 같이, 제 3 태스크 T(3)는 외부 메모리 뱅크(110)로부터 정보를 인출할 필요가 있을 때까지 실행된다. 천이(1581) 후에 제 1 프로세서는 어떠한 요청이 있는지 체크하고, 모든 수신/송신 요청이 디스에이블되었으므로, 제 1 프로세서(90)는 제 1 태스크 T(1)에 연관된 DMA 요청이 종료될 때까지 대기한 후 경로(1562)로 나타낸 바와 같이 제 1 태스크의 실행을 계속한다.
제 1 태스크 T(1)은 천이(1560, 1561), 천이(1562, 1563), 천이(1564, 1565), 천이(1566, 1567) 사이에서 실행된다. 천이 1561과 1562, 1563과 1565, 1565와 1566 사이에서, 제 1 DMA(60)는 제 1 태스크 T(1)에 연관된 DMA 요청을 실행한다. 제 2 태스크 T(2)는 천이(1570, 1571), 천이(1572, 1573) 사이에서 수행된다. 천이(1571, 1572) 사이에서, 제 1 DMA(60) 또는 제 2 DMA(160)는 제 2 태스크 T(2)에 연관된 DMA 요청을 실행한다. 제 3 태스크 T(3)은 천이 1580과 1581, 1582와 1583, 1584와 1585, 1586과 1587 사이에서 실행된다. 천이 1581과 1582, 1583과 1584, 1585와 1586 사이에서, 제 1 DMA(60)는 제 3 태스크 T(3)에 연관된 DMA 요청을 실행한다.
도 14는 본 발명의 바람직한 실시예에 따른, 각종 수신/송신 요청에 대한 제 1 프로세서의 응답을 예시한 타이밍도이다.
도 11에 따라 상세히 설명한 바와 같이, 신호(RP1)는 제 1 프로세서(90)에 의한 제 1 태스크 T(1)의 실행을 나타낸다. 제 1 프로세서는 천이 1560과 1561, 1562와 1563, 1564와 1565, 1566과 1567 사이에서 제 1 태스크 T(1)을 실행한다. 천이(1561, 1563, 1565)는 외부 메모리 뱅크로부터, 또는 다른 외부 장치로부터 정보를 인출할 필요성에 의해서 야기되는 태스크 전환을 나타낸다.
신호(CR1)는 CR(z)로부터 보내진 수신/송신 요청을 나타낸다. 천이(1590)로 나타낸 바와 같이, 요청은 제 1 프로세서(90)가 제 1 태스크 T(1)의 실행을 종료할 때까지 활성 상태에 있다.
신호(R1)는 스케쥴러(50)에 입력되는 마스크된 신호를 나타낸다. 천이(1591)로 나타낸 바와 같이, 제 1 태스크 T(1)이 외부 메모리 뱅크(110)로부터의 정보 인출을 요구할 때, 제 1 프로세서(90)는 DMA 요청을 제 1 DMA(60)에 또는 제 2 DMA(160)로 보내고, 디스에이블 신호를 스케쥴러(50)로 보낸다. 디스에이블 신호는 신호(R1)을 리셋한다. 도 4에 따라 상세히 설명한 바와 같이, 제 1 DMA(60) 또는 제 2 DMA(160)가 RC(z)에 기인한 모든 DMA 요청을 실행한 후에, 인에이블 신호를 스케쥴러(50)로 보낸다. 인에이블 신호는 천이(1562)로 나타낸 바와 같이, 신호(R1)를 설정한다. 천이(1592)는 천이(1562)에 대한 필요조건이다. RC(z)에 연관된 DMA 요청이 완전히 실행되지 않는 한, 제 1 프로세서(90)는 제 1 태스크 T(1)을 처리하지 않을 것이다.
DMA 요청은 천이(1562)에 앞서 수행되고, 그렇지 않으면 제 1 태스크 T(1)에 연관된 요청 채널로부터의 어떠한 요청도 디스에이블되고, 제 1 프로세서는 태스크 T(1)의 명령의 실행을 재개하지 않을 것이다.
천이(1592, 1594, 1596)로 나타낸 바와 같이, R1 신호는 제 1 DMA(60)가 RC(z)에 연관된 DMA 요청 실행을 종료한 후에 설정된다. 천이(1593, 1595)로 나타낸 바와 같이, 신호(R1)는 RC(z)에 연관된 DMA 요청을 실행할 필요가 있을 때 리셋 된다.
천이(1597)로 나타낸 바와 같이, R1은 제 1 프로세서(90)가 제 1 태스크 T(1) 실행을 종료할 때 리셋된다. 따라서, 데이터 프로세서 명령을 그룹화하는 향상된 방법 및 장치의 적어도 하나의 바람직한 실시예를 포함하는 실시예 및 명령 시스템의 실시예를 본 명세서에 기술하였다. 개시된 요지는 많은 방법으로 수정될 수 있고 구체적으로 개시 및 기술된 바람직한 형태 이외의 많은 실시예를 취할 수 있음을 당업자들에게 명백할 것이다. 따라서, 전술한 요지는 예시적인 것이고 한정하려는 것은 아니며 법이 허용하는 최대 범위로 간주되어야 할 것이며, 첨부한 청구범위는 본 발명의 정신 및 범위 내에 있는 모든 수정 및 그 외의 실시예를 포괄하도록 한 것이다. 본 발명의 범위는 전술한 상세한 설명보다는 다음의 청구범위 및 그와 동등한 광의의 허용가능한 해석에 의해 결정되어야 할 것이다.
삭제

Claims (20)

  1. 고속 데이터 스트림들을 수신하고, 송신하고, 처리하기 위한 고속 통신 제어기로서,
    상기 데이터 스트림들은 프레임들을 포함하고, 상기 통신 제어기는 복수의 통신 채널들과 제 1 및 제 2 외부 버스들에 연결되도록 적응되며,
    상기 고속 통신 제어기는:
    데이터 스트림 트랜잭션들(data stream transactions)을 제어하는 제 1 프로세서로서, 태스크(task)를 실행함으로써 프레임의 트랜잭션을 제어하는 상기 제 1 프로세서;
    하이 레벨 관리 및 통신 프로토콜 기능들을 처리하는 제 2 프로세서; 및
    태스크를 실행할 필요가 있는지 검출하고, 상기 제 1 프로세서에 의해 실행될 선택된 태스크를 선택하는, 상기 제 1 프로세서에 연결된 스케쥴러를 포함하는, 고속 통신 제어기.
  2. 제 1 항에 있어서,
    상기 제 1 프로세서에 연결되어, 태스크들을 저장하는 명령 메모리 뱅크;
    상기 제 1 프로세서에 연결되어, 상기 제 1 프로세서에 의해 처리될 데이터를 저장하는 제 1 메모리 뱅크;
    상기 제 1 프로세서 및 상기 제 1 외부 버스에 연결되어, 상기 제 1 외부 버스에 연결되는 외부 메모리 뱅크 내에 저장된 정보를 인출(fetch)하는 제 1 직접 메모리 액세스 제어기;
    상기 제 1 프로세서 및 상기 제 2 외부 버스에 연결되어, 상기 제 2 외부 버스에 연결되는 외부 메모리 뱅크 내에 저장된 정보를 인출하는 제 2 직접 메모리 액세스 제어기; 및
    상기 스케쥴러 및 상기 제 1 메모리 뱅크에 연결되어, 상기 복수의 통신 채널들과 상기 제 1 메모리 뱅크 간에 버퍼링하기 위한 복수의 주변 장치들을 더 포함하는, 고속 통신 제어기.
  3. 제 2 항에 있어서,
    상기 스케쥴러는 복수의 스택 포인터들(stack pointers)들을 저장하며,
    하나의 스택 포인터는 하나의 태스크와 연관되고,
    상기 스케쥴러는 선택된 스택 포인터를 상기 제 1 프로세서에 보내고, 상기 선택된 스택 포인터는 상기 선택된 태스크와 연관되고,
    태스크의 실행은 상기 선택된 스택 포인터를 갱신하는 것을 포함하며,
    상기 제 1 프로세서가 상기 선택된 태스크 실행을 정지할 때, 상기 제 1 프로세서는 상기 갱신된 선택된 스택 포인터를 상기 스케쥴러에 보내는, 고속 통신 제어기.
  4. 제 3 항에 있어서,
    상기 제 1 프로세서는, 상기 태스크의 실행이 상기 외부 메모리 뱅크로부터 정보를 인출하는 것을 포함할 때 태스크 실행을 정지하는, 고속 통신 제어기.
  5. 제 4 항에 있어서,
    주변 장치는 2개의 요청 채널들을 가지고,
    상기 제 1 요청 채널은 상기 통신 제어기로부터 통신 채널로 보내진 데이터의 송신을 처리하고,
    상기 제 2 요청 채널은 통신 채널로부터 상기 통신 제어기로 보내진 데이터의 수신을 처리하고,
    상기 제 1 요청 채널은 상기 제 1 요청 채널이 상기 통신 채널로 보내질 데이터를 수신할 수 있을 때 송신 요청을 상기 스케쥴러에 보내고,
    상기 제 2 요청 채널은 상기 제 2 요청 채널이 통신 채널로부터 데이터를 수신하였을 때 수신 요청을 상기 스케쥴러에 보내는, 고속 통신 제어기.
  6. 제 5 항에 있어서,
    상기 스케쥴러는:
    상기 주변 장치에 연결되어, 송신 요청 및 수신 요청들을 수신하고, 선택된 요청을 선택하는 요청 선택기;
    복수의 스택 포인터들을 저장하기 위한 복수의 스택 포인터 레지스터들;
    상기 복수의 스택 포인터 레지스터들 및 상기 제 1 프로세서에 연결되어, 상기 복수의 스택 포인터 레지스터들에 스택 포인터들을 기록하는 스택 포인터 입력 멀티플렉서; 및
    상기 복수의 스택 포인터 레지스터들, 상기 제 1 프로세서 및 상기 요청 선택기에 연결되어, 상기 선택된 스택 포인터를 상기 제 1 프로세서에 보내는 스택 포인터 출력 멀티플렉서를 포함하는, 고속 통신 제어기.
  7. 제 6 항에 있어서,
    상기 제 1 직접 메모리 액세스 제어기 및 상기 제 2 직접 메모리 액세스 제어기는:
    상기 제 1 프로세서에 연결되어, 복수의 직접 메모리 액세스 요청들을 저장하는 직접 메모리 액세스 요청 큐(direct memory access request queue); 및
    상기 직접 메모리 액세스 요청 큐 및 상기 스케쥴러에 연결되어, 상기 직접 메모리 액세스 메모리 제어기에 저장된 상기 직접 메모리 액세스 요청과 연관된 제 1 요청 채널들로부터 송신 요청들을 마스킹(masking)하고, 상기 직접 메모리 액세스 메모리 제어기에 저장된 상기 직접 메모리 액세스 요청들과 연관된 제 2 요청 채널들로부터의 수신 요청들을 마스킹하는 인에이블 유닛을 포함하는, 고속 통신 제어기.
  8. 제 7 항에 있어서,
    상기 제 1 직접 메모리 액세스 제어기 및 상기 제 2 직접 메모리 액세스 제어기는:
    직접 메모리 액세스 요청을 저장하기 위한 요청 바이패스 레지스터(request bypass register);
    상기 직접 메모리 액세스 요청 큐 또는 상기 요청 바이패스 레지스터 내에 직접 메모리 액세스 요청을 저장할지의 여부를 결정하는 입력 멀티플렉서; 및
    상기 제 1 메모리 뱅크, 상기 직접 메모리 액세스 요청 큐 및 상기 바이패스 요청 레지스터에 연결되어, 상기 요청 바이패스 레지스터가 유효 직접 메모리 액세스 요청을 저장한다면, 상기 요청 바이패스 레지스터에 저장된 상기 직접 메모리 액세스 요청을 선택하는 출력 멀티플렉서를 더 포함하는, 고속 통신 제어기.
  9. 제 8 항에 있어서,
    상기 직접 메모리 액세스 요청 큐는 복수의 메모리 워드들을 가지고,
    각각의 메모리 워드는 제 1 부분 및 제 2 부분을 가지고,
    상기 제 2 부분은 직접 메모리 액세스 요청들을 저장하기 위한 것이고,
    상기 제 1 부분은 라벨을 저장하기 위한 것으로서, 상기 라벨은 상기 제 2 부분 내에 저장된 상기 직접 메모리 액세스 요청들에 연관된 상기 요청 채널을 나타내는, 고속 통신 제어기.
  10. 제 7 항에 있어서,
    제 1 요청 채널로부터의 송신 요청은 제 1 직접 메모리 액세스 제어기 및 제 2 직접 메모리 액세스 제어기 중 한 제어기 내에 상기 인에이블 유닛이 상기 제 1 요청 채널로부터의 송신 요청을 마스크할 때 마스크되며,
    제 2 요청 채널로부터의 수신 요청은 제 1 직접 메모리 액세스 제어기 및 제 2 직접 메모리 액세스 제어기 중 한 제어기 내에 상기 인에이블 유닛이 상기 제 2 요청 채널로부터의 수신 요청을 마스크할 때 마스크되는, 고속 통신 제어기.
  11. 제 10 항에 있어서,
    상기 주변 장치들로부터 상기 제 1 메모리 뱅크로 그리고 상기 제 1 메모리 뱅크로부터 상기 주변 장치들로 데이터를 송신하기 위한 블록 전송 머신을 더 포함하고,
    상기 블록 전송 머신은:
    상기 주변 장치들에 연결되어, 데이터를 조작하기 위한 비트 필드부;
    상기 주변 장치들에 연결되어, CRC 체크들을 실행하는 CRC 머신;
    상기 CRC 머신과, 상기 데이터 조작기 및 상기 제 1 메모리 뱅크에 연결되어, 상기 제 1 메모리 뱅크로부터 상기 주변 장치들로 보내질 데이터를 저장하고, 상기 제 1 메모리 뱅크에 기록될 데이터를 저장하기 위한 BTM 데이터 레지스터; 및
    상기 CRC 머신, 상기 데이터 조작기 및 상기 BTM 데이터 레지스터에 연결되어, 상기 블록 전송 머신을 제어하기 위한 BTM 제어 유닛을 포함하는, 고속 통신 제어기.
  12. 제 11 항에 있어서,
    상기 제 1 메모리 뱅크는 복수의 섹션들(sections)을 갖고, 각각의 섹션은 상기 제 1 프로세서, 상기 제 2 프로세서, 상기 직접 액세스 제어기, 상기 제 2 직접 메모리 액세스 제어기 및 상기 BTM에 연결되며, 상기 각각의 섹션은:
    정보를 저장하기 위한 메모리 어레이;
    상기 제 1 프로세서, 상기 제 2 프로세서, 상기 직접 메모리 액세스 제어기, 상기 제 2 직접 메모리 액세스 제어기 및 상기 BTM 중에서 선택된 장치를 선택하기 위한 메모리 선택기;
    상기 선택된 장치와 상기 메모리 어레이 간에 데이터의 송신을 가능케 하는 데이터 멀티플렉서; 및
    상기 선택된 장치로 하여금 어드레스 워드를 상기 메모리 어레이로 보낼 수 있게 하는 어드레스 멀티플렉서를 포함하는, 고속 통신 제어기.
  13. 제 5 항에 있어서,
    상기 외부 메모리 뱅크는 데이터를 저장하기 위한 복수의 버퍼들을 가지고,
    상기 외부 메모리 뱅크는 포인터, 상태 및 제어 필드 및 길이 필드를 저장하기 위한 버퍼 디스크립터들을 더 가지고,
    상기 포인터는 버퍼를 가리키고,
    상기 길이 필드는 상기 포인터에 의해 참조된 상기 버퍼의 길이를 규정하고,
    상기 상태 및 제어 워드는 상기 제 1 프로세서 및 상기 제 2 프로세서 중 한 프로세서가 상기 포인터에 의해 참조된 상기 버퍼를 액세스할 수 있는지를 나타내는 F/S 필드를 포함하는, 고속 통신 제어기.
  14. 제 13 항에 있어서,
    버퍼는 요청 채널에 연관된 데이터를 저장하고,
    단일 요청 채널에 연관된 한 세트의 버퍼들은 원형 큐를 형성하고,
    상기 상태 및 제어 워드는, 랩 필드(wrap field)를 갖는 상기 버퍼 디스크립터에 의해 참조된 상기 버퍼가 상기 세트 내의 마지막 버퍼인지의 여부를 나타내는 상기 랩 필드를 포함하고,
    버퍼는 단일 데이터 프레임으로부터 데이터를 저장하고,
    각각의 버퍼는 복수의 메모리 워드들을 포함하고,
    상기 제 1 메모리 뱅크는 임시 포인터를 저장하고,
    임시 포인터는 상기 제 1 프로세서에 의해 처리될 다음 메모리 워드를 가리키는, 고속 통신 제어기.
  15. 제 14 항에 있어서,
    상기 제 1 프로세서는, 상기 버퍼 디스크립터에 의해 참조된 버퍼가 상기 제 1 프로세서에 의해 처리된 후에 상기 F/S 필드를 셋(set)하고,
    상기 제 2 프로세서는, 상기 버퍼 디스크립터에 의해 참조된 버퍼가 상기 제 2 프로세서에 의해 처리된 후에 상기 F/S 필드를 리셋하는 고속 통신 제어기.
  16. 제 14 항에 있어서,
    상기 제 1 프로세서가 태스크 전환을 실행할 때, 상기 제 1 메모리 뱅크에 상기 갱신된 임시 포인터를 저장하고,
    상기 제 1 프로세서가 태스크에서 명령들의 실행을 시작할 때, 상기 제 1 프로세서는 상기 임시 포인터를 인출하는, 고속 통신 제어기.
  17. 프레임들을 포함하는 데이터 스트림의 트랜잭션들을 처리하는 방법으로서, 프레임의 트랜잭션은 태스크의 실행에 의해 처리되고, 태스크 실행은 외부 유닛으로부터의 정보를 인출하는 것을 수반하는, 상기 방법에 있어서:
    트랜잭션을 처리할 필요가 있는지를 체크하는 단계;
    트랜잭션을 처리할 필요가 있다면, 상기 태스크가 종료할 때까지 또는 상기 태스크의 실행이 외부 유닛으로부터 정보를 인출하는 것을 수반할 때까지, 태스크를 실행하는 단계;
    상기 태스크가 종료되면, 트랜잭션을 처리할 필요가 있는지의 여부를 체크하는 단계로 점프하는 단계; 및
    그렇지 않다면, 상기 외부 유닛으로부터 상기 정보를 인출하는 프로세스를 개시하고, 외부 유닛으로부터 정보를 인출하는 것을 수반한 태스크의 실행을 중지하여, 트랜잭션을 처리할 필요가 있는지 여부를 체크하는 단계로 점프하는 단계를 포함하는, 데이터 스트림 트랜잭션 처리 방법.
  18. 제 17 항에 있어서,
    태스크의 실행은 통신 채널로부터 프레임의 일부를 수신할 필요가 있을 때 정지되는, 데이터 스트림 트랜잭션 처리 방법.
  19. 프레임들을 포함하는 고속 데이터 스트림을 수신하고, 송신하고 처리하기 위한 통신 제어기를 동작시키는 방법으로서,
    상기 데이터 스트림들은 프레임들을 포함하고, 상기 통신 제어기는 복수의 통신 채널들 및 외부 유닛들에 연결되고, 상기 통신 제어기는 데이터 스트림 트랜잭션들을 제어하기 위한 제 1 프로세서를 가지고; 상기 제 1 프로세서는 태스크의 실행에 의해 프레임의 트랜잭션을 제어하고; 고레벨 관리 및 통신 프로토콜 기능들을 처리하기 위한 제 2 프로세서; 상기 제 1 프로세서 및 상기 제 2 프로세서에 연결되어, 상기 제 1 프로세서 및 상기 제 2 프로세서를 외부 유닛들에 연결하기 위한 제 1 외부 버스; 상기 제 1 프로세서 및 상기 제 2 프로세서에 연결되어, 상기 제 1 프로세서 및 상기 제 2 프로세서를 외부 유닛들에 연결하기 위한 제 2 외부 버스; 및 상기 제 1 프로세서에 연결되어, 태스크를 실행할 필요가 있는지의 여부를 검출하여 어느 태스크를 실행할 것인가를 선택하는 스케쥴러를 포함하며,
    상기 통신 제어기 동작 방법은:
    트랜잭션을 처리할 필요성이 있는지의 여부를 체크하는 단계;
    트랜잭션을 처리할 필요성이 있다면, 태스크가 종료될 때까지, 또는 상기 태스크의 실행이 외부 유닛으로부터 정보를 인출하는 것을 수반할 때까지 상기 태스크를 실행하는 단계;
    상기 태스크가 종료되었다면, 트랜잭션을 처리할 필요성이 있는지의 여부를 체크하는 단계로 점프하는 단계; 및
    그렇지 않다면, 상기 외부 유닛으로부터 정보를 인출하는 프로세스를 개시하고, 외부 장치로부터 정보를 인출하는 것을 수반한 태스크의 실행을 중지하여 트랜잭션을 처리할 필요성이 있는지의 여부를 체크하는 단계로 점프하는 단계를 포함하는, 통신 제어기 동작 방법.
  20. 제 19 항에 있어서,
    상기 통신 제어기는 상기 제 1 프로세서에 연결되어, 태스크들을 저장하기 위한 명령 메모리 뱅크; 상기 제 1 프로세서에 연결되어, 상기 제 1 프로세서에 의해 처리될 데이터를 저장하기 위한 제 1 메모리 뱅크; 상기 제 1 프로세서 및 상기 제 1 외부 버스에 연결되어, 상기 제 1 외부 버스에 연결된 외부 메모리 뱅크에 저장된 정보를 인출하기 위한 제 1 직접 메모리 액세스 제어기; 상기 제 1 프로세서 및 상기 제 2 외부 버스에 연결되어, 상기 제 2 외부 버스에 연결된 외부 메모리 뱅크에 저장된 정보를 인출하기 위한 제 2 직접 메모리 액세스 제어기; 상기 스케쥴러 및 상기 제 1 메모리 뱅크에 연결되어, 복수의 통신 채널들과 상기 제 1 메모리 뱅크 간에 버퍼링을 위한 복수의 주변 장치들을 더 포함하고, 각각의 주변 장치는 2개의 요청 채널들로 이루어지고; 상기 제 1 요청 채널은 상기 통신 제어기로부터 통신 채널로 보내진 데이터의 송신을 처리하고; 상기 제 2 요청 채널은 통신 채널로부터 상기 통신 제어기로 보내진 데이터의 수신을 처리하고; 요청 채널 파라미터들은 요청 채널의 상태를 규정하고, 통신 채널 파라미터들은 통신 채널의 상태를 규정하고, 상기 외부 메모리 뱅크는 데이터를 저장하는 복수의 버퍼들을 포함하고, 상기 외부 메모리 뱅크는 포인터, 상태 및 제어 필드 및 길이 필드를 저장하는 버퍼 디스크립터를 더 포함하고,
    상기 통신 제어기 동작 방법은:
    태스크를 시작하는 단계;
    요청 채널 파라미터들을 판독하는 단계;
    통신 채널 파라미터들을 인출하고 상기 태스크가 프레임 내의 제 1 데이터 워드의 처리를 포함하는지 여부를 나타내는 통신 채널 파라미터들을 체크하는 단계;
    상기 태스크가 프레임 내의 제 1 데이터 워드의 처리를 수반하면,
    버퍼 디스크립터들을 인출하는 단계;
    임시 포인터를 버퍼 디스크립터 내의 포인터 값에 설정하는 단계;
    상기 버퍼 디스크립터가 인에이블되었는지의 여부를 체크하고, 상기 버퍼 디스크립터가 인에이블되지 않았다면, 버퍼 디스크립터가 인에이블될 때까지 대기하는 단계;
    상기 임시 포인터를 인출하는 단계를 실행하고;
    그렇지 않다면, 상기 임시 포인터를 인출하는 단계로 점프하는 단계;
    데이터를 수신한다면 통신 채널로부터 외부 유닛으로 데이터를 이동시키고, 데이터를 송신한다면 외부 유닛으로부터 통신 채널로 데이터를 이동시키는 단계;
    데이터 프레임의 끝인지 그리고 버퍼의 끝인지를 체크하는 단계;
    프레임이 끝나면, 버퍼 디스크립터를 닫고, 통신 채널 파라미터들을 갱신하고 태스크 시작 단계로 점프하는, 프레임 표시의 끝을 보내는 단계; 및
    그렇지 않다면 임시 포인터를 갱신하고 데이터를 이동시키는 단계로 점프하는 단계를 포함하는, 통신 제어기 동작 방법.
KR1020017012668A 1999-04-02 2000-03-14 고성능 통신 제어기 KR100638067B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/285,519 US6473808B1 (en) 1999-04-02 1999-04-02 High performance communication controller for processing high speed data streams wherein execution of a task can be skipped if it involves fetching information from external memory bank
US09/285,519 1999-04-02
PCT/IB2000/000698 WO2000060477A2 (en) 1999-04-02 2000-03-14 High performance communication controller

Publications (2)

Publication Number Publication Date
KR20010105407A KR20010105407A (ko) 2001-11-28
KR100638067B1 true KR100638067B1 (ko) 2006-10-25

Family

ID=23094597

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017012668A KR100638067B1 (ko) 1999-04-02 2000-03-14 고성능 통신 제어기

Country Status (7)

Country Link
US (1) US6473808B1 (ko)
EP (1) EP1177504A2 (ko)
JP (1) JP4530547B2 (ko)
KR (1) KR100638067B1 (ko)
CN (1) CN1149806C (ko)
TW (1) TW478264B (ko)
WO (1) WO2000060477A2 (ko)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6748466B2 (en) * 2001-06-29 2004-06-08 Intel Corporation Method and apparatus for high throughput short packet transfers with minimum memory footprint
US7216186B2 (en) * 2001-09-27 2007-05-08 Intel Corporation Controlling data flow between processor systems
US7158542B1 (en) 2002-05-03 2007-01-02 Atheros Communications, Inc. Dynamic preamble detection
JP2003331749A (ja) * 2002-05-17 2003-11-21 Hitachi Displays Ltd カラー陰極線管
US7139862B2 (en) * 2003-02-24 2006-11-21 Nokia Corporation Interleaving method and apparatus with parallel access in linear and interleaved order
KR100553348B1 (ko) * 2004-05-31 2006-02-20 한국전자통신연구원 피엠이엠 제어기를 이용한 고속 스트리밍 데이터 전송장치 및 방법
US20070094432A1 (en) * 2005-10-24 2007-04-26 Silicon Integrated Systems Corp. Request transmission mechanism and method thereof
US8768778B2 (en) 2007-06-29 2014-07-01 Boku, Inc. Effecting an electronic payment
GB0809381D0 (en) * 2008-05-23 2008-07-02 Vidicom Ltd Funds transfer electronically
GB0809386D0 (en) * 2008-05-23 2008-07-02 Vidicom Ltd Transferring funds electronically
GB0809383D0 (en) 2008-05-23 2008-07-02 Vidicom Ltd Customer to supplier funds transfer
GB0809382D0 (en) * 2008-05-23 2008-07-02 Vidicom Ltd Funds transfer electronically
JP5195408B2 (ja) * 2008-12-25 2013-05-08 富士通セミコンダクター株式会社 マルチコアシステム
US9652761B2 (en) 2009-01-23 2017-05-16 Boku, Inc. Systems and methods to facilitate electronic payments
US8041639B2 (en) * 2009-01-23 2011-10-18 Vidicom Limited Systems and methods to facilitate online transactions
US8116730B2 (en) * 2009-01-23 2012-02-14 Vidicom Limited Systems and methods to control online transactions
US8548426B2 (en) * 2009-02-20 2013-10-01 Boku, Inc. Systems and methods to approve electronic payments
US9990623B2 (en) 2009-03-02 2018-06-05 Boku, Inc. Systems and methods to provide information
US8700530B2 (en) 2009-03-10 2014-04-15 Boku, Inc. Systems and methods to process user initiated transactions
US8224727B2 (en) * 2009-05-27 2012-07-17 Boku, Inc. Systems and methods to process transactions based on social networking
US8160943B2 (en) * 2009-03-27 2012-04-17 Boku, Inc. Systems and methods to process transactions based on social networking
US8131258B2 (en) * 2009-04-20 2012-03-06 Boku, Inc. Systems and methods to process transaction requests
US20100306015A1 (en) * 2009-05-29 2010-12-02 Boku, Inc. Systems and Methods to Schedule Transactions
US9595028B2 (en) * 2009-06-08 2017-03-14 Boku, Inc. Systems and methods to add funds to an account via a mobile communication device
US9697510B2 (en) 2009-07-23 2017-07-04 Boku, Inc. Systems and methods to facilitate retail transactions
US9519892B2 (en) 2009-08-04 2016-12-13 Boku, Inc. Systems and methods to accelerate transactions
US8660911B2 (en) * 2009-09-23 2014-02-25 Boku, Inc. Systems and methods to facilitate online transactions
US8224709B2 (en) * 2009-10-01 2012-07-17 Boku, Inc. Systems and methods for pre-defined purchases on a mobile communication device
US8412626B2 (en) * 2009-12-10 2013-04-02 Boku, Inc. Systems and methods to secure transactions via mobile devices
US8566188B2 (en) 2010-01-13 2013-10-22 Boku, Inc. Systems and methods to route messages to facilitate online transactions
US8219542B2 (en) 2010-03-25 2012-07-10 Boku, Inc. Systems and methods to provide access control via mobile phones
US8583504B2 (en) * 2010-03-29 2013-11-12 Boku, Inc. Systems and methods to provide offers on mobile devices
US8355987B2 (en) 2010-05-06 2013-01-15 Boku, Inc. Systems and methods to manage information
EP2603891A4 (en) 2010-08-11 2018-01-03 Boku, Inc. Systems and methods to identify carrier information for transmission of premium messages
US8699994B2 (en) 2010-12-16 2014-04-15 Boku, Inc. Systems and methods to selectively authenticate via mobile communications
US8412155B2 (en) 2010-12-20 2013-04-02 Boku, Inc. Systems and methods to accelerate transactions based on predictions
US8583496B2 (en) 2010-12-29 2013-11-12 Boku, Inc. Systems and methods to process payments via account identifiers and phone numbers
US8700524B2 (en) 2011-01-04 2014-04-15 Boku, Inc. Systems and methods to restrict payment transactions
JPWO2012108411A1 (ja) 2011-02-10 2014-07-03 日本電気株式会社 符号化/復号化処理プロセッサ、および無線通信装置
WO2012148842A1 (en) 2011-04-26 2012-11-01 Boku, Inc. Systems and methods to facilitate repeated purchases
US9830622B1 (en) 2011-04-28 2017-11-28 Boku, Inc. Systems and methods to process donations
US9191217B2 (en) 2011-04-28 2015-11-17 Boku, Inc. Systems and methods to process donations

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4980820A (en) * 1985-02-28 1990-12-25 International Business Machines Corporation Interrupt driven prioritized queue
US5060140A (en) * 1986-01-16 1991-10-22 Jupiter Technology Inc. Universal programmable data communication connection system
US5193071A (en) * 1988-12-22 1993-03-09 Digital Equipment Corporation Memory apparatus for multiple processor systems
JPH05210481A (ja) * 1991-09-18 1993-08-20 Ncr Internatl Inc 直接アクセス式ビデオバス
US5721726A (en) * 1995-11-30 1998-02-24 Motorola, Inc. Transmission load control for multichannel HDLC TDM line

Also Published As

Publication number Publication date
WO2000060477A2 (en) 2000-10-12
TW478264B (en) 2002-03-01
JP2002541693A (ja) 2002-12-03
JP4530547B2 (ja) 2010-08-25
CN1346468A (zh) 2002-04-24
WO2000060477A3 (en) 2001-01-18
US6473808B1 (en) 2002-10-29
KR20010105407A (ko) 2001-11-28
CN1149806C (zh) 2004-05-12
EP1177504A2 (en) 2002-02-06

Similar Documents

Publication Publication Date Title
KR100638067B1 (ko) 고성능 통신 제어기
KR0161101B1 (ko) 호스트 인터럽트 및 지시운용을 가지는 네트워크 어댑터
JP2539614B2 (ja) ポインタアドレスを発生するための装置および方法
US6742063B1 (en) Method and apparatus for efficient transfer of data packets
US4975828A (en) Multi-channel data communications controller
US7363396B2 (en) Supercharge message exchanger
US6163820A (en) Efficient data transfer mechanism for input/output devices
US6026443A (en) Multi-virtual DMA channels, multi-bandwidth groups, host based cellification and reassembly, and asynchronous transfer mode network interface
US5133062A (en) RAM buffer controller for providing simulated first-in-first-out (FIFO) buffers in a random access memory
US5392406A (en) DMA data path aligner and network adaptor utilizing same
US4860244A (en) Buffer system for input/output portion of digital data processing system
US20040225779A1 (en) Programmable CPU/interface buffer structure using dual port RAM
JP2002541693A5 (ko)
WO2002069157A1 (en) A subsystem boot and peripheral data transfer architecture for a subsystem of a system-on-chip
JPH0824320B2 (ja) 通信制御装置における緩衝域連鎖の方法およびその装置
EP1770519A2 (en) Information processing apparatus and its data processing method capable of forming descriptor queue
GB2349717A (en) Low latency network
US5872962A (en) Program control system
US5774745A (en) Method and apparatus for writing and reading entries in an event status queue of a host memory
US5706443A (en) Method and apparatus for enabling pipelining of buffered data
US7500239B2 (en) Packet processing system
KR102260820B1 (ko) 대칭적 인터페이스 기반 인터럽트 신호 처리 장치 및 방법
JP2580382B2 (ja) 入出力命令の高速化方式
KR0170595B1 (ko) 고속 병렬 컴퓨터에서 크로스바 네트웍 라우터의 송신부에 대한 소프트웨어 애뮬레이션 방법
JPH05181778A (ja) 入出力処理装置

Legal Events

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

Payment date: 20131008

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140609

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150918

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160921

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20180918

Year of fee payment: 13