KR100570143B1 - 상호 통신 프리프로세서 - Google Patents

상호 통신 프리프로세서 Download PDF

Info

Publication number
KR100570143B1
KR100570143B1 KR1020037007559A KR20037007559A KR100570143B1 KR 100570143 B1 KR100570143 B1 KR 100570143B1 KR 1020037007559 A KR1020037007559 A KR 1020037007559A KR 20037007559 A KR20037007559 A KR 20037007559A KR 100570143 B1 KR100570143 B1 KR 100570143B1
Authority
KR
South Korea
Prior art keywords
message
processing
execution unit
block
execution
Prior art date
Application number
KR1020037007559A
Other languages
English (en)
Other versions
KR20030057574A (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 KR20030057574A publication Critical patent/KR20030057574A/ko
Application granted granted Critical
Publication of KR100570143B1 publication Critical patent/KR100570143B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Solid-Sorbent Or Filter-Aiding Compositions (AREA)
  • Other Investigation Or Analysis Of Materials By Electrical Means (AREA)
  • Saccharide Compounds (AREA)
  • Detergent Compositions (AREA)
  • Small-Scale Networks (AREA)

Abstract

본 발명은 적어도 하나의 데이터 네트워크를 통해 적어도 하나의 전용 CPU를 사용하여 원격 유닛들과 통신하는 방법 및 장치에 관한 것이다. 본 발명에 따른 메시지 처리 장치는 처리될 메시지를 수신하고 이 수신된 메시지에 대해 수행될 처리의 종류를 결정하는 제1 실행 유닛, 결정된 처리를 수행하는 제2 실행 유닛, 및 목적지 유닛으로 전송될 메시지 처리의 결과를 제시하는 제3 실행 유닛을 포함한다.

Description

상호 통신 프리프로세서{INTERCOMMUNICATION PREPROCESSOR}
본 발명은 네트워크내 통신 및 네트워크간 통신을 위한 방법 및 회로 구성에 관한 것이다. 특히, 본 발명은 적어도 하나의 데이터 네트워크를 거쳐 적어도 하나의 전용 CPU(중앙 처리 장치)를 사용하여 원격 유닛들과 통신하는 방법 및 장치에 관한 것이다.
내장형 시스템(embedded system)에서 퍼스널 컴퓨터 및 워크 스테이션을 거쳐 심지어 대규모 컴퓨터 시스템에 이르기까지의 모든 여러가지 크기의 컴퓨터 시스템은 일반적으로 하나 이상의 네트워크에 연결되어 있다. 네트워크를 통해, 컴퓨터 시스템은 원격 시스템이 대부분인 여러가지 시스템으로부터 추가의 계산을 위해 정보를 수집할 수 있다. 정보는 그 정보를 수신하는 컴퓨터 시스템에 의해 제어 또는 모니터링되게 되어 있는 원격 시스템의 동작 상태를 기술하는 파라미터를 포함할 수 있다.
최신 자동차의 전자 제어 장치(Electronic Control Unit; ECU)는 이러한 구성의 일례이다. ECU는 복수의 실시간 네트워크, 예를 들어 몇개의 개별 CAN(Controller Area Network) 버스 또는 MOST(Media Oriented Systems Transport), 즉 자동차에 사용되는 광 버스 시스템 또는 IEEE1394(Firewire; 파이 어와이어) 등의 멀티미디어 네트워크와 같은 다른 다목적 네트워크에 연결될 수 있다.
동작 중에, ECU는 원격 시스템을 제어하기 위한 응용 프로그램을 실행한다. 이와 동시에, ECU는 실행 중인 응용 프로그램에 요구되는 파라미터를 포함하는 전송 중인 데이터로부터 이러한 정보를 선택 및 검색하기 위해 각종의 버스 및 네트워크를 모니터링해야만 한다. 통상은 다수의 버스가 ECU 내에 포함된 CPU에 직접 연결되어 있다. 버스의 모니터링, 관심 정보의 선택 및 검색은 ECU의 전체 성능에 중요한 의미를 갖는 처리 부하를 야기한다. 이 처리 부하는 특히 응용 프로그램의 실행과 동시적으로 ECU에 의해 수행되어야만 하는 라우팅, 게이트웨이, 버스 브리지 및 필터링 기능들에 의해 발생된다.
일반적으로, 소형 컴퓨터 및 내장형 시스템에서는, 라우팅, 게이트웨이, 버스 브리지 및 필터링 기능들에 의해 발생된 처리 부하가 보다 적어야만 하고, 대부분의 계산 성능을 특정 CPU에 맨처음 할당되었던 목표 애플리케이션에 남겨 두어야만 한다.
이더넷과 같은 근거리 통신망(LAN)과는 달리, CAN 버스 시스템과 같은 실시간 버스 시스템은 데이터 패킷당 비교적 적은 양의 데이터를 전송한다. 이 특징은 버스 시스템의 실시간 능력, 즉 시스템이 자극에 대해 어떤 작은 상한값의 응답 시간 내에, 일반적으로 수밀리초 또는 수마이크로초 내에 응답할 수 있는 능력을 보장하는 데 중요하다. 그렇지만, 실시간 버스 시스템은 주어진 시간 내에 비교적 많은 양의 데이터 패킷을 전송할 수 있다. 따라서, 실시간 버스 시스템은 그에 연 결된 CPU에 대해 아주 높은 인터럽트율(interrupt rate)을 발생하며, 이는 관련 데이터 패킷들을 선택 및 검색을 필요로 한다. 일례로서, 5O MHz로 동작하는 PowerPC 403 CPU를 사용하는 처리 시스템에 설치된 4개의 독립적인 CAN 버스 시스템은 그 CAN 버스 시스템에 의해 트리거된 인터럽트에 의한 것만 보아도 평균 점유율(utilization in average)이 50%를 훨씬 넘는 CPU 부하를 발생시키는 인터럽트율을 야기할 수 있다.
최신 기술의 장치들에서, RISC(Reduced Instruction Set Computer) 또는 CISC(Complex Instruction Set Computer) 아키텍처 이후에 구현된 단일 또는 다중 (병렬) 프로세서와 같은 표준 컴퓨팅 시스템은 상호 통신 애플리케이션 및 작업을 수행하는 데 사용된다.
최신 기술의 컴퓨팅 시스템이 상호 통신 애플리케이션 및 작업을 위해 사용될 수 있지만, 다수의 버스 어댑터가 컴퓨팅 시스템을 거쳐 연결되어 있는 경우에는 충분한 처리 성능을 제공하는 일이 중대한 문제가 된다. 예를 들어 4개의 1 Mbps(메가비트/초) 버스 어댑터에 의해 야기되는 최악의 경우의 인터럽트율을 계산하면 초당 인터럽트율이 현재의 표준 프로세서가 제공할 수 있는 계산 능력을 훨씬 넘어서는 경우가 있을 수 있다.
비교적 많은 양의 데이터 패킷이 처리되어야만 한다는 사실이 상호 통신 응용 분야에서의 처리 시스템의 성능에 대한 요구에 상당한 영향을 미치게 된다. 전술한 상황이 실제로 벌어지는 경우에는 컴퓨팅 시스템 상에서 실행되는 다른 애플리케이션들에 의해 규정된 요건들과는 달리 처리 능력에 대한 요구가 점점 증가하 게 될 것이다.
계산 능력의 부족을 극복하기 위해 시스템 클록 주파수를 배가시킬 수 있다. 그 결과로서, 일반적으로 전력 소모도 마찬가지로 배가되어 예를 들면 시스템의 냉각과 관련한 문제들을 야기시킨다. 다른 해결책으로서 더 많은 프로세서를 시스템에 부가하는 것이 있을 수 있다. 성능을 요구하는 버스 관련 작업들 모두는 시스템 내의 부가의 프로세서 상에서 실행될 수 있다. 그렇지만, 이 결과 부가의 프로세서를 설치해야만 하기 때문에 제조 단가가 더욱 높아지게 된다.
실시간 버스 제어기에서 사용되는 다른 방법으로는 소위 "필터 레지스터(filter register)"가 있다. 필터 레지스터는 인터럽트율을 저감시켜 시간이 걸리는 메시지 어드레스 비교 동작을 감축시킴으로써 CPU(들)의 부담을 경감시켜 줄 수 있는 하드웨어 비교기에 의해 보완된다. 필터링될 메시지 ID들은 특정 레지스터, 예를 들어 16개의 식별자에 저장되며, 그 버스 상으로 접근하는 메시지들과 비교된다. 일치하는 식별자를 갖는 메시지만이 CPU로 보내진다.
미국 특허 제5,832,397호에는 복수의 차량 시스템의 동작 상태를 모니터링 및 제어하는 차량 제어 시스템에서 사용하는 통합 통신 장치가 공지되어 있으며, 각 차량 시스템은 그의 동작을 제어하는 로컬 제어 유닛을 구비하며, 상기 로컬 제어 유닛은 데이터 통신선을 사용하여 접속할 수 있고, 상기 통합 통신 장치는 적어도 하나의 메모리 유닛, 상기 로컬 제어 유닛으로부터 전송된 상기 복수의 차량 시스템의 동작 상태를 나타내는 신호들을 상기 적어도 하나의 메모리 유닛 중 하나에 저장된 제어 프로그램에 따라 수신 및 처리하고 또 상기 데이터 통신선에 의해 상기 복수의 차량 시스템으로 전송하기 위한 제어 신호들을 발생하는 중앙 처리 장치, 및 상기 데이터 통신선에 의한 상기 중앙 처리 장치와 상기 로컬 제어 유닛 사이의 통신을 상기 적어도 하나의 메모리 유닛 중 하나에 저장된 상기 제어 프로그램들 중 적어도 하나에 따라 제어하는 프로그램가능 서브프로세서를 포함한다.
1986년 11월 25일자로 특허된 미국 특허 제4,625,308호(KIM KAPS 등)는 블록 입력 처리에 대해 개시하고 있다. 블록 입력 작업은 전단 서브시스템(13022)으로부터 전송된 블록들을 수신한다. 이 작업의 주된 기능들은 순환 중복 검사(CRC)를 확인하는 기능, CRC 검사 결과에 기초하여 그 블록에 대한 긍정 응답 기능(또는 부정 응답 기능), 블록 시퀀스 번호를 확인하는 기능 및 그 블록들로부터 완성된 메시지를 조립하는 기능들이 있다. 메시지 디스패처(message dispatcher) 작업은 블록 입력 작업으로부터 메시지를 수신하고, 그 메시지 유형을 조사함으로써 의도한 메시지 목적지가 제어 서브시스템 자체인지 하위 레벨 서브시스템인지 여부를 결정한다(불명확한 경우, 메시지 목적지 필드는 목적지 서브시스템을 결정하기 위해 추가로 확인된다). 메시지 디스패처 작업이 그 의도된 메시지 목적지가 하위 레벨 서브시스템인 것으로 결정한 경우, 목적지 필드를 디코딩하고 적당한 직렬 서브시스템으로의 메시지 전송을 개시하는 직렬 서브시스템-제어 서브시스템 인터페이스 작업이 개시된다. 이 작업이 그 목적지가 제어 서브시스템 자체인 것으로 결정한 경우, 메시지 데이터를 계산하고 적당한 조치를 취하는 메시지 처리 작업이 개시된다.
1992년 10월 6일자로 특허된 미국 특허 제5,153,909호(BECKLE LEANN M 등)는 교환 시스템에 의해 서비스되는 복수의 자동 호 배분기(automatic call distributor; ACD) 시스템에 대한 자원 제어 및 호 이벤트 데이터 처리 서비스를 제공하는 ACD 시스템 구성에 기초한 전화국(central office; CO)에 대해 개시하고 있다. 이 구성은 제어 프로세서 복합 시스템(control processor complex; CPC)을 갖는 교환 시스템, ACD 최종 사용자 호 이벤트 데이터 분할 및 ACD 최종 사용자 자원 할당 메시지 스크리닝(screening)을 수행하는 특수 이벤트 및 제어 링크(Event and Control Link; ECL) 프로세서, 및 ACD에 대한 호와 관련된 통계를 추출하기 위해 데이터 처리를 수행하는 하나 이상의 관리 정보 시스템(Management Information System; MIS) 프로세서를 포함하고 있다. ECL은 CPC로부터의 호 이벤트 데이터 메시지를 수신, 분할하여 MIS 프로세서로 전송한다. ECL은 또한 ACD 자원의 할당을 제어하기 위해 ACD 최종 사용자에 의해 전송된 자원 할당 요청 메시지가 소정의 형식과 일치하는지를 검사하고 또 그 요청을 하는 최종 사용자가 요청된 자원 할당 변경을 할 수 있는 권한이 있는지를 확인함으로써 그 메시지를 스크리닝한다. 마지막으로, ECL은 다수의 MIS 프로세서와 인터페이스한다. 이들 MIS 프로세서는 CO에, 향상된 서비스 제공업자의 구내에, 또는 최종 사용자의 구내에 위치할 수 있다. 유리하게는, 최종 사용자 호 이벤트 데이터 분할 및 자원 할당 메시지 스크리닝은 CPC 프로그램의 복잡도를 증가시키지 않고 ECL에 의해 수행되며, ACD 최종 사용자는 그 자신의 MIS 프로세서의 사용, 향상된 서비스 제공업자에 의해 제공된 MIS 프로세서의 공유, 또는 교환 시스템에 설치된 MIS 프로세서의 공유 등의 옵션들에 대한 선택권이 있다.
이로부터 볼 때, 본 발명의 목적은 적어도 하나의 네트워크와 적어도 하나의 CPU 사이의 데이터 처리를 향상시키는 방법 및 장치를 제공하는 데 있다.
상기 목적은 독립항들에 기재된 방법 및 시스템에 의해 달성된다. 본 발명의 추가의 양호한 실시예들은 종속항에 기재되어 있으며 또한 이하의 상세한 설명에도 개시되어 있다.
본 방법은 적어도 하나의 데이터 네트워크를 통해 적어도 하나의 전용 CPU를 사용하여 원격 장치들과 통신하는 시스템에서의 메시지 처리에 중점을 두고 있다. 먼저, 처리될 메시지가 수신되고, 수신된 메시지에 대해 수행될 처리의 종류가 결정된다. 그 다음에 수신된 메시지의 내용 및 수신된 메시지의 상기 결정된 처리를 규정하는 메시지 고유 정보가 제1 레지스터 세트 내에 저장된다. 이어서 프로세스 실행 유닛이 처리 동작에 이용가능한 경우 메시지의 처리를 시작하기 위해 제1 레지스터 세트가 모니터링된다. 그 다음에 상기 결정된 처리가 수행된다. 반면에, 메시지의 처리가 완료된 경우 메시지 처리의 결과의 제시를 시작하기 위해 제1 레지스터 세트가 모니터링된다. 마지막으로, 목적지 유닛으로 전송될 메시지 처리의 결과가 제시된다.
적어도 하나의 데이터 네트워크를 통해 적어도 하나의 전용 CPU를 사용하여 원격 유닛들과 통신하기 위한 본 발명에 따른 메시지 처리 장치는 처리될 메시지를 수신하고 그 수신된 메시지를 가지고 수행될 처리의 종류를 결정하는 제1 실행 유닛, 상기 결정된 처리를 수행하는 제2 실행 유닛, 및 목적지 유닛으로 전송될 메시지 처리의 결과를 제시하는 제3 실행 유닛을 포함한다.
추가의 실시예들에서, 제2 실행 유닛은 이하의 특징들, 즉 수신된 메시지의 결정된 처리 및 데이터 내용을 규정하는 메시지 고유 정보를 저장하는 제1 레지스터 세트, 상기 결정된 처리를 수행하기 위해 상기 제1 레지스터 세트에 접근하는 적어도 하나의 프로세스 실행 유닛, 및/또는 상기 적어도 하나의 프로세스 실행 유닛에 연결되어 상기 프로세스 실행 유닛이 필요로 하는 정보를 저장하는 제2 레지스터 세트 중 어느 하나 또는 그 모두를 더 포함한다. 상기 메시지 처리 장치는 프로세스 실행 유닛이 처리에 이용가능하게 된 경우 메시지의 처리를 시작하도록 하기 위한 상기 제1 레지스터 세트의 모니터링 및/또는 상기 메시지의 처리가 완료된 경우 상기 메시지 처리 결과의 제시를 시작하도록 하기 위한 상기 제1 레지스터 세트의 모니터링을 행하도록 구성될 수 있다.
양호하게는, 상기 메시지 처리 장치는 네트워크내 통신 및 네트워크간 통신을 위한 상호 통신 처리 시스템에 통합되어 있다. 이 시스템은 또한 적어도 하나의 데이터 네트워크 및 적어도 하나의 전용 CPU로의 통신 연결을 제공하기 위한 스위치 보드 장치를 더 포함하며, 이 스위치 보드(switchboard)는 한쪽은 제1 및 제3 실행 유닛에 연결되어 있고 다른 한쪽은 몇개의 버스 어댑터 및 CPU들에 연결될 준 비가 되어 있는 멀티플렉서, 및/또는 한쪽은 제1 실행 유닛에 연결되어 있고 다른 한쪽은 몇개의 버스 어댑터 및 CPU들에 연결될 준비가 되어 있는 인터럽트 버스를 포함하고 있다.
본 발명에 따른 방법 및 장치의 이점은 다수의 네트워크와 통신하는 처리 유닛에 대해, 네트워크를 통해 전송되는 데이터 패킷의 양에 의해 야기되는 높은 인터럽트율로 인한 부담을 경감시켜 준다는 것이다.
도 1은 본 발명에 따른 상호 통신 프리프로세서의 상위 블록도이다.
도 2는 본 발명에 따른 상호 통신 프리프로세서의 상위 블록도이다.
도 3은 본 발명에 따른 동시적 프로세스 실행을 설명하는 도면이다.
도 4는 본 발명에 따른 상호 통신 프리프로세서의 메시지 처리를 설명하는 플로우차트이다.
도 5는 도 4에 도시된 메시지 처리 중의 초기화 프로세스에서의 메시지 처리를 설명하는 플로우차트이다.
도 6은 도 4에 도시된 메시지 처리 중의 동적 프로세스에서의 메시지 처리를 설명하는 플로우차트이다.
도 7은 도 6에 도시된 메시지 처리 중의 실행 유닛 프로세스의 메시지 처리를 설명하는 플로우차트이다.
도 8은 도 4에 도시된 메시지 처리 중의 제시 프로세스의 메시지 처리를 설명하는 플로우차트이다.
도 9는 상호 통신 프리프로세서 저장 서브시스템에 저장된 정보의 구성을 나타낸 표를 도시한 것이다.
본 발명의 상기한 그리고 그 밖의 목적, 특징 및 이점들은 이하의 상세한 설명을 보면 자명하게 될 것이다.
본 발명의 신규의 특징들은 첨부된 청구의 범위에 기재되어 있다. 그렇지만, 본 발명 자체는 물론 양호한 사용 태양, 추가의 목적 및 이점들은 첨부 도면을 참조하여 기재된 이하의 실시예들에 대한 상세한 설명을 보면 잘 이해될 것이다.
도 1은 본 발명에 따른 상호 통신 프리프로세서(100)의 상위 블록도를 나타낸 것이다. 상호 통신 프리프로세서(IPP; 100)는 3가지 상이한 종류의 프로세스를 수행하며, 그 각각의 프로세스는 별개의 실행 유닛 상에서 실행된다.
제1 종류의 프로세스는 "초기화 프로세스"라고 한다. 이 초기화 프로세스는 도 1에 블록(102)으로 나타낸 바와 같이 착신 메시지를 분석하고, 상호 통신 프리프로세서(100)에 전용된 설정 데이터 및 착신 데이터에 인코딩되어 있는 정보에 기초하여 그의 추가의 처리를 결정하며, 이에 대해서는 이후에 더욱 상세히 설명될 것이다. 초기화 프로세스(IP)는 IP 실행 유닛(104)에 의해 수행된다.
초기화 프로세스 후에, 메시지는 "동적 프로세스"라고 하는 제2 프로세스로 들어가게 된다. 동적 프로세스(DP)는 초기화 프로세스에 의해 결정되었던 작업을 수행한다. 중첩된 박스(106, 107, 108)로 표시된 바와 같이, 3개의 DP 실행 유닛이 동적 프로세스를 수행하기 위해 제공되어 있다. 이것은 수행될 작업에 따라 순 차적으로 또는 동시적으로 행해진다. 동시적으로 수행될 수 있는 서브작업들로 분할될 수 있는 하나의 착신 메시지에 대해 수행될 모든 작업들에는 그에 따라 표시가 되어 있다. 나중에 동적 프로세스 동안 하나 이상의 실행 유닛들은 그 작업들을 병렬로 수행하기 위해 사용될 수 있다. 따라서, 본 발명의 상호 통신 프리프로세서(100)의 토폴로지는 병렬 컴퓨팅 또는 순차 컴퓨팅에 한정되지 않으며, 실행될 실제의 작업에 따라 어느 한 방법을 수행할 수 있다.
즉, 공지된 최신 기술의 프로세서 토폴로지와는 달리, 상호 통신 프리프로세서 아키텍처는 고정된 프로세서 아키텍처로 동작하지 않음을 알 수 있다. 오히려 상호 통신 프리프로세서 아키텍처는 실행될 각각의 작업에 의해 트리거된다. 이와 같이, 논리적 상호 통신 프리프로세서 시스템 아키텍처는 계속적으로 그의 프로세서 토폴로지를 실제의 요건에 맞게 동적으로 조정하고 있다.
제3 종류의 프로세스는 "제시 프로세스"라고 한다. 제시 프로세스(PP)는 다수의 DP 실행 유닛들 상에서 실행되는 동적 프로세스를 모니터링하는 전용 PP 실행 유닛(110) 상에서 수행된다. 동적 프로세스 동안에 수행되는 작업들의 완료 후에, PP 실행 유닛은 착신 메시지(102)의 계산 결과로서 메시지(112)를 출력한다.
이제부터 도 2를 참조하면, 본 발명에 따른 상호 통신 프리프로세서(200)의 상위 블록도가 도시되어 있다. 도시된 상호 통신 프리프로세서(200)는 스위치 보드(201)에 연결되어 있으며, 이 스위치 보드(201)는 4개의 개별 CAN 버스(202-205) 외에도 독립적인 제1 및 제2 CPU(207, 208)에 연결되도록 설계되어 있다. 제1 및 제2 CPU(207, 208)는 각각 부가의 제1 및 제2 버스 시스템(210, 211)으로의 연결을 제공하고 있다. 부가의 제1 및 제2 버스 시스템(210, 211)은 서로 상이할 수 있으며, 예를 들면 파이어와이어 시스템, 즉 IEEE1394에 따라 규정된 고성능 직렬 버스 또는 예를 들면 MOST(Media Oriented Systems Transport)와 같은 임의의 다른 종류의 멀티미디어 버스에 의해 형성될 수 있다.
4개까지의 CAN 버스와 1개 또는 2개의 CPU를 서로 연결하는 것이 최신의 자동차에서 사용되는 일반적인 네트워크 요건이다. 그렇지만, 본 발명에 따른 상호 통신 프리프로세서는 이 특정의 버스 시스템, 특정 개수의 버스에 한정되지 않으며 또한 그 버스에 연결된 CPU의 개수에도 한정되지 않는다.
4개의 CAN 버스(202-205) 각각은 그 각각의 버스 어댑터(214-217)에 연결되어 있다. 버스 어댑터(214-217)는 CAN-C 또는 CAN-B 물리 계층을 거쳐 그 각각의 CAN-버스(202-205)으로의 연결을 제공하는 표준화된 CAN 제어기에 의해 형성될 수 있다. 한쪽에서 각각의 버스 어댑터(214-217)는 인터럽트 요청 버스(220)으로의 연결을 가지고 있다. 다른 한쪽에서, 각각의 버스 어댑터(214-217)는 멀티플렉서(222)로의 연결을 가지고 있다. 그렇지만, 멀티플렉서(222)로의 연결은 버스 어댑터(214-217)와 멀티플렉서(222)를 연결시키는 배선, PCB(인쇄 회로 기판) 트랙 또는 집적 회로 내의 연결부와 같은 한 세트의 도체들을 제공하는 버스에 의해 형성될 수 있다.
4개의 버스 어댑터(214-217)에 대응하여, 2개의 CPU(207, 208) 모두도 인터럽트 버스(220) 및 멀티플렉서(222)에 연결되어 있다. 멀티플렉서(222)는 IP(초기화 프로세스) 실행 유닛(226)의 제어 엔진(224)에도, PP(제시 프로세스) 실행 유닛(230) 내에 포함되어 있는 전송 유닛(228)에도 연결되어 있는 것으로 도시되어 있다. 제어기(232)는 제1 CPU(207), 제2 CPU(208) 및 전송 유닛(228)에 의해 각각 수신되는 전용 제어 신호선들을 거쳐 전송되는 제어 신호에 응답하여 멀티플렉서(222)를 제어한다. 전술한 구성에 의해 멀티플렉서는 버스 어댑터(214-217) 및 CPU(207, 208)로부터 제어 엔진(224) 또는 전송 유닛(228)으로의 연결을 제공할 수 있게 된다.
IP 실행 유닛(226)은 IPP 프리셋 인터페이스(234) 및 IPP 저장 서브시스템(236)을 더 포함하고 있다. IPP 프리셋 인터페이스(234)는 제1 CPU(207)에 의해 초기화될 수 있으며 제어 정보를 제어 엔진(224)과 교환할 수 있는 반면, IPP 저장 서브시스템(236)은 버스 어댑터(214-217) 중 어느 하나 또는 CPU(207, 208) 중 어느 하나로부터 수신된 메시지의 계산에 필요한 제어 정보를 저장하기 위해 제공되어 있다.
멀티플렉서(222)로의 연결을 갖는 것 이외에도, 제어 엔진(224)은 인터럽트 버스(220)에도 연결되어 있으며, DP(동적 프로세스) 실행 유닛(239) 내에 포함되어 수신된 메시지의 계산을 위해 필요한 데이터를 저장하는 실행 태그 레지스트리(execution tag registry; 238)로의 연결도 더 포함하고 있다. 실행 태그 레지스트리(238) 자체는 제1, 제2 및 제3 실행 유닛(240-244)에 연결되어 있으며, 이 실행 유닛(240-244)은 데이터의 저장 및 실행 유닛들(240-244) 사이에서의 데이터 교환을 위한 레지스터 풀(register pool; 246)에 접근할 수 있다. 실행 유닛의 개수는 3개로 한정되지 않으며, 본 발명에 따른 상호 통신 프리프로세서에 임 의의 개수의 실행 유닛이 제공될 수 있다는 것을 잘 알 것이다.
실행 태그 레지스트리(238)로부터 정보는 전용 데이터 링크를 통해 전송 유닛(228)으로 전송될 수 있다. 전송 유닛(228)으로부터 정보는 멀티플렉서(222)로 공급되거나 또는 제1 또는 제2 CPU(207, 208)로 직접 공급될 수 있다.
환언하면, PP 실행 유닛(230)은 계속적으로 실행 태그 레지스트리(238)를 모니터링 및 해석하고 있다. 특정의 데이터 필드가 "전체 프로세스 완료"를 의미하는 통지로 해독되자마자, PP 실행 유닛이 트리거되고, 전체 프로세스 기능을 완료하기 위해 특별한 "제시 프로세스" 절차가 개시된다.
제시 프로세스 절차는 전체 시스템 사양에 의해 정해진다. 그렇지만, 전형적인 작업으로는 다음과 같은 기능들이 있다. 즉, 목적지 메시지 어드레스를 가져오거나 또는 발생하는 기능, 메시지 처리의 결과인 데이터로부터 새로운 메시지를 가져와 조립하는 기능, 새로운 메시지를 지정된 목표 시스템으로 발행하는 기능 및/또는 메시지를 레지스터 파일 또는 FIFO(first-in first-out queue; 선입선출 큐)로 전송하거나 개개의 출구 메시지 큐를 우선 순위 분류하는 기능이 있다.
복잡한 제시 프로세스 기능들은 아주 효과적인 시스템을 구축하기 위해 프로세스 구동 토폴로지를 사용하여 구성될 수 있다.
실행 태그 레지스트리는 그의 완료시까지 상호 통신 프리프로세서 프로세스를 수반한다. 이 동안에, 실행 태그 레지스트리는 피드백에 의해 계속적으로 갱신된다. "보류"(pending) 상태를 갖는 동적 프로세스의 개수는 전체 상호 통신 프리프로세서 프로세스 동안 증가 및 감소될 수 있다. 그 때, 실행 태그 레지스트리 내의 모든 실행 플래그는 클리어(clear)되고, 제시 프로세스는 모든 IPP 프로세스의 마무리를 떠맡게 된다. 사후 실행 유닛(post execution unit)은 실행 태그 레지스트리에 내포된 결과 및 최종 마무리된 DP 실행 유닛에 의해 발생된 데이터를 넘겨받는다.
그 다음에, 이 정보를 사용하여 새로운 메시지를 조립한다. 최종 DP 실행 유닛 뿐만 아니라 실행 태그 레지스트리가 언로드(unload)되고 해방(release)된다.
PP 실행 유닛(230)은 메시지를 마무리하고 그 "결과" 메시지를 출력 파이프라인으로 내보낸다(push). 상호 통신 프리프로세서 설정 레지스터 내의 사양에 따른 소프트웨어 제어에 있어서는 이 시점에서 무효 메시지가 폐기 또는 거부될 수 있다. 특정의 상호 통신 프리프로세서 시스템 요건에 관해서는, PP 실행 유닛은 출력 파이프라인에 저장된 메시지에 대해 "우선 순위 분류"를 수행할 수 있다. 그 직후, 그 각각의 버스 어댑터에 대한 요청 또는 CPU에 대한 인터럽트가 발행된다. 그 각각의 버스 어댑터는 중재를 기동 및 실행하고, 전송 성공 메시지 또는 CPU의 경우에는 인터럽트 서비스 루틴 완료 메시지의 수신 시에 대응하는 출력 파이프를 클리어시킨다.
파이프 오버플로우 처리는 상호 통신 프리프로세서 시스템 설정 레지스터에 정의되어 있다. 파이프 오버플로우의 경우, 상호 통신 프리프로세서는 초기화 실행 유닛을 중지시키고 CPU에 오버플로우 상황을 통지하는 인터럽트를 CPU로 발행한다.
제어기(232), 멀티플렉서(222) 및 인터럽트 버스(220)는 스위치 보드(201)를 형성하고 있다. 스위치 보드(201)는 실제의 상호 통신 프리프로세서에 대한 기능 확장으로서 유리한 시스템 특성을 향상시킬 수 있다. 스위치 보드(201) 하드웨어 기능은 도 2에 도시한 바와 같이 상호 통신 프리프로세서, CPU(207, 208) 및 다양한 버스 어댑터(214-217) 사이에 삽입된다.
스위치 보드(201)는 CPU(207, 208) 중 어느 하나 또는 상호 통신 프리프로세서(200)에 의해 제어되는 멀티플렉싱 방식이다. 이것에 의해 CPU(207, 208)는 상호 통신 프리프로세서(200)의 기능을 사용할 수 있다. 예를 들어, CPU(207, 208) 중 어느 하나에 의해 발생된 메시지는 몇개의 CAN 버스(202-205)로 똑같이 브로드캐스트되어야만 한다. 이 경우, 그 메시지는 스위치 보드(201)에 의해 상호 통신 프리프로세서(200)로 멀티플렉싱되고, 그 다음에 상호 통신 프리프로세서(200)는 그 메시지를 처리하여 즉각적인 배분을 개시한다. 이 절차는 시간을 상당히 절감시켜 주는데, 그 이유는 이 작업을 수행하는 데 전용되어 있는 상호 통신 프리프로세서(200)가 CPU(207, 208) 중 어느 하나에 의해 형성된 마스터 CPU와 비교하여 아주 적은 처리 시간만을 필요로 하기 때문이다. 게다가, 메시지가 전송 이전에 계산될 필요가 있는 경우, 마스터 CPU는 단 하나의 메시지 연산을 실행시키기만 하면 되고 이에 따라 처리 시간도 절감하게 된다.
도 3은 본 발명에 따른 동시적인 프로세스 실행을 설명하는 도면이다. x-축(302)은 시간의 경과를 나타내고, y-축(304)은 상호 통신 프리프로세서 자원의 점유, 즉 DP 실행 유닛들 및 실행 태그 레지스트리 내의 저장 공간의 점유를 나타내며, 이는 도 2를 참조하여 기재되어 있다.
직사각형(306)은 실행 태그 레지스트리 ETR(n) 내의 하나의 저장 공간 및 하나의 특정 착신 메시지의 처리에 관여하는 모든 DP 실행 유닛들을 포함하고 있으며, 여기서 문자 "n"은 실행 태그 레지스트리의 임의의 저장 공간이 사용될 수 있다는 것을 나타낸다. 이에 따라, DP 실행 유닛들에 "1", "2", "3" 및 "m"의 번호를 매기는 것은 최대 "m"개의 DP 실행 유닛이 있다는 것을 나타내며, 여기서 "m"은 3보다 큰 정수이다. 그렇지만, 병렬 DP 실행 유닛의 개수는 본 발명의 기초 사상을 벗어나지 않고 실제의 성능 요구에 따라 선택될 수 있다는 것을 잘 알 것이다.
하나의 착신 메시지가 처리된 후에, 다른 착신 메시지가 실행 태그 레지스트리의 동일 저장 공간을 사용하여 계산될 수 있다. 그와 동시에, 중첩된 제2 직사각형(308)으로 나타낸 바와 같이 여러가지 다른 메시지들이 실행 태그 레지스트리 내의 상이한 저장 공간을 사용하여 처리될 수 있다. 그렇지만, 전형적으로는 2개 이상의 메시지가 동시적으로 처리된다.
DP 실행 유닛에 의한 착신 메시지의 처리는 화살표(310)로 나타낸 바와 같이 IP 실행 유닛(도 2 참조)에 의해 개시된다. IP 실행 유닛은 실행 태그 레지스트리의 저장 공간을 할당하고 착신 메시지에 대한 지정된 처리를 수행하는 데 DP 실행 유닛이 필요로 하는 모든 정보를 저장한다. 초기화 후에, IP 실행 유닛은 이용가능한 그 다음 착신 메시지를 즉각적으로 처리한다. 이에 따라, IP 실행 유닛은 실행 태그 레지스트리의 다른 저장 공간을 할당하고 그 다음 착신 메시지에 대한 지정된 처리를 수행하는 데 DP 실행 유닛이 필요로 하는 모든 정보를 저장한다.
초기화 프로세스 후에(프로세스 상태 1), 실행 태그 레지스트리의 특정의 저 장 공간은 그 메시지의 처리가 완료될 때까지 할당된 채로 있다. 도 3에 도시한 예에서, 3개의 서로 다른 DP 실행 유닛이 착신 메시지를 동시적으로 처리하기 시작한다(프로세스 상태 2). 이것은 실행 태그 레지스트리의 점유된 저장 공간에서의 각각의 플래그를 설정함으로써 행해지며, 따라서 이용가능한 DP 실행 유닛은 자동적으로 작업을 선택하여 처리를 시작할 수 있다. 처리될 준비가 되어 있는 모든 프로세스가 DP 실행 유닛에 제공되는 본 발명의 개념은 상호 통신 프리프로세서의 자원의 유연한 사용 방식을 보장하는 것이다. 수행될 특정의 작업 및 작업 부하에 따라, 상호 통신 프리프로세서는 특정의 작업을 순차적으로 또는 병렬적으로 또는 이 둘의 조합에 의해 처리한다.
DP 실행 유닛 dp_EU(2)이 그의 계산을 완료한 후에, 다른 프로세스가 DP 실행 유닛 dp_EU(m) 상에서 기동되며, 이는 DP 실행 유닛 dp_EU(3)으로부터의 결과를 기다린다. 모든 관여 DP 실행 유닛들이 그들의 작업을 완료한 후에만, 제시 프로세스(프로세스 상태 3)가 그 계산 결과를 판독하여 이를 버스로 전송하거나 CPU로 전달한다(도 2 참조). 그와 동시에, 실행 태그 레지스트리의 저장 공간은 해방되고 수행될 다른 메시지를 위해 재사용될 수 있으며, 이는 동일 저장 공간 내의 새로운 엔트리 및 새로운 "ETR 로드"(load ETR) 프로세스에 의해 도시되어 있다.
이제부터 도 4를 참조하면, 본 발명에 따른 상호 통신 프리프로세서의 메시지 처리를 설명하는 플로우차트가 도시되어 있다. 이 프로세스는 버스 어댑터(402-405) 중 어느 하나 또는 CPU 어댑터(407, 408) 중 어느 하나에 의해 인터럽트 요청을 인터럽트 버스(410)를 거쳐 블록(412)로 도시된 인터럽트 모니터(interrupt monitor)에 전송함으로써 개시된다. 인터럽트 모니터는 인터럽트를 포착하고 추가의 처리를 개시한다. 이것은 블록(414)으로 도시한 바와 같이 임의의 인터럽트 요청(IRQ)이 발생되었는지 여부의 결정에 의해 행해진다.
"아니오"인 경우, 프로세스는 블록(412)로 되돌아가고, "예"인 경우 프로세스는 블록(416)으로 진행하여 초기화 프로세스를 실행하며, 이에 대해서는 이하에서 보다 상세히 설명할 것이다. 초기화 프로세스는 인터럽트 요청을 발생함으로써 성공하였던 특정의 유닛으로부터 메시지 정보를 수집한다.
이하에서 보다 상세하게 설명하게 될 블록(418)으로 도시된 DP(동적 프로세스) 실행 프로세스는 초기화 프로세스를 모니터링한다. DP 실행 프로세스가 새로 도착한 메시지 데이터를 계산할 수 있는 경우, 그 프로세스 및 메시지 정보는 블록(418)으로 보내진다. 게다가, DP 실행 프로세스 자체는 이하에서 보다 상세하게 설명하게 될 PP(제시 프로세스) 실행 프로세스에 의해 모니터링된다. DP 실행 프로세스가 처리 중인 메시지의 계산을 완료한 경우, 모니터링 PP는 그 완료를 검출하고 그 스스로가 추가의 계산을 위해 그 메시지를 넘겨 받는다. 이 프로세스는 PP 실행 프로세스를 나타내는 블록(420)으로 진행한다. PP 실행 프로세스 자체는 인터럽트 요청을 CPU(407, 408) 중 어느 하나로 전송하고 계산된 메시지 데이터를 데이터 버스(422)를 거쳐 그 각각의 CPU(407, 408)에 기입한다.
도 5를 참조하면, 도 4에서 설명한 메시지 처리의 초기화 프로세스에서의 메시지 처리를 나타낸 플로우차트가 도시되어 있다. 블록(500)은 현재의 프로세스의 시작점을 나타낸 것으로서, 도 4에 도시한 프로세스가 블록(416), 즉 초기화 프로 세스로 넘어갈 때 도달하게 된다. 블록(500)으로부터, 프로세스는 초기화 프로세스 실행 유닛(도 2 참조)이 메시지 데이터를 접수할 준비가 되어 있는지 여부를 결정하는 블록(502)으로 즉각 진행한다. "아니오"인 경우, 프로세스는 블록(504)으로 도시한 대기 상태에 의한 소정의 기간 동안 지연된 후에 블록(502)으로 돌아간다. "예"인 경우, 프로세스는 메시지를 검색하여 중간 저장하는 것을 나타내는 블록(506)으로 진행한다.
블록(502)의 결정은 초기화 프로세스 실행 유닛이 블록(508)으로 표시된 IP 실행 유닛에 관련된 상태 플래그로부터 메시지 데이터를 수신할 준비가 되어 있는지 여부의 정보를 가져온다. IP 실행 유닛이 처리할 새로운 메시지 데이터를 접수한 후에, 상태 플래그는 사용 중(busy)으로 설정된다. 그와 동시에, 인터럽트 요청의 개수를 카운트하는 내부 카운터가 증가되고, 블록(510)으로 표시된 지연 타이머가 기동된다. 지연 타이머는 지연 시간이 경과하면 타임아웃 이벤트를 발생한다. 블록(512)은 인터럽트 요청 카운터가 소정의 값에 도달하였는지 여부의 결정을 나타낸다. "예"인 경우, 블록(514)으로 이벤트를 발생시키고, 블록(514)에서는 블록(512)의 결정의 "예" 이벤트와 블록(518)에서 계산된 논리 AND의 결과가 "예"인지 여부의 결정을 나타내는 블록(516)의 "예" 이벤트와의 논리 OR를 행한다.
블록(518)은 블록(510)의 지연 타이머로부터 타임아웃 이벤트와 실행 태그 레지스트리(도 2 참조)가 이용가능한지 여부에 대한 블록(520)의 결정의 "아니오" 이벤트를 수신한다. 블록(516)의 결정 또는 블록(512)의 결정 중 어느 하나가 "예"인 경우, 프로세스는 CPU들 중 하나에 대해 인터럽트 요청이 발생되고 그 CPU로 메시지 데이터가 전송되는 단계를 나타내는 블록(522)으로 나아간다. 이 특정의 루틴은 IPP가 이용가능하지 않거나 사용중인 상황을 나타내는 데 적합하고, 이 때문에 이 시점에서 그 각각의 메시지 요청을 처리할 수 없다. 이 특정의 경우에, 메시지는 CPU들 중 하나로 "미처리 상태로/그대로" 전달된다.
블록(506)으로 다시 가면, 프로세스는 블록(524)로 진행하여 IPP 임시 저장 장치(transition storage)(도 2 참조)에 접근하고, 실행 태그 레지스트리가 할당된다. 레지스트리의 할당은 프로세스가 블록(514)에 도달하였을 때 타임아웃 이벤트가 아직 일어나지 않은 경우에도 발생된다.
블록(520)에서 결정된 바와 같이 실행 태그 레지스트리가 이용가능하게 된 경우, 프로세스는 실행 태그 레지스트리의 기동 및 준비 단계를 나타내는 블록(526)으로 진행한다. 이와 동시에, 블록(508)의 상태 플래그는 "준비 완료"로 설정된다. 블록(526)으로부터, 프로세스는 블록(528)로 나타낸 도 6의 플로우차트의 시작 블록(600)으로 진행한다.
이제 도 6을 참조하면, 도 4에 도시한 메시지 처리의 동적 프로세스에서의 메시지 처리를 설명한 플로우차트가 도시되어 있다. 블록(600)은 도 5에 도시한 프로세스가 블록(528)으로 넘어갈 때 도달하게 되는 현재의 프로세스의 시작점을 나타낸다. 블록(600)으로부터, 프로세스는 실행 태그 레지스트리를 모니터링하는 단계를 나타내는 블록(602)으로 즉각 진행한다. 이것은 라운드-로빈 절차를 사용하거나 실행 태그 레지스트리에 변경이 있을 때마다 인터럽트 신호를 자발적으로 발생시키는 절차를 사용함으로써 행해질 수 있다.
그 다음에, 프로세스는 처리될 실행 태그 레지스트리가 있는지 여부를 결정하는 블록(604)에 도달한다. "아니오"인 경우, 프로세스는 블록(606)으로 나타낸 바와 같이 실행 태그 레지스트리를 다시 모니터링한 후에 블록(602)으로 되돌아간다. "예"인 경우, 프로세스는 블록(608)으로 진행하여 메시지를 검색하여 중간 저장하게 된다. 그 다음에, 블록(610)으로 진행하여 실행 태그 레지스트리 작업이 할당되고, 실행 태그 레지스트리 플래그는 "처리 중"으로 설정되며, 이는 또한 블록(611)에도 도시되어 있다. 이후 블록(612)에서, 메시지 데이터는 실행 태그 레지스트리 작업에 따라 처리된다.
실행 태그 레지스트리 작업은 이하의 작업들, 특히 메시지 데이터의 저장, 타이머의 초기화, 타이머의 비교, 이벤트 또는 사건의 카운트, 이벤트 또는 사건의 비교, 부울 연산의 수행, 새로운 메시지의 조립 중 하나 이상일 수 있다. 실행 태그 레지스트리 작업의 처리 동안에, 레지스터 풀(register pool)(도 2 참조)에 접근하여(블록 614), 레지스터 공간을 할당할 뿐만 아니라 레지스터 공간에 대한 원하는 접근권에 따라 그 각각의 레지스터 공간에 "비공개"(private) 또는 "공개"(public) 표시를 한다.
블록(616)에서의 결정은 처리가 완료되었는지 여부를 검사한다. "아니오"인 경우, 프로세스는 블록(612)으로 진행한다. "예"인 경우, 프로세스는 블록(604)으로 되돌아가고 더 이상 할 일이 없는 경우 실행 태그 레지스트리 플래그가 블록(618)에 도시한 바와 같이 "처리 완료"로 설정된다. 현재의 메시지 데이터의 처리가 완료되었지만 프로세스가 카운터를 기동시켜 부가의 메시지를 대기할 필요 가 있는 경우에는, 실행 태그 레지스트리 플래그는 블록(620)에 도시한 바와 같이 "보류 중"으로 설정된다. 그렇지만, 블록은 블록(611, 618, 620) 모두로부터 블록(602)으로 되돌아간다.
도 7은 도 6에 도시한 메시지 처리의 실행 유닛 프로세스의 메시지 처리를 보다 상세하게 도시한 플로우차트를 나타낸 것이다. 블록(700)은 진입점을 형성하며, 원안에 문자 "a"로 표시한 도 6의 블록(612)으로의 이행에 대응한다. 먼저, 블록(702)으로 나타낸 바와 같이 메시지 처리 절차가 확인되고 자원 요건이 결정된다. 그 다음에, 프로세스는 계속하여 블록(704)으로 나타낸 바와 같이 처리될 메시지 데이터로 식별되는 프로세스에 대응하는 보류 중인 프로세스에 대한 레지스터 풀을 스캔하게 된다. 그 다음에, 프로세스는 블록(706)에 도달하여 레지스터 풀에서 일치하는 프로세스 ID가 발견되었는지 여부를 결정한다. "예"인 경우, 프로세스는 블록(708)으로 분기하여 필요한 레지스터를 할당하게 된다. 이 시점에서 수행되는 전형적인 동작은 예를 들면 논리 연산 또는 함수의 결과 데이터를 저장하는 것일 수 있다. 그 각각의 OR 함수는 제1 파라미터로서 새로운 메시지 데이터를 사용하고 제2 파라미터로서 현재의 레지스터 데이터 내용을 사용하게 될 것이다. 필요한 경우, 시간 스탬프(time stamp)가 새로 생성된 엔트리에 적용된다. 게다가, 메시지 발생 시간 한계에 도달하였는지 여부를 결정하기 위해 그 시간을 소정의 순간 시간과 비교한다.
"아니오"인 경우, 블록(710)으로 진행하여 레지스터 풀 공간을 할당하고 특정의 레지스터 공간에 "공개"라고 표시한다. 그 다음에, 블록(712)에서, 첫번째로 시간 스탬프가 저장되고, 두번째로 메시지 데이터가 저장되며, 마지막으로 실행 태그 레지스트리가 블록(714)으로 나타낸 바와 같이 "보류 중"으로 설정된다.
블록(708)으로부터, 프로세스는 시간 스탬프 값이 파라미터 "tr"보다 큰지 여부의 결정 블록(716)으로 진행하며, 이에 따라 파라미터 "tr"는 계산 및 처리될 메시지 발생의 시간 주기와 같게 된다. "아니오"인 경우, 프로세스는 블록(714)으로 분기한다. "예"인 경우, 프로세스는 블록(718)으로 진행하여 실행 태그 레지스트리 플래그를 값 "처리 완료"로 설정한다. 블록(714, 718)으로부터, 프로세스는 원안에 문자 "b"로 표시된 도 6의 블록(602)으로 진행한다.
도 8을 참조하면, 도 4에 도시된 메시지 처리의 제시 프로세스의 메시지 처리를 나타낸 플로우차트가 도시되어 있다. 블록(800)은 도 4에 도시한 프로세스가 블록(420)으로 넘어갈 때 도달하게 되는 현재의 프로세스의 시작점을 나타낸다. 블록(800)으로부터, 프로세스는 블록(802)으로 바로 진행하여 실행 태그 레지스트리를 모니터링한다. 이것은 라운드-로빈 절차를 사용하거나 또는 실행 태그 레지스트리에 변경이 있을 때마다 인터럽트 신호를 곧바로 발생시키는 절차를 사용하여 행해질 수 있다.
그 다음에, 프로세스는 블록(804)으로 나타낸 바와 같이 대응하는 프로세스가 완료되었다는 것을 나타내는 실행 태그 레지스트리 플래그가 있는지 여부의 결정에 이르게 된다. "아니오"인 경우, 프로세스는 블록(806)으로 나타낸 바와 같이 실행 태그 레지스트리를 다시 모니터링한 후에 블록(802)으로 되돌아간다. "예"인 경우, 프로세스는 블록(808, 810)으로 진행한다. 블록(808)은 계산된 메시지의 수 신자가 CPU인지 여부를 결정한다. "아니오"인 경우, 프로세스는 블록(808, 810)으로 되돌아간다. "예"인 경우, 블록(812)에 나타낸 바와 같이 메시지 데이터와 ID를 결합함으로써 CPU 메시지가 조립된다. 그 다음에, 프로세스는 블록(814)으로 진행하여 CPU에 인터럽트를 보내어 CPU에 대해 그 메시지를 수신하도록 통지한다. 그 다음에, 프로세스는 모든 수신자들이 그 메시지를 넘겨 받았는지 여부의 결정 블록(816)으로 진행한다. "아니오"인 경우, 프로세스는 블록(818)으로 나타낸 대기 상태에 의해 소정의 기간 동안 지연된 후에 블록(816)으로 되돌아간다. "예"인 경우, 프로세스는 블록(820)으로 진행하여 그 각각의 실행 태그 레지스트리가 클리어되고 해방된 후에 블록(802)으로 되돌아간다.
블록(810)으로 다시 가면, 계산된 메시지의 수신자가 버스 어댑터들(도 2 참조) 중 어느 하나인지 여부를 결정한다. "아니오"인 경우, 프로세스는 블록(808, 810)으로 되돌아간다. "예"인 경우, 블록(812)에 나타낸 바와 같이 메시지 데이터와 ID를 결합시킴으로써 버스 어댑터 메시지가 조립된다. 그 다음에, 프로세스는 블록(824)으로 진행하여 조립된 메시지를 각각의 버스 어댑터 제어기와 관련된 송신 버퍼(send buffer)로 전송한다. 그 다음에, 프로세스는 전술한 결정 블록(816)으로 진행한다.
도 9는 도 2의 IPP 저장 서브시스템(236)에 저장된 정보의 구성의 일례를 나타낸 표(900)를 도시한 것이다. 저장 서브시스템은 종래의 메모리 장치로 형성될 수 있으며, 예를 들면 도 9에 따른 일례에 도시한 바와 같이 8192 메모리 어드레스는 각각 32 비트의 저장 용량을 갖는다. 저장 서브시스템의 내용은 상호 통신 프 리프로세서에 연결된 CPU들 중 하나에 의해 설정될 수 있다. 이와 같이, 상호 통신 프리프로세서는 특정의 애플리케이션의 요구에 따라 구성될 수 있다. 그렇지만, 표(900)의 정보는 2개 이상의 표 또는 메모리 장치에 교대로 저장될 수 있다. 게다가, 표에 대한 이하의 설명은 단지 일례에 불과한 것으로서 동일 또는 해당 정보가 이와 유사하게 저장될 수 있다는 것을 잘 알 것이다.
데이터 비트(0-7)는 수신된 데이터 메시지의 계산에 사용되는 파라미터에 대한 포인터를 저장하는 데 사용된다. 파라미터 자체는 전용 메모리 장치에 저장되며, 도 2의 IPP 저장 서브시스템에도 저장될 수 있다. 다른 대안에서는, 파라미터값을 직접 가지고 있는 데이터 필드가 제공된다. 그 다음 데이터 비트(8-10)는 메시지 필터 연산 코드(op-code)를 인코딩하는 데 사용되며, 이 연산 코드는 메시지 필터 연산 코드 표(910)에 나타내었다.
메시지 필터 연산 코드 표(910)에서, 값 "0" 및 "1"은 이진값인 반면, 문자 "n"은 그 각각의 기능에 대해 "0" 또는 "1"로 채워질 수 있다. 문자 "x"는 소위 "임의의 값(don't care)"을 나타낸다, 즉 특정의 숫자가 "0" 또는 "1" 중 어느 하나로 채워질 수 있으며 그 시스템에 어떤 논리적 영향도 주지 않는다. 데이터 메시지에 의해 선택된 메모리 셀이 "000"으로 설정된 각각의 이진 숫자(8-10)를 나타내는경우, 시간 스탬프는 그 각각의 메시지의 계산 동안에 발생될 것이다. 그것이 다른 메시지 필터 연산 코드 중 하나인 경우, 다른 연산, 예를 들면 카운트 스탬프의 생성, 추가의 계산없이 메시지의 즉각 전송 또는 파라미터의 적용이 수행되게 된다.
이와 마찬가지로, 그 이후의 3비트(11-13)가 구성된다. 이들은 데이터 연산 코드 표(920)에 표시된 바와 같이 데이터 연산 코드를 나타낸다. 데이터 연산 코드의 인코딩에 따라, 데이터 메시지의 내용이 복사되거나, 또는 OR, AND 또는 XOR(배타적 OR)등의 부울 연산이 메시지 내용에 적용된다. 게다가, 파라미터가 메시지에 적용될 수 있다. 다른 실시예에서는 다른 연산들이 구현될 수 있다는 것을 이해할 것이다. 그렇지만, 부동 소수점 연산과 같은 보다 복잡한 수학 연산의 경우, 메시지는 추가의 계산을 위해 CPU들 중 어느 하나로 즉각 전송될 수 있다. 상호 통신 프리프로세서에서 비교적 간단한 연산만을 구현하는 방법은 상호 통신 프리프로세서의 하드웨어 구현 노력을 저감시키는 데 도움이 된다.
7 데이터 비트(14-20)에서, 어드레스 셀을 선택하는 메시지의 목적지는 버스 목적지 필드 표(930)에 표시된 바와 같이 인코딩된다. 비트(14-19)의 각각은 버스 어댑터 또는 CPU(도 2 참조) 중 어느 하나를 그 각각의 메시지의 목적지로서 나타낸다. 2개 이상의 비트가 설정되어 있는 경우, 메시지는 2개 이상의 목적지로 전송된다. 비트 20이 "1"로 설정되어 있는 경우에만, 메시지가 삭제된다.
나머지 11 비트(21-31)는 ID(식별 번호) 변환을 인코딩하는 데 사용된다. 이것은 착신 메시지가 예를 들면 다른 네트워크로 전송되기 이전에 변경될 필요가 있는 경우에 사용된다.
착신 메시지에 대해 수행될 특정의 처리가 저장되어 있는 어드레스는 착신 메시지의 ID에 해당한다. 따라서, 착신 메시지의 메시지 ID에 따라, 그 각각의 어드레스가 선택되고 인코딩된 처리는 판독되어 전술한 바와 같이 실행 태그 레지스 트리에 저장된다.
본 발명에 따른 상호 통신 프리프로세서의 추가의 이점들은 특히 비교적 적은 양의 하드웨어 게이트만이 필요하므로 시스템 단가를 낮추게 된다는 것이다. 게다가, 이것은 시스템 전력 소모, 물리적 크기를 감소시키고 신뢰성을 향상시킨다. 상호 통신 프리프로세서는 브리지, 라우터, 게이트웨이 기능들에 대한 작업 부하를 최소한으로 경감시킴으로써 마스터 CPU에 대한 부하를 경감시킨다는 점에서 유리하다. 이와 같이, CPU는 시스템 애플리케이션에 대해 더 많은 계산 능력을 갖게 된다. 전체 시스템의 기능은 강력한 메시지 필터링에 의해 향상된다.
본 발명은 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합에 의해 실시될 수 있다. 임의의 종류의 컴퓨터 시스템 - 또는 전술한 방법들을 실행하는 데 적합한 다른 장치 -도 적합하다. 하드웨어와 소프트웨어의 전형적인 조합은 로드되어 실행될 때 컴퓨터 시스템을 제어하여 전술한 방법들을 실행하도록 하는 컴퓨터 프로그램을 갖는 범용 컴퓨터 시스템일 수 있다. 본 발명은 또한 전술한 방법들을 구현할 수 있는 모든 특징들을 포함하고 컴퓨터 시스템에 로드될 때 이들 방법들을 실행할 수 있는 컴퓨터 프로그램 제품 내에 내장될 수도 있다.
이러한 맥락에서의 컴퓨터 프로그램 수단 또는 컴퓨터 프로그램은, 정보 처리 능력을 갖는 시스템으로 하여금 특정의 기능을 직접 수행하거나 또는 a) 또다른 언어, 코드 또는 표기법으로 변환하는 것과 b) 다른 유형의 형식으로의 재현하는 것 중 어느 하나 또는 그 양쪽 모두를 행한 이후에 수행하도록 되어 있는, 임의의 언어, 코드 또는 표기법으로 되어 있는 한 세트의 명령어로 된 임의의 표현식을 의미한다.

Claims (16)

  1. 적어도 하나의 데이터 네트워크(202-205)를 통해 적어도 하나의 전용 CPU(207, 208)를 사용하여 원격 유닛들과 통신하는 메시지 처리 장치(200)로서,
    처리될 메시지를 수신하고 상기 수신된 메시지에 대해 수행될 처리의 종류를 결정하는 제1 실행 유닛(226) - 상기 제1 실행 유닛(226)은 수신된 메시지에 대해 수행될 처리를 결정하는 데 사용되는 제어 정보를 저장하는 메모리 장치(236)를 포함함 -,
    상기 결정된 처리를 수행하는 제2 실행 유닛(239) - 상기 제2 실행 유닛(239)은 상기 수신된 메시지의 결정된 처리 및 데이터 내용을 규정하는 메시지 고유 정보를 저장하는 제1 레지스터 세트(238)를 포함하고, 또 상기 제2 실행 유닛(239)은 프로세스 실행 유닛(240, 242, 244)이 처리에 이용가능하게 되면 메시지의 처리를 시작하기 위해 상기 제1 레지스터 세트(238)를 모니터링하도록 구성되어 있음 -, 및
    목적지 유닛으로 전송될 상기 메시지 처리의 결과를 제시하는 제3 실행 유닛(230) - 상기 제3 실행 유닛(230)은 상기 메시지의 처리가 완료되면 그 메시지 처리의 결과를 제시하기 시작하기 위해 상기 제1 레지스터 세트(238)를 모니터링하도록 구성되어 있음 -
    을 포함하는 메시지 처리 장치.
  2. 제1항에 있어서, 상기 제2 실행 유닛(239)은 상기 결정된 처리를 수행하기 위해 상기 제1 레지스터 세트(238)에 접근하는 적어도 하나의 프로세스 실행 유닛(240, 242, 244)을 포함하는 것인 메시지 처리 장치.
  3. 제2항에 있어서, 상기 제2 실행 유닛(239)은 상기 결정된 처리를 수행하기 위해 상기 제1 레지스터 세트(238)에 접근하는 3개 이상의 프로세스 실행 유닛(240, 242, 244)을 포함하는 것인 메시지 처리 장치.
  4. 제2항에 있어서, 상기 제2 실행 유닛(239)은 상기 적어도 하나의 프로세스 실행 유닛(240, 242, 244)에 연결되어 있음과 동시에 상기 프로세스 실행 유닛(240, 242, 244)이 필요로 하는 정보를 저장하는 제2 레지스터 세트(246)를 포함하는 것인 메시지 처리 장치.
  5. 제1항에 있어서, 상기 제1 실행 유닛(226)은 상기 수신된 메시지에 대해 수행될 처리를 결정하는 데 사용되는 상기 제어 정보로 상기 메모리 장치(236)를 구성하는 인터페이스를 포함하는 것인 메시지 처리 장치.
  6. 네트워크내 통신 및 네트워크간 통신을 위한 상호 통신 처리 시스템으로서,
    청구항 제1항 내지 제5항 중 어느 한 항에 기재된 메시지 처리 장치, 및
    상기 적어도 하나의 데이터 네트워크(202-205)와 상기 적어도 하나의 전용 CPU(207, 208)로의 통신 연결을 제공하는 스위치 보드 장치를 포함하는 상호 통신 처리 시스템.
  7. 제6항에 있어서, 상기 스위치 보드는 한쪽은 제1 및 제3 실행 유닛(226, 239)에 연결되어 있고 다른 한쪽은 몇개의 버스 어댑터(214-217) 및 상기 적어도 하나의 CPU(207, 208)에 연결되도록 준비되어 있는 멀티플렉서를 포함하는 것인 상호 통신 처리 시스템.
  8. 제7항에 있어서, 상기 스위치 보드는 한쪽은 상기 제1 실행 유닛(226)에 연결되어 있고 다른 한쪽은 몇개의 버스 어댑터(214-217) 및 상기 적어도 하나의 CPU(207, 208)에 연결되도록 준비되어 있는 인터럽트 버스를 더 포함하는 것인 상호 통신 처리 시스템.
  9. 제7항에 있어서, 상기 스위치 보드는 상기 멀티플렉서를 제어하는 제어기(232)를 더 포함하고,
    상기 제어기는 상기 제3 실행 유닛(230) 또는 상기 적어도 하나의 CPU(207, 208)에 의해 통제되도록 구성되어 있는 것인 상호 통신 처리 시스템.
  10. 적어도 하나의 데이터 네트워크(202-205)를 통해 적어도 하나의 전용 CPU(207, 208)를 사용하여 원격 유닛들과 통신하는 시스템에서의 메시지 처리 방법으로서,
    처리될 메시지를 수신하고 상기 수신된 메시지에 대해 수행될 처리의 종류를 결정하는 단계,
    상기 수신된 메시지의 내용 및 상기 수신된 메시지의 결정된 처리를 규정하는 메시지 고유 정보를 제1 레지스터 세트(238) 내에 저장하는 단계,
    프로세스 실행 유닛(240, 242, 244)이 처리에 이용가능하게 되면 메시지의 처리를 시작하기 위해 상기 제1 레지스터 세트(238)를 모니터링하는 단계,
    상기 결정된 처리를 수행하는 단계 - 상기 처리는 순차적으로 행해지거나, 병렬 처리를 사용하여 행해지거나 또는 이 양자의 조합에 의해 행해짐 -,
    상기 메시지의 처리가 완료되면 그 메시지 처리의 결과 제시를 시작하기 위해 상기 제1 레지스터 세트(238)를 모니터링하는 단계, 및
    목적지 유닛으로 전송될 상기 메시지 처리의 결과를 제시하는 단계를 포함하는 메시지 처리 방법.
  11. 제10항에 있어서, 상기 수신된 메시지에 대해 수행될 처리를 결정하는 데 사용되는 제어 정보를 저장하는 초기 단계를 더 포함하는 메시지 처리 방법.
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
KR1020037007559A 2000-12-09 2001-10-27 상호 통신 프리프로세서 KR100570143B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP00127047.9 2000-12-09
EP00127047 2000-12-09
PCT/EP2001/012470 WO2002047355A1 (en) 2000-12-09 2001-10-27 Intercommunication preprocessor

Publications (2)

Publication Number Publication Date
KR20030057574A KR20030057574A (ko) 2003-07-04
KR100570143B1 true KR100570143B1 (ko) 2006-04-12

Family

ID=8170621

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037007559A KR100570143B1 (ko) 2000-12-09 2001-10-27 상호 통신 프리프로세서

Country Status (9)

Country Link
US (1) US7140026B2 (ko)
EP (1) EP1346549B1 (ko)
JP (1) JP3864252B2 (ko)
KR (1) KR100570143B1 (ko)
CN (1) CN1235380C (ko)
AT (1) ATE289731T1 (ko)
AU (1) AU2002223656A1 (ko)
DE (1) DE60109060T2 (ko)
WO (1) WO2002047355A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030222982A1 (en) * 2002-03-28 2003-12-04 Hamdan Majil M. Integrated video/data information system and method for application to commercial vehicles to enhance driver awareness
US7802263B2 (en) 2002-12-17 2010-09-21 Stragent, Llc System, method and computer program product for sharing information in a distributed framework
US20070035625A9 (en) * 2002-12-20 2007-02-15 Hamdan Majed M Vehicle video processing system
KR100938004B1 (ko) 2003-10-02 2010-01-21 삼성전자주식회사 통합 유닛
US20050093975A1 (en) * 2003-10-30 2005-05-05 Hamdan Majed M. Adaptation of vision systems for commerical vehicles
CN101965714B (zh) * 2008-03-10 2014-03-26 罗伯特.博世有限公司 用于对通过通信网络的串行数据总线到达该网络的用户中的消息进行过滤的方法和过滤装置
US8175172B2 (en) * 2008-09-01 2012-05-08 Avago Technologies Ecbu Ip (Singapore) Pte. Ltd. High speed digital galvanic isolator with integrated low-voltage differential signal interface
WO2010144900A1 (en) 2009-06-12 2010-12-16 Magna Electronics Inc. Scalable integrated electronic control unit for vehicle
US9365162B2 (en) 2012-08-20 2016-06-14 Magna Electronics Inc. Method of obtaining data relating to a driver assistance system of a vehicle
DE102012222919A1 (de) * 2012-12-12 2014-06-12 Robert Bosch Gmbh Verfahren zur Datenkommunikation auf einem Datenkommunikationsbus
US9843518B2 (en) 2014-03-14 2017-12-12 International Business Machines Corporation Remotely controlled message queue
US9542243B2 (en) 2014-03-14 2017-01-10 International Business Machines Corporation Coalescing stages in a multiple stage completion sequence
US10406981B2 (en) 2014-03-20 2019-09-10 Magna Electronics Inc. Vehicle vision system with curvature estimation
US9380070B1 (en) * 2015-01-20 2016-06-28 Cisco Technology, Inc. Intrusion detection mechanism
JP6603617B2 (ja) * 2015-08-31 2019-11-06 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ ゲートウェイ装置、車載ネットワークシステム及び通信方法
WO2017037977A1 (ja) * 2015-08-31 2017-03-09 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ ゲートウェイ装置、車載ネットワークシステム及び通信方法
US10708227B2 (en) 2016-07-19 2020-07-07 Magna Electronics Inc. Scalable secure gateway for vehicle
US10650621B1 (en) 2016-09-13 2020-05-12 Iocurrents, Inc. Interfacing with a vehicular controller area network
US10652256B2 (en) * 2017-06-20 2020-05-12 International Business Machines Corporation Real-time active threat validation mechanism for vehicle computer systems
CN109561156B (zh) * 2018-12-23 2021-07-06 广东行远信息技术有限公司 一种基于内容分发和屏幕显示控制的web端系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4625308A (en) * 1982-11-30 1986-11-25 American Satellite Company All digital IDMA dynamic channel allocated satellite communications system and method
US5153909A (en) * 1989-05-25 1992-10-06 At&T Bell Laboratories Resource control and data handling for central office based automatic call distributors
JP2945757B2 (ja) * 1989-09-08 1999-09-06 オースペックス システムズ インコーポレイテッド 多重装置オペレーティングシステムのアーキテクチャ
AU665521B2 (en) * 1990-10-03 1996-01-11 Thinking Machines Corporation Parallel computer system
US5832397A (en) * 1993-01-21 1998-11-03 Hitachi, Ltd. Integrated wiring systems for a vehicle control system
US5734903A (en) * 1994-05-13 1998-03-31 Apple Computer, Inc. System and method for object oriented message filtering
US5710924A (en) * 1995-04-24 1998-01-20 Motorola, Inc. Method of routing messages within a multi-processing software system
JPH11122244A (ja) * 1997-10-20 1999-04-30 Fujitsu Ltd 大規模ネットワークの管理装置
US6948186B1 (en) * 1999-10-07 2005-09-20 General Instrument Corporation Multi-tasking message extractor

Also Published As

Publication number Publication date
EP1346549A1 (en) 2003-09-24
ATE289731T1 (de) 2005-03-15
EP1346549B1 (en) 2005-02-23
DE60109060T2 (de) 2006-04-13
DE60109060D1 (de) 2005-03-31
WO2002047355A1 (en) 2002-06-13
US7140026B2 (en) 2006-11-21
CN1478346A (zh) 2004-02-25
KR20030057574A (ko) 2003-07-04
US20020073243A1 (en) 2002-06-13
JP3864252B2 (ja) 2006-12-27
JP2004515971A (ja) 2004-05-27
CN1235380C (zh) 2006-01-04
AU2002223656A1 (en) 2002-06-18

Similar Documents

Publication Publication Date Title
KR100570143B1 (ko) 상호 통신 프리프로세서
US8811422B2 (en) Single chip protocol converter
CA2124452C (en) Method and apparatus for processing data within stations of a communication network
US8898396B2 (en) Software pipelining on a network on chip
US6922408B2 (en) Packet communication buffering with dynamic flow control
US8249072B2 (en) Scalable interface for connecting multiple computer systems which performs parallel MPI header matching
CN100524287C (zh) 微处理器子系统
EP2040176B1 (en) Dynamic Resource Allocation
US20090125706A1 (en) Software Pipelining on a Network on Chip
KR100640515B1 (ko) 주변장치로부터 호스트 컴퓨터 시스템에 인터럽트를전달하기 위한 방법 및 장치
US8654634B2 (en) Dynamically reassigning virtual lane resources
US20020174316A1 (en) Dynamic resource management and allocation in a distributed processing device
EP1779609B1 (en) Integrated circuit and method for packet switching control
CA2430964C (en) Modular and scalable switch and method for the distribution of fast ethernet data frames
CN101076982A (zh) 用于管理流控制的技术
CN107066413A (zh) 一种用于处理多个总线设备数据的方法、及其总线系统
US20020172221A1 (en) Distributed communication device and architecture for balancing processing of real-time communication applications
US6035366A (en) Computer architecture using packet switches for internal data transfer
CN101197782B (zh) 一种基于多核处理器的网络设备的控制方法及系统
JP2002176464A (ja) ネットワークインタフェース装置
Ramazani et al. A multiprocessor architecture for fast packet processing
Rhiemeier et al. Software partitioning and hardware architecture for modular SDR systems
WO2007003131A1 (fr) Système de service de télécommunication intégré
Schwaderer Breaking the transport layer bottleneck
JPS63107253A (ja) パケツト処理方法

Legal Events

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

Payment date: 20110302

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee