KR19980079669A - 멀티프로세서 시스템에서 인터럽트를 융통성있게 제어하기 위한 장치 - Google Patents

멀티프로세서 시스템에서 인터럽트를 융통성있게 제어하기 위한 장치 Download PDF

Info

Publication number
KR19980079669A
KR19980079669A KR1019980003048A KR19980003048A KR19980079669A KR 19980079669 A KR19980079669 A KR 19980079669A KR 1019980003048 A KR1019980003048 A KR 1019980003048A KR 19980003048 A KR19980003048 A KR 19980003048A KR 19980079669 A KR19980079669 A KR 19980079669A
Authority
KR
South Korea
Prior art keywords
node
interrupt
value
adapter
register
Prior art date
Application number
KR1019980003048A
Other languages
English (en)
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 KR19980079669A publication Critical patent/KR19980079669A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

복수 개의 노드 및 노드 간의 메시지 전달을 위한 하나의 스위치 네트워크를 구비한 분산 시스템에서 사용되는 장치에 관한 것으로서, 상기 각 메시지는 소스 노드(source node)에서 목표 노드(target node)로 송신된다. 각 노드는 어댑터에 의해 스위치 네트워크에 연결되는데, 이 어댑터는 어댑터에 의해 수신된 메시지 내의 패킷의 수를 카운트 레지스터 값과 더하기 위한 카운트 레지스터(count register)와 원하는 문턱값을 내장하기 위한 문턱값 레지스터(threshold register)를 포함한다. 카운트 레지스터의 값이 문턱값 레지스터의 값과 같거나 이보다 크면 인터럽트 발생기가 인터럽트를 발생한다. 인터럽트를 인에이블 또는 디스에이블하도록 프로그램의 제어 하에 문턱값 레지스터의 값은 바뀔 수 있다.

Description

멀티프로세서 시스템에서 인터럽트를 융통성있게 제어하기 위한 장치
본 발명은 전반적으로 멀티프로세서 시스템에서의 인터럽트 제어에 관한 것으로, 특히 멀티프로세서 시스템의 애플리케이션(application) 프로그래머들에게 인터럽트 제어를 제공하는 것에 관한 것이다.
멀티프로세서에서, 전형적으로 상이한 프로세서들에서 수행되는 분산 메모리 머신 프로세스들(distributed memory machine processes)은 메시지를 송수신함으로써 서로 통신한다. 메시지 송수신은 일반적으로 다음의 두 가지 모드 중 하나에 의해서 이루어진다.
(a) 동기 모드(synchronous mode) - 이 모드에서 서로 통신하는 두 개의 프로세스들은 송신 또는 수신(recv) 기능을 수행한다. 송신 기능 호출(send function call)을 이용하여 송신자에 의해 송신된 데이타는 수신자에 의해 수신 기능 호출(recv function call)을 사용하여 수신된다.
(b) 비동기 모드(asynchronous mode) - 이 모드에서는 송신측이 송신 기능 호출을 사용하여 메시지를 보내지만 수신측이 이 메시지를 예상하지 못할 수가 있다. 메시지의 실종을 피하기 위해서, 또는 네트워크 버퍼─여기서 메시지는 수신자가 네트워크 버퍼로부터 자신을 인출할 때까지 기다림─내의 혼잡을 피하기 위해서는 제 때에 처리되어야 한다. 이는 전형적으로 입력 메시지가 시스템에 인터럽트를 일으키게 하는 메카니즘을 설정함으로써 이루어진다.
IBM에 의해 구현된 메시지 전달 인터페이스(Message Passing Interface; MPI)에서는, '동기 모드'는 또한 '폴링 모드(polling mode)'로도 지칭되며, '비동기 모드'는 또한 '인터럽트 모드'로도 지칭된다. 폴링 모드에서는, 본래 인터럽트가 디스에이블된다. 인터럽트 모드에서는, 송신 노드(근원지)가 수신 노드(목표지)에 메시지를 보낸다. 메시지가 목표지에 도착하면, 목표지의 어댑터에 의해 목표지에 인터럽트가 발생된다.
목표지에서의 인터럽트 모드 동작에 대한 흐름도가 도 1에 도시되어 있다. 근원지로부터의 메시지는 패킷이라 불리는 고정된 크기의 단위들로 분할된다. 한 메시지내의 모든 패킷들이 목표지로 전송된다. 이들 패킷은 단계(10)에서 목표지에 도착하고(순서대로 도착하지 않을 수도 있음), 하기의 어댑터는 단계(12)에서 입력 데이타를 통신 버퍼(네트워크 버퍼라고도 불림) 영역에 복사한다. 목표지에 가장 처음 도착하는 메시지의 패킷은 단계(14)에서 어댑터가 시스템에 인터럽트를 걸도록 만든다. 인터럽트는 단계(16)에서 OS FLIH(운영체제의 제 1 레벨 인터럽트 핸들러, operation system's first level interrupt handler)에 의해 수신된다. 운영체제는, 예컨대 IBM의 AIX 운영체제일 수도 있다. 단계(18)에 도시된 바와 같이 FLIH는 인터럽트를 디코딩하여 인터럽트의 소스를 알아낸다. 다음에, FLIH는 해당 SLIH(제 2 레벨 인터럽트 핸들러, second level interrupt handler)를 호출한다. SLIH는 MPI 초기화 과정에 의해 커널 내에 설치되며 어댑터 디바이스 드라이버의 일부가 된다. 단계(20)에 도시된 바와 같이 디바이스 드라이버 내의 SLIH는 어댑터 상의 인터럽트 매스크를 판독하여 인터럽트가 어느 어댑터 포트(윈도우라고도 불림)에서 발생된 것인지를 결정한다. 단계(22)에서 디바이스 드라이버는 표를 보고 (사용자 공간 인터럽트임을 가정하고) 사용자 공간 윈도우에서 실행되고 있는 작업의 PID(프로세스 ID)를 결정한다. 다음에, 단계(24)에서 디바이스 드라이버는 유저 공간 작업을 실행하고 있는 PID에게 신호를 보낸 다음 종료한다. 디바이스 드라이버에 의해 송신된 신호를 처리하기 위한 신호 핸들러는 MPI 라이브러리가 초기화될 때 설치된다.
운영체제(AIX) 스케쥴러는 단계(26)에서 신호 핸들러를 구비한 PID를 실행가능한 개체로 표시하고 이것을 실행가능한 프로세서들의 큐에 넣는다. 운영체제 디스패쳐(dispatcher)는 결국 단계(28)에서 실행을 위하여 신호 핸들러를 스케쥴링한다. 다음으로, 신호 핸들러는 입력 데이타를 수신하고 그것을 진행중인 계산으로 흡수한다. 단계(30)에서 도시된 바와 같이 핸들러는 입력되는 패킷의 헤더를 읽고 메시지 내의 패킷의 수를 결정한다. 핸들러는 애플리케이션에게 제어권을 넘겨주기 이전에 (적절한 문턱값을 설정하여) 인터럽트를 인에이블함으로써 메시지의 모든 패킷을 기다리다가 수신한다. 본 발명 이전에는 어댑터가 특정한 문턱값에 대해서 단지 하나의 인터럽트를 발생하였다. 이는 만약 목표 노드에 두 개의 패킷이 도착하고 첫번째 패킷이 도착한 다음 인터럽트 문턱값이 수정되지 않았을 시에는 첫번째 패킷 만이 인터럽트를 발생시킨다는 의미이다.
인터럽트가 생겼을 때 손실이 매우 크다는 것은 명백하다. 각 노드와 SP 스위치(SPS) 사이에 TB2/TB3 어댑터가 장착된 Power-2(Model 591) 광폭 노드들(wide nodes)을 포함하는 IBM RISC System/6000 Scalable POWERparallel(SP) 시스템 상에서 데이타가 목표지에 도착해서부터 핸들러가 호출될 때까지의 시간이 65 ms나 될 수 있다.
푸쿠다(Fukuda) 등에게 1993년 11월 23일에 허여된 MULTIPROCESSOR SYSTEM AND INTERRUPT ARBITER THEREOF라는 제목의 미국 특허 제 5,265,215 호는 I/O 인터럽트들이 각 프로세서의 적재 조건에 따라 각각의 프로세서에 배분되는 밀결합(tightly coupled) 멀티프로세서 시스템을 개시하고 있다.
마렌(Marren)에게 1994년 10월 25일에 허여된 METHOD OF OPERATING A DATA PROCESSING SYSTEM HAVING A DYNAMIC SOFTWARE UPDATE FACILITY라는 제목의 미국특허 제 5,359,730 호는 데이타 처리 시스템에서 동적 소프트웨어 갱신 설비를 개시하고 있다. 대량의 데이타를 처리하는 시스템에서 소프트웨어의 부분들이 전체 시스템을 정지시키지 않고도 인터럽트를 사용하여 갱신됨으로써 시스템의 다른 부분들이 계속해서 동작할 수 있게 된다.
니자르(Nizar) 등에게 1996년 2월 27일에 허여된 MULTIPROCESSOR INTERRUPT CONTROLLER WITH REMOTE READING OF INTERRUPT CONTROL REGISTERS라는 제목의 미국 특허 제 5,495,615 호는 인터럽트와 관련된 메시지들을 처리하기 위해서 시스템 버스와는 별도인 인터럽트 버스를 포함하는 멀티프로세서 프로그래머블 인터럽트 제어 시스템을 개시한다.
엘코(Elko) 등에게 1996년 10월 1일에 허여된 IN A MULTIPROCESSOR SYSTEM HAVING A COUPLING FACILITY, COMMUNICATING MESSAGES BETWEEN THE PROCESSORS AND THE COUPLING FACILITY IN EITHER A SYNCHRONOUS OPERATION OR AN ASYNCHRONOUS OPERATION이라는 제목의 미국 특허 제 5,561,809 호는 인터럽트를 사용하지 않고 동기적 동작 또는 비동기적 동작중 어느 하나로 멀티프로세서 시스템의 프로세서 간에 메시지를 전송하기 위한 메카니즘을 개시하고 있다.
PARALLELIZED MANAGEMENT OF ADVANCED PROGRAM-TO-PROGRAM COMMUNICATIONS/VM-IN A SERVER SUPERSTRUCTURE, IBM Technical Disclosure Bulletin, Vol. 38, No. 02, February 1995에는 다중 제어 프로세싱 유닛 상에서 병렬로 수행중인 다중 실행 스레드(multiple threads of execution)들로 하여금 일련의 Advanced Program-to-Program Communications/VM(APPC/VM) 대화(conversations)를 관리하도록 하는 방법이 개시되고 있는데, 이 방법에서는 관리되고 있는 각 APPC/VM 자원에 대해 인터럽트 핸들러의 한 인스턴스가 등록된다.
REDUCING CPU UTILIZATION BY CONTROLLING TRANSMIT COMPLETE INTERRUPTS, IBM Techinical Disclosure Bulletin, Vol. 38, No. 07, July 1995에는 LAN 어댑터에 의해 발생되는 인터럽트의 갯수를 상당히 줄이는 방법이 개시되어 있는데, 이 방법에 의하면 전송 완료 인터럽트를 지연시킴으로써 시스템 CPU의 사용을 완화할 수 있다.
따라서 본 발명의 주된 목적은 스위치 네트워크에서 목표지로 어댑터에 의해 수신되는 메시지들로 인한 인터럽트를 인에이블 또는 디스에이블하기 위한 프로그램 제어를 제공하는 것이다.
본 발명의 또다른 목적은 스위치 네트워크에 연결된 노드의 어댑터에서 인터럽트가 인에이블 또는 디스에이블되었는지를 질문하는 것을 프로그램에 제공하는 것이다.
본 발명의 또다른 목적은 스위치 네트워크에 연결된 노드의 어댑터 상에서 인터럽트를 인에이블하기 위한 프로그램 제어를 제공하는 것이다
본 발명의 또다른 목적은 스위치 네트워크에 연결된 노드의 어댑터 상에서 인터럽트를 디스에이블하기 위한 프로그램 제어를 제공하는 것이다.
도 1은 인터럽트 모드에서 종래 기술의 동작 흐름을 도시한 흐름도.
도 2는 본 발명과 함께 사용할 수 있는 시스템에 대한 개략도.
도 3은 도 2에 도시된 시스템의 노드 및 관련 어댑터에 대한 개략도.
도 4는 본 발명의 인터럽트가 인에이블되어 어댑터들이 인터럽트 모드에 있을 때의 클라이언트와 서버 간의 메시지 교환의 흐름을 도시한 개략도.
도 5는 클라이언트 노드에서 클라이언트 인터럽트가 디스에이블되어 클라이언트가 폴링 모드에 있을 때의 본 발명에 따른 도 4의 메시지 교환의 흐름을 도시한 개략도.
도 6은 양 어댑터 인터럽트가 모두 인에이블되어 양 어댑터가 인터럽트 모드에 있게 되는 본 발명에 따라 클라이언트가 서버에게 대량의 데이타를 서버에 송신하여 서버에 저장하려고 할 때의 흐름을 도시한 개략도.
도 7은 클라이언트 및 서버 인터럽트가 모두 디스에이블되어 데이타 전송 동안 클라이언트 및 서버가 모두 폴링 모드에 있게 되는 본 발명에 따라 클라이언트가 서버에게 대량의 데이타를 서버에 송신하여 저장하려고 할 때의 흐름을 도시한 개략도.
* 도면의 주요부분에 대한 부호의 설명
300 : 어댑터 301 : 사용자 프로그램
302 : MPI 라이브러리 310 : 프로세서
304 : rcv_pkt_cnt 레지스터 306 : rcv_intr_thresh 레지스터
307 : 인터럽트 발생기
본 발명은 사용자가 애플리케이션에 의해 야기된 인터럽트의 수를 감소시킬 수 있고 애플리케이션 프로그래머가 통신 서브시스템에서의 불필요한 인터럽트의 비용을 피할 수 있도록 하는 메카니즘을 제공한다. 사용자가 인터럽트를 제어할 수 있도록 하는 API(Application Program Interface)에 대해서도 또한 기술된다.
서버가 인터럽트 모드에서 동작을 하여 클라이언트들의 요구에 바로 응답할 필요가 있는 애플리케이션(예컨대, 일부 노드들이 서버 구실을 하는 다른 노드들에게 요구를 보내는 클라이언트 구실을 하는 클라이턴트/서버)들이 여러 가지가 있다. 서버는 임의의 주어진 시점에서 어느 노드가 어떤 요구를 보낼지 모르므로 폴링(동기 모드)에서는 동작을 할 수 없다. 그러나 클라이언트 구실을 하는 노드들은 언제 메시지가 도착할지에 대해서 보다 많은 정보를 갖고 있다. 예를 들어, 클라이언트 노드(근원지)는 서버 노드(목표지)에 어떤 데이타에 대한 요구를 보낼 수가 있다. 그러면 클라이언트는 서버에 의해 전송될 그 요구된 데이타를 흡수하도록 수신 버퍼를 게시할 수 있다. 이런 경우에는 입력되는 데이타에 의해 (클라이언트 노드에서) 발생되는 인터럽트가 회피되어 인터럽트를 서비스하는 비용을 줄일 수 있다. 이를 위해서는 사용자가 곧 도착할 것을 알고 있는 데이타를 기다리고 있을 때에 어댑터로부터의 인터럽트를 디스에이블할 수 있는 능력을 사용자는 갖고 있어야만 한다.
SP 시스템 상의 MPI 라이브러리의 초기 버젼에는 인터럽트 모드 상에서 실행하고 있을 때에 사용자가 어댑터로부터의 인터럽트를 디스에이블할 수 있는 메카니즘이 없었다. 동작 모드는 프로그램 실행 전에 환경 변수(MP_CSS_INTERRUPT)를 설정함으로써 사용자에 의해 결정되었다. 이것은 시스템 상의 모든 노드에 대해서 고정되었다. 환경 변수가 YES로 설정되면 모든 노드들(클라이언트 또는 서버)이 인터럽트 모드에서 동작했다.
본 발명은 사용자 프로그래머가 인터럽트를 보다 효율적으로 제어할 수 있게 해 주는 메카니즘들을 제공한다. 이 메카니즘들은 사용자 프로그래머가 인터럽트를 인에이블/디스에이블하거나 인터럽트의 상태를 질문할 수 있게 해 준다. 이런 메카니즘들을 사용하면 사용자가 불필요한 인터럽트들(예를 들어, 상기한 바와 같은 클라이언트 노드상의 인터럽트)을 회피할 수 있어 애플리케이션을 더 빨리 실행할 수 있게 된다.
본 발명의 상기한 그리고 다른 목적, 특징, 및 잇점은 첨부된 도면에 예시된 바와 같이 본 발명의 바람직한 실시예에 대한아래의 보다 구체적인 기술로부터 분명하게 될 것이다.
도 2는 본 발명과 함께 사용가능한 분산 컴퓨터 시스템(100)에 대한 개략도이다. 분산 컴퓨터 시스템(100)은 International Business Machines Corporation of Armonk, NY에서 구입 가능한 IBM RISC System/6000 Scalable POWERparallel Systems(SP) 분산 컴퓨터 시스템일 수 있다. 도 1에 개시된 실시예는 총 8개의 프레임을 갖는 SP 컴퓨터 시스템인데, 총 128개의 노드들에 대해서 각 프레임은 16개 까지, 노드를 갖는다. 모든 노드들(106)은 LAN(local area network)에 의해 연결된다. 각 노드(106)는 그 자체가 하나의 컴퓨터이고, 당업자들에게 잘 알려진 바와 같이, RISC System/6000 워크스테이션일 수도 있다.
SP 컴퓨터(100)의 한 프레임의 모든 노드들은, LAN 게이트(104)를 통해 다른 LAN 세그먼트들에 연결된 LAN 세그먼트에 포함된다. 또한 LAN(102)에는 SP 컴퓨터 시스템(100)의 동작을 제어하는 제어 워크스테이션(CWS)(112)이 연결되어 있다. 제어 워크스테이션은 시스템 데이타 저장 파일들(system data repository files, SDR)이 저장되는 직접 액세스 저장 장치(direct access storage device, DASD)(114)를 포함한다. SDR 파일들은 시스템 내의 노드들의 리스트 및 이들의 구성과 같은 정보를 포함한다. 각 노드(106)는 SP 컴퓨터(100)에 의해 처리된 데이타를 저장하기 위한 DASD 장치(107)를 포함한다.
한 실시예에서는, 각 프레임 내의 노드들은 IBM Scalable POWERparallel 스위치(SPS)(105)에도 연결되어 있다. 각 노드(106)는 도 3과 관련하여 기술된 것처럼 어댑터에 의해 SPS에 연결되어 있다. 각 프레임 내의 한 SPS(105)는 버스(110)에 의해 다른 프레임의 이웃하는 SPS(105)에 연결된다.
본 기술에서 잘 이해되는 바와 같이, CWS 노드(112)는 시스템 데이타 및 제어 신호들을 LAN(102)을 통해 SP 컴퓨터(100)의 프레임들에게 보내고, 반면에 메시지와 데이타는 한 노드(106)에서 다른 노드로 고성능 스위치(105)에 의해 전송된다. 세듀(Sethu)에게 1995년 9월 26일에 허여되고 본 특허의 양수인이 소유하고 있는 미국 특허 제 5,453,978 호에서 노드(106)와 SPS(105) 간의 연결은 도시 및 기술되어 있다.
도 3은 어댑터(300)를 통해 SPS(105)에 연결된 노드(106)들 중 하나에 대한 개략도이다. 어댑터(300)는 IBM에서 구입 가능한 SP TB2 또는 TB3 어댑터일 수 있다. 각 노드(106)의 워크스테이션은 프로세서(310)와 MPI 라이브러리(302)를 호출하는 사용자 프로그램(301)을 포함한다. 라이브러리(302)는 사용자 프로그램(301)의 제어 하에 두 개의 부호없는 64 비트 정수들을 사용하여 인터럽트의 상태를 제어한다. 이들 변수들은 어댑터 내의 레지스터(304)와 레지스터(306)에 들어있고, 기술될 것인 바와 같이 그 값은 인터럽트 발생기(307)에 의해 인터럽트를 발생하기 위해 사용된다. 이들 변수들은 다음과 같다.
1. 수신 패킷 카운트(Receive Packet Count, rcv_pkt_cnt) : 레지스터(304) 내의 이러한 변수는 노드에 의해 수신된 패킷의 수를 센 값을 담고 있다.
2. 수신 인터럽트 문턱값(Receive Interrupt Threshold, rcv_intr_thresh) : 레지스터(306) 내의 이러한 변수는 rcv_pkt_cnt가 rcv_pkt_thresh보다 큰 지를 알기 위해 어댑터에 의해 체크된다. 만약 rcv_pkt_cnt가 rcv_pkt_thresh보다 크고(YES), rcv_pkt_thresh가 어댑터의 노드에 이전 인터럽트가 일어났을 때의 값과 같지 않으면, 어댑터는 인터럽트 발생기(107)을 통해 인터럽트를 발생한다.
노드(106)는 레지스터(306)의 문턱값을 가장 큰 부호없는 64 비트 정수로 설정함으로써 어댑터 인터럽트를 디스에이블할 수 있다. 노드(106)는 일반적으로 어댑터 문턱값을 rcv_pkt_cnt 보다 1 크게 설정함으로써 인터럽트를 인에이블시킬 수 있다.
MPI 라이브러리는 사용자가 호출할 수 있는 세 개의 함수를 제공하는데, 이러한 함수들은 사용자로 하여금 인터럽트를 더 잘 제어할 수 있게 한다. 이러한 호출들은 다음과 같다.
1. mpc_queryintr(): 이 호출은 사용자로 하여금 호출이 이루어진 노드상의 인터럽트의 상태를 체크하게 해 준다. 라이브러리(302)는 인터럽트가 디스에이블되면 0을, 인터럽트가 인에이블되었으면 1을 리턴한다. 이 호출은 그 라이브러리 코드가 실행되는 동안 인터럽트가 인에이블될 것을 필요로 하는, (IBM에서 구입가능한 PESSL 제품과 같은), MPI를 사용하는 다른 라이브러리들에 특히 유용하다. 라이브러리(302)는 라이브러리(302)가 호출되기 전의 인터럽트의 상태를 보관(save)하고, 인터럽트의 상태를 라이브러리(302)가 요구하는 방식으로 설정하며, 다음으로 라이브러리(302)가 실행을 완료하여 사용자 프로그램에 제어를 되돌려 주기 전에 인터럽트의 상태를 복원(restore)할 수 있다.
2. mpc_diasbleintr(): 이 호출은 사용자로 하여금 이 호출이 실행되고 있는 노드(106)상의 인터럽트를 디스에이블하게 해 준다. 이 호출은 인터럽트가 성공적으로 디스에이블되면 0을 리턴하고, MPI 라이브러리(302)가 어떤 이유로 인터럽트를 디스에이블할 수 없었을 경우에는 -1을 리턴한다.
3. mpc_enableintr(): 이 호출은 사용자로 하여금 이 호출이 실행되고 있는 노드(106)상의 인터럽트를 인에이블하게 해 준다. 이 호출은 인터럽트가 성공적으로 인에이블되면 0을 리턴하고, MPI 라이브러리(302)가 어떤 이유로 인터럽트를 인에이블할 수 없었을 경우에는 -1을 리턴한다.
도 4 및 5에는 불필요한 인터럽트의 비용을 줄임으로써 사용자 애플리케이션이 이득을 보게 되는 흐름에 대한 예가 도시되어 있다. 도 4는 본 발명이 종래 기술의 장치처럼 인터럽트 모드에 있도록 어댑터(300)에서 인터럽트가 인에이블되었을 때의 흐름도이고, 단계(401)에서 노드 0(클라이언트 노드)이 데이타에 대한 요구를 노드 1(서버 노드)에 보낸다. 단계(402)에서 노드 0은 노드 0에 수신을 게시하여 노드 0이 요구된 노드 1로부터의 예상 데이타에 대해 준비하도록 한다. 단계(404)에서, 노드 1은 인터럽트 모드에서 노드 0으로부터의 요구를 수신하는데, 다시 말하면 설명한 바와 같이, 노드 1에 대한 어댑터(300)는 mpc_enableintr() 호출에 의해 rcv_intr_thresh 레지스터(306)의 문턱값이 rcv_pkt_cnt 레지스터(304)의 값 보다 1 크게 설정되도록 한다. 단계(405)에서, 노드 1은 노드 0에 대한 요구를 예컨대, 도 1에 제시된 절차에 의해 디코딩화한다. 단계(406)에서, 노드 1은 노드 0에 의해 요구된 데이타를 노드 0으로 전송한다. 단계(410)에서, 노드 0은 단계(402)에서 수신을 지시받았기 때문에 요구된 데이타를 노드 1로부터 수신한다. 단계(410)에서는, 예컨대 도 1의 흐름에 따라 데이터가 인터럽트를 야기할 수 있도록 노드 0의 어댑터(300)를 인터럽트 모드로 설정한 채로 데이터의 수신이 있게 된다.
도 5는 노드(클라이언트) 0의 어댑터(300)의 인터럽트는 디스에이블되고 노드 1(서버)의 어댑터(300)의 인터럽트는 인에이블되었을 때 노드 0과 노드 1 간의 데이타 교환에 대한 흐름을 도시한다. 단계(501)에서, 노드 0이 노드 1에 데이타에 대한 요구를 보낸다. 단계(502)에서,상기한 것처럼 rcv_intr_thresh 레지스터(306)의 값을 mpc_disableintr() 호출에 의해 최대값으로 설정함으로써 노드 0상의 인터럽트가 디스에이블된다. 다음에 단계(503)에서 노드 0이 노드 1로부터의 예상 데이터를 위하여 수신을 게시한다(post recv). 단계(506)에서, 노드 1의 어댑터(300)에서 인터럽트가 인에이블된 상태로 노드 1이 노드 0으로부터의 데이타에 대한 요구를 수신한다. 도 4와 관련하여 기술한 것처럼, 단계(507)에서, 노드 1이 노드 0으로부터의 요구를 디코딩하고, 단계(508)에서, 요구된 데이타를 노드 0에 송신한다. 노드 0으로 돌아가서, 단계(510)에서, 노드 0이 노드 1로부터 데이타를 수신하지만, 노드 0이 단계(503)의 post recv 때문에 지금 데이타를 기대하고 있으므로 노드 0은 인터럽트 모드가 아니라 폴링 모드에서 데이타를 수신한다. 단계(510)에서 데이타가 수신된 후, 노드 0은 단계(511)에서, 자신의 어댑터(300)상에 상기한 방법으로 인터럽트를 인에이블한다.
클라이언트 측에서 인터럽트를 디스에이블하는 것은 임계 경로 밖에서(즉, 단계(501)에서 서버에게 요구 메시지가 송신된 후 단계(502)에서) 행해짐을 주목해야 한다. 단계(411)에서, 클라이언트 측이 인터럽트를 인에이블하는 것은 임계 경로에 속하지만 인터럽트를 서비스하는 것(65us)과 비교하면 이에 대한 비용(대략 0.5 us)은 적은 편이다. 이것이 프로그램의 세그먼트들이 인터럽트 모드 또는 폴링 모드에서 실행될 수 있는 융통성을 사용자에게 제공하고 있다는 것과, 이러한 인터럽트 디스에이블 및 인에이블이 여러 번 행해질 수 있다는 것을 또한 유의해야 한다.
도 6 및 7은 클라이언트 노드가 서버 노드에게 대량의 데이타를 보내어 서버에 저장하려고 할 때의 일련의 사건들의 예들을 도시한다. 도 6에서는 클라이언트 인터럽트가 인에이블되고, 도 7에서는 클라이언트 인터럽트가 디스에이블되었다. 도 6에서, 단계(601)에서, 클라이언트 노드는 노드 1에게 대량의 데이타를 송신하기 위한 요구를 보낸다. 단계(602)에 클라이언트 노드는 노드 1로부터의 버퍼 준비 메시지(buffer ready message)를 기다리는데, 이때 클라이언트 노드는 인터럽트를 인에이블시켜 인터럽트 모드에 있게 된다. 단계(603)에 서버 노드는 노드 0으로부터의 요구를 수신한다. 서버 노드 어댑터도 또한 인터럽트를 인에이블시켜 서버 노드는 인터럽트 모드에 있게 된다. 단계(604)에서, 서버 노드는 요구된 메시지를 위해 자신의 버퍼를 게시한다. 단계(605)에서, 서버 노드는 노드 0에 서버 노드가 데이타를 받을 준비가 완료되었음을 표시하는 버퍼 준비 메시지를 송신한다. 단계(602)에서, 클라이언트 노드가 서버 노드로부터 버퍼 준비 메시지를 수신하면 클라이언트 노드는 단계(606)에서 데이타를 노드 1로 송신한다. 단계(607)에서, 서버 노드는 인터럽트 모드 상에서 노드 0으로부터 데이타를 수신한다. 도시된 것처럼, 전체 동작은 클라이언트 노드에는 하나의 인터럽트를 야기하고 서버에는 복수 개의 인터럽트를 야기하는데, 이는 노드 0에서 송신되는 데이타가 복수 개의 패킷 또는 복수 개의 메시지를 포함할 수 있기 때문이다.
도 7은 클라이언트 및 서버 어댑터에서 인터럽트가 디스에이블되어 클라이언트와 서버가 모두 데이타 전송 도중 폴링 모드에 있게 되는 경우, 도 6에 도시된 것과 동일한 트랜잭션을 도시한다. 단계(701)에서, 클라이언트 노드는 노드 1에 대량의 데이타를 송신하기 위한 요구를 보낸다. 단계(702)에서, 클라이언트 노드는 설명한 것처럼 자신의 인터럽트를 디스에이블시킨다. 단계(703)에서, 클라이언트 노드는 노드 1로부터의 버퍼 준비 메시지를 기다리는데, 이때 노드 0은 폴링 모드에 있다. 단계(705)에서, 서버는 인터럽트 모드에서 노드 0으로부터의 요구를 수신한다. 단계(706)에서, 서버 노드는 인터럽트를 디스에이블시키고 요구된 메시지를 위해 자신의 버퍼를 게시한다. 단계(707)에서, 서버 노드는 노드 0에 버퍼 준비 메시지를 송신한다. 클라이언트 모드로 돌아와서, 단계(703)에서 클라이언트 모드는 단계(707)에서 전송된 버퍼 준비 메시지를 수신하고, 노드 1에 데이타를 송신한다. 단계(708)에서, 서버 노드로 데이타가 송신된 후, 단계(709)에서 클라이언트 노드는 인터럽트를 인에이블한다. 단계(710)에서, 서버 노드는 폴링 모드 상에서 노드 0으로부터 데이타를 수신한다. 단계(710)에서 데이타가 수신된 후, 서버는 단계(711)에서 인터럽트를 인에이블한다. 도시된 것처럼, 이 모든 동작은 단계(705)에서 클라이언트로부터의 요구를 받기 위한 단지 하나의 인터럽트만을 야기할 뿐이다. 나머지 데이타 전송은 인터럽트 없이 폴링 모드에서 이루어진다.
개시된 상기 정밀한 메카니즘은 단지 하나의 실시예에 지나지 않는다. 본 발명을 실행하기 위해 필요한 모든 것은 다음 패킷이 도착할 때에 인터럽트를 인에이블하고 디스에이블하기 위한 하드웨어상의 메카니즘을 제공하는 것이다. 여러 가지 다른 종류의 메카니즘들이 가능한데, 예를 들어 어댑터는 인터럽트가 인에이블되었는지의 여부를 표시하는 플래그를 사용할 수 있다. 어댑터는 단지 플래그를 켜고 끄기만 하면 된다. 플래그가 켜지면, 다음 패킷이 도착했을 때 인터럽트가 발생하고 그러면 어댑터는 플래그를 끌 것이다. 당업자들은 이 외에도 다른 방법들을 상상할 수 있을 것이다.
비록 본 발명의 바람직한 실시예가 여기서 도시되고 기술되었으나, 우리는 본 발명을 여기서 개시된 정밀한 구조로 제한하지 않으며, 첨부된 청구항에서 정의된 본 발명의 범위내에서 발생하는 변형 및 수정에 대한 권리가 유보되어 있음을 이해해야 한다.
상기한 바와 같은 본 발명에 따르면, 사용자 프로그래머가 인터럽트를 보다 효율적으로 제어할 수 있게 해 주는 메카니즘들을 제공한다. 이 메카니즘들은 사용자 프로그래머가 인터럽트를 인에이블/디스에이블하거나 인터럽트의 상태를 질문할 수 있게 해 준다. 이런 메카니즘들을 사용하면 사용자가 불필요한 인터럽트들(예를 들어, 상기한 바와 같은 클라이언트 노드상의 인터럽트)을 회피할 수 있어 애플리케이션을 더 빨리 실행할 수 있게 된다.

Claims (9)

  1. 카운트 레지스터 및 문턱값 레지스터를 구비하는 어댑터를 경유하여, 스위치 네트워크에 연결된 노드로의 인터럽트를 제어하기 위한 방법에 있어서, ① 문턱값 레지스터에 원하는 문턱값을 저장하는 단계와, ② 스위치 네트워크로부터 상기 스위치에 연결된 노드에 대한 메시지를 수신하는 단계와, ③ 카운트 레지스터의 값에 메시지의 패킷의 수를 더하는 단계와, ④ 카운트 레지스터의 값을 문턱값 레지스터의 값과 비교하는 단계와, ⑤ 상기 비교 단계에서 결정된 바와 같이 카운트 레지스터의 값이 문턱값 레지스터 내의 값과 같거나 이보다 클 경우 어댑터에서 노드로 인터럽트를 송신하는 단계를 포함하는 인터럽트 제어 방법.
  2. 제 1항에 있어서, 노드 내의 프로그램에 의하여 어댑터의 인터럽트 가능 상태를 조사하는 단계를 더 포함하는 인터럽트 제어 방법.
  3. 제 1항에 있어서, 상기 문턱값 레지스터의 값을 아주 큰 값으로 설정함으로써 상기 어댑터의 인터럽트를 디스에이블하는 단계를 더 포함하는 인터럽트 제어 방법.
  4. 제 1항에 있어서, 상기 노드에 대한 메시지의 수신이 상기 노드에 인터럽트를 야기하도록 상기 문턱값 레지스터의 값을 상기 카운트 레지스터의 값 보다 1이 큰 값으로 설정함으로써 상기 어댑터의 인터럽트를 인에이블하는 단계를 더 포함하는 인터럽트 제어 방법.
  5. 카운트 레지스터와 문턱값 레지스터를 구비하는 어댑터를 경유하여, 스위치 네트워크에 연결된 노드로의 인터럽트를 제어하기 위한 방법을 수행하기 위한, 컴퓨터로 판독할 수 있는 매체 상의 프로그램 제품에 있어서, 상기 방법이, ① 문턱값 레지스터에 원하는 문턱값을 저장하는 단계와, ② 스위치 네트워크로부터 상기 스위치에 연결된 노드에 대한 메시지를 수신하는 단계와, ③ 카운트 레지스터의 값에 메시지의 패킷의 수를 더하는 단계와, ④ 카운트 레지스터의 값을 문턱값 레지스터의 값과 비교하는 단계와, ⑤ 상기 비교 단계에서 결정된 바와 같이 카운트 레지스터의 값이 문턱값 레지스터의 값과 같거나 이보다 클 경우 어댑터에서 노드로 인터럽트를 송신하는 단계를 포함하는 프로그램 제품.
  6. 제 5항에 있어서, 상기 방법이 노드 내의 프로그램에 의하여 어댑터의 인터럽트 가능 상태를 조사하는 단계를 더 포함하는 프로그램 제품.
  7. 제 5항에 있어서, 상기 방법이 상기 문턱값 레지스터의 값을 아주 큰 값으로 설정함으로써 상기 어댑터의 인터럽트를 디스에이블하는 과정을 더 포함하는 프로그램 제품.
  8. 제 5항에 있어서, 상기 방법이 상기 노드에 대한 메시지 수신이 상기 노드에 인터럽트를 야기하도록 상기 문턱값 레지스터의 값을 상기 카운트 레지스터의 값 보다 1이 큰 값으로 설정함으로써 상기 어댑터의 인터럽트를 인에이블하는 단계를 더 포함하는 프로그램 제품.
  9. 어댑터를 경유하여 스위치 네트워크에 연결된 한 노드로의 인터럽트를 제어하기 위한 방법에 있어서, ① 상기 노드로 주소지정된 스위치로부터 어댑터에서 패킷을 수신하는 단계와, ② 상기 스위치로부터 상기 노드로 패킷이 수신된 때 어댑터에 의한 인터럽트 발생을 제어하기 위해 상기 노드로부터 어댑터로 프로그램 제어들을 발생시키는 단계와, ③ 상기 연결된 노드로부터의 상기 프로그램 제어들에 응답하여, 상기 프로그램 제어가 인터럽트가 상기 노드로 송신되지 않도록 하는 제 1 조건에 있으면 인터럽트 발생을 디스에이블하고, 상기 프로그램 제어가 상기 스위치로부터 상기 상기 노드에 대한 패킷이 수신된 때 인터럽트가 상기 노드로 송신되도록 하는 제 2 조건에 있으면 인터럽트 발생을 인에이블하는 단계를 포함하는 인터럽트 제어 방법.
KR1019980003048A 1997-04-08 1998-02-04 멀티프로세서 시스템에서 인터럽트를 융통성있게 제어하기 위한 장치 KR19980079669A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8/835,458 1997-04-08
US08/835,458 US6256660B1 (en) 1997-04-08 1997-04-08 Method and program product for allowing application programs to avoid unnecessary packet arrival interrupts

Publications (1)

Publication Number Publication Date
KR19980079669A true KR19980079669A (ko) 1998-11-25

Family

ID=25269552

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980003048A KR19980079669A (ko) 1997-04-08 1998-02-04 멀티프로세서 시스템에서 인터럽트를 융통성있게 제어하기 위한 장치

Country Status (3)

Country Link
US (1) US6256660B1 (ko)
EP (1) EP0871308A3 (ko)
KR (1) KR19980079669A (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6415332B1 (en) * 1998-08-19 2002-07-02 International Business Machines Corporation Method for handling of asynchronous message packet in a multi-node threaded computing environment
US6412018B1 (en) * 1998-08-19 2002-06-25 International Business Machines Corporation System for handling asynchronous message packet in a multi-node threaded computing environment
US6434651B1 (en) * 1999-03-01 2002-08-13 Sun Microsystems, Inc. Method and apparatus for suppressing interrupts in a high-speed network environment
US6633940B1 (en) * 1999-10-11 2003-10-14 Ati International Srl Method and apparatus for processing interrupts in a computing system
US6968392B1 (en) * 2000-06-29 2005-11-22 Cisco Technology, Inc. Method and apparatus providing improved statistics collection for high bandwidth interfaces supporting multiple connections
DE50114481D1 (de) 2000-09-22 2008-12-24 Infineon Technologies Ag Vorrichtung zur Auswahl und Weiterleitung von empfangenen Unterbrechungsanfragen gemäss konfigurierbarer Konditionen
US20020188789A1 (en) * 2001-06-11 2002-12-12 Cyberlane Inc. Wireless modem device
US7065581B2 (en) * 2001-06-27 2006-06-20 International Business Machines Corporation Method and apparatus for an improved bulk read socket call
US6868466B2 (en) * 2001-09-27 2005-03-15 Intel Corporation Apparatus and method for packet ingress interrupt moderation
US7587510B1 (en) 2003-04-21 2009-09-08 Charles Schwab & Co., Inc. System and method for transferring data between a user space and a kernel space in a server associated with a distributed network environment
US7779178B2 (en) * 2005-06-29 2010-08-17 Intel Corporation Method and apparatus for application/OS triggered low-latency network communications
TW200904072A (en) * 2007-07-05 2009-01-16 Ic Plus Corp System and method for generating interrupt
US20140129751A1 (en) * 2012-11-07 2014-05-08 Taejin Info Tech Co., Ltd. Hybrid interface to improve semiconductor memory based ssd performance
US10158585B2 (en) 2013-02-21 2018-12-18 Intel Corporation Packet processing with reduced latency
US11061840B2 (en) 2013-09-24 2021-07-13 Red Hat Israel, Ltd. Managing network interface controller-generated interrupts
US9880953B2 (en) * 2015-01-05 2018-01-30 Tuxera Corporation Systems and methods for network I/O based interrupt steering
US10547559B2 (en) * 2015-12-26 2020-01-28 Intel Corporation Application-level network queueing

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5287528A (en) * 1990-07-03 1994-02-15 National Instruments Corporation IEEE 488 interface for message handling method
US5495615A (en) 1990-12-21 1996-02-27 Intel Corp Multiprocessor interrupt controller with remote reading of interrupt control registers
US5555420A (en) * 1990-12-21 1996-09-10 Intel Corporation Multiprocessor programmable interrupt controller system with separate interrupt bus and bus retry management
JP2625589B2 (ja) 1991-04-22 1997-07-02 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチプロセッサ・システム
CA2086691C (en) 1992-03-30 1997-04-08 David A. Elko Communicating messages between processors and a coupling facility
US5319752A (en) * 1992-09-18 1994-06-07 3Com Corporation Device with host indication combination
US5359730A (en) 1992-12-04 1994-10-25 International Business Machines Corporation Method of operating a data processing system having a dynamic software update facility
US5598581A (en) * 1993-08-06 1997-01-28 Cisco Sytems, Inc. Variable latency cut through bridge for forwarding packets in response to user's manual adjustment of variable latency threshold point while the bridge is operating
GB2282474B (en) * 1993-09-30 1998-02-25 Intel Corp Buffer memory management for a computer network node
US5577211A (en) * 1994-05-11 1996-11-19 Ibm Corporation System and method using chained structure queues for ordering of message delivery between connected nodes wherein unsuccessful message portion is skipped and retried
US5687316A (en) * 1994-07-29 1997-11-11 International Business Machines Corporation Communication apparatus and methods having P-MAC, I-MAC engines and buffer bypass for simultaneously transmitting multimedia and packet data
JPH08153113A (ja) * 1994-11-28 1996-06-11 Fujitsu Ltd マルチメディアサーバ
US5771356A (en) * 1995-01-04 1998-06-23 Cirrus Logic, Inc. Apparatus for controlling FIFO buffer data transfer by monitoring bus status and FIFO buffer thresholds
US5721931A (en) * 1995-03-21 1998-02-24 Advanced Micro Devices Multiprocessing system employing an adaptive interrupt mapping mechanism and method
US5943479A (en) * 1997-01-02 1999-08-24 Digital Equipment Corporation Method for reducing the rate of interrupts in a high speed I/O controller

Also Published As

Publication number Publication date
EP0871308A2 (en) 1998-10-14
EP0871308A3 (en) 1999-07-21
US6256660B1 (en) 2001-07-03

Similar Documents

Publication Publication Date Title
US6256660B1 (en) Method and program product for allowing application programs to avoid unnecessary packet arrival interrupts
US6012121A (en) Apparatus for flexible control of interrupts in multiprocessor systems
US8543729B2 (en) Virtualised receive side scaling
US5253342A (en) Intermachine communication services
US5875329A (en) Intelligent batching of distributed messages
US8751595B2 (en) Completion processing for data communications instructions
US8037213B2 (en) Replenishing data descriptors in a DMA injection FIFO buffer
US20080281998A1 (en) Direct Memory Access Transfer Completion Notification
AU2016201513B2 (en) Low latency fifo messaging system
JPH10207822A (ja) 高速i/oコントローラにおける割り込み処理方法
US20040054822A1 (en) Transferring interrupts from a peripheral device to a host computer system
CN111190854A (zh) 通信数据处理方法、装置、设备、系统和存储介质
US8141077B2 (en) System, method and medium for providing asynchronous input and output with less system calls to and from an operating system
US7890597B2 (en) Direct memory access transfer completion notification
CN115639947A (zh) 数据写入方法、数据读取方法、装置、设备、系统及介质
US6385659B1 (en) Handling of asynchronous message packet in a multi-node threaded computing environment
US10305772B2 (en) Using a single work item to send multiple messages
US20080273534A1 (en) Signaling Completion of a Message Transfer from an Origin Compute Node to a Target Compute Node
WO2019169582A1 (zh) 处理中断的方法和装置
US20120167119A1 (en) Low-latency communications
US7320044B1 (en) System, method, and computer program product for interrupt scheduling in processing communication
US7765337B2 (en) Direct memory access transfer completion notification
US20050289252A1 (en) Method and system for host device event synchronization
Menzilcioglu et al. Nectar CAB: A high-speed network processor
US7886306B2 (en) Extensions to coupling channels to support multiple coupling facility sharing, interrupts, and message passing

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid