KR100268565B1 - 다중 처리 시스템에서 타스크를 큐잉하기 위한 시스템 및 방법 - Google Patents

다중 처리 시스템에서 타스크를 큐잉하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR100268565B1
KR100268565B1 KR1019960033402A KR19960033402A KR100268565B1 KR 100268565 B1 KR100268565 B1 KR 100268565B1 KR 1019960033402 A KR1019960033402 A KR 1019960033402A KR 19960033402 A KR19960033402 A KR 19960033402A KR 100268565 B1 KR100268565 B1 KR 100268565B1
Authority
KR
South Korea
Prior art keywords
task
queue
execution
listed
subtask
Prior art date
Application number
KR1019960033402A
Other languages
English (en)
Other versions
KR970016979A (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 KR970016979A publication Critical patent/KR970016979A/ko
Application granted granted Critical
Publication of KR100268565B1 publication Critical patent/KR100268565B1/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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

Landscapes

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

Abstract

프로시저(procedure)는 다중 노드 데이타 처리 시스템에서 우선 순위가 부여된 타스크(priority ordered tasks)의 실행을 제어한다. 데이타 처리 시스템은 소프트웨어로 제어되는 프로세서(software-controlled processor)를 갖는 노드, 및 하드웨어로 구성된 큐 제어기(hardware-configured queue-controller)를 포함한다. 큐 제어기는 우선 순위가 부여된 큐들을 다수개 포함하며, 각각의 큐는 큐에 배정된 우선 순위(priority order)와 동등한 우선 순위가 배정되어 있는 타스크들을 리스트시킨다. 큐 제어기는 다음 단계들을 포함하는 방법을 수행함으로써, 실행을 위한 제1 타스크를 큐시키기 위해서 프로세서 발생 오더(processor generated order)에 응한다: 상기 제1 타스크의 우선 순위와 같은 우선 순위가 배정되어 있는 제1 큐 상에 상기 제1 타스크를 리스트시키는 단계; 상위 우선 순위가 배정되어 있는 큐 상에 제2 타스크가 리스트되는 경우, 제1 타스크의 실행 전에 제2 타스크의 실행을 시도하는 단계; 상기 제1 큐보다 더 상위의 우선 순위가 배정되어 있는 큐 상에 아무 타스크도 리스트되지 않은 경우, 제1 큐 수단 내에서 제1 리스트된 타스크의 실행을 시도하는 단계; 및 타스크 실행의 완료 또는 타스크 실행의 정지시에, 상위 우선 순위가 배정되어 있는 큐 상에 타스크를 배치하기 위해 다른 오더가 발행되지 않는 경우에만, 제1 큐 상의 또 다른 타스크의 실행을 시도하는 단계. 이 방법은 프로세서 발생 오더에 따라 타스크의 각각의 서브타스크의 실행을 시도함으로써 연결된 서브타스크들을 더 조정하고; 소정의 서브타스크의 실행이 완료되지 않은 경우, 완료되지 않은 서브타스크에 연결된 서브타스크 대신에 다른 타스크의 실행을 시도한다.

Description

다중 처리 시스템에서 타스크를 큐잉하기 위한 시스템 및 방법
본 발명은 실행 대기 중인 타스크(task)들을 디스패치(dispatch)하도록 컴퓨터를 제어하기 위한 방법 및 장치에 관한 것으로, 특히 소프트웨어 개입(software intervention)을 최소화하면서 컴퓨터의 준비 큐(ready queue)들로부터의 타스크들의 디스패치를 조정(handling)하기 위한 방법 및 시스템에 관한 것이다.
컴퓨터로 많은 타스크들을 처리하도록 요구됨에 따라, 그러한 타스크들을 조정하기 위한 프로세싱 오버헤드(overhead)가 증대된다. 오늘날, 컴퓨터는 어느 타스크들이 수행될지 그리고 이 타스크들이 언제 수행될지를 결정하기 위해 소프트웨어 프로세스들을 채택하고 있다. 한 타스크가 완료되면 (또는, 에러 또는 자원 결핍으로 인해 완료가 불가능하다고 발견되면), 소프트웨어는 인터럽트 프로시저(interrupt procedure)를 통해 공시되고, 그 다음 소프트웨어는 다음에 취해질 동작에 대해 결정해야 한다. 인터럽트는 컴퓨터에 의해 처리되는 반면, 시스템은 배정될 새로운 작업을 대기하는 동안 아이들(idle) 상태로 될 수 있다. 새로운 작업이 일단 배정되면, 타스크 디스패치 메카니즘의 의무는 실행을 위해 타스크가 릴리스(released)되는 때를 결정하는 것이다. 그러한 많은 디스패칭 시스템에 요구되는 것은 다양한 우선 순위의 타스크들을 조정하고, 상위 우선 순위 타스크들이 하위 우선 순위 타스크들 이전에 실행되는 것을 보장하는 것이다. 이러한 기능은 보통 실행 타스크를 소프트웨어 종료시킨 다음에 새로운 상위 우선 순위 타스크를 기동함으로써 행해진다. 이러한 경우에, 소프트웨어에 요구되는 것은 현재 타스크를 인터럽트하고, 상위 우선 순위를 시작하며, 최종적으로는 인터럽트된 타스크를 다시 시작하는 것이다. 이러한 동작은 소프트웨어가 타스크 스위칭을 조정할 수 있도록 프로세서에 다수의 인터럽트들을 필요로 할 수 있다. 이들 인터럽트들을 처리하는 데 걸리는 시간은 전체 시스템 성능에 병목 현상(bottleneck)을 초래할 수 있어, 실시간 시스템에서는 매우 심각한 문제가 될 수 있다.
타스크 디스패칭 시스템은 또한, 타스크가 실행되고 있지만, 실행중인 타스크에 추가할 필요가 있는 별도의 타스크가 발생하는 상황들을 조정하도록 요구된다. 그러한 작업 추가를 구현하기 위해 통상은 2가지 방법들 중 한가지 방법이 채택된다. 제1 방법에서 요구되는 것은 완전히 어셈블될 때까지 타스크가 시작되지 않고, 일단 타스크가 실행을 시작하면, 다른 타스크는 추가될 수 없다는 것이다. 다른 방법은 새로운 작업이 추가될 수 있도록 타스크의 실행을 일시적으로 중지시키는 단계를 포함한다. 2가지 방법들에서는 타스크가 새로운 작업으로 갱신될 수 있도록, 시작시에 또는 동작 중에 타스크 실행이 지연되는 것이 요구된다.
타스크 디스패칭 메카니즘을 효율적인 방식으로 동작시키기 위해서, 종래 기술은 실행을 위한 타스크를 실행 리스트 내에 큐시키는데, 타스크는 그 다음 배정된 우선 순위에 기초하여 실행된다. 소프트웨어 개입을 방지하기 위해서, IBM System 370은 타스크 디스패칭 메카니즘 내에 "1 딥 deep)" 큐를 채택한다. 기본적으로는, 타스크 디스패치 동작을 시작하기 위해 채택된 로직 제어 블록은 이전 타스크의 제어 블록이 디스패치된 직후에 스테이지(staged)된다. 그러한 조건하에서, 스테이지된 타스크 제어 블록은 디스패치된 이전 타스크의 완료 또는 정지시에 즉시 유용하다.
노드들이 독립적인 프로세서들이고, 병렬로 동작하여 데이타 처리 동작을 실행하는 다중 노드 데이타 처리 시스템이 등장한 이후, 가능한한 소프트웨어 개입이 적게 타스크 디스패치 동작을 발생시키는 것이 중요하게 대두되고 있다. 이러한 다중 노드 데이타 처리 시스템의 효율적인 동작을 보장하기 위해서는, 어느 노드에 장애가 발생하더라도 시스템이 "충돌(crash)"하지 않도록 시스템 아키텍쳐에 의해 전체적인 제어가 분산되는(distributed) 것을 보장해야 한다. 이러한 분산 아키텍쳐에서는 당연, 노드 사이에 상당한 데이타 통신 레벨이 필요하게 된다. 이와 같은 데이타 통신들이 노드 프로세서의 불필요한 로딩을 피하는 방식으로 조정되지 않으면, 다중 노드 시스템 전체의 데이타 처리 효율이 영향을 받는다.
따라서, 본 발명의 목적은 데이타 처리 시스템용의 개량된 타스크 디스패칭 방법 및 장치를 제공하는 것이다.
본 발명의 다른 목적은 타스크 디스패칭 프로시저 내에 소프트웨어 및 중앙프로세서가 가능한 개입하지 않은 개량된 타스크 디스패칭 방법 및 장치를 제공하는 것이다.
본 발명의 또 다른 목적은 실행을 지연시키지 않고도, 실행 중의 타스크에 작업단위(작업 유닛)들을 추가시킬 수 있는 개량된 타스크 디스패칭 방법 및 장치를 제공하는 것이다.
본 발명의 또 다른 목적은 최상위 우선 순위로 큐된 타스크(highest priority queued task)가 먼저 실행되도록 보장하는 개량된 타스크 디스패칭 방법 및 장치를 제공하는 것이다.
프로시저는 다중 노드 데이타 처리 시스템에서 우선 순위가 부여된 타스크들의 실행을 제어한다. 데이타 처리 시스템은 소프트웨어로 제어되는 프로세서(software- controlled processor)를 갖는 노드, 및 하드웨어로 구성된 큐 제어기(hardware- configured queue-controller)를 포함한다. 큐 제어기는 우선 순위가 부여된 큐들을 다수개 포함하며, 각각의 큐는 큐에 배정된 우선 순위(priority order)와 동등한 우선 순위가 배정되어 있는 타스크들을 리스트시킨다. 큐 제어기는 다음 단계들을 포함하는 방법을 수행함으로써, 실행을 위한 제1 타스크를 큐시키기 위해서 프로세서 발생 오더(processor generated order)에 응한다: 상기 제1 타스크의 우선 순위와 같은 우선 순위가 배정되어 있는 제1 큐 상에 상기 제1 타스크를 리스트시키는 단계; 상위 우선 순위가 배정되어 있는 큐 상에 제2 타스크가 리스트되는 경우, 제1 타스크의 실행 전에 제2 타스크의 실행을 시도하는 단계; 상기 제1 큐보다 더 상위의 우선 순위가 배정되어 있는 큐 상에 아무 타스크도 리스트되지 않은 경우, 제1 큐 수단 내의 제1 리스트된 타스크의 실행을 시도하는 단계; 및 타스크 실행의 완료 또는 타스크 실행의 정지시에, 상위 우선 순위가 배정되어 있는 큐 상에 타스크를 배치하도록 다른 오더가 발행되지 않는 경우에만, 제1 큐 상의 또 다른 타스크의 실행을 시도하는 단계. 이 방법은 프로세서 발생 오더에 따라 타스크의 각각의 서브타스크의 실행을 시도함으로써 연결된 서브타스크들을 더 조정하고; 소정의 서브타스크의 실행이 완료되지 않은 경우, 완료되지 않은 서브타스크에 연결된 서브타스크 대신에 다른 타스크의 실행을 시도한다.
제1도는 노드 데이타 처리 어레이를 도시하는 블록도.
제2도는 제1도의 시스템에 채택된 예시적 노드의 성분들을 도시하는 블록도.
제3a도는 제2도의 노드에 포함된 제어 메모리 인터페이스 블록의 블록도.
제3b도는 제3a도에 도시된 출력 포트 상태 로직 블록 내에 포함된 복수의 우선 순위 큐 레지스터 구조의 개략도.
제4도는 제2도의 노드의 데이타 버퍼 인터페이스 블록의 상세 블록도.
제5a도는 데이타 메시지들이 컴파일 및 디스패치되도록 하는 하드웨어 및 소프트웨어 제어 블록을 도시하는 도면.
제5b도는 제어 메시지들이 컴파일 및 디스패치되도록 하는 하드웨어 및 소프트웨어 제어 블록을 도시하는 도면.
제5c도는 데이타 메시지들이 수신 및 저장되도록 하는 하드웨어 및 소프트웨어 제어 블록을 도시하는 도면.
제5d도는 제어 메시지들이 수신 및 저장되도록 하는 하드웨어 및 소프트웨어 제어 블록을 도시하는 도면.
제6도 내지 제8도는 제2도의 제어 메모리 인터페이스 블록 또는 데이타 버퍼 인터페이스 블록 내의 타스크의 조정을 도시하는 논리 흐름도.
제9도는 실행 프로세스 내에 타스크가 있는 동안 서브타스크를 타스크에 추가하는 프로시저를 도시하는 논리 흐름도.
〈도면의 주요부분에 대한 부호의 설명〉
10 : 다중 노드 네트워크 12, 14, 16, 18, 38, 40 : 디스크 드라이브
20 : 내부 통신 네트워크 22 : 노드 프로세서
24 : 제어 메시지 라인 26 : 데이타 메시지 라인
27 : 제어 메모리 인터페이스 모듈
28, 32 : DRAM 30 : 데이타 버퍼 인퍼페이스 모듈
34, 36 : 디바이스 인터페이스 50 : 스위치
52 : 프로세서 버스 인터페이스 54 : 오더 실행 유닛
56, 92 : DRAM 제어기 58, 94 : 로컬 제어 버스 인터페이스
60, 98 : 출력 포트 상태 로직 62, 100 : 입력 포트 상태 로직
70 : 큐 82 : MSG 실행 유닛
90 : 루팅 스위치 96 : 데이타 버스 인터페이스
이하, 첨부된 도면을 참조하여 본 발명을 상세히 설명한다.
도1의 블록도는 디스크 드라이브 제어기 어레이로서 구성된 다중 노드 네트워크(10)를 도시한다. 노드 A 및 D는 데이타 저장 노드들인데, 이들은 결합형 디스크 드라이브(12, 14 및 16, 18)에 각각 접속된다. 한 쌍의 통신 인터페이스 노드 B및 C는 다중 노드 네트워크의 데이타 저장 장소(data storage facility)들을 이용할 수 있는 결합형 호스트 프로세서들에 입/출력 기능들을 제공한다. 캐시 노드 E는 네트워크(10)와 1개 이상의 호스트 프로세서들과의 사이에서의 데이타 전송 기능들의 입력 및 출력 양쪽에 임시 저장 장소를 제공한다. 다중 노드 네트워크(10)는 또 다른 노드들을 추가함으로써 확장가능하며, 이 모든 노드들은 내부 통신 네트워크(20)에 의해 상호 접속된다.
노드 A-E 각각은 도2에 도시된 공통 노드 배치에 의해 구성된다. 각각의 노드는 노드의 전체적인 기능들을 제어하는 노드 프로세서(22)를 포함한다. 각각의 노드는 또한 제어 메시지를 수신, 저장 및 디스패치시키기 위한 제어 메시지 "라인"(24), 및 데이타 메시지를 수신, 저장 및 디스패치시키기 위한 데이타 메시지 "라인"(26)을 포함한다. 제어 메시지 라인(24)은 제어 메모리 인터페이스 모듈(27), 및 제어 메시지 메모리로서의 역할을 하는 동적 랜덤 액세스 메모리(DRAM)(28)를 포함한다. 각각의 데이타 메시지 라인(26)은 데이타 버퍼 인터페이스 모듈(30) 및 데이타 메시지용 DRAM(32)을 포함한다. 데이타 버퍼 인터페이스 모듈(30)은 다수의 디바이스 인터페이스(34, 36 등등)에 접속되는데, 이들은 차례로 관련 디스크 드라이브(38, 40 등등)에 통신을 제공한다. 제어 메모리 인터페이스(26), 프로세서(22) 등으로부터 발생되는 제어 메시지에 의해 다양한 노드 동작의 제어가 가능해진다.
후술하는 바로부터 알 수 있듯이, 다중 노드 네트워크(10)의 아키텍쳐는 디스크 드라이브들로부터/로 특징적으로 발생하는 긴 데이타 메시지, 및 네트워크와 개별 노드들 양쪽의 동작을 유효하게 하는데 필요한 다수의 짧은 제어 메시지 둘다를 효율적으로 조정하도록 구성된다. 각각의 노드 내에서, 개개의 제어 및 메시지 라인들은 제어 및 데이타 메시지들의 분리(segregation)를 가능하게 하고, 그들의 독립적인 프로세싱, 및 각각의 노드 내에 제공되는 입/출력 스위치(42)로의 전송을 허용한다. I/O 스위치(42)는 1개 이상의 입력 링크(44)들 상에 도달하며 다른 노드에 대해 예정되는 메시지들을 독립적으로 스위치시키게 하는 장치를 포함한다. 노드 내에 존재하는 통신 대역폭의 최소한 2배를 각각의 노드에 제공하기 위해서, 각각의 노드에는 라인들이 존재하는 것보다 최소한 2배만큼의 통신 링크(44)들이 양호하게 제공된다.
통신 링크(44)들 각각은 또 다른 노드에 접속되므로, 일어날 수 있는 경우에 따라, 메시지를 접속된 노드에 직접 루팅시키거나, 접속된 노드를 통해 다른 노드에 루팅시킨다. I/O 스위치(42)는 직접 메시지를 소정의 통신 링크(44)로부터 소정의 다른 통신 링크(44)로 연결시킬 수 있다. I/O 스위치(42)는 또한, 다양한 링크들의 주어진 현재 상태에서, 사용하기에 가장 좋은 통신 링크(44)를 동적으로 선택할 수 있다. 통신 링크(44)들 각각은 독립적이며, 데이타 메시지 또는 제어 메시지 어느 것에 대해서도 이용가능하다.
노드 구조는 배분된 네트워크를, 모든 메시지 스위칭 기능들이 데이타 처리 시스템 전체에 걸쳐서 배분되고 중앙 스위칭 제어의 필요성을 제거하도록 구성한다. 이것은 제어 및 데이타 메시지들이 분리되고 거의 독립적으로 조정되는 노드 내에서만 가능하다. 각각의 I/O 스위치(42)는 제어 및 데이타 메시지들을 동일한 방식으로 조정한다. 또한, 다중 상호 노드 링크(multiple inter nodal link)들은 노드 고장이 1개 또는 거의 없는 경우에 견고성(robustness) 및 용장성(redundancy)이 높은 레벨인 시스템을 제공한다. 또한, I/O 스위치(42)에 대한 상세한 설명은 미국 특허출원 번호 제____, (사건 처리 번호 SA994-117)에 개시되어 있는데, 이 개시된 내용은 본 명세서에서 참고로서 인용된다.
도3a는 제어 메모리 인터페이스 모듈(27)을 더 상세하게 도시한다. 스위치(50)는 제어 메모리 인터페이스 모듈(27) 내의 다양한 기능 요소(functionality)들 간의 통신을 가능하게 한다. 이들은 프로세서 버스 인터페이스(52), 오더 실행 유닛(54), DRAM 제어기(56), 로컬 제어 버스 인터페이스(58), 출력 포트 상태 로직(60) 및 입력 포트 상태 로직(62)이다. DRAM 제어기(56)는 오퍼런드(operand) 메모리 버스(64)를 통해 랜덤 액세스 메모리(28)를 연결할 수 있게 한다.
프로세서 버스 인터페이스(52)는 노드 프로세서(22)에 대한 인터페이스이고, 메모리 페치(fetch) 및 저장을 유효하게 하는 경로를 제공한다. 오더 실행 유닛(54)은 데이타를 번역 및 페치하여 이를 특정 메모리-레지스터들에 실행될 오더로서 저장한다. 전부는 아니지만 일부 오더들은 이 유닛 내에서 실행되어, 노드 프로세서(22)를 특별히 포함하지 않고도, 어느 특정 오더들의 신속한 처리(조정)가 가능하게 한다.
로컬 제어 버스 인터페이스(58)는 노드 프로세서(22)와 데이타 버퍼 인터페이스 모듈(30) 사이(도1), 및 데이타 버퍼 인터페이스 모듈(30)에 접속되는 여러 디바이스 인터페이스(34, 36, ....)들 사이의 액세스가 가능하게 한다. 노드 프로세서(22)는 로컬 제어 버스 인터페이스(58)를 통해 다수의 기능들, 즉 데이타 메모리(32)로의 페치 및 저장; 1개 이상의 디바이스 인터페이스(34, 36)로 오더의 발행; 제어 메시지 라인(24)으로부터 데이타 메시지 라인(26)으로 및 이와 반대로의 데이타 전송 등을 수행할 수 있다.
출력 포트 상태 로직(60)은 다양한 레벨의 우선 순위를 갖는 메시지가 큐되어, 전송을 대기하고 있는 다수의 준비 큐(70)들을 포함한다. 도3b에서, 우선 순위 #1 준비 큐(72) 및 우선 순위 #2 준비 큐(74)가 도시된다. 각각의 준비 큐는 선입선출(FIFO) 큐이며, 공통 우선 순위가 배정되어 있는 디스패치될 타스크가 리스트되어 있는 다수의 레지스터(76), 및 큐의 첫 번째 리스트된 타스크 및 최종 리스트된 타스크의 식별자들이 저장되어 있는 한 쌍의 레지스터(78 및 80)들을 포함한다. 각각의 타스크는 테이블(즉, 출력 포트 테이블(OPT)) 내에 저장된 로직 데이타 구조인 출력 포트 테이블 엔트리(OPTE)에 의해 표시된다. 각각의 로직 데이타 구조는 이후, "제어 블록"으로 불린다. 각각의 OPTE는 특정 타스크의 구체적 특징을 더 정의하고 있는 것으로부터 연결된 또 다른 제어 블록을 포함한다.
본 발명을 구현하는데 채택된 각각의 제어 블록은 후에 상세히 설명된다. 또한, 프로시저가 실행을 위해 대기중인 준비 큐(70) 상에 OPTE들을 큐시키고, 이들이 디스패치 프로세스 중에 있는 동안 서브타스크들을 OPTE들에 동적으로 연결시키는 것에 대해서 설명된다. 이후에 명백히 알 수 있듯이, 출력 포트 상태 로직(60)은 다음의 하위 우선 순위 준비 큐로 진행하기 전에, 각각의 메시지를 최상위 우선 순위 준비 큐 내로 전송하는 것을 시도한다.
입력 포트 상태 로직(62)은 제어 메시지 라인 인터페이스(80)로부터 제어 메시지들을 수신하여, 이들을 간략히 버퍼시킨다. 이는 등급에 따라 제어 메시지를 디코드하고(즉, 하드웨어 실행되거나 프로세서 실행됨), 하드웨어 실행된 메시지들은 이들이 실행되는 메시지 실행 유닛(82)으로 보내진다. 프로세서 실행된 메시지들은 수신된 제어 메시지 헤더 내의 코드에 의해 요구된 기능에 상당하는 로직 입력 데이타 구조의 DRAM(28) 내에서 메모리 어드레스 내에 수신된다. 잠시 후, 기능이 실행된다.
도4를 참조하면, 데이타 버퍼 인터페이스 모듈(30)에 대해서 상세히 설명된다. 구조적으로, 이는 제어 메모리 인터페이스 모듈(27)과 유사하다. 데이타 버퍼 인터페이스 모듈(30)은 접속된 여러 기능 요소들 간의 통신이 가능하도록 하는 스위치(90) 주위에 구성된다. DRAM 제어기(92)는 데이타 메모리(32)에 대한 액세스를 가능하게 한다. 로컬 제어 버스 인터페이스(94)는 제어 메모리 인터페이스 모듈(27)에 상호 접속되어, 제어 메시지들의 수신 및 전송을 가능하게 한다. 데이타 버스 인터페이스(96)는 디바이스 인터페이스 모듈(34, 36)과 이들 각각 접속된 디스크 드라이브들로 및 이들로부터의 액세스를 가능하게 한다. 출력 포트 상태 로직 모듈(98) 및 입력 포트 상태 로직 모듈(100)은 제어 메모리 인터페이스 모듈(27)의 출력/입력 포트 상태 로직 모듈들과 상당히 유사한 형태로 구성되지만, 내부의 프로세스된 데이타 구조는 좀 더 복잡하다. 오더 실행 유닛(102)은 데이타 메시지 라인 기능과 관련된 하드웨어 실행 메시지들을 실행시킨다. 데이타 라인 인터페이스(104)는 I/O 스위치(42)와의 통신을 가능하게 한다.
상기 기술된 제어 및 데이타 메시지 라인 구조에 의해 제어 메시지 및 데이타 메시지들이 거의 독립적으로 조정될 수 있다. 이것에 의해, 제어 메시지들이 동시 발생 형태로 처리되어 전송되는 동안, 긴 데이타 메시지를 큐 및 전송할 수 있다. 그 결과, 긴 데이타 메시지의 프로세싱을 제어 메시지를 위해 미리 행할 필요가 없다.
도2의 노드 내에서의 동작들은 소프트웨어에 의해 생성되는 제어 블록(software-generated control blocks)들에 의해 제어된다. 소정의 판독 또는 기입 동작에 있어서, 복수의 제어 블록들이 노드 프로세서(22)와 관련하여 소프트웨어 작업에 의해 배정되어, 요구된 동작에 따라 노드 내의 하드웨어의 셋업이 가능해진다. 소정의 단일 판독 또는 기입에 있어서, 소프트웨어는 복수의 제어 블록들을 배정한다. 각각의 제어 블록은 판독 또는 기입 동작용 하드웨어에 의해 셋업 동작을 인에이블시키는데 필요한 적어도 1개의 파라메터를 포함한다.
제어 블록 데이타 구조에 의해, 노드는, 또 다른 노드, 디스크 드라이브 또는 호스트 프로세서 중 어느 하나에 전송될 메시지를 어셈블(assemble)할 수 있다. 메시지는 1개의 제어 블록이 다음 제어 블록에 대한 포인터(pointer)를 갖도록 "연결된(chained)" 복수의 제어 블록들을 사용하여 어셈블될 수 있다. 제어 블록들은 또한, 메지지용 데이타의 어셈블리를 인에이블시키는 데이타 처리 동작의 발생; 데이타가 발견되는 곳; 구조의 지정(designation); 메시지를 포함하는 데이타를 보유하기 위한 버퍼 저장 영역의 식별(identification)[미결정 디스패치(pending dispatch)]; 및 데이타가 디스패치될 곳을 식별하는 또 다른 데이타를 나타낸다. 본 발명은 입력 제어 블록(ICB)들과 출력 제어 블록(OCB)들을 사용한다. 각각의 ICB 및 OCB는 메시지를 각각 포함한다. OCB (및 ICB)들은 "연결"될 수 있고, 이로써 연결된 블록들의 시퀀스를 트랙(track)시키는 시퀀스 종속성(sequence dependency)을 갖는 일련의 메지지들을 정의한다.
소프트웨어 제어 블록 데이타 구조
도2의 노드 동작을 제어하기 위해 채택된 제어 블록들에 대해서 설명된다.
도5a-도5d에서, 결합된 하드웨어/소프트웨어 블록도들은 데이타 메시지 및 제어 메시지 둘다를 디스패치 및 수신하도록 할 수 있는 제어 블록을 도시한다.
도5a 및 도5c를 참조하면, 각각의 노드는 제어 블록의 데이타 출력 "라인" 및 데이타 입력 "라인"을 포함하는데, 이들은 각각 나가고 들어오는 데이타 메시지들을 조정한다. 도5b 및 도5d는 제어 메시지들을 조정하기 위한 제어 출력 라인 및 제어 입력 라인을 각각 도시한다.
출력 라인 제어 블록(제어 및 데이타 메시지)
도5a의 데이타 출력 라인은 하드웨어 출력 포트(114)에 의해 피드되는(feed)출력 회로(110)를 포함한다. 등가의 하드웨어 입력 포트(116)(도5c)는 입력 회로(112)를 통해 데이타 메시지를 수신한다. 하드웨어 출력 포트(114)는 외부-경계(out-bound) 데이타 메시지들의 프로세싱 및 저장을 관리하는 버퍼 인터페이스(34)(도2 참조) 내의 물리적 엔터티(physical entity)이다. 하드웨어 출력 포트(114)는 다중 우선 순위 준비 큐들을 구성하며, 이후 기술될 제어 블록 데이타 구조로부터 제어 데이타를 수신하는 한 세트의 관련 하드웨어 레지스터들(도5a, 도5c에 도시안됨)을 포함한다. 필수 제어 데이타가 준비 큐 내에 삽입되면, 레지스터 내에 존재하는 제어 데이타를 사용하여 특정 데이타 처리 동작을 실행할 수 있다(예를 들면, 메시지 어셈블리 및 전송).
하드웨어 출력 포트(114)는 출력 포트 테이블(OPT)(118)과 관련되어 있는데,
이는 하드웨어 출력 포트(114)에 배정된 "로직 포트"들을 리스트시킨다. 각각의 로직 포트는 출력 포트 테이블 엔트리(OPTE)에 의해 정의되는데, 데이타 구조의 일부는 하기 테이블 1에서 도시된다:
출력 포트 테이블 엔트리(OPTE)
- 체인의 선두 OCB (FIRST OCB OF CHAIN)
- 체인의 최종 OCB (LAST OCB OF CHAIN)
- 플래그(flag) [스테이터스(status) 저장, 준비]
- 다음 OPTE
- 입력 물리적 포트
- 입력 로직 포트
테이블 1
OPTE(120)은 데이타 처리 동작을 시작하는데 필요한 제1 출력 제어 블록(OCB)의 지정, 및 데이타 처리 동작을 종료하는 최종 출력 제어 블록(OCB)의 지정을 포함한다. 중간(Intermediate) OCB들은 개별 OCB 제어 블록 내에 포함된 값들을 변경함으로써 결정된다. OCB들에 의해 데이타의 위치가 데이타 처리 동작에 영향을 받도록 할 수 있다. OPTE(120)은 인터럽트 조건, 스테이터스 상태, 응답 상태 등을 정의하는 플래그들을 포함한다. 그러한 플래그들 중 하나는 설정될 때, OPTE가 디스패치를 위한 준비 큐 상에 배치된 것을 나타내는 준비 플래그이다. 저장된 스테이터스 플래그는 설정될 때, OPTE의 디스패치가 인터럽트된 것과, 최종 디스패치 동작이 종료되는 곳을 디스패치 동작이 나중에 픽업(pick up)하도록 스테이터스가 저장된 것을 나타낸다. OPTE(120) 또한, 하드웨어 입력 데이타 포트(116)(도5c) 및 로직 입력 포트 둘다에 대한 포인터들을 포함한다. 본 분야에 숙련된 자라면, 소프트웨어 발생 제어 메시지에 의해, 노드가 OPTE(120)내의 여러 엔트리들, 및 그로부터 연결된 모든 OCB들을 셋업할 수 있음을 인식할 것이다.
소프트웨어가 노드 프로세서(22)로 하여금 예를 들어, 메시지를 다른 노드에 컴파일 및 전송할 수 있게 타스크용 출력 라인을 설정하도록 하면, 타스크는 테이블 내에 타스크의 OPTE 제어 블록을 삽입함으로써 출력 포트 테이블(118)(도5a) 내에 입력된다. 상술한 바와 같이, OPTE는 전체 타스크가 컴파일될 때까지 0으로 설정되는 준비 플래그를 포함하고, 준비 플래그가 1로 설정될 때에 OPTE는 준비 큐 상에 리스트된다. 그 때까지, 타스크는 디스패치가 가능하지 않다. 따라서, OPT(118)는 잠재적으로, 여러 스테이지들의 어셈블리 내에 있는 많은 타스크들을 포함하는데, 그 중 일부는 디스패치가 가능하고, 일부는 인터럽트될 수 있으며, 나머지는 편집(compilation) 처리에 있게 된다.
1개 이상의 출력 제어 블록(OCB)(122)들은 각각의 OPTE(120)로부터 연결되는데, 이들은 또 다른 연결된 제어 블록과 결합하여, 디스패치될 데이타가 어디에 있는지를 정의한다. OCB(122)(도5a 참조)는 또 다른 정보를 포함하고, 그 데이타 구조는 하기 테이블 2에서 도시된다:
출력 제어 블록(OCB)
- 다음 OCB 포인터
- 시작 TDVE [START TDVE]
- 종료 TDVE [END TDVE]
- 플래그
- 목적지 어드레스(destination address)
- 목적지에서의 로직 입력 포트 어드레스
- 메시지 데이타
- TDV/BCB
테이블 2
OCB(122) 데이타 구조는 OPTE를 작성하는 타스크들 또는 작업 유닛들의 연결을 구현하는 다음 OCB에 대한 포인터를 포함한다. OCB(122)는 또한, 트랙 디스크립터 벡터(track descriptor vector; TDV) 테이블(124)에 대한 포인터들을 포함한다. 이들 포인터들은 TDV(124) 내에서 시작 트랙 디스크립터 벡터 엔트리(TDVE)(126) 및 종료 TDVE(128) 둘다를 지적한다. 후술하는 바에서 알 수 있듯이, 리스트된 TDVE들은 1개 이상의 데이타 레코드들이 발견되는 곳의 디스크 드라이브 메모리 영역을 식별할 수 있도록 하는 제어 블록들이며, 또한 추가 데이타는 표시된 버퍼 영역에서 발견된다. TDVE 제어 블록에 대한 상세한 설명은 후술된다.
OCB(122)는 또한, 데이타가 향할 목적지에서 데이타 및 로직 입력 포트 번호에 대한 목적지 어드레스를 포함한다. OCB(122)는 또 다른 연결된 데이타를 필요로 하지 않고도, 제어 메시지 데이타를 추가로 구비하여 제어 정보가 목적지 어드레스에 전송되도록 할 수도 있다. 최근에, OCB는 타스크의 일부를 포함하는 데이타가 버퍼 메모리 내에 저장되는 경우, 데이타의 버퍼 제어 블록(BCB)(130)의 어드레스를 포함한다.
앞서 기술한 바와 같이, OCB는 디스크 드라이브 트랙 내의 데이타 위치 검출을 가능하게 하는 정보를 포함한다. 그 정보는 다수의 트랙 디스크립터 벡터 엔트리(126-128)들을 포함하는 트랙 디스크립터 벡터(TDV) 테이블(124)을 특정한다. 따라서, TDV 테이블(124)은 복수의 물리적 디스크 트랙들을 포함할 수 있는 로직디스크 트랙을 한정한다. TDVE(126, 128)들은 디스크 드라이브 상의 물리적 디스크 레코드의 포맷을 기술하는 제어 블록들이다. 시작 TDVE 포인터(126) 이외에도, OCB(122)는 OCB 동작에 대한 모든 레코드들이 OCB(122) 내의 또는 이로부터 액세스가능한 데이타에 의해 식별되도록 종료 TDVE 포인터(128)도 포함한다.
트랙 디스크립터 벡터 요소(TDVE)
- 필드 1 데이타 ID (카운트 등)
- 필드 2 길이 (키 등)
- 필드 3 길이 (데이타 등)
- 플래그
- 제1 BCB
- 레코드 번호
테이블 3
디스크 트랙 상의 레코드들이 공지된 "카운트, 키(key), 데이타" 구조를 사용하여 배열된다고 가정하면, TDVE는 카운트, 키 및 데이타 필드들 각각에 대한 필드 디스크립터를 포함하게 된다. 카운트 키 필드는 레코드의 필드 1에서 발생하는 레코드 카운트 번호를 포함하게 되고; 필드 2 값은 레코드 명칭(즉, 키)의 길이를 포함하게 되며; 필드 3 값은 디스크 레코드의 데이타부 내의 데이타 길이를 나타낸다.
다른 제어 블록에서와 같이 [상기하면, 각각의 TDVE(126, 128 등)는 제어 블록], 인터럽트 상태, 제어 상태 등을 정의하는 플래그들이 포함된다. TDVE는 또한, 제1 버퍼 제어 블록(BCB)(130)에 대한 포인터를 포함한다. BCB(130)는 타스크 전체의 일부로서 디스패치될 메시지의 부분인 데이타를 보유한 물리적 버퍼 공간을 식별할 수 있도록 하는 데치타를 포함한다. 도5a에 도시된 바와 같이, BCB들은 연결될 수 있다. 따라서, 각각의 TDVE는 제1 BCB(130)에 대한 포인터를 포함할 수 있다. BCB 데이타 구조는 하기 테이블 4에서 도시된다:
버퍼 제어 블록
- 다음 BCB 포인터
- 버퍼 내의 데이타 바이트
- 버퍼 사이즈
- 플래그
- 버퍼 어드레스
테이블 4
BCB(130) 데이타 구조는 다음 BCB에 대한 포인터로부터 시작되고 (소정의 경우), 복수의 버퍼 위치들이 타스크-관련(task-related) 데이타에 할당되는 것이 실현된다. BCB 제어 블록 내의 다음 엔트리는 물리적 버퍼 공간 내에 저장된 데이타 바이트들의 수, 및 실제 버퍼 사이즈를 정의한다. 또한, 플래그들은 데이타가 상주하는 버퍼(예를 들면, 버퍼 132)의 물리적 어드레스와 마찬가지로 BCB 내에 포함되어 있는 다양한 제어 상태들을 나타낸다.
상대적 간략성으로 인한 제어 메시지(도5b 참조)의 경우에, TDV 테이블 및 이에 포함된 TDVE들의 사용은 불필요하다. 그 결과, OCB(122)는 버퍼 영역(132)내에 저장되어 있는 제어 메시지의 처음 부분을 정의하는 BCB(130)에 대한 포인터를 포함한다. 추가 BCB(134, 136)들은 BCB(130)으로부터 연결될 수 있다.
입력 라인 제어 블록(데이타 및 제어 메시지)
노드 내에 채택된 제어 블록 데이타 구조들은 또한, 입력 포트 테이블(IPT), 입력 포트 테이블 엔트리(IPTE), 및 입력 제어 블록(ICB)을 포함한다. 이들 제어 블록들은 다른 노드들로부터 수신된 입력 타스크들을 조정하기 위해 채택된다. 도5c에서, IPT(140)는 여러 입력 타스크들을 정의하는 다수의 IPTE(142)들을 포함한다. 각각의 IPTE는 달성될 작업의 유닛을 정의하는 ICB(144)에 대한 포인터를 포함한다. 각각의 ICB(144)는 상기한 바와 같이, ICB(144)에 의해 정의된 작업 유닛의 성능에 있어서 사용될 디스크 메모리의 영역을 한정하는 트랙 디스크립터 벡터(TDV) 테이블(146)에 대한 포인터를 포함한다. ICB(144)는 또한, 초기 트랙 디스크립터 벡터 요소(TDVE)(148) 및 최종 TDVE(150)의 지표(indication)를 포함한다. 상술한 바와 같이, TDVE들은 이것으로부터 1개 이상의 BCB들을 연결시킬 수 있다.
각각의 IPTE는 하기 테이블 5에 도시된 바와 같은 데이타 구조를 포함한다:
입력 포트 테이블 엔트리(IPTE)
- 선두 ICB
- 최종 ICB
- 플래그
- 출력 하드웨어 포트에 대한 포인터
- 출력 로직 포트에 대한 포인터
테이블 5
IPTE는 데이타 처리 동작을 시작하는데 필요한 선두 입력 제어 블록(ICB)의 지정, 및 동작을 완료하는 최종 ICB의 지표를 포함한다. 중간 ICB들은 ICB 제어 블록 내에 포함된 포인터들을 연결시킴으로써 결정된다. 입력 데이타 메시지가 하드웨어 입력 포트(116)에 의해 수신되면, 일련의 ICB(144)가 할당되어 요구된 타스크의 실행이 가능해진다. ICB의 관련 부분들의 데이타 구조는 하기 테이블 6에 도시된다:
입력 제어 블록(ICB)
- 다음 ICB 포인터
- 플래그
- 섹터 길이
- 섹터 카운트
- 시작 TDVE
- 종료 TDVE
- TDV/BCB 포인터
테이블 6
각각의 ICB(144)는 다음 ICB 제어 블록의 어드레스 값인 다음 ICB 포인터를 포함한다 (연속 ICB들간의 연결 동작을 인에이블시키기 위함). 제1 ICB(144)에 대한 포인터가 IPTE(142) 내에 포함되면, 그 포인터를 사용함으로써, IPTE(142)와 관련된 모든 ICB들이 결정가능하다(ICB 대 ICB 간의 포인터들과 결합하여). TDVE 포인터 데이타에 의해, 입력 데이타가 저장되거나, 인입(incoming) 타스크에 의해 요구된 데이타 처리 동작으로부터 데이타가 유도되는 디스크 드라이브 트랙들의 식별이 가능해진다.
도5d에서, 제어 메시지용으로 채택된 로직 제어 블록들이 도시된다. OPTE들 및 OCB들과 관련된 제어 메시지들에 대해서, 제어 메시지의 간략성 때문에, TDVE 제어 블록들은 필요하지 않고, 각각의 ICB는 관련된 1개 이상의 BCB(152, 154 및 156)들을 직접 지적할 수 있게 된다.
오더(ORDERS)
상술한 바와 같이, 노드 프로세서(22)(도2)는 소프트웨어 제어되고, 차례대로 노드의 전체 동작들을 제어한다. 노드 내에는, 거의 독립적으로 동작하며 노드 프로세서(22)의 보조 제어 기능들을 경감하는 특정 하드웨어 기능들이 있다. 도3a에서 도시된 바와 같이, 출력 포트 상태 로직(60) 및 입력 포트 상태 로직(62)은 둘 다 출력 및 입력 기능들을 각각 제어하는 상태 머신(state machine)이다.
출력 포트 상태 로직(60)은 전체 데이타 처리 시스템의 동작에 대해서 요구되는 바와 같이, 우선 순위가 부여된 다수의 큐(70)들을 제어하고, 타스크를 우선 순위대로 출력할 수 있게 한다. 출력 포트 상태 로직(60)의 동작은 완결을 위해서는 다수의 머신 사이클들을 포함할 수 있고, 노드 내에서 진행중인 다른 액티브(active) 프로세스들과 자원에 대한 경쟁을 야기할 수 있다. 이러한 경쟁을 방지하기 위해서, 노드 프로세서(22)는 하드웨어 구조 내에서 설비(facility)들의 자동 조작을 초기화시키는 오더들을 발행하도록 인에이블되며, 기본적으로는 "오더된(ordered)" 프로시저가 진행되는 동안 하드웨어 설비에 대한 소정의 액세스를 록-아웃(lock-out)시킨다.
소프트웨어가 오더 "출력 포트 준비"를 발행하면, OPTE가 큐되고 디스패치(또는 다른 OPTE의 디스패치)가 시도될 때까지, 소프트웨어는 출력 포트 상태 로직(60)을 액세스하는 것이 방지된다. 마찬가지로, 소프트웨어는 "체인에 ICB/OCB의 추가(Add ICB/OCB to Chain)" 오더를 발행할 수 있다. 그러한 오더는 예를 들어, 디스패치를 위해 준비된 OCB를 비-디스패치된 OCB에 연결되도록 할 수 있다. 여기에서, 다시 말하면, 소프트웨어는 연결될 OCB와 관련된 소정의 데이타를 변경시키는 것이 방지된다.
준비 큐에 타스크의 추가
도6 내지 도8 및 도시된 논리 흐름도를 참조하여, 출력 포트 준비 큐에 타스크를 추가하기 위한 프로시저를 설명한다. 초기에(박스 200), 소프트웨어는 노드 프로세서(22)가 소정의 타스크, 즉 OPTE A에 대한 준비 출력 포트 오더를 발행하게 한다. 이러한 오더의 수신에 응답하여, 출력 포트 상태 로직(60)(도3a)은 소정의 OPTE들이 준비 큐 상에 리스트되는 경우를 결정한다(판정 박스 202). 리스트되지 않았다면, OPTE A 타스크는 즉시 실행된다(박스 204). OPTE가 준비 큐 상에 리스트되었다면, OPTE A가 즉시 실행될 수 없음을 알 수 있다.
초기에, 출력 포트 상태 로직(60)은 OPTE A 제어 블록 내의 준비 플래그가 1로 설정되는 지를 결정한다. 1로 설정되었다면, OPTE A가 이미 준비 큐 상에 배치되었고 프로시저가 존재함을 의미한다(버블 208). OPTE A 준비 플래그가 1로 설정되지 않으면, 출력 포트 상태 로직(60)은 OPTE A의 우선 순위와 동등한 배정된 우선 순위를 나타내는 준비 큐의 최초/최종 레지스터들을 검사한다(박스 210). 검사 프로세스(check process)는 초기에 최초 레지스터 값이 0과 같은 지를 결정한다(판정 박스 212). 0과 같으면, 이는 준비 큐 상에 큐된 다른 OPTE들이 없으며, OPTE A가 준비 큐 상에 리스트될 최초 타스크임을 의미한다. 이런한 경우에, OPTE A의 어드레스는 준비 큐의 제1 및 최종 레지스터 둘다에 기입된다(박스 214). 부가적으로, "0"이 OPTE A 제어 블록의 다음 OPTE 필드 내에 기입되며 - 이는 OPTE A 제어 블록으로부터 연결된 다른 OPTE들이 없음을 나타낸다(박스 216).
판단 박스(212)에 도시된 바와 같이, 준비 큐의 최초 레지스터 내의 값이 0과 다르면, 적어도 1개의 다른 OPTE가 준비 큐 상에 위치된다. 이 경우, OPTE A 어드레스가 큐의 최종 레지스터 내에 기입되고, OPTE A 제어 블록의 어드레스는 준비 큐 상에 리스트된 최종 OPTE의 다음 OPTE 필드 내에 기입된다(박스 220). OPTE A가 이제 준비 큐 상에 리스트되기 때문에, 그 사실은 OPTE A 내의 준비 플래그를 1과 동등하게 설정함으로써 표시된다(박스 222, 도7).
이 단계에서, 출력 포트 상태 로직(60)은 OPTE가 현재 운용(running)(즉, 실행)중인 지를 결정하도록 진행된다(판정 박스 224). 만약, 실행중이지 않으면, 출력포트 상태 로직(60)은 최상위 우선 순위 준비 큐의 헤드에 있는 OPTE의 실행을 시도한다(박스 226). 주지해야 할 것은, 그러한 OPTE는 OPTE A일 수는 없지만, OPTE A가 리스트되어 있는 준비 큐보다 상위의 우선 순위를 나타내는 소정의 준비 큐의 상부에 도달한 몇몇 다른 OPTE일 수 있다는 것이다. 이는 항상 하위 우선 순위 타스크를 희생시켜, 상위 우선 순위 타스크가 우선함을 보장한다. 도1에 도시된 시스템에서, 그러한 상위 우선 순위 타스크들은 일반적으로, 짧은 메시지 길이를 나타내지만, 네트워크의 적절한 기능성에 극히 중대한 제어 기능들을 포함한다. 따라서, 그러한 제어 기능들은 상위 우선 순위로 디스패치되고, 하위 우선 순위의 OPTE를 큐시키는 것 때문에 지연되지 않는다.
현재 운용중인 OPTE가 새롭게 큐된 OPTE보다 하위의 우선 순위를 갖는다면, 현재 운용중인 OPTE의 실행은 인터럽트된다. 따라서, 판정 블록(224)이 OPTE가 현재 운용중인 것을 나타내면, 출력 포트 상태 로직(60)은 현재 운용중인 OPTE가 OPTE A의 우선 순위보다 크거나, 같거나 작은 우선 순위를 가졌는지를 결정한다. 현재 운용중인(즉, 실행중인) OPTE가 OPTE A보다 상위의 우선 순위를 나타내는 OPTE B라고 가정하면(판정 박스 228), 프로시저는 종료한다(버블 230). OPTE A 및 OPTE B 둘다가 동일한 우선 순위 레벨을 갖는 것으로 알려지면, "공정성(fairness)"프로시저(박스 232)가 실행되어, 동일한 우선 순위를 갖는 다른 타스크의 실행을 길게 연기시키도록 인에이블되는 특정 우선 순위의 타스크가 1개도 없음을 보장한다.
요약하면, 공정성 프로시저에 의해, 출력 포트 상태 로직(60)이 공통 우선 순위의 타스크들을 다중화시킬 수 있다. 따라서, 제1 타스크에 대해 전송된 데이타량이 임계값에 이르면, 타스크는 단절되고(disconnected) 동일 큐 상의 다른 타스크는 실행을 시작하며, 둘다의 타스크들은 둘다 완료될 때까지 멀티플렉스된다. 공정성 프로시저에 대한 상세한 설명은 이 특허 출원과 동일한 양수인에게 양도된, 브래디(Brady) 등의 미국 특허 출원 번호 제08/176,042호에 기재되어 있다. 미국 특허 출원 번호 제08/176,042호의 개시 내용은 본 명세서에서 참고로 인용된다.
판정 박스(228)에서와 같이, 현재 실행중인 OPTE B가 OPTE A에 배정된 우선 순위보다 작은 우선 순위를 갖는 것으로 알려지면, 우선 순위 단절 오더(priority disconnect order)가 발행되어(박스 234), 현재 운용중인 OPTE B가 단절되게 한다(박스 236). 그러한 단절 시간에, OPTE B의 실행의 스테이터스는 실행이 완료된 OPTE B로부터 연결되는 최종 제어 블록을 기록함으로써 저장된다. 그 후, OPTE B가 다시 실행에 이르면, 실행 스테이터스는 복구되고, 실행이 완료된 제어 블록 직후의 제어 블록으로부터 실행이 계속된다. 이러한 프로시저는 OPTE로부터 연결되는 모든 BCB들이 연결 오더로 실행됨을 보장한다. BCB들이 연속적 운용으로 실행될 수 없는 반면, 수신 노드는 모든 BCB들이 연결 오더로 수신되게 보장된다. 이는 우선 순위, 어세트(asset)들의 유용성 등에 따른 특정 오더로 실행될 수 있는 OPTE들에는 해당되지 않는다.
단절된 OPTE B의 실행 스테이터스가 일단 저장되면, OPTE B 제어 블록 내의 스테이터스 저장 플래그는 1로 설정된다. OPTE B가 OPT 내에 계속 리스트 되어 있기 때문에, OPTE B가 다시 도달하면, 스테이터스 저장 플래그는 스테이터스가 검색되어야 하는 시스템에 신호를 보내고 단절점(point of disconnect)으로부터 실행이 시작된다.
OPTE B는 단절되지만, 완료되지는 않고 있으므로 그 준비 큐 상에 리스트된 채로 남아 있게 된다(박스 238). 출력 포트 상태 로직(60)은 이제 OPTE를 실행시키도록 준비되지만, 방금 큐되고, 실행된 OPTE B보다 상위의 우선 순위를 갖는 것으로 알려진 OPTE A가 필연적인 것은 아니다. 앞셍서 기술한 바와 같이, 출력 포트 상태 로직(60)은 최상위 우선 순위 준비 큐의 헤드에서 OPTE를 실행시키도록 진행된다(박스 226). 그러한 실행을 달성하기 위해서는(도8 참조), 자원이 그러한 실행을 인에이블시키기에 유용한 지를 먼저 결정한다(판정 박수 240). 예를 들어, 요구된 데이타 링크가 유용하지 않으면, 최상위 우선 순위 OPTE를 실행시키는데 필요한 자원은 유용하지 않고, 이런 경우, OPTE는 준비 큐의 하부로 이동된다(박수 242). 대조적으로, 자원이 최상위 우선 순위 OPTE를 실행시키는데 유용하다면, 실행이 시작된다(박스 244). 타스크가 완료되면, 완료된 OPTE는 준비 큐로부터 제거된다(판정 박스 246 및 박스 248). 타스크가 예를 들어, 고장으로 정지되면, 정지된 타스크는 단절되고, 스테이터스는 저장되며, 스테이터스 저장 플래그가 설정된다(박스 250). 그 다음, 정지된 타스크(즉, OPTE)는 준비 큐로부터 제거되고, 정지에 대한 이유가 제거되면 잠시후에 다시 큐되도록 된다.
이 단계에서, 출력 포트 상태 로직(60)은 다음 OPTE를 조정하는데 유용하다. 따라서, 판정 박스(252)에서 도시된 바와 같이, OPTE가 OPTE A를 보유하는 준비 큐보다 상위의 우선 순위를 나타내는 준비 큐 상에 존재하면, 최상위 우선 순위 준비 큐의 상부에 있는 OPTE는 액세스된다(박스 254). 액세스된 OPTE가 단절된 것이라면, 그 스테이터스는 검색되고, 실행은 완료된 최종 BCB에 연결된 인터럽트 포인트(예를 들면, 다음 BCB)로부터 시작된다. 그 다음, 프로시저는 판정 박스(240)으로 되돌아가 반복된다.
상위 우선 순위 준비 큐 상에 OPTE가 존재하지 않으면, OPTE A를 보유하는 준비 큐는 액세스되고, 헤드에서의 OPTE가 실행된다(판정 박스 256). 잠시후에, 현재 우선 순위의 준비 큐 상에 OPTE가 리스트되어 있지 않으면, 프로시저는 하위 우선 순위의 준비 큐로 이동하고(판정 박스 258), 상술한 바와 같이 준비 큐 상에 리스트된 소정의 OPTE들이 실행된다. 하위 우선 순위의 준비 큐 상에 OPTE가 리스트되어 있지 않으면, 프로세스는 종료한다(버블 260).
실행중인 타스크에 타스크의 추가
상술한 바와 같이, 준비 포트 오더가 OPTE로부터 발행되면, 소프트웨어는 OPTE를 변경하는 것이 방지된다. 그러나, OPTE가 준비 포트 오더에 영향을 받더라도, 타스크는 또 다른 연결된 BCB들의 추가에 의해 보충될 수 있다. 그 프로시저는 기능이 도9에 도시되고 "OCB를 체인에 추가(Add OCB to Chain)" 오더를 발행하는 소프트웨어를 이용하여 시작되는 것을 가능케 한다. 이 오더는 새로운 OCB, 및 이 새로운 OCB가 추가될 OPTE에 대한 포인터들을 포함한다(박수 270). 이 오더에 응답하여, 출력 포트 상태 로직(60)은 OPTE 내의 최종 OCB 포인터의 값을 새로운 OCB의어드레스로 변경시킨다. 또한, OPTE로부터 연결된 최종 OCB내의 다음 OCB 포인터는 새로운 OCB의 어드레스를 지시하도록 변경된다(박스 272). OPTE로부터 연결된 OCB들이 없으면, OPTE 내의 제1 OCB 및 최종 OCB 포인터들은 새로운 OCB 어드레서와 같게 설정된다(박스 274). 이러한 방식으로, 실행 타스크가 단절되거나 그렇지 않으면 인터럽트되게 요구하지 않고도, 실행 타스크는 추가로 연결된 OCB라고 하는 수단(매개물;vehicle)을 통해 보조될 수 있다. OCB가 체인에 추가되면, 소프트웨어는 오더가 발행되기 전에 OCB가 완료되는 경우를 설명하기 위해 준비 오더를 재발행한다.
상기 설명은 본 발명을 예시하기 위한 것으로만 이해되어야 한다. 본 발명의 범위를 벗어나지 다양한 대안적인 실시 및 변형 실시가 행해질 수도 있다. 따라서, 본 발명은 첨부한 청구범위 내에 있는 상기한 대안적인 실시 및 변형 실시와 수정을 모두 포함하는 것으로 이해되어야 한다.

Claims (5)

  1. 소프트웨어로 제어되는 프로세서(software-controlled processor) 및 하드웨어로 구성된 큐 제어기(hardware-configured queue- controller) - 상기 큐 제어기는 우선 순위가 부여된(priority ordered) 큐 수단들을 다수개 포함하되, 상기 큐 수단들 각각은 상기 큐 수단에 배정된 우선 순위와 동등한 우선 순위가 배정되어 있는 타스크(task)들을 리스팅하며, 상기 큐 제어기는 프로세서에 의해 생성된 오더(processor generated order)에 응답하여 제1 타스크를 큐(queue)하여 실행하도록 되어 있음 - 를 포함하는 데이타 처리 시스템에서 우선 순위가 부여된 타스크들의 실행을 제어하는 방법에 있어서, 상기 제1 타스크의 우선 순위와 동등한 우선 순위가 배정되어 있는 제1 큐 수단 상에 상기 제1 타스크를 리스트하는 단계와; 보다 높은 우선 순위가 배정되어 있는 큐 수단 상에 제2 타스크가 리스트되면, 상기 제1 타스크의 실행 전에 상기 제2 타스크의 실행을 시도하는 단계와; 상기 제1 큐 수단 보다 높은 우선 순위가 배정된 큐 수단 상에 타스크들이 전혀 리스트되지 않으면, 최초로 리스트되는 타스크의 실행을 상기 제1 큐 수단에서 시도하는 단계와; 상기 최초로 리스트되는 타스크의 실행이 완료되는 경우, 또는 상기 최초로 리스트된 타스크의 완료에 장애(failure)가 발생하는 경우에는, 보다 높은 우선 순위가 부여된 큐 수단 상에 타스크를 배치하기 위한 또 다른 오더가 발행되지 않는 경우, 그리고, 상기 최초로 리스트된 타스크의 완료가 실패한 경우에만, 상기 제1 큐 수단 상의 추가 타스크(further task)의 실행을 시도하여, 상기 최초로 리스트된 타스크가 상기 제1 큐 수단 상에서 최후에 리스트되는 타스크가 되도록 하는 단계와; 타스크가 복수의 연결된 서브타스크(chained subtasks)로 이루어진다면, 상기 프로세서 생성 오더에 응답하여 상기 각각의 서브 타스크의 실행을 시도하고, 상기 서브타스크 중 어느 하나의 실행이 완료하지 않는다면, 완료되지 않았던 상기 서브타스크에 연결된(chained) 서브타스크 대신에 또 다른 타스크의 실행을 시도하는 단계를 포함하는 데이타 처리 시스템에서 우선 순위가 부여된 타스크의 실행을 제어하는 방법.
  2. 제1항에 있어서, 서브타스크의 실행이 완료하지 않은 경우(incomplete execution), 성공적으로 실행된 상기 타스크의 최종 서브타스크가 나중에 판정될 수 있도록 하는 레코드를 저장하는 단계와; 그 서브타스크가 완료되지 않았던 상기 타스크를 실행하기 위한 다음 시도시에, 상기 레코드를 채택하여, 성공적으로 실행된 상기 서브타스크로부터 연결되는 서브타스크의 실행을 시작함으로써, 비록 그 실행 시퀀스가 인터럽트되더라도 상기 타스트의 모든 서브타스크들이 연결 순서대로(in a chaining order) 실행되는 단계를 더 포함하는 데이타 처리 시스템에서 우선 순위가 부여된 타스크의 실행을 제어하는 방법.
  3. 제1항에 있어서, 모든 큐 수단 상의 모든 타스크들이 실행될 때까지 상기 큐 수단 상에 리스트된 타스크들의 실행을 지속적으로 시도하는 단계를 포함하는 데이타 처리 시스템에서 우선 순위가 부여된 타스크의 실행을 제어하는 방법.
  4. 우선 순위가 부여된 타스크들의 실행을 제어하기 위한 데이타 처리 시스템에 있어서, 우선 순위가 부여된 큐 수단 상에 우선 순위가 부여된 타스크들을 배치하기 위해 준비 오더(ready order)들을 소프트웨어 제어하에 발행하는 프로세서 수단과; 우선 순위가 부여된 다수의 큐 수단들 - 상기 큐 수단들 각각은 실행 대기중인 공통 우선 순위 타스크 명칭들을 등록하기 위한 다수의 레지스터들을 갖고 있으며 공통 우선 순위를 갖는 타스크 명칭만을 등록함 - 을 포함한 큐 제어기 하드웨어 수단을 구비하되, 상기 큐 제어기 하드웨어 수단은 준비 오더에 응답하여,
    (a) 상기 타스크 명칭에 배정된 우선 순위와 동등한 우선 순위가 지정되어 있는 제1 큐 수단 상에 상기 준비 오더에 의해 지정된 제1 타스크 명칭을 리스트하고,
    (b) 다른 하나의 타스크 명칭이, 상기 제1 타스크의 우선 순위보다 상위의 우선 순위가 배정되어 있는 큐 수단 상에 리스트된 경우에는, 상기 제1 타스크 이전에 상기 다른 하나의 타스크를 실행시키며, 상기 큐 제어기 하드웨어 수단은 준비 오더에 응답하여, 상기 프로세서의 소프트웨어 제어 동작에 의해 인터럽트가 가능하지 않은 오토믹 베이시스에 기초하여(on an atomic basis that is not interruptable) 적어도 하나의 타스크의 실행을 시도하고; 상기 큐 제어기 하드웨어 수단은, 상기 제1 큐 수단 보다 높은 우선 순위를 갖는 큐 수단 상에 타스크 명칭이 전혀 리스트되지 않으면, 상기 제1 큐 수단 상의 최초로 리스트된 타스크의 실행을 시도하고; 상기 최초로 리스트되는 타스크의 실행이 완료되는 경우, 또는 상기 최초로 리스트된 타스크의 완료에 장애(failure)가 발생하는 경우, 상기 큐 제어기 하드웨어 수단은, 보다 높은 우선 순위를 갖는 큐 수단 상에 타스크를 배치하기 위한 또 다른 오더가 발행되지 않는 경우, 그리고, 상기 최초로 리스트된 타스크의 완료가 실패한 경우에만, 상기 제1 큐 수단 상의 추가 타스크(further task)의 실행을 시도하여, 상기 최초로 리스트된 타스크가 상기 제1 큐 수단 상에서의 최후에 리스트되는 타스크가 되도록 하며; 여기서, 복수의 연결된 서브타스크로 타스크가 이루어진다면, 상기 큐 제어기 하드웨어 수단은 상기 프로세서에 의해 생성된 오더에 응답하여 타스크의 각각의 서브타스크의 실행을 시도하고, 상기 서브타스크의 실행이 완료하지 않으면, 완료되지 않았던 상기 서브타스크에 연결된(chained) 서브타스크 대신에 또 다른 타스크의 실행을 시도하는 데이타 처리 시스템.
  5. 제6항에 있어서, 서브타스크의 실행이 완료하지 않은 경우(upon non-completion)에는, 상기 큐 제어기 하드웨어 수단에 의해, 성공적으로 실행된 상기 타스크의 최종 서브타스크를 나중에 판정할 수 있도록 하는 레코드가 저장되고; 그 서브타스크가 완료되지 않았던 상기 타스크를 실행하기 위한 다음 시도시에는, 상기 레코드를 채택하여, 성공적으로 실행된 상기 서브타스크로부터 연결된 서브타스크의 실행을 시작함으로써, 상기 타스크의 모든 서브타스크들은, 그 실행 시퀀스가 인터럽트되더라도, 연결 순서대로 실행되는 데이타 처리 시스템.
KR1019960033402A 1995-09-27 1996-08-12 다중 처리 시스템에서 타스크를 큐잉하기 위한 시스템 및 방법 KR100268565B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/534,585 1995-09-27
US08/534,585 US5940612A (en) 1995-09-27 1995-09-27 System and method for queuing of tasks in a multiprocessing system

Publications (2)

Publication Number Publication Date
KR970016979A KR970016979A (ko) 1997-04-28
KR100268565B1 true KR100268565B1 (ko) 2000-10-16

Family

ID=24130689

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960033402A KR100268565B1 (ko) 1995-09-27 1996-08-12 다중 처리 시스템에서 타스크를 큐잉하기 위한 시스템 및 방법

Country Status (3)

Country Link
US (1) US5940612A (ko)
JP (1) JP3549081B2 (ko)
KR (1) KR100268565B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100617228B1 (ko) * 1999-03-19 2006-08-31 엘지전자 주식회사 실시간 운영체계 커널의 이벤트 전달 체계 구현방법
KR101612105B1 (ko) * 2014-11-27 2016-04-11 한국과학기술정보연구원 사용자 계정에 따른 작업우선순위가 적용된 작업관리 시스템 및 그 방법
KR102062945B1 (ko) 2015-11-02 2020-01-06 캐논 가부시끼가이샤 정보 처리 장치 및 그의 제어 방법, 및 프로그램

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6338074B1 (en) * 1997-07-23 2002-01-08 Filenet Corporation System for enterprise-wide work flow automation
US6243735B1 (en) * 1997-09-01 2001-06-05 Matsushita Electric Industrial Co., Ltd. Microcontroller, data processing system and task switching control method
US6219741B1 (en) * 1997-12-10 2001-04-17 Intel Corporation Transactions supporting interrupt destination redirection and level triggered interrupt semantics
GB2334116A (en) * 1998-02-04 1999-08-11 Ibm Scheduling and dispatching queued client requests within a server computer
US6411982B2 (en) * 1998-05-28 2002-06-25 Hewlett-Packard Company Thread based governor for time scheduled process execution
US6195703B1 (en) 1998-06-24 2001-02-27 Emc Corporation Dynamic routing for performance partitioning in a data processing network
US6438595B1 (en) 1998-06-24 2002-08-20 Emc Corporation Load balancing using directory services in a data processing system
US6421711B1 (en) * 1998-06-29 2002-07-16 Emc Corporation Virtual ports for data transferring of a data storage system
US6295575B1 (en) 1998-06-29 2001-09-25 Emc Corporation Configuring vectors of logical storage units for data storage partitioning and sharing
US6260120B1 (en) 1998-06-29 2001-07-10 Emc Corporation Storage mapping and partitioning among multiple host processors in the presence of login state changes and host controller replacement
US6253260B1 (en) * 1998-10-22 2001-06-26 International Business Machines Corporation Input/output data access request with assigned priority handling
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6427196B1 (en) 1999-08-31 2002-07-30 Intel Corporation SRAM controller for parallel processor architecture including address and command queue and arbiter
US7546444B1 (en) 1999-09-01 2009-06-09 Intel Corporation Register set used in multithreaded parallel processor architecture
KR100678930B1 (ko) * 1999-10-11 2007-02-07 삼성전자주식회사 디지털 시그널 프로세서를 위한 실시간 제어 시스템
US6532509B1 (en) 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6631430B1 (en) * 1999-12-28 2003-10-07 Intel Corporation Optimizations to receive packet status from fifo bus
US6625654B1 (en) 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6560667B1 (en) * 1999-12-28 2003-05-06 Intel Corporation Handling contiguous memory references in a multi-queue system
US6307789B1 (en) * 1999-12-28 2001-10-23 Intel Corporation Scratchpad memory
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6976095B1 (en) 1999-12-30 2005-12-13 Intel Corporation Port blocking technique for maintaining receive packet ordering for a multiple ethernet port switch
US7099855B1 (en) 2000-01-13 2006-08-29 International Business Machines Corporation System and method for electronic communication management
US8290768B1 (en) 2000-06-21 2012-10-16 International Business Machines Corporation System and method for determining a set of attributes based on content of communications
US9699129B1 (en) 2000-06-21 2017-07-04 International Business Machines Corporation System and method for increasing email productivity
US6408277B1 (en) 2000-06-21 2002-06-18 Banter Limited System and method for automatic task prioritization
US6658478B1 (en) * 2000-08-04 2003-12-02 3Pardata, Inc. Data storage system
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US7836329B1 (en) 2000-12-29 2010-11-16 3Par, Inc. Communication link protocol optimized for storage architectures
US7644057B2 (en) 2001-01-03 2010-01-05 International Business Machines Corporation System and method for electronic communication management
US20020126673A1 (en) * 2001-01-12 2002-09-12 Nirav Dagli Shared memory
US7225242B2 (en) 2001-01-26 2007-05-29 Dell Products L.P. System and method for matching storage device queue depth to server command queue depth
US6964049B2 (en) * 2001-07-18 2005-11-08 Smartmatic Corporation Smart internetworking operating system for low computational power microprocessors
US6868476B2 (en) * 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US7158964B2 (en) * 2001-12-12 2007-01-02 Intel Corporation Queue management
US7107413B2 (en) 2001-12-17 2006-09-12 Intel Corporation Write queue descriptor count instruction for high speed queuing
US7269179B2 (en) 2001-12-18 2007-09-11 Intel Corporation Control mechanisms for enqueue and dequeue operations in a pipelined network processor
US7895239B2 (en) 2002-01-04 2011-02-22 Intel Corporation Queue arrays in network devices
US7181573B2 (en) 2002-01-07 2007-02-20 Intel Corporation Queue array caching in network devices
US6934951B2 (en) 2002-01-17 2005-08-23 Intel Corporation Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section
US7181594B2 (en) * 2002-01-25 2007-02-20 Intel Corporation Context pipelines
US7149226B2 (en) 2002-02-01 2006-12-12 Intel Corporation Processing data packets
US8108656B2 (en) * 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
US6941438B2 (en) * 2003-01-10 2005-09-06 Intel Corporation Memory interleaving
US7380218B2 (en) * 2003-03-27 2008-05-27 International Business Machines Corporation Method and apparatus for managing windows
US7389230B1 (en) 2003-04-22 2008-06-17 International Business Machines Corporation System and method for classification of voice signals
US20050187913A1 (en) 2003-05-06 2005-08-25 Yoram Nelken Web-based customer service interface
US8495002B2 (en) 2003-05-06 2013-07-23 International Business Machines Corporation Software tool for training and testing a knowledge base
US7650601B2 (en) 2003-12-04 2010-01-19 International Business Machines Corporation Operating system kernel-assisted, self-balanced, access-protected library framework in a run-to-completion multi-processor environment
US20050198361A1 (en) * 2003-12-29 2005-09-08 Chandra Prashant R. Method and apparatus for meeting a given content throughput using at least one memory channel
US7213099B2 (en) 2003-12-30 2007-05-01 Intel Corporation Method and apparatus utilizing non-uniformly distributed DRAM configurations and to detect in-range memory address matches
US7657889B2 (en) * 2004-04-06 2010-02-02 International Business Machines Corporation Method, system, and storage medium for searching multiple queues for prioritized work elements
JP4622474B2 (ja) * 2004-11-17 2011-02-02 横河電機株式会社 フィールド機器及びこれを用いたシステム
KR100705955B1 (ko) * 2004-12-30 2007-04-11 지멘스 오토모티브 주식회사 자동차의 엔진 제어 방법
US7937616B2 (en) 2005-06-28 2011-05-03 International Business Machines Corporation Cluster availability management
US7743372B2 (en) * 2005-06-28 2010-06-22 Internatinal Business Machines Corporation Dynamic cluster code updating in logical partitions
US7774785B2 (en) * 2005-06-28 2010-08-10 International Business Machines Corporation Cluster code management
US8156493B2 (en) * 2006-04-12 2012-04-10 The Mathworks, Inc. Exception handling in a concurrent computing process
US20130276109A1 (en) * 2006-07-11 2013-10-17 Mcafee, Inc. System, method and computer program product for detecting activity in association with program resources that has at least a potential of an unwanted effect on the program
CN101714099B (zh) * 2009-12-16 2012-12-05 金蝶软件(中国)有限公司 一种行集数据的处理方法、装置及数据处理系统
CN102253860A (zh) * 2011-07-13 2011-11-23 深圳市万兴软件有限公司 一种异步操作方法及异步操作管理装置
US10095442B2 (en) 2015-08-04 2018-10-09 Toshiba Memory Corporation Memory device that changes execution order of commands
US11210134B2 (en) * 2016-12-27 2021-12-28 Western Digital Technologies, Inc. Atomic execution unit for object storage
CN111094892B (zh) * 2017-09-26 2022-06-24 天宝公司 勘测仪器的数据收集任务队列
US11157004B2 (en) * 2019-04-01 2021-10-26 GM Global Technology Operations LLC Real-time control system for a vehicle and a method of executing control of the vehicle via the real-time control system
CN110780976B (zh) * 2019-10-24 2022-03-15 上海华讯网络系统有限公司 自动化操作编排与执行方法及系统
CN113010286A (zh) * 2021-03-12 2021-06-22 京东数字科技控股股份有限公司 并行任务调度方法、装置、计算机设备和存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4177513A (en) * 1977-07-08 1979-12-04 International Business Machines Corporation Task handling apparatus for a computer system
US4286322A (en) * 1979-07-03 1981-08-25 International Business Machines Corporation Task handling apparatus
US4358829A (en) * 1980-04-14 1982-11-09 Sperry Corporation Dynamic rank ordered scheduling mechanism
US4539637A (en) * 1982-08-26 1985-09-03 At&T Bell Laboratories Method and apparatus for handling interprocessor calls in a multiprocessor system
US4660168A (en) * 1984-03-14 1987-04-21 Grant Elwyn E Apparatus for completing a customer initiated ATM transaction
US4658351A (en) * 1984-10-09 1987-04-14 Wang Laboratories, Inc. Task control means for a multi-tasking data processing system
US4682284A (en) * 1984-12-06 1987-07-21 American Telephone & Telegraph Co., At&T Bell Lab. Queue administration method and apparatus
US4868744A (en) * 1986-03-03 1989-09-19 International Business Machines Corporation Method for restarting a long-running, fault-tolerant operation in a transaction-oriented data base system without burdening the system log
US4914570A (en) * 1986-09-15 1990-04-03 Counterpoint Computers, Inc. Process distribution and sharing system for multiple processor computer system
US4980824A (en) * 1986-10-29 1990-12-25 United Technologies Corporation Event driven executive
US5012409A (en) * 1988-03-10 1991-04-30 Fletcher Mitchell S Operating system for a multi-tasking operating environment
US5202988A (en) * 1990-06-11 1993-04-13 Supercomputer Systems Limited Partnership System for communicating among processors having different speeds
US5220653A (en) * 1990-10-26 1993-06-15 International Business Machines Corporation Scheduling input/output operations in multitasking systems
US5247675A (en) * 1991-08-09 1993-09-21 International Business Machines Corporation Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100617228B1 (ko) * 1999-03-19 2006-08-31 엘지전자 주식회사 실시간 운영체계 커널의 이벤트 전달 체계 구현방법
KR101612105B1 (ko) * 2014-11-27 2016-04-11 한국과학기술정보연구원 사용자 계정에 따른 작업우선순위가 적용된 작업관리 시스템 및 그 방법
KR102062945B1 (ko) 2015-11-02 2020-01-06 캐논 가부시끼가이샤 정보 처리 장치 및 그의 제어 방법, 및 프로그램

Also Published As

Publication number Publication date
JPH09128252A (ja) 1997-05-16
KR970016979A (ko) 1997-04-28
US5940612A (en) 1999-08-17
JP3549081B2 (ja) 2004-08-04

Similar Documents

Publication Publication Date Title
KR100268565B1 (ko) 다중 처리 시스템에서 타스크를 큐잉하기 위한 시스템 및 방법
US5606703A (en) Interrupt protocol system and method using priority-arranged queues of interrupt status block control data structures
US5630059A (en) Expedited message transfer in a multi-nodal data processing system
KR100219350B1 (ko) 분산된 노드 사이 스위칭과 분리된 데이터/제어 메시지 처리를 갖는 다중 노드 네트워크
US7269179B2 (en) Control mechanisms for enqueue and dequeue operations in a pipelined network processor
US7676588B2 (en) Programmable network protocol handler architecture
EP0991999B1 (en) Method and apparatus for arbitrating access to a shared memory by network ports operating at different data rates
US5448698A (en) Inter-processor communication system in which messages are stored at locations specified by the sender
US6976135B1 (en) Memory request reordering in a data processing system
EP1026596B1 (en) Direct memory access control
EP0674276B1 (en) A computer system
US5625846A (en) Transfer request queue control system using flags to indicate transfer request queue validity and whether to use round-robin system for dequeuing the corresponding queues
US7234004B2 (en) Method, apparatus and program product for low latency I/O adapter queuing in a computer system
US20040230979A1 (en) Command scheduling in computer networks
JPH04215158A (ja) データ転送制御方法及びインタフェース・システム
JPH06202883A (ja) プロセス間通信装置及び通信方法
EP1261915A2 (en) High-speed data processing using internal processor memory space
US6978457B1 (en) Method and system increasing performance substituting finite state machine control with hardware-implemented data structure manipulation
JP2006301894A (ja) マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法
JP2006309512A (ja) マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法
US5386514A (en) Queue apparatus and mechanics for a communications interface architecture
US5930483A (en) Method and apparatus for communications control on a small computer system interface
JP2002041449A (ja) バスシステム及びその実行順序の調整方法
EP1891503B1 (en) Concurrent read response acknowledge enhanced direct memory access unit
US7043603B2 (en) Storage device control unit and method of controlling the same

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee