KR19980079896A - 비동기로 실행할 태스크가 다수 있어도 비동기 이벤트 태스크를 효율적으로 실행할 수 있는 프로세서 - Google Patents

비동기로 실행할 태스크가 다수 있어도 비동기 이벤트 태스크를 효율적으로 실행할 수 있는 프로세서 Download PDF

Info

Publication number
KR19980079896A
KR19980079896A KR1019980007122A KR19980007122A KR19980079896A KR 19980079896 A KR19980079896 A KR 19980079896A KR 1019980007122 A KR1019980007122 A KR 1019980007122A KR 19980007122 A KR19980007122 A KR 19980007122A KR 19980079896 A KR19980079896 A KR 19980079896A
Authority
KR
South Korea
Prior art keywords
task
instruction
address
bit
identifier
Prior art date
Application number
KR1019980007122A
Other languages
English (en)
Other versions
KR100450228B1 (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 KR19980079896A publication Critical patent/KR19980079896A/ko
Application granted granted Critical
Publication of KR100450228B1 publication Critical patent/KR100450228B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Executing Machine-Instructions (AREA)
  • Processing Or Creating Images (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 MPEG 스트림을 개시하는 가변 부호 길이의 멀티미디어 데이터를 재생하는 AV 디코더에 구비되어, AV디코더 내부의 메인 프로세서의 주변 제어를 담당하는 프로세서에 관한 것으로, 카운터(52)는 초기값이『1』로 설정되고, 상한값이 『4』로 설정된 카운터이며, 클록신호에 동기하여 플립플롭(51)에 유지되어 있는 카운트값을 1, 2, 3, 4, 1, 2, 3, 4와 같은 식으로 카운트 업한다. 이 클록신호는 명령해독 제어부(11)가 명령을 실행 제어하기 위해 이용하고 있는 것이므로 카운터(52)에 의한 카운트 업은 명령해독 제어부(11)가 명령 실행을 1회 행할 때마다 이루어진다. 비교기(54)는 카운터(52)가 카운트 업한 값과, 정수값『4』를 비교하여, 만약 카운터(52)의 카운트값과 정수값『4』가 일치하면, 태스크 전환신호 chg_task_ex를 하이값으로 하여 다음 태스크를 소화하도록 전환한다.

Description

비동기로 실행할 태스크가 다수 있어도 비동기 이벤트 태스크를 효율적으로 실행할 수 있는 프로세서.
MPEG 스트림을 위시한 가변부호길이의 멀티미디어 데이터를 재생하는 AV 디코더에 구비되어, AV 디코더 내부의 메인 프로세서의 주변 제어를 담당하는 프로세서에 관한 것이다.
MPEG 스트림의 재생 기술은 멀티미디어 사회의 기반 기술의 하나이기도 하며, 최근 그 수요는 놀라울 정도로 높아지고 있다. MPEG 스트림의 재생 기술이 새로운 활약의 무대로서 주목을 받고 있는 것은, 인터랙티브한 동화상 재생, 음성 재생을 가능하게 하는 민생 기기 분야이고, 이 분야에서 성공하기 위해 메이커 각사의 기술자는 MPEG 스트림의 재생을 고도로 이룰 수 있는 AV 디코더의 연구 개발에 심혈을 기울이고 있다.
MPEG 스트림의 재생 기술로써 해야 하는 처리에는 여러가지 것이 있지만, 그들은 코어 처리와, 비동기 이벤트 처리로 크게 구별된다.
코어 처리란 역양자화, 역이산 여현변환, 동작 보상 등, 종16× 횡16개의 화소로 이루어지는 매크로 블록을 대상으로 한 처리이다. 매초 4050개의 매크로 블록을 처리해야 하므로(4050=30프레임×30슬라이스×45 매크로 블록), 그 연산량은 방대한 것으로 된다. 코어처리의 실행에는, 파이프라인 처리가 적합하지만, 하드웨어 규모의 증대를 염려하지 않는 경우는, 해독기나 연산기를 복수로 하여 코어 처리의 부하를 분산시키는 것이 좋다.
비동기 이벤트 처리란 복수의 요인이 겹치는 것에 의해 특정한 사상이 성립하고 있는 기간에 집중적으로 해야 되는 처리, 혹은 소정의 주기를 갖고 간헐적으로 해야 되는 처리이며, 코어 처리와 동기하여 행할 수 없는 처리의 총칭을 말한다.
AV 디코더에 있어서, 이러한 비동기 이벤트 처리에 해당하는 처리에는 기록 매체나 통신 매체로부터의 MPEG 스트림 입력에 관한 것(1), AV디코더로부터 영상 재생기기, 음성 재생기기로의 출력에 관한 것(2), AV 디코더와, AV 디코더 외부에 접속된 확장 메모리와의 입출력에 관한 것(3)의 3종류가 있다.
기록매체로부터의 스트림 입력에 관한 비동기 이벤트 처리(1)는 또한, 광디스크 등의 기록 매체나 통신 매체로부터 MPEG 스트림을 도입하여 엘리먼터리 스트림을 추출하는 추출 처리(1-1), 추출된 엘리먼터리 스트림을 확장 메모리로서 접속되어 있는 SDRAM에 기입하는 기입처리(1-2)가 있다.
재생 출력에 관한 비동기 이벤트 처리(2)는 또한, 복호가 끝난 동화상 스트림, 오디오 스트림을 영상 신호, 음성 신호로 각각 변환하여 디스플레이, 스피커로 출력하는 처리(2-1)와, MPEG 스트림의 프라이비트 스트림으로서 출력되는 부영상을 묘화하고, 이것을 동화상 데이터와 혼합하여 영상 신호에 자막을 합성하는 처리(2-2)를 포함한다.
확장 메모리와의 입출력에 관한 비동기 이벤트 처리(3)는 또한, 역양자화, 역이산 여현변환, 동작 보상 등의 처리가 실시된 데이터가 내부 버퍼에 축적되는 것을 감시하고, 그 축적량이 일정량이 된 단계에서 SDRAM에 정리하여 기입하는 처리(3-1), 역양자화, 역이산 여현변환, 동작 보상의 진척에 따라 다음에 처리해야 할 데이터를 외부에 접속된 SDRAM으로부터 내부 버퍼에 간헐적으로 보충하는 보충처리(3-2)가 있다.
이상의 처리 외에도, 조작자로부터의 조작에 따라 행해야 할 처리는 이 비동기 이벤트 처리로 분류된다. 단지 MPEG 스트림의 재생뿐 아니라, 조작자의 대화성을 중시한 재생 장치의 응용 시스템을 설계하는 경우나 호스트 컴퓨터와의 동기 제어를 전제로 한 시스템을 설계하는 경우는 더욱 많은 비동기 이벤트 처리를 AV 디코더에 처리시킬 필요가 있다.
상기 처리 중, 처리(2-1)의 오디오에 관한 처리는 오디오 출력 태스크라 하고, 90μsec라는 간헐적인 주기를 갖는다. 또한 처리(2-1) 중, 비디오에 관한 처리는 비디오 출력 태스크라 하고, 디스플레이의 수평 동기신호의 간헐적인 주기에 기초한 50μsec에 있어서, 1라인분의 화상 처리를 완수해야만 한다.
이와 같이 비디오 출력 태스크, 오디오 출력 태스크에 실행 주기가 주어지는 것은, 이들의 태스크 처리가 완수되지 않으면 동화상과 음성이 시간이 흐름에 따라 원활하게 재생되지 않기 때문이다. 즉, 비디오 출력 태스크, 오디오 출력 태스크의 처리를 50μsec, 90μsec라는 주기 내에 완수하는 것이, 동화상 재생, 음성 재생의 실시간성을 만족하기 위한 최대 요건이 된다.
종래의 MPEG 스트림 재생기술에 있어서는, 이상의 비동기 이벤트 처리를 범용 프로세서에 행하게 하는 경우, 비동기 사상의 발생이나 소정 주기의 도래를 인터럽트 신호에 의해 범용 프로세서에 통지한다. 통지후, 범용 프로세서는 분기 명령을 이용하여 비동기 이벤트 처리로 분기한다.
그러나 인터럽트 신호를 이용하여 범용 프로세서에 비동기 이벤트 처리를 실행시킨다고 하는 종래의 방식에서는, 오디오 출력 태스크, 비디오 출력 태스크의 처리를 완수하기 위해서는 동작 클록을 얼마로 정하면 좋은 가를 나타내는 동작 클록수의 최적 하한값이 1의적으로 계산되지 않는다는 문제점이 있다.
최적의 하한값이 계산되지 않기 때문에 대강의 짐작으로 동작 클록수를 결정해야 하며, 동작 클록수를 아무래도 높게 설정하는 경향이 있다.
종래의 방식에서는 어떠한 계산법으로 동작 클록을 계산하고 있는 가를 이하에 설명하기로 한다. 주기가 다른 비동기 이벤트 태스크로서 90μsec의 실행 주기를 갖는 오디오 출력 태스크와, 50μsec의 실행 주기를 갖는 비디오 출력 태스크를 실행해야 하는 것으로 한다. 이 경우, 오디오 출력 태스크는 Oμsec, 90μSec, 180μsec, 270μsec, 360μsec, 450μsec와 같은 식으로 90μsec마다 오디오 스트림의 복호를 완수해야 하며, 비디오 출력 태스크는 Oμsec, 50μsec, 100μsec, 150μsec, 200μsec, 250μsec, 300μsec, 350μsec와 같은 식으로 50μsec마다 동화상 스트림의 복호를 완수해야 한다. 종래의 범용 프로세서는 2개의 실행 주기의 도래를 인터럽트 신호로서 통지하여, 그 후 비디오 출력 태스크, 오디오 출력 태스크를 처리하게 된다.
인터럽트 신호에 의해 실행시기의 도래를 알고 나서, 오디오 출력 태스크, 비디오 출력 태스크를 기동하고자 하면 각 태스크가 처리를 완수해야 하는 기간은 자신을 기동하기 위한 인터럽트 신호의 발생 타이밍으로부터 다음 태스크를 기동하기 위한 인터럽트 신호의 발생 타이밍까지로 정해진다.
도 1은 이들 주기가 인터럽트 신호에 의해 범용 프로세서에 통지되어, 실행하는 경우를 상정한 타이밍차트이다. 본 도면에서 오디오 출력 태스크와 비디오 출력 태스크의 처리완수를 위한 기간이 어떻게 나타나는 가를 설명한다.
펄스(P1)의 상승 및 펄스(P5)의 상승이 발생하여, 비디오 출력 태스크, 오디오 출력 태스크를 기동하는 취지가 범용 프로세서에 통지되면, 다음 인터럽트 신호인 펄스(P2)의 상승이 통지되기까지의 50μsec 기간이 비디오 출력 태스크 및 오디오 출력 태스크의 처리를 완수시키기 위한 기간이 된다.
한편, 펄스(P6)의 상승이 발생하여, 오디오 출력 태스크를 기동하는 취지가 범용 프로세서에 통지되면 다음 인터럽트 신호인 펄스(P3)의 상승이 통지되기까지의 불과 10μsec 기간이 오디오 출력 태스크 완수를 위한 기간이 된다.
시간 제한으로부터 동작 클록을 계산하는 방식에서는, 10μsec와 같은 매우 짧은 기간, 즉 시간 제한의 최악의 경우에 있어서도 오디오 출력 태스크, 비디오 출력 태스크를 완수하는 만큼의 동작 클록수가 요구된다. 그렇게 하면 동작 클록을 한층 높은 것으로 결정해야 한다. 그러나 쉽게 동작 클록을 고속으로 하면, 소비 전력도 현저하게 증대되어 민생 기기의 용도에 적합하지 않게 된다.
본 발명의 목적은, 소정의 주기로 완수해야 하는 처리량이 미리 정해져 있는 비동기 이벤트 처리가 복수 있는 경우에, 각각의 비동기 이벤트 태스크에 어느 만큼의 사이클수를 할당하면 되는지를 나타내는 최적의 하한값을 1의적으로 계산할 수 있는 동시에, 그들의 최적의 하한값으로부터 전체 태스크를 동작시키기 위한 동작 사이클수의 하한값을 1의적으로 계산할 수 있는 프로세서를 제공하기 위한 것이다.
도 1은 인터럽트 신호로서 오디오 출력 태스크, 비디오 출력 태스크를 실행하는 경우에 동화상 스트림, 오디오 스트림의 처리를 어느 시점까지 완수해야 하는지를 나타내는 타이밍차트
도 2a는 AV 디코더의 내부 구성을 도시한 도면
도 2b는 MPEG 스트림의 계층 구조와, AV 디코더의 구성요소간 동작 타이밍을 도시한 타이밍차트
도 3은 제 1 실시예에서의 I/0 프로세서의 내부 구성을 도시한 도면
도 4a는 제 1 실시예에서의 명령 판독 회로(10)의 내부 구성을 도시한 도면
도 4b는 도 10 내의 셀렉터(25)의 출력 논리표를 도시한 도면
도 5는 제 1 실시예에서의 태스크 관리부(15)의 내부 구성을 도시한 도면
도 6a는 태스크 식별자 taskid의 비트 구성을 도시한 도면
도 6b는 라운드값의 비트 구성을 도시한 도면
도 7a는 제 1 실시예에서 명령 메모리(100)에 기억되어 있는 비동기 이벤트 태스크가 어떻게 구성되어 있는지를 도시한 도면
도 7b는 레지스터를 오퍼랜드에 지정한 산술 연산 명령의 명령 포맷을 도시한 도면
도 7c는 레지스터로서 판독장소 어드레스, 기입장소 어드레스를 지정한 메모리 로드명령/메모리 저장명령의 명령 포맷을 도시한 도면
도 7d는 8비트, 11비트의 즉치의 설정이 가능한 비교명령 / 연산명령 / 분기명령의 명령포맷을 도시한 도면
도 8은 제 1 실시예에서 IPC, IF1, IF2, DECPC가 어떻게 갱신되는지를 도시한 타이밍차트
도 9는 태스크(O)로부터 태스크(5)까지 어떻게 슬롯을 할당하는가를 도시한 도면
도 10a는 제 2 실시예에서 명령 메모리(100)에 기억되어 있는 비동기 이벤트 태스크가 어떠한 명령으로 구성되어 있는지를 도시한 도면
도 10b는 wait_until_next_slot 명령의 명령 포맷의 예를 도시한 도면
도 11은 제 2 실시예에서, IPC, IF1, IF2, DECPC가 어떻게 갱신되는가를 도시한 타이밍차트
도 12는 제 2 실시예에서 태스크(0)로부터 태스크(5)까지 어떻게 슬롯을 할당하는가를 도시한 도면
도 13은 제 3 실시예에서의 AV 디코더의 내부 구성을 도시한 도면
도 14a는 제 3 실시예에서의 명령 판독 회로(10)의 내부 구성을 도시한 도면
도 14b는 제 3 실시예에서의 명령 판독회로(10) 내의 셀렉터(25)의 출력 논리표를 도시한 도면
도 15는 제 3 실시예에서의 슬롯 매니저(61)의 내부 구성을 도시한 도면
도 16은 태스크관리 레지스터(13)에 있어서 대기 상태 관리용으로 할당된 6비트의 비트 구성을 도시한 도면
도 17은 제 3 실시예에서의 상태감시 레지스터의 비트 구성을 도시한 도면
도 18a는 제 3 실시예에서 어떤 태스크에 cmp_and_wait 명령이 포함되어 있는지를 도시한 도면
도 18b는 사상 j0, j3, j4, j5가 불성립인 상태에서 도 18a에 도시된 각 태스크에 어떻게 슬롯이 할당되는지를 도시한 도면
도 18c는 사상 j0만이 성립한 프레임에 있어서, 도 18a에 도시된 각 태스크에 어떻게 슬롯이 할당되는지를 도시한 도면
도 18d는 사상 j0가 성립한 프레임 이후에서, 도 18a에 도시된 각 태스크에 어떻게 슬롯이 할당되는지를 도시한 도면
도 18e는 cmp_and_wait 명령의 명령 포맷의 일례를 도시한 도면
도 19a는 cmp_and_wait 명령 해독시에 있어서 IPC, IF1, IF2, DECPC가 어떻게 갱신되고, 태스크관리 레지스터(13)의 비트 및 카운터의 상한값이 어떻게 설정되는 지를 도시한 타이밍차트
도 19b는 cmp_and_wait 명령이 대기하고 있던 사상의 미성립시의 프레임에 있어서, IPC, IF1, IF2, DECPC가 어떻게 갱신되고, 태스크관리 레지스터(13)의 비트 및 카운터의 상한값이 어떻게 설정되는지를 도시한 타이밍차트
도 19c는 cmp_and_wait 명령이 대기하고 있는 사상의 성립시의 프레임에 있어서, IPC, IF1, IF2, DECPC가 어떻게 갱신되고, 태스크관리 레지스터(13)의 비트 및 카운터의 상한값이 어떻게 설정되는지를 도시한 타이밍차트
도 19d는 사상의 성립시 이후의 프레임에 있어서, IPC, IE1, IF2, DECPC가 어떻게 갱신되고, 태스크관리 레지스터(13)의 비트 및 카운터의 상한값이 어떻게 설정되는지를 도시한 타이밍차트
도 20은 제 3 실시예에서의 태스크 관리부(15)의 내부 구성을 도시한 도면
도 21은 제 3 실시예에서의 스케쥴러(62)의 내부 구성을 도시한 도면
도 22는 셀렉터(82)가 긴급 태스크의 식별자를 출력하는 조건을 도시한 도면
도 23은 cstate 기억부(85)가 기억하고 있는 모드의 상태천이도
도 24는 긴급 상태천이 허가신호, 태스크 전환신호 chg_task_ex, cstate의 천이에 따라 어떤 태스크 식별자가 출력되는지의 타이밍을 도시한 타이밍차트
도 25a는 통상상태에서 각 태스크에 어떻게 슬롯을 할당하는지를 도시한 도면
도 25b는 긴급상태에서 각 태스크에 어떻게 슬롯을 할당하는지를 도시한 도면
도 26은 제 4 실시예에서의 태스크 관리부(15)의 내부 구성을 도시한 도면
도 27은 태스크관리 레지스터(13)에서 휴면 상태에 할당된 비트의 할당을 도시한 도면
도 28은 제 4 실시예에서의 스케쥴러(62)의 내부 구성을 도시한 도면
도 29a는 제 4 실시예에서 휴면 명령 및 기동 명령이 각 태스크에 어떻게 배치되어 있는지를 도시한 도면
도 29b는 휴면 명령 및 기동 명령의 명령 포맷의 일례를 도시한 도면
도 30은 제 4 실시예에서 IPC, IF1, IF2, DECPC가 어떻게 갱신되는지를 도시한 타이밍차트
도 31a∼도 31d는 제 4 실시예에서 각 태스크에 어떻게 슬롯을 할당하는지를 도시한 도면
도 32는 제 5 실시예에서의 태스크 관리부(15)의 내부 구성을 도시한 도면
도 33은 제 5 실시예에서의 스케쥴러(62)의 내부 구성을 도시한 도면
도 34는 제 1 실시예에서의 I/0 프로세서의 전체 제어를 도시한 흐름도
도 35는 제 2 실시예에서의 I/0 프로세서의 전체 제어를 도시한 흐름도
도 36은 제 3 실시예에서의 I/0 프로세서의 전체 제어를 도시한 흐름도
도 37은 제 4 실시예에서의 입출력 프로세서의 전체 제어를 도시한 흐름도
도 38은 제 5 실시예에서의 I/0 프로세서의 전체 제어를 도시한 흐름도
도 39는 제 1 실시예에서의 슬롯의 할당이 어떻게 진행하는지를 도시한 도면
도 40은 제 2 실시예에서의 슬롯의 할당이 어떻게 진행하는지를 도시한 도면
도 41은 제 3 실시예에서의 슬롯의 할당이 어떻게 진행하는지를 도시한 도면
도 42는 제 4 실시예에서의 슬롯의 할당이 어떻게 진행하는지를 도시한 도면
도 43은 제 5 실시예에서의 슬롯의 할당이 어떻게 진행하는지를 도시한 도면
도 44는 제 1 실시예에서의 슬롯 할당으로써 비디오 출력 태스크, 오디오 출력 태스크를 실행하는 경우에 동화상 스트림, 오디오 스트림이 어떻게 처리되는지를 도시한 타이밍차트
도 45는 태스크별로 사이클수를 가변으로 하는 경우의 슬롯 매니저의 구성도
도면의 주요 부분에 대한 부호의 설명
10 : 명령 판독회로 11 : 명령 해독 제어부
12 : 범용 레지스터 14 : 연산 실행부
15 : 태스크 관리부 20 : IF1+1 유지부
21 : 증분 회로 22 : IF2 유지부
23 : DECPC 유지부 24 : 태스크별 PC 저장부
25, 26 : 셀렉터 51 : 플립플롭
52 : 카운터 54 : 비교기
61 : 슬롯 매니저 62 : 스케쥴러
71, 72 : 태스크 ID 유지부 73 : 태스크 라운드 관리부
74 : 우선순위 인코더 100 : 명령 메모리
101 : 스트림 입력부 102 : 버퍼 메모리
103 : 비트 스트림 FIFO 104 : 셋업부
105 : VLD부 106 : IQ/IDCT부
107 : 동작 보상부 108 : 비디오 출력부
109 : 오디오 출력부 110 : 버퍼 메모리 컨트롤러
111 : RAM 컨트롤러 112 : FIFO 컨트롤러
115 : 호스트 I/O부 121 : 버퍼 메모리 버스
122 : SDRAM 버스 123 : 비트 스트림 버스
124 : IO 컨트롤 버스 300 : SDRAM
상기 목적은 n개의 태스크를 실행 대상 태스크로 한 프로세서로서, n개의 태스크 식별자를 출력하고, 그 태스크에 할당된 수의 명령이 실행되면 다음 태스크 식별자를 소정의 순서로 출력하는 실행 태스크 지시수단과, 출력되는 태스크 식별자로 특정되는 태스크 중 실행해야 할 명령을 차례로 지정하는 명령 지정수단과, 지정된 명령을 실행하는 실행수단을 구비하는 프로세서에 의해 달성된다.
본 프로세서는 인터럽트 신호의 발행을 대기하는 것은 아니고, 오디오 출력 태스크, 비디오 출력 태스크를 포함시킨 n개의 태스크를 소정의 명령수씩 차례로 실행한다.
이와 같이 차례로 실행되기 때문에 오디오 출력 태스크, 비디오 출력 태스크의 처리를 완수시키기 위한 동작 클록수의 최적의 하한값을 소정의 주기에서 실행해야 하는 명령의 최저 소화수와, 실행 주기와, 태스크 총수로부터 1의적으로 도출할 수 있고, 그들의 최적의 하한값으로부터 전체 태스크를 동작시키기 위한 동작사이클수의 최적의 하한값을 1의적으로 계산할 수 있다.
동작 클록수의 최적의 하한값이 1의적으로 계산되기 때문에 동작 클록신호를 한층 높은 것으로 정하지 않아도 오디오 출력 태스크, 비디오 출력 태스크의 실시간성을 보증할 수 있고, 동작 클록이 저속인 타입이 많은 민생 기기에 탑재되는 경우라도, MPEG 스트림을 적합하게 복호할 수 있다.
여기에서 실행 태스크 지시수단은 실행된 명령을 카운트하여, 카운트값이 실행 중 태스크에 할당된 명령수가 되면 태스크 전환신호를 발생하는 태스크 전환신호 발생기와, 태스크 전환신호가 발생될 때마다 다음 순위의 태스크 식별자를 생성하여 출력하는 태스크 식별자 출력부로 구성할 수 있다.
여기에서 태스크 식별자 출력부는 각 태스크 식별자를 몇번째에 출력하는 가를 나타내는 출력 순위를 n개의 모든 태스크에 대하여 기억하는 순위 기억부와, 태스크 전환신호가 발생될 때마다 순위 기억부에서 출력 순위가 다음 순위로 되는 태스크 식별자를 명령 지정수단에 출력하는 선택 출력부로 구성할 수 있다.
여기서 어떤 태스크는 긴급 취급을 요하는 취지의 긴급 선언 명령을 포함하며, 상기 실행 태스크 지시수단은 프로세서 외부에서 입력되는 소정 신호를 감시함으로써 당해 프로세서 외부가 긴급 기간 내인지, 긴급 기간 외인지를 판정하는 감시수단과, 소정 신호가 긴급 기간 내인 경우에, 긴급 취급해야 할 태스크인 긴급 태스크의 식별자를 유지하는 긴급 태스크 레지스터와, 긴급 기간 외에서 태스크 전환신호가 발생되면 선택 출력부가 미출력 태스크로부터 선택하여 출력한 태스크 식별자를 실행 수단에 직접 출력하고, 긴급 기간 내에 태스크 전환신호가 발생되면, 태스크 전환신호의 m회의 발신에 대해(m≥2) 1회의 비율로, 긴급 태스크 레지스터가 유지하고 있는 태스크 식별자를 실행 수단에 출력하는 출력비율 제어부를 구성할 수 있다.
본 구성에 의하면 영상 출력에 관한 비동기 이벤트 태스크의 식별자를 긴급 태스크 레지스터에 유지시켜 놓고, 출력비율 제어부가 긴급 기간 내에 태스크 전환신호의 m회 발신에 대해 1회의 비율로, 긴급 태스크 레지스터가 유지하고 있는 태스크 식별자를 출력하면, 디스플레이에서의 수평 블랭킹 기간, 수직 블랭킹 기간 내에 비트 스트림을 실행시켜 둘 수 있다. 이에 따라 영상 신호로의 신장을 표시기간에 맞출 수 있다. 이와 같이 재생계 하드웨어 처리가 주기적으로 오프가 되는 기간에 동기하여, 효율적으로 동화상 데이터를 처리하면 동화상 데이터 태스크의 실시간성을 향상시킬 수 있다.
여기에서 어떤 태스크는 자신의 실행을 휴면상태로 설정할 취지의 자발휴면명령을 포함하고, 상기 실행수단은 또한, 명령 지정수단이 다음에 실행할 명령으로서 지정한 명령을 해독하는 해독수단을 구비하고, 상기 실행 태스크 지시수단은 또한, 해독수단에 의한 해독결과가 자발휴면명령이면 당해 명령을 포함하는 태스크를 휴면취급을 요하는 태스크로서 그 태스크 식별자를 유지하는 휴면 태스크 레지스터를 구비하며, 상기 선택 출력부는 순위 기억부가 기억에서의 다음 순위 태스크 식별자가, 휴면 태스크의 태스크 식별자이면 그 다음 순위의 태스크 식별자를 출력하도록 구성할 수 있다.
MPEG 스트림의 복호처리에 있어서는 처리가 필요하게 되는 주기가 크게 다른 태스크를 병렬 실행하지 않으면 안된다. 예를 들면, 매크로 블록에 포함되어 있는 휘도 블록, 색차 블록을 버퍼 사이에서 전송시키기 위한 전송 제어용의 태스크는 매크로 블록에 있어서, 적어도 6회 이상의 빈도로써 기동하지 않으면 안된다. 이에 대하여, MPEG 스트림으로부터 엘리먼터리 스트림을 추출하는 태스크는 적은 빈도로 기동하면 좋다.
휴면 태스크 레지스터는 태스크에 자발휴면명령이 포함되어 있으면, 당해 명령을 포함하는 태스크를 휴면 취급을 요하는 태스크로서 그 태스크 식별자를 유지하고, 상기 선택출력부는 순위 기억부가 기억에서의 다음 순위의 태스크 식별자가, 휴면 태스크의 태스크 식별자이면, 그 다음 순위의 태스크 식별자를 출력하기 때문에 실행 빈도가 적은 태스크 실행을 생략할 수 있다. 이에 따라 비동기 이벤트 처리의 기동빈도의 차이를 고려하여 각 비동기 이벤트 태스크에 스스로 휴면상태에 들어 갈 기회를 부여하여 태스크의 순회 효율을 향상시킬 수 있다.
또한, n개의 태스크를 실행 대상 태스크로 한 프로세서로서, 정해진 사이클수로 태스크를 차례로 선택하는 태스크 선택수단과, 태스크와 1대 1의 관계로 n개의 명령 지정정보를 갖고, 태스크 선택수단에 의해 태스크가 선택되면 그것에 대응한 명령 지정정보를 효율적으로 하는 동시에, 그 정보를 기점으로 하여 다음에 판독할 명령을 지정하는 정보를 동적으로 생성하는 명령 지정수단과, 명령 지정수단으로써 지정된 명령을 판독 실행하는 실행수단을 구성할 수 있다.
여기서 명령 지정수단은 n개의 태스크와 1대 1로 대응하고, 대응하는 태스크에 관해서 다음에 판독할 어드레스값을 명령 지정정보로서 유지하고 있는 n개의 어드레스 레지스터와, 태스크 선택수단이 선택한 태스크에 대응하는 어드레스 레지스터를 선택하여, 그 어드레스값을 출력시키는 레지스터 선택부와, 레지스터 선택부에 의해 어드레스 레지스터가 선택되면 당해 어드레스 레지스터가 유지하는 어드레스값을 카운트 초기값으로서 유지하는 카운트값 레지스터와, 카운트값 레지스터가 유지하는 카운트값을 사이클마다 증분하는 증분기와, 증분된 카운트값을 상기 다음에 판독할 명령을 지정하는 정보의 갱신값으로서 유지하는 판독장소 어드레스 유지부로 구성할 수 있다.
여기에서 상기 명령 지정수단은 증분기가 증분한 카운트값을 직접 출력하여 판독장소 어드레스 유지부에 유지시키는 동시에, 태스크 선택수단이 태스크를 선택하면 당해 태스크에 대응하는 어드레스 레지스터의 어드레스값을 선택 출력하여 판독장소 어드레스 유지부에 유지시키는 제 1 셀렉터와, 다음 순서의 태스크로 전환할 때, 카운트값 레지스터가 유지하는 카운트값을 이용하여 전환 직전까지 선택부에서 선택되어 있던 어드레스 레지스터가 저장하는 어드레스값을 다시 쓰는 제 1개서부로 구성할 수 있다.
비동기 이벤트 처리에는 내부 버퍼와 SDRAM 사이의 입출력을 제어하는 것이 대부분이지만, SDRAM의 상태는 외적 요인에 의해서 변동하는 수가 많다. 그 때문 에 메모리 검증이나 어떤 메모리로부터 값을 판독하여 그 값을 이용한 연산을 행하고, 그 결과를 동일 메모리에 되돌려 쓴다는 동일 메모리를 액세스 장소로 한 메모리 액세스 동작은 1개의 슬롯에서 행하는 것이 바람직하다. 반대로, 메모리로부터 값을 판독하는 판독명령과, 이 값을 이용한 연산의 연산결과를 동일 메모리에 되돌려 기입하는 명령이 별개의 슬롯에 배치되면, 첫번째 슬롯이 돌아오고 나서, 두번째 슬롯이 돌아오기 까지의 사이에 메모리 상태가 변동하여 판독명령은 완수할 수 있지만, 기입명령이 완수되지 않는 경우가 생긴다.
그러나 상기 구성에서는 자발 전환명령을 판독명령, 기입명령의 직전에 배치해 두면, 제 2 전환부가 어드레스 레지스터의 내용을 자발 전환명령이 포함되어 있는 어드레스의 다음 어드레스에 개서하는 동시에, 제 1 셀렉터가 당해 다음 태스크에 대응하는 어드레스 레지스터의 어드레스값을 선택 출력하여 판독장소 어드레스 유지부에 유지시키기 때문에, 자발 전환명령의 직후에서 본 태스크의 명령실행을 중단할 수 있다. 즉, 같은 태스크의 태스크 식별자가 출력되었을 때, 당해 태스크는 자발 전환명령의 직후에 배치된 판독명령, 기입명령을 동일한 슬롯 내에서 실행할 수 있다.
이에 따라, 태스크 전환에 의한 중단을 바라지 않은 4명령을 1태스크에 할당하는 등, 어떤 소정수의 명령을 1슬롯에 할당하는 가를 자발 전환명령의 배치에 의해 독자적으로 정할 수 있다. 또한 일부 태스크의 소화를 4명령의 실행을 기다리지 않고 중단함으로써 다른 태스크를 빨리 소화할 수도 있다.
상술한 목적 및 기타의 목적과 본 발명의 특징 및 이점은 첨부 도면과 관련한 다음의 상세한 설명을 통해 보다 분명해 질 것이다.
( 제 1 실시예 )
I/0 프로세서에 대한 설명을 개시하기 전에, AV 디코더가 어떠한 내부 구성을 갖고 있고, 그 구성에 있어서 본 발명에 의한 I/0 프로세서가 어떠한 역할을 하는지를 설명하기로 한다. 도 2a에 AV 디코더의 내부 구성을 도시한다.
AV 디코더는 코어처리를 하는 디코더 코어부와, 복수의 비동기 이벤트 태스크를 하는 I/O부로 이루어진다.
디코더 코어부는 셋업부(104), VLD부(105), IQ/IDCT부(106), 동작 보상부(107)를 포함하며, I/O부는 스트림 입력부(101), 버퍼 메모리(102), 비트 스트림 FIFO(103), 비디오 출력부(108), 오디오 출력부(109), I/0 프로세서(113), 버퍼 메모리 컨트롤러(110), RAM 컨트롤러(111), FIF0 컨트롤러(112), 호스트 I/O부(115)를 구비한다. 또한 버스로서 버퍼 메모리 버스(121), SDRAM 버스(122), 비트 스트림 버스(123), IOP 컨트롤 버스(124)가 설정되어 있고, 확장 메모리로서 SDRAM(300)과 접속하고 있다.
(1) MPEG 스트림의 복호 처리의 개요
다음으로 도 2b를 참조하여, MPEG 스트림의 복호처리의 개요에 대하여 간단히 설명하기로 한다. 본 실시예에서 MPEG 스트림은 동화상 스트림, 오디오 스트림, 부영상 스트림으로 이루어진다. 이 중 동화상 스트림은 압축된 동화상 데이터이고, 복호 처리에 있어서, 차분 산출의 기준이 되는 화상(이하「참조화상」이라 함) 과, 산출된 차이분을 부호화(coding)한 화상(이하「차이분 화상」이라 함)을 가산함으로써 동작 화상으로 복원된다.
도 2b에서 MPEG 스트림 내의 동화상 스트림의 데이터 구조는 계층적으로 표현되어 있다. 제 1층은 MPEG 스트림의 계층이고, 제 2층은 1초 길이의 동화상 계층이다. 제 3층은 1프레임의 계층이고, 제 4층은 1슬라이스의 계층이다. 제 5층은 매크로 블록의 계층이다.
점선(C1)으로 나타내는 제 1층과 제2층의 대응 관계를 참조하면 MPEG(Motion Picture Image Coding Experts Group)에서 1초 길이의 동화상은 NTSC 방식에서 30초 프레임의 화상(PAL 방식에서는 25프레임의 화상)으로써 구성되는 것을 알 수 있다. 또한, 각 프레임의 화상은 I픽처(도면 중의 10), P픽처(도면 중의 P3), B픽처(도면 중의 B1, B2)라는 3가지 타입이 있는 것도 알 수 있다.
여기서 I 픽처란, 압축된 화상 데이터이지만, 1프레임분의 휘도 성분 및 색차 성분을 포함하는 것을 말한다. P픽처(Predictive-Picture) 또는 B픽처 (Bidirectionally predictive Picture)는 차이분 화상이라는 것이다. 여기에서 P픽처란 과거 방향에 위치하는 프레임과의 차이분으로 이루어지는 차이분 화상이고, B픽처란 과거 방향 및 미래 방향에 위치하는 프레임과의 차이분으로 이루어지는 차이분 화상이다.
B픽처 및 P픽처가 어떠한 단위로 작성되는지는 점선(C2)으로 나타내는 제 2층과 제 3층의 대응관계를 참조하면, NTSC 방식에 있어서 이들의 화상은 30개의 슬라이스라는 데이터로 구성되고, PAL 방식에서는 36개의 슬라이스라는 데이터로 구성되는 것을 알 수 있다.
점선(C3)으로 나타내는 제 3층과 제 4층의 대응 관계를 참조하면, 각 슬라이스는 45의 매크로 블록으로 구성되는 것을 알 수 있다. 매크로 블록이란 횡 16화소× 종 16화소의 휘도 성분, 색차 성분으로 구성된다. 점선(C4)으로 나타내는 제 4층과 제 5층의 대응관계를 참조하면, 횡 16×종 16의 휘도 성분으로 이루어지는 휘도블록과, 횡 8×종8의 청색차 성분으로 이루어지는 청색차 블록(Cb 블록)과, 횡8× 종8의 적색차 성분으로 이루어지는 적색차 블록(Cr 블록)을 포함하는 것을 알 수 있다. 본 매크로 블록은 AV 디코더에 있어서의 화상 복호의 1단위로 된다.
매크로 블록보다 아래는 AV 디코더의 구성요소 사이가 매크로 블록에 포함되어 있는 휘도 블록, 색차 블록을 어떻게 처리하는 가를 도시하는 타이밍차트로 되어 있다.
매크로 블록에 대하여 어떠한 복호화가 이루어지는가는, 매크로 블록에 대한 복호화는, 압축동작 화상데이터를 가변길이복호(Variable Length code Decoding : 이후 VLD라 함)하여 6개의 공간 주파수성분 데이터, 헤더 정보, 동작 벡터를 얻는다.
그 후, 6개의 공간 주파수성분 데이터에 대하여 역이산 여현 변환처리(Discerete Cosine Transform : DCT)를 행하여 저주파수대에 위치하는 공간 주파수성분과, 고주파수대에 위치하는 공간 주파수 성분과 분리하여, 고주파수대를 버리고, 저주파대에 위치하는 공간 주파수 성분에 대하여 양자화 처리를 함으로써 이루어진다.
부호화된 매크로 블록은 역양자화 및 역이산 여현 변환처리가 이루어진 후, 동벡터에 기초를 둔 동작 보상에 의해 영상으로 표시된다. 동벡터란, 전후의 프레임 화상과 비교하여 상관성이 가장 높은 장소를 지시하는 정보를 말한다. 요컨대 동작 벡터는 화상 내의 인물상이나 건조물상이 프레임의 전후에서 어떻게 움직였는지를 블록 단위로 표현하고 있다.
동작 보상이란, 차이분의 전후에 표시될 참조 화상과, 당해 차이분을 맞추어(혼합하여) 1장의 완결된 표시용 화상을 얻는 것을 말한다.
이상의 MPEG 준거의 동작 화상의 부호화·복호화 기술 중, 본 명세서에서 특히 인용하는 내용은 이상과 같다. 보다 상세 내용인 기술내용에 대해서는 주식회사 아스키 「포인트 도해식 최신 MPEG 교과서」등의 공지 문헌을 참조하면 된다.
도 2b에서의 타이밍차트는 디코더 코어부에서의 셋업부(104), VLD부(105), IQ/IDCT부(106), 동작 보상부(107)의 처리가 어떠한 타이밍이 행하여지는지 설명할 때 인용하는 것으로 한다. 이상으로 MPEG 스트림의 복호 처리의 개요에 대한 설명을 마치고, 계속해서 AV 디코더의 구성 요소에 대한 설명을 시작한다.
(2) AV 디코더의 구성 요소
스트림 입력부(1O1)는 기록 매체나 통신 매체로부터 MPEG 스트림이 인출되면 MPEG 스트림을 AV 디코더 내부에 도입하고, I/0 프로세서(113)에 의한 제어에 따라 버퍼 메모리 버스(121)로 출력한다.
버퍼 메모리(102)는 버퍼 메모리 컨트롤러(110)의 제어에 따라 스트림 입력부(1O1)가 도입한 MPEG 스트림을 유지한다. 또한 MPEG 스트림을 출력하도록 버퍼 메모리 컨트롤러(110)에 명령하면, 지금까지 저장하고 있는 MPEG 스트림을 SDRAM 버스(122)에 출력한다.
비트 스트림 FIFO(103)는 MPEG 스트림에 포함되어 있는 엘리먼터리 스트림이 SDRAM 버스(122)에 출력되면, FIFO 컨트롤러(112)에 의한 제어에 따라 출력된 엘리먼터리 스트림을 도입한다. 비트 스트림 FIFO(103)은 도입한 엘리먼터리 스트림을 선입선출 방식으로 유지한다. 이렇게 하여 유지한 엘리먼터리 스트림을 FIFO 컨트롤러(112)의 제어에 따라 비트 스트림 버스(123)에 출력한다.
셋업부(104)는 비트 스트림 FIFO(103)에 유지되어 있는 MPEG 스트림으로부터 엘리먼터리 스트림이 추출되는 것을 대기하여, 그 엘리먼터리 스트림이 동화상 스트림 혹은 오디오 스트림이면, VLD부(105)에 의한 복호에 의해 그 헤더부가 신장되는 것을 대기한다. 헤더가 신장되면 이것의 해석처리(e1)를 도 2b에 도시된 바와 같이 행한다. 또한 엘리먼터리 스트림이 동화상 스트림이면 동작 벡터의 추출(e2)을 행한다. 그 후, 역양자화, 역이산 여현변환, 동작 보상 등이 행하여지고 있는 동안, 음성 스트림의 복호처리(e3)를 행한다.
VLD부(105)는 비트 스트림 FIFO(103)에 저장되어 있는 엘리먼터리 스트림이 동화상 스트림이고, 이것을 구성하는 매크로 블록이 비트 스트림 버스(123)에 출력되면 매크로 블록에 포함되어 있는 4개의 휘도 블록 Y0, Y1, Y2, Y3과, 2개의 색차 블록 Cb, Cr에 대하여 가변부호길이 디코드 t21, t22, t23, t24, t25, t26을 행한다.
IQ/IDCT부(106)는 가변부호길이 디코드가 이루어진 4개의 휘도 블록과, 2개의 색차 블록과 대하여 역양자화 및 역이산 여현변환을 행한다.
동작 보상부(107)는 IQ/lDCT부(106)에 의해 역양자화 및 역이산 여현변환이 이루어지면, 이들의 처리가 이루어진 휘도블록 및 색차블록에 대응하는 참조 화상(Y0,Y1), (Y2,Y3), (Cb,Cr)을 AV 디코더 외부에 접속된 SDRAM(3OO)으로부터 판독하여 휘도블록 및 색차블록과 참조 화상을 혼합한다. 그리고 그 혼합 결과에 대하여 하프 픽셀 보간을 행함으로써 동작 보상을 행한다. 그 후, RAM 컨트롤러(111)를 제어함으로써 SDRAM 버스(122)에 출력된 오디오 스트림을 SDRAM(300)에 기입시킨다.
비디오 출력부(l08)는 동작 보상부(107)에 의해 참조 화상과의 혼합과 하프 픽셀 보간이 이루어진 1프레임의 화상을 영상 신호로 변환하여 외부에 접속된 텔레비전 수상기 등의 디스플레이 장치에 출력한다.
오디오 출력부(109)는 셋업부(104)에 의해 복호된 오디오 스트림을 음성 신호로 변환하여 외부에 접속된 스피커 장치에 출력한다.
버퍼 메모리 컨트롤러(도면중 BM 컨트롤러)(110)는 I/O 프로세서(113) 주변에서의 스트림 입력부(101), 비디오 출력부(108), 오디오 출력부(109) 사이의 액세스 조정을 하는 버퍼 메모리 인터페이스와, 버퍼 메모리(102)와, 스트림 입력부(101), 비디오 출력부(108), 오디오 출력부(109) 사이의 DMA 전송 기능을 갖는 DMA 컨트롤러로 이루어진다.
RAM 컨트롤러(111)는 SDRAM(300)에 대한 버스트 리드(burst read)와, 버스트 라이트(burst write)가 가능한 SDRAM 인터페이스와, SDRAM(300)과 버퍼 메모리(102) 사이, 동작 보상부(107)와 버퍼 메모리(102) 사이의 DMA 전송 기능을 갖는 DMA 컨트롤러로 이루어진다.
FIFO 컨트롤러(112)는 듀얼 포트(RAM)와, 당해 RAM의 판독 / 기입을 제어하는 컨트롤러와, 비트 스트림 FIFO(103)에서의 액세스 어드레스를 가리키는 포인터를 관리하는 포인터 관리 기능을 갖는다.
I/0 프로세서(113)는 AV 디코더에서의 6개의 비동기 이벤트 태스크를 6개의 슬롯에 할당함으로써 비동기 이벤트 태스크를 시분할 다중으로 실행한다. 각 비동기 이벤트 태스크에 할당한 슬롯은 l/0 프로세서 내부의 모든 구성요소가 동기 제어를 위해 이용하고 있는 클록 신호의 사이클수로써 표현되며, 그 길이는 원칙적으로 4사이클인 것으로 한다.
(3) I/0 프로세서에 실행이 부과된 비동기 이벤트 태스크란 어떠한 처리 내용인가
AV 디코더에서 I/0 프로세서에 실행이 부과된 비동기 이벤트 태스크가 어떠한 처리 내용인가를 차례로 설명하기로 한다.
·호스트 I/0 태스크
본 태스크는 호스트 컴퓨터와의 통신과, 조작자와의 대화에 따른 이차원 그래픽스의 묘화에 관한 태스크이다. 구체적으로는, 호스트 I/O부(115)를 개재한 호스트 컴퓨터와의 통신 처리와, 조작자에 따른 조작에 따라 이차원 그래픽스를 묘화하여 비디오 출력부(108)에 출력하는 처리로 이루어진다.
·퍼징 태스크
본 태스크는 버퍼 메모리(102)에 입력된 MPEG 스트림의 퍼징 처리와, MPEG 스트림으로부터 동화상 스트림, 오디오 스트림, 부영상 스트림이라는 엘리먼터리 스트림의 추출을 하는 추출 처리에 관한 것이다.
퍼징 태스크 실행시에 I/0 프로세서(113)는 외부로부터 스트림 입력부(1O1)에 입력된 MPEG 스트림을 버퍼 메모리 버스(도면 중에서는 BM 버스)(121)에 출력한다. 버퍼 메모리 컨트롤러(110)를 제어함으로써 버퍼 메모리 버스(121)에 출력되는 MPEG 스트림을 버퍼 메모리(102)에 기입한다. 그 후 I/0 프로세서(113)는 버퍼 메모리 컨트롤러(110)를 제어함으로써 MPEG 스트림을 버퍼 메모리 버스(121)에 출력시켜, MPEG 스트림으로부터 엘리먼터리 스트림을 추출한다. 버퍼 메모리 컨트롤러(110)를 제어함으로써 추출된 엘리먼터리 스트림을 버퍼 메모리(102)에 기입한다. 그 결과, 버퍼 메모리(102)에는 엘리먼터리 스트림으로서 비트 스트림, 오디오 스트림, 부영상 스트림이 저장된 상태로 된다.
·오디오 스트림 전송제어 태스크
오디오 스트림 전송제어 태스크는 오디오 스트림에 관한 모든 전송제어로 이루어지는 태스크이다.
오디오 스트림 전송제어 태스크에 따라서, I/0 프로세서(113)는 버퍼 메모리 컨트롤러(110)를 제어함으로써 버퍼 메모리(102)에 엘리먼터리 스트림으로서 저장되어 있는 오디오 스트림을 SDRAM 버스(122)에 출력시킨다. 그 후, SDRAM 컨트롤러(111)를 제어함으로써 SDRAM 버스(122)에 출력된 오디오 스트림을 SDRAM(300)에 기입시킨다. 셋업부(104)가 비트 스트림 FIFO(l03)에 저장되어 있는 오디오 스트림의 복호를 개시하면, 그 복호 처리가 얼마만큼 진척되었는지를 감시하고, 오디오 스트림의 잔량이 소정값 이하로 되면, RAM 컨트롤러(111)를 제어하여 SDRAM(300)에 저장되어 있는 오디오 스트림을 판독시켜 SDRAM 버스(122)에 출력시킨다. FIFO 컨트롤러(112)를 제어하여 이와 같이 출력된 오디오 스트림을 비트 스트림 FIFO(103)에 기입한다.
이러한 비트 스트림 FIFO(103)로의 기입에 의해, 오디오 스트림의 복호의 진척에 따른 오디오 스트림을 보충한다.
디코드가 완료되면, 입출력 프로세서(113)는 FIF0 컨트롤러(112)를 제어함으로써 디코드 완료 오디오 스트림을 SDRAM 버스(122)에 출력시킨다. 버퍼 메모리 컨트롤러(110)를 제어하여 SDRAM 버스(122)에 출력된 오디오 스트림을 버퍼 메모리(102)에 기입시킨다.
·동화상 스트림 전송제어 태스크
동화상 스트림 전송제어 태스크는 동화상 스트림에 관한 모든 전송제어로 이루어지는 태스크이다.
I/0 프로세서(113)는 버퍼 메모리 컨트롤러(110)를 제어함으로써 버퍼 메모리(102)에 저장되어 있는 동화상 스트림을 SDRAM 버스(122)에 출력시켜, RAM 컨트롤러(111)를 제어함으로써 SDRAM 버스(122)에 출력된 동화상 스트림을 SDRAM(300)에 기입시킨다. VLD부(105), IQ/IDCT부(106), 동작 보상부(107)가 비트 스트림 FIF0(103)에 저장되어 있는 동화상 스트림의 복호를 시작하면, 동화상 스트림의 복호가 얼마만큼 진척되었는지를 감시하여 복호해야 할 잔량이 소정값 이하로 되면, RAM 컨트롤러(111)를 제어하여, SDRAM(300)에 저장되어 있는 동화상 스트림을 판독시켜 FIF0 컨트롤러(112)에 비트 스트림 FIFO(103)에 기입시킨다. 이러한 비트 스트림 FIFO(103)의 기입에 의해 복호처리의 진척에 따른 동화상 스트림을 보충한다.
·비디오 출력 태스크
비디오 출력 태스크는 영상 출력에 관한 출력 제어로 이루어지는 태스크이다.
본 비동기 이벤트 태스크의 실행시에 있어 I/0 프로세서(113)는 RAM 컨트롤러(111)를 제어함으로써 VLD부(105), IQ/lDCT부(106), 동작 보상부(107)에 의한 처리가 끝나 SDRAM(300)에 저장되어 있는 동화상 데이터를 SDRAM 버스(122)에 출력시키고, 버퍼 메모리 컨트롤러(110)를 제어하여 SDRAM 버스(122)에 출력된 동화상 스트림을 버퍼 메모리(102)에 기입시킨다. 버퍼 메모리 컨트롤러(110)를 제어하여, SDRAM(300)에 기입된 동화상 스트림을 SDRAM 버스(122)에 출력시키고, 비디오 출력부(108)에 영상 신호로 변환시킨다. 그와 더불어 부영상 스트림을 전개하여 얻어진 부영상과, 이차원 그래픽스를 혼합하여 비디오 출력부(108)로 출력시킨다.
· 셋업 I/O 태스크
셋업부(104)와 I/0 프로세서(113)가 통신할 때 실행해야 할 처리로 이루어진다.
당해 명령이 호스트 컴퓨터가 구비하고 있는 레지스터를 판독하고 기입하기 위한 명령이면 I/0 프로세서(113)를 제어하여 당해 판독 및 기입을 위한 처리와, 당해 명령이 VLD부(105), IQ/IDCT부(106)의 초기화 명령이면 VLD부(105), IQ/IDCT부(106)를 리세트하는 처리로 이루어진다.
이상의 비동기 이벤트 태스크는 개개의 처리 부하는 가볍지만, 간헐적인 기동이 요구된다. 특히 비디오 출력 태스크는 수평 블랭킹 기간의 50μsec마다의 기동이 요구되고, 오디오 출력 태스크는 90μsec마다의 기동이 요구된다.
(4) I/0 프로세서가 어떻게 구성되어 있는가
I/0 프로세서의 제 1 실시예를 도면을 참조하여 설명하기로 한다. 상술한 바와 같이, I/0 프로세서는 각각의 비동기 이벤트 태스크를 실행해야 할 사상이 성립되었는지의 여부를 감시하고 있고, 사상이 성립된 비동기 이벤트 태스크를 보다 우선적으로 실행한다. 본 실시예에서 우선 실행의 순서까지도 언급하면, 설명이 복잡하게 되기 때문에 이 우선 실행에 관한 설명은 제 3 실시예에서 하기로 한다. 제 1 실시예에서는, I/0 프로세서의 기본구성, 즉, AV 디코더에서의 6개 비동기 이벤트 태스크를 시분할 다중으로서 실행하는 구성에 대하여 설명하기로 한다.
도 3은 I/0 프로세서의 내부 구성을 도시한 도면이고, 본 도면에 도시된 바와 같이 I/0 프로세서는 명령 메모리(100), 명령 판독회로(10), 명령 해독 제어부(11), 레지스터 세트(12), 연산 실행부(14) 및 태스크 관리부(15)로 구성된다.
명령 메모리(100)는 상술한 6개의 비동기 이벤트 태스크를 구성하는 명령을 기억한다. 도 7a는 명령 메모리(100)가 어떻게 명령열을 기억하고 있는 가를 도시한 도면이다. 본 도면에서 각 명령에는 0-0, 0-1, 0-2라는 식별자가 붙어 있다. 이 식별자 중, 상위의 수는 당해 명령이 6개의 비동기 이벤트 태스크의 무엇에 속하는 가를 나타내며, 하위의 수는 속하는 비동기 이벤트 태스크에서 당해 명령이 몇번째에 위치하는 가를 나타낸다. 이후의 설명에서, 명령 메모리(100)에서의 각 명령의 배치 어드레스는 이 식별자를 이용하여 나타낸다.
명령 메모리(100) 내에 기억되어 있는 명령은 모든 오퍼레이션이 명령어 길이에 들어가도록 명령 포맷이 규정되어 있다. 본 실시예에서 명령어 길이는 16비트로 규정되어 있고, 그 명령 포맷을 도 7b∼도 7d에 도시한다.
도 7b는 레지스터를 오퍼랜드에 지정한 산술연산 명령의 명령 포맷을 도시한다. 본 명령 포맷에서는 2비트∼4비트에 제 1 오퍼랜드에 지정할 레지스터 번호를 지정할 수 있고, 5비트∼7비트에는 제 2 오퍼랜드에 지정할 레지스터번호를 지정할 수 있다. 8비트∼10비트에는 연산 결과의 저장장소에 지정할 레지스터 번호를 지정할 수 있고, 11비트로부터 15비트까지의 5비트에 오퍼레이션 내용이 지정된다. 하단의 표는 당해 오퍼레이션 내용의 지정이 가능한 5비트 중 상위 2비트와, 하위 3비트의 조합과, 그 조합으로써 표현되는 오퍼레이션 내용을 나타낸다. 예를 들면 상위 2비트가『00』이고, 하위 3비트가『000』인 경우, 그 조합은 가산 연산의 오퍼레이션을 표현하고 있고, 상위 2비트가『01』이고, 하위 3비트가『000』인 경우, 그 조합은 감산 연산을 표현하고 있다. 상위 2비트가 『00』이고, 하위 3비트가 『001』인 경우, 그 조합은 좌시프트 연산(도면중 〈〈은 좌시프트 연산의 의미임)을 표현하고 있고, 상위 2비트가『01』이고, 하위 3비트가『001』인 경우, 그 조합은 우시프트 연산(도면중 〉〉은 우시프트 연산의 의미임)을 표현하고 있다.
도 7c는 레지스터로 판독장소 어드레스, 기입장소 어드레스를 지정한 메모리 로드 명령 / 메모리 저장 명령의 명령 포맷을 도시한다. 이 명령 포맷에서는, 2비트∼4비트에 제 1 오퍼랜드로 지정할 레지스터 번호를 지정할 수 있고, 5비트∼7비트에 판독원으로 지정할 레지스터 번호 또는 연산 결과의 저장장소로 지정할 레지스터 번호를 지정할 수 있다. 10비트로부터 12비트까지의 3비트에 오퍼레이션 내용이 지정되고, 13비트로부터 15비트까지의 3비트에 3비트 길이의 즉치가 지정된다.
하단의 표는 3비트에 의한 오퍼레이션 내용의 지정 중, 상위 1비트와, 하위 2비트의 조합과, 그 조합으로써 표현되는 오퍼레이션 내용을 나타낸다.
예를 들면 상위 1비트가『1』이고, 하위 2비트가『10』인 경우, 판독원 오퍼랜드 src_REG에서 지정된 레지스터의 값을 제 1 오퍼랜드 src1과 3비트의 즉치 im:3의 조합(src1+im:3)을 이용하여 지정된 메모리에 저장하는 저장 명령을 지정하고 있다.
상위 1비트가 『0』이고, 하위 2비트가『10』인 경우, 그 조합은 제 1 오퍼랜드 src1과 3비트의 즉치의 조합(src1+im:3)을 이용한 어드레싱 모드에 의해 메모리로부터 값을 판독하고, 저장장소 dst_REG에 지정된 레지스터에 저장하는 로드 명령을 지정하고 있다.
도 7d는 8비트, 1l비트의 즉치 지정이 가능한 비교명령 / 연산명령 / 분기명령의 명령 포맷을 도시한다. 본 명령 포맷에서 즉치가 8비트인 경우는 5비트로부터 7비트까지 제 1 오퍼랜드 및 연산 결과의 저장에 해당하는 레지스터의 지정이 가능하고, 8비트로부터 15비트까지를 즉치 저장에 이용한다. 즉치가 11비트인 경우는 5비트로부터 15비트까지를 즉치 저장에 이용한다. 2비트로부터 5비트까지의 4비트를 이용하여 하단의 표와 같이 오퍼레이션 내용이 지정된다.
하단의 표는 당해 4비트 중, 상위 2비트와 하위 2비트의 조합과, 그 조합으로써 표현되는 오퍼레이션 내용을 나타낸다. 예를 들면 상위 2비트가 『10』이고, 하위 2비트가『01』인 경우, 그 조합은 제 1 오퍼랜드로 지정된 레지스터의 값을 제 2 오퍼랜드와 8비트의 즉치를 비교하는 비교 명령을 지정하고 있다.
상위 2비트가『10』이고, 하위 2비트가『10』인 경우, 그 조합은 오퍼랜드와 8비트의 즉치를 승산하는 승산 명령을 지정하고 있다. 상위 2비트가『11』이고, 하위 2비트가『11』인 경우, 그 조합은 11비트의 즉치를 분기장소 어드레스로 한 절대 어드레스 지정형 분기 명령을 지정하고 있다.
이상의 설명에서, 오퍼레이션 내용은 명령어 길이인 16비트로서 표현되기 때문에, 명령 메모리(100) 내의 어떠한 오퍼레이션 내용의 명령을 판독하는 경우라도, 또한 어떤 명령을 해독·실행하는 경우에도 그들의 판독, 해독, 실행이 균일하게 1사이클 내에 완수할 수 있다. 즉, 명령의 판독·해독·실행이 완수하기까지의 시간이 명령간에서 편차가 생기지 않도록 명령 포맷이 규정되어 있는 것이다. 특히 도 7d에서 즉치의 폭을 8비트, 11비트로 하고 있는 데, 이 규정의 의도는 크게 나타나 있다. 요컨대 지정되는 즉치를 길게 하면, 명령어 길이가 24비트, 32비트까지 확장될 우려가 있고, 그 확장을 막기 위해 명령어 길이가 16비트로 수습되도록 즉치 길이를 8비트, 11비트로 그치게 한다. 하나의 명령의 실행에, 어느 만큼의 사이클수가 필요한가를 나타내는 단위(CPI(Cycle Per Instruction)라 함)로서 표현하면, 본 입출력 프로세서의 CPI는 순수히『1』이고, 『명령을 몇 회 판독했는가』 『명령을 몇 회 해독·실행하였는가』는 사이클수로서 표현된다.
명령 판독회로(10)는, 명령 메모리(100) 내의 판독장소 어드레스를 명령 메모리(100)로 출력한다.
명령해독 제어부(11)(도면 중에서는 디코더(l1))는 명령 메모리(1OO)가 출력하는 명령을 해독하고, 그 해독결과에 따라 명령 판독회로(1O) 및 연산 실행부(14)를 제어한다.
레지스터 세트(12)는 32비트 길이의 범용 레지스터(GR)와 16비트 길이의 범용 레지스터를 각각 24개 갖는다. 이와 같이 24개의 레지스터를 갖고 있는 것은, 32비트 길이의 레지스터와, 16비트 길이의 레지스터를 4개씩, 6개의 비동기 이벤트 태스크에 할당하기 위해서이다. 이와 같이 각 비동기 이벤트 태스크마다 8개의 레지스터를 할당함으로서 태스크 전환시에 레지스터의 값을 세이브하거나 복원할 필요가 없어진다.
연산 실행부(14)는 ALU, 승산기, 배럴 시프터를 구비하며, 명령해독 제어부(11)에 의한 제어에 기초하여 레지스터 세트(12)에서의 범용 레지스터의 저장값을 이용하여 연산한다. 비동기 이벤트 태스크로부터 다른 태스크로 전환되었을 때 연산 실행부(14)는 그것에 대응하는 4개의 32비트 길이의 범용 레지스터, 4개의 16비트 길이의 범용 레지스터를 이용하여, 전환후의 태스크에 포함되어 있는 명령에 관한 연산을 실행한다.
태스크 관리부(15)는 명령해독 제어부(11)에서의 명령 실행을 감시하고, 각 태스크에 할당된 슬롯의 시간길이가 경과하면 다음에 슬롯을 할당할 태스크의 식별자를 명령 판독회로(10)로 출력한다.
(4.1) 명령 판독회로(10)는 판독장소 어드레스의 갱신을 어떻게 행하는가
명령 판독회로(10)가 어떠한 내부 구성으로 판독장소 어드레스를 갱신하는 가를 도 4a를 참조하여 설명하기로 한다. 명령 판독회로(10)의 내부 구성을 도 4a에 도시한다.
도 4a에 도시된 바와 같이, 명령 판독회로(10)는 IF1+1 유지부(20), 증분 회로(21), IF2 유지부(22), DECPC 유지부(23), 태스크별 PC 저장부(24), 셀렉터(25) 및 셀렉터(26)로 이루어지고, 해독 스테이지 앞에 2단의 판독 스테이지를 행하는 파이프라인 처리를 실현하도록 구성되어 있다. 이 2단의 판독 스테이지에서의 각각의 판독장소 어드레스를 제 1 판독장소 어드레스(IF1), 제 2 판독장소 어드레스(IF2)라 한다.
도 4a에서 IF1은 셀렉터(26)가 출력한 어드레스를 말하며, IF2는 IE2 유지부(22)가 유지하는 어드레스를 말한다. 도 8은 명령 판독회로(10) 내에서 행하여지는 파이프라인 처리를 도시하는 타이밍차트이다. 이후, 명령 판독회로(10)의 구성요소에 대하여 언급하는 경우는 본 타이밍차트를 인용한다.
IF1+1 유지부(20)는 카운트값을 유지하기 위한 카운트값 레지스터로서 이용되는 것이며, 태스크별 PC 저장부(24)로부터 어느 하나의 판독장소 어드레스가 출력되면, 당해 어드레스를 카운트 초기값으로서 유지하고, 그 카운트값의 증분이 증분회로(21)로부터 행하여지면, 증분후의 어드레스를 최신의 카운트값으로서 유지한다.
이 때, 증분회로(21)로부터 새롭게 증분된 어드레스가 출력된 어드레스가 출력되면, IF1+1 유지부(20)는 그때까지 유지하고 있는 어드레스를 신호선④를 통해 셀렉터(25)로 출력하는 동시에 셀렉터(26)로 출력한다.
증분 회로(21)는 셀렉터(26)에 의해 출력된 IF1을 클록신호에 따라 증분한다. 증분된 어드레스는 IF1+1 유지부(20)에 의해 유지된다. 셀렉터(26)에 의해 출력된 IF1은 그때까지 IF1+1 유지부(20)에 의해 유지되어 있던 값이기 때문에, 증분회로(21)에 의한 증분에 의해 IF1+1 유지부(20)가 유지하고 있는 카운트값은 1클록마다 증분된다.
도 8의 타이밍차트에 있어서, 판독장소 어드레스로서 출력된 명령 0-0의 출력장소 어드레스는 증분회로(21)에 의해 증분된다(도면중의 inc1, inc2, inc3 참조). 이에 따라 IF1+1 유지부(20)가 유지하는 판독장소 어드레스는 명령 0-1의 어드레스, 명령 0-2의 어드레스, 명령 0-3의 어드레스라는 식으로 갱신되어 간다.
IF2 유지부(22)는 클록신호에 동기하여 전회 IF1+1 유지부(20)에 의해 출력된 어드레스를 명령을 판독할 제 2 판독장소 어드레스로서 유지한다. 도 8의 타이밍차트에서는 제 2 판독장소 어드레스로서 명령 0-0의 어드레스, 명령 0-1의 어드레스, 명령 0-2의 어드레스, 명령 0-3의 어드레스가 출력되어 있는 것을 알 수 있다. 이들의 어드레스는 제 1 판독장소 어드레스보다 1사이클만큼 늦게 되는 것을 알 수 있다. 새로운 어드레스가 IF1+1 유지부(20)로부터 출력되면, IF2 유지부(22)는 그때까지 유지하고 있는 어드레스를 DECPC 유지부(23)로 출력하고, 신호선(1)을 통해 셀렉터(25)에도 출력한다. 출력후, IF1+1 유지부(20)에 의해 출력된 그 새로운 어드레스를 유지한다.
DECPC 유지부(23)는 전회 IF2 유지부(22)에 의해 출력된 어드레스를 유지한다. 이 어드레스는 명령해독 제어부(11)에 의한 해독 제어의 대상이 되는 명령의 어드레스와 일치한다. 새로운 어드레스가 IF2 유지부(22)에 의해 출력되면, 그 새로운 어드레스를 유지하여 해독 대상의 어드레스를 갱신한다.
DECPC 유지부(23)가 유지하는 어드레스는 IF2 유지부(22)가 그때까지 유지하고 있는 어드레스이고, IF2 유지부(22)가 유지하는 어드레스는 IF1+1 유지부(20)가 그때까지 유지하고 있는 어드레스이므로 IF1+1 유지부(20)가 유지하고 있는 어드레스와 비교하면, DECPC 유지부(23)에 유지되어 있는 어드레스는 2명령 늦어지고 IF2 유지부(22)가 유지하고 있는 어드레스와 비교하면, DECPC 유지부(23)에 유지되어 있는 어드레스는 1명령 늦어진다.
태스크별 PC 저장부(24)는 태스크마다의 판독장소 어드레스를 유지하는 영역을 그 내부에 갖는 메모리 회로 혹은 태스크마다 설정된 어드레스 레지스터이다. 내부영역 혹은 개개의 어드레스 레지스터에 있어서, 개개에 기억되어 있는 판독장소 어드레스에는 3비트 길이의 태스크 식별자가 어드레스로서 붙어 있다. 또, 태스크(0)의 판독장소 어드레스를 lPC0라 하고, 태스크(1)의 판독장소 어드레스를 IPC1이라 한다. 이후 태스크(2), 태스크(3), 태스크(4), 태스크(5)에 대해서도 마찬가지이다.
태스크별 PC 저장부(24)에서의 이들의 판독장소 어드레스의 판독 기입 동작은 태스크 관리부(15)로부터 태스크를 전환하는 취지의 지시(태스크 전환신호 chg_task_ex의 하이값)가 출력된 경우에 행하여진다. 이 태스크 전환신호 chg_task가 하이값인 경우에 있어서 태스크 관리부(15)로부터 태스크 전환신호 chg_task_ex와 함께 실행이 끝난 태스크의 3비트 길이의 식별자(기입 어드레스 선택신호 taskid(wr_adr)) 및 다음에 실행해야 할 태스크의 3비트 길이의 식별자(판독 어드레스 선택신호 nxttaskid(rd_adr))가 출력되지만, 태스크별 PC 저장부(24)는 이들 신호에 따른 내부 영역의 판독 기입을 행한다. 즉 태스크별 PC 저장부(24)는 기입 어드레스 선택신호 taskid(wr_adr)를 태스크별 PC 저장부(24) 내의 어드레스로서 해석하여, 그것에 지시되는 내부 영역에 셀렉터(25)로부터 출력된 판독장소 어드레스를 저장한다. 도 8의 타이밍차트에 있어서 태스크 전환신호 chg_task가 상승한 타이밍 a1, b1에서 판독장소 어드레스의 기입 a2, b2가 행하여진다.
기입 a2가 행하여진 시기에는 IF2 유지부(22)는 명령 0-3의 어드레스를 유지하고 있고, IF1+1 유지부(20)는 이 명령 O-3의 어드레스에『1』을 가산한 어드레스 O-4를 신호선④를 통해 셀렉터(25)로 출력하고 있다. 이와 같이 출력되면, 어드레스 0-4가 태스크별 PC 저장부(24)에 저장된다. 이에 따라, 태스크별 PC 저장부(24) 내의 태스크(0)에 다음 슬롯이 돌아오면, 태스크(O)의 판독은 어드레스 0-4로부터 행하여진다.
기입 b2가 행하여진 시기에는, IF2 유지부(22)는 명령 1-3의 어드레스를 유지하고 있고, IF1+1 유지부(20)는 이 명령 1-3의 어드레스에『1』을 가산한 어드레스 1-4를 신호선④를 통해 셀렉터(25)에 출력하고 있다. 이와 같이 출력하면, 증분된 어드레스 1-4가 태스크별 PC 저장부(24)에 저장된다. 이에 따라, 태스크별 PC 저장부(24) 내의 태스크(1)에 다음 슬롯이 돌아오면 태스크(1)의 판독은 어드레스 1-4로부터 행하여진다.
또, 판독 어드레스 선택신호 nxraskid(rd_adr)가 태스크 관리부(15)로부터 주어지면, 태스크별 PC 저장부(24)는 그 식별자를 태스크별 PC 저장부(24) 내의 어드레스로서 해석하여, 그것에 의해 지시되는 내부 영역에서 비동기 이벤트 태스크의 판독장소 어드레스를 인출하여 셀렉터(26)로 출력한다.
도 8의 타이밍차트에서, 판독 어드레스 선택신호 nxttaskid로서 식별자(1)가 태스크 관리부(15)로부터 주어지고, chgtaskex가 상승하면(참조부호(a3) 참조), 태스크별 PC 저장부(24)는 그 식별자에 의해 지시되는 태스크(1)를 태스크별 PC 저장부(24) 내의 어드레스로서 해석하여, 거기에 저장되어 있는 판독장소 어드레스(1-0)를 인출하여 셀렉터(26)로 출력한다 (참조부호(a4) 참조).
명령 2-0의 어드레스가 판독장소 어드레스(IF1)로서 출력된 타이밍에서, 판독 어드레스 선택신호 nxttaskid로서 식별자(2)가 태스크 관리부(15)로부터 주어지고, chgtaskex가 상승하면(참조부호(a5) 참조), 태스크별 PC 저장부(24)는 그 식별자에 의해 지시되는 태스크(2)의 판독장소 어드레스로서 판독장소 어드레스(2-0)를 인출하여 셀렉터(26)로 출력한다(참조부호(a6) 참조).
이상과 같이 판독장소 어드레스가 출력되면 태스크(O)의 명령은 4명령만큼 실행되고, 이것에 계속해서 태스크(1)의 명령이 4명령만큼 실행된다. 이후, 태스크(2), 태스크(3), 태스크(4), 태스크(5)의 명령열이 각각 4명령씩 실행된다.
5입력-1출력의 셀렉터인 셀렉터(25)는 ①, ②, ③, ④의 신호선에 전송되는 어드레스의 어느 하나를 선택적으로 태스크별 PC 저장부(24)에 출력한다. 이들의①∼④의 어느 것을 선택할 것인지는 도 4b에 도시된 출력 논리표에 나타낸 바와 같으며, 명령해독 제어부(11)가 명령의 해독결과에 따라 출력하는 selpc 신호에 따라 이루어진다. 여기서 ④의 신호선은 IF1+1 유지부(20)의 출력이고, 태스크 관리부(15)로부터 태스크 전환신호 chg_task가 하이값으로 전환된 경우는 셀렉터 2 5는 이것을 선택한다.
또한 ②, ③의 신호선은 각각 명령해독 제어부(11) 및 연산 실행부(14)를 접속하고 있다. ②는 절대 어드레스 지정을 이용한 분기 명령의 해독시에 있어서, 분기 명령의 즉치를 분기장소 어드레스로서 명령해독 제어부(11)로부터 취득하기 위해 선택된다. ③은 간접 참조지정을 이용한 분기 명령의 해독시에 있어서, 연산 실행부(14)에 의해 산출된 어드레스를 분기장소 어드레스로서 이용할 때 선택된다.
셀렉터(26)는 2입력-1출력의 셀렉터이고, 태스크 전환신호 ckg_task가 로우인 기간에 있어서 증분 회로(21)에 의한 증분 후의 어드레스를 선택하여 IF1로서 증분회로(21) 및 IF2 유지부(22)로 출력한다. 태스크 전환신호 chg_task가 하이인 기간에 있어서 태스크별 PC 저장부(24)에 저장되어 있는 다음에 실행할 태스크의 어드레스를 IF1로서 증분회로(21) 및 IF2 유지부(22)로 출력한다.
이상과 같이 구성된 명령 판독회로에 의하면, 태스크 전환시에 있어서, 지금까지 실행되어 있던 태스크의 판독장소 어드레스는 셀렉터(25)에 의해 태스크별 PC 저장부(24)에 저장되고, 이 대신에 태스크별 PC 저장부(24)에 저장되어 있는 다음 태스크의 어드레스가 셀렉터(26)에 의해 IF1로서 출력된다. 이상의 판독장소 어드레스의 전환은 1사이클로 행하여지고, 이 판독장소 어드레스의 전환에 있어서, I/0 프로세서는 불필요한 처리를 할 필요가 없다. 인터럽트 신호의 통지시에 행하여지는 분기와 같이 선행적으로 판독된 어드레스를 무효화하는 일도 없다. 따라서, 명령 판독회로(10)에 의한 판독장소 어드레스의 세이브·복원은 오버헤드의 발생 없이 행하여진다.
(4.2) 태스크 관리부(15)는 다음에 실행할 비동기 이벤트 태스크를 어떻게 결정하는가
태스크 관리부(15)가 어떠한 내부 구성으로서 다음에 실행할 비동기 이벤트 태스크를 결정하는가를 도 5에 도시된 태스크 관리부(15)의 내부 구성을 참조하여 설명하기로 한다.
도 5는 태스크 관리부(15)의 내부 구성을 도시한 도면이다. 도 5에 도시된 바와 같이, 태스크 관리부(15)는 슬롯 매니저(61) 및 스케쥴러(62)로 이루어지고, 슬롯 매니저(61)는 플립플롭(51), 카운터(52) 및 비교기(54)로 구성되고, 스케쥴러(62)는 태스크 ID 유지부(71), 태스크 ID 유지부(72), 태스크 라운드 관리부(73) 및 우선순위 인코더(74)로 구성된다.
플립플롭(51)은 다음에 실행되는 명령이 몇번째인가를 나타내는 정수값(이것을 카운트값 i라 함)을 유지한다.
카운터(52)는 초기값이『1』로 설정되고, 상한값이 『4』로 설정된 카운터이고, 클록신호에 동기하여 플립플롭(51)에 유지되어 있는 카운트값을 1, 2, 3, 4, 1, 2, 3, 4와 같은 식으로 카운트 업한다.
비교기(54)는 카운터(52)가 카운트 업한 값과, 정수값『4』를 비교하여, 만약 카운터(52)의 카운트값과 정수값『4』가 일치하면 태스크 전환신호 chg_task_ex를 하이값으로 하여 셀렉터(26) 및 태스크별 PC 저장부(24)로 출력한다.
이와 같이 카운터(52)가『4』를 카운트할 때마다 태스크 전환신호 chg_task_ ex가 하이가 됨으로써 셀렉터(26)에 의한 태스크별 PC 저장부(24)의 선택은 4사이클에 대해 1회 행해지게 된다. 이 때, 태스크별 PC 저장부(24)는 다음에 슬롯을 할당할 태스크의 판독장소 어드레스를 셀렉터(26)에 출력하고 있으므로 태스크별 PC 저장부(24)로부터의 판독장소 어드레스의 출력은 4사이클의 실행에 대해 1회 행하여지게 된다.
태스크 ID 유지부(71)는 명령 실행의 카운트가 카운터(52)에 의해 행하여지고 있는 태스크의 식별자(이것을 태스크 식별자 taskid라 함)를 유지한다. 태스크 식별자의 일례를 도 6a에 도시한다. 도 6a에 도시된 바와 같이, 태스크 식별자는 3비트를 이용하여, 명령 메모리(100)에 기억되어 있는 6개의 태스크의 어느 하나를 지시한다. 명령 실행의 카운트가 4회 행하여지면, 스케쥴러(62)에 있어서 우선순위 인코더(74)로부터 다음에 슬롯을 할당해야 되는 태스크의 태스크 식별자 taskid가 출력되지만 이 때 태스크 ID 유지부(71)는 지금까지 유지하고 있는 태스크 식별자 taskid를 태스크 라운드 관리부(73)로 출력하고, 새롭게 출력되는 태스크 식별자 taskid를 유지한다.
태스크 라운드 관리부(73)는 태스크 ID 유지부(71)에 있어서 태스크 식별자가 어떻게 갱신되었는지를 감시하고, 6비트 길이의 레지스터를 이용하여 6개의 태스크중 슬롯이 할당된 것을 관리한다. 또한 카운터(52)가 4명령의 실행을 카운트하면, 태스크 ID 유지부(71)에 의해 태스크 식별자 taskid가 출력되고, 태스크 라운드 관리부(73)는 슬롯의 할당이 끝난 태스크를 나타내는 수치(이 수치를 라운드값 taskn이라 함)를 우선순위 인코더(74)에 출력한다. 라운드값 taskn의 일례를 도 6b에 도시한다. 이 라운드값 taskn에서, 제 1비트가『1』이면 태스크(1)에 슬롯이 할당된 것을 나타내고, 제 1비트가『0』이면 태스크(1)가 그렇지 않은 것을 나타낸다. 태스크관리 레지스터(13)의 제 2비트가『1』이면 태스크(2)에 슬롯이 할당된 것을 나타내고, 제 2비트가『0』이면 태스크(2)가 그렇지 않은 것을 나타낸다.
태스크(0), 태스크(1)에 슬롯의 할당이 끝나면, 태스크 라운드 관리부(73)는『OOOO11』을 우선순위 인코더(74)에 출력한다. 또한 태스크(O), 태스크(1), 태스크(2)에 슬롯의 할당이 끝나면, 태스크 라운드 관리부(73)는『OOO111』을 우선순위 인코더(74)에 출력하고, 태스크(O), 태스크(1), 태스크(2), 태스크(3)에 슬롯의 할당이 끝나면, 태스크 라운드 관리부(73)는『OO1111』을 우선순위 인코더(74)로 출력한다.
또, 태스크(0)∼태스크(5)로의 슬롯의 할당이 1순회하면 『111111』을 우선순위 인코더(74)로 출력한 후 6비트 길이의 레지스터를『OOO00O』에 리세트한다.
우선순위 인코더(74)는 태스크 라운드 관리부(73)가 출력한 라운드값 taskn을 받아들이고, 받아들인 태스크 라운드 관리부(73)의 라운드값 taskn에서 몇비트째에 『1』로부터『0』으로의 반전이 생겨 있는지를 검출한다. 이와 같이『0』으로의 반전이 생긴 비트를 검출하면, 이 반전이 생긴 비트에 할당되어 있는 태스크의 태스크 식별자 taskid를 태스크 ID 유지부(71)로 출력한다. 출력된 태스크 식별자는, 어드레스 선택신호 nxttaskid (rd_adr)로서 태스크별 PC 저장부(24)로 출력한다.
예를 들면 태스크 라운드 관리부(73)로부터 라운드값 taskn으로서『OOOO11』이 출력되면 우선순위 인코더(74)는 이 라운드값 taskn에서 하위로부터 제 2비트째에『0』으로의 반전이 생겨 있는 것을 검출한다(또, 최하위 비트를 제로 비트로 세고 있는 것에 유의하기 바람). 이 제 2비트째는 도 6b에서 태스크(2)에 할당되어 있는 비트이므로 우선순위 인코더(74)는 태스크(2)의 태스크 식별자 taskid를 태스크ID 유지부(71)로 출력한다.
예를 들면 태스크 라운드 관리부(73)로부터 라운드값 taskn으로서『OOO111』이 출력되면 우선순위 인코더(74)는 이 라운드값 taskn에서 하위로부터 제 3비트째에『0』으로의 반전이 생겨 있는 것을 검출한다. 이 제 3비트째는 도 6b에서 태스크(3)에 할당되어 있는 비트이므로 우선순위 인코더(74)는 태스크(3)의 태스크 식별자 taskid를 태스크 ID 유지부(71)로 출력한다. 라운드값 taskn은 이미 슬롯의 할당이 끝난 태스크를 나타내므로 이 라운드값 taskn 에서『O』으로 반전하고 있는 비트는 다음에 슬롯을 할당되는 태스크가 어느 것인 가를 의미한다. 『0』으로 반전하고 있는 비트를 태스크 식별자 taskid로 변환하면 태스크 ID 유지부(71)에는 다음에 슬롯을 할당해야 되는 태스크가 저장된다.
태스크 ID 유지부(72)는 우선순위 인코더(74)가 새로운 태스크 식별자 taskid를 출력하면 직전에 출력된 태스크 식별자 taskid 를 기입 어드레스 선택신호 taskid(rd_adr)로서 유지하여 태스크별 PC 저장부(24)로 출력한다. 그리고 우선순위 인코더(74)가 출력한 태스크 식별자 taskid 를 유지하여, 이것을 판독하여 어드레스 선택신호 nxttaskid (rd_adr)로 하여 태스크별 PC 저장부(24)로 출력한다.
이상과 같이 구성된 제 1 실시예의 I/0 프로세서에 의해서, 어떻게 슬롯이 할당되어지는 가를 도 9에 도시한다. 도 9는 태스크(O)부터 태스크(5)까지의 태스크에 할당한 슬롯을 시간순으로 나열함으로써 형성되는 프레임이라는 단위를 나타낸다.
태스크(0)∼태스크(5)에는 각각 4사이클의 슬롯이 할당되기 때문에 24사이클의 프레임이 형성되게 된다. 이 프레임에 의해, 도 7에 도시된 명령열은 4명령씩 균일하게 실행된다.
(5) 동작 클록수의 계산에 대하여
제 1 실시예의 I/0 프로세서에 있어서 동작 클록수가 어떻게 계산되는지에 대하여 도 44를 참조하여 설명하기로 한다. 도 44는 제 1 실시예에서의 슬롯할당으로써 비디오 출력 태스크, 오디오 출력 태스크를 실행하는 경우에 동화상 스트림, 오디오 스트림이 어떻게 처리되는 가를 도시하는 타이밍차트이다. 여기서 비디오 출력 태스크, 오디오 출력 태스크의 실시간성을 보증하기 위해서는 동화상 스트림을 영상신호로 변환하기 위한 비디오 출력 태스크는 디스플레이의 수평 동기신호의 주기에 기초한 50μsec에서, 1라인분의 화상을 처리시켜야 하고, 오디오 스트림을 음성신호로 변환하기 위한 오디오 출력 태스크는 90μsec라는 주기에서, 소정의 음성 스트림을 처리해야 한다고 한다.
이 경우, 우선 첫째로 상기 주기에 있어서『이만큼의 명령은 최저 실행해 두어야 한다』는 최저 소화수를 도출한다.
여기서, 1라인분의 영상 데이터를 복호하기 위해서는 비디오 출력 태스크 내의 448개 정도의 명령실행을 최저 소화해야하며, 1주기분의 음성 데이터를 복호하기 위해서는 오디오 출력 태스크 내의 808개 정도의 명령실행을 최저 소화해야 한다. 또한, 본 실시예에서 CPI = 1이며, 명령수는 사이클수와 등가이기 때문에 최저 소화수로부터 비디오 출력 태스크, 오디오 출력 태스크에 할당해야되는 사이클수가 448(= 4 × 112) 사이클, 808(= 4 × 202) 사이클로 결정된다.
또한 태스크(0)∼태스크(5)는 각각 4사이클씩 실행된다. 여기서 명령 판독회로(10) 내에서의 셀렉터(25), 셀렉터(26)에 의한 프로그램 카운터의 전환에 의하며 오버헤드는 발생하지 않기 때문에 태스크(0)∼태스크(5)의 1순회에 요하는 시간은 실질적으로 24사이클이 된다.
명령 사이클수는 4이고, 태스크 총수는 O이기 때문에 모든 태스크는 24사이클로써 4명령씩 실행된다.
그렇다면, 1사이클에 요하는 시간 S1, S2는 이하의 식을 만족해야 한다.
50μsec 6 × 4 × 112 × S1nsec
90μsec 6 × 4 × 202 × S2nsec
S1 50μsec / 6 × 4 × 112 = 18.6nsec
S2 90μsec / 6 × 4 × 202 = 18.56nsec
동작 클록수를 1 ÷ S2nsec의 계산으로부터 정하면,
54㎒ = 1 ÷ 18.56nsec
로 된다. 이상의 계산에 의해, 비디오 출력 태스크, 오디오 출력 태스크의 처리 완수에 최적의 동작 클록수를 1의적으로 도출할 수 있다.
이상과 같이 본 실시예에 의하면, 동작 클록수의 최적의 하한값을 소정의 주기에서 실행해야 하는 명령의 최저 소화수와, 실행 주기와, 태스크 총수로부터 1의적으로 도출할 수 있다. 동작 클록의 최적의 하한값이 구해지므로 동작 클록 신호를 더욱 높은 것으로 정하지 않아도 오디오 출력 태스크, 비디오 출력 태스크의 실시간성을 보증할 수 있고, 동작 클록이 저속인 타입이 많은 민간용 기기에 탑재되는 경우라도, MPEG 스트림을 적합하게 복호할 수 있다.
또한, 복수의 비동기 이벤트 태스크를 시분할다중으로써 실행하는 I/0 프로세서를 설치함으로써, 인터럽트되도록 비동기 이벤트 처리를 처리하지 않고 되므로 셋업부(104), VLD부(105), IQ/IDCT부(106)는 역양자화, 역이산 여현변환, 동작 보상 처리에 전념할 수 있다. 또한, I/0 프로세서는 프로그램 카운터의 값을 세이브하고, 복원하기 위한 오버헤드의 발생 없이 고속으로 태스크를 전환하여 실행하므로 동작 클록을 고속으로 하지 않더라도, MPEG 스트림 재생에 요구되는 실시간성을 만족할 수 있다.
한편, 본 실시예에서 각 태스크에 관한 슬롯을 일률적으로 4사이클로 하였지만, 각 태스크의 처리 내용에 따라 각각 다른 값으로 설정해도 된다.
태스크별로 사이클수를 가변으로 하는 경우, 도 5에 도시된 슬롯 매니저를 도 45에 도시된 바와 같이 구성한다. 본 도면에서 셀렉터(200)는 태스크(O)으로부터 태스크(5)까지의 고유의 사이클수인 『cycle number for taskO』∼『cycle number for task5』로 접속되고, 스케쥴러(62)가 출력한 nxttaskid에 따라 대응하는 사이클수를 택일식으로 비교기(54)에 출력한다. 도 19a에서 다음에 슬롯을 할당해야 되는 태스크가 태스크(O)이면, 셀렉터(200)는『Cycle number for taskO』을 비교기(54)로 출력한다. 이와 같이 구성하면, 태스크(0)로부터 태스크(5)까지의 각각의 처리 부하에 따른 최적의 사이클수를 각 태스크에 분배할 수 있다. 또한 이러한 최적의 사이클수를 메모리 또는 레지스터에 기억시켜 놓고, 이것을 나중에 고쳐써도 된다.
또, 본 실시예에서 실행해야 할 태스크를 비동기 이벤트 태스크에 집중하여 설명하였으나 다른 태스크라도 된다.
( 제 2 실시예 )
제 1 실시예에서는 각 태스크의 슬롯에 할당하는 명령수를 일률적으로 4사이클로 하고 있었으나, 제 2 실시예에서는 어느 만큼의 사이클을 1슬롯에 할당하는지를 각 태스크가 독자적으로 변경할 수 있도록 한 실시예이다. 슬롯으로의 할당은 Wait_Until_Next 명령에 의해 이루어진다. Wait_Until_Next 명령이란 슬롯에 있어서의 명령을 도중에서 중단하고, Wait_Until_Next 명령의 다음 차례에 위치하는 일련의 명령열을 다음 슬롯으로 먼저 보낸다는 뜻의 명령이다. 또, Wait_Until_Next 명령의 해독시의 판독장소 어드레스의 저장인데, 이 때 도 4에 도시된 5입력-1출력의 셀렉터(25)는 ①의 신호선을 개재하여 IF1+1 유지부(20)의 출력을 선택하여 태스크 PC 저장부(24)에 저장한다.
도 10a는 Wait_Until_Next 명령(도면중의 WUN 명령)을 명령 0-1로서 그 내부에 갖은 비동기 이벤트 태스크의 일례이고, 도 11은 도 10a의 비동기 이벤트 태스크가 어떻게 실행되는 가를 도시한 타이밍차트이다. Wait_Until_Next 명령이 도 1Oa에 도시된 바와 같이 명령 0-1로서 비동기 이벤트 태스크의 제 1번째의 명령으로서 저장되어 있는 경우, 이 명령 0-1이 DECPC 유지부(23)에 저장되고, 명령해독 제어부(11)에 의해 해독되면 셀렉터(25)는 ①의 신호선을 통해 명령 0-2의 판독장소 어드레스를 태스크별 PC 저장부(24)에 저장한다(도 11의 ①도 마찬가지임). 그 후 명령해독 제어부(11)는 명령 0-2, 명령0-3을 무효화한다(도 11에서의 『NOP』).
여기에서 명령 0-2는 I/O 프로세서의 로컬 메모리 내의 어드레스 mem1의 값을 레지스터 세트(12) 내의 레지스터 r0에 판독하는 명령이고, 명령 O-3은 I/O 프로세서의 로컬 메모리 내의 어드레스 buf1의 값을 레지스터 r1에 판독하는 명령이다. 명령0-4는 레지스터 r0의 값과 레지스터 r1의 값을 곱하여 그 결과를 레지스터 r2에 저장하는 명령이고, 명령 0-5는 레지스터 r2의 값을 I/0 프로세서의 로컬 메모리 내의 어드레스 mem1에 저장하는 명령이다.
이상 4개의 명령은 판독장소 어드레스, 기입장소 어드레스가 모두 I/O 프로세서의 로컬 메모리이며, 명령의 0-0이 Wait_Until_Next 명령인 것에 의해 I/O 프로세서의 로컬 메모리를 판독장소 어드레스 기입장소 어드레스로 한 명령이 하나의 슬롯에 들어가는 것을 알 수 있다.
도 10b는 Wait_Until_Next_slot 명령의 명령 포맷의 일례를 도시한다. 도 10b에서 본 명령은 도 7b에 도시된 레지스터 지정형 산술 연산 명령의 명령 포맷을 갖는다. 본 포맷의 11비트로부터 13비트를『010』에 지정함으로써 wait_until_ next_s1ot 명령의 오퍼레이션을 입출력 프로세서는 실행한다.
이상과 같이 구성된 제 2 실시예의 I/0 프로세서에 의해 어떻게 슬롯이 할당되어지는 가를 도 12를 참조하여 설명하기로 한다.
태스크(1), 태스크(2), 태스크(3), 태스크(4), 태스크(5)에는 4사이클의 슬롯이 할당된다. 그러나 태스크(O)에는 wait_until_next 명령이 존재하고 있기 때문에 태스크(O)에 할당되는 슬롯은 wait_unti1_next 명령이 배치되어 있는 위치까지로 되고, 태스크(O)에 할당되는 슬롯은 2사이클이 된다.
태스크(0)∼태스크(5)가 1순회한 후에 형성되는 다음 프레임에 있어서, 태스크(1)은 다른 태스크와 마찬가지로 4사이클의 슬롯이 할당된다.
이상과 같이 본 실시예에 의하면 동일 메모리를 액세스 장소로 한 메모리 액세스 명령을 하나의 슬롯에서 집중하여 실행할 수 있다.
( 제 3 실시예 )
제 1 실시예에서는 비동기 이벤트 태스크를 기동해야 할 사상이 성립되었는지의 여부에 관계없이, 6개의 비동기 이벤트 태스크에 공평하게 슬롯을 할당하고 있었기 때문에 기동할 필요가 없는 비동기 이벤트 태스크와, 그 필요가 있는 비동기 이벤트 태스크가 실질적으로 동시간이라는 악평 등이 횡행하고 있었다. 제 3 실시예는 비동기 이벤트 태스크를 기동해야 할 사상이 성립되어 있는지의 여부를 비동기 이벤트 태스크에 체크하고, 기동해야 할 사상이 미성립된 태스크에 있어서는 사이클의 할당수를 삭감하도록 제어한다.
제 3 실시예에서의 I/0 프로세서의 내부 구성을 도 13에 도시한다. 도 13에서 I/0 프로세서가 명령 메모리(100), 명령 판독회로(10)를 구비하고 있는 점은 제 1 실시예와 같다. 제 3 실시예에 있어서 신규인 것은 명령해독 제어부(11) 및 연산 실행부(14)가 각각 명령해독 제어부(81) 및 연산 실행부(84)로 대체되어 있는 점이다. 또한 7개의 상태감시 레지스터가 추가되고, 태스크 관리부(15)의 내부에 태스크 관리 레지스터(13)가 구비된 점이다.
7개의 상태감시 레지스터(CR1∼CR7)는 각각이 5비트 길이의 레지스터이고, AV 디코더 내부에서 I/0 프로세서의 주변에 위치하는 구성요소, 즉 비디오 출력부(108), 버퍼 메모리 컨트롤러(110), RAM 컨트롤러(111), FIF0 컨트롤러(112) 등의 구성 요소와 접속되고, I/0 프로세서의 주변부에서의 5개 사상의 성립여부가 각 비트에 반영되어 있다(또, 비디오 출력부(108), 버퍼 메모리 컨트롤러(110), RAM 컨트롤러(111), FIFO 컨트롤러(112)와의 접속은 복잡하기 때문에 그 도시는 생략하고 있음).
그 일례로서 상태감시 레지스터(CR1), 상태감시 레지스터(CR2), 상태감시 레지스터(CR3)에 대하여 도 17을 참조하여 설명하기로 한다. 도 17은 상태감시 레지스터(CR1∼CR3)의 비트 구성을 도시한 도면이다.
상태감시 레지스터(CR1)의 제 0비트는 통상은『0』으로 설정되고, 버퍼 메모리 버스(121)에 있어서 버퍼 메모리(102)로의 데이터 전송이 소정 회수가 행하여졌을 때만 『1』로 설정된다.
상태감시 레지스터(CR1)의 제 1비트는 통상은 『0』으로 설정되고, 버퍼 메모리 버스(121)로 출력된 MPEG 스트림의 스타트 코드가 검출되었을 때만 『1』로 설정된다.
상태감시 레지스터(CR1)의 제 2비트는 통상은 『0』으로 설정되고, 버퍼 메모리 버스(121)로 출력된 MPEG 스트림에 1바이트 이상의 유효 데이터의 존재가 확인되었을 때만 『1』로 설정된다.
상태감시 레지스터(CR1)의 제 3비트는 통상은『O』으로 설정되고, 버퍼 메모리(102)에 버퍼에 유효 비트가 3바이트 이상 존재할 때만『1』로 설정된다. 또한 본 비트는 퍼징 태스크와, 오디오 스트림 전송제어 태스크, 동화상 스트림 전송제어 태스크의 사이의 통신에 이용된다.
상태감시 레지스터(CR2)의 제 O비트는 통상은『0』으로 설정되고, 버퍼 메모리(102) 상에서 SDRAM(300)으로의 전송을 서포트하는 요지의 요구가 발생되면 『1』로 설정된다. 또한 본 비트는 퍼징 태스크와, 오디오 스트림 전송제어 태스크, 동화상 스트림 전송제어 태스크의 사이의 통신에 이용된다.
상태감시 레지스터(CR2)의 제 1비트는 통상은 『0』으로 설정되고, DMA 전송이 완료되었을 때만 『1』로 설정된다.
상태감시 레지스터(CR2)의 제 2비트는 통상은『0』으로 설정되고, 비트 스트림 FIFO(103)에 대한 전송요구가 있는 경우만『1』로 설정된다.
상태감시 레지스터(CR2)의 제 3비트는 통상은『0』으로 설정되고, FIFO 컨트롤러(112) 내부의 제어 레지스터가 갱신되면 『1』로 설정된다.
상태감시 레지스터(CR3)의 제 0비트는 통상은 『0』으로 설정되고, 버퍼 메모리(102)가 DMA_READY 상태로 되면『1』로 설정된다.
상태감시 레지스터(CR3)의 제 1비트는 통상은 『0』으로 설정되고, SDRAM (300)으로의 DMA 전송이 완료되면『1』로 설정된다.
상태감시 레지스터(CR3)의 제 2비트는 통상은『0』으로 설정되고, 외부에 접속된 디스플레이 장치에서의 수평 귀선 신호의 하강으로써 『1』로 설정된다.
상태감시 레지스터(CR3)의 제 3비트는 통상은『0』으로 설정되고, 외부에 접속된 디스플레이 장치에서의 비디오 신호가 수평 블랭킹 기간이 되면 『1』로 설정된다.
상태감시 레지스터(CR3)의 제 4비트는 통상은 『0』으로 설정되고, 비디오 출력 태스크에 대한 처리 요구가 발생한 경우만『1』로 설정된다.
이상과 같이 3개의 상태감시 레지스터는 AV 디코더 내의 각 버퍼나 컨트롤러의 제어상태를 나타낸다. 다른 상태감시 레지스터도 마찬가지이며, 7개의 상태감시 레지스터에 의해 I/0 프로세서는, 각 비동기 이벤트 태스크는 자신의 기동 요인이 되는 각종 사상이 성립되어 있는지의 여부를 감시할 수 있다.
연산 실행부(84)는 연산 실행부(14)와 같은 기능을 갖은 구성이다. 연산 실행부(14)와 비교하여 가장 신규인 것은 명령해독 제어부(81)로부터 CR1∼CR7이라는 각 상태감시 레지스터에 첨부된 번호와 즉치를 받아들여, 지정된 상태감시 레지스터의 유지값과 받아들인 즉치를 비교하기 위한 감산을 하는 점이다. 이 감산결과에 따라 제로 플래그, 캐리 플래그를 온/오프하여 상태감시 레지스터의 유지값과 즉치의 일치, 불일치, 대소를 명령해독 제어부(81)에 통지한다.
상기 통지에 있어서 명령해독 제어부(81)는 현재 실행중인 연산을 무효화하는 취지의 신호를 출력할 수 있지만, 이것을 받아들이면 연산 실행부(84)는 범용 레지스터로의 값의 저장을 중단한다.
명령해독 제어부(81)는 명령해독 제어부(11)와 같은 기능을 갖은 구성이지만, 명령해독 제어부(11)와 다른 것은 명령해독 제어부(81)는 사상대기 루프를 형성할 수 있는 명령을 명령 메모리(1OO)로부터 판독하여, 이것을 해독하였을 때에 CR1∼CR7이라는 각 상태감시 레지스터에 첨부된 번호와 즉치를 연산 실행부(84)로 출력한다. 또, 사상대기 루프를 구성하는 명령이란 이하의 {예 1}의 취지의 내용이다. 상태감시 레지스터의 지정과 즉치를 연산 실행부(84)에 출력한 후, 연산 실행부(84)가 제로 플래그, 캐리 플래그에 의해 유지값과 즉치의 일치, 불일치, 대소를 명령해독 제어부(81)에 통지하면 명령해독 제어부(81)는 이것을 참조하여, 만일 유지값과 즉치의 불일치가 통지되면 태스크관리 레지스터(13)에 사상불성립을 나타내는 신호를 출력하고, 이 다음 명령의 실행결과를 무효화하는 취지의 신호를 연산 실행부(84)로 출력하여 판독장소 어드레스의 값을 먼저 진행시키지 않도록 명령 판독회로(10)에 통지한다. 만일 유지값과 즉치의 불일치가 통지되면, 태스크관리 레지스터(13)에 사상성립을 나타내는 신호를 출력한다.
{예 1}
명령
사상 i의 성립의 진위를 판정하여, 사상 i의 성립이 거짓이면
판독장소 어드레스를 먼저는 진행시키지 않는다.
또한 본 명령의 니모닉(mnemonic)을 {예 2}에 나타낸다.
{예 2}
cmp_and_wait cr_statei. 즉치
{예 2}에 있어서 제 1 오퍼랜드에 cr_statei(0, 1, 2, 3, 4···7)가 기술되어 있는 것은 I/0 프로세서에서의 7개의 상태감시 레지스터 중 어느 하나를 지시할 수 있는 것을 의미한다.
이 제 1 오퍼랜드란에서의 상태감시 레지스터의 지정과, 제 2 오퍼랜드에서의 즉치 지정을 조합하여 35개의 사상 중, 임의의 것의 성립여부를 확인할 수 있다. 상기 명령을 이후의 설명에서는 Cmp_And_Wait 명령이라 한다. 또한 상술한 사상 대기 루프는 이 Cmp_And_Wait 명령의 제 1 오퍼랜드, 제 2 오퍼랜드에서 지정된 사상의 성립여부가 여러번 불성립으로 판정됨으로써 발생하는 것은 물론이다.
제 3 실시예에서의 변경이 가해진 명령 판독회로(10)의 구성을 도 14a에 도시한다. 도 14a에서 명령 판독회로(10)가 IF1+1유지부(20), 증분회로(21), IF2 유지부(22), DECPC 유지부(23), 태스크별 PC 저장부(24), 셀렉터(25), 셀렉터(26)를 구비하는 점은 제 1 실시예와 같다. 명령 판독회로(10)에 있어서 신규인 것은 DECPC 유지부(23)의 출력단에 접속된 플립플롭(27)이다.
플립플롭(27)은 Cmp_And_Wait 명령이 지정한 사상이 불성립인 경우에 구비하고, 명령해독 제어부(81)가 해독 중인 명령의 판독장소 어드레스를 셀렉터(25)에 출력할 수 있도록 DECPC 유지부(23)의 값을 유지하고 있다. 혹시 프로그램 카운트값을 되돌리는 취지의 지시가 명령해독 제어부(11)로부터 주어지면 플립플롭(27)은 그 유지값을 ⑤의 신호선을 통하여 셀렉터(25)로 출력하고, 셀렉터(25)는 이 플립플롭(27)의 유지값을 태스크별 PC 저장부(24)에 저장하도록 태스크별 PC 저장부(24)의 입력원을 ⑤의 신호선으로 전환한다. 제 3 실시예에서의 명령 판독회로의 출력 논리표를 도 14b에 도시한다.
도 19a는 cmp_and_wait 명령의 해독시의 프레임에서의 I/0 프로세서의 구성요소에 관한 타이밍차트이고, 본 타이밍차트에서의 플립플롭(27)의 역할에 대하여 설명하기로 한다.
도 19a에서 플립플롭(27)이 유지값으로서 cmp_and_wait 명령의 어드레스에 상당하는 명령 0-0의 어드레스를 참조부호(a7)로 나타내는 바와 같이 출력하면, 명령 O-O의 어드레스는 IPCO로서 태스크별 PC 저장부(24)에 저장된다. 이에 따라 태스크별 PC 저장부(24)에는 IPCO로서 cmp_and_wait 명령의 어드레스가 저장된다.
본 실시예에서의 태스크 관리부(15)의 내부 구성을 도 15에 도시한다.
도 15에 도시된 태스크 관리 레지스터(13)는 사상대기 루프(이후 wait 상태라 함)에 빠진 태스크를 개별로 관리하기 위한 비트가 할당된 레지스터이다. 태스크 관리 레지스터(13)는 명령해독 제어부(81)로부터 사상 불성립을 나타내는 신호가 통지되면, 태스크 ID 유지부(72)가 유지하고 있는 태스크 식별자 taskid를 참조하여, 그 태스크 식별자 taskid에 대응하는 비트를『1』로 전환한다. 반대로 사상성립을 나타내는 신호가 통지되면, 태스크 ID 유지부(72)가 유지하고 있는 태스크 식별자 taskid를 참조하여, 그 태스크 식별자 taskid에 대응하는 비트를『0』으로 전환한다.
도 16은 태스크 관리 레지스터(13)에서의 대기 상태 태스크의 관리용 비트 구성을 도시한다. 본 도면에서 제 O비트가『1』이면 태스크(O)가 대기 상태인 것을 나타내고, 제 O비트가『0』이라면 태스크(0)이 그렇지 않은 것을 나타낸다.
또, 본 도면에서 제 1비트가『1』이면, 태스크(1)이 대기 상태인 것을 나타내며, 제 1비트가 『0』이면 태스크(1)이 그렇지 않은 것을 나타낸다. 태스크 관리 레지스터(13)의 제 2비트가『1』이라면 태스크(2)가 대기 상태인 것을 나타내며, 제 2비트가『0』이라면 태스크(2)가 그렇지 않은 것을 나타낸다. 태스크 관리 레지스터(13)에 의한 사상대기 루프의 관리에 의해, 복수의 태스크에서 동시 다발의 사상대기 루프를 개별로 관리할 수 있다.
도 19a의 타이밍차트에 있어서, 명령 0-0이 cmp_and_wait 명령인 것으로 해독되고, 사상이 불성립으로 판정된 것으로 한다. 이 경우, 명령해독 제어부(81)는 태스크(O)가 사상성립 대기상태가 된 취지를 참조부호(a8)로 나타내는 바와 같이 통지한다. 그렇게 하면, 태스크 관리 레지스터(13)는 태스크(O)의 태스크 식별자에 대응하는 비트를 참조부호(a9)로 나타내는 바와 같이 『1』로 설정한다.
계속해서『사상성립 대기시』, 『사상성립시』, 『사상성립시 이후』에서 태스크 관리 레지스터(13)에 할당된 각 비트가 어떻게 설정되는지에 대하여 타이밍차트를 참조하여 설명하기로 한다.
도 19b에 사상성립 대기시, 도 19c에 사상성립시, 도 19d에 사상성립시 이후에서의 타이밍차트를 도시한다.
태스크(O)에서의 cmp_and_wait 명령이 성립을 기다리고 있는 사상이 도 19c 에서 성립하였다고 한다. 이 경우, 명령해독 제어부(81)는 사상이 성립된 취지를 참조부호(d1)로 나타내는 바와 같이 통지한다. 그렇게 하면 태스크 관리 레지스터(13)는 태스크(0)의 태스크 식별자에 대응하는 비트를 참조부호(d2)로 나타내는 바와 같이 『0』으로 설정한다.
도 15를 참조하여, 제 3 실시예에서의 슬롯 매니저(61)의 내부 구성에 대하여 설명하기로 한다. 슬롯 매니저(61)에 있어서 플립플롭(51), 카운터(52), 비교기(54)를 구비하고 있는 점은 제 1 실시예와 같다. 도 15에서 신규인 것은 ID 컨버터(53) 및 셀렉터(55)이다.
ID 컨버터(53)는 태스크 ID 유지부(72)에 다음에 슬롯을 할당할 태스크의 식별자가 출력되면 태스크 관리 레지스터(13)에서 대기 상태로 설정되어 있는 태스크와 다음에 슬롯을 할당할 태스크 식별자 taskid가 일치하고 있는 가를 판정하여, 만일 일치하고 있으면 셀렉터(55)에 하이값을 출력하고, 불일치하면 셀렉터(55)에 로우값을 출력한다.
셀렉터(55)는 ID 컨버터(53)가 출력한 신호의 하이값, 로우값에 따라 『2』혹은『4』의 수치를 택일식으로 비교기(54)에 출력한다. 도 19a에서 다음에 슬롯을 할당할 태스크가 태스크(O)이면, 참조부호(a1O)에서 셀렉터(55)에 로우값이 출력되므로 참조부호(a12)로 나타내는 바와 같이 셀렉터(55)는『4』를 비교기(54)로 출력한다. 그러나 도 19a의 참조부호(a9)에서 태스크(0)에 대한 비트가『1』로 설정되고, 도 19b의 참조부호(g1)로 나타내는 바와 같이 셀렉터(55)에 하이값이 출력되면 셀렉터(55)는 참조부호(g2)로 나타내는 바와 같이 『2』를 비교기(54)로 출력한다.
도 19c의 참조부호 d2에 있어서 태스크(0)에 대한 비트가『0』으로 설정되고, 도 19d에서 참조부호(g5)로 나타내는 바와 같이 셀렉터(55)에 하이값이 출력되면 셀렉터(55)는 참조부호(g6)로 나타내는 바와 같이 『4』를 비교기(54)로 출력한다.
셀렉터(55)가『2』또는『4』의 수치를 택일적으로 비교기(54)로 출력함으로써 2사이클의 슬롯, 4사이클의 슬롯의 어느 한쪽이 각 태스크에 할당된다. 셀렉터(55)가 『2』를 출력했을 때는 그 두 번째의 명령을 무효화하기 때문에, 결과적으로 1사이클의 슬롯이 할당된다.
타이밍차트의 시간축을 따라 도 19a부터 도 19d까지의 타이밍차트에 도시된 명령 판독회로(10)의 구성 요소 및 태스크 관리부(15)의 구성요소의 동작에 대하여 설명하기로 한다.
초기 상태에 있어서 태스크 관리 레지스터(13)의 비트는 모두 제로(0)인 것으로 한다. 그렇게 하여 도 19a에서 태스크(0)으로부터 명령의 판독이 시작되면 태스크 (0)에 대한 비트는 태스크 관리 레지스터(13)에서『O』으로 설정되어 있기 때문에, 참조부호(a12)로 나타낸 바와 같이 셀렉터(55)는 카운터의 상한값으로서『4』를 출력한다. 카운터의 상한값이『4』로 설정되었기 때문에 태스크(O)를 4사이클 실행하고자 하지만, 명령 O-O이 cmp_and_wait 명령이기 때문에 참조부호(a7)로 나타낸 바와 같이 태스크별 PC 저장부(24)에 명령 0-0의 판독장소 어드레스를 기입한다. 그와 동시에, 참조부호(a8, a9)로 나타낸 바와 같이 cmp_and_wait 명령의 실행시에 있어서 태스크 관리 레지스터(13)의 제 0비트를『1』로 설정한다. 이 설정에 의해, 태스크(0)는 사상성립 대기로 된다. 이와 같이 비트를 설정한 후, 태스크(1), 태스크(2), 태스크(3), 태스크(4), 태스크(5)의 실행이 끝나고 다음 프레임으로 이행한 것으로 한다.
사상성립 대기상태에 있어서 태스크 관리 레지스터(13)의 비트는 태스크(O)만이『1』이고, 그 밖의 비트는 제로인 것으로 한다. 그렇게 하여 도 19b에서 태스크(0)로부터 명령의 판독이 시작되면 태스크(0)에 대한 비트는 태스크 관리 레지스터(13)에서『1』로 설정되어 있기 때문에 참조부호(g2)로 나타낸 바와 같이 셀렉터(55)는 카운터의 상한값으로서『2』를 출력한다. 카운터의 상한값이 『2』로 설정되었기 때문에 태스크(O)을 2사이클 실행하고자 하지만, 명령0-0이 cmp_and_wait 명령이기 때문에 태스크별 PC 저장부(24)에 명령0-0의 판독장소 어드레스를 기입한다. 이러한 기입 후, 태스크(1), 태스크(2), 태스크(3), 태스크(4), 태스크(5)의 실행이 끝나고 다음 프레임으로 이행한 것으로 한다.
다음의 프레임에서 사상이 성립한 것으로 한다. 도 19c에서 태스크(0)로부터 명령의 판독이 시작되면 태스크(0)에 대한 비트는 태스크 관리 레지스터(13)에 서『1』로 설정되어 있기 때문에 참조부호(g4)로 나타낸 바와 같이 셀렉터(55)는 카운터의 상한값으로서『2』를 출력한다. 카운터의 상한값이『2』로 설정되었기 때문에 태스크(0)를 2사이클 실행하고자 한다.
명령0-0인 cmp_and_wait 명령의 실행시에 있어서, 사상성립이 확인되기 때문에 참조부호(d1, d2)로 나타낸 바와 같이, cmp_and_wait 명령의 실행시에 있어서 태스크 관리 레지스터(13)의 제 0비트를『0』으로 설정한다. 이 설정에 의해 태스크(O)은 사상성립 대기로부터 해방된다. 이와 같이 비트를 설정한 후, 태스크(1), 태스크92), 태스크(3), 태스크(5)의 실행이 끝나고 다음 프레임으로 이행한 것으로 한다.
도 19d에 도시된 사상성립 이후의 프레임에 있어서는, 태스크(0)에 대한 비트가 태스크 관리 레지스터(13)에 있어서『O』으로 설정되고 있기 때문에, 참조부호 (g6)로 나타내는 바와 같이 셀렉터(55)는 카운터의 상한값으로서『4』를 출력한다. 카운터의 상한값이『4』로 설정되었기 때문에 태스크(O)를 4사이클 실행한다.
이상과 같이 구성된 제 3 실시예의 I/0 프로세서에 의해서, 어떻게 슬롯이 할당되어지는 가를 도 18a∼도 18d를 참조하여 설명하기로 한다.
도 18a에서 태스크(0), 태스크(3), 태스크(4), 태스크(5)는 모두 메모리 전송제어 태스크이고, 그 제 1번째의 명령이 cmp_and_wait 명령인 것으로 한다. 여기에서 도 18b의 상태에서는 이들의 cmp_and_wait 명령이 대기하고 있는 사상이 미성립인 것으로 하면 태스크(0), 태스크(3)∼태스크(5)에 2사이클의 슬롯이 할당되어 있고, 제 2명령은 무효화되어 있지만, 태스크(1), 태스크(2)에는 4사이클의 슬롯이 할당된다.
도 18c에서 태스크(0)∼태스크(5)가 몇회 순회하고, 태스크(0)의 cmp_and_ wait 명령이 대기하고 있는 사상만이 성립한 것으로 한다. 그렇다면 당해 사상이 성립한 프레임에서는 태스크(3)∼태스크(5)에는 여전히 2사이클의 슬롯이 할당되어 있고, 제 2명령은 무효화되어 있지만, 태스크(0)은 사상이 성립되었으므로 제 2명령은 실행된다.
도 18d에서 사상(j0)의 성립 이후의 프레임에 있어서는 태스크(0)에는 태스크(1), 태스크(2)와 동일한 4사이클의 슬롯이 할당된다.
도 18e는 cmp_and_wait 명령의 명령 포맷의 일례를 도시한다. 도 18e에서 5비트부터 7비트까지의 3비트를 이용하여 7개의 상태감시 레지스터 중 어느 하나를 지정할 수 있고, 11비트부터 15비트까지를 이용하여 5비트 길이의 즉치를 저장할 수 있다. 본 포맷의 9비트부터 10비트를 이용하여 오퍼레이션 내용을 지정할 수 있다. 이 2비트를『10』으로 지정함으로써 cmp_and_wait 명령의 오퍼레이션을 I/O 프로세서는 실행한다. 또한, 이 2비트를『00』으로 지정함으로써 7개의 상태감시 레지스터 중, 1개의 값과 5비트 즉치과의 비교명령의 오퍼레이션을 I/0 프로세서는 실행한다.
이상과 같이 본 실시예에 의하면 메모리 액세스가 가능한 상태를 기다리고 있는 메모리 전송제어 태스크에 의해 짧은 시간길이의 슬롯을 할당함으로써 다른 태스크의 진척을 향상시킬 수 있다.
( 제 4 실시예 )
제 4 실시예는 디스플레이의 수평 블랭킹 기간, 수직 블랭킹 기간에 있어서 비디오 출력 태스크에 의해 많은 슬롯을 할당하는 기술에 관한 것이다.
슬롯의 증가를 행하는 I/0 프로세서는 제 1 실시예에서의 태스크 관리부(15)의 구성에 도 20∼도 21에 도시된 변경을 덧붙여 실현한다.
제 4 실시예에서의 입출력 프로세서는 명령 메모리(100), 명령 판독회로(10), 명령해독 제어부(81), 연산 실행부(84), 태스크 관리부(15)를 구비하고 있는 점은 제 3 실시예와 같다. 제 4 실시예에서 신규인 것은 태스크 관리 레지스터(13)가 긴급 상태천이 허가신호 iexecmode를 감시하고 있는 점이다.
제 4 실시예에서의 태스크 관리부(15)의 내부 구성을 도 20에 도시한다.
도 20에서의 태스크 관리 레지스터(13)에서의 3비트는 태스크 관리 레지스터(13) 내의 3비트를 이용하여 긴급 취급을 요하는 태스크의 식별자가 지정된다. 당해 3비트에서 6개의 태스크 중 어떤 태스크를 긴급 취급할 것인지는 상기 긴급 상태천이 허가신호 iexecmode가 어떠한 내용의 신호인가에 따라 적절히 변경한다. 본 실시예에서는 긴급 상태천이 허가신호 iexecmode는 수평 블랭킹 기간, 수직 블랭킹 기간 등에 상당하고, 비디오 출력 태스크의 식별자를 태스크 관리 레지스터(13)에서의 3비트로 지정하고 있다.
어떤 태스크를 긴급 취급을 요하는 태스크로서 태스크 관리 레지스터(13)에 등록할 것인지는, 어떤 태스크 내에 긴급 명령이 포함되어 있는지를 태스크 관리 레지스터(13)가 참조함으로써, 결정되는 것으로 한다. 명령해독 제어부(81)가 다음에 실행해야 할 명령을 해독하였을 때, 그 해독 결과가 긴급 명령이라면 태스크 관리 레지스터(13)는 당해 명령을 포함하는 태스크를 긴급 취급을 요하는 태스크로서 그 식별자를 유지한다.
제 4 실시예에서의 스케쥴러(62)의 내부 구성을 도 21에 도시한다. 도 21에서 스케쥴러(62)가 태스크 ID 유지부(72)를 구비하고 있는 점은 제 1 실시예와 같다. 도 21에서 신규한 것은 태스크 라운드 관리부(73) 및 우선순위 인코더(74)가 각각 태스크 라운드 관리부(75) 및 우선순위 인코더(80)로 대체되어 있는 점이다. 또한 컨버터(76), 긴급 태스크 마스크부(77) 및 태스크 ID 유지부(83)가 추가되어 있는 점이다.
태스크 라운드 관리부(75)가 태스크 라운드 관리부(73)와 다른 것은 태스크 라운드 관리부(73)가 태스크 ID 유지부(71)에 있어서 태스크 식별자가 어떻게 갱신되었는지를 감시하고, 6비트 길이의 레지스터를 이용하여 6개의 태스크 중 슬롯의 할당이 끝난 것을 관리하는 데 대하여, 태스크 라운드 관리부(75)는 슬롯의 할당이 끝난 태스크의 관리를 통상 기간에서의 태스크 관리와, 긴급 기간에서의 통상 태스크의 관리와 구별하여 행하는 점이다. 예를 들면 태스크 관리 레지스터(13)에 있어서 태스크(1)을 인터리브식으로 실행하는 경우, 6개의 태스크 중 5개의 태스크가 태스크(0), 태스크(2), 태스크(3), 태스크(4), 태스크(5)와 같이 순회하게 된다.
5개의 태스크를 상기한 바와 같이 순회하는 경우, 실행이 끝난 태스크를 나타내는 라운드값은 태스크 관리 레지스터(13)에서 관리되고 있는 긴급 태스크를 제외한 수치로 표현해야 한다. 이와 같이 태스크 라운드 관리부(75)는 긴급 태스크를 제외한 라운드값을 관리하기 위해 라운드값 taskn 과는 별도로 긴급 태스크를 제외한 라운드값 taskne를 긴급 태스크 마스크부(77)로 출력한다. 덧붙여서 말하면, taskne의『ne』는 『Not』및『Emergency』의 두문자에 유래하고 있다.
컨버터(76)는 태스크 관리 레지스터(13)에 관리되어 있는 긴급 태스크의 식별자를 6비트의 라운드값 emgcytask로 변환한다.
긴급 태스크 마스크부(77)는 컨버터(76)에 의해 변환된 라운드값 emgcytask와, 태스크 라운드 관리부(75)가 출력한 라운드값 taskne와의 6비트 길이의 논리합을 취하는 OR 회로(78)를 구비한다.
여기에서 OR 회로(78)에 있어서 논리합을 취하는 것은 라운드값 taskne 및 긴급 태스크를 나타내는 라운드값의 양자를 포함한 6비트 길이의 라운드값을 산출하는 것을 의미한다. 예를 들면 라운드값 taskne가 태스크(0), 태스크(2), 태스크(3)에 슬롯이 할당된 것을 나타내는 『OO11O1』이고, 라운드값 emgcytask이 긴급 태스크가 태스크(1)인 것을 나타내는 『OOOO1O』인 경우, OR 회로(78)의 출력은 태스크(0), 태스크(1), 태스크(2), 태스크(3)에 슬롯이 할당된 것을 나타내는 『001111』로 된다.
우선순위 인코더(80)는, 우선순위 인코더(74)의 기능에 덧붙여, 태스크 라운드 관리부(75)가 출력한 라운드값 taskne(라운드값 maskne)를 수취하고, 수취한 태스크 라운드 관리부(73)의 라운드값 taskne(라운드값 maskne)에서 몇비트째에『1』부터『O』으로의 반전이 생기는가를 검출한다. 이와 같이『0』으로의 반전이 생긴 비트를 검출하면, 이 반전이 생긴 비트에 할당되어 있는 태스크의 태스크 식별자 taskid를 각각 개별로 태스크 ID 유지부(83)에 저장시킨다.
예를 들면 긴급 태스크의 라운드값과 라운드값 taskne와의 논리합인 라운드값 maskne『OOO111』이 긴급 태스크 마스크부(77)로부터 출력되면 우선순위 인코더(80)는 이 라운드값 maskne에서 하위로부터 제 3비트째에『O』으로의 반전이 생기는 것을 검출한다. 이 제 3비트째는 도 6b에서 태스크(3)으로 할당되어 있는 비트이므로 우선순위 인코더(80)는 태스크(3)의 태스크 식별자 taskid를 셀렉터(82)로 출력한다.
cstate 기억부(85)는 I/0 프로세서가 통상 상태인지 긴급상태인지를 나타내는 플래그 cstate를 기억한다. 도 23은 cstate 기억부(85)가 기억하는 플래그의 상태 천이도이다. 본 도면에서 통상 상태로부터 긴급 상태로의 천이는 긴급 상태 천이 허가신호 iexecmode가 하이이고, 또 태스크 전환신호 chg_task가 하이값이 된 경우에 행하여진다. 반대로 긴급 상태로부터 통상 상태로의 천이는 태스크 전환신호 chg_task가 하이값이 된 경우에 행하여진다. 도 24는 긴급 상태천이 허가신호iexecmode, 태스크 전환신호 chg_task, cstate 사이의 타이밍을 나타내는 타이밍차트이다.
iexecmode 신호가 하이로 상승된 타이밍(a30)에서 참조부호(a31)로 나타내는 바와 같이 태스크 전환신호 chg_task가 하이값이 되었다고 하자. 그러면 cstate는 참조부호(a32)로 나타내는 바와 같이 하이로 되어 긴급 상태로 천이한다. 태스크 전환신호 chg_task가 참조부호(a33)로 나타내는 바와 같이 다시 하이가 되면 cstate는 참조부호(a34)로 나타내는 바와 같이 로우값으로 되어 통상 상태로 복귀한다. 이러한 긴급 상태로부터 통상 상태로의 천이, 통상 상태로부터 긴급 상태로의 천이를 반복하게 된다.
셀렉터(82)는 입력된 긴급 상태천이 허가신호 iexecmode가 하이이고, 그 위에 또 cstate가 참조부호(a32)로 나타내는 바와 같이 하이인 경우(cstate의 역의 진리값 cstate!이 참조부호(a35)로 나타내는 바와 같이 로우인 경우)에, 태스크 관리 레지스터(13)에 기억되어 있는 태스크 식별자 taskide를 선택하여 태스크 ID 유지부(72)로 출력한다. 그 밖의 경우, 우선순위 인코더(80)의 출력인 라운드값 maskne로부터 변환된 태스크 식별자 taskidne를 선택하여 태스크 ID 유지부(72)로 출력한다. 도 22는 셀렉터(82)에서의 taskide의 진리값표를 도시한 도면이다.
이와 같이 라운드값 maskne로부터 변환된 태스크 식별자 taskidne와, 긴급 태스크의 식별자를 셀렉터(82)가 긴급 상태천이 허가신호 iexecmode의 하이기간/로우기간에 따라 전환하여 출력하는 것은 긴급 상태천이 허가신호 iexecmode의 하이 기간/로우기간에 따라, 긴급 태스크를 제외한 어떤 태스크와, 긴급 태스크를 전환하여 태스크 ID 유지부(72)로 저장하는 것을 의미한다.
예를 들면 태스크(1)가 긴급 태스크인 것으로 하면 긴급 태스크를 제외한 태스크 식별자로서, 태스크(0), 태스크(2), 태스크(3), 태스크(4), 태스크(5)와 같이 셀렉터(82)는 태스크 식별자를 출력한다.
통상 상태에서는 도 25a에 도시된 바와 같이, 셀렉터(82)에 의해 긴급 태스크를 제외한 어떤 태스크가 출력되기 때문에, 태스크(0), 태스크(2), 태스크(3), 태스크(4), 태스크(5)와 같이 태스크(1)에 할당되는 슬롯은 O사이클로 된다.
긴급상태에서는, 도 25b에 도시된 바와 같이, 셀렉터(82)에 의해 긴급 태스크를 제외한 어떤 태스크와, 긴급 태스크가 선택적으로 출력되므로 태스크(0), 태스크(1), 태스크(2), 태스크(1), 태스크(3), 태스크(1), 태스크(4), 태스크(1), 태스크(5), 태스크(1)과 같이, 태스크(1)은 2회에 1회의 비율로 슬롯이 할당된다. 셀렉터(82)에 의한 긴급 상태에서의 태스크 식별자의 출력으로서는 태스크(1)로 태스크 실행이 돌아오는 것은 2회당 1회로 되고 확률로 환산하면 1/2이 된다.
이와 같은 1/2의 확률은 통상의 실행 확률의 3배라는 매우 높은 확률이고, 긴급 태스크는 매우 고속으로 실행된다.
이상과 같이 본 실시예에 의하면, 수평 블랭킹 기간, 수직 블랭킹 기간에 있어서 비디오 출력 태스크만을 우선하여 실행할 수 있다.
이 기간에 있어서 동화상 데이터를 영상 신호로 변환하면, 영상 신호를 디스플레이 표시기간까지 적합하게 처리할 수 있다.
또, 제 4 실시예의 구성에서는 긴급 태스크를 우선하여 실행하기 때문에 긴급 태스크 이외의 태스크의 실행 빈도가 떨어진다는 폐해가 발생하지만, 이것을 방지하는 방지 기구를 설치해도 된다. 그 방지기구란 『최저한 이만큼의 실행 속도를 유지해야 한다』라는 제약된 태스크(예외 태스크라 함)의 식별자를 태스크 관리 레지스터에 기억시키고, 이 예외 태스크에서는 4명령 실행이라는 태스크 전환의 조건을 제외하는 취지의 신호를 슬롯 매니저(61)로 출력시킨다.
슬롯 매니저(61) 내의 비교기(54)는 이 취지의 신호를 접수하면 태스크 전환신호의 출력을 소정 시간만큼 유예한다. 여기에서의 소정 시간의 시간길이란 긴급 태스크 우선에 의한 각 태스크의 지연을 회복할 수 있을 수 있는 만큼의 시간길이이다. 이와 같이 소정시간만큼 태스크 전환신호의 출력을 유예함에 따라, 예외 태스크의 처리를 4명령 이상 행하게 하고, 긴급 태스크 삽입에 따르는 처리의 지연을 회복할 수 있다.
또한 본 실시예는 외부에서 입력되는 특정 신호에 동기하여, 특정 태스크를 고속화로 실행하는 것에 대하여 설명하고 있지만, 특정 명령에 의해 고속 실행하는 태스크를 정해도 된다. 상태감시 레지스터(CR2)의 제 3비트는 통상은 『0』으로 설정되고, 외부에 접속된 디스플레이 장치에서의 비디오 신호가 귀선 기간이 되면 『1』로 설정되므로 상태감시 레지스터(CR2)와, 즉치를 오퍼랜드에 지정하고, 이들의 일치, 불일치를 판정하는 취지의 CMP 명령을 비디오 출력 태스크에 배치하고, 이 명령에 대한 연산의 실행 결과가 참이 되는 경우만 비디오 출력 태스크를 고속으로 실행해도 된다. 명령의 오퍼랜드로서 긴급 취급을 요하는 태스크를 지정할 수 있도록 해도 된다.
또 통상 상태에서 실행해야 할 태스크를 긴급 태스크를 제외한 라운드값 taskne로 지정하였지만, 통상 상태에서 긴급 태스크를 실행해도 된다.
( 제 5 실시예 )
제 5 실시예는 태스크들의 제휴에 의해, 태스크의 순회 효율을 향상시키는 것을 의도한 실시예이다.
여기에서 태스크들의 제휴는 특정시기가 도래하지 않으면 슬롯의 할당이 없이 끝나는 태스크는 스스로 휴면 상태에 들어가고, 휴면 상태의 해제를 다른 태스크에 맡긴다. 그리고 해제를 위탁받은 태스크는 그 휴면 상태를 해제해야 할 시기가 도래하는 것을 대기하여, 도래하는 경우에는 특정 태스크의 휴면 상태를 해제하는 것을 말한다.
태스크의 휴면은 복수의 태스크에서 동시 다발하는 경우도 있고, 전혀 발생하지 않은 경우도 있다. 휴면 상태에 빠진 태스크를 개별로 관리할 수 있도록 제 5 실시예에서는 태스크 관리 레지스터(13)에 휴면(sleep 상태)에 들어간 태스크를 관리하기 위한 비트를 할당한다.
도 26은 제 5 실시예에서의 태스크 관리부(15)의 구성이고, 도 27은 태스크 관리 레지스터(13)의 비트 구성 및 이들의 각 비트가 어떠한 플래그로서 기능하는 가를 도시하는 설명도이다. 본 도면에서 태스크 관리 레지스터(13)의 제 O비트가『O』이면, 태스크(O)을 휴면 상태로서 처리하는 것을 나타내고, 제 0비트가『1』이면 태스크(0)이 그렇지 않은 것을 나타낸다.
태스크 관리 레지스터(13)의 제 1비트가『O』이면, 태스크(1)을 휴면 상태로서 처리하는 것을 나타내고, 제 1비트가『1』이면 태스크(1)이 그렇지 않은 것을 나타낸다. 태스크 관리 레지스터(13)의 제 2비트가『O』이면, 태스크(2)를 휴면 상태로서 처리하는 것을 나타내고, 제 2비트가『1』이면 태스크(2)가 그렇지 않은 것을 나타낸다. 이들의 비트를 태스크가 전환함으로써 자신을 휴면 상태로 하거나, 다른 태스크의 휴면 상태를 해제한다.
태스크 관리 레지스터(13)의 비트 조작은 이하의 {예 3} {예 4}에 니모닉을 나타내는 명령에 의해 이루어진다.
{예 3}
sleep_task
{예 4}
wake_task task(k)
{예 3}에서 『sleep_task 명령』은 자신을 휴면 상태로 하는 명령이다. {예 4}에서『wake_task 명령』은 제 1 오퍼랜드에 의해 6개의 태스크 중 어느 하나의 식별자를 지정할 수 있다. 이러한 2종의 명령을 각 태스크 내에 배치함으로써 각 태스크는 휴면 상태의 이행과 이것의 해제를 교대로 행한다. 또한, 『sleep_task 명령』에 있어서는 제 1 오퍼랜드에 의해 다른 태스크를 지정할 수 있도록 해도 된다.
도 28은 제 4 실시예에서의 스케쥴러(62)의 내부 구성을 도시한 도면이다. 도 28에서 스케쥴러(62)가 태스크 ID 유지부(71), 태스크 ID 유지부(72), 태스크 라운드 관리부(73), 우선순위 인코더(74)를 구비하고 있는 점은 제 1 실시예와 같다. 본 도면에서 신규한 것은 인버터(94) 및 OR 회로(95)로 이루어지는 태스크 스킵 관리회로(93)이다.
태스크 스킵 관리회로(93)는 태스크 관리 레지스터(13)에 있어서 휴면 상태로 할당되어 있는 6비트를 반전하는 인버터(94)와, 반전된 6비트와 태스크 라운드 관리부(73)로부터 출력된 라운드값 taskn의 논리합을 취하는 0R 회로(95)로 이루어진다. 여기서 태스크(0), 태스크(1), 태스크(2)의 실행이 끝나『OOO111』이라는 라운드값 taskn이 태스크 라운드 관리부(73)로부터 출력되고, 또한 태스크 관리 레지스터(13)에서 태스크(3)가 휴면 상태로 설정되어 있는 것으로 한다. 이 경우 태스크 관리 레지스터(13)의 휴면 비트는『11O111』로 되고, 인버터(94)에 의한 반전값『OO1OO0』이 출력된다. 인버터(94)에 의한 반전값『OO1OOO』과 라운드값 taskn『OOO111』의 논리합은 『OO1111』로 된다. 이 논리합이 우선순위 인코더(74)로 출력되면 제 4비트에서 『1』로부터『0』으로의 반전이 행하여지고 있는 것이 검출되고, 태스크(4)의 식별자가 태스크 ID 유지부(71) 및 태스크 ID 유지부(72)로 출력된다. 태스크(4)의 식별자가 출력되면 태스크(0), 태스크(1), 태스크(2), 태스크(4)의 순으로 실행이 행하여진다.
도 29a는 휴면 명령을 명령1-1, 2-1, 3-1로서 그 내부에 보유한 비동기 이벤트 태스크의 일례이고, 도 30은 도 29a의 비동기 이벤트 태스크가 어떻게 실행되는 가를 도시하는 타이밍차트이다. 휴면 명령이 도 30에 도시된 바와 같이 명령1-1으로서 비동기 이벤트 태스크의 첫번째의 명령으로서 저장되어 있는 경우, 이 명령 1-1이 DECPC 유지부(23)에 저장되고, 명령해독 제어부(11)에 의해 해독되면 셀렉터(25)는 ①의 신호선을 통해 명령1-2의 판독장소 어드레스를 태스크별 PC 저장부(24)에 저장한다. 그 후 명령해독 제어부(11)는 명령 1-2, 명령1-3을 무효화한다 (도 11에서의 『NOP』).
도 29b는 휴면 명령 및 기동 명령의 명령 포맷의 일례를 도시한다. 도 29b에서 본 명령은 도 7b에 도시된 레지스터 지정형의 산술 연산명령의 명령 포맷을 갖는다. 본 포맷의 11비트로부터 13비트를 『010』으로 지정함으로써, 휴면 명령의 오퍼레이션을 I/O 프로세서는 실행한다. 또한 본 포맷의 11비트로부터 13비트를『011』로 지정함으로써 기동 명령의 오퍼레이션을 I/0 프로세서는 실행한다.
이상과 같이 구성된 제 5 실시예의 I/0 프로세서에 의해 어떻게 슬롯이 할당되어지는 가를 도 31a∼도 31d를 참조하여 설명하기로 한다.
태스크(1)은 퍼징 태스크, 태스크(3)은 호스트 I/O 태스크이며, 태스크(1), 태스크(2), 태스크(3)의 첫번째의 명령이 휴면 명령인 것으로 한다. 태스크(0), 태스크(4), 태스크(5)에 4사이클의 슬롯이 할당되지만, 도 31a에서 태스크(1), 태스크(2), 태스크(3)에는, 첫번째의 명령으로서 휴면 명령이 저장되어 있기 때문에 2사이클의 슬롯이 할당된다.
휴면 명령의 실행후, 다음 프레임에서는 도 31b에 도시된 바와 같이, 태스크(1), 태스크(2), 태스크(3)에 할당되는 슬롯은 0사이클이다.
태스크(0)는 기동 기간이 보다 긴 비트 스트림 전송제어 태스크이고, 태스크(0)에는 첫번째로 태스크(3)에 대한 기동 명령이 저장되어 있는 것으로 한다. 그렇게 하면 도 31c에 도시된 바와 같이 다음 프레임에서 이 기동 명령이 해독됨으로써 태스크(3)에 4사이클의 슬롯이 할당된다.
태스크(0)에는 제 14번째로 태스크(1)에 대한 기동 명령이 저장되어 있는 것으로 한다. 그렇게 하면, 도 31d에 도시된 바와 같이 다음 프레임에서 이 기동 명령이 해독됨으로써 태스크(1)에 4사이클의 슬롯이 할당된다.
이상과 같이 본 실시예에 의하면, 퍼징 태스크, 호스트 I/O 태스크 등, 기동할 기간이 한정되어 있는 태스크는 스스로 휴면 상태에 들어가고, 기동 기간이 보다 긴 전송제어 태스크에 휴면 상태의 해제를 맡김으로써 태스크 순회의 처리능력을 향상시킬 수 있다.
( 제 6 실시예 )
제 6 실시예는 제 3 실시예에서의 대기상태 제어와, 제 4 실시예에서의 긴급 태스크 제어와, 제 5 실시예에서의 휴면 태스크 제어를 공존시키는 기술에 관한 것이다.
도 32는 태스크 관리 레지스터(13)의 각 비트에 대기 상태, 긴급(emergency) 상태, 휴면(sleep) 상태의 관리를 통괄한 것이다. 슬롯 매니저(61) 및 스케쥴러(62)는 이와 같이 태스크 관리 레지스터(13)에 통괄된 대기 상태, 긴급 상태, 휴면 상태를 참조하여 다음 태스크의 결정이나 태스크의 다음 슬롯으로 할당하는 명령수의 증감을 행한다.
도 33은 긴급 태스크 제어 및 휴면 상태 태스크 제어를 공존시킬 수 있도록 구성된 스케쥴러(62)의 구성도이다. 도 33에서 스케쥴러(62)가 태스크 ID 유지부(72), 태스크 ID 유지부(72), 태스크 라운드 관리부(75), 컨버터(76), 긴급 태스크 마스크부(77), 우선순위 인코더(80), 셀렉터(82), 태스크 ID 유지부(83) 및 OR 회로(95)로 구성되어 있는 점은 제 4, 제 5 실시예와 같다. 본 도면에서 태스크 라운드 관리부(75)의 출력과 인버터(94)에 의해 반전된 라운드값 taskne의 라운드값의 논리합을 취하는 OR 회로(96)가 새롭게 추가되고, 그 결과는 우선순위 인코더(80)로 출력한다.
우선순위 인코더(80)는 0R 회로(96)가 출력한 라운드값을 태스크 식별자로 변환하여, 태스크 ID 유지부(72) 및 태스크 ID 유지부(83)로 출력한다.
이상과 같이 본 실시예에 의하면, 제 4 실시예에서의 긴급 태스크 제어와, 제 5 실시예에서의 휴면 상태 태스크 제어를 공존시킴으로써, 보다 유연성이 풍부한 태스크 스케쥴링을 실현할 수 있다.
( 각 실시예에서의 전체 제어에 대한 설명 )
이후, 제 1 실시예∼제 5 실시예에 나타낸 I/0 프로세서의 전체 제어를 플로우차트를 참조하여 설명하기로 한다.
도 34는 제 1 실시예에서의 I/0 프로세서의 전체 제어를 도시한 플로우차트이다. 본 도면에서『변수 k』는 명령 메모리(100)에 기억되어 있는 6개의 비동기 이벤트 태스크를 지시하기 위한 변수이고 태스크 ID 유지부(71) 및 태스크 ID 유지부(72)가 유지하는 태스크 식별자 taskid에 대응한다. 『변수 i』는 각각의 태스크에 포함되는 명령의 실행시에 그 명령이 당해 슬롯에서 몇번째에 실행되었는지를 지시하기 위한 변수이고, 카운터(52)에 의해 카운트되는 카운트값에 대응한다. 『변수 adr』은 태스크별 PC 저장부(24)에 저장되어 있는 개개의 태스크의 판독장소 어드레스를 나타내는 변수이다.
도 39는 도 34의 플로우차트에 의한 슬롯간의 천이를 도시한 도면이다. 도 39에서 세로방향 하향이 시간축이고, 4개의 직사각형을 포함하는 굵은 테두리로 둘러싸인 사각형이 슬롯이다. 도 34의 플로우차트에서의 변수 k에 의해 개별로 지시된다. 굵은 테두리 중의 하나의 각 사각형은 하나의 명령을 실행하는 사이클을 나타내며, 이들의 명령은 변수 i에 의해 지시된다. 단계 S1은 상기 태스크 ID 유지부(71)가 제로(0)인 태스크 식별자 taskid를 출력한다. 이에 따라 변수 k가 제로 클리어되고, 단계 S2로 이행한다. 단계 S2는 카운터(52)를 초기화함으로써 변수 i에 초기화한다. 단계 S3에서 태스크 ID 유지부(72)가 태스크별 PC 저장부(24)에 판독되어 어드레스 선택신호 nxttaskid(rd_adr)를 출력함으로써 태스크(k)의 판독장소어드레스를 태스크별 PC 저장부(24)로부터 판독한다. 단계 S4에서 태스크(k)의 판독장소 어드레스를 이용하여, 명령 메모리(100)로부터 명령을 인출한다. 단계 S5에 서 명령해독 제어부(11)는 인출된 명령을 해독하여 실행한다.
단계 S6은 비교기(54)는 변수 i와 상한 4를 비교한다. 이 경우는 i=1이기 때문에 단계 S7로 이행한다. 단계 S7은 카운터(52)에 변수 i의 증분을 행하게 하고, 증분 회로(21)에 판독장소 어드레스의 증분을 행하게 하는 단계이지만, 이 증분은 태스크 k에서의 어떤 명령의 실행으로부터 다른 명령의 실행으로의 전환을 의미한다. 이 경우 i=2이므로 슬롯에서의 명령의 실행으로부터 제 2 명령의 실행으로의 전환이 행하여진다.
변수 i는 단계 S7에서 증분되어 단계 S4로 이행한다. 변수 i의 증분으로부터 i=2로 되고, 판독장소 어드레스도 1명령만큼 진행하였기 때문에, 단계 S4에서 명령판독 제어부(10)는 명령 메모리(100) 내의 판독장소 어드레스(adr+1)로 지시되는 명령을 판독하여 단계 S5에서 명령해독 제어부(11)는 이것을 해독하고, 실행한다.
이상의 단계 S4∼단계 S7의 일련의 순서를 반복함으로써 변수 i는 차차 증분되고, 명령 메모리(1OO)에서의 adr+0, adr+1, adr+2, adr+3의 영역에 기억되어 있는 명령을 차례로 판독한다.
이상의 단계 S4, 단계 S5의 실행을 단계 S6에서 예로 될 때까지 반복한다. 단계 S6이 예(Yes)로 되면, 단계 S6으로부터 단계 S8로의 이행이 행하여진다. 이상의 순서에서 변수 i가 1, 2, 3인 경우는 단계 S4, 단계 S5, 단계 S6, 단계 S7의 순서가 반복되고, 변수 i가 4로 되어 처음으로 단계 S6으로부터 단계 S8로의 이행이 행하여진 것은, 태스크(O)에 대한 명령 실행을 4회 반복하는 것을 의미한다(도 39에서 최상단에 위치하는 4개의 사각형의 나열은 태스크(O)의 제 1슬롯에서의 4회의 명령 실행의 도해가 됨). 덧붙여서 말하면 단계 S8∼단계 S10의 순서는 태스크로부터 태스크로의 전환을 행하는 것이므로 단계 S6에서의『변수 i=4』의 판정은 명령 실행의 4회 반복을 태스크 전환 조건으로 부과하고 있는 것을 의미한다.
단계 S6에서 변수 i와 상한값과의 판정이 이루어지면, 단계 S8에서 증분 회로(21)에 의해 변수 i가 증분되고, 단계 S9에서 태스크(k)의 판독장소 어드레스(adr+1-1)를 판독장소 어드레스(adr)로서 태스크별 PC 저장부(24)에 저장한 후에 단계 S10으로 이행한다. 단계 S10에서는 태스크 라운드 관리부(73) 및 우선순위 인코더(74)에 다음에 실행할 태스크를 결정시킨다. 이 때 태스크 라운드 관리부(73)에 의해 『0O0OO0』의 라운드값 taskn이 되고, 우선순위 인코더(74)에 의해 『001』의 태스크 식별자 taskid가 출력된다. 『001』의 태스크 식별자 taskid, 즉 k=1이 되므로 태스크(0)으로부터 태스크(1)로의 전환이 행하여진다. 태스크의 전환후, 단계 S2로 이행하면 변수 i의 초기화가 이루어지고 다시 단계 S3∼단계 S7의 반복이 다시 시작된다.
전회와 마찬가지로 단계 S4에서 명령 메모리(100)에서의 당해 판독장소 어드레스로부터 태스크(1)에 포함되는 1명령을 인출하고, 단계 S5에서 인출된 명령을 해독하여 실행한다.
단계 S6은 변수 i와 상한 4를 다시 비교한다. 이 경우는 i=1이기 때문에 단계 S7로 이행한다. 변수 i는 단계 S7에서 증분되어 단계 S4로 이행한다. 변수 i의 증분으로부터 i=2로 되기 때문에 단계 S4에서 판독장소 어드레스(adr+1)로 지시되는 명령 메모리(100) 내의 영역의 액세스를 행하고, 명령 메모리(100)에서 판독장소 어드레스(adr+1)로 지시되는 영역에 기억되어 있는 명령을 판독하여 단계 S5에서 이것을 해독하고, 실행한다.
이상의 단계 S4∼단계 S7의 일련의 순서를 반복함으로써 변수 i를 차례차례로 증분하고, 명령 메모리(100)에서의 adr+0, adr+1, adr+3의 영역에 기억되어 있는 명령을 차례로 판독한다.
이상의 단계 S4, 단계 S5의 실행을 단계 S6에서 예로 될 때까지 반복한다. 단계 S6이 예로 되면, 단계 S6으로부터 단계 S8로의 이행이 행하여진다. 이상의 순서에서, 변수 i가 1, 2, 3인 경우는 단계 S4, 단계 S5, 단계 S6, 단계 S7의 순서가 반복되어, 변수 i가 4로 되어 처음으로 단계 S6으로부터 단계 S8로의 이행이 행하여진다(이상의 동작에 의해, 도 39에서는 태스크(1)에서의 4명령분(태스크(1)에 대한 4개의 명령)을 진행한 것으로 됨). 단계 S8에서 변수 k를 증분하고, 단계 S9에서 태스크(k)의 판독장소 어드레스(adr+i-1)를 판독장소 어드레스(adr)로서 저장한 후에 단계 S10으로 이행한다. 단계 Sl0에서 다시 태스크 라운드 관리부(73) 및 우선순위 인코더(74)에 변수 k의 결정을 행하게 하여, 변수 k를 k=2로 하여 태스크(1)로부터 태스크(2)로의 전환을 행하게 한다. 태스크의 전환후, 단계 S2로 이행하면 변수 i의 초기화가 이루어지고 다시 단계 S3∼단계 S7의 반복이 다시 시작된다.
이상의 반복에 의해, 도 39에서 태스크(1), 태스크(2), 태스크(3), 태스크(4), 태스크(5)의 실행이 4명령씩 행하여지고, 각 태스크가 차례로 소비된다.
( 제 2 실시예에서의 전체 제어의 설명 )
제 2 실시예에서의 I/0 프로세서의 전체 제어는 도 35의 플로우차트에 도시된 순서로 행하여진다. 도 35의 플로우차트는 단계 S1∼단계 S10으로 이루어지는 도 34의 플로우차트를 기초로 하여 작성되어 있다. 여기에서 도 35에서 신규인 것은 단계 S12가 단계 S4∼단계 S5 사이에 삽입되어 있는 점이다.
단계 S12는 단계 S4에 의해 명령 메모리(100)로부터 판독된 명령이 Wait_Until_Next 명령인가를 판정한다. 만일 Wait_Until_Next 명령이면 단계 S8로 이행하여 변수 i를 증분하고, 단계 S9에서 태스크(k) 판독장소 어드레스(adr+i-1)를 판독장소 어드레스(adr)로서 저장한다.
여기에서 유의해야 할 것은 단계 S12에서는 변수 i의 값에 관계없이 Wait_Until_Next 명령이 실행된 시점에 단계 S8로 이행하여 판독장소 어드레스를 저장하는 점이다. 이와 같이 단계 S8이 변수 i의 값에 관계없이 단계 S12의 해독후에 실행되기 때문에, 태스크로부터 태스크로의 전환은 4회의 명령을 기다리지 않고 행하여진다.
도 40은 제 2 실시예에서의 슬롯간의 천이를 도시한 도면이다.
도 40에서의 시퀀스는 도 39와 마찬가지로 세로방향 하향이 시간축이고, 4개의 직사각형을 포함하는 굵은 테로 둘러싸인 사각형이 슬롯이 된다. 굵은 테두리 중의 하나의 각 사각형은 하나의 명령을 실행하는 사이클을 나타낸다. 이들의 사각형 중, 『』이 기입되어 있는 것은 Wait_Until_Next 명령을 나타낸다. 또한 태스크(O)이 각 슬롯에서 명령 메모리(100) 내의 명령을 실행하는 가를 사각형의 우측 세로의 『PC』『PC+1』『PC+2』『PC+3』이라는 프로그램 카운트값 및 프로그램 카운트로부터의 상대값으로 표현하고 있다(또, 본 도면은 태스크(0)의 제 1 슬롯의 제 1 명령의 판독시에서의 프로그램 카운트값을 기준으로 함).
도 36에서 단계 S1∼단계 S4의 순서가 행하여짐으로써 태스크(0)의 제 l 슬롯의 제 1 명령이 판독된다. 판독된 명령의 해독 결과의 판정이 단계 S12에서 행하여지지만, 태스크(O)의 제 1 슬롯-제 1 명령은 Wait_Until_Next 명령이 아니기 때문에 단계 S5로 이행한다. 단계 S5로의 이행에 의해, 태스크(O)의 제 1 슬롯-제 1 명령의 실행이 행하여지고, 1명령분 진행한 것이 된다.
다시 단계 S1∼단계 S4의 순서가 행하여짐으로써 태스크(O)의 제 1 슬롯의 제 2 명령이 판독된다. 판독된 명령의 해독 결과의 판정이 단계 S12에서 행하여지지만, 태스크(O)의 제 1 슬롯-제 2 명령은 Wait_Until_Next 명령이고, 단계 S8로의 이행이 행하여진다. 단계 S8에 의해 변수 i는 1증분되어 『3』이 되고, 단계 S9에서 판독장소 어드레스(adr+2)가 태스크(0)의 판독장소 어드레스로서 태스크별 PC 저장부(110)에 저장된다.
저장후, 단계 S10에서 변수 k는 증분되고, 단계 S2로 이행한다. 이 단계 S10에서의 변수 k의 증분에 의해, 태스크(0)로부터 태스크(1)로의 전환이 제 1 슬롯의 제 3 명령, 제 4 명령의 실행을 기다리지 않고 행하게 된다.
태스크(1)의 제 1 슬롯의 실행이 4명령의 실행에 의해 행하여지고, 마찬가지로 태스크(2), 태스크(3), 태스크(4), 태스크(5)의 실행이 행하여지고, 태스크(5)의 제 1 슬롯-제 4 명령까지 진행하였다고 한다. 단계 S10에서 변수 k가 결정되고, 단계 S2에서 변수 i가『1』로 초기화되고, 단계 S3에서 태스크(0)의 판독장소어드레스가 태스크별 PC 저장부(110)로부터 판독된다. 여기에서 유의할 것은 태스크(O)의 제 1 슬롯의 제 2 명령(Wait_Until_Next 명령)의 실행시에, PC+2(『PC』는 제 1 명령의 프로그램 카운트값을 나타냄)가 태스크(0)의 판독장소 어드레스로서 태스크별 PC 저장부(110)에 저장되어 있는 점이다. 이와 같이 태스크별 PC 저장부(110)에 (PC+2)가 저장되어 있기 때문에 태스크(1)의 제 2 슬롯의 명령 실행은 PC +2로부터 시작된다.
( 제 3 실시예에서의 전체 제어의 설명 )
도 36은 제 3 실시예에서의 I/0 프로세서의 플로우차트이다. 본 도면에서, 도 34, 도 35의 동일 처리 내용의 단계에는, 도 34, 도 35와 동일 참조부호를 붙여 그 설명을 생략하기로 한다. 또한 도면 중의『변수 합계』는 태스크 관리 레지스터(13)의 내용에 기초하여 셀렉터(55)가 출력하는 수치를 나타내며, 명령 실행수의 상한을 지정하기 위해 이용된다. 변수 합계는 그 초기 상태에서 슬롯에서의 명령총수인 『4』로 초기화되지만 『2』로도 갱신될 수 있다.
도 41은 제 3 실시예의 플로우차트에 의한 슬롯간의 천이를 도시한 도면이다. 이후의 설명에서는 도 41에서 태스크(O)의 제 1 슬롯의 제 1 명령, 제 2 명령이 실행 완료되고, 이제부터 제 3 명령이 판독되도록 하고 있다.
단계 S93은 상기 변수 k를 제로(0) 클리어하고, 변수 합계를 4로 설정한다. 단계 S2는 상기 변수 i를 제로 클리어한다. 단계 S3에서 제로 클리어된 변수 k의 판독장소 어드레스, 즉 태스크(0)의 판독장소 어드레스를 태스크별 PC 저장부(110)로부터 판독한다. 단계 S4에서 명령 메모리(100)에서 판독된 태스크의 판독장소 어드레스를 절대 어드레스로 하고, 변수 i를 오프셋값으로 한 어드레스로부터 명령을 인출한다.
단계 S8l에서 인출된 명령이 Cmp_And_Wait 명령인 가를 판정한다. 단계 S82에서는 명령해독 제어부(81), 연산 실행부(84)는 Cmp_And_Wait 명령의 제 1 오퍼랜드에 기술된 상태감시 레지스터(j)의 지정과, 제 2 오퍼랜드에 기술된 즉치를 참조하여 Cmp_And_Wait 명령이 제시하는 사상 성립의 진위를 판정한다. 상태감시 레지스터(j)의 유지값과 즉치가 일치하지 않고, 사상불성립이 판정되면 단계 S83으로 이행하고, 태스크(k)를 대기 상태로 설정하여 단계 S84로 이행한다. 단계 S84에서는 프로그램 카운트를 진행시키지 않도록 플립플롭(27) 및 셀렉터(25)에 판독장소 어드레스를 Cmp_And_Wait 명령의 어드레스에 설정시켜 단계 S87로 이행한다.
단계 S87은 도 35의 플로우차트의 단계 S6과 마찬가지로 상한 체크를 행하는 단계이다. 단계 S6에서의『변수 i=4』의 판정은 명령 실행의 4회 반복을 태스크 전환 조건으로 부과하고 있었다. 이에 대하여 단계 S87에서의『변수 i=변수 합계』의 판정은 명령 실행의 반복 회수가 변수 합계와 같은 것을 태스크 전환 조건으로 부과하고 있다. 여기에서의 변수 합계는 갱신된 것이 아니므로 『변수 i = 변수 합계』는 실질『변수 i = 4』의 판정이 된다. Cmp_And_Wait 명령은 태스크(0)의 제 1 슬롯에 있어서 3명령째에 포함되어 있고, 한편 한쪽 변수 i = 2이기 때문에 단계 S87로부터 단계 S7로의 이행이 행하여진다. 단계 S7에서 변수 i가 증분되면 단계 S4에서의 명령 판독에 의해, Cmp_And_Wait 명령의 다음 순서의 명령이 명령해독 제어부(81)에 판독된다. 판독되면 단계 S81이 아니오(No)로 되고 단계 S85에서는 명령해독 제어부(11)는 직전의 명령에서 상태 불성립이 판정되고, 판독장소 어드레스가 Cmp_And_Wait 명령의 어드레스로 설정되었는지(PC 복귀가 발생되었는지)를 판정한다.
여기에서 어드레스(adr+i)에 저장되어 있던 명령의 직전 명령은 Cmp_And_Wait 명령이 상당하고, 이 Cmp_And_Wait 명령의 해독시에는 PC 복귀가 발생하고 있다. 그 때문에 단계 S85는 예로 되어 단계 S86에 이행한다. 단계 S86에서는 명령해독 제어부(11)는 판독된 어드레스(adr+i)의 명령을 폐기하도록 범용레지스터의 저장값을 무효화하는 취지의 통지를 하고, 도 40의 태스크 시퀀스에서의 태스크(0)-제 1 슬롯의 제 4 명령에 도시된 바와 같이, 어드레스(adr+1)에 저장되어 있던 명령을 무효화하여 단계 S87로 이행한다. 변수 i의 값은 4이니까 단계 S87에서『변수 i = 변수 합계』판정이 이루어지면 예로 되어, 단계 S88로 이행한다.
단계 S87이 예라고 판정된 것은, 1슬롯분의 명령 실행이 끝난 것을 의미하지만, 단계 S88에서는 그 1슬롯에서 PC 복귀가 발생했는지를 판정한다. 이러한 판정을 행하는 것은 PC 복귀가 발생한 경우는 태스크별 PC 저장부(110)로 그 복귀 장소를 저장해 둘 필요가 있기 때문이다.
태스크(O)의 경우는 제 4 명령이 폐기되고, 제 3 명령에서 PC 복귀가 발생하고 있으므로 단계 S89에서 플립플롭(27) 및 셀렉터(25)로 복귀장소 PC값을 판독장소 어드레스(adr)로서 저장시켜 단계 S1O으로 이행한다. 단계 S10에서 태스크 라운드 관리부(73) 및 우선순위 인코더(74)에 다음 태스크를 결정시킨 후, 변수 k를 증분하여 단계 S90으로 이행한다.
단계 S90∼단계 S92는 증분된 변수 k에 의해 지시되는 태스크, 즉 다음에 실행할 태스크가 대기 상태에 있는지의 여부를 판정함으로써, 그 다음 슬롯에서의 명령수를 전환한다는 중요한 의미를 갖는다. 순서에 따라 설명하면 단계 S90에서는 ID 컨버터(53)는 태스크 관리 레지스터(13)에서의 태스크(k)에 상당하는 비트를 참조하여, 태스크(k)가 대기 상태에 있는 가를 판정한다. 만일 그렇다면 셀렉터(55)는 단계 S91에서 변수 합계에 4를 설정하고, 다르면 변수 Total로 2를 설정한다.
태스크(1)은 대기 상태가 아니므로 단계 S91에서 변수 합계가 4로 설정되어 단계 S2로 이행한다. 여기에서 태스크(1)에는 Cmp_And_Wait 명령이 포함되고 있지 않은 것으로 하면 단계 S5에서의 명령 실행이 4회 반복되고, 다음 태스크로의 전환이 행해진다(이상의 순서는, 제 1 실시예에 기재된 것과 같으므로 중복 설명은 생략함).
Cmp_And_Wait 명령을 포함하고 있지 않은 태스크(2), 태스크(3), 태스크(4)에 대해서도 4명령의 실행이 차례로 행하여져 순서대로 태스크가 전환된다. 태스크(5)에 대한 4명령의 실행이 끝나고 단계 S10으로 이행하고, 단계 S10에서 변수 k를 제로 클리어하고 단계 S90으로 이행하였다고 하자. 단계 S90에서는 태스크 관리 레지스터(13)에서 태스크(k)에 할당된 비트(k)가『1』인지 『0』인지를 판정한다. 이 판정은, 태스크(k)가 대기 상태인지의 여부를 확인하는 것을 의미한다. 여기에서 변수 k = O이고, 태스크(O)은 앞서 대기 상태로 설정되어 있으므로 단계 S91에서 변수 합계에『2』를 설정한다. 여기에서 유의해야 할 것은, 변수 Total은 슬롯에 할당하는 명령수의 이유를 가지고 있다는 점이다. 이것을 단계 S91에 서『4』로부터『2』로 갱신하는 것은 1슬롯에 매핑하는 명령수를『4』로부터『2』로 삭감하는 것을 의미한다. 그 때문에 태스크(0)의 제 2슬롯에서는 변수 i가 1, 2로 증분되어 있는 동안만, 즉 단계 S81∼단계 S85, 단계 S5의 처리의 반복이 2회만으로 된다. 이 때, 태스크(O)의 판독장소 어드레스로서 태스크별 PC 저장부(110)에 저장되어 있는 것은 Cmp_And_Wait 명령의 판독장소 어드레스이다. 판독장소 어드레스의 어드레스로부터 Cmp_And_Wait 명령이 판독되면 제 1슬롯과 마찬가지로 단계 S82에서 사상의 성립여부가 판정된다. 이 경우, 사상은 불성립으로 끝난 것으로 하면, 제 1슬롯과 같은 처리를 하여 판독장소 어드레스를 Cmp_And_Wait 명령으로 복귀하여 제 2슬롯을 끝낸다.
Cmp_And_Wait 명령을 포함하고 있지 않은 태스크(1), 태스크(2), 태스크(3), 태스크(4)에 대해서도 4명령의 실행이 차례로 행하여져 순사대로 태스크가 전환되고 태스크(5)에 대한 4명령의 실행이 끝나 태스크(O)의 제 3슬롯이 시작되려고 하고 있다.
여기에서 I/O 프로세서에서의 사상에 변화가 생겨, 태스크(0)의 Cmp_And_Wait 명령에서 지정되어 있던 사상이 성립한다고 하자. 이 때문에 태스크(0)의 제 3슬롯에서는 단계 S82에 있어서 명령해독 제어부(81)에 의해 사상성립이 판정되고, 단계 S80으로 이행하여, 태스크 관리 레지스터(13)에서의 태스크 (k)의 대기 상태가 해제된다. 이와 같이 대기 상태가 해제되면, 단계 S80으로부터 단계 S87로의 이행이 행해지고, 단계 S87에서 변수 i와 변수 합계가 비교되어, 단계 S7에서 변수 i의 증분이 이루어지고, 단계 S4에서 판독장소 어드레스(adr+1)로부터 명령이 판독된다. 단계 S81에서 판독된 명령이 Cmp_And_Wait 명령인지의 판정이 행하여지지만, Cmp_And_Wait 명령이 아니기 때문에 단계 S85로 이행한다. 단계 S85에서는 직전의 명령에서 상태불성립이 판정되어 PC 복귀가 발생되었는지가 판정된다. Cmp_And_Wait 명령에 의해 지정된 사상이 성립하였기 때문에 단계 S85가 아니오로 되고, Cmp_And_Wait 명령의 다음 명령은 두번의 사상성립 대기를 거쳐 겨우 단계 S5에서 실행된다. 단계 S5에서의 다음 명령의 실행 후, 단계 S5로부터 단계 S87로의 이행이 행해지고, 변수 i와 변수 Total의 대소비교가 행해진다. 단지 제 2슬롯에서는 Total 합계가 2로 설정되어 있기 때문에 태스크(0)의 제 3슬롯은 2회 실행된 것 만으로 끝난다. 단계 S87로의 이행후, 단계 S88에서는, PC복귀의 발생 진위가 판정되지만 이 경우는 아니오이고, 단계 S89에서 태스크(k)의 판독장소 어드레스(adr+i-1)를 판독장소 어드레스(adr)로서 저장하여 단계 S10으로 이행한다. 이렇게 하여 태스크(0)의 제 3슬롯이 끝나면 Cmp_And_Wait 명령을 포함하고 있지 않은 태스크(1), 태스크(2), 태스크(3), 태스크(4)에 대해서도 4명령의 실행이 차례로 행하여져 차례로 태스크가 전환된다. 태스크(5)에 대한 4명령의 실행이 끝나 변수 k가 제로 클리어되고, 단계 S90으로 이행하였다고 한다.
단계 S90에서는 태스크 관리 레지스터(13)에서의 태스크(k)에 상당하는 비트를 참조하여, 태스크(k)가 대기 상태에 있는 가를 판정한다. 이 경우 태스크(0)의 대기 상태는 해제되었기 때문에 단계 S92에서 변수 Total에 4를 설정하여 단계 S2로 이행한다. 이와 같이 변수 합계가 4로 복귀하였으므로 태스크(0) 이후의 슬롯은 통상대로의 4명령씩 행하여지게 된다.
( 제 4 실시예에서의 전체 제어의 설명 )
도 37은 제 4 실시예에서의 I/0 프로세서의 전체 제어를 도시하는 플로우차트이다. 도 37의 플로우차트에서의 단계 S1∼단계 S9의 순서는 도 35의 플로우차트와 마찬가지다.
도 37에서 신규인 것은 30번대의 참조부호가 부여된 단계 S30, 단계 S31, 단계 S32이다. 단계 S30은 긴급 상태천이 허가신호가 로우값인지의 여부를 판정하고, 하이값이면 단계 S31로 이행하여 단계 S31에서 긴급 태스크를 다음에 실행할 태스크로서 결정한다.
반대로 긴급 상태천이 허가신호가 로우값이면, 단계 S32로 이행하여 라운드값 taskne에 따라 통상 태스크 중에서 다음에 실행할 태스크를 우선순위 인코더(80)에 결정한다.
도 42는 제 4 실시예에서의 슬롯간의 천이를 도시한 도면이다. 본 도면은 통상 상태가, 시작에서 단계 S31의 처리가 스킵되어, 도 41의 태스크(0)의 제 1슬롯, 태스크(2)의 제 1슬롯, 태스크(3)의 제 1슬롯, 태스크(4)의 제 1슬롯, 태스크 (5)의 제 1슬롯이 차례로 행해진다.
taskne의 실행이 1순회한 상태에서 긴급 상태천이 허가신호의 하이기간이 발생했다고 하면 단계 S2∼단계 S9에서 하나의 태스크가 실행된 후, 단계 S30으로부터 단계 S31로의 분기가 행하여진다. 분기후, cstate 기억부(85)에 표시된 cstate의 하이값, 로우값에 따라 긴급 태스크를 실행한다.
( 제 5 실시예에서의 전체 제어 )
도 38은 제 5 실시예에서의 멀티 태스크 순서의 플로우차트이다. 본 도면이 제 1 실시예에서의 멀티 태스크 순서의 플로우차트와 다른 것은, 단계 S4와 단계 S6 사이에 단계 S41∼단계 S44, S46, S47이 삽입되어 있는 점이다.
단계 S41은 명령 메모리(100)에서 판독된 명령이 휴면 명령인가를 판정한다. 만약 휴면 명령이면 단계 S42로 이행한다. 단계 S42에서는 태스크 관리 레지스터(13)는 태스크(k)에 대응하는 비트를 0으로 반전한다. 그 후 단계 S43에서 변수 i를 증분하고, 단계 S44에서 태스크(k)의 판독장소 어드레스(adr+i-1)를 판독장소 어드레스(adr)로서 저장한 후 단계 S45로 이행한다. 이행후, 단계 S45에서는 인버터(94) 및 OR 회로(95)는 태스크 관리 레지스터(13)에서 휴면 상태가 지정된 비트를 제외한 라운드값을 생성하고, 이것을 우선순위 인코더(74)에 출력하고, 다음에 실행할 태스크(k)를 결정한다. 여기에서 유의해야 할 것은, 앞서 설명한 바와 같이 『변수 k』는 명령 메모리(100)에 기억되어 있는 6개의 태스크의 각각을 지시하기 위한 변수이고, 이것의 결정은 태스크로부터 태스크로의 전환을 의미한다.
여기서 단계 S45가 단계 S10과 다른 것은, 단계 S45은 변수 i가 4가 된 시점에서 실행되는 데 대하여, 단계 S45은 변수 i의 값에 불구하고, 휴면 명령이 해독된 시점에서 실행되는 점이다. 이와 같이 단계 S45가 변수 i의 값에 불구하고 휴면 명령의 해독 후에 실행되기 때문에 태스크로부터 태스크로의 전환은 4회의 명령을 대기하지 않고서 행해진다.
단계 S46에서는 판독장소 어드레스(adr+1)로부터 판독된 명령이 태스크 관리 레지스터 내의 어느 비트에 대한 기동 명령인 가를 판정한다. 만일 다르면, 단계 S5에서 판독된 명령을 해독하여 실행하지만 만일 그렇다면 단계 S47에서 당해 기동 명령에서 지정된 j 비트를 조작함으로써 태스크 j의 휴면 상태를 해제하여 단계 S6으로 이행한다.
도 43은 제 5 실시예에서의 슬롯간의 천이를 도시한 도면이다. 본 도면에서 태스크(1)의 제 1슬롯에서 표시하고 있는 것은, 태스크(1)의 제 1슬롯의 제 2명령이 sleep_task 명령인 것을 도시한다. sleep_task 명령의 실행시에는, 제 2 실시예에서의 Cmp_And_Wait 명령의 실행시와 마찬가지로 제 2 명령의 해독에서 단계 S41∼단계 S44가 실행되어 태스크(1)이 휴면 상태로 설정된 후에 태스크 전환이 이루어져, 제 3명령 및 제 4명령은 사실상 폐기된다.
제 1 실시예에서 설명한 바와 같이 태스크간의 전환이 차례로 행해지고, 태스크(2), 태스크(3), 태스크(4), 태스크(5)와 같이 태스크의 순회가 행해져 단계 S45로 이행하였다고 하자. 단계 S45에서 우선순위 인코더(74)는 휴면 상태에 있는 태스크의 비트가 마스크된 라운드값 taskn에 의해, 다음에 실행할 태스크를 결정한다. 여기서 태스크 관리 레지스터(13)에서 태스크(1)에 할당되어 있는 비트는 태스크(1)-제 1슬롯의 제 2명령에서 휴면 상태로 설정되어 있다. 그 때문에 태스크(1)의 실행은 스킵되어, 태스크(2)의 제 2슬롯이 계속해서 실행된다.
마찬가지로 태스크간의 전환이 차례로 행해지고, 태스크(2), 태스크(3), 태스크(4), 태스크(5)와 같이 태스크의 순회가 행하여져 단계 S45로 이행하였다고 한다.
이 순회에서 태스크(5)의 제 2슬롯의 제 3명령이 태스크(1)의 휴면 상태 해제를 지정한 wake_task 명령이고, 명령 메모리(1OO)에서 판독된 것으로 한다. wake_task 명령이 명령 메모리(1OO)에서 판독되면 단계 S46의 판정에서 예로 되어, 단계 S47로 이행한다. 단계 S47에서는 태스크 관리 레지스터(13)의 태스크(1)에 할당된 비트를 오프로 함으로써 태스크(1)의 휴면 상태를 해제한다. 해제후, 나머지 명령을 마찬가지로 실행하여, 제 2슬롯분의 처리를 종료한다.
태스크(5)의 종료후, 태스크가 태스크(0)으로 전환된 것으로 한다. 또한 태스크(O)의 제 3슬롯이 실행되어 단계 S45로 이행하였다고 한다. 단계 S45에서는 태스크 관리 레지스터(13)에서 태스크(1)에 할당되어 있는 비트가 온 인지의 판정이 이루어진다. 태스크(5)의 제 2슬롯에서 태스크(1)의 할당 비트가 온으로 설정된 것은 앞서 설명한 바와 같으므로 단계 S45로부터 단계 S2, S3으로의 이행이 행해지고, 태스크(1)의 실행이 재개된다.
상술한 바와 같이 본 발명에 의하면, 각각의 비동기 이벤트 태스크에 어느 만큼의 사이클수를 할당하면 되는지를 나타내는 최적의 하한값을 1의적으로 계산할 수 있는 동시에, 그들의 최적의 하한값으로부터 전체 태스크를 동작시키기 위한 동작 사이클수의 하한값을 1의적으로 계산할 수 있는 프로세서를 제공할 수 있다.
상술한 본 발명의 바람직한 실시예들은 예시의 목적을 위하여 개시된 것이며, 당업자라면 첨부된 특허청구범위에 개시된 본 발명의 사상과 범위를 통해 각종 수정, 변경, 대체 및 부가가 가능할 것이다.

Claims (33)

  1. n개의 태스크를 실행 대상 태스크로 한 프로세서에 있어서,
    n개의 태스크 식별자를 출력하여, 그 태스크에 할당된 수의 명령이 실행되면 다음 태스크 식별자를 소정의 순서로 출력하는 실행 태스크 지시수단과,
    출력되는 태스크 식별자로 특정되는 태스크 중 실행할 명령을 차례로 지정하는 명령 지정수단과,
    지정된 명령을 실행하는 실행수단을 포함하는 것을 특징으로 하는 프로세서.
  2. 제 1 항에 있어서,
    상기 실행 태스크 지시수단은,
    발행된 명령을 카운트하여, 카운트값이 실행 중 태스크에 할당된 명령수가 되면 태스크 전환신호를 발생하는 태스크 전환신호 발생기와,
    태스크 전환신호가 발생될 때마다 다음 순위의 태스크 식별자를 생성하여 출력하는 태스크 식별자 출력부를 포함하는 것을 특징으로 하는 프로세서.
  3. 제 2항에 있어서,
    상기 명령 지정수단은,
    n개의 태스크와 1대 1로 대응하고, 대응하는 태스크에 관해서 다음에 판독할 선두 어드레스를 유지하는 n개의 어드레스 레지스터와,
    실행 태스크 지시수단으로부터 태스크 식별자가 출력되면 그 식별자와 대응하는 어드레스 레지스터를 선택하는 레지스터 선택부와,
    선택부에서 선택된 어드레스 레지스터가 저장하는 선두 어드레스를, 최초의 판독장소 어드레스로 하여, 태스크 식별자가 전환되기까지의 동안 상기 판독장소 어드레스를 차례로 갱신하는 판독장소 어드레스 생성부와,
    다음 순서의 태스크로 전환될 때 판독 어드레스 생성부에서 갱신된 판독 어드레스에서, 전환 직전까지 레지스터 선택부에서 선택되어 있던 어드레스 레지스터의 저장할 선두 어드레스를 고쳐쓰는 어드레스 레지스터 갱신부를 포함하며,
    상기 실행수단은 상기 판독장소 어드레스 생성부가 생성한 어드레스로 특정되는 명령을 실행하는 것을 특징으로 하는 프로세서.
  4. 제 2항에 있어서,
    상기 태스크 전환신호 발생기는,
    클록 펄스를 카운트하는 카운터와,
    카운터의 카운트값을 현재 실행중의 태스크에 할당된 명령수와 비교하여, 일치하면 태스크 전환신호를 출력하는 동시에 상기 카운터를 리세트하는 비교기를 포함하는 것을 특징으로 하는 프로세서.
  5. 제 4항에 있어서,
    상기 태스크 전환신호 발생기는,
    2종류 이상의 명령수를 유지하는 명령수 유지부와,
    실행 태스크 지시수단이 지시하는 태스크 식별자에 의해 명령수 유지부가 유지하는 하나의 명령수를 선택하는 명령수 선택부를 추가로 포함하며,
    여기에서 선택된 명령수가 비교기에 비교 입력으로서 가해지는 것을 특징으로 하는 프로세서.
  6. 제 5항에 있어서,
    상기 명령수 유지부가 유지하는 명령수에는,
    제 1정수와, 제 1정수보다 작은 제 2정수가 있고,
    상기 명령 지정수단은,
    n개의 태스크에서 제 2정수를 할당할 태스크인 패널티 태스크의 식별자를 유지하는 패널티 태스크 유지부를 포함하며,
    상기 명령수 선택부는,
    실행 태스크 지시수단이 태스크 식별자를 출력하면 당해 태스크 식별자가 패널티 태스크의 식별자인지를 판정하는 판정부와,
    태스크 식별자가 패널티 태스크를 나타낸다고 판정되면 명령수 유지부가 유지하는 제 2정수를 비교기로 출력하는 정수 출력부를 포함하는 것을 특징으로 하는 프로세서.
  7. 제 6항에 있어서,
    상기 태스크에는 사상 성립의 진위조건의 지정을 포함하는 사상 감시 명령이 포함되어 있고,
    상기 실행수단은,
    판독장소 어드레스 생성부가 생성한 어드레스로 특정되는 명령을 해독하는 해독수단과,
    해독수단에 의한 해독 결과가 사상 감시 명령이면, 사상 감시 명령에서 지정된 사상 성립의 진위를 확인하는 취지의 연산을 실행하는 연산수단을 포함하며,
    상기 패널티 태스크 유지부는,
    연산수단에 의한 연산 결과가 사상 불성립을 나타내는 것이면, 사상 감시 명령을 포함하는 태스크의 태스크 식별자를 패널티 태스크의 식별자로서 유지하는 것을 특징으로 하는 프로세서.
  8. 상기 프로세서는, 그 내부에 버퍼와 메모리를 갖는 정보처리 시스템에 구비되고,
    제 7항에서 프로세서는 내부 버퍼 및 메모리에서의 상태를 나타내는 상태 레지스터를 복수개 갖고,
    상기 사상 감시 명령은 복수의 상태 레지스터의 어느 하나에 대한 지정과, 즉치(卽値) 지정을 갖고,
    상기 연산수단은,
    해독 수단에 의한 해독 결과가 사상 감시 명령이면 사상 감시 명령에서 지정된 상태감시 레지스터의 유지값과, 당해 명령에서 지정된 즉치를 이용한 연산을 실행하는 것을 특징으로 하는 프로세서.
  9. 제 2항에 있어서,
    상기 태스크 식별자 출력부는,
    각 태스크 식별자를 몇번째에 출력하는가를 나타내는 출력 순위를, n개의 모든 태스크에 대하여 기억하는 순위 기억부와,
    태스크 전환신호가 발생될 때마다 순위 기억부에서 출력 순위가 다음 순위로 되는 태스크 식별자를 명령 지정수단에 출력하는 선택 출력부를 포함하는 것을 특징으로 하는 프로세서.
  10. 제 9항에 있어서,
    어떤 태스크는 긴급 취급을 요하는 취지의 긴급 선언 명령을 포함하며,
    상기 실행수단은 명령 지정수단이 지정한 명령을 해독하는 해독수단을 포함하며,
    상기 실행 태스크 지시수단은,
    해독수단에 의한 해독 결과가 긴급 선언 명령이면, 당해 명령에 의해 지정되는 태스크를 긴급 취급을 요하는 태스크로서 그 식별자를 유지하는 긴급 태스크레지스터와,
    긴급 태스크 레지스터가 긴급 태스크의 식별자를 유지하지 않는 상태에서 태스크 전환신호가 발생되면 선택 출력부가 출력한 태스크 식별자를 실행수단으로 직접 출력하고,
    긴급 태스크 레지스터가 긴급 태스크의 식별자를 유지한 상태에서 태스크 전환신호가 발생되면, 태스크 전환신호의 m회의 발신에 대해(m≥2) 1회의 비율로써, 긴급 태스크 레지스터가 유지하는 태스크 식별자를 실행수단으로 출력하는 출력 비율 제어부를 포함하는 것을 특징으로 하는 프로세서.
  11. 제 9항에 있어서,
    어떤 태스크는 긴급 취급을 요하는 취지의 긴급 선언 명령을 포함하며,
    상기 실행 태스크 지시수단은,
    프로세서 외부에서 입력되는 소정 신호를 감시함으로써, 당해 프로세서 외부가 긴급 기간 내인지, 긴급 기간 외인지를 판정하는 감시수단과,
    소정 신호가 긴급 기간 내인 경우, 긴급 취급할 태스크인 긴급 태스크의 식별자를 유지하는 긴급 태스크 레지스터와,
    긴급 기간 외에서 태스크 전환신호가 발생되면, 선택 출력부가 미출력 태스크로부터 선택하여 출력한 태스크 식별자를 실행수단으로 직접 출력하고,
    긴급 기간 내에서 태스크 전환신호가 발생되면, 태스크 전환신호의 m회의 발신에 대해(m≥2) 1회의 비율로, 긴급 태스크 레지스터가 유지하고 있는 태스크 식별자를 실행수단에 출력하는 출력 비율 제어부를 포함하는 것을 특징으로 하는 프로세서.
  12. 제 11항에 있어서,
    상기 순위 기억부는,
    n비트열을 유지하는 n비트 레지스터를 포함하며,
    n비트열의 각 비트는 각각이 태스크 식별자에 대응되어 있고,
    각 태스크 식별자의 출력 순위는 각각의 태스크 식별자에 대응된 태스크 비트가 당해 n비트열에서 최상위 혹은 최하위로부터 몇비트째에 위치하는지에 따라 표현되는 것을 특징으로 하는 프로세서.
  13. 제 12항에 있어서,
    상기 n비트열에, 태스크 식별자가 출력 완료된 태스크에 할당된 비트는『1』로 설정되고, 미출력 태스크에 할당된 비트는『0』으로 설정되어 있고,
    상기 실행 태스크 출력부는,
    선택 출력부에 의해 다음 순위의 태스크 식별자가 출력되면 n비트 레지스터가 유지하는 n비트열 중, 출력된 비트를『1』로 설정하는 비트 세트부와,
    n비트열의 전체 비트가 비트 세트부에 의해 『1』로 설정되면, n비트열을 모두 제로(0)로 리세트하는 비트 리세트부를 포함하며,
    상기 선택 출력부는,
    n비트 레지스터가 유지하는 n비트열에서『1』로부터『O』으로의 반전이 나타나는 비트 위치에 따라 다음 순위에 출력할 태스크 식별자를 생성하는 동시에, 그 태스크 식별자를 실행 태스크 지시수단에 출력하는 우선순위 인코더를 포함하는 것을 특징으로 하는 프로세서.
  14. 제 13항에 있어서,
    상기 태스크 식별자 출력부는,
    긴급 태스크 레지스터가 긴급 선언 명령을 포함하는 태스크의 태스크 식별자를 유지하면, n비트 레지스터가 유지하는 n비트열에서 당해 긴급 태스크에 할당된 비트를『1』로 설정하는 것을 특징으로 하는 프로세서.
  15. 제 14항에 있어서,
    상기 프로세서는 동화상 스트림을 복호하는 AV디코드 시스템에 구비되고,
    긴급 태스크는,
    AV 디코드 시스템에서의 동화상 스트림의 복호가 끝나면, 복호 결과를 외부에 접속된 디스플레이에 출력하는 태스크이며,
    감시수단이 감시하는 소정 신호란, 영상 신호를 표시하기 위한 디스플레이에서의 수평귀선 기간신호, 수직귀선 기간신호인 것을 특징으로 하는 프로세서.
  16. 제 11항에 있어서,
    태스크 전환신호 발생기는,
    클록 펄스를 카운트하는 카운터와,
    카운터의 카운트값을 현재 실행 중의 태스크에 할당된 명령수와 비교하여, 일치하면 태스크 전환신호를 출력하는 동시에 상기 카운터를 리세트하는 비교기를 포함하는 것을 특징으로 하는 프로세서.
  17. 제 16항에 있어서,
    상기 태스크 전환신호 발생기는,
    2종류 이상의 명령수를 유지하는 명령수 유지부와,
    실행 태스크 지시수단이 지시하는 태스크 식별자에 의해 명령수 유지부가 유지하는 하나의 명령수를 선택하는 명령수 선택부를 추가로 포함하며,
    여기에서, 선택된 명령수가 비교기에 비교입력으로서 가해지는 것을 특징으로 하는 프로세서.
  18. 제 17항에 있어서,
    상기 명령수 유지부가 유지하는 명령수에는 제 1정수와, 제 1정수보다 많은 제 2정수가 있고,
    상기 태스크 식별자 출력부는, 다음에 태스크 식별자가 출력되었을 때, 제 2정수를 할당할 구제대상 태스크 식별자를 유지하는 구제대상 태스크 유지부를 포함하며,
    상기 명령수 선택부는, 감시수단이 프로세서 외부에서 입력되는 소정 신호가 긴급기간 내인 것으로 판정한 경우, 실행 태스크 지시수단이 태스크 식별자를 출력하면, 당해 태스크 식별자가 구제대상 태스크를 나타내는 것인지를 판정하는 판정부와,
    태스크 식별자가 구제대상 태스크를 나타낸다고 판정하면, 명령수 유지부가 유지하는 제 2정수를 비교기로 출력하는 정수 출력부를 포함하는 것을 특징으로 하는 프로세서.
  19. 제 9항에 있어서,
    어떤 태스크는 어떤 태스크의 실행을 휴면 상태로 설정할 취지의 자진 휴면 명령을 포함하며,
    상기 실행수단은,
    명령 지정수단이 다음에 실행할 명령으로서 지정한 명령을 해독하는 해독수단을 추가로 포함하며,
    상기 실행 태스크 지시수단은,
    해독수단에 의한 해독 결과가 자진 휴면 명령이면, 당해 명령에 의해 지정되는 태스크를 휴면 취급을 요하는 태스크로서 그 태스크 식별자를 유지하는 휴면 태스크 레지스터를 추가로 포함하며,
    상기 선택 출력부는, 순위 기억부가 기억에서의 다음 순위 태스크 식별자가 휴면 태스크의 태스크 식별자이면, 그 다음 순위의 태스크 식별자를 출력하는 것을 특징으로 하는 프로세서.
  20. 어떤 태스크는 다른 태스크의 휴면 상태를 해제할 취지의 강제 해제 명령을 포함하며,
    제 19항에서 실행 태스크 지시수단은,
    해독수단에 의한 해독결과가 강제 해제 명령이면, 휴면 태스크 레지스터가 유지하고 있는 태스크 식별자를 삭제하는 삭제부를 포함하는 것을 특징으로 하는 프로세서.
  21. 제 20항에 있어서,
    상기 순위 기억부는
    n비트열을 유지하는 n비트 레지스트를 포함하고,
    n비트열의 각 비트는,
    각각이 태스크 식별자에 대응되어 있고,
    각 태스크 식별자의 출력 순위는, 각각의 태스크 식별자에 대응된 태스크 비트가 당해 n비트열에서 최상위 또는 최하위로부터 몇 비트째에 위치하는가에 의해 표현되는 것을 특징으로 하는 프로세서.
  22. 제 21항에 있어서,
    상기 n비트열에서,
    태스크 식별자가 출력을 마친 태스크에 할당된 비트는 『1』로 설정되고, 출력되지 않은 태스크에 할당된 비트는 『0』으로 설정되며,
    상기 실행 태스크 출력부는,
    선택 출력부에 의해 다음 순위의 태스크 식별자가 출력되면, n비트 레지스트가 유지하는 n비트열 중, 출력된 비트를 『1』로 설정하는 비트 세트부와,
    n비트열의 모든 비트가 비트 세트부에 의해 『1』로 설정되면, n비트 열을 모두 제로(0)로 리세트하는 비트 리세트부를 포함하고,
    상기 선택 출력부는,
    n비트 레지스트가 유지하는 n비트열에서 『1』에서 『0』으로의 반전이 나타나는 비트 위치에 기초하여, 다음 순위로 출력할 태스크 식별자를 생성하는 동시에, 그 태스크 식별자를 실행 태스크 지시수단에 출력하는 우선 순위 인코더를 포함하는 것을 특징으로 하는 프로세서.
  23. 제 22항에 있어서,
    실행 태스크 지시수단은,
    긴급 태스크 레지스터가 자진 휴면 명령을 포함하는 태스크의 태스크 식별자를 유지하면, n비트열에서 당해 휴면 상태 태스크에 할당된 비트를『1』로 마스크하는 마스크부와,
    해독 수단에 의한 해독 결과가 강제 해제 명령이면, n비트열에서 당해 명 령으로 지정되는 태스크의 태스크 식별자에 할당된 비트를『0』으로하여 마스크를 해제하는 비마스크부를 포함하는 것을 특징으로 하는 프로세서.
  24. 하나의 태스크가 실행되어 처음부터 다음 태스크로 전환되기까지의 최대 사이클수이고, 전체 태스크의 최대 사이클수의 합계 시간은 비동기 사상의 발생 주기보다 짧게 설정되어 있는 사이클수로서의 각 태스크에 할당된 사이클수를 유지하는 프로세서로서 이하의 것을 포함하는 사이클수 유지수단과,
    클록을 카운트하는 카운터와,
    카운터의 카운트값이 사이클수 유지수단의 최대 사이클수에 일치하면 태스크전환 신호와 카운터 리세트 신호를 발생시키는 비교수단과,
    미리 결정된 태스크 선택의 순서를 갖고, 태스크 전환신호가 입력되면 태스크의 선택을 전환하는 선택수단과,
    선택 수단이 하나의 태스크를 선택하고 있는 동안, 그 태스크의 명령을 차례로 지정하는 명령 지정수단과,
    선택수단이 선택한 태스크의, 명령 지정 수단이 지정하는 명령을 실행하는 실행수단을 포함하는 것을 특징으로 하는 프로세서.
  25. 제 24항에 있어서,
    실행대상 태스크의 하나는 상기 비동기 사상에 관한 처리가 할당되고, 그 태스크에 할당된 사이클수와 비동기 사상 발생 주기 내에 그 태스크가 반복 선택되는 회수의 곱으로 주어지는 사이클수가 비동기 사상에 대하여 소요한 처리량을 상회하는 것을 특징으로 하는 프로세서.
  26. 제 25항에 있어서,
    프로세서는 동화상 스트림 및 오디오 스트림을 복호하는 디코드부와, 디코드부가 복호처리에 이용하는 로컬 버퍼와, 외부 메모리를 갖는 AV 디코드 시스템에 구비되고,
    상기 태스크수 n은 4이고,
    n개의 태스크에서의 제 1 태스크는 AV 디코드 시스템 외부에서 입력되는 비트 스트림으로부터 동화상 스트림 및 오디오 스트림을 추출하여, 추출된 동화상 스트림 및 오디오 스트림을 외부 메모리에 기입하는 태스크이고,
    제 2 태스크는 AV디코드 시스템에서의 디코드부의 진척에 따라, 다음에 처리할 동화상 스트림 및 오디오 스트림을 외부 메모리로부터 디코드부에 공급하는 태스크인 디코드 결과를 외부 메모리에 저장하는 태스크이고,
    제 3 태스크는 디코드부의 디코드 결과 중 동화상 데이터를 외부 메모리로부터 판독하여, 외부에 접속된 디스플레이의 동기 신호에 동기시키면서 출력하는 태스크이고,
    제 4 태스크는 디코드부의 디코드 결과 중 음성 데이터를 외부 메모리로부터 판독하여 외부에 접속된 스피커 장치에 소정의 주기로 출력하는 태스크이고,
    상기 사이클수 유지수단은 제 1∼제 4 태스크에 할당된 사이클수로서 4사이클을 유지하는 것을 특징으로 하는 프로세서.
  27. n개의 태스크를 실행 대상 태스크로 한 프로세서에 있어서,
    결정된 사이클수로 태스크를 차례로 선택하는 태스크 선택수단과,
    태스크와 1대 1의 관계로 n개의 명령 지정정보를 갖고, 태스크 선택수단에 의해 태스크가 선택되면 그것에 대응한 명령 지정정보를 효율적으로 하는 동시에, 그 정보를 기점으로 하여 다음에 판독할 명령을 지정하는 정보를 동적으로 생성하는 명령 지정수단과,
    명령 지정수단으로 지정된 명령을 판독하여 실행하는 실행수단을 포함하는 것을 특징으로 하는 프로세서.
  28. 제 27항에 있어서,
    명령 지정수단은,
    n개의 태스크와 1대 1로 대응하고, 대응하는 태스크에 관해서 다음에 판독할 어드레스값을 명령 지정정보로서 유지하는 n 개의 어드레스 레지스터와,
    태스크 선택수단이 선택한 태스크에 대응하는 어드레스 레지스터를 선택하고, 그 어드레스값을 출력시키는 레지스터 선택부와,
    레지스터 선택부에 의해 어드레스 레지스터가 선택되면, 당해 어드레스 레지스터가 유지하고 있는 어드레스값을 카운트 초기값으로서 유지하는 카운트값 레지스터와,
    카운트값 레지스터가 유지하고 있는 카운트값을 사이클마다 증분하는 증분기와,
    증분된 카운트값을 상기 다음에 판독할 명령을 지정하는 정보의 갱신값으로서 유지하는 판독장소 어드레스 유지부를 포함하는 것을 특징으로 하는 프로세서.
  29. 제 28항에 있어서,
    명령 지정수단은,
    증분기가 증분한 카운트값을 직접 출력하여 판독장소 어드레스 유지부에 유지하는 동시에, 태스크 선택수단이 태스크를 선택하면 당해 태스크에 대응하는 어드레스 레지스터의 어드레스값을 선택 출력하여 판독장소 어드레스 유지부에 유지시키는 제 1 셀렉터와,
    다음 순서의 태스크로 전환될 때, 카운트값 레지스터가 유지하는 카운트값을 이용하여, 전환 직전까지 레지스터 선택부에서 선택되어 있던 어드레스 레지스터가 저장하는 어드레스값을 고쳐쓰는 제 1 고쳐쓰기부를 포함하는 것을 특징으로 하는 프로세서.
  30. 제 29항에 있어서,
    태스크 전환을 지정하는 취지의 자진 전환 명령이 포함되어 있고,
    상기 실행수단은 판독장소 어드레스 유지부가 유지하는 어드레스에서 특정되는 명령을 해독하는 해독수단을 포함하며,
    명령 지정수단은 해독수단에 의한 해독 결과가 자진 전환 명령이면, 판독장소 어드레스 유지부가 유지하고 있는 명령 지정 정보를 이용하여, 전환 직전까지 선택부에서 선택되어 있던 어드레스 레지스터가 저장하는 어드레스값을 고쳐쓰는 제 2 고쳐쓰기부를 포함하며,
    상기 제 1 셀렉터는 해독수단에 의한 해독 결과가 자진 전환 명령이면, 당해 다음 태스크에 대응하는 어드레스 레지스터의 어드레스값을 선택 출력하여 판독장소 어드레스 유지부에 유지시키는 것을 특징으로 하는 프로세서.
  31. 제 30항에 있어서,
    태스크에는 절대 어드레스로 분기장소를 지정한 분기 명령이 포함되어 있고,
    상기 명령 지정수단은 해독수단에 의한 해독 결과가 분기명령이면, 당해 분기 명령에 포함되어 있는 절대 어드레스를 이용하여, 전환 직전까지 선택부에서 선택되어 있던 어드레스 레지스터가 저장하는 어드레스값을 고쳐쓰는 제 3 고쳐쓰기부를 포함하는 것을 특징으로 하는 프로세서.
  32. 제 31항에 있어서,
    태스크에는 간접 어드레스 지정으로 분기장소를 지정한 분기 명령이 포함되고,
    상기 명령 지정수단은 해독수단에 의한 해독 결과가 간접 어드레스 지정형의 분기 명령이고, 실행수단에서의 명령 실행에 의해 분기장소 어드레스가 산출되면, 당해 분기장소 어드레스를 이용하여 전환 직전까지 선택부에서 선택되어 있던 어드레스 레지스터의 저장하는 어드레스값을 고쳐쓰는 제 4 고쳐쓰기부를 포함하는 것을 특징으로 하는 프로세서.
  33. 제 32항에 있어서,
    실행수단은,
    n×m개의 범용 레지스터로 구성되고, 각 태스크에 m개의 범용 레지스터를 할당하고 있는 범용 레지스터 세트와,
    태스크 선택수단에 의해 태스크가 선택되면 그것에 대응하는 m개의 범용 레지스터를 이용하여 선택된 태스크에 포함되는 명령에 대한 연산을 실행하는 연산 실행부를 포함하는 것을 특징으로 하는 프로세서.
KR10-1998-0007122A 1997-03-04 1998-03-04 비동기로실행할태스크가다수있어도비동기이벤트태스크를효율적으로실행할수있는프로세서 KR100450228B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP97-49,370 1997-03-04
JP???9-049370 1997-03-04
JP4937097 1997-03-04

Publications (2)

Publication Number Publication Date
KR19980079896A true KR19980079896A (ko) 1998-11-25
KR100450228B1 KR100450228B1 (ko) 2004-11-16

Family

ID=12829152

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1998-0007122A KR100450228B1 (ko) 1997-03-04 1998-03-04 비동기로실행할태스크가다수있어도비동기이벤트태스크를효율적으로실행할수있는프로세서

Country Status (5)

Country Link
US (1) US6470376B1 (ko)
EP (1) EP0863462B8 (ko)
KR (1) KR100450228B1 (ko)
CN (1) CN1113289C (ko)
DE (1) DE69841526D1 (ko)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3509060B2 (ja) * 1998-05-28 2004-03-22 松下電器産業株式会社 表示制御装置および方法
US6952827B1 (en) * 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US7844167B1 (en) 1998-12-08 2010-11-30 Stmicroelectronics, Inc. System and apparatus for digital audio/video decoder splitting signal into component data streams for rendering at least two video signals
US6490324B1 (en) 1998-12-08 2002-12-03 Stmicroelectronics, Inc. System, method and apparatus for a variable output video decoder
US6414996B1 (en) 1998-12-08 2002-07-02 Stmicroelectronics, Inc. System, method and apparatus for an instruction driven digital video processor
US20020114395A1 (en) * 1998-12-08 2002-08-22 Jefferson Eugene Owen System method and apparatus for a motion compensation instruction generator
US6691304B1 (en) * 1999-02-25 2004-02-10 Sun Microsystems, Inc. Monitor conversion in a multi-threaded computer system
US6535905B1 (en) 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6519265B1 (en) * 1999-05-28 2003-02-11 Sony Corporation System and method for context switching in an electronic network
WO2001016715A1 (en) * 1999-09-01 2001-03-08 Intel Corporation Branch instructions in a multithreaded parallel processing system
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
ATE534074T1 (de) 1999-09-01 2011-12-15 Intel Corp Kontextwechselbefehl für multithread-prozessor
US6496925B1 (en) 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US7856633B1 (en) 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US7093252B1 (en) * 2000-04-12 2006-08-15 International Business Machines Corporation Self-submitting job for testing a job scheduling/submitting software
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
US7089557B2 (en) * 2001-04-10 2006-08-08 Rusty Shawn Lee Data processing system and method for high-efficiency multitasking
US20020194609A1 (en) * 2001-06-18 2002-12-19 Tran Thanh T. Video client with dynamically allocable video buffer for efficiently streaming video
JP2003174650A (ja) * 2001-09-27 2003-06-20 Canon Inc 画像符号化装置、可変長符号化装置、制御装置およびそれらの方法
JP4130076B2 (ja) * 2001-12-21 2008-08-06 富士通株式会社 データベース管理プログラムおよび記録媒体
JP3813930B2 (ja) * 2002-01-09 2006-08-23 松下電器産業株式会社 プロセッサ及びプログラム実行方法
US20040136720A1 (en) * 2003-01-15 2004-07-15 Mahowald Peter H. Task prioritization in firmware controlled optical transceiver
JP4750350B2 (ja) 2003-03-13 2011-08-17 パナソニック株式会社 タスク切換装置、方法及びプログラム
US7330991B2 (en) * 2003-05-15 2008-02-12 Lsi Logic Corporation Method and/or apparatus for paging to a dynamic memory array
US20050108711A1 (en) * 2003-11-13 2005-05-19 Infineon Technologies North America Corporation Machine instruction for enhanced control of multiple virtual processor systems
US8041929B2 (en) * 2006-06-16 2011-10-18 Cisco Technology, Inc. Techniques for hardware-assisted multi-threaded processing
US8010966B2 (en) * 2006-09-27 2011-08-30 Cisco Technology, Inc. Multi-threaded processing using path locks
US7877653B2 (en) 2007-05-09 2011-01-25 Texas Instruments Incorporated Address and TMS gating circuitry for TAP control circuit
WO2009022371A1 (ja) * 2007-08-16 2009-02-19 Netcleus Systems Corporation タスク処理装置
JP4982347B2 (ja) * 2007-12-11 2012-07-25 株式会社東芝 画像情報の更新を検出するプログラム、方法および画像処理装置
JP5010492B2 (ja) * 2008-01-31 2012-08-29 株式会社東芝 通信装置、方法及びプログラム
EP2313827B1 (en) * 2008-06-11 2019-07-24 QUALCOMM Incorporated Method and system for measuring task load
WO2010004450A1 (en) * 2008-07-09 2010-01-14 Nxp B.V. Method and device for digitally processing an audio signal and computer program product
US8429658B2 (en) * 2008-10-16 2013-04-23 International Business Machines Corporation Lock deferral for real-time garbage collection
US8205203B2 (en) * 2008-10-16 2012-06-19 International Business Machines Corporation Scheduling for real-time garbage collection
JP4965638B2 (ja) * 2009-12-25 2012-07-04 インターナショナル・ビジネス・マシーンズ・コーポレーション タスクの切り換えを制御するシステムおよび方法
US9110878B2 (en) * 2012-01-18 2015-08-18 International Business Machines Corporation Use of a warning track interruption facility by a program
US9104508B2 (en) 2012-01-18 2015-08-11 International Business Machines Corporation Providing by one program to another program access to a warning track facility
US8850450B2 (en) 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
JP5848153B2 (ja) * 2012-02-17 2016-01-27 ルネサスエレクトロニクス株式会社 信号処理装置及び半導体装置
US10430190B2 (en) * 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
US9400734B2 (en) * 2013-09-15 2016-07-26 Sandisk Technologies Llc Apparatuses and methods for generating event codes including event source
US9558032B2 (en) 2014-03-14 2017-01-31 International Business Machines Corporation Conditional instruction end operation
US10120681B2 (en) 2014-03-14 2018-11-06 International Business Machines Corporation Compare and delay instructions
US9454370B2 (en) 2014-03-14 2016-09-27 International Business Machines Corporation Conditional transaction end instruction
US9372724B2 (en) * 2014-04-01 2016-06-21 Freescale Semiconductor, Inc. System and method for conditional task switching during ordering scope transitions
US9372723B2 (en) * 2014-04-01 2016-06-21 Freescale Semiconductor, Inc. System and method for conditional task switching during ordering scope transitions
US9733981B2 (en) 2014-06-10 2017-08-15 Nxp Usa, Inc. System and method for conditional task switching during ordering scope transitions
JP6314717B2 (ja) * 2014-07-18 2018-04-25 株式会社安川電機 ラダープログラム作成装置、モニタリング装置、コンピュータプログラム及び機器制御装置
JP6396715B2 (ja) * 2014-08-07 2018-09-26 ルネサスエレクトロニクス株式会社 データ処理装置
US9946635B2 (en) * 2015-09-29 2018-04-17 International Business Machines Corporation Synchronizing multi-system program instruction sequences
CN106598599B (zh) * 2016-12-15 2019-08-27 王弘远 一种程序的执行方法和设备
US10684896B2 (en) * 2017-02-20 2020-06-16 Tsinghua University Method for processing asynchronous event by checking device and checking device
US10657022B2 (en) 2017-02-20 2020-05-19 Tsinghua University Input and output recording device and method, CPU and data read and write operation method thereof
JP6859922B2 (ja) * 2017-10-24 2021-04-14 オムロン株式会社 制御装置、制御装置の制御方法、情報処理プログラム、および記録媒体
JP7208448B2 (ja) * 2019-02-01 2023-01-19 富士通株式会社 情報処理装置、情報処理プログラム、及び情報処理方法
CN110808986B (zh) * 2019-11-06 2021-06-04 拉扎斯网络科技(上海)有限公司 一种任务处理方法、装置、相关设备及系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3728692A (en) * 1971-08-31 1973-04-17 Ibm Instruction selection in a two-program counter instruction unit
US4348725A (en) * 1977-01-19 1982-09-07 Honeywell Information Systems Inc. Communication line service interrupt technique for a communications processing system
JPH0199132A (ja) 1987-10-12 1989-04-18 Matsushita Electric Ind Co Ltd マルチタスク実行装置
JP2574349B2 (ja) 1987-12-24 1997-01-22 松下電器産業株式会社 時分割マルチタスク実行装置
JP2748503B2 (ja) 1989-02-28 1998-05-06 ソニー株式会社 デジタル信号処理装置
US5371887A (en) 1989-09-05 1994-12-06 Matsushita Electric Industrial Co., Ltd. Time-shared multitask execution device
US5136710A (en) 1990-06-21 1992-08-04 International Business Machines Corporation Dynamic inactivation of program exits of the application program while the system program is running
US5210872A (en) 1991-06-28 1993-05-11 Texas Instruments Inc. Critical task scheduling for real-time systems
JP2520544B2 (ja) * 1991-09-26 1996-07-31 インターナショナル・ビジネス・マシーンズ・コーポレイション タスクのオ―バ―ラン状態を監視する方法及びタスク実行サイクルのオ―バ―ランを検出する装置
JP2666667B2 (ja) 1992-12-18 1997-10-22 松下電器産業株式会社 マルチタスク実行装置
US5630130A (en) 1992-12-23 1997-05-13 Centre Electronique Horloger S.A. Multi-tasking low-power controller having multiple program counters
JPH06202887A (ja) 1992-12-28 1994-07-22 Matsushita Electric Ind Co Ltd マイクロコンピュータ
FR2705804B1 (fr) * 1993-05-27 1995-08-11 Sgs Thomson Microelectronics Architecture de processeur multi-tâches.
US5867704A (en) * 1995-02-24 1999-02-02 Matsushita Electric Industrial Co., Ltd. Multiprocessor system shaving processor based idle state detection and method of executing tasks in such a multiprocessor system
JP3169316B2 (ja) 1995-03-08 2001-05-21 日本電信電話株式会社 タスクスケジューリング方法
JPH08320797A (ja) * 1995-05-24 1996-12-03 Fuji Xerox Co Ltd プログラム制御システム
US5799182A (en) * 1997-01-21 1998-08-25 Ford Motor Company Multiple thread micro-sequencer apparatus and method with a single processor

Also Published As

Publication number Publication date
EP0863462A2 (en) 1998-09-09
CN1113289C (zh) 2003-07-02
EP0863462B8 (en) 2010-07-28
DE69841526D1 (de) 2010-04-15
EP0863462B1 (en) 2010-03-03
KR100450228B1 (ko) 2004-11-16
EP0863462A3 (en) 2001-11-28
CN1211005A (zh) 1999-03-17
US6470376B1 (en) 2002-10-22

Similar Documents

Publication Publication Date Title
KR100450228B1 (ko) 비동기로실행할태스크가다수있어도비동기이벤트태스크를효율적으로실행할수있는프로세서
KR100232961B1 (ko) Pc환경에서 엠펙 비디오 디코딩을 위해 프레임 버퍼를 매니징하기 위한 장치 및 방법
US5699460A (en) Image compression coprocessor with data flow control and multiple processing units
US6310921B1 (en) Media processing apparatus which operates at high efficiency
KR100623217B1 (ko) 스케줄링 방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체 및 실시간 처리시스템
KR100591727B1 (ko) 스케줄링 방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체 및 정보처리시스템
AU685098B2 (en) Video peripheral for a computer
US20060114264A1 (en) Method and apparatus for image blending
US20080022288A1 (en) Signal Processing Appatatus
US20120092353A1 (en) Systems and Methods for Video Processing
WO1994025935A9 (en) Image compression coprocessor with data flow control and multiple processing units
US6006020A (en) Video peripheral circuitry exercising bus master control over a bus of a host computer
JP2000207202A (ja) 制御装置およびデ―タ処理装置
KR100917067B1 (ko) 비디오 처리
KR20010029924A (ko) 데이터 처리장치
EP1011072A1 (en) Image processor
JP3356677B2 (ja) 非同期に実行すべきタスクが多数あっても、非同期イベントタスクを効率良く実行することができるプロセッサ
JP2002091782A (ja) 非同期に実行すべきタスクが多数あっても、非同期イベントタスクを効率良く実行することができるプロセッサ
JP2002027477A (ja) Mpeg画像処理装置およびそのデータ転送方法
JP2000235501A (ja) タスク実行装置
JP3327900B2 (ja) データ処理装置
JPH1155668A (ja) 画像符号化装置
JP2004326228A (ja) 並列演算処理装置
JP2005086822A (ja) ビデオ・データおよびグラフィックス・データ処理用装置
JP3380236B2 (ja) 映像音声処理装置

Legal Events

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

Payment date: 20120821

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20130819

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20150819

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20160818

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20170822

Year of fee payment: 14

EXPY Expiration of term