KR100732426B1 - 고속 컨텍스트 전환을 갖는 컴퓨터 - Google Patents

고속 컨텍스트 전환을 갖는 컴퓨터 Download PDF

Info

Publication number
KR100732426B1
KR100732426B1 KR1020010006093A KR20010006093A KR100732426B1 KR 100732426 B1 KR100732426 B1 KR 100732426B1 KR 1020010006093 A KR1020010006093 A KR 1020010006093A KR 20010006093 A KR20010006093 A KR 20010006093A KR 100732426 B1 KR100732426 B1 KR 100732426B1
Authority
KR
South Korea
Prior art keywords
instruction
context
area
program
register
Prior art date
Application number
KR1020010006093A
Other languages
English (en)
Other versions
KR20010085353A (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
Priority claimed from JP2000054742A external-priority patent/JP2001243051A/ja
Priority claimed from JP2000054832A external-priority patent/JP5185478B2/ja
Priority claimed from JP2000099707A external-priority patent/JP4116752B2/ja
Application filed by 후지쯔 가부시끼가이샤 filed Critical 후지쯔 가부시끼가이샤
Publication of KR20010085353A publication Critical patent/KR20010085353A/ko
Application granted granted Critical
Publication of KR100732426B1 publication Critical patent/KR100732426B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/535Dividing only
    • 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
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/535Indexing scheme relating to groups G06F7/535 - G06F7/5375
    • G06F2207/5353Restoring division
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Testing Of Balance (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)

Abstract

본 발명에 따르면, 복수의 프로그램을 시분할 방식으로 병렬 처리하는 컴퓨터는 복수의 영역으로 분할되어 있는 하드웨어 자원과, 제1 프로그램을 식별하는 식별 정보를 기록하며, 복수의 영역 중 하나의 영역이 제2 프로그램을 실행하는 데 필요하게 되는 동시에, 제1 프로그램을 실행하는 데 사용되면 복수의 영역 중 하나의 영역에 저장된 정보를 퇴거하는 퇴거 수단과, 제2 프로그램이 중단 또는 종료되었을 때, 퇴거 수단에 의해 퇴거된 정보를 식별 정보에 기초하여 복수의 영역 중 하나의 영역으로 복원하는 복원 수단을 구비한다.

Description

고속 컨텍스트 전환을 갖는 컴퓨터{COMPUTER WITH HIGH-SPEED CONTEXT SWITCHING}
도 1은 범용 레지스터 및 부동 소수점 레지스터를 구비하는 종래기술의 컴퓨터의 블럭도.
도 2는 컨텍스트 전환 동작을 도시하는 플로우차트.
도 3은 본 발명의 제1 실시예에 따른 컴퓨터의 블럭도.
도 4는 도 3에 도시된 제1 실시예의 컴퓨터에 의해 수행되는 컨텍스트 전환 동작을 도시하는 플로우차트.
도 5는 컨텍스트 전환 동작을 도시하는 플로우차트.
도 6은 원하는 컨텍스트가 사용 불가일 때 도 3에 도시된 제1 실시예의 컴퓨터에 의해 수행되는 인터럽션 동작을 도시하는 플로우차트.
도 7은 원하는 컨텍스트가 사용 불가일 때 수행되는 동작을 도시하는 플로우차트.
도 8은 제1 검출 회로의 구성을 도시하는 회로도.
도 9는 제2 검출 회로의 구성을 도시하는 회로도.
도 10은 제3 검출 회로의 구성을 도시하는 회로도.
도 11은 본 발명의 제2 실시예에 따른 컴퓨터를 도시하는 블럭도.
도 12는 제4 검출 회로의 구성을 도시하는 회로도.
도 13은 제5 검출 회로의 구성을 도시하는 회로도.
도 14는 제6 검출 회로의 구성을 도시하는 회로도.
도 15는 본 발명의 제3 실시예에 따른 컴퓨터를 도시하는 블럭도.
도 16은 제3 실시예의 컴퓨터에 의해 수행되는 컨텍스트 전환 동작을 도시하는 플로우차트.
도 17은 원하는 컨텍스트가 사용 불가일 때 수행되는 인터럽션 동작을 도시하는 플로우차트.
도 18은 본 발명의 제4 실시예에 따른 컴퓨터를 도시하는 플로우차트.
도 19는 본 발명의 제5 실시예에 따른 컴퓨터를 도시하는 플로우차트.
도 20은 제7 검출 회로의 구성을 도시하는 회로도.
도 21은 제8 검출 회로의 구성을 도시하는 회로도.
도 22는 파이프라인 처리 장치의 구성을 도시하는 블럭도.
도 23은 파이프라인 처리 장치의 동작을 도시하는 타임차트.
도 24는 본 발명에 따른 파이프라인 처리 장치의 제1 실시예를 도시하는 블럭도.
도 25는 도 24에 도시된 파이프라인 처리 장치의 동작에 대한 제1 실시예를 도시하는 타임차트.
도 26은 본 발명에 따른 파이프라인 처리 장치에 대한 제2 실시예를 도시하는 블럭도.
도 27은 본 발명에 따른 파이프라인 처리 장치에 대한 제3 실시예를 도시하는 블럭도.
도 28은 기수 4를 갖는 순환형 디바이더를 도시하는 블럭도.
도 29는 결과 선택 논리 회로에 의한 논리 연산을 도시하는 테이블.
도 30은 자리올림 보존 덧셈기의 회로 구성을 전가산기의 회로 구성과 함께 도시하는 회로도.
도 31은 필산에 기초하는 연산을 참고하여 전가산기 회로의 동작을 설명하기 위한 예시적인 도면.
<도면의 주요부분에 대한 부호의 설명>
1 : 메모리
3 : 명령 인출부
6 : 명령 실행부
8 : 레지스터 제어부
9 : 인터럽션 제어부
11 : 명령 판독 제어부
13 : 프로그램 카운터
15 : 명령 레지스터
17 : 명령 디코드부
19 : 로드 명령 실행부
21 : 스토어 명령 실행부
22 : 연산 명령 실행부
23 : 명령 실행부
25 : 부동 소수점 로드 명령 실행부
27 : 부동 소수점 스토어 명령 실행부
29 : 부동 소수점 연산 명령 실행부
30 : 조건 레지스터
31, 33, 35 : 레지스터
37 : 범용 레지스터
39 : 부동 소수점 레지스터
40 : 인터럽션 제어 회로
400 : 명령 실행부
404 : 인터럽션 제어부
405∼408 : 제1 검출부
409, 410 : 제2 검출부
411 : 제3 검출부
419 : 컨텍스트 블럭 식별 레지스터
423, 425 : 컨텍스트 관리부 엔트리
429 : GR 검출 회로
431, 432 : 논리 회로
435 : FR 검출 회로
437 : OR 회로
441∼444 : 제4 검출부
445, 446 : 제5 검출부
447 : 제6 검출부
본 발명은 일반적으로 프로그램을 실행하는 컴퓨터 및 그 프로그램을 실행을 제어하는 방법에 관한 것이다.
컴퓨터에 의해 각종 처리를 실행하기를 원할 때, 처리 시스템이 복수의 태스크 프로그램(task program)을 시분할(time division)로 전환하면서 병렬 처리할 수 있도록 구성함으로써 효율적인 처리를 달성할 수 있다. 이러한 처리 시스템은 멀티태스크 처리 시스템(multi-task processing system)이라고 불리우며, 복수의 처리 프로그램을 병렬 처리하는 기능을 구비한 OS(operating system)를 멀티태스크 OS라고 부른다.
이 멀티태스크 OS에 있어서, 컴퓨터 내부의 프로그램 카운터나 범용 레지스터 등의 각종 하드웨어 자원상에 저장되는 정보는 각각의 태스크 프로그램 단위로 개별적으로 확보된다. 이들 하드웨어 자원은 컴퓨터 태스크를 실행할 때와 마찬가지로 사용되기 때문에, 임의의 시점에 실행중이 아닌 태스크 프로그램에 대한 하드웨어 자원상의 정보는 메모리내에 저장되게 된다.
이러한 하드웨어 자원상의 정보는 "컨텍스트(context)"라고 불리운다. 이 컨텍스트를 하드웨어 자원으로부터 메모리로 이동하는 동작은 "컨텍스트 퇴거(evacuation)"라고 불리우고, 컨텍스트를 메모리로부터 하드웨어 자원으로 이동하는 동작은 "컨텍스트 복원(restoration)"이라고 불리운다. "컨텍스트 퇴거" 및 "컨텍스트 복원"은 집합적으로 "컨텍스트 전환(context switch)"라고 불리운다.
이하에 있어서, 종래기술의 컴퓨터에 대하여 설명한다.
표 1은 종래기술의 컴퓨터에 있어서 컨텍스트를 저장하는 컨텍스트 대상(context object)의 일례를 도시한다.
레지스터명
EPCR EPSR COND GR FR
상기 표 1에 있어서의 각각의 컨텍스트 대상은 이하에 있어서 상세히 설명된다.
도 1은 범용 레지스터(FT)와 부동 소수점 레지스터(FR)를 구비하는 종래기술의 컴퓨터의 구성을 도시하는 블럭도이다. 도 1에 도시된 바와 같이, 이 컴퓨터는 메모리(1)와, 메모리(1)에 접속된 명령 인출부[3: instruction-fetch unit]와, 메모리(1) 및 명령 인출부(3)에 접속된 명령 실행부(6)와, 명령 실행부(6)에 접속된 레지스터 제어부(8)와, 명령 인출부(3), 명령 실행부(6) 및 레지스터 제어부(8)에 접속된 인터럽션 제어부[9: interruption control unit]를 구비한다.
명령 인출부(3)는 명령 판독 제어부(11)와, 프로그램 카운터[13: PC]와, 명령 레지스터[15: IR]를 구비한다. 명령 판독 제어부(11)는 메모리(1)에 접속되고, 프로그램 카운터(13)는 명령 판독 제어부(11)에 접속된다. 명령 레지스터(15)는 명령 판독 제어부(11)에 접속된다.
명령 실행부(6)는 명령 디코드부(17)와, 로드 명령 실행부(19)와, 스토어 명령 실행부(21)와, 연산 명령 실행부(22)와, 명령 실행부(23)와, 부동 소수점 로드 명령 실행부(25)와, 부동 소수점 스토어 명령 실행부(27)와, 부동 소수점 연산 명령 실행부(29)를 구비한다.
명령 디코드부(17)는 명령 레지스터(15)에 접속되고, 로드 명령 실행부(19)는 메모리(1) 및 명령 디코드부(17)에 접속된다. 스토어 명령 실행부(21)는 명령 디코드부(17) 및 범용 레지스터[37: GR]에 접속된다. 연산 명령 실행부(22)는 명령 디코드부(17), 범용 레지스터(37) 및 조건 레지스터(30)에 접속된다. 명령 실행부(23)는 명령 디코드부(17), 범용 레지스터(37) 및 레지스터(31, 33 및 35)에 접속된다.
부동 소수점 로드 명령 실행부(25)는 메모리(1) 및 명령 디코드부(17)에 접속된다. 부동 소수점 스토어 명령 실행부(27) 및 부동 소수점 연산 명령 실행부(29)는 명령 디코드부(17) 및 부동 소수점 레지스터(39)에 접속된다.
레지스터 제어부(8)는 조건 레지스터(30), EPCR 레지스터(31), EPSR 레지스터(33), PSR 레지스터, 범용 레지스터(37) 및 부동 소수점 레지스터(39)를 구비한다. 조건 레지스터(30)는 연산 명령 실행부(22), 명령 실행부(23) 및 부동 소수점 연산 명령 실행부(29)에 접속된다. EPCR 레지스터(31), EPSR 레지스터(33) 및 PSR 레지스터(35)는 모두 인터럽션 제어 회로(40)에 접속된다. 범용 레지스터(37)는 로드 명령 실행부(19), 스토어 명령 실행부(21) 및 명령 실행부(23)에 접속된다. 부동 소수점 레지스터(39)는 부동 소수점 로드 명령 실행부(25), 부동 소수점 스토어 명령 실행부(27) 및 부동 소수점 연산 명령 실행부(29)에 접속된다.
인터럽션 제어부(9)는 인터럽션 제어 회로(40)를 구비한다. 인터럽션 제어 회로(40)는 명령 판독 제어부(11), 프로그램 카운터(13), 로드 명령 실행부(19), 스토어 명령 실행부(21), 연산 명령 실행부(22), 명령 실행부(23), 부동 소수점 로드 명령 실행부(25), 부동 소수점 스토어 명령 실행부(27) 및 부동 소수점 연산 명령 실행부(29)에 접속된다.
상기한 바와 같은 구성을 갖는 컴퓨터에 있어서, 명령 인출부(3)는 프로그램 카운터(13)가 지시하는 명령을 메모리(1)로부터 판독하여, 명령 레지스터(15)를 통해 명령 실행부(6)로 이들 명령을 공급한다. 명령 판독 제어부(11)는 명령 실행부(6) 또는 인터럽션 처리를 행하는 인터럽션 제어 회로(40)로부터 분기 목적지 어드레스가 공급된 경우 분기 목적지 어드레스를 프로그램 카운터(13)에 저장한다. 그 이외의 경우에는 판독해야 할 명령의 어드레스를 지시하는 프로그램 카운터(13)를 증가시킴으로써, 다음 명령을 명령 실행부(6)에 공급한다. 명령을 인출하는 동안 인터럽션(interruption)을 검출한 경우에는 명령 판독 제어부(11)는 인터럽션 제어 회로(40)에 인터럽션 신호(interruption signal)를 공급한다.
명령 디코드부(17)는 명령 레지스터(15)로부터 공급된 명령을 디코딩한다. 명령 디코드부(17)는 로드 명령 실행부(19)에 로드 명령을, 스토어 명령 실행부(21)에 스토어 명령을, 연산 명령 실행부(22)에 연산 명령을, 부동 소수점 로드 명령 실행부(25)에 부동 소수점 로드 명령을, 부동 소수점 스토어 명령 실행부(27)에 부동 소수점 스토어 명령을, 부동 소수점 연산 명령 실행부(29)에 부동 소수점 연산 명령을, 명령 실행부(23)에 인터럽션 복귀 명령(interruption return instruction)과 같은 다른 명령을 공급한다.
로드 명령 실행부(19)는 로드 명령이 공급되었을 때 범용 레지스터(37)로부터 판독된 데이터에 기초하여 얻어진 실효 어드레스(effective address)에 대응하는 메모리(1)의 어드레스로부터 데이터를 판독하여, 로드된 데이터를 범용 레지스터(37)에 기입한다. 로드 명령을 실행하는 동안 인터럽션을 검출한 경우에는 인터럽션 신호가 인터럽션 제어 회로(40)에 공급된다.
마찬가지로, 스토어 명령 실행부(21)는 스토어 명령이 공급되었을 때 범용 레지스터(37)로부터 판독된 데이터에 기초하여 얻어진 실효 어드레스에 대응하는 범용 레지스터(37)의 어드레스로부터 데이터를 판독하여, 그 데이터를 실효 어드레스에 대응하는 메모리(1)의 어드레스에 기입한다. 스토어 명령을 실행하는 동안 인터럽션을 검출한 경우에는 인터럽션 신호가 인터럽션 제어 회로(40)에 공급된다.
연산 명령 실행부(22)는 연산 명령에 대해 범용 레지스터(37)로부터 판독된 데이터에 기초하여 연산을 실행하고, 그 연산 결과를 범용 레지스터(37)에 기입한다. 연산 명령 실행부(22)는 연산 명령에 대해 범용 레지스터(37)로부터 판독된 두 개의 값을 비교하여, 두 개의 값이 동일한 경우에는 참 상태(true state)를 나타내 는 데이터가 조건 레지스터(30)에 저장되고, 두 개의 값이 동일하지 않은 경우에는 거짓 상태(false state)를 나타내는 데이터가 조건 레지스터(30)에 저장된다.
부동 소수점 로드 명령 실행부(25)는 부동 소수점 로드 명령에 대해 범용 레지스터(37)로부터 판독된 데이터에 기초하여 얻어진 실효 어드레스에 대응하는 메모리(1)의 어드레스로부터 데이터를 판독하여, 로드된 데이터를 부동 소수점 레지스터(39)에 저장한다. 부동 소수점 로드 명령을 실행하는 동안 인터럽션을 검출한 경우에는 인터럽션 신호가 인터럽션 제어 회로(40)에 공급된다.
부동 소수점 스토어 명령이 공급되었을 때, 부동 소수점 스토어 명령 실행부(27)는 범용 레지스터(37)로부터 판독된 데이터에 기초하여 얻어진 실효 어드레스에 대응하는 부동 소수점 레지스터(39)의 어드레스로부터 데이터를 판독하여, 그 데이터를 실효 어드레스에 대응하는 메모리(1)의 어드레스에 기입한다. 부동 소수점 스토어 명령을 실행하는 동안 인터럽션을 검출한 경우에는 인터럽션 신호가 인터럽션 제어 회로(40)에 공급된다.
부동 소수점 연산 명령 실행부(29)는 부동 소수점 연산 명령에 대해 부동 소수점 레지스터(39)로부터 판독된 데이터에 기초하여 연산을 실행하여, 그 연산 결과를 부동 소수점 레지스터(39)에 기입한다. 부동 소수점 연산 명령 실행부(29)는 부동 소수점 연산 명령에 대해 부동 소수점 레지스터(39)로부터 판독된 두 개의 값을 비교하여, 두 개의 값이 동일한지 여부에 따라 참 상태 또는 거짓 상태를 나타내는 데이터가 조건 레지스터(30)에 저장된다.
명령 실행부(23)는 명령 디코드부(1)로부터 분기 명령(branch instruction) 이 공급되었을 때 분기 성립시에 분기 목적지 어드레스를 프로그램 카운터(13)에 공급한다. 명령 디코드부(17)로부터 조건 분기 명령이 공급되었을 때, 조건 레지스터(30)내에 저장된 값이 참 상태를 나타내는 경우에는 분기 목적지 어드레스를 프로그램 카운터(13)에 공급한다. 마찬가지로, 인터럽션 복귀 명령이 공급되었을 때, 인터럽션 발생전의 동작 상태를 나타내는 데이터가 PSR 레지스터(35)에 저장된다. 또한, EPCR 레지스터(31)로부터 복귀 목적지의 명령 어드레스를 판독하여, 분기 목적지 어드레스로서 프로그램 카운터(13)에 공급한다. 상기 명령을 실행하는 동안 인터럽션을 검출한 경우에는 인터럽션 신호가 인터럽션 제어 회로(40)에 공급된다.
조건 레지스터(30)는 상기한 바와 같이 비교 명령(comparison instruction)의 결과에 따라 참 상태 또는 거짓 상태를 나타내는 데이터를 조건 레지스터(30)내에 저장한다. 조건 레지스터(30)의 내용은 조건 분기 명령에 따라 참조된다. EPCR 레지스터(31)는 인터럽션으로부터 복귀시에 실행될 명령의 어드레스를 EPCR 레지스터(31)내에 저장한다. 이 어드레스는 인터럽션 개시시에 설정된다. PSR 레지스터(35)는 동작 상태를 나타내는 데이터를 PSR 레지스터(35)내에 저장한다. EPSR 레지스터(33)는 인터럽션 발생시에 설정된 인터럽션 발생전의 동작 상태를 나타내는 데이터를 EPSR 레지스터(33)내에 저장한다.
인터럽션 제어 회로(40)는 명령 인출부(3) 또는 명령 실행부(6)로부터 공급된 인터럽션 신호에 대해 인터럽션으로부터 복귀시에 실행될 명령의 어드레스를 EPCR 레지스터(31)에, 인터럽션 발생전의 동작 상태를 나타내는 데이터를 EPSR 레지스터(33)에, 발생한 인터럽션에 대응하는 동작 상태를 나타내는 데이터를 PSR 레 지스터(35)에 저장한다. 또한, 발생한 인터럽션에 대응하는 분기 목적지 어드레스는 명령 인출부(3)에 공급된다.
상기한 바와 같이, 컴퓨터의 통상 동작 또는 초기 동작 동안, 명령 인출부(3)는 프로그램 카운터(13)에 의해 지시되는 명령을 판독하여, 그 명령을 명령 실행부(6)에 공급한다.
인터럽션이 발생하였을 때, 인터럽션 제어 회로(40)는 명령 인출부(3) 또는 명령 실행부(6)로부터 공급되는 인터럽션 신호에 따라 각각의 데이터를 EPCR 레지스터(31), EPSR 레지스터(33) 및 PSR 레지스터(35)에 저장한다. 또한, 인터럽션 제어 회로(40)는 발생한 인터럽션에 따라 분기 목적지 어드레스를 명령 인출부(3)에 공급한다. 명령 인출부(3)는 인터럽션 제어부(9)로부터 공급된 분기 목적지 어드레스에 따라 명령을 판독하여, 그 명령을 명령 실행부(6)에 공급한다. 그후, 상기 통상 동작의 경우와 마찬가지로 동작한다.
인터럽션으로부터 복귀하였을 때, 명령 실행부(6)가 인터럽션 복귀 명령을 실행함으로써, EPSR 레지스터(33)의 데이터를 PSR 레지스터(35)에 기입한다. 또한, 명령 실행부(6)는 EPCR 레지스터(31)로부터 데이터를 판독하여, 그 데이터를 분기 목적지 어드레스로서 명령 인출부(3)에 공급한다. 명령 인출부(3)는 명령 실행부(6)로부터 공급된 분기 목적지 어드레스에 기초하여 명령을 판독하여, 그 명령을 명령 실행부(6)에 공급한다. 그후 통상 동작 및 루틴 동작이 실행된다.
다음에, 상기 컴퓨터에 의한 컨텍스트 전환 동작을 기술한다.
도 2는 컨텍스트 전환 동작에 대한 플로우차트이다.
도 2에 도시하는 바와 같이, 단계 S1에 있어서, 현 컨텍스트(current context)가 현 컨텍스트에 대응하는 메모리(1)상의 컨텍스트 영역으로 퇴거된다. 단계 S2에 있어서, 신 컨텍스트(new context)가 신 컨텍스트에 대응하는 메모리(1)상의 컨텍스트 영역으로부터 복원된다. 컨텍스트 전환 절차가 종료된다.
이상 기술한 바가 종래기술에 있어서의 컴퓨터의 구성 및 동작의 개요를 기술한 것이다. 최근 및 일반적인 경향의 컴퓨터에 있어서의 고속화나 고성능화에 수반되는, 컴퓨터내의 범용 레지스터의 갯수는 증가하고 있고, 하드웨어 자원의 정보량도 현저하게 증가하고 있는 상황에 있다. 이러한 상황에 있어서, 상기한 바와 같이 컨텍스트 전체를 예외없이 퇴거하고, 또한 복원하는 경우 무시할 수 없을 정도로 긴 처리 시간을 필요로 하기 때문에, 컴퓨터의 성능을 향상시킬 때 장해가 된다고 하는 문제점이 있다.
따라서, 컨텍스트 전환을 고속화하여 복수의 프로그램의 병렬적인 처리의 효율을 개선한 컴퓨터와 그 컴퓨터를 제어하는 방법을 필요로 하고 있다.
따라서, 본 발명의 일반적인 목적은 종래기술의 제한 및 단점에 의해 야기되는 하나 이상의 문제점을 상당히 제거한 컴퓨터 및 그 컴퓨터를 제어하는 방법을 제공하는 것이다.
본 발명의 다른 목적 및 보다 특정한 목적은 컨텍스트 전환을 고속화하여 복수의 프로그램의 병렬적인 처리의 효율을 개선한 컴퓨터와 그 컴퓨터를 제어하는 방법을 제공하는 것이다.
본 발명의 상기한 목적은, 복수의 영역으로 분할된 하드웨어 자원을 구비하고, 복수의 프로그램을 시분할 방식(time-division fashion)으로 병렬 처리하는 컴퓨터로서, 제2 프로그램을 실행할 때에 있어서 필요로 하게 되는 상기 복수의 영역 중 하나의 영역이 제1 프로그램을 실행하기 위해서도 사용되고 있는 경우에는 제1 프로그램을 식별하는 식별 정보를 기억시키는 동시에, 상기 복수의 영역 중 하나의 영역에 저장된 정보를 퇴거시키는 퇴거 수단과, 제2 프로그램의 실행이 중단(halt) 또는 종료(end)되었을 때에는 퇴거 수단에 의해 퇴거된 정보를 식별 정보에 기초하여 상기 복수의 영역 중 하나의 영역으로 복원하는 복원 수단을 구비하는 컴퓨터를 제공하는 것에 의해 달성된다.
상기한 컴퓨터에 따르면, 복수의 영역 중 하나의 영역에 저장된 정보가 퇴거되어진 후 식별 정보에 따라 복원되기 때문에 컨텍스트 전환의 고속화를 달성할 수 있다.
본 발명의 또 다른 목적 및 또 다른 특징은 첨부된 도면을 참조하여 상세히 설명하는 이하의 상세한 설명으로부터 명백해질 것이다.
(제1 원리)
이하에 있어서, 제1 원리에 따른 본 발명의 실시예는 첨부된 도면을 참조하여 설명된다. 이들 도면 전체에 있어서, 동일 참조부호는 동일 또는 상당 요소를 나타낸다.
이하의 설명에 있어서는, 컨텍스트 대상으로서 지원하는 하드웨어 자원은 복 수의 영역으로 분할되고, 각각의 분할 영역은 "컨텍스트 블럭(context block)"이라고 불리운다. 복수의 컨텍스트 블럭 중 기본이 되는 하나 또는 그 이상의 사전결정된 컨텍스트 블럭은 "기본 컨텍스트 블럭(basic context block)"이라고 불리운다.
(제1 실시예)
도 3은 본 발명의 제1 실시예에 따른 컴퓨터의 구성을 도시하는 블럭도이다. 도 3에 도시된 컴퓨터에 있어서의 컨텍스트 대상은 이하에 제공되는 표 2에 도시된다.
컨텍스트 블럭 번호 레지스터명 기본 컨텍스트 블럭
0 EPCR EPSR COND GR ×
1 FR
표 2에 도시되어 있는 컨텍스트 블럭 번호가 0인 레지스터는 기본 컨텍스트 블럭이 저장된다.
도 3에 도시하는 바와 같이, 본 발명의 실시예 1에 따른 컴퓨터는 도 1에 도시된 종래기술의 컴퓨터에 대해서, 명령 실행부(400)는 제1 검출부(405 내지 408)와, 제2 검출부(409 및 410)와, 제3 검출부(411)와, 전환 대상 컨텍스트 블럭 판독 명령 실행부(413)와, 컨텍스트 블럭 관리부 판독 명령 실행부(415)와, 컨텍스트 블럭 관리부 기입 명령 실행부(417)를 구비하고, 또한 레지스터 제어부(402)는 컨텍스트 블럭 식별 레지스터(419)와 컨텍스트 블럭 관리부(421)를 구비하는 점이 상이하다. 컨텍스트 관리부(421)는 컨텍스트 관리부 엔트리(423 및 425)를 구비한다.
또한, 인터럽션 제어부(404)는 컨텍스트 사용 불가 인터럽션 제어부(427)를 구비하는 점이 상이하다.
이 구성에 있어서, 제1 검출부(405 내지 408)의 입력 단자는 명령 디코드부(17) 및 컨텍스트 관리부 엔트리(423)에 접속되고, 제1 검출부(405 내지 408)의 출력 단자는 컨텍스트 사용 불가 인터럽션 제어부(427)에 접속된다. 또한, 제1 검출부(405)의 또 다른 출력 단자는 로드 명령 실행부(19)에 접속되고, 제1 검출부(406)의 또 다른 출력 단자는 스토어 명령 실행부(21)에 접속된다. 또한, 제1 검출부(407)의 또 다른 출력 단자는 연산 명령 실행부(22)에 접속되고, 제1 검출부(408)의 또 다른 출력 단자는 명령 실행부(23)에 접속된다.
제2 검출부(409 및 410)의 입력 단자는 명령 디코드부(17) 및 컨텍스트 관리부 엔트리(423 및 425)에 접속되고, 제2 검출부(409 및 410)의 출력 단자는 컨텍스트 사용 불가 인터럽션 제어부(427)에 접속된다. 제2 검출부(409)의 또 다른 출력 단자는 부동 소수점 로드 명령 실행부(25)에 접속되고, 제2 검출부(410)의 또 다른 출력 단자는 부동 소수점 스토어 명령 실행부(27)에 접속된다. 제3 검출부(411)의 입력 단자는 명령 디코드부(17) 및 컨텍스트 관리부 엔트리(425)에 접속되고, 제3 검출부(411)의 출력 단자는 컨텍스트 사용 불가 인터럽션 제어부(427) 및 부동 소수점 연산 명령 실행부(29)에 접속된다.
전환 대상 컨텍스트 블럭 판독 명령 실행부(413)의 입력 단자는 명령 디코드부(17) 및 컨텍스트 블럭 식별 레지스터(419)에 접속되고, 전환 대상 컨텍스트 블럭 판독 명령 실행부(413)의 출력 단자는 범용 레지스터(37) 및 인터럽션 제어 회 로(40)에 접속된다.
컨텍스트 블럭 관리부 판독 명령 실행부(415)의 입력 단자는 명령 디코드부(17) 및 컨텍스트 관리부 엔트리(423)에 접속되고, 컨텍스트 블럭 관리부 판독 명령 실행부(415)의 출력 단자는 범용 레지스터(37) 및 인터럽션 제어 회로(40)에 접속된다. 컨텍스트 블럭 관리부 기입 명령 실행부(417)의 입력 단자는 명령 디코드부(17) 및 범용 레지스터(37)에 접속되고, 컨텍스트 블럭 관리부 기입 명령 실행부(417)의 출력 단자는 범용 레지스터(37), 컨텍스트 관리부 엔트리(423 및 425) 및 인터럽션 제어 회로(40)에 접속된다.
컨텍스트 블럭 식별 레지스터(419)의 입력 단자는 컨텍스트 사용 불가 인터럽션 제어부(427)에 접속되고, 컨텍스트 블럭 식별 레지스터(419)의 출력 단자는 전환 대상 컨텍스트 블럭 판독 명령 실행부(413)에 접속된다. 컨텍스트 사용 불가 인터럽션 제어부(427)의 입력 단자는 프로그램 카운터(13) 및 PSR 레지스터(35)에 접속되고, 컨텍스트 사용 불가 인터럽션 제어부(427)의 출력 단자는 EPCR 레지스터(31), EPSR 레지스터(33) 및 PSR 레지스터(35)에 접속된다.
이하에 있어서, 상기한 바와 같은 구성을 갖는 컴퓨터의 동작이 설명된다.
명령 디코드부(17)는 로드 명령을 제1 검출부(405)에, 스토어 명령을 제1 검출부(406)에, 연산 명령 및 비교 명령을 제1 검출부(407)에 공급한다. 또한, 제1 검출부(407)는 분기 명령, 조건 분기 명령 및 인터럽션 복귀 명령을 수신한다.
또한, 명령 디코드부(17)는 부동 소수점 로드 명령을 제2 검출부(409)에, 부동 소수점 스토어 명령을 제2 검출부(410)에 공급한다. 제3 검출부(411)는 부동 소 수점 연산 명령 및 부동 소수점 비교 명령을 수신한다.
또한, 명령 디코드부(17)는 전환 대상 컨텍스트 블럭 판독 명령을 전환 대상 컨텍스트 블럭 판독 명령 실행부(413)에, 컨텍스트 블럭 관리부 판독 명령을 컨텍스트 블럭 관리부 판독 명령 실행부(415)에, 컨텍스트 블럭 관리부 기입 명령을 컨텍스트 블럭 관리부 기입 명령 실행부(417)에 공급한다.
제1 검출부(405 내지 408)는 각각 공급된 명령의 실행에 있어서 참조 또는 변경되는 레지스터가 현 컨텍스트(current context)로서 지정되어 있는지의 여부를 판정한다. 컨텍스트 관리부 엔트리(423)내의 E 필드에 "0"의 값이 저장되고, 공급된 명령이 범용 레지스터(37)를 참조 또는 변경하는 경우에는, 인터럽션 신호가 컨텍스트 사용 불가 인터럽션 제어부(427)에 공급된다.
제1 검출부(405 내지 408)는 실질적으로 서로 동일한 구성을 갖는다. 도 8은 제1 검출부(405)의 구성을 도시하는 블럭도이다. 도 8에 도시하는 바와 같이, 제1 검출부(405)는 GR 검출 회로(429) 및 논리 회로(431)를 구비한다. GR 검출 회로(429)는 실행될 로드 명령 동안에 범용 레지스터(37)를 참조 또는 변경할 필요가 있는지 여부를 판정한다.
명령 디코드부(17)로부터 공급된 로드 명령은 그대로 로드 명령 실행부(19)로 출력되는 동시에, GR 검출 회로(429)에 공급된다. GR 검출 회로(429)로부터 출력된 신호와 더불어 컨텍스트 관리부 엔트리(423)내의 E 필드의 값이 논리 회로(431)에 공급된다. 논리 회로(431)의 출력 신호는 로드 명령 실행부(19) 및 컨텍스트 사용 불가 인터럽션 제어부(427)에 공급된다.
제2 검출부(409 및 410)는 각각 실질적으로 동일한 구성을 갖고, 공급된 명령의 실행에 있어서 참조 또는 변경되는 레지스터가 현 컨텍스트로서 지정되어 있는지 여부를 판정한다. 컨텍스트 관리부 엔트리(423)내의 E 필드에 "0"의 값이 저장되고, 공급된 명령이 범용 레지스터(37)를 참조 또는 변경하는 경우에는, 인터럽션 신호가 컨텍스트 사용 불가 인터럽션 제어부(427)에 공급된다. 또한, 컨텍스트 관리부 엔트리(425)내의 E 필드에 "0"의 값이 저장되고, 공급된 명령이 부동 소수점 레지스터(39)를 참조 또는 변경하는 경우에는, 인터럽션 신호가 컨텍스트 사용 불가 인터럽션 제어부(427)에 공급된다.
도 9는 제2 검출부(409)의 구성을 도시하는 블럭도이다. 도 9에 도시하는 바와 같이, 제2 검출부(409)는 GR 검출 회로(429)와 FR 검출 회로(435)와 논리 회로(431 및 432)와 OR 회로(437)를 구비한다. FR 검출 회로(435)는 실행될 부동 소수점 로드 명령이 부동 소수점 레지스터(39)를 참조 또는 변경할 필요가 있는지 여부를 판정한다.
명령 디코드부(17)로부터 공급된 부동 소수점 로드 명령은 제2 검출부(409)를 통해 그대로 부동 소수점 로드 명령 실행부(25)로 출력되는 동시에, GR 검출 회로(429) 및 FR 검출 회로(435)에 공급된다. GR 검출 회로(429)로부터 출력된 신호와 더불어 컨텍스트 관리부 엔트리(423)내의 E 필드의 값이 논리 회로(431)에 공급된다. 또한, FR 검출 회로(435)로부터 출력된 신호와 더불어 컨텍스트 관리부 엔트리(425)내의 E 필드의 값이 논리 회로(432)에 공급된다.
논리 회로(431 및 432)의 출력 신호 양쪽 모두는 OR 회로(437)에 공급된다. OR 회로(437)의 출력 신호는 컨텍스트 사용 불가 인터럽션 제어부(427) 및 부동 소수점 로드 명령 실행부(25)에 제공된다.
제3 검출부(411)는 공급된 명령의 실행에 있어서 참조 또는 변경되는 레지스터가 현 컨텍스트로 되어 있는지 여부를 판정한다. 컨텍스트 관리부 엔트리(425)내의 E 필드에 "0"의 값이 저장되고, 부동 소수점 레지스터(39)를 참조 또는 변경하는 명령이 공급된 경우에는, 인터럽션 신호가 컨텍스트 사용 불가 인터럽션 제어부(427)에 공급된다.
도 10은 제2 검출부(411)의 구성을 도시하는 블럭도이다. 제3 검출부(411)는 FR 검출 회로(435) 및 논리 회로(432)를 구비한다. 명령 디코드부(17)로부터 공급된 부동 소수점 로드 명령은 제3 검출부(411)를 통해 그대로 부동 소수점 연산 명령 실행부(29)로 출력되는 동시에, FR 검출 회로(435)에 공급된다. FR 검출 회로(435)로부터 출력된 신호와 더불어 컨텍스트 관리부 엔트리(425)내의 E 필드의 값이 논리 회로(432)에 제공된다. 논리 회로(432)의 출력 신호는 부동 소수점 연산 명령 실행부(29) 및 컨텍스트 사용 불가 인터럽션 제어부(427)에 공급된다.
전환 대상 컨텍스트 블럭 판독 명령 실행부(413)는 명령 디코드부(17)로부터 공급된 전환 대상 컨텍스트 블럭 판독 명령에 따라 컨텍스트 블럭 식별 레지스터[419: CTXTID]로부터 컨텍스트 블럭 식별 정보를 판독하여, 그 정보를 범용 레지스터(37)에 저장한다. 전환 대상 컨텍스트 블럭 판독 명령을 실행하는 동안 인터럽션이 검출된 경우에는, 인터럽션 신호가 인터럽션 제어 회로(40)로 전송된다.
컨텍스트 블럭 식별 레지스터(419)는 명령을 실행하는 동안에 참조 또는 변경이 불가능한 컨텍스트 블럭을 지시하는 컨텍스트 블럭 식별 정보를 저장한다. 이 식별 정보는 컨텍스트 사용 불가 인터럽션이 발생한 때에 컨텍스트 사용 불가 인터럽션 제어부(427)에 의해 저장된다.
컨텍스트 블럭 관리부 판독 명령 실행부(415)는 명령 디코드부(17)로부터 공급된 컨텍스트 블럭 관리부 판독 명령에 따라 컨텍스트 관리부 엔트리(423) 또는 컨텍스트 관리부 엔트리(425)로부터 엔트리에 저장된 엔트리 정보를 판독하여, 그 정보를 범용 레지스터(37)에 저장한다. 컨텍스트 블럭 관리부 판독 명령을 실행하는 동안 인터럽션이 검출된 경우에는, 인터럽션 신호가 인터럽션 제어 회로(40)로 전송된다.
컨텍스트 블럭 관리부 기입 명령 실행부(417)는 명령 디코드부(17)로부터 공급된 컨텍스트 블럭 관리부 기입 명령에 따라 범용 레지스터(37)로부터 정보를 판독하여, 그 정보를 컨텍스트 관리부 엔트리(423) 또는 컨텍스트 관리부 엔트리(425)에 기입한다. 컨텍스트 블럭 관리부 기입 명령을 실행하는 동안 인터럽션이 검출된 경우에는, 인터럽션 신호가 인터럽션 제어 회로(40)로 전송된다.
컨텍스트 관리부 엔트리(423 및 425)는 E 필드 및 컨텍스트 필드(CTXT#)를 구비한다. E 필드는 대응하는 하드웨어 자원이 사용 가능한지 여부를 나타낸다. E 필드에 "0"의 값이 저장된 경우에는, 대응하는 하드웨어 자원이 사용 불가능한 것으로, 현 컨텍스트를 포함하고 있지 않은 것을 의미한다. E 필드에 "1"의 값이 저장된 경우에는, 대응하는 하드웨어 자원이 사용 가능한 것으로, 현 컨텍스트를 포 함하고 있는 것을 의미한다. 컨텍스트 필드(CTXT#)에는 대응하는 컨텍스트 블럭에 현재 저장된 컨텍스트를 지시하는 번호[이하에 있어서, "컨텍스트 번호(context number)"라고 칭함]가 저장되어 있다.
컨텍스트 사용 불가 인터럽션 제어부(427)는 각각 공급되는 인터럽션 신호에 따라 인터럽션으로부터 복원시에 실행될 명령의 어드레스를 EPCR 레지스터(31)에, 인터럽션 발생전 컴퓨터의 동작 상태를 EPSR 레지스터(33)에, 발생한 인터럽션에 대응하는 컴퓨터의 동작 상태를 PSR 레지스터(35)에, 전환되어야 할 컨텍스트 블럭의 식별을 컨텍스트 블럭 식별 레지스터(419)에 저장한다. 발생한 인터럽션에 대응하는 분기 목적지의 어드레스는 프로그램 카운터(13)에 공급된다.
도 4는 도 3에 도시된 제1 실시예에 관한 컴퓨터에 의해 수행되는 컨텍스트 전환 동작을 도시하는 플로우차트이다. 이하에 있어서, 이 플로우차트를 참조하여 컴퓨터에 의해 수행되는 컨텍스트 전환 동작의 개요가 개시되어 있다. 단계 S1에 있어서, 현 컨텍스트의 기본 블럭이 현 컨텍스트에 대응하는 메모리(1)상의 컨텍스트 영역으로 퇴거된다. 단계 S2에 있어서, 신 컨텍스트의 기본 컨텍스트 블럭이 신 컨텍스트에 대응하는 메모리(1)상의 컨텍스트 영역으로부터 복원된다.
단계 S3에 있어서, 상기 신 컨텍스트의 기본 컨텍스트 블럭에 대응하는 하드웨어 자원이 사용 가능하게 된다. 단계 S4에 있어서, 상기 신 컨텍스트의 기본 컨텍스트의 컨텍스트 번호가 컨텍스트 블럭 관리부(421)에 저장된다. 단계 S5에 있어서, 상기 신 컨텍스트의 기본 블럭에 대응하지 않는 하드웨어 자원은 사용 불가능하게 된다. 그후 컨텍스트 전환 동작의 절차가 종료된다.
이하에 있어서, 또한 상기 컨텍스트 전환 동작이 기술되어 있다. 도 5는 컨텍스트 전환 동작을 도시하는 플로우차트이다. 도 5의 플로우차트에 있어서, 단계 S1 및 단계 S2는 도 4에 도시된 단계 S1 및 단계 S2와 동일하다. 단계 S3에 있어서, "1"의 값이 컨텍스트 블럭 관리부(421)의 신 컨텍스트의 기본 컨텍스트 블럭에 대응하는 E 필드에 저장된다.
단계 S4에 있어서, 신 컨텍스트의 컨텍스트 번호가 컨텍스트 블럭 관리부(421)에 포함되어 있는 신 컨텍스트의 기본 컨텍스트 블럭에 대응하는 컨텍스트 필드에 저장된다. 단계 S5에 있어서, "0"의 값이 컨텍스트 블럭 관리부(421)에 포함되어 있는 신 컨텍스트의 기본 컨텍스트 블럭에 대응하지 않는 E 필드에 저장된다. 그후 컨텍스트 전환 동작의 절차가 종료된다.
도 6은 원하는 컨텍스트가 사용 불가능할 때 도 3에 도시된 제1 실시예의 컴퓨터에 의해 수행되는 인터럽션 동작을 도시하는 플로우차트이다. 이하에 이 인터럽션 동작은 도 6에 도시된 플로우차트를 참조하여 기술된다. 이 인터럽션 동작은, 예를 들어 인터럽션 처리 프로그램을 실행함으로써 수행된다.
단계 S1에 있어서, 전환될 컨텍스트 블럭이 확인된다. 단계 S2에 있어서, 전환될 컨텍스트 블럭의 컨텍스트 번호가 구 컨텍스트 번호(old context number)로서 확인된다. 단계 S3에 있어서, 전환될 컨텍스트 블럭이 상기 구 컨텍스트 번호에 대응하는 메모리(1)상의 컨텍스트 영역으로 퇴거된다. 단계 S4에 있어서, 신 컨텍스트의 기본 컨텍스트 블럭의 컨텍스트 번호가 현 컨텍스트 번호로서 얻어진다. 단계 S5에 있어서, 전환될 컨텍스트 블럭이 현 컨텍스트 번호에 대응하는 메모리(1)상의 컨텍스트 영역으로부터 판독된 후 복원된다.
단계 S6에 있어서, 전환될 컨텍스트 블럭의 컨텍스트 번호가 보유 데이터(retained data)로서 유지된다. 단계 S7에 있어서, 전환될 컨텍스트 블럭에 대응하는 하드웨어 자원이 사용 가능하게 된다. 그후 전환 동작의 절차가 종료된다.
이하에 있어서, 또한 원하는 컨텍스트가 사용되지 않을 때 수행되는 동작이 상세히 기술되어 있다. 도 7에 도시된 바와 같이, 단계 S1에 있어서, 인터럽션 처리 프로그램을 실행하는 데 최소한으로 필요한 컨텍스트가 퇴거된다. 단계 S2에 있어서, 컨텍스트 블럭 식별 정보가 컨텍스트 블럭 식별 레지스터(419)로부터 판독되어, 전환될 컨텍스트 블럭이 식별된다.
단계 S3에 있어서, 구 컨텍스트 번호가 컨텍스트 블럭 관리부(421)내의 전환될 컨텍스트 블럭에 대응하는 컨텍스트 필드로부터 판독된다. 단계 S4에 있어서, 전환될 컨텍스트 블럭이 구 컨텍스트 번호에 대응하는 메모리(1)상의 컨텍스트 영역으로 퇴거된다. 단계 S5에 있어서, 현 컨텍스트 번호가 컨텍스트 블럭 관리부(421)내의 신 컨텍스트의 기본 컨텍스트 블럭에 대응하는 컨텍스트 필드로부터 판독된다.
단계 S6에 있어서, 전환될 컨텍스트 블럭이 현 컨텍스트에 대응하는 메모리(1)상의 컨텍스트 영역으로부터 판독된 후 복원된다. 단계 S7에 있어서, 현 컨텍스트 번호가 컨텍스트 블럭 관리부(421)내의 전환될 컨텍스트 블럭에 대응하는 컨텍스트 필드에 저장된다.
단계 S8에 있어서, "1"의 값이 컨텍스트 블럭 관리부(421)내의 전환될 컨텍스트 블럭에 대응하는 E 필드에 저장된다. 단계 S9에 있어서, 인터럽션 처리 프로그램을 실행하는 데 최소한으로 필요한 컨텍스트가 복원된다. 단계 S10에 있어서, 인터럽션으로부터 복귀하기 위한 명령이 실행되어 컨텍스트 전환을 위한 인터럽션 동작으로부터 복귀한다. 그후 컨텍스트 전환 절차가 종료된다.
이와 같이, 제1 실시예의 컴퓨터는 복수의 영역으로 분할되어 있고, 복수의 실행될 프로그램을 시분할 방식으로 병렬 처리할 수 있는 하드웨어 자원을 채택하고 있다. 제1 검출부 내지 제3 검출부(405 내지 411) 중 어느 하나가 새로운 프로그램을 실행하는 데 필요로 하게 되는 하드웨어 자원이 이미 사용되고 있는 것을 발견하면, 컨텍스트 사용 불가 인터럽션 제어부(427)는 컨텍스트 사용 불가 인터럽션 동작을 개시한다.
이 때, 참조 또는 변경이 불가능한 컨텍스트 블럭을 지시하는 컨텍스트 블럭 식별 정보가 컨텍스트 블럭 식별 레지스터(419)에 저장되고, 퇴거된 블럭의 컨텍스트 번호 등이 컨텍스트 블럭 관리부(421)에 저장된다. 또한, 상기 새로운 정보를 실행하기 위해 필요로 하는 하드웨어 자원에 저장된 정보가 컨텍스트 블럭 식별 정보에 따라 메모리(1)에 퇴거된다.
상기 새로운 프로그램의 실행이 중단 또는 종료되었을 때, 원래의(구) 컨텍스트가 상기 퇴거된 컨텍스트의 컨텍스트 번호 등에 따라 상기 하드웨어 자원으로 복원된다. 그후, 원래의(구) 프로그램의 실행이 계속된다.
이에 따라서, 제1 실시예의 컴퓨터는 컨텍스트의 고속 전환을 달성하고, 특히 다중 컨텍스트의 전환에 적절하다. 따라서, 본 발명은 복수의 태스크 프로그램의 효율적인 실행을 달성한다.
또한, 인터럽션 처리는, 공급된 명령이 제1 검출부 내지 제3 검출부(405 내지 411) 중 하나에 의해 참조 또는 변경되는 레지스터가 현 컨텍스트가 아닌 것을 발견하였을 때에만 컨텍스트를 퇴거하기 위해 실행되어, 하드웨어 자원의 유효한 활용을 도모한다.
(제2 실시예)
도 11은 본 발명의 제2 실시예에 따른 컴퓨터의 구성을 도시하는 블럭도이다. 도 11에 도시된 컴퓨터에 있어서의 컨텍스트 대상이 이하에 제공되는 표 3에 도시된다.
컨텍스트 블럭 번호 레지스터명 기본 컨텍스트 블럭
0 EPCR EPSR COND GR의 하위 영역 0
1 GR의 상위 영역 -
2 FR -
표 3에 도시된 컨텍스트 블럭 번호가 0인 레지스터에는 기본 컨텍스트 블럭이 저장된다.
도 11에 도시하는 바와 같이, 본 발명의 제2 실시예에 따른 컴퓨터는 도 3에 도시된 제1 실시예와 마찬가지의 구성을 갖지만, 제1 검출부(405 내지 408) 대신에 제4 검출부(441 내지 444)를, 제2 검출부(409 및 410) 대신에 제5 검출부(445 및 446)를, 제3 검출부(411) 대신에 제6 검출부(447)를 구비하는 점에서 상이하다.
또한, 컨텍스트 관리부(450)는 컨텍스트 블럭 관리부(421) 대신에 컨텍스트 관리부 엔트리(449)를 구비하는 점에서 상이하다.
이 구성에 있어서, 제4 검출부(441 내지 444)의 입력 단자는 명령 디코드부(17) 및 컨텍스트 관리부 엔트리(423 및 425)에 접속되고, 제4 검출부(441 내지 444)의 출력 단자는 컨텍스트 사용 불가 인터럽션 제어부(427)에 접속된다. 제4 검출부(441)의 또 다른 출력 단자는 로드 명령 실행부(19)에 접속되고, 제4 검출부(442)의 또 다른 출력 단자는 스토어 명령 실행부(21)에 접속된다. 또한, 제4 검출부(443)가 또 다른 출력 단자는 연산 명령 실행부(22)에 접속되고, 제4 검출부(444)의 또 다른 출력 단자는 명령 실행부(23)에 접속된다.
제5 검출부(445 및 446)의 입력 단자는 명령 디코드부(17) 및 컨텍스트 관리부 엔트리(423, 425 및 449)에 접속되고, 제5 검출부(445 및 446)의 출력 단자는 컨텍스트 사용 불가 인터럽션 제어부(427)에 접속된다. 제5 검출부(445)의 또 다른 출력 단자는 부동 소수점 로드 명령 실행부(25)에 접속되고, 제5 검출부(446)의 또 다른 출력 단자는 부동 소수점 스토어 명령 실행부(27)에 접속된다. 제6 검출부(447)의 입력 단자는 명령 디코드부(17) 및 컨텍스트 관리부 엔트리(425 및 449)에 접속되고, 제6 검출부(447)의 출력 단자는 컨텍스트 사용 불가 인터럽션 제어부(427) 및 부동 소수점 연산 명령 실행부(29)에 접속된다.
도 11에 도시되고 상기한 바와 같은 구성을 갖는 컴퓨터는 도 3에 도시된 제1 실시예의 컴퓨터와 마찬가지로 동작한다. 이하에 있어서, 동작의 상이점이 기술된다.
명령 디코드부(17)는 로드 명령을 제4 검출부(441)에, 스토어 명령을 제4 검출부(442)에, 연산 명령 및 비교 명령을 제4 검출부(443)에 공급한다. 또한, 제4 검출부(444)는 분기 명령, 조건 분기 명령 및 인터럽션 복귀 명령을 수신한다.
또한, 명령 디코드부(17)는 부동 소수점 로드 명령을 제5 검출부(445)에 공급하고, 부동 소수점 스토어 명령을 제5 검출부(446)에 공급한다. 제5 검출부(447)는 부동 소수점 연산 명령 및 부동 소수점 비교 명령을 수신한다.
제4 검출부(441 내지 444)는 각각 공급된 명령의 실행에 있어서 참조 또는 변경되는 레지스터가 현 컨텍스트로서 지정되어 있는지 여부를 판정한다. "0"의 값이 컨텍스트 관리부 엔트리(423)내의 E 필드에 저장되고, 공급된 명령이 범용 레지스터(37)의 하위 영역을 참조 또는 변경하는 경우에는, 인터럽션 신호가 컨텍스트 사용 불가 인터럽션 제어부(427)에 공급된다. "0"의 값이 컨텍스트 관리부 엔트리(425)내의 E 필드에 저장되고, 공급된 명령이 범용 레지스터(37)의 상위 영역을 참조 또는 변경하는 경우에는, 인터럽션 신호가 컨텍스트 사용 불가 인터럽션에 공급된다.
제4 검출부(441 내지 444)는 각각 실질적으로 동일한 구성을 갖는다. 도 12는 제4 검출부(441)의 구성을 도시하는 회로도이다. 도 12에 도시하는 바와 같이, 제4 검출부(441)는 하위 GR 검출 회로(451), 상이 GR 검출 회로(453), 논리 회로(431 및 432) 및 검출 회로(451)를 구비한다. 하위 GR 검출 회로(451)는 로드 명령을 실행하는 동안 범용 레지스터(37)의 하위 영역을 참조 또는 변경할 필요가 있는지 여부를 판정한다. 상위 GR 검출 회로(451)는 로드 명령을 실행하는 동안 범 용 레지스터(37)의 상위 영역을 참조 또는 변경할 필요가 있는지 여부를 판정한다.
명령 디코드부(17)로부터 공급된 로드 명령은 그대로 로드 명령 실행부(19)로 출력되는 동시에, 하위 GR 검출 회로(451) 및 상위 GR 검출 회로(453)에 입력된다. 하위 GR 검출 회로(451)로부터 출력된 신호와 더불어 컨텍스트 관리부 엔트리(423)내의 E 필드의 값이 논리 회로(431)에 공급된다. 또한, 상위 GR 검출 회로(453)로부터 출력된 신호와 더불어 컨텍스트 관리부 엔트리(425)내의 E 필드의값이 논리 회로(432)에 제공된다. 논리 회로(431 및 432)의 출력 신호 양쪽 모두는 OR 회로(437)에 공급된다. OR 회로(437)의 출력 신호는 컨텍스트 사용 불가 인터럽션 제어부(427) 및 로드 명령 실행부919)에 제공된다.
제5 검출부(445 및 446)는 각각 실질적으로 동일한 구성을 갖고, 공급된 명령의 실행에 있어서 참조 또는 변경되는 레지스터가 현 컨텍스트로서 지정되어 있는지 여부를 판정한다. "0"의 값이 컨텍스트 관리부 엔트리(423)내의 E 필드에 저장되고, 공급된 명령이 범용 레지스터(37)의 하위 영역을 참조 또는 변경하는 경우에는, 인터럽션 신호가 컨텍스트 사용 불가 인터럽션 제어부(427)에 공급된다. 또한, "0"의 값이 컨텍스트 관리부 엔트리(425)내의 E 필드에 저장되고, 공급된 명령이 범용 레지스터(37)의 상위 영역을 참조 또는 변경하는 경우에는, 인터럽션 신호가 컨텍스트 사용 불가 인터럽션 제어부(427)에 공급된다. 또한, "0"의 값이 컨텍스트 관리부 엔트리(449)내의 E 필드에 저장되고, 공급된 명령이 부동 소수점 레지스터(39)를 참조 또는 변경하는 경우에는, 인터럽션 신호가 컨텍스트 사용 불가 인터럽션 제어부(427)에 공급된다.
도 13은 제5 검출부(445)의 구성을 도시하는 회로도이다. 도 13에 도시하는 바와 같이, 제5 검출부(445)는 하위 GR 검출 회로(451), 상위 GR 검출 회로(453), FR 검출 회로(435), 논리 회로(431 내지 433) 및 OR 회로(437)를 구비한다. FR 검출 회로(435)는 실행될 부동 소수점 로드 명령이 부동 소수점 레지스터(39)를 참조 또는 변경하는 데 필요로 하는지 여부를 판정한다.
명령 디코드부(17)로부터 공급된 부동 소수점 로드 명령은 제5 검출부(409)를 통해 그대로 부동 소수점 로드 명령 실행부(25)로 출력되는 동시에, 하위 GR 검출 회로(451), 상위 GR 검출 회로(453) 및 FR 검출 회로(435)에 공급된다. 하위 GR 검출 회로(451)로부터 출력된 신호와 더불어 컨텍스트 관리부 엔트리(423)내의 E 필드의 값이 논리 회로(431)에 공급된다. 상위 GR 검출 회로(453)로부터 출력된 신호와 더불어 컨텍스트 관리부 엔트리(425)내의 E 필드의 값이 논리 회로(432)에 공급된다. FR 검출 회로(435)로부터 출력된 신호와 더불어 컨텍스트 관리부 엔트리(449)내의 E 필드의 값이 논리 회로(433)에 제공된다.
논리 회로(431 내지 433)의 출력 신호 모두가 OR 회로(437)에 공급된다. OR 회로(437)의 출력 신호가 컨텍스트 사용 불가 인터럽션 제어부(427) 및 부동 소수점 로드 명령 실행부(25)에 제공된다.
제6 검출부(447)는 공급된 명령의 실행에 있어서 참조 또는 변경되는 레지스터가 현 컨텍스트로 되어 있는지 여부를 판정한다. "0"의 값이 컨텍스트 관리부 엔트리(449)내의 E 필드에 저장되고, 공급된 명령이 부동 소수점 레지스터(39)를 참조 또는 변경하는 경우에는, 인터럽션 신호가 컨텍스트 사용 불가 인터럽션 제어부(427)로 전송된다.
도 14는 제6 검출부(447)의 구성을 도시하는 회로도이다. 제6 검출부(447)는 FR 검출 회로(435) 및 논리 회로(432)를 구비한다. 명령 디코드부(17)로부터 공급된 부동 소수점 로드 명령은 제6 검출부(447)를 통해 그대로 부동 소수점 연산 명령 실행부(29)로 출력되는 동시에, FR 검출 회로(435)에 공급된다. FR 검출 회로(435)로부터 출력된 신호와 더불어 컨텍스트 관리부 엔트리(449)내의 E 필드의 값이 논리 회로(432)에 제공된다. 논리 회로(432)의 출력 신호가 부동 소수점 연산 명령 실행부(29) 및 컨텍스트 사용 불가 인터럽션 제어부(427)에 공급된다.
제2 실시예의 컴퓨터에 의해 수행되는 컨텍스트 전환 동작은 상기 제1 실시예의 컴퓨터에 의해 수행되는 컨텍스트 전환 동작과 동일하고, 도 4 및 도 5에 도시된 플로우차트에서 나타내어진 바와 같은 단계를 따른다. 마찬가지로, 원하는 컨텍스트가 이용 불가능할 때 수행된 인터럽션 동작은 상기 제1 실시예에서 도시된 도 6 및 도 7의 플로우차트에서 나타내어진 바와 같은 단계를 따른다.
이상과 같이, 제2 실시예의 컴퓨터는 상기 제1 실시예의 컴퓨터와 동일한 잇점을 갖고, 범용 레지스터(37)를 보다 효율적으로 사용하게 하는데, 보다 효율적인 범용 레지스터(37)의 사용은 컨텍스트 전환에 있어서 범용 레지스터(37)의 상위 영역과 하위 영역으로 구별하여 제어함으로써 컨텍스트 전환을 제어의 최소한의 범위내에서 달성된다.
(제3 실시예)
도 15는 본 발명의 제3 실시예에 따른 컴퓨터의 구성을 도시하는 블럭도이 다. 도 15에 도시된 바와 같이, 본 발명의 제3 실시예에 따른 컴퓨터는 도 3에 도시된 상기 제1 실시예의 컴퓨터와 동일한 구조를 갖지만, 컨텍스트 블럭 관리부(457)가 컨텍스트 블럭 관리부(421) 대신에 제공되는 어드레스 필드 PTR을 각각 갖는 컨텍스트 관리부 엔트리(458 및 459)를 구비하는 점에서 상이하다.
상기 어드레스 필드 PTR은 소정의 컨텍스트 블럭에 대응하는 메모리(1)상의 컨텍스트 영역을 지시하는 어드레스를 어드레스 필드 PTR내에 저장한다.
이하에 있어서, 제3 실시예의 컴퓨터에 의해 수행되는 컨텍스트 전환 동작이 기술되어 있다. 도 16은 제3 실시예의 컴퓨터에 의해 수행되는 컨텍스트 전환 동작을 도시하는 플로우차트이다.
단계 S1에 있어서, 현 컨텍스트의 기본 컨텍스트 블럭이 현 컨텍스트에 대응하는 메모리(1)상의 컨텍스트 영역으로 퇴거된다. 단계 S2에 있어서, 신 컨텍스트의 기본 컨텍스트 블럭이 신 컨텍스트에 대응하는 메모리(1)상의 컨텍스트 영역으로부터 복원된다. 단계 S3에 있어서, "1"의 값이 컨텍스트 관리부(457)내의 신 컨텍스트의 기본 컨텍스트 블럭에 대응하는 E 필드에 저장된다.
단계 S4에 있어서, 신 컨텍스트 영역의 어드레스가 컨텍스트 블럭 관리부(457)내의 신 컨텍스트의 기본 컨텍스트 블럭에 대응하는 어드레스 필드 PTR에 저장된다. 단계 S5에 있어서, "0"의 값이 컨텍스트 블럭 관리부(457)내의 신 컨텍스트의 기본 컨텍스트 블럭에 대응하지 않는 E 필드에 저장된다. 그후 컨텍스트 전환 동작의 절차가 종료된다.
이하에 있어서, 원하는 컨텍스트가 이용 불가능할 때 수행되는 인터럽션 동 작이 기술된다. 도 17은 원하는 컨텍스트가 이용 불가능할 때 수행되는 인터럽션 동작을 도시하는 플로우차트이다. 도 17에 도시하는 바와 같이, 인터럽션 처리 프로그램을 실행하는 데 최소한 필요한 컨텍스트가 퇴거된다. 단계 S2에 있어서, 컨텍스트 블럭 식별 정보가 컨텍스트 블럭 식별 레지스터[419: CTXTID]로부터 판독되어, 전환될 컨텍스트 블럭이 식별된다.
단계 S3에 있어서, 구 컨텍스트의 어드레스는 컨텍스트 블럭 관리부(457)내의 전환될 컨텍스트 블럭에 대응하는 어드레스 필드 PTR로부터 판독된다. 단계 S4에 있어서, 전환될 컨텍스트 블럭이 상기한 어드레스에 대응하는 메모리(1)상의 컨텍스트 영역으로 퇴거된다. 단계 S5에 있어서, 현 컨텍스트의 어드레스가 컨텍스트 블럭 관리부(457)내의 신 컨텍스트의 기본 컨텍스트 블럭에 대응하는 어드레스 필드 PTR로부터 판독된다.
단계 S6에 있어서, 전환될 컨텍스트 블럭이 현 컨텍스트에 대응하는 메모리(1)상의 컨텍스트 영역으로부터 판독된 후 복원된다. 단계 S7에 있어서, 현 컨텍스트에 대응하는 어드레스가 컨텍스트 블럭 관리부(457)내의 전환될 컨텍스트 블럭에 대응하는 어드레스 필드 PTR에 저장됨으로써, 현 컨텍스트 영역이 설정된다.
단계 S8에 있어서, "1"의 값이 컨텍스트 블럭 관리부(457)내의 전환될 컨텍스트 블럭에 대응하는 E 필드에 저장된다. 단계 S9에 있어서, 인터럽션 처리 프로그램을 실행하는 데 최소한으로 필요한 컨텍스트가 복원된다. 단계 S10에 있어서, 인터럽션으로부터 복원하기 위한 명령이 컨텍스트를 전환하기 위한 인터럽션 동작 으로부터 전환하기 위해 실행된다. 그후 컨텍스트 전환 절차가 종료된다.
상기한 바와 같이, 제3 실시예의 컴퓨터는 제1 실시예에 도시된 컴퓨터와 동일한 잇점을 갖는 동시에, 컨텍스트에 대응하는 어드레스에 기초하여 컨텍스트를 전환함으로써 컨텍스트 전환에 있어서의 자유도(latitude)를 높일 수 있다.
(제4 실시예)
도 18은 본 발명의 제4 실시예에 따른 컴퓨터의 구성을 도시하는 블럭도이다. 도 18에 도시된 바와 같이, 본 발명의 제5 실시예에 따른 컴퓨터는 도 11에 도시된 제2 실시예의 컴퓨터와 마찬가지의 구조를 갖지만, 컨텍스트 블럭 관리부(461)가 컨텍스트 관리부(450) 대신에, 어드레스 필드 PTR을 각각 갖는 컨텍스트 관리부 엔트리(458 내지 460)를 구비하는 점에서 상이하다.
도 18에 도시된 컴퓨터에 의해 수행되는 컨텍스트 전환 동작은 제3 실시예에 도시된 컴퓨터에 의해 수행되는 컨텍스트 전환 동작과 마찬가지로, 도 16에 도시된 플로우차트의 단계를 따른다. 마찬가지로, 원하는 컨텍스트가 사용 불가능할 때 수행되는 인터럽션 동작은 제3 실시예의 도 17에 도시된 플로우차트와 동일한 단계를 따른다.
이에 따라, 제4 실시예에 따른 컴퓨터는 제2 실시예에 도시된 컴퓨터와 동일한 잇점을 갖고, 또한 제3 실시예에 도시된 컴퓨터와 동일한 방식으로 컨텍스트 전환에 있어서의 자유도를 높일 수 있다.
(제5 실시예)
도 19는 본 발명의 제5 실시예에 따른 컴퓨터의 구성을 도시하는 블럭도이 다. 제5 실시예에 따른 컴퓨터의 컨텍스트 대상은 표 3에 도시된 컨텍스트 대상과 동일한 것이다.
도 19에 도시된 바와 같이, 본 발명의 제5 실시예에 따른 컴퓨터는 도 18에 도시된 제4 실시예에 따른 컴퓨터와 동일한 구조를 갖지만, 제5 검출부(445 및 446) 대신에 제7 검출부(463 및 464)를, 제6 검출부(447) 대신에 제8 검출부(465)를 구비하는 점이 상이하다.
제7 검출부(463 및 464) 각각은 실질적으로 동일한 구조를 갖고, 공급된 명령의 실행에 있어서 참조 또는 변경되는 레지스터가 현 컨텍스트로서 지정되어 있는지 여부를 판정한다. 컨텍스트 관리부 엔트리(458)내의 E 필드에 "0"의 값이 저장되고, 공급된 명령이 범용 레지스터(37)의 하위 영역을 참조 또는 변경하는 경우에는, 인터럽션 신호가 컨텍스트 사용 불가 인터럽션 제어부(427)에 공급된다. 또한, 컨텍스트 관리부 엔트리(459)내의 E 필드에 "0"의 값이 저장되고, 공급된 명령이 범용 레지스터(37)의 상위 영역을 참조 또는 변경하는 경우에는, 인터럽션 신호가 컨텍스트 사용 불가 인터럽션 제어부(427)에 공급된다. 또한, 컨텍스트 관리부 엔트리(460)내의 E 필드에 "0"의 값이 저장되고, 공급된 명령이 부동 소수점 레지스터(39)를 참조 또는 변경하는 경우에는, 인터럽션 신호가 컨텍스트 사용 불가 인터럽션 제어부(427)에 공급된다.
도 20은 제7 검출부(463)의 구성을 도시하는 회로도이다. 도 20에 도시하는 바와 같이, 제7 검출부(463)는 하위 GR 검출 회로(451), 상위 GR 검출 회로(453), 부동 수소점 명령 검출 회로(459), 논리 회로(431 내지 433) 및 OR 회로(437)를 구 비한다. 부동 소수점 명령 검출 회로(469)는 실행될 명령이 부동 소수점 로드 명령, 부동 소수점 스토어 명령, 부동 소수점 연산 명령 및 부동 소수점 비교 명령 중 하나인지 여부를 판정한다.
명령 디코드부(17)로부터 공급된 부동 소수점 로드 명령은 그대로 부동 소수점 로드 명령 실행부(25)로 출력되고, 또한 하위 GR 검출 회로(451), 상위 GR 검출 회로(453) 및 부동 소수점 명령 검출 회로(469)에 공급된다. 하위 GR 검출 회로(451)로부터 출력된 신호와 더불어 컨텍스트 관리부 엔트리(458)내의 E 필드의 값이 논리 회로(431)에 공급된다. 상위 GR 검출 회로(453)로부터 출력된 신호와 더불어 컨텍스트 관리부 엔트리(459)내의 E 필드의 값이 논리 회로(432)에 공급된다. 부동 소수점 명령 검출 회로(469)의 출력과 더불어 컨텍스트 관리부 엔트리(460)내의 E 필드의 값이 논리 회로(433)에 제공된다.
논리 회로(431 내지 433)의 출력 신호가 모두 OR 회로(437)에 공급된다. OR 회로(437)의 출력 신호는 컨텍스트 사용 불가 인터럽션 제어부(427) 및 부동 소수점 로드 명령 실행부(25)에 제공된다.
제8 검출부(465)는 공급된 명령의 실행에 있어서 참조 또는 변경되는 레지스터가 현 컨텍스트인지 여부를 판정한다. "0"의 값이 컨텍스트 관리부 엔트리(460)내의 E 필드에 저장되고, 실행될 공급된 명령이 부동 소수점 연산 명령과 같은 부동 소수점 명령인 경우에는, 인터럽션 신호가 컨텍스트 사용 불가 인터럽션 제어부(427)로 전송된다.
도 21은 제8 검출부(465)의 구성을 도시하는 회로도이다. 도 21에 도시된 바 와 같이, 제8 검출부(465)는 부동 소수점 연산 검출 회로(469) 및 논리 회로(432)를 구비한다. 명령 디코드부(17)로부터 공급된 부동 소수점 로드 명령은 제8 검출부(465)를 통해 그대로 부동 소수점 연산 명령 실행부(29)로 출력되고, 또한 부동 소수점 명령 검출 회로(469)에 공급된다. 부동 소수점 명령 검출 회로(469)로부터 출력된 신호와 더불어 컨텍스트 관리부 엔트리(460)내의 E 필드의 값이 논리 회로(432)에 제공된다. 논리 회로(432)의 출력 신호가 부동 소수점 연산 명령 실행부(29) 및 컨텍스트 사용 불가 인터럽션 제어부(427)에 공급된다.
도 19에 도시된 컴퓨터에 의해 수행되는 컨텍스트 전환 동작은 제3 실시예에 도시된 컴퓨터에 의해 수행되는 컨텍스트 전환 동작과 동일하고, 도 16에 도시된 플로우차트의 단계를 따른다. 마찬가지로, 원하는 컨텍스트가 사용 불가능할 때 수행되는 인터럽션 동작은 제3 실시예의 도 17에 도시된 플로우차트와 동일한 단계를 따른다.
이 방법에 있어서, 제5 실시예에 따른 컴퓨터는 제4 실시예에 따른 컴퓨터와 동일한 잇점을 갖고, 또한 부동 소수점 연산의 신뢰성(reliability)을 개선한다. 이 개선은 제7 검출부(463 및 464)와 제8 검출부(465)에 있어서 부동 소수점 명령의 검출에 따라 부동 소수점 연산의 컨텍스트 전환을 실행되게 한다.
(제2 원리)
이하에 있어서, 제2 원리에 따른 본 발명의 실시예가 첨부된 도면을 참조하여 기술된다.
본 발명은 일반적으로 파이프라인 처리 방법 및 파이프라인 처리에 기초하는 장치에 관한 것으로, 특히 중앙 처리 장치[central processing unit: CPU]와 연산부를 상호 접속하여 비동기 연산(asynchronous computation)을 수행하는 파이프라인 처리(pipeline processing) 방법 및 파이프라인 처리에 기초하는 장치에 관한 것이다.
최근, 컴퓨터는 보다 고성능화된 성능이 요구되고 있다. 그 결과, 중앙 처리 장치(이하, CPU라고 칭함) 단독으로는 기대했던 성능을 만족시키지 못하는 경우가 발생하고 있다. 몇몇 처리 방식에 있어서, 고속 연산을 위한 연산부가 별도로 제공되고, CPU와 병렬로 비동기 연산을 실행함으로써, CPU의 처리 능력(processing power)을 보완한다. 이러한 연산 장치는 부동 소수점 연산과 같은 연산을 행하기 위한 보조 처리기[coprocessor: COP]를 구비한다.
파이프라인 처리는 명령의 처리 과정이 복수의 처리 단계로 분할되는 제어 방법에 기초하고, 명령의 실행이 병렬 처리를 달성하기 위해 파이프라인 방식으로 처리된다. 파이프라인 처리는 단계 사이클당 명령을 실행할 수 있도록 함으로써 단위 시간당 처리 능력을 개선한다.
도 22는 파이프라인 처리 장치의 구성을 도시하는 블럭도이다. 파이프라인 처리 장치는 CPU(1100) 및 COP(1200)를 구비한다. CPU(1100)와 COP(1200)는 상호 접속된다. CPU(1100)가 COP(1200)를 사용하는 데 필요한 부동 소수점 연산을 위한 명령과 같은 연산을 위한 명령을 수신하였을 때, 이 연산 명령의 명령 코드 및 레지스터 번호가 COP(1200)로 공급된다.
COP(1200)가 CPU(1100)로부터 명령 코드 및 레지스터 번호를 수신하여, 그 수신된 명령 코드 및 레지스터 번호를 명령 버퍼(1230)에 저장한다. 명령 버퍼(1230)에 저장된 연산 명령은 모든 파이프라인 장해(pipeline hazard)가 해소되었을 때 파이프라인 연산부(1220)에 의해 실행된다. 연산 명령은 파이프라인 연산부(1220)의 연산 스테이지 S1 및 연산 스테이지 S2에 대응하는 명령 큐(1240 및 1241)를 통해 전달된다.
최종 연산 스테이지 S2에 있어서, 예외 체크(exception check)가 연산이 정상적으로 종료되고 있는지 여부를 판정하기 위해 실시된다. 연산이 정상적으로 종료되고 있으면, 연산 명령은 명령 큐(1241)로부터 제거되고, 연산 결과는 파이프라인 연산부(1220)로부터 그 연산 결과를 저장하기 위한 레지스터 화일(1210)에 공급된다. 연산이 정상적으로 종료되지 않고, 연산 예외가 검출된 경우에는, 연산 명령은 명령 큐(1241)에서 대기한다. 연산 예외에 대한 정보가 명령 큐(1241)에 기록되고, 인터렵션을 위한 요구가 CPU(1100)로 전송된다. 이 때, 명령 큐(1240)에 저장된 후속하는 연산 명령은 미완료의 명령으로서 명령 큐(1240)에 저장되어 있다.
멀티사이클을 필요로 하는 멀티사이클 연산 명령인 경우에 있어서, 멀티사이클 연산 명령의 연산 레이턴시(computation latency)가 길기 때문에, 연산 명령은 복수의 사이클에 대해 명령 큐(1240 및 1241)에서 대기한다. 그 시간동안, 후속하는 연산 명령이 명령 큐(1240) 또는 명령 버퍼(1230)에서 대기 상태로 된다. 명령 버퍼(1230)는 대기 시간을 최소화하기 위해 복수의 스테이지를 갖도록 구성되고, 대기 명령 큐(1231) 및 대기 명령 큐(1232)를 구비하며, CPU(1100)로부터 공급된 명령을 저장한다. 이와 같이, 종래기술의 파이프라인 처리 장치는 연산 명령과 실 제 연산과의 대응을 용이하게 제공하도록 구성되고, 예외 검출시의 인터럽션 처리를 용이하게 제공하도록 구성된다.
도 23은 파이프라인 처리 장치의 동작을 도시하는 플로우차트이다. 도 23에 도시된 타임차트는 연산 명령이 멀티사이클 연산 명령 a, 파이프라인드 연산 명령 b, 파이프라인드 연산 명령 c, 파이프라인드 연산 명령 d 및 파이프라인드 연산 명령 e 순서로 실행되는 경우에 대해서 도시한 것이다.
시각 t에 있어서, 멀티사이클 연산 명령 a가 CPU(1100)에 공급된 후, 명령 버퍼(1230)를 통해 명령 큐(1240)에 저장된다. 멀티사이클 연산 명령 a는 실행 종료까지 멀티사이클을 필요로 하기 때문에, 이 연산 명령은 시각 t+2로부터 명령 큐(1240)에 대기한다.
시각 t+1에 있어서, 파이프라인드 연산 명령 b가 CPU(1100)에 공급된 후, 명령 버퍼(1230)에 저장된다. 시각 t+3에 있어서, 명령 연산 명령 a가 명령 큐(1240)에 저장되어 있기 때문에, 파이프라인드 연산 명령 b가 명령 버퍼(1230)로부터 대기 명령 큐(1231)로 공급된다. 시각 t+4에 있어서, 파이프라인드 연산 명령 b가 대기 명령 큐(1231)로부터 대기 명령 큐(1232)로 공급된 후, 대기 명령 큐(1232)에서 대기한다.
시각 t+2에 있어서, 파이프라인드 연산 명령 c가 CPU(100)에 공급된 후, 명령 버퍼(1230)에 저장된다. 시각 t+4에 있어서, 파이프라인드 연산 명령 c가 명령 버퍼(1230)로부터 대기 명령 큐(1231)로 공급되고, 멀티사이클 연산 명령 a가 명령 큐(1240)에 저장되어 있기 때문에, 대기 명령 큐(1231)에서 대기한다.
시각 t+3에 있어서, 파이프라인드 연산 명령 d가 CPU(1100)에 공급된 후, 명령 버퍼(1230)에 저장된다. 파이프라인드 연산 명령 b 및 파이프라인드 연산 명령 c가 대기 명령 큐(1232) 및 대기 명령 큐(1231)에서 각각 대기하기 때문에, 파이프라인드 연산 명령 d는 명령 버퍼(1230)에서 잔류한다. 시각 t+4에 있어서, 파이프라인드 연산 명령 e가 CPU(1100)에 공급되었을 때 명령 버퍼(1230)에서 이용 가능한 공간이 없기 때문에, 파이프라인드 연산 명령 e는 처리 대기 상태, 소위 CPU 스톨 상태(stall condition)로 된다. 즉, 종래기술의 파이프라인 처리 장치는, 멀티사이클 연산 명령이 공급되면 후속하는 연산 명령이 멀티사이클 연산 명령의 종료 대기를 행할 때 전체의 명령 처리 성능을 저하한다고 하는 문제점이 있었다. 장착되어 있는 대기 명령 큐의 수가 증가하면, CPU 스톨 상태를 갖는 주파수가 감소될 수 있다. 그러나, 이러한 설계는 소비 전력의 증가 및 비용의 상승을 발생하는 문제점이 있었다.
따라서, 명령 처리 성능의 저하를 방지할 수 있고, 소비 전력 및 비용을 저감할 수 있는 파이프라인 처리 방법 및 그 파이프라인 처리에 기초하는 장치를 필요로 한다.
따라서, 본 발명의 일반적인 목적은 파이프라인 처리 방법 및 그 파이프라인 처리를 기초하는 장치를 제공함으로써, 종래기술의 한계 및 단점에 의해 야기되는 하나 이상의 문제점을 해소하는 데 있다.
본 발명의 상기 목적을 달성하기 위해, 파이프라인 처리 방법은 중앙 처리 장치와 상호 접속하는 이하의 단계를 구비하는 부가적인 연산부에 의해 연산 처리 되는 데, 부가적인 연산부는 상기 연산부에 공급되는 연산 명령을 저장하는 단계와; 상기 저장된 연산 명령에 따라 연산을 실행하는 단계와; 연산 종료까지 소정의 긴 시간을 필요로 하는 연산 명령의 실행인지를 판정하는 단계와; 연산 종료까지 소정의 긴 시간을 필요로 하는 연산 명령이 있으면, 상기 저장된 연산 명령을 전용 저장 장소로 쉬프트하는 단계와; 상기 전용 저장 장소에 저장된 연산 명령을 연산 명령의 실행이 종료할 때까지 실행하는 단계를 구비한다.
이와 같이, 연산 완료까지 실행하기 위한 긴 시간(lengthy time)을 필요로 하는 멀티사이클 연산 명령이 실행될 때, 멀티사이클 연산 명령이 전용 저장 장소에 저장됨으로써, 후속 연산 명령에 대한 명령 처리 성능의 감소를 방지한다. 또한, 이 구성은 명령 버퍼의 수를 저감하여 소비 전력 및 비용의 저감할 수 있다.
또한, 명령의 아웃 오브 오더(out-of-order) 완료를 허가하는 아키텍쳐에서는, 반드시 명령을 발행순으로 실행 완료하지 않아도 좋다. 또한, 본 발명은 이러한 경우에 이용 가능하다.
또한, 상기한 바와 같은 방법은, 연산 명령이 연산 명령의 실행을 완료하기 위해 소정의 긴 시간을 필요로 하는 명령이 아니면 연산 명령의 연산 결과를 순차적으로 출력하는 단계를 더 구비한다.
이와 같이, 멀티사이클 연산 명령은, 완료된 연산 명령의 실행이 또 다른 연산 명령의 쉬프트와 동일한 일반적인 시간에 저장 장소를 통해 쉬프트될 수 있기 전에 긴 시간을 필요로 하기 때문에, 연산 처리가 후속의 연산 명령을 스톨하는 일없이 연산 처리될 수 있다.
또한, 중앙 처리 장치내의 파이프라인 처리를 위한 장치는, 이하의 장치를 구비하여 연산 처리하는 부가적인 연산부와 상호 접속하는 데, 상기 부가적인 연산부는, 상기 연산 처리 장치에 공급되는 연산 명령을 저장하는 제1 저장 수단과; 제1 저장 수단에 저장된 상기 연산 명령에 따라 연산을 실행하는 제1 연산부와; 상기 연산을 행한 연산 명령이 연산 종료까지 소정 시간 길이 이상을 필요로 하면, 상기 제1 연산부에 의해 실행된 연산 명령을 저장하는 제2 저장 수단과; 상기 제2 저장 수단에 저장된 연산 명령에 따라 연산 명령의 실행이 종료될 때까지 연산을 행하는 제2 연산부를 구비한다.
이와 같이, 연산 종료될 때까지 긴 시간을 필요로 하는 멀티사이클 연산 명령이 실행될 때, 상기 멀티사이클 연산 명령을 저장하는 제2 저장 수단과; 상기 멀티사이클 연산 명령을 실행하는 제2 연산부가 제공됨으로써, 후속하는 연산 명령에 대한 명령 처리 성능의 저하를 방지하고, 또한 이 구성은 명령 버퍼의 수를 감소시켜 소비 전력 및 비용의 저감할 수 있다.
또한, 중앙 처리 장치내의 파이프라인을 위한 장치는 이하의 장치를 구비하여 연산 처리하는 부가적인 연산부와 상호 접속하는 데, 상기 부가적인 연산부는, 상기 연산부에 공급되는 연산 명령을 저장하는 제1 저장 수단과; 상기 제1 저장 수단에 저장된 상기 연산 명령을 실행하는 제1 연산부와; 상기 연산을 실행한 연산 명령이 연산 종료까지 소정 시간 길이 이상을 필요로 하면, 상기 제1 연산부에 의해 실행된 상기 연산 명령을 저장하는 복수의 저장 수단 중 하나인 제2 저장 수단과; 상기 제2 저장 수단에 저장된 연산 명령의 발행 순서를 나타내는 식별 수단과; 상기 식별 수단의 지시에 기초하여 최초로 발행된 연산 명령을 선택하여, 상기 최초로 발행된 연산 명령의 실행이 종료될 때까지 상기 제2 저장 수단에 저장된 연산 명령 중 상기 최초로 발행된 연산 명령을 실행하는 제2 연산부를 구비한다.
이와 같이, 상기 제2 저장 수단에 저장된 연산 명령의 발행 순서를 나타내는 상기 식별 수단이 제공됨으로써, 연산 명령의 발행 순서대로 멀티사이클 연산 명령을 실행할 수 있다.
또한, 중앙 처리 장치내의 파이프라인 처리를 위한 장치는 이하의 장치를 구비하여 연산 처리하는 복수의 부가적인 연산부와 상호 접속하는 데, 상기 복수의 부가적인 연산부는, 상기 각각의 연산부에 제공되고, 상기 각각의 연산부에 공급되는 연산 명령을 저장하는 제1 저장 수단과; 상기 각각의 연산부에 제공되고, 상기 제1 저장 수단에 저장된 상기 연산 명령을 실행하는 제1 연산부와; 상기 연산을 행한 연산 명령이 연산 종료까지 소정 시간 길이 이상을 필요로 하면, 상기 제1 연산부에 의해 실행된 상기 연산 명령을 저장하는 제2 저장 수단과; 상기 제2 저장 수단에 저장된 연산 명령의 발행 순서를 나타내는 값을 저장하는 식별 수단과; 상기 식별 수단의 지시에 기초하여 최초로 발행된 연산 명령을 선택하여, 상기 최초로 발행된 연산 명령의 실행이 종료될 때까지 상기 제2 저장 수단에 저장된 상기 연산 명령 중 최초로 발행된 연산 명령을 실행하는 제2 연산부를 구비하고; 상기 연산 명령의 발행 순서를 나타내는 값과 같은 사전 결정된 우선 순위(order of priority)가 우선 순위대로 상기 식별 수단에 저장된다.
이와 같이, 상기 연산부에 순서 순위를 설정하여, 상기 식별 수단은 상이한 연산부에 동시에 복수의 멀티사이클 연산 명령이 발행된 경우를 대처할 수 있다.
또한, 상기한 바와 같은 장치에 있어서, 상기 연산 명령의 실행을 위해 소정의 시간 길이 이상을 필요로 하는 연산 명령은 상기 연산 명령의 실행을 종료하기 전에 복수의 사이클 시간을 필요로 하는 멀티사이클 연산 명령이다.
이와 같이, 본 발명은 멀티사이클 연산 명령이 실행될 때 후속하는 파이프라인 연산 명령에 대한 명령 처리 성능의 저하를 방지할 수 있고, 또한 이 구성은 명령 버퍼의 수를 감소시켜 소비 전력 및 비용의 저감할 수 있다.
이하에 있어서, 제2 원리에 따른 본 발명의 실시예는 첨부된 도면을 참조하여 기술된다.
도 24는 본 발명에 따른 파이프라인 처리 장치의 제1 실시예를 도시하는 블럭도이다. 파이프라인 처리 장치는 상호 접속되어 있는 CPU(1010) 및 COP(1020)를 구비한다. CPU(1010)는 데이터 캐쉬(1011), 정수 연산부 및 범용 레지스터(1012), 명령 제어부(1013) 및 명령 캐쉬(1014)를 구비한다. COP(1020)는 레지스터 화일(1021), 연산부(1022), 명령 버퍼(1027), 디코더(1028), 명령 큐(1029), 명령 큐(1030) 및 멀티사이클 연산 명령을 위한 명령 큐(1031)를 구비한다.
CPU(1010)의 명령 큐(1014)는 프로그램이 저장되어 있고, 연산 명령을 명령 제어부(1013)에 공급한다. 명령 제어부(1013)는 연산 명령을 수신하면 그 수신된 연산 명령이 부동 소수점 연산과 같은 COP(1020)를 사용하는 연산 명령인지 여부를 판정한다. COP(1020)를 사용할 필요가 있는 연산 명령이라고 판정되면, 연산 명령의 명령 코드 및 레지스터 번호가 COP(1020)의 명령 버퍼(1027)에 공급된다. 정수 연산을 위한 연산 명령의 경우와 같이 COP(1020)를 사용할 필요가 없는 연산 명령이라고 판정되면, 연산 명령의 명령 코드 및 레지스터 번호가 정수 연산부 및 범용 레지스터(1012)에 공급된다.
정수 연산부 및 범용 레지스터(1012)는 레지스터 번호에 따라 데이터 캐쉬(1011)로부터 데이터를 판독하여, 명령 코드에 따라 그 데이터를 연산 처리를 행한다. 그후, 정수 연산부 및 범용 레지스터(1012)는 연산 결과를 데이터 캐쉬(1011)에 저장한다.
명령 버퍼(1027)는 명령 제어부(1013)로부터 공급된 명령 코드 및 레지스터 번호를 수신하여, 그 명령 코드 및 레지스터 번호를 모든 파이프라인 장해가 해소되었을 때 디코드에 공급한다. 즉, 명령 버퍼(1027)는 소정의 레지스터 간섭(register interference) 또는 하드웨어 자원 경합(hardware resource conflict)이 존재하는지 여부를 판정한다. 디코더(1028)는 공급된 명령 코드를 디코드하고, 연산 명령을 명령 큐(1029)에 저장한다. 또한, 디코더(1028)는 연산 명령 및 레지스터 번호를 연산부(1022)의 연산 스테이지(1024)에 공급한다. 모든 파이프라인 장해가 해소되지 않으면, 명령 버퍼(1027)는 명령 코드 및 레지스터 번호를 디코더(1028)에 공급하지 않도록 선택하고, 다음 동작 사이클에 모든 파이프라인 장해가 해소되었는지 여부를 다시 판정한다.
명령 큐(1029)는 저장된 연산 명령을 파이프라인 방식으로 명령 큐(1030)에 공급한다. 연산부(1022)의 연산 스테이지(1024)에 저장된 연산 명령 및 레지스터 번호가 연산 스테이지(1025)에 공급된다. 연산 명령 및 레지스터 번호가 연산 스테 이지(1024)로부터 공급되었을 때, 연산 스테이지(1025)는 레지스터 화일(1021)로부터 필요한 데이터를 판독하여, 그 연산 명령에 따라 연산을 실행한다.
즉, 연산 스테이지(1025)가 연산 명령 및 레지스터 번호를 수신하였을 때, 연산 결과가 다음 사이클에서 얻어진다. 연산 결과가 얻어졌을 때, 연산 스테이지(1025)는 연산 예외(computation exception)가 있는지 여부를 판정한다. 연산이 정상적으로 종료하였으면, 연산 명령이 명령 큐로부터 제거되고, 연산 결과가 연산부(1022)로부터 레지스터 화일(1021)에 공급된다. 연산 예외가 있으면, 연산 명령 및 연산 예외에 대한 정보가 연산 스테이지(1025) 및 명령 큐(1030)에 저장되고, 인터럽션 명령이 개시된다.
멀티사이클 연산 명령의 경우에 있어서, 또한 연산이 이어지기 때문에, 멀티사이클 연산 명령을 실행할 목적으로 제공되는, 연산 스테이지(1025) 및 명령 큐(1030)에 저장된 연산 명령 및 연산 예외에 대한 정보가 연산 스테이지(1026) 및 명령 큐(1031)로 쉬프트된다. 연산 명령에 대해서는 제로 나눗셈(division by zero)과 같은 연산의 개시시에 검출될 수 있고, 연산 예외는 통상적인 파이프라인드 연산 명령과 마찬가지로 검출할 수 있다.
멀티사이클 연산 명령을 위한 연산 스테이지(1026) 및 명령 큐(1031)에 저장된 연산 명령은, 연산 종료시에 다시 연산 예외가 있는지 여부를 판정한다. 연산 예외가 존재하지 않으면, 연산 명령이 연산 스테이지(1026) 및 명령 큐(1031)로부터 제거된다. 연산 예외가 존재하면, 연산 명령은 연산 스테이지(1026) 및 명령 큐(1031)에 잔류하고, 인터럽션 명령이 개시된다. 그 연산의 결과가 레지스터 화일(1021)에 저장된다.
도 25는 도 24에 도시된 파이프라인 처리 장치의 동작에 대한 일례를 도시하는 타임차트이다. 도 24에 도시된 파이프라인 처리 장치의 동작은 도 25를 참조하여 기술된다. 도 25에서는 설명에 불필요한 부분을 생략하고 있다. 도 25의 타임차트는, 연산 명령이 멀티사이클 연산 명령 a, 파이프라인드 연산 명령 b, 파이프라인드 연산 명령 c, 파이프라인드 연산 명령 d 및 파이프라인드 연산 명령 e의 순서로 연속적으로 실행되는 경우에 대해서 도시한 것이다.
시각 t에 있어서, 멀티사이클 연산 명령 a가 명령 캐쉬(1014)로부터 명령 제어부(1013)에 공급된다. 시각 t+1에 있어서, 명령 제어부(1013)는 멀티사이클 연산 명령 a를 명령 버퍼(1027)에 공급한다. 또한, 파이프라인드 연산 명령 b가 명령 캐쉬(1014)로부터 명령 제어부(1013)에 제공된다.
시각 t+2에 있어서, 멀티사이클 연산 명령 a가 명령 버퍼(1027)로부터 명령 큐(1029)에 공급된다. 명령 제어부(1013)는 파이프라인드 연산 명령 b를 명령 버퍼(1027)에 제공한다. 또한, 파이프라인드 연산 명령 c가 명령 캐쉬(1014)로부터 명령 제어부(1013)로 전송된다.
시각 t+3에 있어서, 멀티사이클 연산 명령 a가 명령 큐(1029)로부터 명령 큐(1030)에 공급된다. 파이프라인드 연산 명령 b가 명령 버퍼(1027)로부터 명령 큐(1029)에 제공된다. 명령 제어부(1013)는 파이프라인드 연산 명령 c를 명령 버퍼(1027)로 전송한다. 파이프라인드 연산 명령 d가 명령 캐쉬(1014)로부터 명령 제어부(1013)에 공급된다.
시각 t+4에 있어서, 멀티사이클 연산 명령 a가 명령 큐(1030)로부터 멀티사이클 연산 명령을 실행할 목적으로 제공되는 명령 큐(1031)에 공급된다. 멀티사이클 연산 명령 b가 명령 큐(1029)로부터 명령 큐(1030)에 공급된다. 파이프라인드 연산 명령 c가 명령 버퍼(1027)로부터 명령 큐(1029)에 제공된다. 명령 제어부(1013)는 파이프라인드 연산 명령 d를 명령 버퍼(1027)로 전송한다. 파이프라인드 연산 명령 e가 명령 캐쉬(1014)로부터 명령 제어부(1013)에 공급된다.
시각 t+5에 있어서, 멀티사이클 연산 명령 a는 명령 큐(1031)에 잔류한다. 파이프라인드 연산 명령 b가 연산 처리를 종료하고 명령 큐로부터 제거된다. 파이프라인드 연산 명령 c가 명령 큐(1029)로부터 명령 큐(1030)에 공급된다. 파이프라인드 연산 명령 d가 명령 버퍼(1027)로부터 명령 큐(1029)에 제공된다. 명령 제어부(1013)는 파이프라인드 연산 명령 e를 명령 버퍼(1027)로 전송한다.
도 23을 참조하면서 설명한 타임차트와 비교하면, 도 25에 도시된 타임차트에서는 시각 t+5에서 CPU 스톨 상태가 발생하지 않는 반면에, 도 24에 도시된 타임차트에서는 시각 t+5에서 CPU 스톨 상태가 발생하고 있다. 본 발명에 따른 제1 실시예의 파이프라인 처리 장치에서는 멀티사이클 연산 명령이더라도 통상적인 파이프라인드 연산 명령과 유사한 타이밍에 명령 큐(1029 및 1030)를 통해 쉬프트되기 때문에, 후속하는 파이프라인드 명령이 스톨 상태로 되는 일없이 연산 처리할 수 있다. 이에 따라, 전반적인 연산 성능을 비약적으로 향상시키는 동시에, 스톨 상태를 가능한 한 회피하기 위해 제공된 명령 버퍼 스테이지의 수를 감소하게 한다.
멀티사이클 연산 명령을 실행하는 동안에도, 후속하는 연산 명령이 연산 예 외를 트리거할 수 있다. 이러한 연산 예외가 발생하였을 때, 멀티사이클 연산 명령의 연산 예외가 종료될 수 있다. 멀티사이클 연산 명령에 대한 연산 예외를 검출하였을 때나 또는 연산 예외가 후속하는 연산 명령에 대해 검출되었을 때, 연산 명령, 레지스터 번호 및 연산 예외에 대한 정보가 명령 큐에 저장될 수 있다.
도 26은 본 발명에 따른 파이프라인 처리 장치의 제2 실시예를 도시하는 블럭도이다. 도 26은 CPU(1010)를 도시하는 일없이 파이프라인 처리 장치의 COP(1020)만을 도시한 블럭도이다. 또한, 도 24의 파이프라인 처리 장치와 동일한 부분에 대해서는 동일 참조부호를 붙이고 설명을 생략하고 있다.
도 26에 도시된 파이프라인 처리 장치는 명령 큐(1037 및 1038) 및 멀티사이클 연산 명령을 실행할 목적으로 제공되는 연산 스테이지(1035 및 1036)를 구비한다. 이 경우에 있어서, 연산 명령의 순서가 명령 큐(1037 및 1038) 및 연산 스테이지(1035 및 1036)에 저장된 연산 명령의 순서에 대해 외부의 장치에 통지되어야 한다. 어드레스 조작 비트(1039 및 1040)가 명령 큐(1037 및 1038)에 각각 제공됨으로써, 명령 발행 순서를 명확하게 나타낸다.
상이한 레이턴시를 갖는 두 개의 멀티사이클 연산 명령 a 및 멀티사이클 연산 명령 b가 연산 스테이지(1035 및 1036)에서 실행될 때, 어드레스 조작 비트(1039 및 1040)가 각각의 연산 스테이지(1035 및 1036)에 대응하는 각각의 명령 큐(1037 및 1038)에 제공되어, 명령 큐의 어드레스를 결정하기 위해 사용된다.
예를 들면, 명령 큐(1037 및 1038)는 소정의 어드레스 "000" 및 "001"일 수 있다. 멀티사이클 연산 명령 a가 발행되어, 전용 명령 큐(1037)에 저장될 때, 다른 명령 큐(1038)의 어드레스 조작 비트(1040)가 "0" 비트이면 어드레스 비트(1039)에는 "1"이 설정되는 반면에, 다른 명령 큐(1038)의 어드레스 조작 비트(1040)가 "1" 비트이면 어드레스 조작 비트(1040)에는 "0"이 설정된다.
어드레스 조작 비트 "1"을 갖는 멀티사이클 연산 명령이 실행 완료되었을 때, 어드레스 조작 비트는 "1"에서 "0"으로 변경되고, 또한 다른 명령 큐의 어드레스 조작 비트는 "0"에서 "1"로 변경된다. 이와 같이, 두 개의 멀티사이클 연산 명령 a 및 멀티사이클 연산 명령 b 중, 먼저 발행된 멀티사이클 연산 명령을 위한 명령 큐의 어드레스 조작 비트는 항상 "1"이 되고, 먼저 발행된 두 개의 멀티사이클 연산 명령 중 하나를 분명하게 한다.
또한, 어드레스 지정에 대한 규칙이 어드레스 "000"이 어드레스 조작 비트 "1"을 갖는 명령 큐에 주어지고, 어드레스 "001"이 어드레스 조작 비트 "0"을 갖는 명령 큐에 주어지는 것과 같이 사전에 규정될 수 있다. 이 어드레스 지정에 있어서, 명령 큐의 내용(content)이 어드레스의 오름차순으로 판독되면, 멀티사이클 연산 명령이 연산 명령의 발행순으로 명령 큐로부터 판독된다.
도 27은 본 발명에 따른 파이프라인 처리 장치의 제3 실시예를 도시하는 블럭도이다. 도 27은 복수의 COP를 갖는 파이프라인 처리 장치를 도시한 것으로, 발명에 불필요한 부분에 대한 기재는 생략되어 있다. 또한, 도 24의 파이프라인 처리 장치와 마찬가지의 부분에 대해서는 동일 참조부호를 붙이고 설명을 생략하고 있다.
도 27에 도시된 파이프라인 처리 장치는 두 개의 COP(1050 및 1060)를 구비 하고, 각각의 COP(1050 및 1060)에 멀티사이클 연산 명령을 실행할 목적으로 제공되는 명령 큐(1054 및 1064)가 제공된다. 멀티사이클 연산 명령을 실행할 목적으로 제공되는 명령 큐(1054 및 1064)는 제2 실시예에서와 마찬가지로 어드레스 조작 비트가 마련되어 있다.
상기한 바와 같은 파이프라인 처리 장치에서 복수의 COP를 갖는 구성에 있어서, 각각의 COP에 제공되는 멀티사이클 연산 명령을 위한 명령 큐(1054 및 1064)에 동시에 멀티사이클 연산 명령이 주어질 수 있다. 이 경우에 있어서, 멀티사이클 연산 명령이 명령 큐(1054 및 1064)에 동시에 공급되는 한, 명령 큐(1054 및 1064)의 어드레스 조작 비트에 값을 설정하는 우선 순위가 사전에 결정될 필요가 있다. 이 우선 순위는 valid 생성 장치(1056 및 1066)에 의해 결정된다. 다른 동작 타이밍에 대해서는, 하나의 COP내에 멀티사이클 연산 명령을 위한 명령 큐가 제공되는 경우와 마찬가지로 설명이 생략된다.
(제3 원리)
이하에 있어서, 제3 원리에 따른 본 발명의 실시예는 첨부된 도면을 참조하여 기술된다.
본 발명은 일반적으로 나눗셈기(divider)에 관한 것으로, 특히 순환형 나눗셈기(recursive type divider)에 관한 것이다.
나눗셈기는 수를 나누기 위해 사용되고, 순환형 나눗셈기 및 비순환형 나눗셈기(non-recursive-type divider)가 있다. 순환형 나눗셈기는 통상의 필산(筆算) 으로 수를 나누는 것과 같이 부분마다 부분적인 몫(quotient) 및 나머지(remainder)를 반복적으로 구함으로써 최종적인 몫 및 나머지를 얻는다. 순환형 나눗셈기는 상이한 기수(base number)를 채택할 수 있고, 기수에 따라 나눗셈 연산시에 하나의 비트로서 처리되는 비트수를 정의한다.
예를 들면, 나누어질 하나의 비트로서 3 비트를 처리하는 나눗셈기는 기수 8을 갖는다. 나누어질 하나의 비트로서 2 비트를 처리하는 나눗셈기는 기수 4를 갖는다. 또한, 기수가 증가함에 따라, 회로 구성이 복잡해지지만, 한번에 계산 가능한 비트수가 많기 때문에 고속한 연산이 가능하게 된다. 어떠한 기수를 갖는 나눗셈기를 선택하는가는 경우에 따라 달라진다.
순환형 나눗셈기는 나눗셈 연산을 반복해서 행하기 때문에, 전반적인 나눗셈 연산에 긴 연산 시간이 걸리는 것을 피하기 위해 각각의 사이클에서의 나눗셈 연산이 고속일 필요가 있다.
이에 따라, 본 발명의 목적은 기수가 4인 순환형 나눗셈기에 있어서, 고속의 나눗셈 연산을 달성하는 것이다.
따라서, 본 발명의 일반적인 목적은 종래기술의 한계 및 단점에 의해 야기되는 하나 이상의 문제점을 실질적으로 극복하는 나눗셈기를 제공하는 것이다.
본 발명의 상기한 목적을 달성하기 위해서, 나눗셈기는 자리올림 보존 덧셈기(carry save adder)와; 상기 자리올림 보존 덧셈기와 직렬로 접속되어 있는 전가산기(full adder)를 구비하고; 직렬로 접속되어 있는 자리올림 보존 덧셈기 및 전가산기는 나눗셈 연산을 위해 필요로 하는 덧셈 연산(addition computation)을 수 행한다.
본 발명의 다른 측면에 따르면, 상기한 바와 같은 나눗셈기는 순환형 나눗셈기이다.
본 발명의 또 다른 측면에 따르면, 상기한 바와 같은 나눗셈기는 상기 직렬로 접속되어 있는 자리올림 보존 덧셈기와 상기 전가산기에 의해 피제수(dividend)의 일부와, 제수(divisor)와, 제수의 2배를 더한 값을 얻는다.
본 발명의 또 다른 측면에 따르면, 상기한 바와 같은 나눗셈기는 기수 4의 순환형 나눗셈기이다.
상기한 바와 같은 나눗셈기에 있어서, 나눗셈 연산 동안 필요로 하는 덧셈 연산은 자리올림 보존 덧셈기와 상기 자리올림 보존 덧셈기에 직렬로 접속되어 있는 전가산기를 사용하여 실행된다. 자리올림 보존 덧셈기는 각각의 자리올림 비트(carry bit)를 인접한 상위 비트로 자리올림하는 일없이 각각의 비트 스테이지(bit stage)의 자리올림 비트를 그대로 출력한다. 종래의 전가산기와는 달리, 상기 자리올림 보존 덧셈기는 최하위 비트로부터 최상위 비트로 자리올림을 전달할 필요가 없어, 몫의 덧셈 연산을 달성한다. 이에 따라, 순환형 나눗셈기에 있어서, 반복 실행되는 각각의 나눗셈 사이클을 위해 필요로 하는 연산 시간을 감소시킬 수 있다.
이하에 있어서, 본 발명의 실시예가 첨부된 도면을 참조하여 기술된다.
도 28은 기수 4의 순환형 나눗셈기의 구성을 도시하는 블럭도이다. 도 28에 도시된 나눗셈기(2010)는 전가산기(2011 내지 2013), 자리올림 보존 덧셈기(2014), 비트 쉬프터(2015 및 2016), 결과 선택 논리 회로(2017), 셀렉터(2018), 레지스터(2019 및 2020), 셀렉터(2021 내지 2026) 및 인버터(2027)를 구비한다. 도 28에 도시된 나눗셈기(2010)는 32 비트 정수인 A를 32 비트 정수인 D로 나누어 32 비트 몫 X를 구하고, 이들 수 모두는 +/- 부호가 붙어 있지 않다.
레지스터(2020)는 네 개의 레지스터(2020-1 내지 2020-4)를 구비하고, 전체적으로 64 비트의 레지스터이다. 레지스터(2020)에 있어서, 부분적인 나머지 R이 나누어질 수 A(피제수)를 2 비트씩 나눗셈을 통해 얻어질 때에 저장되는 동시에, 2 비트씩 연산한 결과로 얻어지는 결과(몫)가 하위 비트에서부터 상위 비트로 연속해서 저장된다. 도 28에 있어서, 예를 들어 레지스터(2020-1)는 R[61, 32]로 표기되어 있는 데, 레지스터(2020-1)가 비트를 최하위 비트에서부터 카운트할 때 레지스터(2020)의 33번째 비트에서부터 62번째 비트에 대응하는 것을 지시한다.
도 28에 도시된 나눗셈기(2010)는 자리올림 보존 덧셈기(2014)를 채택한다. 이 자리올림 보존 덧셈기의 사용에 따르면, 고속의 나눗셈 연산을 달성할 수 있다.
이하에 있어서, 나눗셈기(2010)의 동작이 기술된다.
피제수 A가 셀렉터(2023 내지 2025)를 통해 레지스터(2020)의 하위 32 비트에 저장된다. 이때, 레지스터(2020-1)의 모든 비트에는 0이 저장되어 있다. 제수 D가 비트 마다의 인터버(2027) 및 셀렉터(2021)를 통해 레지스터(2019)에 비트 마다의 반전된 값으로서 저장된다. 비트 마다의 반전된 값이 레지스터(2019)에 저장된 후, 전가산기(2011)에 의해 셀렉터(2026)에 의해 선택된 값 "1"으로서의 값 "1"과 더해지고, 그 더해진 결과가 레지스터(2019)에 저장된다. 그 결과로서, 레지스터(2019)에는 제수 D의 부호 반전값 -D가 저장된다.
그후, 나눗셈 블럭(division block)은 피제수 A의 최상위 2 비트를 제수 D로 나누어 몫과 나머지를 얻고, 나눗셈 블럭은 전가산기(2011 내지 2013), 자리올림 보존 덧셈기(2014), 비트 쉬프터(2015 및 2016) 및 결과 선택 논리 회로(2017)로 이루어진다. 즉, 레지스터(2015)의 내용 R[61:30]이 레지스터(2020)로부터 판독되어, R[31:0]으로서 저장된 피제수 A의 최상위 2 비트(비트 31 및 비트 30)가 나눗셈 블럭에 공급된다. 나눗셈 블럭에 공급된 이 수는 이후에 Y로서 참조된다.
결과 선택 논리 회로(2017)는 Y, Y-D, Y-2D 및 Y-3D 중 음(negative)이 되지 않는 최우측 아이템(the rightmost item)을 선택한다. 이 선택은 각각의 연산 Y-D, Y-2D 및 Y-3D의 결과에 대한 최상위 비트(p, q, r)를 판정함으로써 이루어진다. 여기서, 대응하는 연산 결과가 음이면, 최상위 비트 p, q 및 r은 1이다. 예를 들면, Y가 D보다는 크지만 2D보다는 작으면, Y 및 Y-D는 양(positive)이 되고, Y-2D 및 Y-3D는 음이 된다. 이 경우에 있어서, 결과 선택 논리 회로(2017)로부터의 선택 신호는 셀렉터(2018)가 Y-D를 선택하도록 한다. 선택된 결과는 나머지로, 피제수 A의 최상위 2 비트를 제수 D로 나눈 후 남은 나머지이고, R[61:32]로서 레지스터(2020)에 저장된다.
이때, 레지스터(2020)의 하위 30 비트는 각각 좌측으로 2 비트만큼 쉬프트되어, 최초에 R[29:0]에 저장된 피제수 A의 하위 30 비트가 쉬프트되고 R[31:2]에 저장된다. 나머지 Y-D가 상기한 바와 같이 레지스터(2020)의 R[61:32]에 저장되기 때문에, 피제수 A의 최상위 2 비트는 나머지 Y-D로 치환되고, R[33:2]의 내용은 전체 부분 나머지를 표시한다. 즉, R[33:2]에는 피제수 A의 최상위 2 비트를 제수 D로 나눈 후 얻어지는 부분 나머지가 저장된다.
설명을 간단하게 하기 위해서, 이하의 명세서에서는 대부분의 사람들에게 가장 친숙한 십진수의 예로서 설명한다. 나눗셈 연산 "564/3"에 있어서, 예를 들어 처음에 몫 "1"은 첫번째 디지트 "5"에 대해서 나눗셈 연산 "5/3"을 함으로써 얻어지고, 이 경우의 나머지는 2가 된다. 상기한 설명에 있어서, 5가 Y에 대응하고, 3이 D에 대응한다. 5가 3보다는 크고 3의 2배보다는 작기 때문에, 2 즉 Y-D가 나머지로서 선택되고, 레지스터(2020)에 저장된다. 이때, 564의 첫번째 디지트가 첫번째 디지트에 대해 얻어진 나머지 "2"로 치환되어, 부분 나머지 264로 된다. 이 결과는 564를 300으로 연산한 나머지와 동일하다.
십진수 연산의 기수가 10이기 때문에, 상기한 바와 같이 십진수의 연산예에서의 하나의 디지트의 나눗셈은 기수 4의 연산예에서의 2 비트의 나눗셈에 대응한다. 십진수 연산의 경우에 있어서, Y-D 내지 Y-9D가 연산을 위해 필요하다. 도 29에 도시된 구성에 있어서 기수가 4이기 때문에, Y-D 내지 Y-3D의 연산 모두가 필요하다.
도 1을 다시 참조하면, 결과 선택 논리 회로(2017)는 Y, Y-D, Y-2D 및 Y-3D 중 하나를 선택하고, 몫에 대응하는 값{결과[1:0]}을 얻는다. 이 얻어진 몫은 레지스터(2020)의 최상위 2 비트에 저장된다. Y-D가 선택될 때, 예를 들어 결과 선택 논리 회로(2017)가 1(2진수로 표현하면 "01")을 출력하고, 레지스터(2020)의 R[1:0]에 저장된다. 레지스터(2020)에 저장된 결과는 각각의 나눗셈 연산이 수행될 때 2 비트씩 좌측으로 연속적으로 쉬프트된다.
그후 연산이 반복된다. 즉, 레지스터(2020)에 저장된 부분 나머지의 최상위 2 비트가 전가산기(2011 내지 2013), 자리올림 보존 덧셈기(2014), 비트 쉬프터(2015 및 2016) 및 결과 선택 논리 회로(2017)로 이루어지는 나눗셈 블럭에 공급된다. 나눗셈 블럭에 공급된 이 데이터는 Y로서 지정되고, 상기한 바와 마찬가지로 연산 제어가 실행된다.
공급된 데이터가 최상위 4 비트로 구성되더라도, 4 비트 중 상위 2 비트가 이전의 나눗셈 연산에 대한 나머지이다. 이 4 비트에 대하여 3 이상의 몫이 나오는 경우는 없다. 상기한 십진수의 연산예에 있어서, 부분 나머지 "264"의 상위 두 개의 디지트 "26" 중, 상위 하나의 디지트 "2"는 이전의 나눗셈 연산의 나머지이기 때문에, 26을 3으로 나눠서 얻어진 몫은 9 이상이 될 수 없다.
이와 같이, 레지스터(2020)에 저장된 부분 나머지로부터 지금까지 나눗셈 연산 대상이 아니었던 부분의 상위 2 비트를 새로운 나눗셈 연산 대상으로서, 최상위 비트로부터 이 2 비트까지를 포함하는 상위 비트를 나눗셈 블럭에 공급된다[나눗셈 블럭은 전가산기(2011 내지 2013), 자리올림 보존 덧셈기(2014), 비트 쉬프터(2015) 및 결과 선택 논리 회로(2017)로 이루어짐]. 얻어진 몫과 나머지는 레지스터(2020)에 저장되고, 부분 나머지가 또한 후속하는 나눗셈 연산을 위해 사용된다. 피제수 A의 모든 비트에 대한 처리가 종료되었을 때, 레지스터(2020)의 R[31:0]에는 최종적인 나눗셈 연산의 결과로서 몫 X가 저장된다.
상기한 바와 같은 동작을 달성하기 위해서, 전가산기(2011)는 레지스터(2019)로부터 공급된 -D와 셀렉터(2026)에 의해 선택된 Y를 더한다. 전가산기(2012)는 레지스터(2019)로부터 공급된 -D를 비트 쉬프터(2015)로 1 비트만큼 쉬프트하여 얻어진 -2D와, 레지스터(2020)로부터 공급되는 Y를 더한다. 자리올림 보존 덧셈기(2014) 및 전가산기(2013)는, Y가 레지스터(2020)로부터 공급되고, -D가 레지스터(2019)로부터 직접 공급되며, -2D가 레지스터(2019)로부터 공급된 -D를 비트 쉬프터(2016)로 1 비트만큼 쉬프트하여 얻어졌을 때, Y, -D 및 -2D 모두가 더해진다. 결과 선택 논리 회로(17)는 도 29에 도시된 바와 같이 논리 연산을 실행함으로써, 적절한 나머지를 선택하는 동시에 몫을 레지스터(2020)에 공급한다.
레지스터(2020-3)의 출력 및 레지스터(2020-4)의 출력이 각각 셀렉터(2023) 및 셀렉터(2024)를 통해 레지스터(2020-2) 및 레지스터(2020-3)으로의 입력으로서 공급된다. 이에 따라, 각각의 2 비트에 대한 나눗셈 연산이 각각 실행될 때, 레지스터의 내용을 좌측으로 2 비트씩 쉬프트한다.
도 30은 자리올림 보존 덧셈기(2014)의 회로 구성과 더불어 전가산기(2013)의 회로 구성을 도시하는 회로도이다. 도 30에 도시된 자리올림 보존 덧셈기(2014)는 설명 및 도면을 간단하게 하기 위해 4 비트 연산에 대한 구성을 도시하고 있다.
도 30에 도시된 자리올림 보존 덧셈기(2014)는 각각 1 비트 연산을 위한 전가산기(2014-0 내지 2014-3)를 구비한다. 전가산기(2014-0 내지 2014-3)는 대응하는 비트마다 배열되어 있다. 통상의 전가산기에 있어서, 소정 비트를 위한 전가산기 회로의 자리올림 출력(carry output)은 상위로 인접한 비트를 위해 제공되는 인접한 전가산기 회로의 입력에 공급된다. 이와 같이, 각각의 전가산기 회로는 두 개 의 입력과 하위로 인접한 비트로부터 공급되는 자리올림 출력의 합을 구한다. 이러한 통상의 전가산기와는 상이하게, 자리올림 보존 덧셈기는 전가산기 회로의 자리올림 비트를 인접한 상위 비트에 공급하는 일없이 전가산기 회로의 자리올림 비트를 간단히 출력한다.
도 28을 참조하여 설명한 바와 같이, 자리올림 보존 덧셈기(2014)는 레지스터(2019)로부터 -D를, 비트 쉬프터(2016)로부터 -2D를, 레지스터(2020)로부터 Y를 수신한다. 도 30에 있어서, 이들 세 개의 입력에 대한 각각의 비트는 An, Bn 및 Cn(n=0, 1, 2, 3)으로 참조된다. 전가산기 회로(2014-n)의 출력은 Sn 및 COn(n=0, 1, 2, 3)으로서 도시된다.
각각의 전가산기 회로(2014-0 내지 2014-3)는 통상의 덧셈 동작을 실행함으로써 세 개의 1 비트 입력의 합을 구하여, 2 비트 출력으로서 공급한다. 즉, 상위 비트로서 COn 및 하위 비트로서 Sn을 갖는 출력 COnSn이 세 개의 1 비트 입력 An, Bn 및 Cn의 합을 나타내게 된다.
전가산기(2013)는 각각의 비트를 위해 제공되는 전가산기 회로(2013-0 내지 2013-4)를 구비한다. 최하위 비트를 위한 전가산기 회로(2013-0)가 "0", "0" 및 S0의 합을 구한다. 즉, 전가산기 회로(2013-0)는 소정의 변화가 없이 S0을 출력한다. 전가산기 회로(2013-0) 이외의 전가산기 회로(2013-n)는, 대응하는 비트를 위한 자리올림 보존 덧셈기(2014)의 합 출력(summation output)인 Sn과, 인접하는 하위 비트를 위한 자리올림 보존 덧셈기(2014)의 자리올림 출력인 C0n-1과, 인접하는 하위 비트를 위한 전가산기 회로(2013-n-1)의 자리올림 출력의 합을 구한다. 도 31은 필 산(筆算)에 기초하는 연산을 참조하여 전가산기 회로의 동작을 설명하기 위한 예시적인 도면이다. 도 31에 도시된 바와 같이, 전가산기 회로의 동작은 적절한 비트 위치에서 모든 합산 결과를 정렬함으로써 구하는 총합(total sum)과 마찬가지이다. 이 동작의 결과로서 얻어지는 출력 X0 내지 출력 X5는 자리올림 보존 덧셈기(2014)에 공급되는 세 개의 입력의 정확한 합이다.
이와 같이, 자리올림 보존 덧셈기(2014)와 전가산기(2013)의 조합은 세 개의 입력의 합을 적절하게 생성할 수 있다.
세 개의 수 A, B 및 C의 합을 구하는 통상적인 방법은, 제1 전가산기로 A와 B의 합을 구하고, 제2 전가산기를 사용하여 제1 전가산기의 출력과 C의 합을 구하는 것이다. 종래의 순환형 나눗셈기에 있어서, 두 개의 전가산기가 Y-3D를 연산하기 위해 직렬로 접속되어 있다. 전가산기는 전가산기 회로에서 인접한 전가산기 회로로 자리올림 출력을 전달할 필요가 있기 때문에, 최하위 비트에서 최상위 비트로 자리올림 출력을 연속적으로 전달하기 위해서는 긴 시간이 걸려, 연산하는 비트수가 클수록 소정의 연산 결과를 구하기까지는 긴 시간이 필요하게 된다.
이에 대해 자리올림 보존 덧셈기를 사용하면, 자리올림 보존 덧셈기내에서는 자리올림 전달을 필요로 하지 않기 때문에, 자리올림 보존 덧셈기와 전가산기를 직렬 접속시킴으로써, 고속의 덧셈 동작을 달성할 수 있다.
도 28을 참조하면, 전가산기가 자리올림 보존 덧셈기(2014) 대신에 사용되면, 전가산기가 두 개의 연산 스테이지를 형성하도록 직렬로 접속된다. Y-3D의 연산 결과가 Y-D 및 Y-2D의 연산에 비해서 지연되게 된다. 도 28에 도시된 구성에 있 어서, 자리올림 보존 덧셈기(2014)를 사용하여 자리올림 전달을 위해 필요로 하는 시간 지연을 제거함으로써, 고속의 Y-3D의 연산을 달성할 수 있다. 그 결과, Y-3D의 연산이 Y-D 및 Y-2D의 연산과 거의 동시에 종료될 수 있다.
이와 같이, 본 발명에 따른 기수 4의 순환형 나눗셈기는 각각의 나눗셈 사이클의 고속 연산을 달성하기 위해 덧셈 연산을 위한 자리올림 보존 덧셈기를 채택한다.
본 발명에 따르면, 하드웨어 자원이 복수의 영역으로 분할되고, 복수의 프로그램이 시분할 방식으로 병렬 처리된다. 영역이 제1 프로그램에 의해 사용되고, 제2 프로그램을 실행하는 데 필요하면, 이 영역에 저장된 정보는 제1 프로그램을 식별하는 식별 정보와 더불어 퇴거되고, 그후 해당 식별 정보에 따라 복원된다. 이것은 컨텍스트의 전환을 고속화를 달성함으로써 복수의 프로그램의 병렬적인 처리를 효율적으로 처리할 수 있다.
또한, 식별 정보는 메모리내에 저장될 수 있고, 영역내에 저장된 정보가 퇴거될 수 있으며, 이 모든 단계가 인터럽션 처리의 일부로서 수행된다. 이것은 프로그램 전체의 크기와 컴퓨터의 회로 크기를 감소시킴으로써, 동작 속도의 개선을 도모할 수 있다.
복수의 영역 중 제1 영역 및 제2 영역이 제2 프로그램을 실행하는 데 필요하고, 제1 프로그램을 실행하는 데 사용되면, 제1 프로그램을 식별하는 식별 정보는 메모리내에 저장되고, 제1 영역에 저장되는 정보가 퇴거되며, 제2 영역은 제2 프로 그램을 실행하는 데 실질적으로 필요하게 되는 경우에 제2 영역에 저장된 정보를 퇴거하도록 한다. 이 구성은 제1 프로그램이 제2 영역의 퇴거가 실질적으로 필요하게 될 때까지 제2 영역을 사용하도록 허가하여, 컴퓨터의 하드웨어 자원을 보다 효율적으로 사용할 수 있게 한다.
본 발명에 따르면, 멀티사이클 연산 명령을 실행하는 경우에, 후속하는 연산 명령에 대한 명령 처리 성능의 저하를 방지할 수 있고, 명령 버퍼 스테이지의 수를 감소시킴으로써 소비 전력 및 비용을 절감할 수 있다.
본 발명에 따르면, 나눗셈 연산 동안 필요로 하는 덧셈 연산은 자리올림 보존 덧셈기와 전가산기의 직렬 접속에 의해 실행된다. 자리올림 보존 덧셈기는 각각의 비트 스테이지의 자리올림 비트 출력을 인접한 상위 비트로 자리올림하는 일없이 대응하는 비트마다 그대로 출력한다. 통상적인 전가산기와는 달리, 자리올림 보존 덧셈기는 최하위 비트로부터 최상위 비트로 자리올림을 전달하지 않음으로써, 고속의 덧셈 연산을 달성할 수 있다. 이에 따라, 순환형 나눗셈기에 있어서, 반복 실행되는 각각의 나눗셈 사이클을 위해 필요로 하는 연산 시간이 단축될 수 있다.
본 발명은 참조하기 위해 2000년 3월 31일자로 일본 특허청에 출원된 일본 특허 출원 번호 제2000-099707호, 2000년 2월 29일자로 일본 특허청에 출원된 일본 특허 출원 번호 제2000-054832호 및 2000년 2월 29일자로 일본 특허청에 출원된 일본 특허 출원 번호 제2000-054742호를 기초로 하고 있다.
본 발명은 이들 실시예에 한정되는 것은 아니지만, 여러가지 변형 및 변경이 본 발명의 범주로부터 벗어나는 일없이 이루어질 수 있다.

Claims (17)

  1. 복수의 프로그램을 시분할 방식으로 병렬 처리하는 컴퓨터로서,
    복수의 영역으로 분할되며, 상기 복수의 프로그램이 공통으로 이용하는 하드웨어 자원들과;
    상기 복수의 영역 중 제1 영역이 제2 프로그램을 실행하는 데 필요하고 제1 프로그램을 실행하는 데 사용되고 있는 경우, 상기 제1 프로그램을 식별하는 식별 정보를 기록하고, 상기 복수의 영역 중 제1 영역에 저장된 정보를 퇴거(evacuate)하는 퇴거 수단과;
    상기 제2 프로그램의 실행에 필요한 제1 부분의 정보를 상기 제1 영역에 복원하며, 상기 제1 영역을 사용가능한 영역으로 표시하는 반면에 상기 제1 영역 이외의 영역들을 사용불가능한(unusable) 영역으로 표시하며, 상기 제2 프로그램의 실행을 위해 사용불가능한 영역으로 표시된 영역을 사용할 필요가 있는 경우 상기 제2 프로그램의 실행에 필요한 제2 부분의 정보를 제2 영역에 복원하며, 상기 제2 프로그램이 정지되거나 종료된 경우 상기 식별 정보에 기초하여 상기 제1 영역에 상기 퇴거된 정보를 복원하는 것인 복원 수단
    을 포함하는 컴퓨터.
  2. 제1항에 있어서, 상기 복수의 영역 중 제1 영역이 상기 제2 프로그램을 실행하는 데 필요하고, 상기 제1 프로그램을 실행시키는 데 사용되고 있는 경우, 인터럽션 처리를 발생하는 인터럽션 수단을 더 포함하며; 상기 퇴거 수단은 상기 인터럽션 처리의 일부로서 동작하여 상기 식별 정보를 기록하고, 상기 복수의 영역 중 제1 영역에 저장된 정보를 퇴거시키는 것인 컴퓨터.
  3. 복수의 프로그램을 시분할 방식으로 병렬 처리하는 컴퓨터로서,
    복수의 영역으로 분할되며, 상기 복수의 프로그램이 공통으로 이용하는 하드웨어 자원과;
    상기 복수의 영역 중 제1 영역 및 제2 영역이 제2 프로그램을 실행시키는 데 필요하고, 상기 제1 프로그램을 실행시키는 데 사용되고 있는 경우, 상기 제1 프로그램을 식별하는 식별 정보를 기록하고, 상기 복수의 영역 중 제1 영역에 저장된 정보를 퇴거시키는 퇴거수단으로서, 상기 퇴거 수단은 상기 제2 영역의 사용이 상기 제2 프로그램을 실행시키는 데 실질적으로 필요한 때, 상기 제2 영역에 저장된 정보를 퇴거시키는 것인 퇴거 수단과;
    상기 제2 프로그램의 실행이 중단 또는 종료되었을 때, 상기 퇴거 수단에 의해 퇴거된 정보를 상기 식별 정보에 기초하여 상기 제1 영역 및 상기 제2 영역으로 복원하는 복원 수단을 포함하는 컴퓨터.
  4. 복수의 프로그램을 시분할 방식으로 병렬 처리하는 컴퓨터의 제어 방법으로서,
    복수의 영역으로 분할되며, 상기 복수의 프로그램이 공통으로 이용하는 하드웨어 자원을 제공하는 단계와;
    상기 복수의 영역 중 제1 영역이 제2 프로그램을 실행하는 데 필요하고 제1 프로그램을 실행시키는 데 사용되고 있는 경우, 상기 제1 프로그램을 식별하는 식별 정보를 기록하고, 상기 복수의 영역 중 제1 영역에 저장된 정보를 퇴거시키는 단계와;
    상기 제2 프로그램의 실행에 필요한 제1 부분의 정보를 상기 제1 영역에 복원하며, 상기 제1 영역을 사용가능한 영역으로 표시하는 반면에 상기 제1 영역 이외의 영역들을 사용불가능한 영역으로 표시하며, 상기 제2 프로그램의 실행을 위해 사용불가능한 영역으로 표시된 영역을 사용할 필요가 있는 경우 상기 제2 프로그램의 실행에 필요한 제2 부분의 정보를 제2 영역에 복원하며, 상기 제2 프로그램이 정지되거나 종료된 경우 상기 식별 정보에 기초하여 상기 제1 영역에 상기 퇴거된 정보를 복원하는 단계
    를 포함하는 컴퓨터 제어 방법.
  5. 복수의 프로그램을 시분할 방식으로 병렬 처리하는 컴퓨터의 제어 방법으로서,
    복수의 영역으로 분할되며, 상기 복수의 프로그램이 공통으로 이용하는 하드웨어 자원을 제공하는 단계와;
    상기 복수의 영역 중 제1 영역 및 제2 영역이 제2 프로그램을 실행시키는 데 필요하고, 제1 프로그램을 실행시키는 데 사용되고 있는 경우에, 상기 제1 프로그램을 식별하는 식별 정보를 기록하고, 상기 복수의 영역 중 제1 영역에 저장된 정보를 퇴거시킨 다음에, 상기 제2 영역의 사용이 상기 제2 프로그램의 실행에 실질적으로 필요한 때, 상기 제2 영역에 저장된 정보를 퇴거시키는 단계와;
    상기 제2 프로그램의 실행이 중단 또는 종료되었을 때, 상기 퇴거 수단에 의해 퇴거된 정보를 상기 식별 정보에 기초하여 상기 제1 영역 및 제2 영역으로 복원하는 단계를 포함하는 컴퓨터 제어 방법.
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
KR1020010006093A 2000-02-29 2001-02-08 고속 컨텍스트 전환을 갖는 컴퓨터 KR100732426B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP2000054742A JP2001243051A (ja) 2000-02-29 2000-02-29 除算器
JP2000-054832 2000-02-29
JP2000054832A JP5185478B2 (ja) 2000-02-29 2000-02-29 パイプライン処理方法並びにその方法を利用するパイプライン処理装置
JP2000-054742 2000-02-29
JP2000099707A JP4116752B2 (ja) 2000-03-31 2000-03-31 計算機とその制御方法
JP2000-099707 2000-03-31

Publications (2)

Publication Number Publication Date
KR20010085353A KR20010085353A (ko) 2001-09-07
KR100732426B1 true KR100732426B1 (ko) 2007-06-27

Family

ID=27342536

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010006093A KR100732426B1 (ko) 2000-02-29 2001-02-08 고속 컨텍스트 전환을 갖는 컴퓨터

Country Status (3)

Country Link
US (2) US20010049781A1 (ko)
EP (3) EP1785862A3 (ko)
KR (1) KR100732426B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60333089D1 (de) * 2002-04-18 2010-08-05 Nxp Bv Prozessor mit mehrfachbefehlsausgabe
GB2411751A (en) * 2002-04-25 2005-09-07 Livedevices Ltd Improvements relating to reduced-overhead context-saving in static priority scheduled operating systems
US10203958B2 (en) * 2013-07-15 2019-02-12 Texas Instruments Incorporated Streaming engine with stream metadata saving for context switching
WO2021145803A1 (en) 2020-01-13 2021-07-22 Telefonaktiebolaget Lm Ericsson (Publ) Programmable controller

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0333366A2 (en) * 1988-03-18 1989-09-20 Digital Equipment Corporation Context switching method and apparatus for use in a vector processing system
JPH0581015A (ja) * 1991-03-14 1993-04-02 Fujitsu Ltd パイプライン演算制御方法およびシステム
KR930014114A (ko) * 1991-12-31 1993-07-22 경상현 멀티미디어 지식처리를 위한 병렬처리 컴퓨터구조
KR20020064285A (ko) * 1999-09-17 2002-08-07 터보 데이터 라보라토리 유겐가이샤 병렬 컴퓨터의 구조 및 그 구조를 이용한 정보처리유닛

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4991078A (en) * 1987-09-29 1991-02-05 Digital Equipment Corporation Apparatus and method for a pipelined central processing unit in a data processing system
JP2753706B2 (ja) * 1987-12-09 1998-05-20 富士通株式会社 計算機におけるipl方法
JPH0833816B2 (ja) * 1988-10-08 1996-03-29 日本電気株式会社 固定小数点除算方式
US4979142A (en) * 1989-04-17 1990-12-18 International Business Machines Corporation Two-bit floating point divide circuit with single carry-save adder
US5421014A (en) * 1990-07-13 1995-05-30 I-Tech Corporation Method for controlling multi-thread operations issued by an initiator-type device to one or more target-type peripheral devices
EP0503968B1 (en) * 1991-03-14 1999-01-07 Fujitsu Limited Pipeline operation control method and system
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
DE4237417C2 (de) * 1992-03-25 1997-01-30 Hewlett Packard Co Datenverarbeitungssystem
JPH05324274A (ja) 1992-05-15 1993-12-07 Matsushita Electric Ind Co Ltd 2進10進変換装置
US5553015A (en) * 1994-04-15 1996-09-03 International Business Machines Corporation Efficient floating point overflow and underflow detection system
US5751985A (en) * 1995-02-14 1998-05-12 Hal Computer Systems, Inc. Processor structure and method for tracking instruction status to maintain precise state
US5710562A (en) * 1995-08-31 1998-01-20 Ricoh Company Ltd. Method and apparatus for compressing arbitrary data
US5835748A (en) * 1995-12-19 1998-11-10 Intel Corporation Method for executing different sets of instructions that cause a processor to perform different data type operations on different physical registers files that logically appear to software as a single aliased register file
US5729724A (en) * 1995-12-20 1998-03-17 Intel Corporation Adaptive 128-bit floating point load and store operations for quadruple precision compatibility
US5740093A (en) * 1995-12-20 1998-04-14 Intel Corporation 128-bit register file and 128-bit floating point load and store for quadruple precision compatibility
US5764959A (en) * 1995-12-20 1998-06-09 Intel Corporation Adaptive 128-bit floating point load and store instructions for quad-precision compatibility
US6012139A (en) * 1996-01-31 2000-01-04 Hitachi Micro Systems, Inc. Microprocessor including floating point unit with 16-bit fixed length instruction set
JP3510729B2 (ja) * 1996-02-29 2004-03-29 三洋電機株式会社 命令実行方法および命令実行装置
US6665792B1 (en) * 1996-11-13 2003-12-16 Intel Corporation Interface to a memory system for a processor having a replay system
US7200737B1 (en) * 1996-11-13 2007-04-03 Intel Corporation Processor with a replay system that includes a replay queue for improved throughput
US6233599B1 (en) * 1997-07-10 2001-05-15 International Business Machines Corporation Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers
US5928356A (en) * 1997-10-11 1999-07-27 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for selectively controlling groups of registers
US6018798A (en) * 1997-12-18 2000-01-25 Advanced Micro Devices, Inc. Floating point unit using a central window for storing instructions capable of executing multiple instructions in a single clock cycle
US6145049A (en) * 1997-12-29 2000-11-07 Stmicroelectronics, Inc. Method and apparatus for providing fast switching between floating point and multimedia instructions using any combination of a first register file set and a second register file set
US6298431B1 (en) * 1997-12-31 2001-10-02 Intel Corporation Banked shadowed register file
US6272520B1 (en) * 1997-12-31 2001-08-07 Intel Corporation Method for detecting thread switch events
KR100280460B1 (ko) * 1998-04-08 2001-02-01 김영환 데이터 처리 장치 및 이의 복수의 스레드 처리 방법
US6170001B1 (en) * 1998-05-27 2001-01-02 Arm Limited System for transfering format data from format register to memory wherein format data indicating the distribution of single or double precision data type in the register bank
US6163839A (en) * 1998-09-30 2000-12-19 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer
US6314510B1 (en) * 1999-04-14 2001-11-06 Sun Microsystems, Inc. Microprocessor with reduced context switching overhead and corresponding method
US6405305B1 (en) * 1999-09-10 2002-06-11 Advanced Micro Devices, Inc. Rapid execution of floating point load control word instructions
US6629271B1 (en) * 1999-12-28 2003-09-30 Intel Corporation Technique for synchronizing faults in a processor having a replay system
US6587937B1 (en) * 2000-03-31 2003-07-01 Rockwell Collins, Inc. Multiple virtual machine system with efficient cache memory design

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0333366A2 (en) * 1988-03-18 1989-09-20 Digital Equipment Corporation Context switching method and apparatus for use in a vector processing system
JPH0581015A (ja) * 1991-03-14 1993-04-02 Fujitsu Ltd パイプライン演算制御方法およびシステム
KR930014114A (ko) * 1991-12-31 1993-07-22 경상현 멀티미디어 지식처리를 위한 병렬처리 컴퓨터구조
KR20020064285A (ko) * 1999-09-17 2002-08-07 터보 데이터 라보라토리 유겐가이샤 병렬 컴퓨터의 구조 및 그 구조를 이용한 정보처리유닛

Also Published As

Publication number Publication date
US20080215859A1 (en) 2008-09-04
EP1785862A3 (en) 2007-08-15
EP1132813A3 (en) 2003-12-17
EP1785863A3 (en) 2007-07-18
EP1132813A2 (en) 2001-09-12
EP1785863A2 (en) 2007-05-16
US20010049781A1 (en) 2001-12-06
KR20010085353A (ko) 2001-09-07
EP1785862A2 (en) 2007-05-16

Similar Documents

Publication Publication Date Title
EP0205809B1 (en) Vector processing
US5075840A (en) Tightly coupled multiprocessor instruction synchronization
KR100346515B1 (ko) 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일
US6148395A (en) Shared floating-point unit in a single chip multiprocessor
EP1046983A1 (en) VLIW processor and program code compression device and method
WO2012106716A1 (en) Processor with a hybrid instruction queue with instruction elaboration between sections
US6275903B1 (en) Stack cache miss handling
CN115934168A (zh) 处理器和内存访问方法
KR100864890B1 (ko) 데이터 처리장치에서의 소스 레지스터 록킹
US6851033B2 (en) Memory access prediction in a data processing apparatus
US5349671A (en) Microprocessor system generating instruction fetch addresses at high speed
KR100732426B1 (ko) 고속 컨텍스트 전환을 갖는 컴퓨터
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
US6237086B1 (en) 1 Method to prevent pipeline stalls in superscalar stack based computing systems
CN114546497B (zh) 乱序处理器中队列的访问方法及装置
US6170050B1 (en) Length decoder for variable length data
JPH02162422A (ja) 優先ブランチ機構を備えたデータ処理システム
JPH11316681A (ja) 命令バッファへのロ―ド方法、装置およびプロセッサ
US5765221A (en) Method and system of addressing which minimize memory utilized to store logical addresses by storing high order bits within a register
US8683181B2 (en) Processor and method for distributing load among plural pipeline units
JPH04104350A (ja) マイクロプロセッサ
JP5786719B2 (ja) ベクトルプロセッサ
JPS61136132A (ja) 情報処理装置
JP3956652B2 (ja) プロセッサシステム
JPH10116191A (ja) 圧縮命令用バッファを備えたプロセッサ

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
G170 Re-publication after modification of scope of protection [patent]
FPAY Annual fee payment

Payment date: 20100610

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee