KR20010080469A - 작업-병렬 프로세서 - Google Patents

작업-병렬 프로세서 Download PDF

Info

Publication number
KR20010080469A
KR20010080469A KR1020017006201A KR20017006201A KR20010080469A KR 20010080469 A KR20010080469 A KR 20010080469A KR 1020017006201 A KR1020017006201 A KR 1020017006201A KR 20017006201 A KR20017006201 A KR 20017006201A KR 20010080469 A KR20010080469 A KR 20010080469A
Authority
KR
South Korea
Prior art keywords
work
task
signal
queue
processor
Prior art date
Application number
KR1020017006201A
Other languages
English (en)
Inventor
홀름베르크페르안데르스
클링라르스-외르얀
존슨스텐에드워드
에게란트테르예
Original Assignee
에를링 블로메, 타게 뢰브그렌
텔레폰아크티에볼라게트 엘엠 에릭슨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에를링 블로메, 타게 뢰브그렌, 텔레폰아크티에볼라게트 엘엠 에릭슨 filed Critical 에를링 블로메, 타게 뢰브그렌
Publication of KR20010080469A publication Critical patent/KR20010080469A/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms

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)
  • Advance Control (AREA)
  • Exchange Systems With Centralized Control (AREA)

Abstract

본 발명은 일반적으로 각종 서비스를 네트워크에 접속된 다수의 사용자에게 제공하는 서비스 네트워크를 위하여 개발된 프로세서에 관한 것이다. 이 프로세서(30, 50)는 자신의 사용자들에 의해 요청되는 실질적으로 독립적인 서비스의 부분을 형성하는 작업에 대응하는 작업 신호를 기억하는 다수의 기억 위치를 갖는 작업 큐(52) 및 작업 큐(52)의 여러 기억 위치로부터의 작업 신호를 독립적으로 프로세싱하여 병렬로 대응하는 작업을 실행하는 다수의 병렬 프로세싱 유닛(54)을 구비한다. 다수의 작업이 추론적으로 실행될때, 실행되는 작업들간의 가능한 의존성을 검사하는 유닛(56)이 프로세서에 결합된다. 의존성이 추론적인 작업을 위하여 검사되는 경우, 이 작업은 플러시(flush)된다. 서비스 네트워크의 사용자에 대하여 프롬프트 및 적절한 서비스를 보장하기 위하여, 플러시된 작업들은 작업 큐에서 직접적으로 신속하게 재시작된다.

Description

작업-병렬 프로세서{A JOB-PARALLEL PROCESSOR}
서비스 네트워크에서 개선된 서비스에 대하여 점점 증가하고 있는 요구에 따라서 증가된 용량 및 부가적인 기능을 제공하는 프로세서에 대한 필요성이 증가하고 있다. 예를 들어, 전기통신 네트워크에서, 여러 가지 이유 때문에 보다 큰 프로세서 용량이 필요로 된다. 그 이유는,
-호출 및 호출 설정 수가 증가하며,
-이동 통신 및 ISDN과 같은 새로운 타입의 호출 설정은 통상적인 호출 설정보다 큰 프로세싱 용량을 필요로 하며,
- 프로세싱 자원이 네트워크에서 점점 더 분포되어 증가된 프로세서간 통신 및 이에 따른 프로세싱 용량을 필요로 하며,
- 지능망 서비스 및 ISDN-서비스와 같은 부가적인 서비스 수가 증가되기 때문이다.
서비스 네트워크에서 프로세서의 프로세싱 용량을 증가시키는 종래의 방식은 프로세싱 속도, 보다 빠른 메모리 및 명령 실행을 증가시키기 위하여 통상적으로보다 높은 클럭 주파수의 사용에 좌우된다.
문헌 "Multiscalar Processors by Sohi, Breach and Vijaykumar, 22nd Annual International Symposium on Computer Architecture, Santa Margherita, Ligure, Italy (1995)"에 추론적인 작업 실행에 의한 통상적인 고 레벨 프로그램을 위한 명령 레벨 병렬성을 얻기 위하여 사용되는 소위 멀티스칼라 프로세서가 서술되어 있다. 여러 프로세싱 유닛을 갖는 멀티스칼라 프로세서에서, 다수의 작업은 프로세싱 유닛을 토대로 병렬로 실행되어 사이클당 다수의 명령의 통합적인 실행율을 발생시킨다.
본 발명은 프로세싱 시스템에 관한 것이며, 특히 전기통신 네트워크와 같은 서비스 네트워크용 프로세서에 관한 것이다.
도 1은 서비스 네트워크의 개요도.
도 2는 본 발명을 따른 프로세싱 시스템의 개요도.
도 3은 도 3의 프로세서의 부분의 개요도.
도 4는 본 발명의 또다른 실시예를 다른 의존성 검사용 실행 파이프라인 및회로의 개요도.
도 5는 본 발명을 따른 실행 파이프라인의 개요적인 논리도.
본 발명의 목적은 작업 레벨을 토대로 병렬성을 이용하는 작업-병렬 프로세서로서 동작하는 이벤트-구동 프로세싱 시스템을 제공하는 것이다.
본 발명의 다른 목적은 서비스 네트워크에 접속된 사용자들에 의해 요청되는 실질적으로 독립적인 서비스의 부분을 형성하는 작업을 병렬로 실행하는 서비스 네트워크 프로세서를 제공하는 것이다.
본 발명의 또다른 목적은 병렬로 실행되는 작업들간의 가능한 의존성을 검사하고 검출된 의존성에 따라서 플러시되는 작업을 효율적으로 재실행하는 수단을 제공하는 것이다.
본 발명의 또한 다른 목적은 작업 스케쥴링 및 작업의 병렬 실행간의 간단하고 효율적인 인터페이스를 갖는 프로세싱 시스템을 제공하는 것이다.
이들 및 그외 다른 목적들은 첨부한 특허 청구범위에 의해 규정된 바와같은본 발명에 포함된다.
일반적인 본 발명의 개념을 따르면, 작업 레벨 병렬화는 추론적인(speculative) 작업 실행에 의해 실행된다.
본 발명을 따른 프로세서 및 프로세싱 시스템은 전기통신 네트워크와 같은 서비스 네트워크를 위하여 개발되어 주문형으로 제작되는 것이 바람직한데, 여기서, 다수의 사용자들은 네트워크로부터의 네트워크 요청 각종 서비스에 접속된다. 이 서비스 요청은 통상적으로 프로세싱 시스템내의 실제 프로세싱과 동기되는 외부 이벤트로서 간주된다. 이 점에서, 프로세싱 시스템은 이벤트를 토대로한 것이거나 이벤트 구동된 것인데, 각각의 외부 이벤트는 프로세싱 시스템에 의해 실행될 하나이상의 작업을 초기화하는 것이다.
본 발명의 제1 양상을 따르면, 서비스 네트워크용 프로세서는 서비스 네트워크의 사용자들에 의해 요청되는 실질적으로 독립적인 서비스의 부분을 형성하는 작업에 대응하는 작업 신호를 기억하는 작업 큐 및 병렬로 여러 작업을 실행하기 위하여 상기 작업 큐로부터의 작업 신호를 각각 불러와서 프로세싱하는 다수의 병렬 프로세싱 유닛을 구비한다. 다수의 병렬 작업이 추론적으로 실행될때, 실행된 작업들간의 가능한 의존성을 검사하는 유닛이 결합된다. 의존성이 추론적으로 실행된 작업을 위하여 검출되는 경우, 이 작업은 플러시(flushed)된다. 서비스 네트워크의 사용자를 위한 프롬프트 및 적절한 서비스를 보장하기 위하여, 플러시된 작업들은 작업 큐로부터 직접적으로 신속하게 재시작된다.
본 발명의 제2 양상을 따르면, 스케쥴링 작업의 프로세스는 전용 스케쥴링프로세서를 제공함으로써 병렬 작업 실행으로부터 분리된다. 결국, 본 발명의 제2 양상을 따른 프로세싱 시스템은 스케쥴링 유닛을 포함하는 제1 프로세서 및 본 발명의 제1 양상을 따른 작업 병렬 프로세서 형태의 제2 프로세서를 구비한다. 이 해결책은 병렬 작업 실행 및 스케쥴링 프로세스간에 간단하고 효율적인 인터페이스를 제공한다. 작업 스케쥴링이 전용 스케쥴링 프로세서에서 수행되기 때문에 스케쥴링을 어느 병렬 프로세싱 유닛이 실행하는지를 더이상 추적할 필요가 없다. 게다가, 작업 병렬 프로세서 및 스케쥴링 프로세서는 병렬로 동작하여, 프로세싱 시스템에서 전체 작업 프로세싱을 보다 신속하게 수행하게 한다.
본 발명은 다음과 같은 이점을 제공한다.
-프로세싱 용량 증가
-작업 큐로부터 직접적으로 의존성-플러시된 작업의 신속하고 효율적인 재시작 및
-작업 실행 및 스케쥴링간의 간단하고 효율적인 인터페이스.
본 발명에 의해 제공되는 다른 장점이 본 발명의 실시예의 설명을 토대로 이해하게 될 것이다.
본 발명의 목적 및 장점이 첨부한 도면을 참조하여 상세하게 설명될 것이다.
전체 도면에서 대응하거나 유사한 소자에는 동일한 참조 번호가 사용될 것이다.
도 1은 서비스 네트워크를 개요적으로 도시한 것이다. 이 도 1의 예에서, 서비스 네트워크는 전기통신 네트워크이다. 이 전기통신 네트워크(1)는 PSTN(Public Switched Telephone Network), PSTN(Public Land Mobile Network), ISDN(Integrated Service Digital Network) 및 ATM(Asynchronous Transfer Mode) 네트워크와 같은 여러 베어러 서비스 네트워크를 지원한다. 이 전기통신 네트워크 (10)는 기본적으로 통상적으로 트렁크 그룹으로 그룹화되는 물리적인 링크에 의해 상호접속되는 다수의 스위칭/루팅 노드(12-1 내지 12-6)를 구비한다. 이 스위칭 노드(12-1 내지 12-4)는 전화기(14-1 내지 14-4) 및 컴퓨터(16-1 내지 16-4)와같은 액세스 터미널이 구내 교환망(도시되지 않음)을 통해서 접속되는 액세스 포인트를 갖는다. 이 스위칭 노드 (12-5)는 이동 교환실(MSC)(18)에 접속된다. 이 MSC(18)는 두개의 기지국 제어기(BSCs)(20-1 및 20-2) 및 홈 위치 레지스터(HLR) 노드 (22)에 접속된다. 이 제1의 BSC(20-1)는 하나이상의 이동국 유닛(26-1 및 26-2)와 통신하는 다수의 기지국(24-1 및 24-2)에 접속된다. 유사하게, 제2 의 BSC(20-2)는 하나이상의 이동 유닛(26-3)과 통신하는 다수의 기지국(24-3 및 24-4)에 접속된다.이 스위칭 노드(12-6)는 데이터 베이스 시스템(DBS)가 제공된 호스트 컴퓨터에 접속된다. 컴퓨터(16-1 내지 16-4)와 같은 네트워크(10)에 접속된 사용자 단말기는 호스트 컴퓨터(28)에서 데이터 베이스 시스템으로부터 데이터 베이스 서비스를 요청하도록 동작된다. 자바 서버와 같은 서버는 스위칭/루팅 노드에 접속될 수 있다. 사업용 네트워크(도시되지 않음)와 같은 사적인 네트워크는 또한 도 1의 서비스 네트워크에 접속될 수 있다.
도 1의 서비스 네트워크는 각종 서비스를 네트워크에 접속된 사용자에게 각종 서비스를 제공한다. 이와같은 서비스의 일예는 PSTN 및 PLMN, 메시지 서비스, LAN 상호접속, 지능망(IN) 서비스, ISDN 서비스, CTI(Computer Telephony Integration) 서비스, 화상 회의, 파일 전송, 소위 인터넷으로의 액세스, 페이징 서비스, 요구 화상(video-on-demand) 등에서 통상적인 전화 호출이다.
네트워크(10)에서 각각의 스위칭 노드(12)는 통상적으로 서비스 요청을 취급하는 프로세싱 시스템(도 1에 도시되지 않음)을 구비한다. 이와같은 프로세싱 시스템은 통상적으로 네트워크(10)의 MSC(18), BSC(20-1 및 20-2), HLR 노드(22) 및 호스트 컴퓨터(28)의 각각 하나에 배치될 뿐만아니라 네트워크에 접속되는 서버에 배치된다. 예를 들어 호출 설정은 작업의 시퀀스를 실행하기 위한 프로세싱 시스템을 필요로한다. 이 작업 시퀀스는 프로세서 레벨에 대한 호출 설정 서비스를 규정한다. 각각의 호출 설정 서비스는 프로세서에 의해 실행될 유사한 작업 시퀀스를 필요로한다. 실제로, 서비스 네트워크의 사용자들에 의해 요청되는 각각의 서비스는 특정한 작업 시퀀스를 필요로한다. 네트워크의 사용자들에 의한 서비스 요청은 이벤트로서 간주되는데, 이것은 작업 신호로 표시된다. 이 점에서, 프로세싱 시스템에서 프로세싱은 이벤트 구동되며, 이 이벤트는 자동적으로 그리고 동적으로 요청된 서비스에 대응하는 작업을 규정한다.
도 2는 본 발명을 따른 프로세싱 시스템의 일예를 도시한 개요도이다. 이 프로세싱 시스템(30)은 도 1에 도시된 바와같은 서비스 네트워크에서 사용하기 위하여 주문 제작된다. 이 프로세싱 시스템(30)은 계층적인 프로세싱 시스템이고 기본적으로 다수의 지역 프로세서(RP)(32-1 내지 32-3), 스케쥴링 장치(40) 및 명령 프로세싱 유닛(IPU)(50)를 구비한다.
이 스케쥴링 유닛(40)은 하나이상의 지역 프로세서(32-1 내지 32-3)중 하나이상의 지역 프로세서로부터 또는 서비스 네트워크의 다른 프로세서 및 주변장치로부터의 서비스 네트워크의 사용자들에 의해 요청되는 서비스의 부분을 형성하는 작업에 대응하는 작업 신호를 수신한다. 서비스 네트워크에서 요청되는 굉장히 많은수의 서비스때문에, 작업 의존성이 발생할 수 있을 지라도, 서비스 네트워크에서 프로세싱 시스템(30)에 의해 수신되는 작업은 실질적으로 독립적으로 될 것이다.
이 특정 예에서, 스케쥴링 유닛(40)은 입력 출력 유닛(42) 및 다수의 작업 버퍼(44)를 구비한다. 이 입력/출력 유닛(42)은 RPs(32-1 내지 32-3) 및 다른 주변장치로부터 작업 신호를 수신하고 이들을 작업 버퍼(44)로 분배한다. 단지 하나의 버퍼 대신에 여러 작업 버퍼를 사용함으로써 , 우선순위를 취급할 수 있는데, 여러 우선순위 레벨을 갖는 작업 신호들은 여러 버퍼에 기억된다. 새로운 작업 신호가 스케쥴링 유닛(40)에 도달할 때, 이것은 분석되고 작업 신호가 배치되는 작업 버퍼가 식별된다. 다음에, 이 작업 신호는 명령 프로세싱 유닛(50)으로 진행되도록 대기되는 선택된 작업 버퍼에 배치된다. 이 작업 버퍼(44)는 통상적으로 선입-선출 큐로서 구성되고 작업 버퍼는 우선순위 순서로 서비스된다. IPU(50)가 새로운 작업 신호를 수용할 때, 스케쥴링 유닛(40)은 작업 버퍼(44)로부터 가장 높은 우선순위의 신호를 취하여 이것을 IPU(50)에 전송한다.
명령 프로세싱 유닛(IPU)(50)은 프로세서를 형성하는데, 이것은 작업 신호 큐(JQ)(52), 다수의 프로세싱 유닛(54), 결합된 의존성 검사 유닛 및 데이터 의존성을 취급하는 일시적인 기록 큐(56) 및 프로그램 기억장치(58) 및 데이터 기억장치(59)로 분할되는 메모리 시스템(57)을 구비한다. 이 프로세싱 유닛(54)은 실행 파이프라인의 형태가 바람직하다. 이하에서, 이 프로세싱 유닛을 실행 파이프라인이라 칭하고 작업 신호 큐는 간단히 작업 큐라고 칭한다.
스케쥴링 유닛(40)으로부터의 작업 신호는 작업 신호를 기억하는 다수의 기억 위치를 갖는 작업 큐(52)에서 버퍼링된다. 각각의 작업 신호는 작업 큐(52)의 각각의 기억 위치에 부가적인 정보와 함께 기억된다. 작업 큐(52)에서 버퍼링되는 작업 신호는 일반적으로 실질적으로 독립적인 네트워크 서비스의 부분을 형성하는 작업에 대응한다. 일반적으로, 각각의 작업 신호는 헤더 및 바디를 포함한다. 관리 정보 이외에, 이 헤더는 통상적으로 프로그램 기억장치(58)에서의 소프트웨어 코드에 대한 포인터를 포함하고 이 작업 신호의 바디는 대응하는 작업을 실행하는데 필요한 입력 피연산자를 포함한다. 이 점에서, 작업 신호는 자기 포함되거나 자주적인데, 이는 대응하는 작업을 완전히 규정한다. 소프트웨어 코드는 하나이상의 룩업테이블을 통해서 표시된다. 이것은 일반적으로 포인터가 실질적으로 룩업 테이블 엔트리를 가리키며, 이 룩업 엔트리는 소프트웨어 코드를 가리킨다는 것을 의미한다. 이 바디는 서비스 네트워크에서 지역 프로세서 또는 또다른 프로세서로부터의 신호 메시지일 수 있다. 작업은 신호 헤더에 의해 규정되는 명령 스트림으로서 규정될 수 있으며 작업은 작업 신호의 수신으로 시작되고 종료 작업 루틴의 호출에 의해 종료된다. 그러나, 작업 신호 자체는 임의의 명령, 프로그램 기억 장치(58)에 기억된 프로그램 코드에서의 명령에 대한 포인터 및 명령 실행에 필요로되는 피연산자를 포함하지 않는다는 점에 유의하여만 한다.
실행 파이프라인(54)은 작업 큐(52)의 여러 기억 위치로부터 작업 신호를 독립적으로 "페치(fetch)"하여 점선으로 도 2에 도시된 바와 같이 상기 작업 큐(52)의 기억 위치로부터 상기 실행 파이프라인(54)으로 병렬로 여러 작업을 독립적으로 실행한다. 실행 파이프라인이 새로운 작업의 실행을 시작하는데 자유로우면 언제든지, 작업 큐(52)는 비할당된 작업 신호를 찾기위하여 검사되고 비할당된 작업 신호는 실행 파이프라인에 할당된다. 이 작업 신호는 작업 큐로부터 실행 파이프라인으로 카피되어 이내에서 처리되어 대응하는 작업을 실행한다. 이 특정 예에서, 4개의 파이프라인은 서로 독립적으로 병렬로 4개의 서로다른 작업을 실행한다. 병렬 작업 실행하는 동안의 모든 시간에서, 작업 큐(52)내의 단지 하나의 작업 신호는 위임 위치(commit position)에 놓여, 작업 신호가 할당되는 실행 파이프라인으로 하여금 메모리 시스템(57)으로 기록을 다시 수행하도록 하여 위임 신호(commit signal)를 전송한다. 다른 실행 파이프라인의 작업은 추론적으로 실행되고 데이터 의존성이의존성 검사 유닛(56)에 의해 검출되는 경우 플러시될 수 있다.
정보 흐름이 프로토콜에 의해 관리되는 시스템에 대한 일반적인 필요조건은 어떤 관계된 이벤트가 수신된 순서로 처리되어야만 한다는 것이다. 시스템이 어떻게 수행될지라도, 이것은 시스템의 변수가 된다. 작업들간의 위임 순서는 통상적으로 프로세싱 코어로의 도착에 의해 규정되고 일반적으로 변경되지 않을 것이다. 그러나, 여러 우선순위 레벨의 작업 신호를 처리하는 프로세싱 시스템에서, 보다 낮은 우선순위의 작업 신호전에 보다 높은 우선순위 레벨의 작업 신호를 배치하는데 유용하다. 일반적으로, 동일한 우선순위 레벨내의 작업은 이들이 도달되는 것과 동일한 순서로 위임된다.
실행 파이프라인(54)이 일반적으로 동기 방식으로 작업 큐로부터 작업 신호를 페치하지 않거나 파이프라인 동기화하여 작업을 병렬 실행하지 않는다는 것을 이해하여야만 된다. 그러나, 파이프라인에 의한 작업의 페칭은 여전히 실질적으로 병렬로서 간주될 수 있다.
의존성 검사 유닛(56)은 일반적으로 실행 파이프라인(54)과 관계되는 하나이상의 판독 버퍼를 사용함으로써 수행된다. 파이프라인이 데이터 기억장치(59)로부터 데이터를 페치할 때, 판독 어드레스 또는 어드레스는 판독 버퍼(들)에서 버퍼링된다. 위임 우선순위를 갖는 파이프라인이 데이터 기억장치(59)에 기록될때, 데이터 기억장치로의 기록 어드레스는 판독 버퍼(들)에서 판독 어드레스와 비교되어 작업들간에 데이터 의존성이 존재하는지를 찾는다. 추론적으로 실행되는 작업에 의해 판독되는 데이터가 위임된 작업에 의해 수정되는 경우, 데이터 의존성이 존재하고추론적으로 실행되는 작업은 플러시되고 재시작되어야만 된다. 플러시된 작업에 대응하는 작업 신호가 여전히 작업 큐에서 버퍼링되기 때문에 플러시된 작업은 작업 큐(52)로부터 직접적으로 재시작될 수 있다. 위임되는 작업에 대응하는 작업 신호는 작업 큐(52)로부터 제거됨으로써, 스케쥴링 유닛(40)으로부터의 새로운 작업 신호가 작업 큐(52)내에서 버퍼링되도록 한다.
추론적으로 실행되는 작업에 의해 제안되는 데이터 기억 수정은 일시적인 기록 큐(56)에 로깅(logged)되지만, 작업이 위임 우선순위를 얻을때 까지 데이터 기억 장치(59)에 기록되지 않는다. 작업이 위임 우선순위를 얻을때, 해당 작업에 속하는 일시작인 기록 큐(56)의 엔트리는 즉각적으로 데이터 기억장치(59)에 기록된다. 위임 우선순위를 갖는 작업에 의해 발생되는 작업 신호는 스케쥴링 유닛(40)으로 진행되는데, 여기서 작업 신호는 후처리 대기하는 작업 버퍼로 향하거나 I/O 유닛(42)으로 전송되어 서비스 네트워크에서 지역 프로세서 또는 또다른 프로세싱 시스템으로 분포된다.
특정 타입의 의존성 검사 유닛 및 일시적인 기록 큐의 일예가 국제 특허 출원 WO 88/02513호에 서술되어 있다. 이 국제 특허 출원 WO 88/02153 호는 일반적으로 미리 결정된 순서로 두개의 명령 시퀀스를 실행하는 방법 및 장치를 서술한다. 두개의 명령 시퀀스는 결정된 순서의 통지를 취하여 시작함이 없이 병렬로 실행된다. 제2 시퀀스와 관계되는 기록으로 인해 얻어진 데이터가 제1 시퀀스의 실행동안 주 메모리로 전송되는 것을 방지할 필요가 있다. 제1 시퀀스에 대한 제2 시퀀스의 의존성은 의존성 검사 유닛에 의해 모니터링되고 규정된 순서는 보조 메모리 및 비교 회로를 포함하는 중간 기억 유닛에 의해 보장된다.
특허 출원 WO 88/02513호는 작업 신호와 전혀 관계되지 않는다. 대신에, 이것은 명령 시퀀스를 직접적으로 고려한다. 서비스 네트워크의 사용자에 의해 요청되는 서비스의 부분을 형성하는 작업에 대응하는 작업 신호가 버퍼링되지 않거나 이와같은 작업 큐의 어떤 제안도 존재하지 않는 작업 큐는 입증되지 않는다. 결국, 본 발명에 의해 제안된 바와같은 실행 파이프라인 및 작업 큐간의 상호 작용은 WO 88/02513에 서술되지 않는다 특허 출원 WO 88/02513에서, 제2 명령 시퀀스는 의존성의 검출에서 재시작된다라고 일컬어진다. 그러나, 시퀀스를 어떻게 재시작할지는 서술되어 있지 않다.
메모리 시스템(57)은 명령 레벨 캐쉬 및 데이터 레벨 캐쉬 메모리(도시되지 않음) 둘다를 사용하여 현재 캐쉬 메모리에 존재하는 명령 및 데이터(사전에 주메모리로부터 카피됨)에 상대적으로 고속 액세스하도록 한다.
스케쥴링 장치(40) 및 IPU(50)는 동일한 회로 기판상에 배치되고 단일 프로세싱 장치에서 수행된다. 그러나, 바람직하게는 스케쥴링 프로세스는 스케쥴링용 전용 프로세서를 제공함으로써 작업의 병렬 실행으로부터 분리된다. 이 스케쥴링 유닛(40)은 제2 프로세서로부터 분리되는 제1 프로세서에서 수행되는데, 이것은 명령 프로세싱 유닛(500을 결합한다. 이것은 병렬 작업 실행 및 스케쥴링 프로세스 간의 간단하고 명확한 인터페이스를 제공한다. 완전한 스케쥴링 프로세스가 제1 프로세서에서 수행되기 때문에 스케쥴링이 실행되어야만 되는 실행파이프에서 추적을 계속할 필요가 없게되는데, 이것은 작업 스케쥴링에 전용된다.
특정 타입의 스케쥴링 유닛의 일예는 에릭슨 AXE Digital Switching Systems에서의 신호 프로세싱 유닛이다. 본 발명에 의해 사용되는 스케쥴링 유닛(40)에서 취급하는 인터럽트는 보다 높은 우선순위의 작업 신호가 스케쥴링 유닛(40)에서 IPU(50)로 전송되는 경우 IPU(50)에서 인터럽트 작업을 초기화할 수 있는 이점이 있다. 비록 반드시 필요로하지는 않지만, IPU(50)의 작업 큐(52)는 한번에 단지 하나의 우선순위 레벨만의 작업 신호를 포함하는 것이 바람직하다. 스케쥴링 유닛(40)으로부터의 보다 높은 우선 순위 레벨의 신호는 IPU에서 보다 낮은 레벨의 작업을 인터럽트할 것이다. 스케쥴링 유닛(40)은 인터럽트 요청을 IPU(50)에 전송함으로써 인터럽트를 초기화하고 나서 IPU(50)는 현재 실행 작업을 인터럽트할 것이다.
도 3은 도 2의 명령 프로세싱 유닛 형태의 프로세서의 부분의 개요도이다. 이 프로세서는 작업 큐(52), 다수의 실행 파이프라인(54-1 내지 54-4), 결합된 의존성 검사 유닛 및 일시적인 기록 큐(56), 프로그램 기억장치(58) 및 데이터 기억장치(59)를 구비한다.
적절한 제어 소프트웨어 또는 하드웨어와 결합하여 작업 큐(52)는 작업 신호를 실행 파이프라인(54)에 할당하고 위임된 작업 신호를 제거하는데 필요로되는 프로토콜을 관리한다. 작업 큐(52)는 또한 위임 우선순위를 관리하는 것이 바람직하다.
작업 큐(52)는 통상적으로 다수의 기억 위치를 갖는 통상의 큐이다. 일예로서, 작업 큐는 소정부분의 메모리를 다수의 기억 위치로 논리적으로 분할함으로써공통 메모리에서 수행될 수 있는데, 이 위치 각각은 자신의 개별적인 메모리 어드레스를 갖는다. 일반적으로, 작업 큐(52)의 각각의 기억 위치는 예를 들어 이하의 표1에 서술된 바와같은 다수의 필드로 분할된다.
표1
필드 명 설명 폭(비트)
유효 설정된 경우, 기억 위치는 유효 작업을 포함한다. 1
취함 설정된 경우, 작업 신호는 실행 파이프라인에 의해 취해진다. 1
작업 수 스케쥴링 유닛으로부터 수신될때 단조롭게 증가하는 수는 작업에 제공된다. 5
신호 신호 헤더 및 데이터 128
필드 "유효"는 기억 위치가 유효 작업 신호를 포함하는지 여부를 나타내기 위하여 사용된다. 작업 신호가 스케쥴링 유닛(40)으로부터 수신될때, 작업 큐(52)의 첫번째 자유로운 위치에 배치되는데, 즉 유효 플래그가 설정되지 않는 위치에 배치된다. 그리고나서, 유효 플래그는 '신호" 필드가 현재 유효 작업 신호를 포함하고 위치가 점유되는지를 나타내기 위하여 설정된다.
필드 "취함"은 신호가 파이프라인에 할당되는지 여부를 표시하기 위하여 사용된다. 작업 큐(52)의 기억 위치의 작업 신호가 실행 파이프라인에 할당될때, 이 위치에 대한 취함 플래그는 작업 신호가 할당되었다는 것을 표시하기 위하여 설정된다.
일반적으로, 작업은 다음의 상태, Not_Started, Started and Finished일 수 있다. 이들 상태는 여러 방식으로 엔코딩될 수 있고 이것은 테이블 1의 필드 유효, 취함, 및 위임이 단지 이들 작업 상태를 엔코딩하는 한가지 방식의 일예라는 것을이해하여야만 된다.
작업 큐(52)는 위임 위치내에 있는 작업 큐의 기억 위치를 가리키는 포인터 HEAD를 갖는 것이 바람직하다. 위임 위치내의 작업 신호는 위임 우선순위를 갖고 이 작업 신호를 취급하는 실행 파이프라인은 데이터 기억장치(59)로 다시 기록을 실행하고 작업 신호를 스케쥴링 유닛(40)으로 전송하도록 인에이블된다. 작업 신호가 위임 위치로 이동될때, 대응하는 파이프라인은 모든 기록 동작을 위임하도록 시작되고 작업을 위한 신호 전송을 시작한다. 작업이 완료를 위하여 실행되고 모든 기록 및 신호 전송이 위임될때, 이 위치는 유효 플래그를 소거함으로써 해제되고 작업 큐(52)는 종래 수단에 의해 진행되어 새로운 위치를 위임 위치로 이동시켜, 위임 우선순위를 작업 큐내의 작업 신호에 연속적으로 할당한다. 이 스케쥴링 유닛은 작업이 완료를 위하여 실행되고 작업 큐(52)가 현재 스케쥴링 유닛으로부터 새로운 작업 신호를 수신하기 위하여 준비되어 있다는 것을 통보한다.
실행 파이프라인은 통상적으로 프로그램 기억장치로부터 명령을 페치하며, 명령을 디코드하며, 명령을 실행하고 메모리 기록을 다시 수행하는 회로를 구비한다.
실행 파이프라인(54-1 내지 54-4) 각각은 명령 유닛(60), 실행 유닛(61), 레지스터 파일 메모리(RM)(62) 및 다수의 특수용 하드웨어 레지스터를 구비하는데, 이중 하나는 작업 큐 포인터(JQP)(63)를 위한 레지스터이다. 명령 유닛(60)은 프로그램 기억장치(580로부터 명령을 페치하여 디코드하는 종래의 프로그램 카운터 및 회로를 구비한다. 실행 유닛(61)은 데이터 기억 장치(59)로부터 데이터를 로드하고이 데이터 기억 장치에 데이터를 기억시키는 종래의 로드 기억 유닛, 하나이상의 연산 논리 유닛(ALU) 및 기록을 다시 수행(위임)하는 수단을 구비한다.
특정 실행 파이프라인의 일예는 에릭슨 AXE Digital Switching Systems의 파이프라인이다.
작업 시작
새로운 작업을 실행하는 작업의 일에가 지금부터 간략하게 설명될 것이다. 우선, 실행 준비되는 실행 파이프라인은 작업 큐(52)로부터 새로운 작업을 요청한다. 이 작업 요청(52)은 종래 수단에 의해 트래버스되고 작업 큐(52)의 기억 위치의 유효 플래그 및 취해진 플래그가 검사되어 유효 및 비할당된 작업 신호를 포함하는 다음 위치를 찾는다. 비할당된 작업의 기억 위치에 대한 포인터는 요청 실행 파이프라인의 JQP 레지스터(63)로 전달된다. 이 포인터는 기억 위치에 대한 메모리 어드레스 형태로 될 수 있다. 해당 파이프라인은 다음의 작업 신호에 대한 포인터용 자신의 JQP 레지스터를 자동적으로 판독한 다음 실행 파이프라인으로 포인터에 의해 제공된 작업 신호를 카피하여 대응하는 작업 실행을 시작한다. 작업 큐 (52)의 이 위치에 대한 취해진 플래그가 설정된다. 작업 신호의 헤더는 명령 유닛 (60)의 프로그램 카운터로 카피되는 프로그램 어드레스에 대한 포인터를 포함한다. 작업 신호의 데이터는 작업의 실행시 필요로되는 피연산자를 포함하고 이들 연산자는 레지스터 파일 메모리로 카피되고 작업의 실행동안 실행 유닛 (61)에 의해 사용된다.
명령 유닛(60)은 프로그램 카운터에 의해 규정되는 어드레스에서 시작되는프로그램 기억장치에서 프로그램 코드로부터 명령을 페치하고 나서 명령을 디코딩한다. 실행 유닛(61)은 레지스터 파일 메모리(62)와 협동하여 명령 유닛(600으로부터 수신된 디코딩된 명령을 실행한다. 디코딩된 명령의 실행시 필요로되는 피연산자는 레지스터 파일 메모리(62)로부터 실행 유닛(61)에 의해 로딩된다. 작업의 실행동안, 실행 유닛(61)은 기록 큐(56)로 기록하고 작업이 위임 우선선위를 갖는 경우 기록은 다시 메모리(59) 또는 I/O 유닛으로 수행된다.
의존성 검사 유닛(56)이 추론적으로 실행 작업 및 위임된 작업간의 의존성을 검출하는 경우, 추론적으로 실행되는 작업은 플러시되어야만 된다. 플러시에서, 추론적으로 실행되는 파이프라인에서 작업의 실행은 의존성 검사 유닛(56)에서 해당 실행 파이프라인으로 인터럽트 신호를 전송함으로써 중지된다. 또한, 플러시된 작업에 속하는 의존성 검사 유닛에서 이들 엔트리 및 기록 큐는 무효화된다.
플러시에서 작업 시작
지금부터, 플러시를 취급하는 방법의 일예가 간략하게 설명될 것이다. 플러시에서, 데이터 의존성이 작업을 위하여 검출될때, 작업 실행은 통상적으로 파이프라인에서 인터럽트되며, 이 작업은 Not-Started 상태로 다시 놓여지고 플러시되는 작업에 속하는 의존성 검사 유닛 및 기록 큐에서 이들 엔트리는 무효화된다. 작업 큐(52)에서 대응하는 기억 위치의 완료된 플래그 및 취해진 플래그는 플러시된 작업에 대응하는 작업 신호가 여전히 작업 큐에서 버퍼링되기 때문에 작업 큐(52)로부터 직접적으로 재시작되고 실행 파이프라인에서 JQP 레지스터(63)는 작업 신호가 카피되는 기억 위치에 대한 포인터를 유지한다. 이것은 작업 큐(52)에서 JQP(63)으로부터 특정 위치를 향하는 가리키는 도 3에서 화살표로 표시된다. 그러므로, 실행 파이프라인은 일단 포인터에 의해 제공된 기억 위치로부터 작업 신호를 다시 카피할 수 있고 작업의 실행을 재시작한다. 위임된 작업에 대응하는 작업 신호만이 작업 큐(52)로부터 제거된다.
만일 이것이 실행되는 경우, 플러시될 작업은 반드시 인터럽될 필요가 없다. 그러나, 수행과 관련하여, 이것은 작업을 인터럽트하는데 보다 유용하다.
정보를 작업 큐 필드에 기록하고 위임 우선순위를 작업 신호에 연속적으로 할당하는 바와같은 이 작업 큐(52)를 실행하는 기능은 예를 들어 마이크로 코드 명령 프로그램 또는 어셈블러 프로그램 형태로 소프트웨어에 의해 바람직하게 제어된다. 플러시를 취급하고 기록 큐를 제어하는 바와같은 프로세싱 시스템의 다른 기능은 소프트웨어에 의해 수행될 수 있다. 물론, 이 대신에 하드웨어에서 상기 기능을 수행하도록 하는 것이 가능하다.
이하에서, 기록 큐는 모든 실행 파이프라인을 위한 단일 집중화된 기록 큐로서 설명된다. 이하에서, 분포된 기록큐를 갖는 실시가능한 예가 도 4를 참조하여 설명될 것이다.
도 4는 본 발명의 또다른 실시예를 따른 의존성 검사용 실행 파이프라인 및 회로의 개요도이다. 명령 유닛(60), 실행 유닛(61) 및 레지스터 파일 메모리(62)와 같은 실행 파이프라인의 단지 적절한 부분만이 도 4에 도시되어 있다. 도 4에 도시된 바와 같이, 실행 파이프라인(54-1 내지 54-4)의 각각의 하나의 파이프라인은 기록 큐(71), 기록 큐를 제어하는 기록 큐 상태 기계(72), 판독 버퍼(73), 멀티플렉서(74), 비교 유닛(75) 및 OR-게이트(76)와 관계된다. 이것은 점선의 직사각형으로 도 4에 도시되는데, 이것의 각각은 각각의 실행 파이프라인 및 이것의 관계된 회로를 둘러쌓는다.
특허 출원 WO 88/02153에 서술된 바와같은 모든 실행 파이프라인용 집중화된 기록 큐를 사용하는 대신에, 각각의 파이프라인은 자신의 기록 큐(71)를 갖는다. 각각의 기록 큐(71)는 데이터 기억장치(59)에 대한 기록 어드레스용 어드레스 필드, 데이터 필드 및 유효 필드와 같은 하나이상의 보조 필드를 갖는다. 기록 큐(71)는 종래의 상태 기계(72)에 의해 제어된다. 작업(추론적으로 또는 비추론적으로)을 실행시, 실행 파이프라인은 데이터 기억장치용 기록 어드레스 및 파이프라인에 접속된 기록 큐(71)에 관계된 데이터를 기록한다. 작업이 위임 우선순위를 얻을때, 기록 큐(71)에서 엔트리는 기록 큐 상태 기계(72)의 제어하에서 기록 큐로부터 데이터 기억장치(59)로 전송된다.
판독 버퍼(73)는 실행 파이프라인으로의 데이터 기억 로드를 위한 판독 어드레스용 어드레스 필드 및 유효 필드와 같은 하나이상의 보조 필드를 갖는다. 실행 파이프라인에서 실행 유닛(61)이 데이터 기억장치(59)로부터 실행 파이프라인 로드할 때, 실행 유닛(61)은 판독 어드레스 또는 어드레스들을 파이프라인에 접속된 판독 버퍼(73)에 기억시킨다.
그후, 작업을 추론적으로 실행함으로써 로딩되는 데이터가 위임된 작업에 의해 수정되는 경우, 데이터 의존성이 존재하고 추론적으로 실행되는 작업은 플러시되어 재시작되어야만 된다. 위임 우선순위를 갖는 파이프라인이 데이터기억장치(59)에 기록될때, 기록 어드레스는 추론적으로 실행되는 파이프라인과 관계되는 판독 버퍼에 기억되는 모든 판독 어드레스와 비교되어 위임된 작업 및 추론적으로 실행되는 작업간에 데이터 의존성이 존재하는지를 찾는다. 이 비교는 추론적으로 실행되는 파이프라인과 관계되는 비교 유닛(75)에서 수행된다. 각각의 비교 유닛(75)은 다수의 비교 소자를 구비하는데, 이 소자의 각각은 판독 버퍼(73)로부터의 각각의 판독 어드레스를 데이터 기억장치(59)로의 위임 기록을 위한 데이터 기억 기록 어드레스와 비교한다. 비교 유닛(75)에서 각각의 비교 소자로부터의 출력은 비교 유닛(75)에 접속되는 OR-게이트(76)에 전송되고 이 결과적인 출력 신호는 인터럽트 신호(0/1)로서 해당 파이프라인의 명령 유닛(60)으로 전달된다. 이것은 인터럽트 신호가 고 활성 상태로 설정하기 위하여 판독 버퍼(73)내의 판독 어드레스중 하나가 위임 기록을 위한 어드레스와의 정합이 충분하다는 것을 의미한다. 명령 유닛(60)이 인터럽트 신호를 수신할 때, 실행 유닛(61)이 현재의 작업 실행을 중단하도록 명령한다.
이 실행 유닛(61)은 데이터 기억장치(59)로부터 또는 멀티플렉서(74)를 통해서 기록 큐로부터의 데이터를 로딩할 수 있다. 이 실행 유닛(61)이 어드레스로부터의 데이터를 데이터 기억장치(59)에 로딩시키고 이 실행 유닛(61)이 상기 어드레스가 기록 큐(71)에서 여전히 활용하는 동일한 어드레스 및 데이터에 대해 큐(71)를 기록하기 위하여 사전에 기록되는 경우, 멀티플레서(74)는 기록 큐(71)로부터의 로딩을 인에이블하도록 제어된다. 그렇치 않다면, 데이터는 데이터 기억장치(59)로부터 로딩된다.
작업 신호는 일반적으로 라운드 로빈 방식으로 실행 파이프라인에 할당된다는 것을 이해하여야만 된다. 라운드-로빈 방식에서, 파이프라인은 원형 루프로 배치된 것으로서 간주될 수 있는데, 이것은 한 단계씩 트래버스된다. 예를 들어, 이 배치는 파이프라인 및 기록 큐 위치에서의 위임 위치의 관리를 크게 간단화한다. 작업 큐내의 다음 작업 신호가 위임 위치로 이동할 때, 대응하는 실행 파이프라인은 사전 위임 파이프라인과 비교되는 루프내의 다음 파이프라인으로서 직접적으로 식별되고 식별된 파이프라인에 전용되는 기록 큐에 기억되는 결과가 위임된다.
도 5는 본 발명을 따른 실행 파이프라인의 일예의 개요적인 논리도이다. 실행 파이프라인(80)은 명령 페치 스테이지(10), 명령 캐쉬 스테이지(82), 세분화 스테이지(83), 다수의 디코드 스테이지(84 및 85), 피연산자 판독 스테이지(86), 실행 스테이지(87) 및 위임 스테이지(88)를 구비한다.
이 특정 예에서, 파이프라인(80)은 프로그램 기억장치로부터의 어브셈블러 명령을 포함하는 128-비트 메모리 워드를 페치하여 이들을 하나 또는 여러 마이크로 프로그램 명령으로 디코딩한다. 그리고나서,이 마이크로 명령은 순서를 벗어나서 시행되고 순서대로 위임된다. 파이프라인(80)은 양방향 슈퍼 스칼라(super scalar)인데, 이것은 두개의 명령이 페치되며, 디코딩되어 병렬로 실행될 수 있다는 것을 의미한다.
어셈블러 명령 실행은 다음 명령 어드레스 발생, 페치 스테이지(81)동안 프로그램 기억장치(59)의 명령 레벨 캐쉬로부터의 128-비트 캐쉬 라인을 페칭하는 것과 더불어 시작된다. 이 캐쉬 라인은 세분화 스테이지(83)동안 명령으로 세분화된다. 그리고나서, 명령은 디코드 스테이지(84, 85)에서 하나 또는 여러개의 마이크로 명령으로 디코딩된다. 이 피연산자 판독 스테이지(86)는 디코딩된 마이크로 명령을 수신하여 이들을 실행하기 위하여 준비한다. 이 마이크로 명령은 ALU 유닛, 데이터 기억 판독/기록 유닛 및 점프 유닛을 구비하는 실행 유닛 세트로 통과되고 실행 스테이지(87)동안 실행된다. 마이크로 명령은 모든 자신의 피연산자가 활용될때 어셈블러 및 마이크로 프로그램 코드에 규정된 순서와 관계없이 실행된다. 그러나, 이 결과는 모든 사전 명령이 이와 같이 행해질 때 까지 위임되지 않으며, 레지스터 파일 메모리, 하드웨어 레지스터 또는 데이터 기억장치로 다시 기록되지 않는다.
단일 프로세싱 유닛 또는 프로세서상에서 실행을 위하여 이미 설계된 응용 소프트웨어가 병렬로 다수의 프로세싱 유닛상에서 실행될때, 작업 또는 태스크가 공유 메모리 공간에서 동작하기 때문에 의존성이 발생할 수 있다. 본 발명을 따르면, 여러 프로세싱 유닛에 의해 병렬로 실행되는 작업들간의 이와같은 의존성은 추론적인 실행 및 의존성 검사에 의해 해결된다.
상술된 실시예는 예로서 간단히 제공된 것이지 본 발명이 이에 국한되는 것은 아니다.
예를 들어, 작업 큐(52)는 IPU(50)에 반드시 배치될 필요가 없다. 작업 큐(52)를 스케쥴링 유닛(40)에 결합시키는 것이 가능하다. 게다가, 작업 큐 기능성은 스케쥴링 유닛(400)의 작업 버퍼(44)와 통합되어 작업 버퍼가 작업 큐로서 작용하도록 할수 있다.
게다가, 작업 큐(52)에서 작업 신호는 작업이 완전히 위임될때까지 대기하는 대신에 작업 신호가 위임 우선순위를 얻자마자 큐로부터 제거될 수 있다.
비록 본 발명이 작업 신호를 프로세싱 유닛에 할당되며, 작업 신호를 계속 추적하여 위임 우선순위를 관리하는 프로토콜이 작업 신호 큐 및 이와 관계된 제어 기능성에 의해 수행된다는 관점으로 설명되었지만, 실행 파이프라인 측에서 이 프로토콜을 관리할 수 있다는 것을 이해하여만 된다.
상술된 바에서, 실행 파이프는 별도의 엔티트로서 서술되었는데, 이 각각의 엔티티는 명령 실행을 위하여 사적인 자원을 갖는다. 그러나, 일반적으로, 실행 파이프라인에서 많은 자원은 명령 실행시 완전히 활용되지 않을 것이다. 그리고나서, 자원은 파이들간에서 공유되어 요청 또는 시간 다중화된 방식으로 자원에 실행 파이프 액세스를 제공한다. 높은 자원 공유도를 구현하는 기술은 동시에 멀티스레드(multithreading)하는 것이다. 동시 멀티스레딩시, 거의 모든 자원은 공유되고 각각의 파이프라인에 대한 사적인 자원은 사적 프로그램 카운터 및 명령의 논리적인 레지스터 수 및 물리적인 레지스터간의 사적 매핑으로 제한된다.
용어 "프로세싱 유닛"은 특수용 하드웨어로 제한될 뿐만아니라 표준 선반재고(off-the-self) 마이크로프로세서와 같은 다른 타입의 프로세싱 유닛을 포함한다는 것을 이해하여야만 된다. 표준 마이크로프로세서의 경우에, 의존성 검사는 통상적으로 응용 소프트웨어의 과도한 코드와 함께 통상적으로 도구 판독 및 기록 명령에 의해 수행된다. 플러싱 지원은 응용 소프트웨어에서 수행되고 운영 시스템 또는 가상 기계에 의해 수행된다. 단일 프로세서 시스템을 위하여 기록되는 응용 소프트웨어가 표준 마이크로프로세서 환경으로 이동되고 이 환경에서 재사용되는 경우, 응용 소프트웨어는 재컴파일화(recompilation) 또는 이와 등가의 방식을 통해서 변환될 수 있다. 예를 들어, 추론적으로 프로그램된 응용 소프트웨어는 추론적인 실행을 지원하는 적절한 코드를 부가, 의존성 검사를 위한 코드 및 수정된 변수의 카피를 기억하는 코드를 포함함으로써 변환되어 적절한 플러시 또는 작업의 롤-백을 인에이블하고 나서 소프트웨어를 재컴파일한다. 표준 마이크로프로세서 시스템의 운영 시스템 또는 가상 기계는 또는 수정되어 추론적인 실행을 위한 지원을 제공한다. 예를 들어, 의존성 검사를 위하여 코드를 실행할 때 의존성이 검출되는 경우, 이 제어는 관련 작업을 플러시하는 운영 시스템/가상 기계로 전달될 수 있다.
의존성 검사는 어드레스 비교 방법을 참조하여 서술된다. 그러나, 또한 의존성 검사는 마커 방법에 의해 이루어질 수 있는데, 여기서 각각의 프로세싱 유닛은 주 메모리에서의 변수의 사용을 표시하고 의존성 충돌은 마킹을 토대로 검출된다.
본 발명의 청구범위에 서술된 원리에 따른 각종 수정, 변경 및 개선된 사항은 본 발명의 영역내에 있다.

Claims (23)

  1. 서비스를 자신에 접속된 다수의 사용자에게 제공하는 서비스 네트워크용 프로세서로서,
    - 상기 사용자에 의해 요청되는 실질적으로 독립적인 다수의 서비스 부분을 형성하는 작업에 대응하는 작업 신호를 기억하는 다수의 기억 위치를 갖는 작업 신호 큐로서, 상기 작업 신호중 각각 하나의 신호는 상기 작업 큐의 각각의 기억 위치에 기억되는, 작업 신호 큐,
    - 병렬로 여러 작업을 실행하기 위하여 상기 작업 큐에서 여러 기억 위치로부터 작업 신호를 독립적으로 처리하는 다수의 병렬 프로세싱 유닛으로서, 상기 병렬 작업중 하나의 작업은 비추론적으로 실행되고 상기 병렬 작업의 나머지 작업은 추론적으로 실행되는, 다수의 병렬 프로세싱 유닛,
    - 추론적인 작업 및 비추론적인 작업간의 가능한 의존성을 검사하는 수단 및,
    - 의존성이 추론적인 작업에 대하여 검출되는 경우 상기 추론적인 작업을 플러싱하여 상기 플러싱된 작업의 실행을 재시작하는 수단을 구비하는 것을 특징으로 하는 서비스 네트워크용 프로세서.
  2. 제 1 항에 있어서,
    상기 프로세싱 유닛은 실행 파이프라인 형태인 것을 특징으로 하는 서비스네트워크용 프로세서.
  3. 제 1 항에 있어서, 각각의 프로세싱 유닛은 상기 프로세싱 유닛에 의해 실행될 작업 신호를 유지하는 상기 작업 신호 큐의 기억 위치에 포인터를 기억시키는 레지스터와 관계되고 상기 프로세싱 유닛은 포인터에 의해 제공되는 상기 작업 신호를 상기 프로세싱 유닛으로 카피하도록 동작될 수 있는 것을 특징으로 하는 서비스 네트워크용 프로세서.
  4. 제 3 항에 있어서,
    - 작업 신호가 기억되는 상기 작업 큐에서 각각의 기억 위치에 대해서 상기 작업 신호가 프로세싱 유닛에 할당되는지 여부를 나타내는 수단,
    - 할당되지 않은 작업 신호를 발견하기 위하여 상기 작업 큐를 트래버스하는 수단 및,
    - 작업 요청 프로세싱 유닛과 관계되는 레지스터로 비할당된 작업 신호의 기억 위치에 대한 포인터를 전송하는 수단으로서, 상기 작업 요청 유닛은 상기 포인터에 대해 자신과 관계된 레지스터를 판독하고 상기 포인터에 의해 제공된 작업 신호를 상기 프로세서로 카피하여 대응하는 작업의 실행을 시작하도록 하는, 전송 수단을 더 구비하는 것을 특징으로 하는 서비스 네트워크용 프로세서.
  5. 제 1 항에 있어서,
    상기 작업 신호에 위임 순서를 할당하며, 상기 위임 순서에 따라서 한번에 하나의 작업 신호를 연속적으로 할당하는 수단을 더 구비하며, 비추론적인 실행을 위하여 인에이블되는 위임 신호를 갖는 작업 신호에 대응하는 작업은 상기 메모리 시스템으로 다시 기록되는 것을 포함하는 것을 특징으로 하는 서비스 네트워크용 프로세서.
  6. 제 5 항에 있어서,
    - 각각 추론적으로 실행되는 작업 결과를 일시적으로 기억하는 수단 및,
    - 위임 우선순위가 할당되는 작업 신호에 대하여 대응하는 작업의 일시적으로 기억된 결과를 검색하여 상기 메모리 시스템에 검색된 결과의 재 기록을 수행하는 수단을 더 구비하는 것을 특징으로 하는 서비스 네트워크용 프로세서.
  7. 제 6 항에 있어서,
    상기 플러싱 및 재시작 수단은 :
    - 상기 추론적인 작업의 일시적으로 기억된 결과를 식별하는 수단 및,
    - 상기 식별된 결과를 무효화하는 수단을 구비하는 것을 특징으로 하는 서비스 네트워크용 프로세서.
  8. 제 5 항에 있어서,
    위임 우선순위를 할당하는 상기 수단은 상기 위임 우선순위를 상기 기억 위치의 작업 신호에 할당하기 위하여 위임 위치에 있는 상기 작업 신호 큐의 기억 위치를 가리키는 수단 및 상기 위임 위치로 새로운 기억 위치를 이동시키기 위하여 상기 작업 큐를 단계화(stepping)하는 수단을 구비하는 것을 특징으로 하는 서비스 네트워크용 프로세서.
  9. 제 5 항에 있어서,
    상기 프로세싱 유닛에 의해 실행되는 작업 결과를 일시적으로 기억하는 하나이상의 기록 큐 및 위임 우선순위가 할당되는 작업 결과를 상기 기록 큐로부터 상기 프로세서에 접속되는 메모리 시스템과 같은 외부 유닛으로 전달하는 수단을 더 구비하는 것을 특징으로 하는 서비스 네트워크용 프로세서.
  10. 제 9 항에 있어서,
    상기 플러싱 및 재시작 수단은 :
    - 대응하는 프로세싱 유닛에서 실행을 인터럽트하는 수단,
    - 상기 플러시된 작업에 속하는 상기 기록 큐에서 이들 결과를 무효화하는 수단 및,
    - 상기 플러시된 작업에 속하는 의존성을 검사하는 상기 수단에서 이들 엔트리를 무효화하는 수단을 구비하는 것을 특징으로 하는 서비스 네트워크용 프로세서.
  11. 제 9 항에 있어서,
    각 프로세싱 유닛은 각각의 기록 큐에 접속되어 상기 프로세싱 유닛에 의해 실행되는 작업 결과를 일시적으로 기억하며, 상기 작업 결과는 위임 우선순위가 작업에 할당될때 까지 상기 외부 유닛에 전달되는 것을 특징으로 하는 서비스 네트워크용 프로세서.
  12. 제 11 항에 있어서,
    위임 우선순위를 갖는 프로세싱 유닛을 위한 상기 메모리 시스템 기록 어드레스는 추론적으로 실행되는 프로세싱 유닛 각각 하나의 유닛에 브로드캐스팅되어 상기 추론적으로 실행되는 프로세싱 유닛의 상기 시스템 메모리 판독 어드레스로 의존성 검사하는 것을 특징으로 하는 서비스 네트워크용 프로세서.
  13. 제 1 항에 있어서,
    각각의 작업 신호는 대응하는 작업을 실행하는데 필요한 입력 피연산자를 구비하는 것을 특징으로 하는 서비스 네트워크용 프로세서.
  14. 제 1 항에 있어서,
    데이터 기억 장치 및 프로그램 기억 장치를 더 구비하며, 각각의 작업 신호는 헤더 및 바디를 구비하며, 상기 헤더는 상기 프로그램 기억 장치의 소프트웨어 코드에 대한 포인터를 구비하고 상기 바디는 상기 대응하는 작업을 실행하는데 필요한 피연산자를 포함하는 것을 특징으로 하는 서비스 네트워크용 프로세서.
  15. 제 1 항에 있어서, 상기 서비스 네트워크는 전기통신 네트워크이고 상기 실질적으로 독립적인 서비스는 전기통신 서비스인 것을 특징으로 하는 서비스 네트워크용 프로세서.
  16. 제 1 항에 있어서,
    상기 서비스 네트워크는 호스트 컴퓨터 및 다수의 사용자 터미널을 구비하며, 상기 호스트 컴퓨터는 데이터 베이스 시스템을 구비하고 상기 사용자 단말기는 상기 데이터 베이스 시스템으로부터 실질적으로 독립적인 데이터 베이스 서비스를 요청하기 위하여 동작되는 것을 특징으로 하는 서비스 네트워크용 프로세서.
  17. 제 1 항에 있어서, 상기 작업 큐의 적어도 상기 작업 신호의 서브셋은 상기 사용자에 의한 서비스 요청에 응답하여 발생되는 것을 특징으로 하는 서비스 네트워크용 프로세서.
  18. 서비스를 자신에 접속된 다수의 사용자에게 제공하는 서비스 네트워크용 프로세싱 시스템으로서,
    - 상기 사용자에 의해 요청되는 실질적으로 독립적인 서비스의 부분을 형성하는 작업에 대응하는 작업 신호를 스케쥴링하기 위한 스케쥴링 유닛을 포함하는제1 프로세서(SPU) 및,
    - 상기 제1 프로세서에 접속된 제2 프로세서(IPU)를 구비하며,
    상기 제2 프로세서는 :
    - 상기 스케쥴링 유닛으로부터 수신되는 작업 신호를 기억하는 다수의 기억 위치를 갖는 작업 신호 큐로서, 상기 각각 하나의 작업 신호는 상기 작업 큐의 각각의 기억 위치에 기억되는, 작업 신호 큐,
    - 여러 작업을 병렬로 독립적으로 실행하기 위하여 상기 작업 큐의 여러 기억 위치로부터 작업 신호를 독립적으로 페칭하기 위한 다수의 병렬 처리 유닛으로서, 상기 병렬 작업중 한 작업은 메모리 시스템으로 다시 기록하기 위하여 실행되며, 나머지 작업은 추론적으로 실행되는, 다수의 병렬 처리 유닛,
    - 추론적인 작업 및 다시 기록하기 위하여 실행되는 작업간의 가능한 의존성을 검사하는 수단 및,
    - 의존성이 추론적인 작업에 대하여 검출된 경우 상기 추론적인 작업을 플러싱하고 상기 플러싱된 작업의 실행을 재시작하는 수단을 포함하는 것을 특징으로 하는 서비스 네트워크용 프로세싱 시스템.
  19. 제 18 항에 있어서,
    상기 제2 프로세서의 상기 프로세싱 유닛은 실행 파이프라인 형태인 것을 특징으로 하는 서비스 네트워크용 프로세싱 시스템.
  20. 제 18 항에 있어서,
    상기 제2 프로세서는 위임 우선순위를 상기 작업 신호에, 한번에 하나의 작업 신호를 연속적으로 할당하는 수단을 더 구비하며, 위임 우선순위를 갖는 작업 신호에 대응하는 작업은 상기 메모리 시스템으로 다시 기록하기 위하여 인에이블되는 것을 특징으로 하는 서비스 네트워크용 프로세싱 시스템.
  21. 제 18 항에 있어서,
    각각의 작업 신호는 대응하는 작업을 실행하는데 필요한 입력 피연산자를 포함하는 것을 특징으로 하는 서비스 네트워크용 프로세싱 시스템.
  22. 제 18 항에 있어서,
    상기 서비스 네트워크는 전기통신 네트워크이고 상기 실질적으로 독립적인 서비스는 전기통신 서비스인 것을 특징으로 하는 서비스 네트워크용 프로세싱 시스템.
  23. - 외부 자기포함된 이벤트 신호를 기억하기 위한 다수의 기억 위치를 갖는 큐로서, 상기 이벤트 신호중 각각 하나의 신호는 상기 큐의 각각의 기억 위치에 기억되는, 큐,
    - 대응하는 작업을 병렬로 실행하기 위하여 상기 작업 신호 큐에서 여러 기억 위치로부터 이벤트 신호를 독립적으로 처리하는 다수의 프로세싱 유닛으로서,상기 병렬 작업중 하나의 작업은 비추론적으로 실행되고 상기 병렬 작업의 나머지는 추론적으로 실행되는, 다수의 프로세싱 유닛,
    - 추론적인 작업 및 비추론적인 작업간의 가능한 의존성을 검사하는 의존성 검사기 및,
    - 의존성이 추론적인 작업에 대하여 검사되는 경우, 상기 추론적인 작업을 플러싱하고 상기 플러싱된 작업의 실행을 재시작하는 수단을 구비하는 것을 특징으로 하는 이벤트-구동 프로세싱 시스템.
KR1020017006201A 1998-11-16 1999-11-12 작업-병렬 프로세서 KR20010080469A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SE9803901A SE9803901D0 (sv) 1998-11-16 1998-11-16 a device for a service network
SE9803901-9 1998-11-16
PCT/SE1999/002060 WO2000029939A1 (en) 1998-11-16 1999-11-12 A job-parallel processor

Publications (1)

Publication Number Publication Date
KR20010080469A true KR20010080469A (ko) 2001-08-22

Family

ID=20413294

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017006201A KR20010080469A (ko) 1998-11-16 1999-11-12 작업-병렬 프로세서

Country Status (10)

Country Link
EP (1) EP1133725B1 (ko)
JP (1) JP2002530734A (ko)
KR (1) KR20010080469A (ko)
CN (1) CN100492282C (ko)
AU (1) AU1436900A (ko)
BR (1) BR9915385A (ko)
CA (1) CA2350921A1 (ko)
DE (1) DE69943166D1 (ko)
SE (1) SE9803901D0 (ko)
WO (1) WO2000029939A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100878917B1 (ko) * 2006-06-06 2009-01-15 각코호진 와세다다이가쿠 헤테로지니어스 멀티프로세서용 글로벌 컴파일러
US8806498B2 (en) 2010-08-18 2014-08-12 Samsung Electronics Co., Ltd. Method and system for resolving dependency among the enqueued works and/or finished works and scheduling the dependency-resolved works
KR20180021744A (ko) * 2015-06-29 2018-03-05 쌩뜨레 나티오날 데 라 르세르쉬 생띠끄 (씨. 엔. 알. 에스) 확률론적 병렬 마이크로프로세서

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1456750A1 (en) * 2001-12-12 2004-09-15 Telefonaktiebolaget LM Ericsson (publ) Collision handling apparatus and method
JP2003263331A (ja) * 2002-03-07 2003-09-19 Toshiba Corp マルチプロセッサシステム
GB0226249D0 (en) * 2002-11-11 2002-12-18 Clearspeed Technology Ltd Traffic handling system
CN100345132C (zh) * 2003-07-28 2007-10-24 华为技术有限公司 一种并行处理的方法及系统
KR100856468B1 (ko) 2007-01-08 2008-09-04 재단법인서울대학교산학협력재단 임베디드 소프트웨어의 객체지향 태스크 모델을멀티프로세서 시스템 온 칩 하드웨어 아키텍처로 자동할당하기 위한 방법
CN101656658B (zh) * 2008-08-21 2013-03-20 中兴通讯股份有限公司 一种提高队列管理中出队效率的方法和装置
CN101551758B (zh) * 2009-05-13 2013-06-05 中兴通讯股份有限公司 一种实现设备管理任务并行工作的系统和方法
US9846628B2 (en) 2010-06-15 2017-12-19 Microsoft Technology Licensing, Llc Indicating parallel operations with user-visible events
US8423516B2 (en) * 2010-09-15 2013-04-16 International Business Machines Corporation Speculative execution in a real-time data environment
CN102455932B (zh) * 2010-10-22 2014-06-25 金蝶软件(中国)有限公司 一种任务实例串行执行方法、装置及系统
CN103176862B (zh) * 2011-12-20 2017-03-01 伊姆西公司 用于管理数据备份任务的设备和方法
US9436917B2 (en) * 2013-02-05 2016-09-06 Cisco Technology, Inc. Accelerating learning by sharing information between multiple learning machines
CN104750547B (zh) * 2013-12-31 2018-05-18 华为技术有限公司 虚拟机的输入输出io请求处理方法及装置
TWI597666B (zh) * 2015-12-28 2017-09-01 緯創資通股份有限公司 共享裝置的使用方法及資源共享系統
CN107391262B (zh) * 2017-07-31 2020-05-15 李黎黎 一种作业调度方法及装置
CN108491380B (zh) * 2018-03-12 2021-11-23 思必驰科技股份有限公司 用于口语理解的对抗多任务训练方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5072364A (en) * 1989-05-24 1991-12-10 Tandem Computers Incorporated Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
US5511172A (en) * 1991-11-15 1996-04-23 Matsushita Electric Co. Ind, Ltd. Speculative execution processor
EP0661625B1 (en) * 1994-01-03 1999-09-08 Intel Corporation Method and apparatus for implementing a four stage branch resolution system in a computer processor
KR20000064491A (ko) * 1995-12-19 2000-11-06 에를링 블로메, 타게 뢰브그렌 명령처리기용작업스케줄링
US5848257A (en) * 1996-09-20 1998-12-08 Bay Networks, Inc. Method and apparatus for multitasking in a computer system
US6240509B1 (en) * 1997-12-16 2001-05-29 Intel Corporation Out-of-pipeline trace buffer for holding instructions that may be re-executed following misspeculation

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100878917B1 (ko) * 2006-06-06 2009-01-15 각코호진 와세다다이가쿠 헤테로지니어스 멀티프로세서용 글로벌 컴파일러
US8806498B2 (en) 2010-08-18 2014-08-12 Samsung Electronics Co., Ltd. Method and system for resolving dependency among the enqueued works and/or finished works and scheduling the dependency-resolved works
KR20180021744A (ko) * 2015-06-29 2018-03-05 쌩뜨레 나티오날 데 라 르세르쉬 생띠끄 (씨. 엔. 알. 에스) 확률론적 병렬 마이크로프로세서

Also Published As

Publication number Publication date
BR9915385A (pt) 2001-07-31
DE69943166D1 (de) 2011-03-10
EP1133725A1 (en) 2001-09-19
CA2350921A1 (en) 2000-05-25
CN1326567A (zh) 2001-12-12
WO2000029939A1 (en) 2000-05-25
JP2002530734A (ja) 2002-09-17
CN100492282C (zh) 2009-05-27
AU1436900A (en) 2000-06-05
SE9803901D0 (sv) 1998-11-16
EP1133725B1 (en) 2011-01-26

Similar Documents

Publication Publication Date Title
KR20010080469A (ko) 작업-병렬 프로세서
US6108766A (en) Structure of processor having a plurality of main processors and sub processors, and a method for sharing the sub processors
JP3771957B2 (ja) プロセッサ・アーキテクチャにおける分散制御のための装置および方法
US6671827B2 (en) Journaling for parallel hardware threads in multithreaded processor
EP1131739B1 (en) Batch-wise handling of job signals in a multiprocessing system
EA004071B1 (ru) Управляющий программный продукт и система обработки данных
KR20010095074A (ko) 다중 스레드 초장 명령어 프로세서, 명령어 처리 방법 및그 제품, 및 명령어 컴파일링 제품 및 컴파일러
EP1963963A2 (en) Methods and apparatus for multi-core processing with dedicated thread management
US20120331268A1 (en) Reconfigurable processor architecture
US6405234B2 (en) Full time operating system
WO2000029943A1 (en) Processing system scheduling
JP2002530735A5 (ko)
EP1131701A1 (en) Multiple job signals per processing unit in a multiprocessing system
JP4608100B2 (ja) 多重処理システムにおける改良結果処理方法
US6581089B1 (en) Parallel processing apparatus and method of the same
US5442761A (en) Method by which packet handler inserts data load instructions in instruction sequence fetched by instruction fetch unit
JP3169624B2 (ja) プロセッサ間通信方法およびそのための並列プロセッサ
Kawano et al. Fine-grain multi-thread processor architecture for massively parallel processing
JP2002163121A (ja) 仮想マルチスレッドプロセッサ及びスレッド実行方法
JPH06236272A (ja) スーパースカラ・プロセッサ・システムの同期化効率を向上させる方法およびシステム
Aridor et al. Open job management architecture for the Blue Gene/L supercomputer
US5386586A (en) System and method for construction of lists of deferred service requests
JP2005528671A (ja) 多重プロセッサデータ処理システムにおけるデータ処理方法及び対応するデータ処理システム
US20090019259A1 (en) Multiprocessing method and multiprocessor system
JPH10340197A (ja) キャッシング制御方法及びマイクロコンピュータ

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application