KR100262937B1 - 컴퓨터 시스템에서의 입출력 인터페이스 장치 및 방법 - Google Patents

컴퓨터 시스템에서의 입출력 인터페이스 장치 및 방법 Download PDF

Info

Publication number
KR100262937B1
KR100262937B1 KR1019960047128A KR19960047128A KR100262937B1 KR 100262937 B1 KR100262937 B1 KR 100262937B1 KR 1019960047128 A KR1019960047128 A KR 1019960047128A KR 19960047128 A KR19960047128 A KR 19960047128A KR 100262937 B1 KR100262937 B1 KR 100262937B1
Authority
KR
South Korea
Prior art keywords
queue
request
completion
interrupt
sub
Prior art date
Application number
KR1019960047128A
Other languages
English (en)
Other versions
KR970022798A (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 KR970022798A publication Critical patent/KR970022798A/ko
Application granted granted Critical
Publication of KR100262937B1 publication Critical patent/KR100262937B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor

Abstract

하나 또는 그 이상의 MPU 및 하나 또는 그 이상의 IOP를 포함하는 컴퓨터 시스템에서 I/O 성능을 개선하기 위한 장치 및 그 관련 방법으로서 I/O 요구는 하나 또는 그 이상의 IOP와 공유되는 메모리에서 요구한 MPU에 의해 큐잉된다. 각각의 IOP는 큐와 관련되어 있다. 각각의 IOP는 이전의 요구에 대한 처리를 완료한 후에 큐잉된 I/O 요구의 처리를 계속할 수도 있다. 또한 각각의 MPU는 IOP와 공유되는 큐와 관련되어 있다. IOP가 I/O요구의 처리를 완료하면 요구한 MPU 큐에는 완료 메시지가 부가되고 그 MPU에 대한 인터럽트가 발생된다. MPU는 그 인터럽트가 처리되면 그 큐내의 모든 완료 메시지를 서비스한다. 각각의 MPU 큐에는 임계값이 관련되어 있다. 이 임계값은 MPU로 인터럽트 요구가 발생되기 전에 요구되는 완료된 I/O요구의 최소 수효를 나타낸다. 각각의 MPU애 대한 임계값은 컴퓨터 시스템에서 MPU에서의 인터럽트 오버헤드 처리의 감소 필요성과 빠른 I/O 응답시간에 대한 필요성 사이의 균형이 허용되도록 조율될 수도 있다. 큐가 공유 메모리에 배치되거나 또는 레지스터 파일에 배치되는 여러 가지 물리적인 실시예가 기재되어 있다. 또한, 여러 가지 실시예에 있어서는 완료 메시지를 저장하기 위해 사용되는 큐와 새로운 I/O 요구를 저장하기 위해 사용되는 큐가 분리되어 있고, 다른 실시예에서는 두가지 큐잉 기능이 단일 큐로 병합되어 있으며, 여기서는 각각의 엔트리가 완료 상태 필드를 가진 I/O 요구를 포함한다.

Description

컴퓨터 시스템에서의 입출력 인터페이스 장치 및 방법
본 발명은 일반적으로 고성능 I/O 처리능력을 실현하기위해 하나 또는 그 이상의 주 처리 장치(MPU)가 하나 또는 그 이상의 I/O부 처리 장치 부 처리 장치(IOP)와 통신하도록 되어 있는 컴퓨터 시스템 입력/출력(I/O) 아키텍춰에 관한 것으로서 특히 I/O요구를 초기화하고 완료된 I/O요구와 관련된 인터럽트를 서비스 하는데 있어 초래되는 오버헤드를 감소시키는 I/O 시스템에 관한 것이다.
I/O연산을 수행하는데 요구되는 낭비적인 오버헤드(overhead)처리를 감소시키면서 주변 장치에 대한 고성능 I/O처리능력을 유지하는 것이 컴퓨터 기술 분야에서 오래된 문제점이었다. 특히, 멀티-유저(multi-user)/멀티-태스크(multi-tasking)컴퓨터 환경에서는 한 유저/태스크가 I/O처리를 발생할 때 주 처리장치가 다른 유저/태스크의 요구를 서비스할 수 있도록 I/O 오버헤드가 최소로 유지되는 것이 중요하다.
주 처리장치에는 I/O 주변장치가 I/O 제어회로를 통해 부가되는 것이 일반적이다. I/O제어 회로는 이와같은 부담으로부터 주 처리장치를 경감시키기 위해 주변 I/O장치를 작동하는 저 레벨 상세(lower level details)를 관리한다.
예를 들어, 회전 디스크 드라이브에 대한 탐색 작업은 서브 모터 제어 액추 에이터 제어 및 판독/기록 헤드의 적절한 위치를 검출하기 위한 여러 가지 센스 회로와 관련하여 매우 많은 저 레벨 연산을 필요로 한다.
특정한 요구 연산이 완료되면 I/O 제어 회로는 요구된 저레벨 연산을 수행하고 다음에 완료를 풋하고 다른 명령을 대기하도록 주 처리장치를 인터럽트하게 된다.
주변 I/O 장치의 속도는 시간적으로 꾸준하게 증가되어 왔다. 예를들어 회전 디스크 드라이브 대량 기억 장치로 이제 초기의 설계보다 빠르게 회전하며 기록면(자기 또는 광학 기록면(자기 또는 광학 기록면)상에 데이터를 보다 조밀하게 저장한다. 이와 같은 주변 장치의 증가된 속도는 주 처리장치에 의해 이전에 초기화된 I/O 요구의 완료를 표시하는 인터럽트를 제공하기 위해 주 처리장치의 인터럽크 빈도를 증가시키는 경향이 있다. 이와 같은 주 처리장치의 인터럽트 수를 감소시키기 위해 I/O 주변 제어 회로는 각 I/O 요구의 완료와 관련된 주 처리장치의 인터럽트 수를 감소시키기 위해 증가된 "지능(intelligence)"을 갖도록 설계되었다.
소규모 컴퓨터 시스템 인터페이스 버스(이후 SCSI로 언급됨)에 부칙된 I/O 주면장치를 제어하는 제어 회로는 I/O 주변 장치 제어기에서의 "지능"의 진화를 예시하고 있다. 초기의(소위"제1세대")SCSI I/O 주변 장치 제어 회로는 단일 I/O 연산을 위해 많은 저 레벨 명령을 필요로 했다. 이들 초기 I/O 주변 장치 제어회로는 통상적으로 각각의 저 레벨 명령의 완료를 수반하는 주 처리장치를 인터럽트 하였다. 제1세대 SCSI 제어 회로에 의해 수행되는 바와 같이 SCSC 버스 제어에 있어서는 단일 I/O 요구(request)가 SCSI 버스에 대한 중재를 위한 명령, 목표 장치를 선택하기 위한 명령, 데이터 전달을 요구하기 위한 명령, SCSI 버스로부터 주변 장치를 분리하고 재 접속하기 위한 명령 및 이들 다른 명령과 관련하여 SCSI 버스 상태를 변경하기 위한 여러 가지 명령을 포함할 수도 있다. 그러므로 단일 I/O 요구가 I/O 제어기를 수개의 저 레벨 I/O 명령어 발생되도록 할 수 있으며 다수의 명령의 완료를 표시하기 위해 이에 대응하는 다수의 인터럽트 요구를 주 처리장치로 발생하게 된다. 제1세대 I/O 아키텍춰에서 주 처리장치와 I/O 제어기는 그 다음 단계로 진행하기 위해 다른 명령을 대기 하면서 동기식으로 작동하게 된다. 제2세대 SCSI 제어 회로는 단일 I/O 요구를 완료하는데 요구되는 수개의 상태 및 저 레벨 연산을 통해 자동적으로 배열되는 수개의 다상(mutiphase)명령을 도입하였다.
따라서 처리된 각각의 I/O 요구에 대해 보다 적은 수의 명령 및 대응하는 인터럽트(가능하면 한 개로 낮아야 한다)가 주 처리장치로 발생되게 된다. 이들 제2세대 I/O 제어기의 대부분은 복수의 I/O요구를 처리할 수 있었다. 제3세대 SCSI 제어 회로는 주 처리장치를 인터럽트할 필요없이 약간의 예외(exception)조건을 포함하는 보다 복잡한 명령 시퀀스가 SCSI 제어기에 의해 처리될 수 있도록 여러 가지 "스크립트(scripting)"기능을 추가하였다. 이들 제3세대 장치는 주 처리 장치에 대한 인터럽트를 발생한 후에 처리를 계속할 수 있었다. 그러므로 대부분의 이와 같은 설계는 동시에 복수의 I/O 요구를 처리할 수 있다.
다른 형태의 I/O 주변 장치 제어 회로도 SCSI 제어 회로와 비슷한 방식으로 발전되어 왔다. 주 처리장치 인터럽트의 수를 주 처리장치에 의해 초기화되는 각각의 I/O 요구에 대해 거의 한 개까지 감소시키기 위해 보다 많은 지능이 제어 회로에 부가되었다. 다른 예로서 망(metwork) 제어 회로(즉, Ethernet or Token Ring LAN Controller circuits)는 주 처리장치의 인터럽트 수를 감소시키기 위해 그 설계에서 비슷한 "지능"을 갖고 있다. 이와 같은 지능 LAN 제어기의 단일 I/O 요구는 단일 I/O 요구를 만족시키도록 수개의 중간 단계 또는 저 레벨 명령이 완료될 수도 있다는 사실에도 불구하고 주 처리장치의 단일 인터럽트 요구를 발생할 수도 있다.
주변 장치 제어 회로에서의 이들 종래의 설계 개선은 주 처리장치에서의 오버헤드 처리 요구조건을 감소시키는데 도움을 주었다. 그러나 프로세서 전력이 증가함에 따라 주 처리장치에서 실행되는 응용 프로그램 내에서의 처리 전력에 대한 요구를 증가시킨다. 이들 개선에도 불구하고 주 처리장치의 요구되는 처리 오버헤드를 감소시켜 전체 시스템의 성능을 개선하는 문제점이 남아있다.
전술한 관점에서 보면 I/O 요구의 완료와 관련된 주 처리장치에 요구되는 I/O 오버헤드 처리를 더욱 감소시키는 I/O 시스템 아키펙춰에 대한 필요성이 존재한다는 것은 분명하다.
본 발명은 전술한 문제점 및 다른 문제점을 해결하며 따라서 I/O 성능을 더욱 개선시킬 수 있는 장치 및 그 관련 방법을 제공하므로써 유용한 기술을 향상시킨다. 특히, 본 발명은 하나 또는 그 이상의 주 처리장치가 큐를 통해 하나 또는 그 이상의 I/O 부 처리 장치에 I/O요구를 통신하도록 되어 있는 I/O 시스템 아키텍춰를 공개한다. 또한 I/O 부 처리 장치에 의해 발생되는 I/O 완료 메시지는 요구한 주 처리장치로 복귀되도록 큐잉이 이루어진다. I/O 부 처리 장치는 그것이 각각의 요구를 완료할 때 큐잉이 이루어진다. I/O 부 처리 장치는 그것이 각각의 요구를 완료할 때 큐잉된 I/O 요구의 처리를 계속한다. 종래의 설계와는 달리, 접속된 주 처리 장치로부터 다른 I/O 요구가 발생되기를 유휴상태를 대기할 필요가 없다. 큐에서의 잠정적으로 수개의 I/O 요구의 완료를 표시하기 위해 주 처리장치의 단일 인터럽트가 발생될 수가 있다. 본 발명의 다른 관점은 주 처리장치와 I/O 주변 장치의 최적의 성능의 평형을 위해 이들 큐의 이용이 조율될 수 있도록 허용한다.
본 발명은 하나 또는 그 이상의 주 처리장치가 공유 메모리를 통해 하나 또는 그 이상의 부 처리 장치와 통신하도록 되어 있는 시스템 설계를 포함한다. 큐 및 그 관련 제어 정보가 각각의 I/O 부 처리 장치에 대응하는 공유 메모리 구조나 또는 I/O 부 처리 장치내의 레지스터 파일에 존재할 수도 있다. 하나 또는 그 이상의 프로세서가 I/O 데이터 전달이 요구되는 부 처리 장치 큐에서 I/O 요구를 발생한다. 유사하게 큐 및 그 관련 제어 정보가 각각의 주 처리장치에 대응하는 공유 메모리 구조나 주 처리장치와 관련된 레지스터 파일에 존재할 수도 있다. 부 처리 장치는 대응하는 I/O 요구를 발생한 주 처리장치와 관련된 큐에서 I/O 요구 완료 정보(또는 예외 조건 정보)를 큐잉한다.
본 발명의 다른 실시예는 공유 메모리 또는 레지스터 파일에서 주 처리장치가 아닌 I/O 부 처리 장치와의 완료 큐의 연관성을 포함한다. 이와 같은 다른 실시예는 I/O 부 처리 장치가 처리 전력이나 또는 다수의 주 처리장치와 관련된 완료 큐를 어드레스하기 위한 적응성(flexibility)가 부족한 경우에 바람직할 수도 있다. 다른 실시예는 각각의 요구 큐 엔트리에 상태 메시지 부분을 포함하므로써 단일 큐로의 요구 및 완료 큐의 합병을 포함한다. 상태 메시지 부분은 대응하는 I/O 요구 엔트리가 완료되었다는 것을 표시하기 위해 I/O 부 처리 장치에 의해 기록된다. 여러 가지 실시예 각각은 가격 요인 주 컴퓨터 환경 요구조건(즉, 운영 시스템 요구조건), 하드웨어 요구조건 및 제한조건 등에 따라 변화되는 상이한 환경하에서 바람직할 수도 있다. 이 기술에 숙련된 사람은 이와 같은 설계 범위 및 교환(tradeoffs)을 쉽게 인식하게 되고 특정 응용 요구에 따라 선택하게 된다.
본 발명은 하나 또는 그 이상의 주 처리장치가 하나 또는 그 이상의 I/O 부 처리 장치로 I/O 요구를 큐잉하도록 허용하는 큐잉 구조를 이용하는 방법을 포함한다. 특정 I/O 부 처리 장치를 I/O 요구를 가진 주 처리장치는 그 부 처리 장치의 큐에 I/O 요구를 부가한다. 이 큐와 관련된 I/O 부 처리 장치는 이전의 요구가 완료되기 전에 그 큐로부터 다음에 큐잉되는 요구를 제거한다. 그 큐 및 I/O 부 처리 장치와 관련된 세마포어(semaphore)는 큐 조작의 어토믹성(atomicity)을 보장한다. 이 아키텍춰는 I/O 부 처리 장치가 이전에 큐잉된 다른 I/O 요구를 처리 하면서 복수의 I/O 요구가 큐잉될 하나 또는 그 이상의 주 처리장치로부터)수 있도록 허용한다. 이와 같은 본 발명의 특징은 I/O 부 처리 장치가 주 처리장치로부터 다른 I/O 요구를 대기하고 있을 때 종래의 설계에 공통적인 유휴 시가에 비교하여, I/O 부 처리 장치가 다수의 주 처리장치로 부터의 I/O 요구를 계류하고 있는 큐에 서비스하는 큐에 서비스하는 동작시간을 최대로 할 수 있도록 허용한다.
본 발명의 다른 관점은 하나 또는 그 이상의 I/O부 처리 장치가 대응하는 I/O 요구를 발생한 주 처리장치와 관련된 큐에서 I/O 완료(또는 예외 조건 정보)를 큐잉할 수 있도록 허용하는 방법을 포함한다. I/O 부 처리 장치가 I/O 요구의 처리를 완료하면 요구한 주 처리장치와 관련된 큐에 그 요구의 완료를 표시하는 메시지가 부가된다. 이때 주 처리장치에는 인터럽트 신호가 발생되어 인가된다. 주 처리장치가 인터럽트 서비스를 시작하기 전에 다른 I/O 요구가 완료될 수도 있다. 이들 완료 메시지를 비슷하게 주 처리장치와 관련된 큐에 부가된다. 주 처리장치가 인터럽트 신호가 발생되어 인가된다. 주 처리장치가 인터럽트 서비스를 시작하기 전에 다른 I/O 요구가 완료될 수도 있다. 이들 완료 메시지를 비슷하게 주 처리장치와 관련된 큐에 부가된다. 주 처리장치가 인터럽트를 서비스하면 다음에는 그 이전의 I/O 요구의 완료를 나타내는 큐에 부가된 모든 완료 메시지를 제거하고 처리한다. 이 큐 및 주 처리장치와 관련된 세마표어는 큐 조작의 어토믹성을 보장한다. 이와같은 특성은 주 처리장치에 요구되는 인터럽트의 수를 감소시킨다. 큐에 부가된 다수의 완료된 I/O 요구는 주 처리장치의 단일 인터럽트에 의해 서비스될 수도 있다.
I/O 부 처리 장치에 대한 I/O 요구의 큐잉은 I/O 부 처리 장치로 하여금 I/O 주변 장치에 대한 고레벨의 처리능력(throughput)을 유지할 수 있도록 한다. I/O 요구가 완료될 때, I/O 부 처리 장치와 주 처리장치는 동시에(완전한 병행 및 중복으로 동작할 수 있는데 그것은 주 처리장치가 I/O 부 처리 장치에서의 처리 상태에 관계없이 새로운 I/O 요구를 큐잉할 수도 있기 때문이다.
완료 메시지를 다시 주 처리 장치로 큐잉하는 것은 주 처리 장치로 하여금 I/O 주변 장치에의 접속과 관련된 I/O 처리 오버헤드를 최소화할 수 있도록 한다. 주 처리장치 인터럽트 서비스 루틴은 단일 인터럽트 요구가 발생될 때 모든 큐잉된 완료 메시지를 처리할 수도 있다. 이것은 주 처리장치가 각각의 I/O 요구 완료 메시지에 대해 프로세서의 문맥(context)을 보관(saving) 및 복원(restoring)하는 오버헤드 처리를 하는 것을 절약한다. 또한 주 처리장치는 요구 큐에 부가된 새로운 요구의 발생의 종료시 I/O 요구 I/O 완료 메시지가 발견되면 주 처리장치는 인터럽트 요구의 발생 이전에 완료의 초기 검출에 의해 어떠한 인터럽트 서비스 요구 처리의 오버헤드도 피할 수 있다. 어느 경우에도 주 처리 장치는 종래의 설계로 가능한 것보다 훨씬 적은 처리 오버헤드로 다수의 큐잉된 I/O 요구 완료 메시지를 처리 할 수 있다. 특히, 본 발명은 한 I/O 요구당 인터럽트를 1개 이하로하여 I/O 오버헤드 처리를 감소시킬 수도 있으며 이러한 개선은 종래의 설계에서는 실현될 수 없는 것이다.
본 발명의 다른 관점은 I/O 인터럽트 서비스의 오버헤드 처리와 I/O 응답시간의 균형을 허용하는 방법을 포함한다. 본 명세서 언급된 I/O 응답시간은 주처리 장치가 I/O 요구를 발생하는 시간과 I/O 부 처리장치가 I/O 요구를 완료하는 시간 사이의 시간을 말한다. 이 시간을 감소시켜 주처리장치에서의 I/O 요구에 대한 응답시간을 개선하는 것이 바람직하다. 그러나 주처리장치에 요구되는 인터럽트의 수를 감소시키는 것도 바람직하다. 전술한 바와 같이 각각의 인터럽트 요구는 주처리장치로 하여금 그 현재의(인터럽트된)연산의 문맥을 보관 및 복원하도록 유발한다. 한 I/O 요구당 인터럽트의 수를 감소시키므로써 주처리장치에 의한 I/O 완료의 검출이 지연될 수도 있다. 그러나 이것은 단위시간당 I/O 요구에서 측정되는 총 I/O 처리량을 효과적으로 증가시키며 또한 주처리장치에서의 I/O 오버헤드 처리를 감소시키게 된다.
본 발명의 I/O 시스템의 몇몇 응용에 있어서는 소정의 레벨이상으로 I/O 응답시간을 증가시키는 것이 바람직할 수도 있다. 본 발명은 주처리장치로 인터럽트가 발생되기 전에 완료될 I/O 요구의 수를 나타내는 임계변수값을 설정하기 위한 방법을 포함한다. 각각의 주처리장치에 대응하는 큐와 관련된(또는 I/O 부처리장치와 관련된) 인터럽트 임계변수는 주처리장치로 인터럽트 요구가 발생되기 전에 완료된 I/O 요구의 최소의 수를 표시하도록 설정될 수도 있다. 각각의 다수의 주처리장치는 유일한 임계변수를 설정하므로써 분리적으로 동조될 수도 있다. 이 임계값이 1보다 크면 충분한 수의 I/O 요구가 완료될때까지 개개의 I/O 요구 완료 메시지는 지연될 수도 있다. 이때 오직 하나의 인터럽트만이 주처리장치로 발생되게 된다. 이와 같은 지연은 다른 I/O 역시 완료될때까지 특정 I/O 요구에 대한 동작을 지연시키므로써 I/O 응답시간을 연장시킬 가능성이 있다. 본 발명의 이와같은 특성은 주처리장치에서의 인터럽트 처리 오버헤드의 감소 필요성과 I/O 응답시간을 보다 빠르게 하기위한 필요성 사이의 균형을 맞추기 위해 임계값을 변화시키므로써 컴퓨터 시스템이 동조될 수 있도록 허용한다.
그러므로 본 발명의 한 목적은 I/O 부처리장치의 이용을 최대화하므로써 컴퓨터 시스템의 I/O 성능을 개선하기 위한 장치 및 그 관련 방법을 제공하는 것이다.
본 발명의 다른 목적은 I/O 요구에 대한 완료 인터럽트를 서비스하는데 필요한 주처리장치 오버헤드를 감소시키기 위한 장치 및 그 관련 방법을 제공하는 것이다.
본 발명의 또다른 목적은 통상적인 컴퓨터 시스템에서 단위시간당 완료되는 총 I/O 요구의 수를 증가시키기위한 장치 및 그 관련 방법을 제공하는 것이다.
본 발명의 또다른 목적은 하나 또는 그 이상의 주처리장치와 하나 또는 그 이상의 부처리장치에 의해 수행되는 연산의 병행(overlap)을 증가시키기 위한 장치 및 그 관련 방법을 제공하는 것이다.
본 발명의 또다른 목적은 하나 또는 그 이상의 주처리장치로부터 하나 또는 그 이상의 I/O 부처리 장치로 I/O 요구를 큐잉하기 위한 장치 및 그 관련 방법을 제공하는 것이다.
본 발명의 또다른 목적은 하나 또는 그 이상의 부처리장치로부터 하나 또는 그 이상의 주처리장치로 I/O 완료 메시지를 큐잉하기 위한 장치 및 그 관련 방법을 제공하는 것이다.
본 발명의 또다른 목적은 I/O 응답시간의 개선에 대하여 I/O 완료 요구를 처리하는데 요구되는 오버헤드 시간의 감소의 균형을 맞추기 위한 장치 및 그 관련 방법을 제공하는 것이다.
제1도는 다수의 MPU가 각 MPU와 관련된 완료 큐 및 각 IOP와 관련된 요구 큐를 포함하는 공유 메모리를 통해 다수의 IOP에 접속되어 있는 본 발명의 일실시예의 블록도.
제2도는 단일 MPU가 버스를 통해 다수의 IOP에 접속되어 있고 완료 및 요구 큐가 각 IOP내에서 구현되는 본 발명의 일실시예의 블록도.
제3도는 다수의 MPU가 버스를 통해 다수의 IOP에 접속되어 있고, 완료 큐는 각 MPU내에서 구현되고 요구 큐는 각 IOP내에서 구현되도록 되어 있는 본 발명의 일실시예의 블록도.
제4도는 전자적 설계나 또는 소프트웨어 구조로 등가적으로 구현될 수도 있는 본 발명의 이상적인 큐 구조를 도시하는 블록도.
제5도는 본 발명의 방법에 따른 주 처리 장치 내에서의 I/O요구 발생 프로세스의 흐름도.
제6도는 본 발명의 방법에 따른 I/O부 처리 장치내의 I/O 요구 처리의 흐름도.
제7도는 본 발명의 방법에 따른 주 처리 장치 내에서의 인터럽트 서비스 프로세스의 흐름도.
제8도는 3-레벨 계층 I/O 아키텍춰가 단일 MPU를 공유 메모리를 통해 다수의 중간 처리 장치(IPU)에 접속하고 중간 처리 장치를 공유 메모리를 통해 다수의 IOP에 접속하도록 되어 있으며 두 공유 메모리는 모두 저 레벨 프로세서와 관련된 요구/완료 조합 큐를 포함하고 있는 본 발명의 일실시예의 블록도.
* 도면의 주요부분에 대한 부호 설명*
100 내지 104, 200, 300 내지 306 : RAM/ROM
106 내지 110, 202, 308 내지 312 : MPU
112 내지 116, 214 내지 218 : 완료 큐
118 내지 124, 224 내지 228, 344 내지 348 : 요구큐
126 내지 132, 204 내지 208, 314 내지 318 : I0P
140 : 공유 메모리
본 발명의 상기 및 다른 목적 특징, 및 장점은 다음의 설정 및 첨수 도면으로부터 명백해질 것이다.
본 발명은 여러 가지 수정 및 다른 형태로 이루어질 수도 있지만 특정 실시예가 도면에 예로써 도시되어 있으며 상세하게 후술되게 된다. 그러나 이것은 본 발명을 기재된 특정 형태로 제한하고자 하는 것이 아니며 반대로 본 발명은 첨부된 특허 청구의 범위에 의해 정의되는 바와 같이 본 발명의 정신 및 범위에 속한 모든 수정, 등가물 및 대안 등을 포괄하는 것이다.
I/O 시스템 아키텍춰: 제1도 내지 제3도 및 제8도에는 본 발명의 I/O 시스템 아키텍춰의 양호한 실시예가 도시되어 있다. 제1도는 다수의 주처리장치(main processing units : MPU)(106-110)와 다수의 I/O 부처리장치(sub-processors : IOP)(126-132)와 함께 본 발명의 장치를 구현하는 한 실시예를 도시하고 있다. 제1도에서 본 발명의 I/O 시스템은 공유 메모리(140)내에서 구체화된다. 다수의 MPU(106-110) 각각은 메모리 버스(150-154)를 통해 RAM/ROM 메모리 장치(100-104)는 각각 대응하는 MPU(105-110)에 의해 MPU(106-110)각각에 대해 유일한 데이타 및 프로그램 명령어를 위한 전용 기억 장치로서 이용된다. 또한 다수의 MPU(106-110) 각각은 버스(156-160)를 통해 공유 메모리(140)에 각각 접속된다. IOP(126-132)는 버스 (170-176)를 통해 I/O 주변 장치에 각각 접속된다. 또한 IOP(126-132)는 버스(162-168)를 통해 공유 메모리(140)에 접속된다.
MPU(106-110)는 RAM/ROM 메모리 장치(100-104)에 저장된 프로그램된 명령어를 실행한다. MPU(106-110)가 I/O 주변 장치에 대한 입력/출력 연산을 필요로 하면 원하는 I/O 주변장치에 접속된 적절한 IOP(126-132)에 요구(request)를 개시한다. I/O 요구는 발신된 MPU로부터 공유 메모리(140)를 통해 선택된 IOP(126-132)로 향한다. 선택된 IOP(126-132)는 요구한 MPU(106-110)를 대신하여 요구된 I/O연산을 수행하고 공유메모리(140)를 통해 요구한 MPU(106-110)로 복귀될 완료 상태 메시지를 발생한다.
I/O 시스템의 I/O 성능을 개선하기 위해 본 발명의 공유 메모리(140)는 다수의 큐(queues)(112-124)를 포함한다. 요구 큐(118-124)는 다수의 IOP(126-132)중 하나와 각각 관련되어 있다. MPU(106-110)는 새로운 I/O 요구를 발생하여 선택된 IOP(126-132)와 관련된 요구 큐를 이용하는 것은 다른 MPU가 I/O 요구를 완료하는 것을 기다릴 필요없이 다수의 MPU(106-110)가 병렬로 I/O 요구를 발생할 수 있도록 허용한다. 하나 또는 그 이상의 MPU(106-110)가 다수의 I/O 요구를 발생할 수도 있으며 완료를 대기하는 동안에 다른 처리를 계속할 수도 있다.
IOP(126-132)는 그 각각의 요구 큐(118-124)에서 큐잉된 I/O 요구를 서비스 하기 위해 MPU(106-110)와 무관하게 동작한다. IOP가 그 각각의 요구 큐(118-124)에 큐잉된 I/O 요구의 처리를 완료하면 그 IOP는 I/O 요구를 발생한 MPU(106-110)로의 복귀를 위한 완료 상태 메시지를 발생한다. 완료 상태 메시지는 그 I/O 요구를 발생한 MPU(106-110)와 관련된 완료 큐(112-116)에 부가된다. 보다 상세하게 후술되는 바와 같이 요구 큐(118-124)와 완료 큐(112-116)의 이용은 제1도에 도시된 I/O 시스템의 I/O 성능에서의 개선을 허용한다.
이 기술에 숙련된 사람은 완료 메시지가 예외 조건을 표시할 수도 있다는 것을 쉽게 인식하게 된다. 이와 같은 예외 조건(exception condition) 메시지는 IOP가 다른 요구의 처리를 계속할 수 있게 되기 전에 MPU가 중재(intervene)할 것을 필요로 할 수도 있다. 이와 같은 경우에 IOP는 그 관련 요구 큐에서의 큐잉된 I/O 요구의 더 이상의 처리를 방지하기 위해 "동결(freeze)" 또는 "중지(halt)"되게 된다. 다음에 예외조건을 유발하는 I/O 요구를 발생한 MPU는 문제점(만일 존재한다면)을 정정하고 I/O 요구 큐를 재구성하고(필요한 경우에) 어떤 큐잉된(재-큐잉된) I/O 큐의 처리를 다시 재개하도록 IOP에 신호하게 된다.
I/O 시스템 아키텍춰-다른 실시예 : 제2도는 버스(252)를 통해 전용 RAM/ROM 메모리 장치(200)에 접속되어 있는 단일 MPU(202)가 제어버스(250)를 통해 다수의 IOP(204-208)와 통신하도록 되어 있는 본 발명의 다른 실시예를 도시하고 있다. 제1도의 IOP와는 달리 IOP(204-208)는 그 각각의 완료 큐 및 요구 큐를 IOP내에 내장한다. 특히 IOP(204)는 그 내부에 완료 큐(216) 및 요구 큐(226)를 위한 회로를 내장하고 있으며 IOP(208)는 그 내부에 완료 큐(218) 및 요구 큐(228)를 구현하기 위한 회로를 내장하고 있다. 제1도에 도시된 공유 메모리 아키텍춰와 달리 제2도는 완료 큐(214-218) 및 요구 큐(224-228)가 대응하는 IOP(204-208)의 회로내의 레지스터 파일로서 구형될 수도 있는 구성을 도시하고 있다.
제1도를 참조하여 전술한 바와 같이 버스(254-258)를 통해 I/O 주변 장치와 통신하므로써 I/O 요구를 처리할 선택된 IOP(204-208)에 대한 I/O 요구를 발생한다. MPU(202)에 의해 발생된 I/O 요구는 선택된 IOP(204-208)와 관련된 요구 큐(2245-228)에 부가된다. 각각의 IOP(204-208)는 그 대응하는 내장된 요구 큐(224-228)에 존재하는 I/O 요구를 처리하기 위해 MPU(202) 및 다른 IOP와 무관하게 동작한다. IOP(204-208)가 I/O 요구에 대한 처리를 완료하면 완료 상태 메시지가 발생되어 선택된 IOP(204-208)와 관련된 완료 큐(214-218)에 부가된다. 다음에는 하나 또는 그 이상의 I/O 요구의 완료를 표시하기 위해 인터럽트 요구 신호(IRQ)가 발생되어 제어 버스(250)를 통해 MPU(202)로 인가된다. 다음에 MPU(202)는 어떤 I/O 요구가 완료되었는지 판단하기 위해 완료 큐(214-218)내에 존재하는 상태 메시지에 대한 질의를 한다.
제3도는 본 발명의 I/O 시스템 아키텍춰의 또다른 실시예를 도시하고 있다. 제3도에 도시된 바와 같이 다수의 MPU(308-312)는 버스(352-256)를 통해 전용 RAM/ROM 메로리 장치(300-306)에 각각 접속된다. 또한 MPU(308-312)는 제어 버스(350)를 통해 다수의 IOP(314-318)에도 접속된다. IOP(314-318)는 버스(358-362)를 통해 다수의 I/O 주변 장치에 접속된다. 제2도에 도시된 바와 같이 제3도의 IOP(314-318)는 요구 큐(344-348)를 구현하기 위한 회로를 내장하고 있다.
제2도 및 제3도에 도시된 내장된 큐는 IOP회로(314-318)내의 레지스터 파일과 같이 이 기술에 숙련된 사람에게 잘 알려진 기술에 의해 구현될 수도 있다. MPU(308-312)는 그 회로 내부에 완료 큐(338-342)를 구현하기 위한 적절한 회로를 내장한다. 이들 MPU(308-312)는 I/O 요구를 발생하여, IOP(314-318)로부터의 I/O의 요구의 처리를 완료하면, 완료 상태 메시지가 발생되어, 그 I/O 요구를 발생한 MPU(308-312)와 관련된 완료 큐(338-342)에 부가된다.
제8도는 다수의 저 레벨(lower level) IOP(806-810)가 공유 메모리(814)를 통해 다수의 중간 레벨(termedite level) 처리장치(IPU)(802-804)와 통신하도록 되어있는 본 발명의 또다른 실시예를 도시하고 있다. 중간 레벨 처리장치(802-804)는 다음에 공유 메모리(812)를 통해 MPU(800)와 통신한다. 제8도에 도시된 바와 같이 본 발명의 통신 방법 및 구조는 I/O 주변 장치와 고레벨 처리장치 사이의 멀티-레벨 계층적 통신 아키텍춰의 어떤 레벨에도 적용될 수 있다. 통신 계층의 각각의 레벨은 본 발명의 공유 메모리 아키텍춰에서 큐를 통해 그 다음 고레벨에 통신한다.
제8도는 본 발명의 한 실시예가 도시되어 있다. 제8도의 각각의 큐(816-824)는 조합된 요구/완료 큐이며 대응하는 중간 레벨 처리장치(802-804)나 또는 IOP(806-810)와 연관되어 있다. 조합된 요구/완료 큐내의 각 엔트리는 큐에 요구가 부가될 때 고레벨 처리장치에 의해 초기화되는 상태 메세지 부분을 포함한다. 저 레벨 처리 장치는 대응하는 I/O 요구가 완료될 때 큐 엔트리의 상태 메시지 부분에 적절한 완료 메시지를 기록한다. 이 조합된 요구/완료 큐는 어떤 경우에도 고레벨 처리장치와 관련된 적절한 완료 큐를 배치하기 위해 저레벨 처리장치에서 요구되는 복잡성을 감소시키기 위해 채택될 수도 있다.
I/O 시스템 아키텍춰-양호한 실시예 : 제1도 내지 제3도 및 제8도에 도시되고 위에서 설명된 아키텍춰는 이 기술에 숙련된 사람이 본 발명의 범위 및 정신에 속한 것으로 인식하게 되는 여러 가지 실시예로서 의도된 것이다. 이 기술에 숙련된 사람은 제1도 내지 제3도 및 제8도에 나타난 여러 구성요소 및 설계적 선택은 특정 응용이나 환경에 양호하게 여러 조합으로 혼합될 수도 있다는 것을 쉽게 인식하게 될 것이다. 이들 설계적 선택에는 특정 큐의 배치, 공유 메모리 및 관련 소프트웨어 기술이나 하드웨어 레지스터 파일의 이용 고레벨 처리장치나 저레벨 처리장치와 완료 큐와의 연관성 요구 큐 및 완료 큐의 단일 큐로의 집적화 등이 포함되어 있다.
본 발명 구현의 최선으로 제공되는 모드느 I/O 아키텍춰가 사용될 소프트웨어(운영 시스템)의 제한 및 요구조건 하드웨어 설계 복잡성 대 비용의 균형 소프트웨어 복잡성 대 비용의 균형 I/O 주변 장치의 성능 참작 및 다른 요인을 포함하여 여러 가지 요인에 의존한다. 설명을 간단하게 하기 위해 본 발명은 단일 MPU가 다수의 IOP에 접속되어 있고 그 고유의 요구 및 완료 큐가 IOP내의 하드웨어 레지스터 파일로서 구현되는 I/O 아키텍춰를 참조하여 설명된다.
큐: 제4도는 큐(400)의 통상적인 구현을 도시하고 있다. 큐(400)는 제1도 내지 제3도의 큐(112-124, 214-228, 338-348) 중 한 예로서 고려된 것이다. 이 기술에 숙련된 사람은 여기서 기술되는 큐(400)가 표준 메모리 장치에 통상적인 프로세서 기술을 통해 적용되는 소프트웨어 기술로 구형될 수도 있고, 또는 이 기술에 잘 알려진 전자 회로에 의해 구현될 수도 있다는 것을 인식할 것이다. 이 큐(400)는 FIFO(412)를 포함하는 메모리 요소의 어레이로 이루어진다. 생산자(produce; 요구큐의 경우에 MPU, 완료 큐의 경우에 IOP)는 FIFO(412)의 차기 이용가능 요소(element) 에 부가될 엔트리를 발생한다. 레지스터 P-NEXT(402)는 생산자에 의해 사용될 차기 이용가능 요소(414)를 표시하는 FIFO(412)에 대한 포인터를 포함한다. P-NEXT 레지스터(402)내의 값은 FIFO(412)의 최초 요소로부터 FIFO(412)의 최종 요소까지 순환하는 방식으로 FIFO(412)에 대한 인덱스로서 증가된다. 소비자(consumer; 완료 큐의 경우에 MPU, 요구 큐의 경우에 IOP)는 FIFO(412)에서 생산자에 의해 충전된 요소(414)를 소비자가 검색하고 비우고(empty), 처리할 FIFO(412)의 차기(next) 충전 요소(414)를 표시하는 포인터를 포함한다.
각각의 요소(414)는 완료 큐의 경우에 I/O 요구의 처리 완료시 IOP에 의해 발생되는 완료 상태 메시지를 포함한다. 카운트(COUNT) 레지스터 변수(406)는 생산자에 의해 FIFO(412)에 충전되어 아직 소비자에 의해 소비되지 않은 요소(414)의 수를 포함한다. 완료 큐를 구현하는데 1차적으로 사용되는 임계(THRESHOLD) 레지스터 변수(408)는 관련 MPU에 대해 인터럽트 요구(IRQ)가 발생될 수도 있는 임계 카운트 레지스터 값을 나타내는 수를 포함한다. THRESHOLD 및 COUNT 레지스터(408,406)의 이용에 대해서는 더욱 상세하게 후술되게 된다.
세마포어(SEMAPHORE) 레지스터 변수(410)는 동시에 독자적으로 동작하는 프로세스의 위험 지역(critical section)사이의 상호 배제(mutual exclusion)를 실현하기 위한 목적으로 이용된다. 큐를 조작하는데 있어서, MPU와 IOP 모두 큐(400) 내의 변수를 조작할 필요가 있을 수도 있다. 큐(400)의 조작을 요하는 프로세서는 먼저 SEMAPHORE 레지스터 변수(410)를 성공적으로 로크(lock)해야 한다. 큐(400)내의 연산의 어토믹성(atomicity)을 실현하기 위한 이와같은 세마포어 변수의 이용에 대해서는 이 기술에 숙련된 사람에게는 잘 알려져 있으며 그러므로 더 이상 논의될 필요는 없다.
이 기술에 숙련된 사람은 제4도에 도시된 바와 같이 큐나 또는 FIFO를 구현하기 위해 다양한 전자 회로나 또는 소프트웨어 데이터 구조가 사용될 수도 있다는 것을 쉽게 인식하게 된다. 예를들어 FIFO를 포함하는 레지스터 파일을 구현하는 전자 회로는 큐(400)를 구현할 수도 있으며 스택, 순환버퍼, 또는 연결 리스트 데이터 구조를 구현하도록 프로그램된 범용컴퓨터가 될 수도 있다. 또한 이 기술에 숙련된 사람은 제4도에 도시된 바와 같은 세마포어가 공지된 소프트웨어 기술이나 표준 전자 부품에 의해 구현될 수도 있다는 것을 쉽게 인식할 것이다. 본 명세서에서 사용되는 바와 같이 세마포어(제4도에서 SEMAPHORE 레지스터 변수로 도시됨)는 경합, 협동, 병행 프로세스 또는 회로 사이의 상호 배제를 실행하는 소프트웨어 또는 전자 설계나 기술을 의미한다.
I/O시스템 방법:
간략성을 위해 후술되는 방법은 제2도의 I/O 시스템 아키텍춰(단일 MPU를 가짐)에 대해 제공되게 된다. 이 기술에 숙련된 사람은 후술되는 방법이 제1도 및 제3도에 대하여 전술된 바와 같은 다수의 IOP에 접속된 다수의 MPU에 적용하는 것에도 쉽게 확장될 수도 있다는 것을 쉽게 이해할 것이다.
I/O 요구 초기화:
제5도내지 제7도는 제1도 내지 제3도에 도시된 MPU와 IOP 내에서 동작하는 본 발명의 방법을 설명하는 흐름도이다. 제5도는 새로운 I/O 요구를 선택된 IOP 요구 큐에 부가하도록 MPU내에서 동작가능한 방법을 도시하고 있다. 요소(500)는 먼저 선택된 IOP의 요구 큐와 관련된 세마포어 변수를 포크하도록 동작한다. 이 기술게 숙련된 사람에게 잘 알려진 바와 같이 요소(500)는 통상적으로 세마포어가 그 이용가능성을 표시하기를 대기하고 다른 협동 프로세스가 큐를 억세스하는 것을 방지 하기위해 세마포어를 동시에 로크하도록 어토믹 테스트 및 셋트 또는 판독-수정-기록 연산을 구현한다. 일단 세마포어가 포크되면, 요소(502)는 다음에 새로 발생된 I/O 요구를 선택된 IOP의 요구큐에 부가하도록 동작한다.
요소(506-510)는 다음에 새로운 I/O 큐를 초기화하기 위한 처리 동안에 (위에소 요소 500-504) 어떤 I/O 요구가 완료되었는지 판단하기 위해 완료 큐를 "폴링"하도록 동작한다. 이런 방식으로 완료된 요구에 대해 폴링하는 것은 인터럽트를 처리하기 위한 문맥 스위칭에 대한 필요성을 없애므로써 MPU에 의해 초래되는 I/O 오버헤드 처리를 더욱 감소시킬 수 있다. 만일 인터럽트가 처리되기 전에 큐에서 완료 메시지가 발견되면 MPU는 어떤 인터럽트 요구가 발생되는 것을 필요로 하지 않고 완료 메시지를 처리할 수 있다(나중의 요구가 완료될 때 까지)(요소508). 전술한 바와 같이 요소(506,510)는 MPU와 IOP에서 경합하는 위험 지역사이의 상호 배제를 보장하기 위해 완료 큐와 관련된 세마포어를 로크 및 로크해제 하도록 작용한다. 이것은 IOP의 요구 큐에 새로운 요구를 부가하는 MPU에 대한 처리를 완료하는 것이다. 새로 큐잉된 I/O 요구의 완료를 대기하면서 MPU에서 다른 처리가 계속될 수도 있다.
I/O 요구 프로세스:
제6도는 IOP와 관련된 요구 큐내의 모든 I/O 요구를 처리하기 위해 IOP 내에서 적용가능한 본 발명의 방법을 도시하는 흐름도이다. 요소(600)는 IOP와 관련된 요구 큐에서 어느 I/O요구가 이용가능한지 판단하도록 작용한다. 각각의 I/O 요구는 전술한 MPU 방법의 연산에 의해 요구 큐내의 FIFO 요소에 배치된다. 만일 요구 큐의 카운트 변수에 의해 표시되는 바와 같이 요구 큐에서 I/O 요구가 발견되지 않는다면 요소(602,604)는 요구 큐에 부가될 요구를 대기하는 동안에 각각 이용될 수 있다. 요소(602)는 IOP와 관련된 완료 큐내의 카운트 변수에 의해 표시되는 바와 같이 IOP에 의해 어떤 I/O 연산이 완료되었는지를 판단한다(제2도의 실시예에 도시됨). 만일 0을 초과하는 카운트 변수에 의해 표시되는 바와 같이 만일 IOP의 완료 큐에 엔트리가 있다면 다음에 요소(604)는 제2도에 도시된 바와같이 IRQ 신호를 발생하고 그 발생된 IRQ 신호를 MPU에 인가하도록 작용한다. 어느 경우에도 IOP의 요구 큐에 새로운 I/O 요구를 부가하는 것을 대기하도록 요소(600)으로 복귀하므로써 처리는 계속되게 된다.
소프트웨어 기술에 숙련된 사람은 제1도 및 제3도의 실시예에 도시된 바와 같이 완료 큐가 다수의 MPU 각각에 관련되어 있으면 요소(602,604)는 중요하지 않으며 스킵될 수도 있다. 이런 상황에서 완료큐는 단지 특정 I/O 요구의 소스인 MPU와 관련하여 식별될 수도 있다. 이와 같은 경우의 특정 I/O 요구는 요구를 발생한 MPU를 유일하게 식별하는 식별 필드를 포함한다. 이에 대해서는 요소(614-622)의 설명에서 보다 상세하게 후술되게 된다.
요소(600)가 IOP의 요구 큐에 I/O 요구가 부가된 것으로 판단하면 IOP의 요구 큐와 관련된 세마포어를 로크하기 위해 요소(606)에서 처리가 계속된다. 전술한 바와 같이 이 기술에 숙련된 사람은 요소(606)는 단일의 개별적인 동작으로 메모리 변수를 테스트하고 셋트하기 위한 어토믹 연산을 나타낸다는 것을 쉽게 인식할 것이다. 요소(606)는 메모리 변수가 이용가능해 지기를 기다리고 다른 협동 프로세스가 로크된 요구 큐를 조작하는 것을 배제하도록 하기 위해 메모리 변수 세마포어를 셋트한다. 특히 제5도에 도시되고 요소(606-610)에 나타난 바와 같은 방법은 IOP의 요구 큐를 적절하게 조작하기 위해 상호 배제적이 되어야 한다.
일단 세마포어가 요구 큐에 대해 로크되면 다음에 요소(608)는 요구 큐에 이전에 부가된 차기 I/O 요구를 큐잉해제(unqueue)작용한다. 요소(608)의 연산에서는 제4도와 관련하여 전술된 바와 같이 요구큐와 관련된 카운트 변수의 감소가 수반된다. IOP의 요구 큐로부터 I/O 요구가 큐잉해제된 후에 요소(610)는 요구 큐와 관련된 세마포어를 포크해제하도록 작용한다. 이로 인해 다른 협동 프로세스가 연산을 계속하게 될 수 있다(제5도를 참조하여 전술된 바와 같음).
요소(612)는 요소(608)의 연산에 의해 큐잉해제된 I/O 요구를 완료하기 위해 접속된 I/O 주변 장치와 관련하여 IOP에 의해 수행될 필요가 있는 모든 저레벨 I/O 처리를 나타낸다.
요소(614)는 I/O 요구와 관련된 MPU의 완료 큐가 연관된 카운트 변수가 그 큐와 관련된 임계값을 초과하는지 판단하도록 동작한다. 만일 카운트 변수가 현재 임계값을 초과하면 요소(616)는 IRQ 신호를 발생하고 그 발생된 IRQ 신호를 MPU에 인가하도록 동작한다. 다음에는 MPU가 발생된 인터럽트(IRQ 요구)를 서비스하고 MPU의 완료 큐와 관련된 카운트 변수를 감소시키기를 대기하는 요소(614)로 복귀하여 처리가 계속된다. 결국 MPU가 완료 큐를 처리완료하면 완료 큐의 카운트 변수는 완료 큐의 임계값 이하로 감소되게 된다. 다음에 처리는 요소(618)에서 계속된다.
요소(618)는 MPU의 완료 큐와 관련된 세마포어 변수를 로크하는 작용을 한다. 전술한 바와 같이 이 기술에 숙련된 사람은 요소(618)가 완료 큐의 세마포어 변수에 대한 개별적인 어토밀 테스트 및 셋트 연산을 수행한다는 것을 쉽게 인식할 것이다. 세마포어 변수가 성공적으로 로크되면 완료 큐에 새로운 완료 상태 메시지 엔트리를 부가하기 위해 요소(620)에서 처리가 계속된다. 다음에 요소(622)는 MPU의 완료 큐와 관련된 세마포어를 로크해제 하도록 동작한다. 마지막으로 IOP의 요구 큐에서 이용가능하게 된 다른 I/O 요구를 대기하는 요소(600)으로 복귀하여 처리가 계속된다.
전술한 바와 같이 이 기술에 숙련된 사람은 제5도 및 제6도에 도시된 요구 큐를 이용하므로써 IOP가 다른 I/O 요구를 처리하고 있는 중임에도 불구하고 하나 또는 그 이상의 MPU가 I/O 요구를 발생하고 그것을 요구 큐에 부가할 수 있도록 허용된다는 것을 쉽게 인식할 것이다. 이러한 본 발명의 관점은 현재 다른 I/O 요구를 처리하고 있는 IOP에 대한 불필요한 대기를 없애므로써 MPU에서의 유효 시간을 감소시키는데 도움을 준다.
제1도 및 제3도의 실시예에 도시된 바와 같이 완료 큐가 다수의 MPU 각각에 관련되어 있으면 특정 MPU와 관련된 특정 완료 큐를 식별하기 위해 완료 큐를 조작하는 연산(614-622)이 채택되어야 한다는 것을 이 기술에 숙련된 사람은 쉽게 인식하게 된다. 이와 같은 경우에 특정 I/O 요구는 그 요구를 발생한 MPU를 유일하게 식별하는 식별 필드를 포함한다. 특히, 요소(614-622)는 I/O 요구를 발생한 MPU를 식별하기 위해 각 I/O 요구내의 식별 필드를 이용하게 된다. 임계값의 테스트 세마포어의 로크/로크해제, 및 완료 메시지의 부가를 위해 MPU와 특별히 관련된 완료 큐가 선택되게 된다.
IRQ 시비스:
제7도는 하나 또는 그 이상의 IOP에 의한 IRQ 신호의 발생 및 인가에 응답하여 MPU 내에서 이용될 수 있는 인터럽트 서비스 기능의 흐름도를 도시하고 있다. MPU가 IOP로부터 IRQ 신호를 수신하면 MPU의 연산의 현재 문맥이 통상적으로 MPU의 전용 메모리(즉, 제1도 내지 제3도에 도시된 RAM 메모리 장치)내의 스택 구조에 저장된다. 이전의 문맥이 저장된 후에 IRQ 서비스 루틴으로 들어가게 된다. 이 기술에 숙련된 사람은 이와 같은 문맥 스위칭 연산을 잘 알고 있으며 그러므로 더 이상 논의될 필요는 없다.
IRQ 서비스 루틴에서는 먼저 요소(700)이 MPU와 관련된 완료 큐에 어떤 엔트리가 존재하는지 먼저 판단하게 된다. 만일 IOP의 완료 큐와 관련된 카운트 변수가 큐에서 이용가능한 완료 상태 메시지가 없다는 것을 표시하면 처리는 종료되고 저장된 문맥은 MPU에서의 처리의 지속을 위해 복원된다. 그러나 만일 요소(700)에 의해 0을 초과하는 카운트 변수에 의해 표시되는 바와 같이 완료 큐에 완료 상태 메시지가 존재하는 것으로 판단되면 처리는 요소(702)로 계속된다. 다음에 요소(702)는 완료 큐와 관련된 세마포어 변수를 로크하도록 작용한다. 전술한 바와 같이 이 기술에 숙련된 사람은 요소(702)가 이용가능할 때 세마포어를 로크하기 위한 어토믹, 개별 테스트 및 셋트 연산을 구현한다는 것을 이해할 수 있다.
일단 세마포어 변수가 로크되고 그래서 완료 큐에 대한 배타적인 억세스가 보장되면 요소(704)는 완료 큐에 큐잉된 모든 완료 상태 메시지를 처리하도록 작용한다. 처리 요소(704)에서는 완료 큐와 관련된 카운트 변수의 리셋팅이 수반된다. 모든 완료 메시지가 처리되면 요소(704)의 연산에 의해 카운트 변수가 0으로 리셋트된다. 모든 큐잉된 완료 상태 메시지의 처리 이후에는 요소(706)에 의해 완료 큐와 관련된 세마포어 변수를 로크해제 하게 된다. 다음에 MPU의 이전에 저장된 문맥이 복원되고 정상적인 처리가 계속된다.
이 기술에 숙련된 사람은 제7도의 흐름도에 도시된 본 발명의 방법이 단일 IRQ 신호에 응답하여 MPU에서 다수의 완료 상태 메시지를 처리하므로써 I/O 시스템의 I/O 성능이 개선될 수 있도록 한다는 것을 알 수 있다. 다시말하면 단일 인터럽트 서비스 루틴이 다수의 완료된 I/O 요구 연산을 처리할 수 있다는 것이다. 이로인해 MPU에서 수신되는 인터럽트의 수를 감소시키므로써 MPU에 대해 부과되는 오버헤드 처리 시간이 감소되게 된다.
다중 MPU에 대한 확장:
제5도 내지 제7도에 도시되고 위에서 설명된 방법은 기본적으로 제2도에 도시된 본 발명의 실시예에 적용될 수 있으며 이 기술에 숙련된 사람은 본 발명의 제1도 및 제3도에 도시된 실시예를 채택하기 위해 제5도 내지 제7도의 방법에서 요구되는 수정을 쉽게 이해할 것이다. 특히 제1도 및 제3도에서는 제2도와 반대로 완료 큐가 다수의 MPU중 특정 MPU와 각각 연관되어 있다. 그러므로 완료 큐내의 변수를 조작하고 테스트하는 제6도 및 제7도의 방법의 요소는 조작될 특정 MPU와 관련된 특정 완료 큐를 식별해야 한다. 이와 같은 관련 MPU를 식별하는 공지된 최선의 방식은 MPU에 의해 발생될 때 각각의 I/O 요구내의 식별 필드로 들어가는 것인데 이 식별 필드는 I/O 요구를 발생한 MPU를 식별하게된다. 이 식별 필드는 식별된 MPU와 관련된 특정 완료 큐를 식별하기 위해 예를들어 제6도의 요소(602,604,614-622)에서 사용될 수도 있다. 제5도 및 제7도에 도시된 방법은 특정 MPU내에서 동작 될 수 있으며 그러므로 그 관련된 완료 큐를 암시적으로 판단하게 된다.
I/O 균형 :
전술한 바와 같이 본 발명의 장치는 I/O요구에 대한 빠른 응답 필요성과 인터럽트를 서비스하기 위한 MPU에서의 오버헤드 처리 시간의 감소 필요성 사이의 균형을 맞추도록 하기 위한 방법의 운영을 가능하게 한다. 제4도에 도시된 바와 같이, 본 발명의 큐는 임계값 및 현재 카운트 값을 포함하고 있다. 현재 카운트 값은 큐의 FIFO에 현재 저장된 엔트리 수를 표시하기 위해 사용되고 임계값은 이벤트(event)를 트리거 해야 하는 카운트 레지스터의 특정 레벨 또는 값을 식별하도록 프로그램될 수 있다.
특히, MPU로 완료 상태 메시지를 큐잉하기 위해 사용되는 완료 큐는 MPU에 IRQ신호가 인가되기 전에 큐잉될 수도 있는 I/O 요구 완료 상태 메시지의 최대의 수를 결정하기 위해 임계값을 이용할 수도 있다. 이와 같은 방식으로 MPU(또는 IOP)는 이들 경합하는 필요성의 균형을 맞추도록 임계값을 프로그램할 수도 있다. 예를 들어 I/O 요구가 완료될 때 낮은 임계값이 더많은 인터럽트가 발생되게 한다. 임계값 0은 큐로 발생되어 부가된 각각의 I/O 완료 상태 메시지에 대해 하나의 인터럽트가 발생되도록 한다. 이와 같은 방식으로 I/O 완료 메시지는 가능한 한 빠르게 처리되지만 MPU로의 보다 빈번한 인터럽트로 인한 희생이 있다. 보다 큰 인터럽트 값은 MPU에서 발생되는 인터럽트의 수를 감소시키게 되지만 I/O 완료 상태 메시지에 대한 응답이 늦어진다는 희생이 있다.
전술한 바와 같이 임계값은 IOP와 관련된 요구 큐에서의 특별한 이용은 아니다.
비록 본 발명이 도면 및 전술에서 상세하게 예시 및 설명되었지만 이와 같은 예시 및 설명은 단지 예로서 간주되어야 하며 그 특성에서의 제한적 요소로 간주되어서는 안되고 단지 양호한 실시예 및 그 미소한 변형이 도시되고 설명되었으며 본 발명의 정신에 속한 모든 변경 및 수정도 보호받고자 하는 것으로 이해되어야 한다.
I/O 부처리장치의 이용을 최대화하므로써 컴퓨터 시스템의 I/O 성능을 개선하고 I/O 요구에 대한 완료 인터럽트를 서비스하는데 필요한 주처리장치의 오버헤드 처리를 감소시킬 수 있는 효과가 있다.

Claims (29)

  1. I/O 요구를 발생하기 위한 제1처리장치와 I/O 요구 완료를 수행하기 위한 제2처리장치를 가진 컴퓨터 시스템 내의 I/O 인터페이스 시스템에 있어서, 상기 제1 처리장치 및 상기 제2처리장치와 연관된 큐; 상기 제1처리장치내에서 상기 제2처리장치에 의한 처리를 위한 I/O 요구를 발생하고 상기 I/O 요구를 상기 큐에 부가하기 위한 수단; 상기 제2처리장치내에서 상기 큐로부터 I/O 요구를 제거하고 상기 큐로부터 제거된 상기 I/O 요구 각각에 대응하는 완료 메시지를 발생하기 위한 수단; 상기 제2처리장치내에서 적어도 2개 이상의 완료 메시지가 발생될 때 상기 제1 처리장치에 인터럽트 요구 신호를 인가하기 위한 수단; 및 상기 제1 처리장치내에서 상기 완료 메시지를 검색하기 위한 완료 수단을 포함해서 이루어진 I/O 인터페이스 시스템.
  2. 제1항에 있어서, 상기 완료 메시지는 상기 큐에 저장되는 것을 특징으로 하는 I/O 인터페이스 시스템.
  3. 제2항에 있어서, 상기 큐에 대응하는 큐 깊이 임계값을 더 포함하고, 상기 인터럽트 수단은 상기 큐에 저장된 상기 완료 메시지의 수가 상기 큐 깊이 임계값보다 클 때 상기 인터럽트 요구 신호를 발생하는 것을 특징으로 하는 I/O 인터페이스 시스템.
  4. 제3항에 있어서, 상기 큐 깊이 임계값은 상기 제1 처리장치에 의해 기록가능한 것을 특징으로 하는 I/O 인터페이스 시스템.
  5. 제2항에 있어서, 상기 인터럽트 수단은 상기 I/O 요구가 모두 상기 큐로부터 제거될 때 상기 인터럽트 요구 신호를 발생하는 것을 특징으로 하는 I/O 인터페이스 시스템.
  6. 제2항에 있어서, 상기 인터럽트 수단은 상기 완료 메시지가 상기 큐에 부가될 때 상기 인터럽트 요구 신호를 발생하는 것을 특징으로 하는 I/O 인터페이스 시스템.
  7. 제1항에 있어서, 상기 큐에 대응하여 상기 큐에서의 위험 지역 연산 사이의 상호 배제를 실행하기 위한 세마포어 수단을 더 포함하는 것을 특징으로 하는 I/O 인터페이스 시스템.
  8. 다수의 I/O 부처리 장치와 통신하는 다수의 주 처리 장치를 가진 컴퓨터 시스템 내의 I/O 인터페이스 시스템에 있어서, 상기 I/O 부 처리 장치 각각에 대응하는 요구큐; 상기 주 처리 장치 각각에 대응하는 완료 큐; 상기 각각의 주 처리 장치내에서 상기 부 처리 장치중 한 장치에 의한 처리를 위한 I/O 요구를 발생하고 상기 I/O 요구를 상기 I/O 부 처리 장치중 한 장치에 대응하는 요구 큐에 부가하기 위한 수단; 및 상기 각각의 부 처리 장치내에서 상기 I/O 부 처리 장치 각각에 대응하는 요구 큐로부터 I/O 요구를 제거하고 상기 요구 큐로부터 제거된 상기 I/O 요구 각각에 대응하며 상기 주 처리 장치중 한 장치에 대응하는 상기 완료 큐에 부가되도록 되어 있는 완료 메시지를 발생하기 위한 수단을 포함해서 이루어진 I/O 인터페이스 시스템.
  9. 제8항에 있어서, 상기 각각의 I/O 부 처리 장치 내에서 인터럽트 요구 신호를 발생하여 상기 주 처리 장치중 한 장치에 인가하기 위한 인터럽트 수단을 더 포함하는 것을 특징으로 하는 I/O 인터페이스 시스템.
  10. 제9항에 있어서, 상기 완료 큐 각각에 대응하는 큐 깊이 임계값을 더 포함하고, 상기 인터럽트 수단은 대응하는 완료 큐에 부가된 완료 메시지의 수가 상기 대응하는 큐 깊이 임계값 보다 클 때, 상기 인터럽트 요구 신호를 발생하는 것을 특징으로 하는 I/O 인터페이스 시스템.
  11. 제10항에 있어서, 상기 큐 깊이 임계값은 상기 주 처리장치 각각에 의해 기록가능한 것을 특징으로 하는 I/O 인터페이스 시스템.
  12. 제9항에 있어서, 상기 각각의 인터럽트 수단은 상기 I/O 요구가 모두 상기 I/O 부 처리장치 각각에 대응하는 요구 큐로부터 제거될 때, 상기 인터럽트 요구 신호를 발생하는 것을 특징으로 하는 I/O 인터페이스 시스템.
  13. 제9항에 있어서, 상기 각각의 인터럽트 수단은 상기 완료 메시지가 대응하는 완료 큐에 부가될 때, 상기 인터럽트 요구 신호를 발생하는 것을 특징으로 하는 I/O 인터페이스 시스템.
  14. 제8항에 있어서, 상기 요구 큐 각각에 대응하여 대응하는 요구 큐에서의 위험지역 연산의 상호 배제를 실행하기 위한 요구 세마포어 수단; 및 상기 완료 큐 각각에 대응하여 대응하는 완료 큐에서의 위험 지역 연산의 상호 배제를 실행하기 위한 세마포어 수단을 더 포함하는 것을 특징으로 하는 I/O 인터페이스 시스템.
  15. 제8항에 있어서, 상기 요구 큐 및 상기 완료 큐는 상기 주 처리장치 및 상기 I/O부 처리장치에 접속된 공유 메모리에 내재하는 것을 특징으로 하는 I/O 인터페이스 시스템.
  16. 제15항에 있어서, 상기 요구 큐 및 상기 완료 큐가 단일 큐 구조로 조합되어 있는 것을 특징으로 하는 I/O 인터페이스 시스템.
  17. 제8항에 있어서, 상기 요구 큐 및 상기 완료 큐가 상기 I/O 부 처리장치 각각에 내재하는 것을 특징으로 하는 I/O 인터페이스 시스템.
  18. 제17항에 있어서, 상기 요구 큐 및 상기 완료 큐가 단일 큐 구조로 조합되어 있는 것을 특징으로 하는 I/O 인터페이스 시스템.
  19. I/O 요구를 발생하기 위한 제1 처리장치와 I/O 요구 완료를 수행하기 위한 제2 처리장치를 가진 컴퓨터 시스템에서의 I/O 인터페이스 방법에 있어서, 상기 제1 처리장치내에서 상기 제2 처리장치에 의한 처리를 위한 I/O 요구를 발생하는 단계; 상기 I/O 요구를 상기 큐에 부가하는 단계; 상기 제2 처리장치내에서 상기 큐로부터 I/O 요구를 제거하는 단계; 상기 큐로부터 제거된 상기 I/O 요구 각각에 대응하는 완료 메시지를 발생하는 단계; 적어도 2개 이상의 완료 메시지가 발생될 때, 상기 제2 처리장치로 부터의 인터럽트 요구 신호를 상기 제1 처리장치에 인가하는 단계; 및 상기 인터럽트 요구 신호에 응답하여 상기 제1 처리장치내에서 상기 완료 메시지를 검색하는 단계를 포함해서 이루어진 I/O 인터페이스 방법.
  20. 제19항에 있어서, 상기 완료 메시지는 상기 큐에 저장되는 것을 특징으로 하는 I/O 인터페이스 방법.
  21. 제20항에 있어서, 상기 큐에 저장된 상기 완료 메시지의 수가 큐 깊이 임계값보다 클 때, 상기 인터럽트 요구 신호를 발생하는 단계를 더 포함하는 것을 특징으로 하는 I/O 인터페이스 방법.
  22. 제21항에 있어서, 상기 제1처리장치에 의해 상기 큐 깊이 임계값을 기록하는 단계를 더 포함하는 것을 특징으로 하는 I/O인터페이스 방법.
  23. 제20항에 있어서, 상기 I/O 요구가 모두 상기 큐로부터 제거될 때, 상기 인터럽트 요구 신호를 발생하는 단계를 더 포함하는 것을 특징으로 하는 I/O 인터페이스 방법.
  24. 제20항에 있어서, 상기 완료 메시지가 상기 큐에 부가될 때, 상기 인터럽트 요구 신호를 발생하는 단계를 더 포함하는 것을 특징으로 하는 I/O 인터페이스 방법.
  25. 제19항에 있어서, 세마포어를 로크 및 로크해제 하므로써 상기 큐에서의 위험 지역 연산 사이의 상호 배제를 실행하는 단계를 더 포함하는 것을 특징으로 하는 I/O 인터페이스 방법.
  26. 다수의 I/O 부 처리장치와 통신하는 다수의 주 처리장치를 가진 컴퓨터 시스템에서의 I/O 인터페이스 방법에 있어서, 상기 각각의 주 처리장치내에서 상기 I/O 부 처리장치중 한 장치에 의한 처리를 위한 I/O 요구를 발생하는 단계; 상기 I/O 부 처리장치중 한 장치에 대응하는 요구 큐에 상기 I/O 요구를 상기 큐에 부가하는 단계; 상기 각각의 I/O 부 처리장치내에서 상기 I/O 부 처리장치중 한 장치에 대응하는 요구 큐로부터 I/O 요구를 제거하는 단계; 상기 각각의 I/O 부 처리장치내에서 상기 요구 큐로부터 제거된 상기 I/O 요구 각각에 대응하는 완료 메시지를 발생하는 단계; 및 상기 주 처리장치중 한 장치에 대응하는 상기 완료 큐에 상기 완료 메시지를 부가하는 단계를 포함해서 이루어진 I/O 인터페이스 방법.
  27. 제26항에 있어서, 인터럽트 요구 신호를 발생하는 단계; 및 상기 주 처리장치중 한 장치에 상기 인터럽트 요구 신호를 인가하는 단계를 더 포함하는 것을 특징으로 하는 I/O 인터페이스 방법.
  28. 제27항에 있어서, 대응하는 완료 큐에 부가된 완료 메시지의 수가 대응하는 큐 깊이 임계값보다 클 때, 상기 인터럽트 요구 신호를 발생하는 단계를 더 포함하는 것을 특징으로 하는 I/O 인터페이스 방법.
  29. 제28항에 있어서, 상기 각각의 주 처리장치에 의해 상기 큐 깊이 임계값을 기록하는 단계를 더 포함하는 것을 특징으로 하는 I/O 인터페이스 방법.
KR1019960047128A 1995-10-20 1996-10-21 컴퓨터 시스템에서의 입출력 인터페이스 장치 및 방법 KR100262937B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/546,003 1995-10-20
US8/546,003 1995-10-20
US08/546,003 US5671365A (en) 1995-10-20 1995-10-20 I/O system for reducing main processor overhead in initiating I/O requests and servicing I/O completion events

Publications (2)

Publication Number Publication Date
KR970022798A KR970022798A (ko) 1997-05-30
KR100262937B1 true KR100262937B1 (ko) 2000-08-01

Family

ID=24178446

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960047128A KR100262937B1 (ko) 1995-10-20 1996-10-21 컴퓨터 시스템에서의 입출력 인터페이스 장치 및 방법

Country Status (2)

Country Link
US (2) US5671365A (ko)
KR (1) KR100262937B1 (ko)

Families Citing this family (141)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226659B1 (en) * 1996-09-16 2001-05-01 Oracle Corporation Method and apparatus for processing reports
KR100218675B1 (ko) * 1996-12-04 1999-09-01 정선종 지능적 우선순위 결정 방식의 다중 인터럽트 제어기 및 그 제어 방법
US6108684A (en) * 1996-12-23 2000-08-22 Lsi Logic Corporation Methods and apparatus for balancing loads on a storage subsystem among a plurality of controllers
US6052751A (en) * 1997-02-14 2000-04-18 Advanced Micro Devices, I Nc. Method and apparatus for changing the number of access slots into a memory
US5907712A (en) * 1997-05-30 1999-05-25 International Business Machines Corporation Method for reducing processor interrupt processing time by transferring predetermined interrupt status to a system memory for eliminating PIO reads from the interrupt handler
US6052580A (en) * 1997-07-31 2000-04-18 Lucent Technologies Inc. Upper medium access control processor architecture
US6085277A (en) * 1997-10-15 2000-07-04 International Business Machines Corporation Interrupt and message batching apparatus and method
US6145042A (en) * 1997-12-23 2000-11-07 Emc Corporation Timing protocol for a data storage system
US6119243A (en) * 1998-07-06 2000-09-12 Intel Corp. Architecture for the isochronous transfer of information within a computer system
US6195222B1 (en) * 1998-11-04 2001-02-27 Western Digital Corporation Disk drive with seek profile selection based on a queued vs. non-queued environment
US6189066B1 (en) * 1999-01-26 2001-02-13 3Com Corporation System and method for dynamically selecting interrupt time interval threshold parameters
US6189067B1 (en) * 1999-01-26 2001-02-13 3Com Corporation System and method for dynamically selecting interrupt quantity threshold parameters
US6529986B1 (en) * 1999-01-26 2003-03-04 3Com Corporation Interrupt optimization using storage time for peripheral component events
US6351785B1 (en) * 1999-01-26 2002-02-26 3Com Corporation Interrupt optimization using varying quantity threshold
US6574694B1 (en) * 1999-01-26 2003-06-03 3Com Corporation Interrupt optimization using time between succeeding peripheral component events
US6192440B1 (en) * 1999-01-26 2001-02-20 3Com Corporation System and method for dynamically selecting interrupt storage time threshold parameters
US6345325B1 (en) * 1999-02-19 2002-02-05 International Business Machines Corporation Method and apparatus for ensuring accurate and timely processing of data using a queued direct input-output device
US6339801B1 (en) * 1999-02-19 2002-01-15 International Business Machines Corporation Method for determining appropriate devices for processing of data requests using a queued direct input/output device by issuing a special command specifying the devices can process data
US6345326B1 (en) * 1999-02-19 2002-02-05 International Business Machines Corporation Computer program device and product for timely processing of data using a queued direct input-output device
US6434630B1 (en) 1999-03-31 2002-08-13 Qlogic Corporation Host adapter for combining I/O completion reports and method of using the same
US6754736B1 (en) * 1999-06-23 2004-06-22 Fujitsu Limited Information processing apparatus, data inputting/outputting method, and program storage medium therefor
US6385683B1 (en) * 1999-08-13 2002-05-07 Lsi Logic Corporation Methods and apparatus for raid hardware sequencing to achieve a higher performance raid architecture
US6356969B1 (en) * 1999-08-13 2002-03-12 Lsi Logic Corporation Methods and apparatus for using interrupt score boarding with intelligent peripheral device
US6760799B1 (en) * 1999-09-30 2004-07-06 Intel Corporation Reduced networking interrupts
US6718370B1 (en) * 2000-03-31 2004-04-06 Intel Corporation Completion queue management mechanism and method for checking on multiple completion queues and processing completion events
US6651124B1 (en) * 2000-04-28 2003-11-18 Hewlett-Packard Development Company, L.P. Method and apparatus for preventing deadlock in a distributed shared memory system
US20010037364A1 (en) * 2000-05-10 2001-11-01 Michalek Nancy R. Management of enterprise communications
US6832239B1 (en) 2000-07-07 2004-12-14 International Business Machines Corporation Systems for managing network resources
US6658594B1 (en) * 2000-07-13 2003-12-02 International Business Machines Corporation Attention mechanism for immediately displaying/logging system checkpoints
US7024509B2 (en) * 2000-08-31 2006-04-04 Hewlett-Packard Development Company, L.P. Passive release avoidance technique
US6381532B1 (en) * 2000-09-20 2002-04-30 Visteon Global Technologies, Inc. Queued port data controller for microprocessor-based engine control applications
US6973524B1 (en) * 2000-12-14 2005-12-06 Lsi Logic Corporation Interface for bus independent core
US20030058875A1 (en) * 2001-09-24 2003-03-27 International Business Machines Corporation Infiniband work and completion queue management via head only circular buffers
US6880021B2 (en) * 2001-09-28 2005-04-12 International Business Machines Corporation Intelligent interrupt with hypervisor collaboration
US6754738B2 (en) 2001-09-28 2004-06-22 International Business Machines Corporation Low overhead I/O interrupt
US6792483B2 (en) 2001-09-28 2004-09-14 International Business Machines Corporation I/O generation responsive to a workload heuristics algorithm
US6748460B2 (en) 2001-09-28 2004-06-08 International Business Machines Corporation Initiative passing in an I/O operation without the overhead of an interrupt
US7111301B1 (en) * 2001-10-05 2006-09-19 Lsi Logic Corporation Request and completion queue load balancing
US7467139B1 (en) * 2001-11-13 2008-12-16 Unisys Corporation Library lock management
US20030110232A1 (en) * 2001-12-11 2003-06-12 International Business Machines Corporation Distributing messages between local queues representative of a common shared queue
US6829660B2 (en) * 2001-12-12 2004-12-07 Emulex Design & Manufacturing Corporation Supercharge message exchanger
US20030156547A1 (en) * 2002-02-15 2003-08-21 Exanet. Inc. System and method for handling overload of requests in a client-server environment
US20030225874A1 (en) * 2002-05-30 2003-12-04 International Business Machines Corporation Managing the sending of acknowledgments
US7154886B2 (en) 2002-07-22 2006-12-26 Qlogic Corporation Method and system for primary blade selection in a multi-module fiber channel switch
US7230929B2 (en) * 2002-07-22 2007-06-12 Qlogic, Corporation Method and system for dynamically assigning domain identification in a multi-module fibre channel switch
US7397768B1 (en) 2002-09-11 2008-07-08 Qlogic, Corporation Zone management in a multi-module fibre channel switch
US6941408B2 (en) * 2002-09-30 2005-09-06 Lsi Logic Corporation Bus interface system with two separate data transfer interfaces
GB0226573D0 (en) * 2002-11-14 2002-12-18 Hewlett Packard Co Data delivery
WO2004046926A1 (ja) * 2002-11-21 2004-06-03 Fujitsu Limited イベント通知方法、デバイス及びプロセッサシステム
US7117501B2 (en) * 2002-11-21 2006-10-03 International Business Machines Corporation Application-level access to kernel input/output state
US7319669B1 (en) 2002-11-22 2008-01-15 Qlogic, Corporation Method and system for controlling packet flow in networks
US7007122B2 (en) * 2002-11-27 2006-02-28 Lsi Logic Corporation Method for pre-emptive arbitration
US6983337B2 (en) * 2002-12-18 2006-01-03 Intel Corporation Method, system, and program for handling device interrupts
JP3882760B2 (ja) * 2003-02-18 2007-02-21 株式会社デンソー タスク間通信方法、プログラム、記録媒体、電子機器
US7290168B1 (en) 2003-02-28 2007-10-30 Sun Microsystems, Inc. Systems and methods for providing a multi-path network switch system
US7383381B1 (en) 2003-02-28 2008-06-03 Sun Microsystems, Inc. Systems and methods for configuring a storage virtualization environment
US7236987B1 (en) 2003-02-28 2007-06-26 Sun Microsystems Inc. Systems and methods for providing a storage virtualization environment
US8166128B1 (en) 2003-02-28 2012-04-24 Oracle America, Inc. Systems and methods for dynamically updating a virtual volume in a storage virtualization environment
US6901463B2 (en) * 2003-03-05 2005-05-31 Sun Microsystems, Inc. Method and device for linking work requests with completion queue entries
US20040181638A1 (en) * 2003-03-14 2004-09-16 Paul Linehan Event queue system
JP3971715B2 (ja) * 2003-03-28 2007-09-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、割込制御装置、制御方法、及びこれらのプログラム
US7646767B2 (en) 2003-07-21 2010-01-12 Qlogic, Corporation Method and system for programmable data dependant network routing
US7234101B1 (en) 2003-08-27 2007-06-19 Qlogic, Corporation Method and system for providing data integrity in storage systems
US7099978B2 (en) * 2003-09-15 2006-08-29 Hewlett-Packard Development Company, Lp. Method and system of completing pending I/O device reads in a multiple-processor computer system
US7219263B1 (en) 2003-10-29 2007-05-15 Qlogic, Corporation Method and system for minimizing memory corruption
US8108375B2 (en) * 2003-10-30 2012-01-31 International Business Machines Corporation Processing database queries by returning results of a first query to subsequent queries
US20050097083A1 (en) * 2003-10-30 2005-05-05 International Business Machines Corporation Apparatus and method for processing database queries
US7539780B2 (en) * 2003-12-01 2009-05-26 International Business Machines Corporation Asynchronous completion notification for an RDMA system
US7383312B2 (en) * 2003-12-29 2008-06-03 International Business Machines Corporation Application and verb resource management
US7337248B1 (en) * 2004-03-19 2008-02-26 Sun Microsystems, Inc. Adaptive synchronization method for communication in storage systems
US7930377B2 (en) 2004-04-23 2011-04-19 Qlogic, Corporation Method and system for using boot servers in networks
US20080301328A1 (en) * 2004-04-27 2008-12-04 Russ Craig F Method and system for improved communication between central processing units and input/output processors
US7669190B2 (en) 2004-05-18 2010-02-23 Qlogic, Corporation Method and system for efficiently recording processor events in host bus adapters
US7577772B2 (en) * 2004-09-08 2009-08-18 Qlogic, Corporation Method and system for optimizing DMA channel selection
US20060064531A1 (en) * 2004-09-23 2006-03-23 Alston Jerald K Method and system for optimizing data transfer in networks
US7380030B2 (en) 2004-10-01 2008-05-27 Qlogic, Corp. Method and system for using an in-line credit extender with a host bus adapter
US7676611B2 (en) 2004-10-01 2010-03-09 Qlogic, Corporation Method and system for processing out of orders frames
US7398335B2 (en) * 2004-11-22 2008-07-08 Qlogic, Corporation Method and system for DMA optimization in host bus adapters
JP4748641B2 (ja) * 2004-12-06 2011-08-17 ルネサスエレクトロニクス株式会社 情報処理システム
US7164425B2 (en) * 2004-12-21 2007-01-16 Qlogic Corporation Method and system for high speed network application
US7392437B2 (en) 2005-01-20 2008-06-24 Qlogic, Corporation Method and system for testing host bus adapters
US7386642B2 (en) * 2005-01-28 2008-06-10 Sony Computer Entertainment Inc. IO direct memory access system and method
JP2006216042A (ja) * 2005-02-04 2006-08-17 Sony Computer Entertainment Inc 割り込み処理のためのシステムおよび方法
US7680972B2 (en) * 2005-02-04 2010-03-16 Sony Computer Entertainment Inc. Micro interrupt handler
US7231480B2 (en) * 2005-04-06 2007-06-12 Qlogic, Corporation Method and system for receiver detection in PCI-Express devices
US7281077B2 (en) * 2005-04-06 2007-10-09 Qlogic, Corporation Elastic buffer module for PCI express devices
JP4318664B2 (ja) * 2005-05-12 2009-08-26 株式会社ソニー・コンピュータエンタテインメント 情報処理装置およびタスク実行方法
US7673076B2 (en) * 2005-05-13 2010-03-02 Texas Instruments Incorporated Concurrent read response acknowledge enhanced direct memory access unit
US20070073928A1 (en) * 2005-09-26 2007-03-29 John Bruno High-speed input/output signaling mechanism using a polling CPU and cache coherency signaling
US7716403B2 (en) * 2005-09-30 2010-05-11 Rockwell Automation Technologies, Inc. Information technology integration with automation systems
US7773630B2 (en) 2005-11-12 2010-08-10 Liquid Computing Corportation High performance memory based communications interface
US7461195B1 (en) 2006-03-17 2008-12-02 Qlogic, Corporation Method and system for dynamically adjusting data transfer rates in PCI-express devices
US7664026B2 (en) * 2006-06-19 2010-02-16 Liquid Computing Corporation Methods and systems for reliable data transmission using selective retransmission
US7873964B2 (en) * 2006-10-30 2011-01-18 Liquid Computing Corporation Kernel functions for inter-processor communications in high performance multi-processor systems
US20080155571A1 (en) * 2006-12-21 2008-06-26 Yuval Kenan Method and System for Host Software Concurrent Processing of a Network Connection Using Multiple Central Processing Units
US9384159B2 (en) * 2007-05-24 2016-07-05 International Business Machines Corporation Creating a checkpoint for a software partition in an asynchronous input/output environment
US7617345B2 (en) * 2007-07-02 2009-11-10 International Business Machines Corporation Prioritization of interrupts in a storage controller based on interrupt control directives received from hosts
US7613860B2 (en) * 2007-07-02 2009-11-03 International Business Machines Corporation Prioritization of interrupts in a storage controller based on interrupt control directives received from hosts
WO2010016169A1 (ja) * 2008-08-07 2010-02-11 日本電気株式会社 マルチプロセッサシステム及びその制御方法
US20100138567A1 (en) * 2008-12-02 2010-06-03 International Business Machines Corporation Apparatus, system, and method for transparent ethernet link pairing
US8402190B2 (en) * 2008-12-02 2013-03-19 International Business Machines Corporation Network adaptor optimization and interrupt reduction
US8495261B2 (en) * 2008-12-12 2013-07-23 International Business Machines Corporation Redispatching suspended tasks after completion of I/O operations absent I/O interrupts
US8095719B2 (en) * 2009-05-07 2012-01-10 Ours Technology Inc. Data communication systems and bridges
US8615645B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US8572635B2 (en) * 2010-06-23 2013-10-29 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification
US8621112B2 (en) 2010-06-23 2013-12-31 International Business Machines Corporation Discovery by operating system of information relating to adapter functions accessible to the operating system
US8626970B2 (en) 2010-06-23 2014-01-07 International Business Machines Corporation Controlling access by a configuration to an adapter function
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US8468284B2 (en) 2010-06-23 2013-06-18 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification to a guest operating system
US8504754B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Identification of types of sources of adapter interruptions
US9213661B2 (en) 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US8478922B2 (en) 2010-06-23 2013-07-02 International Business Machines Corporation Controlling a rate at which adapter interruption requests are processed
US8566480B2 (en) 2010-06-23 2013-10-22 International Business Machines Corporation Load instruction for communicating with adapters
US8588228B1 (en) 2010-08-16 2013-11-19 Pmc-Sierra Us, Inc. Nonvolatile memory controller with host controller interface for retrieving and dispatching nonvolatile memory commands in a distributed manner
KR20120065097A (ko) * 2010-12-10 2012-06-20 한국전자통신연구원 단말 가상화 환경에서 사용자 입력 처리 성능 향상을 위한 인터럽트 처리 장치 및 그 방법
US8601194B2 (en) * 2011-02-08 2013-12-03 Red Hat Israel, Ltd. On-demand interrupt vector allocation based on activity detection
US8924605B2 (en) 2012-11-21 2014-12-30 Mellanox Technologies Ltd. Efficient delivery of completion notifications
US8959265B2 (en) * 2012-11-21 2015-02-17 Mellanox Technologies Ltd. Reducing size of completion notifications
US9122515B2 (en) * 2012-12-19 2015-09-01 Dell Products L.P. Completion notification for a storage device
US10474365B2 (en) * 2013-01-25 2019-11-12 Stroz Friedberg, LLC System and method for file processing from a block device
US9092353B1 (en) 2013-01-29 2015-07-28 Pmc-Sierra Us, Inc. Apparatus and method based on LDPC codes for adjusting a correctable raw bit error rate limit in a memory system
US10230396B1 (en) 2013-03-05 2019-03-12 Microsemi Solutions (Us), Inc. Method and apparatus for layer-specific LDPC decoding
US9813080B1 (en) 2013-03-05 2017-11-07 Microsemi Solutions (U.S.), Inc. Layer specific LDPC decoder
US9450610B1 (en) 2013-03-15 2016-09-20 Microsemi Storage Solutions (Us), Inc. High quality log likelihood ratios determined using two-index look-up table
US11061840B2 (en) * 2013-09-24 2021-07-13 Red Hat Israel, Ltd. Managing network interface controller-generated interrupts
US9792162B2 (en) 2013-11-13 2017-10-17 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Network system, network node and communication method
US20150143384A1 (en) * 2013-11-15 2015-05-21 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Network system, network node and communication method
US9417804B2 (en) 2014-07-07 2016-08-16 Microsemi Storage Solutions (Us), Inc. System and method for memory block pool wear leveling
US10332613B1 (en) 2015-05-18 2019-06-25 Microsemi Solutions (Us), Inc. Nonvolatile memory system with retention monitor
US9799405B1 (en) 2015-07-29 2017-10-24 Ip Gem Group, Llc Nonvolatile memory system with read circuit for performing reads using threshold voltage shift read instruction
JP6608688B2 (ja) * 2015-12-02 2019-11-20 ルネサスエレクトロニクス株式会社 半導体装置
US9886214B2 (en) 2015-12-11 2018-02-06 Ip Gem Group, Llc Nonvolatile memory system with erase suspend circuit and method for erase suspend management
US9892794B2 (en) 2016-01-04 2018-02-13 Ip Gem Group, Llc Method and apparatus with program suspend using test mode
US9899092B2 (en) 2016-01-27 2018-02-20 Ip Gem Group, Llc Nonvolatile memory system with program step manager and method for program step management
KR102649324B1 (ko) 2016-05-19 2024-03-20 삼성전자주식회사 적응 인터럽트 제어를 수행하는 컴퓨터 시스템 및 그것의 인터럽트 제어 방법
US10283215B2 (en) 2016-07-28 2019-05-07 Ip Gem Group, Llc Nonvolatile memory system with background reference positioning and local reference positioning
US10291263B2 (en) 2016-07-28 2019-05-14 Ip Gem Group, Llc Auto-learning log likelihood ratio
US10236915B2 (en) 2016-07-29 2019-03-19 Microsemi Solutions (U.S.), Inc. Variable T BCH encoding
US10981051B2 (en) 2017-12-19 2021-04-20 Activision Publishing, Inc. Synchronized, fully programmable game controllers
US10642775B1 (en) 2019-06-30 2020-05-05 Mellanox Technologies, Ltd. Size reduction of completion notifications
US11055222B2 (en) 2019-09-10 2021-07-06 Mellanox Technologies, Ltd. Prefetching of completion notifications and context

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4080649A (en) * 1976-12-16 1978-03-21 Honeywell Information Systems Inc. Balancing the utilization of I/O system processors
US4313162A (en) * 1979-12-14 1982-01-26 Burroughs Corporation I/O Subsystem using data link processors
US4980820A (en) * 1985-02-28 1990-12-25 International Business Machines Corporation Interrupt driven prioritized queue
US4745544A (en) * 1985-12-12 1988-05-17 Texas Instruments Incorporated Master/slave sequencing processor with forced I/O
US5038282A (en) * 1988-05-11 1991-08-06 Massachusetts Institute Of Technology Synchronous processor with simultaneous instruction processing and data transfer
US5131081A (en) * 1989-03-23 1992-07-14 North American Philips Corp., Signetics Div. System having a host independent input/output processor for controlling data transfer between a memory and a plurality of i/o controllers
US5220661A (en) * 1989-09-15 1993-06-15 Digital Equipment Corporation System and method for reducing timing channels in digital data processing systems
JP2834837B2 (ja) * 1990-03-30 1998-12-14 松下電工株式会社 プログラマブルコントローラ
JPH0619759B2 (ja) * 1990-05-21 1994-03-16 富士ゼロックス株式会社 マルチプロセッサシステムにおける相互通信方法
US5224215A (en) * 1990-07-13 1993-06-29 International Business Machines Corporation Message queue processing among cooperative processors having significant speed differences
US5644786A (en) * 1990-11-08 1997-07-01 At&T Global Information Solutions Company Method for scheduling the execution of disk I/O operations
US5278984A (en) * 1990-12-19 1994-01-11 Bull Hn Information Systems Inc. Method for managing requests by specifying time intervals for transmitting a minimum number of messages for specific destinations and priority levels
US5367643A (en) * 1991-02-06 1994-11-22 International Business Machines Corporation Generic high bandwidth adapter having data packet memory configured in three level hierarchy for temporary storage of variable length data packets
US5313584A (en) * 1991-11-25 1994-05-17 Unisys Corporation Multiple I/O processor system
GB2273798A (en) * 1992-12-22 1994-06-29 Ibm Cache system for disk array.
US5574862A (en) * 1993-04-14 1996-11-12 Radius Inc. Multiprocessing system with distributed input/output management
US5506967A (en) * 1993-06-15 1996-04-09 Unisys Corporation Storage queue with adjustable level thresholds for cache invalidation systems in cache oriented computer architectures
US5619682A (en) * 1993-09-28 1997-04-08 Bull Hn Information Systems Inc. Executing network layered communications of a first system on a second system using a communication bridge transparent to the different communication layers
US5452299A (en) * 1993-10-14 1995-09-19 Intel Corporation Optimized transfer of large object data blocks in a teleconferencing system
US5617570A (en) * 1993-11-03 1997-04-01 Wang Laboratories, Inc. Server for executing client operation calls, having a dispatcher, worker tasks, dispatcher shared memory area and worker control block with a task memory for each worker task and dispatcher/worker task semaphore communication
US5621898A (en) * 1994-11-29 1997-04-15 Compaq Computer Corporation Arbiter organization for serial bus transfers

Also Published As

Publication number Publication date
US5875343A (en) 1999-02-23
US5671365A (en) 1997-09-23
KR970022798A (ko) 1997-05-30

Similar Documents

Publication Publication Date Title
KR100262937B1 (ko) 컴퓨터 시스템에서의 입출력 인터페이스 장치 및 방법
EP0644487B1 (en) Scalable system interrupt structure for a multiprocessing system
EP0506278B1 (en) Device driver system having generic operating system interface
EP0426323B1 (en) Portable, resource sharing file server using co-routines
US6047307A (en) Providing application programs with unmediated access to a contested hardware resource
US4493034A (en) Apparatus and method for an operating system supervisor in a data processing system
US5621897A (en) Method and apparatus for arbitrating for a bus to enable split transaction bus protocols
US5564060A (en) Interrupt handling mechanism to prevent spurious interrupts in a symmetrical multiprocessing system
JP4921054B2 (ja) 負荷分散制御システム及び負荷分散制御方法
JP3335172B2 (ja) データ処理システム及びそれに使用するための入出力プロセッサ
US5274823A (en) Interrupt handling serialization for process level programming
JP4034969B2 (ja) 共通メモリのメモリ管理システム
US6141715A (en) Method and system for avoiding live lock conditions on a computer bus by insuring that the first retired bus master is the first to resubmit its retried transaction
EP0511476A2 (en) Multiprocessor system
US5613126A (en) Timer tick auto-chaining technique within a symmetrical multiprocessing system
US5937200A (en) Using firmware to enhance the functionality of a controller
JPH02249055A (ja) マルチプロセッサ・システムのジョブの割当方法
US6154832A (en) Processor employing multiple register sets to eliminate interrupts
EP0644489A2 (en) Method and apparatus for signalling interrupt information in a data processing system
US6665746B1 (en) System and method for prioritized context switching for streaming data memory transfers
EP0013740B1 (en) Data processing apparatus having a system reset capability
JPH0855038A (ja) 対称多重処理システム、そのための割込制御ユニット、および対称多重処理システム内でプロセッサ割込信号を開始するための方法
EP1899827B1 (en) Device and method for executing a dma task
US6772189B1 (en) Method and system for balancing deferred procedure queues in multiprocessor computer systems
EP0825539A2 (en) Data processing device having a DMA function

Legal Events

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

Payment date: 20050422

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee