KR100463987B1 - 공통처리알고리즘을이용한다수의큐핸들링방법및장치 - Google Patents

공통처리알고리즘을이용한다수의큐핸들링방법및장치 Download PDF

Info

Publication number
KR100463987B1
KR100463987B1 KR1019980000504A KR19980000504A KR100463987B1 KR 100463987 B1 KR100463987 B1 KR 100463987B1 KR 1019980000504 A KR1019980000504 A KR 1019980000504A KR 19980000504 A KR19980000504 A KR 19980000504A KR 100463987 B1 KR100463987 B1 KR 100463987B1
Authority
KR
South Korea
Prior art keywords
queue
pointer
current
queues
entry
Prior art date
Application number
KR1019980000504A
Other languages
English (en)
Other versions
KR19980070448A (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 KR19980070448A publication Critical patent/KR19980070448A/ko
Application granted granted Critical
Publication of KR100463987B1 publication Critical patent/KR100463987B1/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/461Saving or restoring of program or task context

Abstract

1. 청구범위에 기재된 발명이 속한 기술 분야
본 발명은 공통 처리 알고리즘을 이용한 다수의 큐 핸들링 방법 및 장치에 관한 것임.
2. 발명이 해결하고자 하는 기술적 과제
본 발명은 컨텍스트 스위치에 대한 조건 또는 큐 처리의 우선순위를 결정하는데 있어서 고도의 유연성을 제공하는 공통 처리 알고리즘을 이용한 다수의 큐 핸들링 방법 및 장치를 제공하는데 목적이 있음.
3. 발명의 해결 방법의 요지
본 발명은 현재 큐로서 다수의 큐내의 제1 큐를, 현재 포인터로서 상기 제1 큐와 연관된 상기 다수의 포인터내의 제1 포인터를 지정하는 단계; 상기 현재 큐내의 엔트리를 판독하는 단계; 큐에서 변화를 요구하는 제1 조건에 응답하여 상기 현재 포인터를 저장하는 단계; 상기 현재 포인터로서 상기 다수의 포인터내의 제2 포인터를 지정하는 단계; 및 상기 현재 포인터와 연관된 상기 다수의 큐내의 제2 큐에서의 엔트리를 판독하는 단계를 포함함.
4. 발명의 중요한 용도
데이터 처리 시스템

Description

공통 처리 알고리즘을 이용한 다수의 큐 핸들링 방법 및 장치{EXCLUSIVE MULTIPLE QUEUE HANDLING USING A COMMON PROCESSING ALGORITHM}
본 발명은 공통 처리 알고리즘을 이용한 다수의 큐 핸들링 방법 및 장치에 관한 것으로, 특히 멀티프로세서 데이터 처리 시스템에서 다수의 큐를 핸들링(handling)하기 위한 방법 및 장치에 관한 것이다.
멀티프로세서 데이터 처리 시스템(multiprocessor data processing system)은 자신의 데이터를 각각 동작시킬 수 있는 다수의 프로세서들을 포함한다. 통상적으로, 이들 프로세서들은 보통 독립적인 태스크(task) 또는 큰 태스크의 중요한 부분들을 다른 프로세서와는 독립적으로 수행한다. 멀티프로세서 시스템은 통상적으로 두 가지 카테고리(category), 즉 공유 메모리 시스템 및 분산 메모리 시스템으로 나누어진다. 공유 메모리 시스템에 있어서, 프로세서들은 공통 어드레스 공간에서의 데이터를 판독하고 공통 어드레스 공간에서의 공유 메모리 위치(location)에 데이터를 기록함으로써 통신한다. 더욱이, 공유 메모리는 일반적으로 공유 버스를 포함하지만, 반드시 필요한 것은 아니다. 공유 메모리내에서 서로 다른 프로세서들간의 통신은 일반적으로 큐(queue)를 통해 수행된다. 통상적으로, 다수의 큐들은, 시스템 자원인 큐들을 포함하는 데이터 처리 시스템내의 사용가능한 하드웨어 및 소프트웨어 자원을 제어하기 위해 데이터 처리 시스템에 의해 공통으로 사용된다.
메모리 시스템에 결합되는 다수의 중앙 처리 유니트를 포함하는 컴퓨터 시스템은 저장된 데이터의 연관 블록을 조직(organize)하기 위해 대기되는 동작들을 종종 수행한다. 큐들은 큐에서의 데이터 블록과 연관된 포인터에 의해 메모리에서의 데이터 블록 세트를 조직하기 위해 사용되는 데이터 구조이다. 각각의 큐는 다수의 단위 큐를 통상적으로 포함한다. 큐는 큐에서의 요소의 관련 위치에 따라 몇몇의 일반적인 형태로 분류된다. 선형 연쇄 큐(linear chained queue)는 메인(main) 또는 가상(virtual) 기억장치(storage)내 어디에서나 물리적으로 사용되는 요소를 갖는 큐인 반면에, 인접 큐는 물리적으로 다음에 위치한 요소를 갖는다. 계층 연쇄 큐(hierarchical chained queue)는 계층 탐색을 사용함으로써 큐 동작 속도를 높이는 큐이다.
물리적으로 서로 다음에 위치하거나 또는 메인 또는 가상 기억장치 내에서 사용되는 큐내의 데이터 블록들은 링크 리스트를 통해 서로 연관된다. "이중 링크(doubly linked)" 리스트는 리스트에서의 다음 및 이전 요소를 지시하는 두개의 포인터를 각각의 요소에 구비한다. "단일 링크(singly linked)" 큐의 경우에, 포인터들은 큐에서의 연속적인 데이터 블록의 주소들을 나타낸다. 단일 링크 큐는 각각의 요소가 큐에서 후속자(successor)에 대한 포인터를 포함하는 큐이다.
여러 소프트웨어 시스템은 처리를 위한 다수의 태스크를 저장하기 위해 큐들을 사용한다. 처리중에 발생하는 이벤트(event) 또는 조건은 다양한 처리 알고리즘을 이용하여 특별한 조건에서 작용하는 컨텍스트 스위치(context switch)를 필요로 한다. 프로세서가 다양한 소프트웨어 환경에서 실행을 시작할 때, 컨텍스트 스위치는 데이터 형태, 실행 우선순위, 인터럽트 레벨(interrupt level), 또는 특별한 알고리즘을 포함할 수 있다. 처리를 위한 별도의 알고리즘을 각각 갖는 여러 형태의 특별한 조건을 포함할 수 있다. 많은 소프트웨어 시스템에 있어서, 이러한 특별한 이벤트들은 즉시 처리될 수 없으며, 다수의 사건들은 다수의 큐의 지원을 요구하는 다음 처리를 위해 대기되어야만 한다. 그러나, 실행 속도 및 메모리 효율을 위해서 큐 엔트리 핸들링(handling)(예를 들어, 큐 엔트리 판독/기록 및 큐 포인터 갱신)에 가능한한 많은 공통 소프트웨어를 이용하는 것이 유리하다. 공통 소프트웨어의 사용은 내장 프로세서 서브시스템과 같은 제한된 처리 자원 환경에서 특히 중요하다.
따라서, 공통 처리 알고리즘을 이용한 다수의 큐 핸들링 방법 및 장치가 요구된다.
본 발명은 멀티프로세서 데이터 처리 시스템에서, 컨텍스트 스위치에 대한 조건 또는 큐 처리의 우선순위를 결정하는데 있어서 고도의 유연성을 제공할 수 있으며, 처리의 실행, 유지 및 메모리 사용을 효율적으로 수행할 수 있는, 공통 처리 알고리즘을 이용한 다수의 큐 핸들링 방법 및 장치를 제공하는데 그 목적이 있다.
본 발명은 멀티프로세서 데이터 처리 시스템에 구현되고, 데이터 처리 시스템내의 다수의 큐를 처리하기 위한 방법을 제공한다. 각각의 큐는 포인터와 연관된다. 첫 번째 큐는 첫 번째 큐와 연관된 첫 번째 포인터와 함께 현재 큐로 나타내진다. 첫 번째 포인터는 현재 포인터로 나타내진다. 엔트리들은 현재 포인터를 사용하여 현재 큐내에서 판독된다. 큐에서의 변화를 요구하는 조건에 응답하여, 현재 포인터는 저장되고 다른 포인터가 지정되거나 또는 현재 포인터로서의 사용을 위해 로드(load)된다. 엔트리들은 그 포인터와 연관된 큐내에서 새로운 현재 포인터에 의해 판독된다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다.
도1을 참조하면, 본 발명이 적용되는 데이터 처리 시스템의 블록도가 도시된다.
데이터 처리 시스템(100)은 다수의 메인 프로세서 및 중앙 처리 유니트(CPU), 즉 시스템 버스(106)로 연결되는 프로세서들(102, 104)을 포함한다. 시스템 버스(106)는 주변 구성 요소 상호 연결(PCI; Peripheral Component Interconnect) 로컬(local) 버스 구조와 같은 여러 가지 데이터 처리 시스템 구조를 사용하여 구현된다. 프로세서(102, 104)는 마이크로프로세서들을 이용하여 구현된다. 마이크로프로세서의 예를 들면 (1) 복합 명령어 세트 CPU(CISC)에는 Intel Corporation의 인텔(Intel) 80486 및 펜티엄(Pentium) 프로세서; Advanced Micro Devices, Inc.의 Am5x86 프로세서; Cyrix Coperation의 Cyrix6x86 프로세서가 있으며, 및 (2) 감소된 명령어 세트 CPU(RISCs)에는, 즉 Digital Equipment Corporation의 DEC Alpha 및 Motorola, Inc.의 PowerPC604e가 있다. 또한, 데이터 처리 시스템(100)은 SCSI 어댑터(adaptor)와 같은 어댑터에서 통상적으로 발견되는 내장 프로세서(108)를 포함한다. 내장 프로세서(108)는 하드 드라이브의 어레이 및/또는 CD-ROM, 스캐너(scanner) 또는 테이프와 하드 드라이브의 연결을 제공하는 어댑터에 놓여진다. 내장 또는 특별한 목적 프로세서들은 네트워크 제어기, SCSI 제어기, IDE 제어기 등에서 발견된다.
프로세서들(102, 104)에 의해 실행되는 처리 명령어 및 알고리즘은 랜덤 억세스 메모리(RAM) 및 판독 전용 메모리(ROM)와 같은 휘발성 및 비휘발성 메모리 장치를 모두 포함하는 메모리(110)에서 발견된다. 또한, 내장 프로세서(108)는 프로세서들(102, 104)과 내장 프로세서(108)간의 통신을 제공하기 위해 사용되는 공유 메모리(110)에 놓여진 처리를 위한 명령어들을 실행한다. 내장 또는 특별한 목적 프로세서들은 네트워크 제어기, SCSI 제어기, IDE 제어기 등에서 발견된다.
선택적으로, 내장 프로세서(108)는 내장 프로세서(108)와 연관된 메모리(114)에 위치된 명령어들을 실행한다. 메모리(110)와 같이 메모리(114)는 RAM 및 ROM과 같은 휘발성 및 비휘발성 메모리 장치를 모두 포함한다. 메모리(110)와 달리 메모리(114)는 도시된 일예에서는 공유 메모리가 아니다. 데이터 처리(100)에서 여러 가지 프로세서들에 의해 조종되는 큐들은 메모리(110)내의 큐 블록(112)에 놓여진다. 선택적으로, 메모리(114)는 큐들을 포함하는 공유 메모리가 될 수 있다.
통신은 메모리(110)의 큐 블록(112)내에서 발견되는 큐를 통해 용이해진다. "시작 큐(start queue)"라고도 명명되는 출력 큐(도시하지 않음)는 프로세서(102, 104)로부터 내장 프로세서(108)로의 입/출력(I/O) 요구와 같은 요구를 보내기 위해 사용된다. 유사하게, "완료 큐(completion queue)"라고도 명명되는 입력 큐(도시하지 않음)는 내장 프로세서(108)로부터 프로세서(102 또는 104)로 완료 정보를 복귀(return)시키기 위해 사용된다.
기억 장치(116)들은 시스템 버스(106)로 연결되는 공유 기억 장치들이고 도시된 일예에서는 비휘발성 기억장치를 나타낸다. 몇몇 경우에서, SCSI 장치 또는 SCSI CD-ROM과 같은 기억 장치들(116)은 내장 프로세서를 포함하는 어댑터를 통해 버스(106)로 연결된다. 이것은 하드 디스크, CD-ROM, 및/또는 테이프 드라이브 및 그 등가물을 포함하는 제2 형태의 기억 장치이다.
도1에 도시된 일예에서 데이터 처리 시스템(100)은 두개의 메인 프로세서, 프로세서(102, 104) 및 단일 내장 프로세서(108)를 포함하고, 다른 갯수 및 형태의 프로세서들이 본 발명에 따른 여러가지 조합으로 사용된다. 예를 들어, 본 발명은 단일 메인 프로세서 및 단일 내장 프로세서를 포함하는 데이터 처리 시스템에서 구현된다. 즉, 본 발명은 공유 메모리를 통해 통신하는 적어도 두개의 프로세서들을 포함하는 데이터 처리 시스템에 적용된다. 비록 도시된 일예가 공유 메모리를 시스템 버스(106)로 직접 연결되는 메모리로 도시하였지만 공유 메모리는 여러 위치에 놓여질 수 있다. 예를 들어, 메모리(114)는 데이터 처리 시스템내의 내장 프로세서(108)와 다른 프로세서에 접근할 수 있는 공유 메모리일 수 있다.
도2a 내지 2d는 본 발명의 실시예에 따른 큐의 블록도로서, 도1의 큐 블록(112)내에서 발견되는 큐의 블록도이다. 도시된 일예에서, 비록 다른 형태의 큐가 본 발명에 따라 실행된다해도 큐(200)는 순환 큐이다. 큐(200)는 큐 블록(112)내의 메모리에 저장된 요소들을 포함하는 데이터 구조이다. 큐는 도시된 일예에서 일정한 크기를 갖는 초기화로 정의되는 "스태틱(static)" 큐이다. 요소들은 액티브(active) 또는 공백(empty)이다(처리될 데이터와 연관됨). 큐 엔트리들은 특정한 엔트리를 처리하기 위해 요구되는 컨텍스트를 표시하는 표시기(indicator)를 구비한다. 이 메커니즘(mechanism)은 본 발명의 공통 큐 핸들링 알고리즘에 사용된다.
도시된 일예에 있어서, 큐(200)는 단일 링크 리스트인데 각각의 요소는 두 부분, 즉 데이터(202) 및 포인터(204)를 포함한다. 데이터는 큐(200)내의 엔트리이고, 프로세서에 의해 사용될 데이터 또는 하나의 블록 데이터에 대한 주소 형태의 데이터(즉, 포인터)이다. 각각의 포인터(204)는 큐(200)내의 다음 엔트리를 지시한다. 순환 큐를 형성하기 위해 마지막 요소(요소 N)에서 포인터(204)는 첫 번째 요소(요소 1)를 지시한다.
판독 포인터(206)는 큐로부터 현재 판독되는 요소를 지시하기 위해 사용되는("첫 번째" 위치에서) 반면에 기록 포인터(208)는 데이터가 기록될 요소를 지시한다("마지막" 위치에서). 순환 방식에 있어서 포인터들은 큐(200)내의 요소들을 지나가는데 기록 포인터(208)는 언제나 판독 포인터(206)를 앞선다.
도2a에 있어서, 판독 포인터(206) 및 기록 포인터(208)는 모두 요소 1을 지시한다. 도2a에서 큐(200)내의 모든 요소들은 공백이다. 도2b에 있어서, 첫 번째 엔트리가 요소로 통지된 후, 판독전에, 기록 포인터(208)가 큐내의 요소 2를 지시하는 반면에 판독 포인터(206)는 아직도 요소 1을 지시한다. 도2c에 도시된 것과 같이, 두 번째 항목이 큐(200)로 통지된 후, 판독전에, 기록 포인터는 요소 3을 지시하는 반면에 판독 포인터(206)는 아직도 요소 1을 지시한다. 이런 경우에, 통상적으로 엔트리를 판독하는 프로세서는 큐(200)로부터 엔트리를 판독하라는 통지를 아직 받지 않는다. 도2d에 있어서, 판독 포인터(206) 및 기록 포인터(208)는 모두 큐(200)내의 엔트리 3을 지시한다. 이 경우에 있어서, 두 엔트리는 큐내의 요소로 통지(기록)되었으며, 두 엔트리 모두 큐로부터 판독되었다.
도3은 본 발명에 따른 공통 큐 핸들링 시스템에서 사용되는 구성 요소 및 처리를 도시한 블록도이다. 도시된 일예에서 공통 큐 핸들링 시스템은 메모리(110)내에서 발견된다. 도3에 도시된 공통 큐 핸들링 시스템의 여러 가지 구성 요소는 메모리(110)와 다른 여러 위치에 배치된다. 또한 컨텍스트 처리는 본 발명에 따른 소프트웨어 구성 요소 대신에 하드웨어를 통해 수행된다. 큐만이 데이터 처리 시스템내의 공유 메모리에 배치된다. 도3에서 세개의 큐, 즉 큐 A, 큐 B 및 큐 C가 사용된다. 3개 이상 또는 이하의 큐가 본 발명에 따라 사용될 수 있다. 시스템 초기화에서, 큐중 하나가 디폴트(default) 큐로도 명명되는 액티브 큐로 설정된다. 도시된 일예에 있어서, 큐 A가 액티브 큐 또는 디폴트 큐로 선택된다.
큐 A, 큐 B 및 큐 C는 도시된 일예에서 도2의 큐(200)와 같이 순환 큐이다. 각각의 큐의 마지막 요소는 큐내의 첫 번째 요소를 가리키는 포인터를 갖는다. 큐 A의 판독 포인터는 공통 큐 포인터(300)에 놓여진다. 각각의 큐는 큐와 연관된 저장된 포인터 위치를 포함한다. 큐 A는 저장된 포인터 위치 302와 연관되고, 큐 B는 저장된 포인터 위치 304와 연관되고, 큐 C는 저장된 포인터 위치 306과 연관된다. 큐 B에 대한 초기 판독 포인터는 저장된 포인터 위치 304에 놓여지고, 큐 C에 대한 초기 판독 포인터는 저장된 포인터 위치 306에 놓여진다. 큐 A가 디폴트 또는 액티브 큐이므로, 처음에는 어떤 판독 포인터도 저장된 포인터 위치 302에 저장되지 않는다. 앞에서 설명한 바와 같이, 판독 포인터는 공통 큐 핸들링 루틴(308)에 의한 사용을 위해 공통 큐 포인터(300)에 저장된다.
엔트리들은 엔트리를 형성하는 데이터가 놓여질 요소를 지정하는 기록 큐 포인터를 이용하여 큐내의 요소에 놓여진다. 엔트리를 큐에 놓기 위해 사용되는 방법은 여러 가지 알려진 처리를 사용하여 수행된다. 도시된 일예에 있어서, 엔트리들은 다른 프로세서들, 도시된 일예에서 큐 핸들링 루틴이 실행되는 처리인 로컬 프로세서(local processor), 또는 큐 A, 큐 B 및 큐 C와 각각 연관되는 컨텍스트 처리 유니트(310, 312, 또는 314)와 같은 큐 컨텍스트 처리 유니트에 의해 입력된다. 컨텍스트 처리 유니트(310, 312, 314)는 큐 A, 큐 B 및 큐 C내의 엔트리에 의해 지시되는 데이터 또는 명령어를 처리하기 위해 사용되는 루틴 또는 프로그램이다.
공통 큐 핸들링 루틴(308)은 하나 이상의 엔트리가 큐 A에 놓여졌을 때 호출된다. 공통 큐 핸들링 루틴(308)은 큐 A에서 첫 번째 엔트리를 판독하고, (큐 엔트리에 내장된 표시기, 즉 세마포어(semaphore)를 이용하여) 큐 A에 대해 적합한 처리 컨텍스트를 복호(decode)하며, 실행(execution)을 컨텍스트 처리 유니트로 전달한다. 도시된 일예에서, 예외없는 정상 처리는 컨텍스트 처리 유니트(310)에 의해 수행된다. 예외 조건이 발생하지 않는다고 가정하면, 컨텍스트 처리 유니트(310)에 의한 컨텍스트 처리가 완료될 때, 큐 A내의 다음 큐 엔트리를 판독하기 위해 실행은 공통 큐 핸들링 루틴(308)으로 복귀한다. 만약 큐 A가 공백이면, 부가적인 엔트리들이 현재 액티브 큐에 놓여질 때까지 공통 큐 핸들링 루틴(308)은 복귀하거나 또는 유휴 조건으로 들어갈 수 있다.
큐 A내의 엔트리를 처리하는 동안에, 엔트리내의 예외 조건이 발생하면 통상적으로 다른 컨텍스트 처리 유니트에 의해 그 엔트리가 처리된다. 그런 실행 조건에 응답하여, 컨텍스트 처리 유니트에서의 스위치는 현재 엔트리를 핸들링하는 컨텍스트 처리 유니트에 의해 개시된다. 큐 처리에서 우선순위를 갖는 컨텍스트에 대한 조건의 판단은 각각의 컨텍스트 처리 유니트의 책임이다. 도시된 일예에 있어서, 각각의 컨텍스트 처리 루틴이 이하에 설명될 공통 큐 스위칭 방법을 사용하는 한 이런 결정이 이루어지는 방법에는 아무런 제한이 없다.
예를 들어, 만약 컨텍스트 처리 유니트(310)에 예외 조건이 발생하면, 예외가 컨텍스트 처리 유니트(312)에 의해 처리될 것으로 판단되고, 컨텍스트 스위치는 개시된다. 예외 처리에 대한 엔트리들은 컨텍스트 처리 유니트(312)와 연관된 큐 B에 놓여지고, 이 형태의 예외를 처리한다. 컨텍스트 처리 유니트(312)에 대한 컨텍스트 스위치의 개시는 처리를 위해 공통 큐 포인터를 저장된 포인터 위치(302)에 저장하는 컨텍스트 처리 유니트(310)에 의해 발생된다. 그후에, 컨텍스트 처리 유니트(310)는 저장된 포인터 위치(304)로부터 큐 B내의 엔트리들을 처리하는 컨텍스트 처리 유니트(312)로 스위치하는 컨텍스트에 대한 공통 큐 포인터(300)로 저장된 포인터를 로드한다. 저장된 포인터를 공통 큐 포인터(300)로 로드한후, 실행은 공통 큐 핸들링 루틴(308)으로 복귀한다. 도시된 일예에 있어서, 공통 큐 포인터(300)에서의 포인터는 큐 B를 지시하고, 엔트리는 큐 B로부터 판독된다. 큐 엔트리에서의 표시기는 컨텍스트 처리 유니트(310) 대신에 컨텍스트 처리 유니트(312)를 사용하는 표시기를 갖는다.
처리는 컨텍스트 처리 유니트(312)가 큐 B와 사용되는 경우를 제외하고는, 공통 큐 핸들링 루틴(308)에 의해 관리되는 큐 B내의 엔트리에서 큐 A에서의 엔트리들과 같이 계속된다. 컨텍스트 처리 유니트(312)에 의해서만 판단되는 컨텍스트 스위치를 요구하는 예외가 발생한다면, 스위치는 앞에서 설명된 바와 같이 이루어질 수 있다. 도시된 일예에 있어서, 큐 B가 공백이 될 때, 컨텍스트 처리 유니트(312)는 큐 A내의 엔트리들을 처리하기 위해 컨텍스트 처리 유니트(310)로 돌아가는 컨텍스트 스위치를 개시한다. 선택적으로, 큐가 공백일 때는, 그 이상의 엔트리가 큐 B로 전달될 때까지 처리는 유휴일 수 있다.
컨텍스트 스위치가 큐 A로 복귀될 때까지 큐 A내의 어떤 엔트리도 부가적으로 처리되지 않는다. 따라서, 큐 B가 공백이 되면, 공통 큐 핸들링 루틴(308)은 큐 A로 복귀하는 컨텍스트 스위치를 개시한다. 공통 큐 처리 블록(312)에 의해 판단되는 스위치가 큐 A로 복귀할 때, 공통 큐 포인터(300)에서 큐 B에 대한 판독 포인터는 저장된 포인터 위치(304)에 저장된다. 판독 포인터는 저장된 포인터 위치(302)로부터 복원되고, 공통 큐 포인터(300)에 놓여져서, 큐 A의 큐 처리가 예외 발생에 의해 인터럽트 되었던 지점(point)부터 재개하도록 한다. 더욱이, 도3에 있어서 큐 A 또는 다른 큐로의 부가적인 큐 엔트리 기록이 컨텍스트 처리 또는 컨텍스트 스위칭이 수행되는 동안에 발생한다. 비록 도시된 일예는 예외 조건에 응답하는 컨텍스트 스위치들을 도시한다해도, 컨텍스트 스위치는 다른 조건하에서도 발생한다.
따라서, 이벤트의 우선순위화 이전에 컨텍스트 스위치에 대한 조건의 판단에서 높은 유연성 및 처리 네스팅(nesting)이 공통 큐 핸들링 시스템에 의해 제공된다. 컨텍스트 처리 유니트(312)에서의 예외는 컨텍스트 처리 유니트(314)를 통해 큐 C를 처리하는 큐 C로의 컨텍스트 스위치를 야기할 수 있다. 그런 처리는 다른 큐로의 스위치를 야기할 수 있는 큐의 수 및 컨텍스트 처리 유니트로 확장된다. 또한, 컨텍스트 처리 유니트는 공백 큐 표시를 어떻게 진행시킬 것인지 결정한다. 공백 큐 표시에 응답하는 옵션(option)은 다른 큐의 처리로 컨텍스트 스위치를 수행하고, 부모(parent) 기능 또는 처리로 제어를 복귀시키고, 새로운 엔트리를 대기하는 자동 조건을 입력할 것이다.
특히, 도3에 도시된 공통 큐 핸들링 시스템은 내장 SCSI I/O 프로세서에 구현된다. 그런 구현을 위해, 큐 A는 SCSI I/O 이벤트에 대해 사용되고, 큐 B는 체크 조건(check condition) 또는 다른 불량 상태(bad status)와 같은 레벨 1 예외들에 대해 사용된다. 큐 C는 중단(abort), 장치 리셋(device reset), 또는 I/O 종료(terminate)와 같은 레벨 2 예외에 대해 사용된다. 예외가 발생할 때마다, 컨텍스트 처리 유니트(310)는 예외 레벨을 판단하고, 엔트리를 개별적인 큐로 전달하며, 그 큐에 대한 컨텍스트 처리 유니트로 컨텍스트 스위칭되도록 한다. 다른 프로세서들 또는 처리는 컨텍스트 스위치를 수행하기 위해 예외를 큐로 전달하고 컨텍스트 처리 유니트(310)에 통지할 수 있다. 컨텍스트 스위치 수행에 응답하여, 모든 정상 처리는 선택된 레벨의 예외가 처리될 때까지 중단된다. 더 높은 레벨의 새로운 예외는 즉시 더 높은 레벨로의 컨텍스트 스위치를 야기할 수 있다. 일단 특정 예외 레벨에 대한 큐가 공백이 되면, 그 예외 레벨에 대한 예외의 처리를 개시하기 위해 그 예외 레벨에 대한 컨텍스트 처리 유니트는 다음의 더 낮은 예외 레벨로 스위치 한다. 소정의 예외 레벨에 어떠한 예외도 존재하지 않더라도, 컨텍스트 스위치는 모든 예외가 처리되고 정상 SCSI I/O 이벤트가 일단 다시 처리될 때까지 하향 레벨로 이동한다.
도시된 일예에 있어서, 큐내의 각 엔트리는 단일 컨텍스트 처리 유니트에 의해 처리된다. 예를 들어, 큐 A내의 엔트리들은 컨텍스트 처리 유니트(312, 314)에 의해서는 처리되지 않고, 컨텍스트 처리 유니트(310)에 의해서만 처리된다. 이런 설계는 데이터 및 명령어를 처리하는데 있어서의 우선순위를 구현하기 위해 사용된다. 선택적으로, 큐 A내의 엔트리들은 컨텍스트 처리 유니트(310) 이외의 다른 컨텍스트 처리 유니트들에 의해 처리될 수 있다. 예를 들어, 큐 A내의 엔트리들은 컨텍스트 처리 유니트(310, 312)에 의해 처리될 수 있다. 큐에서 각각의 엔트리내의 데이터는 어떤 컨텍스트 처리 유니트가 특정 엔트리를 처리하게 될 것이라는 것을 나타낸다.
도4는 본 발명에 따른 공통 큐 핸들링 시스템을 초기화시키기 위한 일실시예 처리 과정의 순서도이다. 처리는 N개의 순환 큐들을 생성하고 이들 큐를 공백 엔트리로 초기화시킴으로써 시작된다(단계 400). 이후, 디폴트 큐의 첫 번째 요소에 대한 포인터는 공통 큐 포인터에 저장된다(단계 402). 디폴트 큐는 공통 큐 핸들링 시스템의 초기화이후 현재 동작중인 큐(예를 들어, 도3에서 큐 A)이다. 이후, 모든 다른 큐들의 첫 번째 요소에 대한 포인터들은 저장된 포인터 위치에 저장된다(단계 404). 이후, 공통 큐 핸들링 루틴은 큐 엔트리 처리를 시작하기 위한 표시를 기다린다(단계 406). 표시는 예를 들어 인터럽트의 발생일 수 있다.
도5는 본 발명에 따른 큐에서의 엔트리들을 처리하기 위한 공통 큐 핸들링 루틴에 의해 실행되는 일실시예 처리 과정의 순서도이다. 처리는 하나 이상의 엔트리들이 큐에 존재하고 있다는 통지를 수신함으로써 시작된다(단계 500). 이후, 공통 큐 포인터가 판독되고(단계 502), 공통 큐 포인터에 의해 지시되는 큐 엔트리가 판독된다(단계 504). 통상적으로 엔트리는 데이터의 블록을 지시하는 어드레스 및 다음 엔트리에 대한 포인터의 형태로 데이터를 포함한다. 바람직한 실시예에서, 데이터 블록들은 16 바이트 경계들에서 정렬되어서, 큐 엔트리에 저장된 어드레스의 하위 4 비트들은 컨텍스트 처리 또는 공백 엔트리를 위한 표시자(세마포어)를 포함할 수 있다. 판독되었던 큐 엔트리는 공백으로 표시된다(단계 506). 이것은 어드레스에 하위 4 비트들을 설정함으로써 이루어지며 널(null)과 동일하다. 이후, 공통 큐 포인터는 다음 큐 요소 위치를 지시하기 위해 갱신된다(단계 508). 이후, 단계 504에서 판독된 큐 엔트리의 하위 4 비트는 구분되어 저장된다(단계 510). 어드레스에서 하위 4 비트는 세마포어이며, 이것은 엔트리가 공백인지를 표시하기 위해 이용된다. 이러한 세마포어는 또한 경우에 따라서 컨텍스트 처리 유니트가 또다른 큐로 컨텍스트 스위칭하기 위해 요청되어야함을 표시하기 위해 이용된다. 도시된 일예에서, 세마포어 = 0(널) = 공백 큐 요소이고, 세마포어 = 1-15 = (컨텍스트 처리 유니트에 의해 이루어진) 컨텍스트 표시자 또는 큐 스위치 표시자이다.
이후, 세마포어가 널인지를 판단한다(단계 512). 이것은 엔트리가 공백인지에 관한 판단이다. 세마포어가 널이면, 이때 처리는 큐가 디폴트 큐인지를 판단한다(단계 518). 큐가 디폴트 큐이면, 처리는 단계 500으로 복귀하고, 그렇지 않으면 처리는 다시 단계 512를 참조하여 컨텍스트를 또다른 큐로 스위칭하며(520), 세마포어가 널이 아니면, 이때 처리는 이러한 세마포어를 위해 적합한 컨텍스트 처리 루틴을 요청한다(단계 514). 이후, 처리는 컨텍스트 처리 루틴으로부터 복귀하고(단계 516) 단계 502로 복귀한다.
도6은 본 발명에 따른 컨텍스트 처리 루틴에 의해 실행되는 일실시예 처리 과정의 순서도이다. 이러한 처리는 컨텍스트 처리 유니트에 의해 시작되어 공통 큐 핸들링 루틴에 의해 요청된다(단계 600). 이후, 단계들이 컨텍스트 처리 루틴에 의해 요구된 바대로 처리된다(단계 602). 또다른 큐로의 컨텍스트 스위칭이 필요한지 여부를 판단한다(단계 604). 또다른 큐로의 컨텍스트 스위칭이 필요하면, 이때 처리는 공통 큐 포인터를 판독하고(단계 606), 현재 처리되는 큐를 위한 저장된 포인터 위치에서 공통 큐 포인터를 판독한다(단계 608). 이후, 다음 큐를 위한 저장된 포인터 위치는 처리를 위해 판독된다(단계 610). 이러한 다음 큐는 컨텍스트 스위치에 의해 스위칭되는 큐이다. 이후, 포인터는 공통 큐 포인터 위치에 저장된다(단계 612). 단계 606에서 단계 612까지 단계들은 또다른 큐로의 컨텍스트 스위칭을 처리하는 컨텍스트 처리 유니트에 의해 수행된다.
이후, 그 이상의 처리 단계들이 컨텍스트 처리 유니트에 의해 요구되는지 여부를 판단한다(단계 614). 그 이상의 단계들이 처리를 위해 존재하면, 이때 처리는 이러한 컨텍스트 처리 유니트에 의해 요구되는 부가적인 단계들을 처리하고, 처리는 공통 큐 핸들링 루틴으로 복귀하며(616), 처리는 종료된다. 또한, 처리는 또다른 큐로 스위칭될 필요가 없을 경우에는 단계 604에서 단계 616으로 진행한다.
컨텍스트 스위치이후에 처리가 공통 큐 핸들링 루틴으로 돌아가면, 공통 큐 핸들링 루틴은 다른 큐 엔트리를 지시하고, 그 엔트리를 처리하여야할 컨텍스트 처리 유니트가 사용된다. 다른 큐에 대한 컨텍스트 스위치가 발생하면, 현재 큐를 위한 컨텍스트 처리 유니트는 실행을 종료한다. 이러한 모든 큐 핸들링 루틴(공통 루틴 + 컨텍스트 처리 루틴)은 병렬 방식으로 실행되기 때문에, 한 번에 단지 하나의 루틴만이 실행된다. 그래서, 컨텍스트 스위치가 일어나면, 다른 컨텍스트 스위치가 다시 그것을 선택할 때 까지, 스위치를 야기시킨 컨텍스트 처리 유니트는 제어(실행)하에 있지 않게 된다.
그러므로, 본 발명은 공통 큐 핸들링 루틴을 갖는 큐를 처리하기 위한 개선된 방법 및 장치를 제공한다. 큐 엔트리에 대한 모든 컨텍스트 처리 유니트가 공통 단계를 포함하는 한도까지, 처리의 일부는 공통 큐 핸들링 루틴과 함께 결합될 수 있다. 이러한 메커니즘은, 단일 루틴의 사용을 위해 정상 이벤트(그러나, 그들 각각의 컨텍스트 처리 루틴에 의해 수행되는 어떠한 특정 처리와 함께)와 동일하게 처리되는 예외 조작을 처리하도록 허용한다.
이러한 방식으로, 상호 배타적 유형에서 다수의 큐를 관리하도록 본 발명은 단일 공통 큐 핸들링 루틴을 제공한다. 본 발명은, 큐 사이의 컨텍스트 스위치가 두 개의 큐 포인터의 움직임과 함께 신속히 수행되도록 한다. 본 발명은, 컨텍스트 스위치를 위한 조건 또는 큐 처리의 우선순위를 결정하는데 있어서의 고도의 유연성을 제공한다. 모든 큐에 공통인 프로세싱은 실행, 유지 및 메모리 사용의 더 많은 효율을 얻기 위하여 공통 큐 핸들링 루틴과 결합될 수 있다.
태스크 또는 이벤트를 갖고 있기 위하여, 본 발명은, 각각이 엔트리를 처리하고 다른 컨텍스트를 참조하는 다수의 큐가 사용되는 공통 큐 핸들링 루틴을 제공한다. 본 발명은, 다른 큐가 록 상태로 남아 있을 동안, 단지 하나의 큐만이 처리되는 것을 보장하면서, 큐 처리의 배타성을 지지한다. 본 발명의 공통 큐 처리 시스템에 있어서, 공통 핸들링 루틴(308)이 판독, 기록 및 큐 포인터 갱신을 수행하도록, 각 큐를 위해 큐 요소에 저장된 큐 엔트리는 동일한 구조를 갖는다. 본 발명은 참조로서 또는 큐 엔트리 내에 명확히 포함되는 큐 공백 조건 또는 액티브 큐 엔트리를 표시한다. 이러한 표시 시스템은 시스템내의 모든 큐에 대해 공통이다. 유효 큐 엔트리 또는 공백 큐 요소를 위한 큐 표시자의 값은 각 큐에 대해 특정적이다. 이러한 특정 표시자는, 공통 큐 핸들링 루틴이 정확한 컨텍스트 처리 루틴으로 실행을 전달할 수 있도록 허용한다. 기록 프로세스가 액티브(공백) 엔트리의 기록을 조사하고 큐 기록 포인터를 적절히 유지하는 한, 엔트리를 큐에 기록하는 것은 공통 큐 핸들링 루틴과 비동기적으로 일어날 수도 있다.
큐가 록(lock) 상태에 있고 다른 큐가 처리되고 있을 때, 각 큐는 그 큐에 대한 현재 큐 포인터를 갖는 저장 포인터 저장 위치를 갖는다. 공통 큐 엔트리 핸들링 루틴은 요구된 큐 엔트리 판독 및 포인터 갱신을 수행한다. 또한, 그것은 큐 엔트리에 기반하여 적합한 처리 컨텍스트를 결정한다.
한편, 본 발명은 완전한 기능 데이터 처리 시스템의 컨텍스트에서 설명되었지만, 통상의 지식을 가진 자는, 본 발명의 프로세스가 명령어의 컴퓨터 판독 가능 매체의 형태 및 다양한 형태로 판매될 수 있고, 판매하는데 실질적으로 사용되는 단일 매체의 특정 형태와 관계없이 동등하게 응용할 수 있다는 것을 인식하는 것이 중요하다. 컴퓨터 판독가능 매체의 예는 플로피 디스크 및 CD-ROM와 같은 기록가능한 형태의 매체 및 디지털 및 아날로그 통신 링크와 같은 전송 매체를 포함한다.
본 발명의 바람직한 실시예의 상세는 예시 및 설명을 목적으로 설명되었으며, 개시된 형태에 의해 발명을 철저히 설명하거나 제한하기 위해 의도된 것은 아니다. 통상의 지식을 가진 자에 의해 많은 변경 및 변화가 이루어질 수 있다. 실시예는, 통상의 지식을 가진 자가 특정 사용의 완성에 적합한 다양한 변경과 함께 다양한 실시예에 대해 발명을 이해하도록, 발명의 원리 및 실질적 응용을 가장 잘 설명하는 실시예가 선택되어 상세되었다.
상기한 바와 같은 본 발명은, 큐 사이의 컨텍스트 스위치가 두 개의 큐 포인터의 움직임과 함께 신속히 수행되도록 하고, 컨텍스트 스위치를 위한 조건 또는 큐 처리의 우선순위를 결정하는데 있어서의 고도의 유연성을 제공하는 효과가 있다. 또한, 모든 큐에 공통인 프로세싱은 실행, 유지 및 메모리 사용의 더 높은 효율을 얻기 위하여 공통 큐 핸들링 루틴과 결합될 수 있는 효과가 있다.
도1은 본 발명이 적용되는 데이터 처리 시스템의 블록도.
도2a 내지 2d는 본 발명의 실시예에 따른 큐의 블록도.
도3은 본 발명에 따른 공통 큐 핸들링 시스템에서 사용되는 구성 요소 및 처리를 도시한 블록도.
도4는 본 발명에 따른 공통 큐 핸들링 시스템을 초기화시키기 위한 일실시예 처리 과정의 순서도.
도5는 본 발명에 따른 큐에서의 엔트리들을 처리하기 위한 공통 큐 핸들링 루틴에 의해 실행되는 일실시예 처리 과정의 순서도.
도6은 본 발명에 따른 컨텍스트 처리 루틴에 의해 실행되는 일실시예 처리 과정의 순서도.
* 도면의 주요 부분에 대한 부호 설명
100: 데이터 처리 시스템 102, 104: 프로세서
106: 시스템 버스 108: 내장 프로세서
110, 114: 메모리 112, 200: 큐
116: 기억장치 202: 데이터
204: 포인터 206: 판독 포인터
208: 기록 포인터

Claims (27)

  1. 다수의 큐내의 각 큐는 다수의 포인터내의 포인터와 연관된 데이터 처리 시스템에서 상기 다수의 큐 및 다수의 포인터를 핸들링하기 위한 방법에 있어서,
    현재 큐로서 상기 다수의 큐내의 제1 큐를, 현재 포인터로서 상기 제1 큐와 연관된 상기 다수의 포인터내의 제1 포인터를 지정하는 단계;
    상기 현재 큐와 연관된 상기 현재 포인터를 사용하여 상기 현재 큐내의 엔트리를 판독하는 단계;
    큐에서 변화를 요구하는 제1 조건에 응답하여 상기 현재 포인터를 저장하는 단계;
    상기 현재 포인터로서 상기 다수의 포인터내의 제2 포인터를 지정하는 단계; 및
    상기 현재 포인터와 연관된 상기 다수의 큐내의 제2 큐에서의 엔트리를 판독하는 단계를 포함하는 다수의 큐 및 다수의 포인터를 핸들링하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 포인터와 연관된 상기 다수의 큐내의 제3 큐내에서 엔트리를 판독는데 있어서, 현재 포인터로서 제3 포인터를 지정하는 단계를 더 포함하는 다수의 큐 및 다수의 포인터를 핸들링하기 위한 방법.
  3. 제 1 항에 있어서,
    상기 제1 조건은 예외조건인 다수의 큐 및 다수의 포인터를 핸들링하기 위한 방법.
  4. 제 1 항에 있어서,
    큐에서의 변화를 요구하는 제2 조건에 응답하여 상기 현재 포인터를 저장하는 단계; 및
    상기 현재 포인터로서 상기 제1 포인터를 로딩하고 상기 제1 큐내의 엔트리를 판독하는 단계
    를 더 포함하는 다수의 큐 및 다수의 포인터를 핸들링하기 위한 방법.
  5. 제 4 항에 있어서,
    상기 제2 조건은,
    상기 제2 큐가 공백임을 나타내는 다수의 큐 및 다수의 포인터를 핸들링하기 위한 방법.
  6. 제 1 항에 있어서,
    큐내에 엔트리의 일부로서 상기 제1 조건을 저장함으로써, 큐에서의 변화를 요구하는 조건을 나타내는 단계를 더 포함하는 다수의 큐 및 다수의 포인터를 핸들링하기 위한 방법.
  7. 제 6 항에 있어서,
    상기 조건은,
    세마포어 형태인 다수의 큐 및 다수의 포인터를 핸들링하기 위한 방법.
  8. 적어도 하나의 엔트리를 각각 갖는 다수의 큐;
    상기 다수의 큐내의 큐와 각각 연관되고, 상기 다수의 큐내의 제1 큐는 현재 큐이고, 상기 제1 큐와 연관된 상기 다수의 포인터내의 제1 포인터는 현재 포인터인 다수의 포인터;
    상기 현재 큐와 연관된 상기 현재 포인터를 사용하여 상기 현재 큐내의 상기 엔트리를 판독하기 위한 판독 수단;
    큐내의 변화를 요구하는 제1 조건에 응답하여 상기 제1 포인터를 저장하기 위한 저장 수단; 및
    현재 포인터로서 제2 포인터를 로딩하기 위한 로딩수단을 포함하고,
    상기 판독 수단은 상기 현재 포인터와 연관된 다수의 큐내의 큐에서의 엔트리를 판독하는 데이터 처리 시스템.
  9. 제 8 항에 있어서,
    현재 포인터로서 제3 포인터를 지정하기 위한 지정 수단; 및
    상기 현재 포인터와 연관된 상기 다수의 큐내의 제3 큐내의 엔트리를 판독하기 위한 판독 수단
    을 더 포함하는 데이터 처리 시스템.
  10. 제 8 항에 있어서,
    상기 제1 조건은 예외 조건인 데이터 처리 시스템.
  11. 제 8 항에 있어서,
    상기 현재 포인터로서 상기 제1 포인터를 로딩하기 위한 로딩 수단을 더 포함하고,
    상기 판독 수단은 큐에서의 변화를 요구하는 제2 조건에 응답하여 상기 제1 큐내의 엔트리를 판독하는 데이터 처리 시스템.
  12. 제 11 항에 있어서,
    상기 제2 조건은 상기 제2 큐가 공백임을 나타내는 데이터 처리 시스템.
  13. 제 12 항에 있어서,
    큐에서의 변화를 요구하는 상기 조건이 큐내의 엔트리의 일부로서 저장되는 데이터 처리 시스템.
  14. 제 13 항에 있어서,
    상기 조건은 세마포어 형태인 데이터 처리 시스템.
  15. 제 8 항에 있어서,
    상기 다수의 큐내의 엔트리들을 처리하는 다수의 컨텍스트 처리 유니트
    를 더 포함하는 데이터 처리 시스템.
  16. 제 15 항에 있어서,
    상기 다수의 큐내의 큐에서의 엔트리들을 처리하기 위해 상기 다수의 컨텍스트 처리 유니트의 컨텍스트 처리 유니트가 각각 할당되는 데이터 처리 시스템.
  17. 엔트리들을 큐로 전달하는 제1 프로세서;
    큐로부터 엔트리들을 판독하는 제2 프로세서;
    큐를 포함하는 메모리; 및
    다수의 모드 동작을 갖는 루틴을 핸들링하는 공통 큐를 포함하되, 다수의 동작 모드는,
    현재 큐로 다수의 큐내의 제1 큐가 초기화되고, 현재 포인터로서 상기 제1 큐와 연관된 다수의 포인터내의 제1 포인터는 초기화되는 제1 동작 모드,
    상기 현재 포인터를 이용하여 상기 현재 큐내의 엔트리가 판독되는 제2 동작 모드,
    큐에서의 변화를 요구하는 조건에 응답하여 상기 현재 포인터가 저장되는 제3 동작 모드, 및
    상기 제3 동작 모드에 응답하여, 상기 현재 큐로서 상기 다수의 큐내의 제2 큐가 지정되고, 현재 포인터로서 상기 제2 큐와 연관된 제2 포인터가 지정되는 제4 동작 모드를 구비하는 데이터 처리 시스템.
  18. 제 17 항에 있어서,
    상기 공통 큐 핸들링 루틴은 상기 제1 프로세서에 의해 실행되는 데이터 처리 시스템.
  19. 제 17 항에 있어서,
    상기 공통 큐 핸들링 루틴은 상기 제2 프로세서에 의해 실행되는 데이터 처리 시스템.
  20. 제 17 항에 있어서,
    상기 공통 큐 핸들링 루틴을 실행하기 위한 제3 프로세서를 더 포함하는 데이터 처리 시스템.
  21. 제 17 항에 있어서,
    상기 다수의 큐내의 엔트리들을 처리하는 다수의 컨텍스트 처리 유니트를 더 포함하는 데이터 처리 시스템.
  22. 제 21 항에 있어서,
    상기 다수의 컨텍스트 처리 유니트내의 각각의 컨텍스트 처리 유니트는 상기 다수의 큐내의 단일 큐내의 엔트리들을 처리하기 위해 할당되는 데이터 처리 시스템.
  23. 현재 큐로서 다수의 큐내의 제1 큐를, 현재 포인터로서 상기 제1 큐와 연관된 다수의 포인터내의 제1 포인터를 초기화하기 위한 제1 명령어;
    상기 현재 포인터를 이용하여 상기 현재 큐를 판독하기 위한 제2 명령어;
    큐에서의 변화를 요구하는 조건에 응답하여 상기 현재 포인터를 저장하기 위한 제3 명령어; 및
    상기 현재 큐로서 상기 다수의 큐내의 제2 큐를, 상기 현재 포인터로서 상기 다수의 포인터내의 제2 포인터를 지정하기 위한 제4 명령어를 구비하는 컴퓨터에서의 큐를 핸들링하기 위한 컴퓨터 판독가능 명령어
    를 포함하는 컴퓨터 판독가능 미디어.
  24. 제 23 항에 있어서,
    상기 컴퓨터 판독가능 미디어는 플로피 디스크(floppy disk)인 컴퓨터 판독가능 미디어.
  25. 제 23 항에 있어서,
    상기 컴퓨터 판독가능 미디어는 CD-ROM인 컴퓨터 판독가능 미디어.
  26. 제 23 항에 있어서,
    상기 컴퓨터 판독가능 미디어는 랜덤 억세스 메모리인 컴퓨터 판독가능 미디어.
  27. 제 23 항에 있어서,
    상기 컴퓨터 판독가능 미디어는 하드 디스크 드라이브인 컴퓨터 판독가능 미디어.
KR1019980000504A 1997-01-10 1998-01-10 공통처리알고리즘을이용한다수의큐핸들링방법및장치 KR100463987B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/781462 1997-01-10
US08/781,462 US6341301B1 (en) 1997-01-10 1997-01-10 Exclusive multiple queue handling using a common processing algorithm
US8/781,462 1997-01-10

Publications (2)

Publication Number Publication Date
KR19980070448A KR19980070448A (ko) 1998-10-26
KR100463987B1 true KR100463987B1 (ko) 2005-02-28

Family

ID=25122825

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980000504A KR100463987B1 (ko) 1997-01-10 1998-01-10 공통처리알고리즘을이용한다수의큐핸들링방법및장치

Country Status (2)

Country Link
US (1) US6341301B1 (ko)
KR (1) KR100463987B1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3823475B2 (ja) * 1997-09-18 2006-09-20 ソニー株式会社 データ処理方法、記録媒体及びデータ処理装置
US6862635B1 (en) 1998-11-13 2005-03-01 Cray Inc. Synchronization techniques in a multithreaded environment
US7584472B1 (en) * 1999-02-08 2009-09-01 Alcatel-Lucent Canada Inc. Method and apparatus for processing call signaling messages
US6581063B1 (en) * 2000-06-15 2003-06-17 International Business Machines Corporation Method and apparatus for maintaining a linked list
JP3706008B2 (ja) * 2000-08-01 2005-10-12 富士通株式会社 プロセッサ間データ通信装置、プロセッサ間データ通信方法およびデータ処理装置
US6799254B2 (en) * 2001-03-14 2004-09-28 Hewlett-Packard Development Company, L.P. Memory manager for a common memory
US20030110232A1 (en) * 2001-12-11 2003-06-12 International Business Machines Corporation Distributing messages between local queues representative of a common shared queue
KR100803450B1 (ko) * 2002-11-19 2008-02-14 엘지노텔 주식회사 공유 버스 시스템의 스케줄링 장치 및 그 방법
EP1573529A2 (en) * 2002-12-11 2005-09-14 Koninklijke Philips Electronics N.V. Method and apparatus for encoding design description in reconfigurable multi-processor system
US6941427B2 (en) * 2002-12-20 2005-09-06 Lsi Logic Corporation Method and apparatus for improving queue traversal time
US7213244B2 (en) * 2003-03-13 2007-05-01 International Business Machines Corporation Apparatus and method for distribution of work on a doubly linked list among processing threads
GB0404696D0 (en) * 2004-03-02 2004-04-07 Level 5 Networks Ltd Dual driver interface
KR101519728B1 (ko) * 2013-09-23 2015-05-19 엘에스산전 주식회사 원격감시제어시스템에서의 데이터 처리 장치 및 방법
US10628320B2 (en) * 2016-06-03 2020-04-21 Synopsys, Inc. Modulization of cache structure utilizing independent tag array and data array in microprocessor
US10558463B2 (en) 2016-06-03 2020-02-11 Synopsys, Inc. Communication between threads of multi-thread processor
US10318302B2 (en) 2016-06-03 2019-06-11 Synopsys, Inc. Thread switching in microprocessor without full save and restore of register file
US10613859B2 (en) 2016-08-18 2020-04-07 Synopsys, Inc. Triple-pass execution using a retire queue having a functional unit to independently execute long latency instructions and dependent instructions
US10552158B2 (en) 2016-08-18 2020-02-04 Synopsys, Inc. Reorder buffer scoreboard having multiple valid bits to indicate a location of data
US10558366B2 (en) 2017-11-14 2020-02-11 International Business Machines Corporation Automatic pinning of units of memory
US10664181B2 (en) 2017-11-14 2020-05-26 International Business Machines Corporation Protecting in-memory configuration state registers
US10496437B2 (en) 2017-11-14 2019-12-03 International Business Machines Corporation Context switch by changing memory pointers
US10592164B2 (en) 2017-11-14 2020-03-17 International Business Machines Corporation Portions of configuration state registers in-memory
CN112631781A (zh) * 2020-12-29 2021-04-09 上海商汤智能科技有限公司 一种算子执行方法、装置、电子设备及存储介质

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4038642A (en) 1976-04-30 1977-07-26 International Business Machines Corporation Input/output interface logic for concurrent operations
US4429360A (en) 1978-10-23 1984-01-31 International Business Machines Corporation Process and apparatus for interrupting and restarting sequential list-processing operations
US4663706A (en) 1982-10-28 1987-05-05 Tandem Computers Incorporated Multiprocessor multisystem communications network
US4821170A (en) 1987-04-17 1989-04-11 Tandem Computers Incorporated Input/output system for multiprocessors
US4807111A (en) 1987-06-19 1989-02-21 International Business Machines Corporation Dynamic queueing method
US5023776A (en) 1988-02-22 1991-06-11 International Business Machines Corp. Store queue for a tightly coupled multiple processor configuration with two-level cache buffer storage
US4945548A (en) 1988-04-28 1990-07-31 Digital Equipment Corporation Method and apparatus for detecting impending overflow and/or underrun of elasticity buffer
US5003464A (en) 1988-05-23 1991-03-26 Bell Communications Research, Inc. Methods and apparatus for efficient resource allocation
EP0349123B1 (en) 1988-06-27 1995-09-20 Digital Equipment Corporation Multi-processor computer systems having shared memory and private cache memories
US5155809A (en) 1989-05-17 1992-10-13 International Business Machines Corp. Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware
US5144692A (en) 1989-05-17 1992-09-01 International Business Machines Corporation System for controlling access by first system to portion of main memory dedicated exclusively to second system to facilitate input/output processing via first system
EP0398523A3 (en) 1989-05-19 1991-08-21 Hitachi, Ltd. A device for data i/o and execution support in digital processors
US5239634A (en) 1989-09-21 1993-08-24 Digital Equipment Corporation Memory controller for enqueuing/dequeuing process
JP2560889B2 (ja) * 1990-05-22 1996-12-04 日本電気株式会社 マイクロプロセッサ
AU633724B2 (en) 1990-06-29 1993-02-04 Digital Equipment Corporation Interlock queueing
US5224215A (en) 1990-07-13 1993-06-29 International Business Machines Corporation Message queue processing among cooperative processors having significant speed differences
US5404521A (en) 1990-07-31 1995-04-04 Top Level Inc. Opportunistic task threading in a shared-memory, multi-processor computer system
US5319778A (en) 1991-07-16 1994-06-07 International Business Machines Corporation System for manipulating elements in linked lists sharing one or more common elements using head nodes containing common offsets for pointers of the linked lists
US5459839A (en) * 1991-09-05 1995-10-17 International Business Machines Corporation System and method for managing queue read and write pointers
US5394547A (en) 1991-12-24 1995-02-28 International Business Machines Corporation Data processing system and method having selectable scheduler
EP0551191B1 (en) 1992-01-09 2000-04-12 Cabletron Systems, Inc. Apparatus and method for transferring data to and from host system
US5315707A (en) 1992-01-10 1994-05-24 Digital Equipment Corporation Multiprocessor buffer system
US5313638A (en) 1992-03-24 1994-05-17 International Business Machines Corp. Method using semaphores for synchronizing communication between programs or processes resident in a computer system
US5274823A (en) 1992-03-31 1993-12-28 International Business Machines Corporation Interrupt handling serialization for process level programming
US5386514A (en) 1992-04-16 1995-01-31 Digital Equipment Corporation Queue apparatus and mechanics for a communications interface architecture
US5325526A (en) 1992-05-12 1994-06-28 Intel Corporation Task scheduling in a multicomputer system
US5485626A (en) * 1992-11-03 1996-01-16 International Business Machines Corporation Architectural enhancements for parallel computer systems utilizing encapsulation of queuing allowing small grain processing
US5381413A (en) 1992-12-28 1995-01-10 Starlight Networks Data throttling system for a communications network
US5519883A (en) 1993-02-18 1996-05-21 Unisys Corporation Interbus interface module
US5546391A (en) 1993-03-04 1996-08-13 International Business Machines Corporation Central shared queue based time multiplexed packet switch with deadlock avoidance
US5555405A (en) 1993-07-06 1996-09-10 Digital Equipment Corporation Method and apparatus for free space management in a forwarding database having forwarding entry sets and multiple free space segment queues
US5560034A (en) 1993-07-06 1996-09-24 Intel Corporation Shared command list
US5581734A (en) 1993-08-02 1996-12-03 International Business Machines Corporation Multiprocessor system with shared cache and data input/output circuitry for transferring data amount greater than system bus capacity
US5604866A (en) 1993-09-30 1997-02-18 Silicon Graphics, Inc. Flow control system having a counter in transmitter for decrementing and incrementing based upon transmitting and received message size respectively for indicating free space in receiver
US5442730A (en) 1993-10-08 1995-08-15 International Business Machines Corporation Adaptive job scheduling using neural network priority functions
US5539893A (en) 1993-11-16 1996-07-23 Unisys Corporation Multi-level memory and methods for allocating data most likely to be used to the fastest memory level
US5551001A (en) 1994-06-29 1996-08-27 Exponential Technology, Inc. Master-slave cache system for instruction and data cache memories
US5541912A (en) 1994-10-04 1996-07-30 At&T Corp. Dynamic queue length thresholds in a shared memory ATM switch
US5588132A (en) * 1994-10-20 1996-12-24 Digital Equipment Corporation Method and apparatus for synchronizing data queues in asymmetric reflective memories
US5555396A (en) 1994-12-22 1996-09-10 Unisys Corporation Hierarchical queuing in a system architecture for improved message passing and process synchronization
US5774745A (en) 1995-03-31 1998-06-30 Cirrus Logic, Inc. Method and apparatus for writing and reading entries in an event status queue of a host memory
US5623449A (en) 1995-08-11 1997-04-22 Lucent Technologies Inc. Flag detection for first-in-first-out memories

Also Published As

Publication number Publication date
KR19980070448A (ko) 1998-10-26
US6341301B1 (en) 2002-01-22

Similar Documents

Publication Publication Date Title
KR100463987B1 (ko) 공통처리알고리즘을이용한다수의큐핸들링방법및장치
US4493034A (en) Apparatus and method for an operating system supervisor in a data processing system
KR100501289B1 (ko) 입력/출력 서브-프로세서와의 비동기 인터페이스를 통한 입력/출력 성능 개선 방법
US6449614B1 (en) Interface system and method for asynchronously updating a share resource with locking facility
US5634046A (en) General purpose use of a stack pointer register
US5671446A (en) Method and apparatus for atomically accessing a queue in a memory structure where LIFO is converted to FIFO
EP0145889B1 (en) Non-spinning task locking using compare and swap
EP0426323B1 (en) Portable, resource sharing file server using co-routines
US6996821B1 (en) Data processing systems and method for batching tasks of the same type in an instruction cache
US6665699B1 (en) Method and data processing system providing processor affinity dispatching
US5748959A (en) Method of conducting asynchronous distributed collective operations
EP0565849A2 (en) A method and system for synchronizing threads within a process
EP0969381A2 (en) Method of efficient non-virtual main memory management
JPH03147047A (ja) 入出力チャネル経路上の負荷を均衡させる方法及びコンピュータ・システム
EP0321654A2 (en) Method for extracting and/or replacing control system information in a computer operating system
KR20030072550A (ko) 데이터 처리장치와 복귀상태의 저장방법
US6779180B1 (en) Apparatus and method for preventing stack overflow from synchronous completion of asynchronous functions
JP2005338985A (ja) 記憶領域管理方法及びシステム
EP0239078A2 (en) Register saving/restoring system
US5862340A (en) Method operating in each node of a computer system providing and utilizing special records for collective communication commands to increase work efficiency at each node
US5758161A (en) Testing method for checking the completion of asynchronous distributed collective operations
US7047321B1 (en) Unblocking an operating system thread for managing input/output requests to hardware devices
JPH065515B2 (ja) キャッシュ再ロード・オーバーヘッドを減少させる方法およびコンピュータ・システム
EP0206335B1 (en) Interruption method for a data processing system
US6658525B1 (en) Concurrent access of an unsegmented buffer by writers and readers of the buffer

Legal Events

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

Payment date: 20121121

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20131118

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee