KR100266424B1 - 롬(rom)용량을 저감한 데이타 프로세서 - Google Patents

롬(rom)용량을 저감한 데이타 프로세서 Download PDF

Info

Publication number
KR100266424B1
KR100266424B1 KR1019930001903A KR930001903A KR100266424B1 KR 100266424 B1 KR100266424 B1 KR 100266424B1 KR 1019930001903 A KR1019930001903 A KR 1019930001903A KR 930001903 A KR930001903 A KR 930001903A KR 100266424 B1 KR100266424 B1 KR 100266424B1
Authority
KR
South Korea
Prior art keywords
instruction
command
output
rom
decoder
Prior art date
Application number
KR1019930001903A
Other languages
English (en)
Other versions
KR930018368A (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 KR930018368A publication Critical patent/KR930018368A/ko
Application granted granted Critical
Publication of KR100266424B1 publication Critical patent/KR100266424B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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, 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

기본 명령 및 고기능 명령을 조합하는 명령 세트를 처리하고, 여러 개의 기본 명령을 병렬 실행할 수 있고 기본 명령 및 고기능 명령을 고속으로 실행할 수 있는 데이타 프로세서로서, 예를 들면, 80486마이크로프로세서에서는 어드레스 계산용을 제외한 제어 신호가 모든 명령에 대하여 ROM 출력으로서 얻어지고, 그러한 마이크로프로세서에서는 모든 명령이 마이크로프로그램을 필요로하므로 ROM 용량이 증가하고, 그것에 따라 ROM 면적도 증가며, 전력 소비도 증가되어, 동작 속도가 늦어지는 것을 해소하기 위하여, 데이타 프로세서는 명령 디코더의 출력 또는 마이크로프로그램 ROM의 출력중의 하나를 선택하여 명령 실행 유닛 제어 신호를 발생한다.
이러한 데이타 프로세서를 사용하는 것에 의해, 기본 명령 실행에 ROM을 사용할 필요가 없어, ROM의 용량이 기본 명령수에 대응하는 양만큼 저감되므로, ROM의 면적 및 소비 전력이 저감되어, 동작 속도가 향상된다.

Description

롬 (ROM) 용량을 저감한 데이타 프로세서
제1도는 본 발명의 구체적 실시예에 따른 2개의 명령을 병렬 실행할 수 있는 마이크로프로세서의 구조를 도시한 블럭도.
제2도는 본 발명자의 연구에 의해 묘화된 2개의 명령을 병렬 실행할 수 있는 마이크로프로세서의 구조를 도시한 블럭도.
제3도는 본 발명의 1실시예에 따른 마이크로프로세서의 파이프라인 동작을 설명하는 도면.
제4도는 제2도에 도시한 마이크로프로세서의 파이프라인 동작을 설명하는 도면.
제5도는 제8도에 도시한 종래 마이크로세서의 파이프라인 동작을 설명하는 도면.
제6도는 본 발명의 기본적인 실시예에 따른 마이크로프로세서의 구조를 도시한 블럭도.
제7도는 종래 마이크로프로세서의 구조를 도시한 블럭도.
제8도는 다른 종래 마이크로프로세서 구조를 도시한 블럭도.
제9도는 제8도에 도시한 종래 마이크로프레서를 사용하여 고기능 명령을 실행할때의 파이프라인 동작을 설명하는 도면.
본 발명은 마이크로프로세서등의 데이타 프로세서에 관한 것으로, 특히 기본 명령 및 고기능 명령을 포함하는 명령 세트를 처리하고, 여러개의 기본 명령을 병렬 실행할 수 있고 기본 명령 및 고기능 명령을 고속으로 실행할 수 있는 데이타 프로세서용 시스템에 관한 것이다. 기본 명령은 명령 실행 유닛을 한번 사용하여 실행할 수 있는 명령이고, 고기능 명령은 명령 실행 유닛을 2번이상 사용할 필요가 있는 명령이다.
기본 명령및 고기능 명령을 포함하는 명령 세트를 실행할 수 있는 종래 마이크로프로세서로서는 예를 들면, "BYTE, November 1989, VOL.14/No. 12, pp. 323-329"에 기재된 80486및 "NIKKEI ELECTRONICS 1990. 1.8 (No. 490), pp. 177-186"에 기재된 i960CA등이 있다.
제7도에 도시한 바와 같이, 80486마이크로프로세서는 명령 폐치 유닛(10), 명령 디코더(20), 마이크로프로그램 ROM (30), 어드레스 계산 유닛 (120), 명령 실행 유닛(50)으로 구성되어 있다. 동작시, 명령에 포함되고 디코드되는 명령 코드(60)은 명령 폐치 유닛(10)에서 명령 디코더(20)으로 보내진다.
다음에 디코드될 명령 코드의 위치를 지시하는 다음 명령 코드 위치 지정 신호(70)은 명령 디코더(20)에서 명령 폐치 유닛(10)으로 보내진다. 명령의 디코드 결과의 일부인 ROM 어드레스(100)은 명령 디코더(20)에서 마이크로프로그램 ROM(30)으로 보내진다. 명령 실행 유닛 제어 신호(130)은 마이크로프로그램 ROM(30)에서 명령 실행 유닛(50)으로 보내진다. 명령의 디코드 결과의 다른 일부인 어드레스 계산 유닛 제어 신호(130)은 명령 디코더(20)에서 어드레스 계산 유닛(120)으로 보내지고, 메모리 엑세스 어드레스(140)은 어드레스 계산 유닛(120)에서 명령 실행 유닛(50)으로 보내진다.
제4도에 도시한 바와 같이, 80486마이크로프로세서는 프리페치 스테이지 PF, 제1의 디코드 스테이지 D1, 제2의 디코드 스테이지 D2, 실행 스테이지 EX 및 라이트 백 스테이지 WB를 구비하는 5개의 파이프라인 스테이지를 갖는다.
프리페치 스테이지 PF에서, 명령 페치 유닛(10)은 메인 메모리 또는 캐시 (도시하지 않음)에서 명령을 페치하여, 명령 페치 유닛(10)의 프리페치 큐에 그것을 저장한다. 명령 페치 유닛(10)은 명령 디코더(20)으로 부터의 다음 명령 코드 위치지정 신호(70)에 따라, 명령 디코더(20)에 다음에 디코드될 명령을 공급한다.
제1의 디코드 스테이지 D1에서, 명령 페치 유닛(10)에서 명령 디코더(20)으로 공급된 명령 코드(60)가 디코드되어, ROM 어드레스 (100) 및 어드레스 계산 유닛 제어 신호 (130)이 명령 디코드 결과로서 발생된다.
제2의 디코드 스테이지 D2에서, 명령 실행 유닛 제어 신호(110)은 명령 디코더(20)으로 부터 공급된 ROM 어드레스(100)에서 마이크로프로그램 ROM(30)으로 부터 리드되고, 어드레스 계산 유닛(120)은 어드레스 계산 유닛 제어 신호(130)에 따라 메모리 액세스 어드레스(140)을 계산한다.
실행 스테이지 EX에서, 명령 실행 유닛(50)의 산술 논리 유닛(ALU) (도시하지 않음)은 명령 실행 유닛 제어 신호(110)에 따라 산술 논리 연산을 실행하거나 또는 명령 실행 유닛(50)의 메모리 액세스 회로는 메모리 액세스 어드레스(140)으로 메모리를 액세스한다. 명령 실행 유닛(50)은 다른 연산을 실행한다. 이 메모리 액세스는 어드레스 계산 유닛(120)에서 공급된 메모리 액세스 어드레스(140)을 사용하여 즉시 실행된다.
라이트 백 슬이지WB에서, 실행 스테이지EX의 메모리 페치 데이타 또는 연산 결과는 레지스터 화일 (도시하지 않음)에 저장된다.
상술한 바와 같이, 80486마이크로프로세서에서는 제어 신호가 어드세스 계산을 위한 제어 신호를 제외하고 항상 마이크로프로그램 ROM(30)으로 부터 출력으로서 얻어진다.
i960CA에서는 고기능 명령만이 마이크로프로그램 ROM에서 출력된 제어 신호에 따라 실행된다. 즉, 고기능 명령은 기본 명령으로 분할되어 마이크로프로그램 ROM에 저장된다. 따라서, 고기능 명령은 명령 코드가 아닌 마이크로프로그램 ROM으로 부터의 출력에 따라 실행된다. 구체적으로, 제8도에 도시한 바와 같이, i960CA 마이크로프로세서는 명령 페치 유닛(10), 명령 디코더(20), 마이크로프로그램 ROM (30), 명령 디코더 입력 셀렉터(150) 및 명령 실행 유닛(50)으로 구성되어 있다. 명령 코드(60)은 명령 페치 유닛(10)에서 명령 디코더 입력 셀렉터(150)으로 보내진다. ROM출력(90)은 마이크로프로그램 ROM (30)에서 명령 디코더 입력 셀렉터(150)으로 보내진다. 명령 디코더 입력(160)은 명령 디코더 출력 셀렉터(150)에서 명령 디코더(20)으로 보내진다. 다음 명령 코드 위치 지정 신호는 명령 디코더(20)에서 명령 페치 유닛(10)으로 보내진다. ROM 어드레스(100)은 명령 디코더(20)에서 마이크로프로그램ROM (30)으로 보내진다. 명령 디코더 입력 선택 신호(170)은 명령 디코더(20)에서 명령 디코더 입력 셀렉터(150)으로 보내진다. 명령 실행 유닛 제어 신호(110)은 명령 디코더(20)에서 명령 실행 유닛(50)으로 보내진다.
제5도에 도시한 바와 같이, 마이크로프로세서 i960CA는 프리페치 스테이지 PF, 디코드 스테이지 ID 및 실행 스테이지 EX를 구비하는 3개의 파이프라인 스테이지를 갖는다.
프리페치 스테이지 PF에서, 기본 명령을 실행하는 동안, 명령 페치 유닛(10)은 명령 코드(60)을 페치하여 프리페치 큐에 그것을 저장하고, 명령 코드(60)은 명령 디코더 입력 셀렉터(150)을 거쳐 명령 디코더(20)으로, 명령 디코더(20)으로 부터는 다음 명령 코드 위치 지정 신호(70)에 따라 공급된다. 한편, 고기능 명령을 실행하는 동안, ROM 출력 (90)은 마이크로프로그램ROM(30)에서 리드되어 명령 디코더 입력 셀렉터(150)을 거쳐 명령 디코더(20)으로 공급된다.
디코드 스테이지 ID에서, 명령 디코더(20)은 명령 페치 유닛(10)으로 부터의 명령 코드(60) 또는 마이크로프로그램ROM(30)으로 부터의 ROM 출력(90)을 디코드하여 명령 실행 유닛 제어 신호(110)을 발생하고, 디코드된 명령이 고기능 명령이면, ROM 어드레스(110)을 발생하여 명령 디코더 입력 선택 신호(170)을 ROM 출력 선택측으로 변경한다.
실행 스테이지 EX에서, 명령 실행 유닛(50)은 산술 논리 연산 메모리 액세스 또는 다른 동작을 실행한다.
상술한 바와 같이, 80486 마이크로프로세서에서는 어드레스 계산용을 제외한 제어 신호가 모든 명령에 대하여 ROM 출력으로서 얻어진다. 그러한 마이크로프러세서에서는 모든 명령이 마이크로프로그램을 필요로하므로, ROM 용량이 증가하고, 그것에 따라 ROM 면적도 증가하며, 전력 소비도 증가되어, 동작 속도가 늦어진다는 문제가 있다.
또한, 마이크로프로그램ROM이 계속해서 인에이블되므로, ROM에 의한 전력 소비가 마이크로프로세서 전체 전력 소비의 큰 부분을 점유하여 버린다. 마이크로프로세서의 집적도 및 동작 주파수가 높아질수록, 마이크로프로세서에 의한 전력 소비도 많아진다. 따라서, 전력 소비의 증가를 억제하여, ROM에 의한 전력 소비를 억제할 필요가 있다.
또한, 여러개의 명령, 예를 들면 2개의 명령을 병렬 실행하는 경우에, 마이크로프로세서의 구조는 제2도에 도시한 바와 같이 된다. 제2도에 도시한 구조로, 두개의 명령의 각각은 그자신의 명령 디코더 뿐만아니라 그자신의 ROM도 필요로 한다. 따라서, 두개의 명령의 병렬 실행에는 두개의 ROM이 필요하게 된다. 다른 문제는 두개의 명령 실행 유닛을 사용하여 두개의 고기능 명령을 실행하는 데는 두개의 독립적인 ROM을 사용하는 제어가 필요하다는 것이다.
즉, 제2도에서, (101), (102), (131), (132), (141) 및 (142)에 각각 대응하는 ROM 어드레스 (1) 및 (2), 어드레스 계산 유닛 제어 신호 (1) 및 (2), 메모리 액세스 신호 (1) 및 (2)는 중복된다.
상술한 바와 같이, i960CA마이크로프로세서는 ROM을 사용하지 않고 기본 명령을 실행하고, ROM을 사용하여 고기능 명령을 실행한다. 제9도에 도시한 바와 같이, 고기능 명령의 실행 개시시에 리드 ROM의 오버헤드가 나타나서, 파이프라인의 하나의 사이클이 비게된다. 예를 들면, 그의 실행을 완료하기 위해 두개 또는 세개의 사이클을 필요로하는 고기능 명령을 고려하면, 파이프라인의 이공간에 의한 성능 저하를 무시할 수 없다.
또한, 여러개의 명령의 병렬 처리의 경우, 예를 들면, 고기능 명령 및 다음 명령이 디코더에 동시에 공급되면, 고기능 명령 다음의 명령에 대한 프리페치 스테이지는 새롭게 실행될 필요가 있다.
따라서, 명령 디코더는 디코드된 명령이 고기능 명령인가 기본 명령인가에 따라, 명령 페치 유닛으로 출력될 다음 명령 코드 위치 지정 신호를 바꿀 필요가 있다. 그러한 시스템에서, 고기능 명령과 기본 명령사이의 판별용 풀 명령 코드를 필요로하는 프로세서는 다음 명령 코드 위치 지정 신호의 발생을 위해 시간을 소비한다. 그 결과, 명령 디코더에 명령 코드를 공급하는 사이클 시간이 길게되어, 성능이 떨어져 버린다.
본 발명의 목적은 명령 실행 유닛을 한번 사용하는 기본 명령 및 명령 실행 유닛을 두번이상 사용할 필요가 있는 고기능 명령을 효과적으로 실행할 수 있고, 마이크로프로그램ROM의 용량을 저감할 수 있는 데이타 프로세서를 제공하는 것이다.
상기 목적을 달성하기 위해, 본 발명의 대표적인 데이타 프로세서는 명령 디코더의 출력 또는 마이크로프로그램ROM의 출력중의 하나를 선택하여 명령 실행 유닛 제어 신호를 발생한다. 구체적으로, 어떤 경우에 명령 실행 유닛 제어 신호는 명령 디코더의 출력을 선택하여 발생될 수 있고, 나머지 경우에는 명령 실행 유닛 제어 신호의 일부 또는 전부가 마이크로프로그램ROM의 출력을 선택하여 발생될 수 있고 나머지 제어 신호는 명령 디코더의 출력을 선택하여 발생될 수 있다.
여러개의 명령을 실행할 수 있는 데이타 프로세서는 대응하는 여러개의 명령 디코더 및 명령 실행 유닛을 갖는다. 하나의 마이크로프로그램ROM은 여러개의 명령 실행 유닛을 제어하는 신호를 출력한다. 명령 실행 유닛 제어 신호는 여러개의 명령 디코더 또는 하나의 마이크로프로그램ROM의 출력을 선택하는 것에 의해 발생된다. 즉, 어떤 경우에, 명령 실행 유닛 제어 신호는 명령 디코더의 출력에서 발생될 수 있고, 다른 경우에는 명령 실행 유닛 제어 신호의 일부 또는 전부가 마이크로프로그램ROM의 출력에서 발생되고 나머지 제어 신호가 명령 디코더의 출력에서 발생된다.
명령 실행 유닛을 한번 사용하여 실행될 수 있는 기본 명령은 명령 디코더 출력에서만 발생된 명령 실행 유닛 제어 신호에 따라 명령 실행 유닛을 제어하여 실행된다. 명령 실행 유닛을 두번 이상 사용하여 실행될 필요가 있는 고기능 명령은 첫번째 스텝 처리에서는 명령 디코더에서만 발생된 명령 실행 유닛 제어 신호에 따라 명령 실행 유닛을 제어하고, 두번째 이후 처리에서는 마이크로프로그램ROM 출력에서 발생된 제어 신호의 일부 또는 전부에 따라 그리고 명령 디코더 출력에서 발생된 나머지 제어 신호에 따라 명령 실행 유닛을 제어하는 것에 의해 실행된다. 따라서, 기본 명령 실행에 ROM을 사용할 필요가 없어, ROM의 용량이 기본 명령수에 대응하는 양만큼 저감되므로, ROM의 면적 및 소비 전력이 저감되어, 동작 속도가 향상된다. 또한, 프로그램에서 출현 빈도가 높은 기본 명령을 실행할때 ROM이 인에이블되지 않으므로, 프로세서의 평균 전력 소비를 저감할 수 있다.
또한, 하나의 ROM을 사용하여 여러개의 기본 명령을 병렬 실행할 수 있고, 모든 명령 실행 유닛을 사용하여 고기능 명령의 두번째 이후 스텝 처리를 고속으로 실행시킬 수 있다.
본 발명의 상기 및 그밖의 목적과 새로운 특징은 본 명세서의 기술 및 첨부 도면에 의해 더욱 명확하게 될 것이다.
이하, 본 발명의 실시예를 도면에 따라 설명한다.
[기본적인 실시예의 마이크로프로세서의 구조]
제6도는 본 발명의 기본적인 실시예에 따른 마이크로프로세서의 구조를 도시한 것이다. 마이크로프로세서는 명령 페치 유닛(10), 명령 디코더(20), 마이크로프로그램ROM(30), 제어 신호 셀렉터(40) 및 명령 실행 유닛(50)으로 구성되어 있다.
[기본 동작]
명령 페치 유닛(10)은 메인 메모리 또는 캐시 메모리(도시하지 않음)에서 명령을 페치하고, 명령 코드(60)은 명령 페치 유닛(10)에서 명령 디코더(20)으로 보내진다. 명령 페치 유닛(10)은 다음에 디코드될 명령 코드(60)을 명령 디코더(20)으로 부터의 다음 명령 코드 위치 지정 신호(70)에 따라 명령 디코더(20)에 공급한다. 명령 디코더(20)에 의한 디코드 결과인 명령 디코더 출력(80)은 제어 신호 셀렉터(40)으로 보내지고, 마이크로프로그램ROM(30)으로 부터의 마이크로프로그램ROM 출력(90)은 제어 신호 셀렉터(40)으로 보내진다. 제어 신호 셀렉터(40)으로 부터의 ROM 어드레스(100)은 마이크로프로그램ROM(30)으로 보내지고, 제어 신호 셀렉터(40)으로 부터의 명령 실행 유닛 제어 신호(110)은 명령 실행 유닛(50)으로 보내진다.
[파이프라인]
제3도에 도시한 바와 같이, 제6도에 도시한 이 실시예의 마이크로프로세서는 명령 페치 스테이지 I,명령 디코드 스테이지 D, 실행 스테이지 E, 메모리 액세스 스테이지 A 및 레지스터 스토어 스테이지 S를 구비하는 5개의 파이프라인 스페이지를 갖는다.
명령 스테이지 I에서, 명령 페치 유닛(10)이 동작한다. 명령 디코드 스테이지D에서, 명령 디코더(20), 마이크로프로그램ROM(30), 제어 신호 셀렉터(40)은 명령 실행 유닛 제어 신호(110)을 발생할 수 있다. 실행 스테이지 E, 메모리 액세스 스테이지 A 및 레지스터 스토어 스테이지 S의 각각에서, 명령 실행 유닛(50)은 연산, 메모리 액세스 또는 레지스터 스토어를 실행한다. 명령 실행 유닛(50)을 한번 사용하여 실행될 수 있는 기본 명령은 5개의 파이프라인 스테이지의 각 스테이지를 한번 동작시켜 실행된다. 한편, 명령 실행 유닛(50)을 두번이상 사용하여 실행될 필요가 있는 고기는 명령은 각 스테이지를 두번이상 실행한다.
이하, 기본 명령을 실행할때의 파이프라인 동작을 먼저 상세히 설명한다.
명령 페치 스테이지 I에서, 명령 페치 유닛(10)은 메인 메모리 또는 캐시 메모리에서 명령을 페치하여 내부 프로페치 큐에 그것을 저장한다. 그와 동시에, 명령 페치 유닛(10)은 다음에 디코드될 명령 코드를 다음 명령 코드 위치 지정 신호(70)에 따라 명령 디코더(20)에 공급한다. 이 방식에서, 명령 페치 유닛(10)은 다음 명령 코드 위치 지정 신호(70)에 따른 명령 디코더(20)로의 명령 코드(60)의 공급과 병행하여, 명령 코드를 페치하여 그의 프리페치 큐에 유지한다. 명령 페치 스테이지를 실행함과 동시에 명령 디코더(20)에 의해 실행된 이전 명령의 명령 디코드 스테이지의 전반부에서, 다음 명령 코드 위치 지정 신호(70)이 발생되어 명령 페치 유닛(10)으로 공급된다. 따라서, 프리페치 큐에서의 명령 코드(60)의 선택이 명령 페치 스테이지 I의 후반부에서 실행된다.
명령 디코드 스테이지 D에서, 명령 디코더(20)은 이 스테이지의 전반부에서 명령 코드(60)을 디코드하여 명령 길이를 판정하고, 다음 명령 코드 위치 지정 신호(70)을 발생한다. 명령 디코더(20)은 명령 디코더 출력(80)을 발생하여 제어 신호 셀렉터(40)에 그것을 공급한다. 제어 신호 셀렉터(40)은 ROM 어드레스(100) 및 명령 실행 유닛 제어 신호(110)으로서 명령 디코더 출력(80)을 선택하여 마이크로프러그램ROM (30) 및 명령 실행 유닛(50)에 그들을 각각 공급한다. 그러나, 기본 명령을 실행하는 경우, 마이크로프로그램ROM (30)에 공급된 ROM 어드레스(100)은 마이크로프로그램ROM (30)을 동작시키지 않으므로, 마이크로프로그램ROM 출력(90)은 발생되지 않는다.
실행 스테이지 E에서, 명령 디코더 출력(80)인 명령 실행 유닛 제어 신호(110)에 따라, 명령 실행 유닛(90)은 어드레스 계산, 산술 논리 연산, 분기 조건 판별등을 실행한다. 명령 실행 유닛 제어 신호(110)중, 메모리 액세스 및 레지스터 스토어의 제어 정보는 하나의 사이클동안 명령 실행 유닛(50)에 의해 유지 된다.
메모리 액세스 스테이지A에서, 실행 스테이지E 동안 유지된 메모리 액세스 제어 정보에 따라, 명령 실행 유닛(50)은 데이타 페치, 데이타 스토어 또는 데이타 유지를 실행한다. 데이타 페치 또는 데이타 스토어를 위한 어드레스는 실행 스테이지E에서 계산된다. 데이타 유지라 함은 레지스터간 연산 명령등의 메모리 액세를 필요로하지 않는 명령을 실행하기 위하여, 실행 스테이지에서 얻은 결과를 다음 레지스터 스토어 스테이지S 동안 유지하는 것을 의미한다. 레지스터 스토어 스테이지S에서, 메모리 액세스 스테이지A 동안 유지된 레지스터 스토어 제어 정보에 따라, 명령 실행 유닛(50)은 메모리 액세스 스테이지A 동안 유지된 또는 페치된 데이타를 레지스터에 저장한다.
[고기능 명령 실행시의 파이프라인]
이하, 고기능 명령을 실행할때의 파이프라인 동작을 상세히 설명한다.
상술한 바와 같이, 고기능 명령을 실행하기 위해서는 명령 실행 유닛(50)을 두번이상 사용할 필요가 있다. 명령 페치 스테이지I, 디코드 스테이지D, 실행 스테이지E, 메모리 액세스 스테이지A 및 레지스터 스토어 스테이지S의 각각에서 고기능 명령을 실행하는 첫번째 스텝은 기본 명령의 그것과 동일하다. 따라서, 마이크로프로그램ROM(30) 및 그의 출력(90)은 사용되지 않는다.
실행 스테이지E, 메모리 액세스 스테이지A 및 레지스터 스토어 스테이지S의 각각에서의 두번째이후 처리는 기본 명령의 그것과 동일하다.
두번째 이후 처리의 명령 페치 스테이지 I에서, 명령 디코더(20)은 다음 명령 코드 위치 지정 신호(70)을 실행중인 고기능 명령 다음의 명령에 유지하므로, 명령 페치 유닛(10)은 다음 명령의 명령 코드(60)을 계속해서 출력할 수 있다.
명령 프리페치 큐가 빈 영역을 가지면, 빈 공간이 남지 않도록 명령 페치가 실행된다.
두번째 이후 스텝 처리의 명령 디코드 스테이지D에서, 마이크로프로그램ROM(30)은 액티베이트되거나 인에이블되는 반면, 명령 디코더(20)의 동작은 정지된다. 명령 디코더 출력(80)으로서는 첫번째 스텝에서 유지된 디코드 결고가 계속해서 출력된다.
마이크로프로그램ROM(30)의 서어치 어드레스로서 사용된 것은 디스에이블된 마이크로프로그램ROM (30)에 대해 1스텝전에 제어 신호 셀렉터(40)에 의해 선택된 ROM 어드레스(100)이다.
구체적으로, 첫번째 스텝에서 디스에이블된 마이크로프로그램ROM(30)의 출력(90)은 첫번째 스텝에서 명령 실행 유닛(50)을 제어하는 마이크로 명령을 포함하지 않지만, 두번째 이후 스텝처리에서 명령 실행 유닛(50)을 제어하는 명령의 위치를 지시하는 마이크로 명령 어드레스를 포함한다. 마이크로프로그램ROM(30)의 서어치 어드레스(100)으로서 다음 마이크로 명령 어드레스를 사용하는 것에 의해, 명령 실행 유닛(50)을 제어하는 마이크로 명령은 마이크로프로그램 ROM(30)에서 그의 출력(90)으로 부터 리드될 수 있다.
제어 신호 셀렉터(40)은 ROM 어드레스(100) 및 명령 실행 유닛 제어 신호(110)으로서 마이크로프로그램 ROM 출력(90)을 선택하여 마이크로프로그램ROM (30) 및 명령 실행 유닛(50)에 그들을 공급한다. 명령 실행 유닛 제어 신호(110)중, 명령에 의해 임의로 설정될 수 있는 레지스터 번호, 오퍼런드 크기등의 정보는 명령 디코더 출력(80)을 사용하여 선택될 수 있다.
그 이유는 마이크로프로그램ROM 출력(90)이 명령에 의해 임의로 선택될 수 있는 명령등에 사용되면, 그러한 명령의 각각의 다른 값에 다른 마이크로프로그램이 필요하게 되므로, 마이크로프로그램ROM (30)의 용량이 증가된다. 그러한 동작을 위해, 첫번째 스텝부터 시작해서 계속해서 출력된 명령 디코더 출력(80)이 사용된다. 특정한 종류의 명령 세트는 첫번째 스텝이 아닌 두번째 이후 스텝에서 명령에 의해 임의로 설정될 수 있는 정보를 사용한다. 그러한 명령 세트에 적용할 수 있는 마이크로프로세서에 대하여, 명령에 의해 임의로 설정될 수 있고 두번째 이후 스텝에서 사용될 수 있는 정보가 명령 디코더 출력(80)으로서 출력되어 두번째 이후 스텝이 이 정보를 사용할 수 있게 된다.
명령 디코더 출력(80) 및 마이크로프로그램ROM 출력(90) 중의 하나를 선택하는 제어 신호 셀렉터(40)에 의한 제어는 다음의 방법으로 실행된다. 즉, 최종 스텝 지정 신호가 명령 디코더 출력(80) 및 마이크로프로그램 ROM 출력(90)에 포함되고, 이 최종 스텝 지시 신호는 기본 명령인 경우에 명령 디코더 출력(80)에서 출력되고 고기능 명령인 경우에 마이크로프로그램ROM 출력(90)에서 출력된다.
최종 스텝 지시 신호가 제어 신호 셀렉터(40)에 의해 선택된 출력에 의해 어서트될때, 명령 디코더(20)은 다음 명령에 대하여 디코드 스테이지D에서 동작되고, 제어 신호 셀렉터(40)은 ROM 어드레스(100) 및 명령 실행 유닛 제어 신호(110)으로서 디코드 결과 출력(80)을 선택한다. 최종 스텝 지시 신호가 어서트되지 않으면, 제어 신호 셀렉터(40)은 마이크로프로그램ROM 출력(90)을 선택한다. 최종 스텝 지시 신호 선택에는 상기와 마찬가지 조건이 사용된다.
상기 시스템 구성으로, 기본 명령을 실행할때 마이크로프로그램ROM (30)을 사용하지 않아도 되므로, 기본 명령용 마이크로프로그램ROM (30)의 용량이 저감되고, 마이크로프로그램ROM (30)의 면적 및 소비 전력이 저감되어, 동작 속도가 향상된다. 또한, 항상 명령 디코더 (20)과 마이크로프로그램ROM (30) 중의 하나만이 처리중에 동작하므로, 전력 소비가 더욱 저감된다.
[구체적 실시예]
제1도는 프로세서가 여러개의 명령을 병렬 처리할 수 있는 본 발명의 구체적 실시예에 따른 마이크로프로세서의 구조를 도시한 것이다. 마이크로프로세서는 명령 페치 유닛(10), 제1의 명령 디코더(21), 제2의 명령 디코더(22), 다음 명령 코드 위치 지정 신호 발생기(23), 마이크로프로그램RAM (30), 제어 신호 셀렉터(40), 제1 및 제2의 명령 실행 유닛(51) 및 (52)로 구성되어 있다.
[기본 동작]
제1 및 제2의 명령 코드(61) 및 (62)는 명령 페치 유닛(10)에서 제1 및 제2의 명령 디코더(21) 및 (22)로 병렬 공급된다. 제1 및 제2의 명령 디코더(21) 및 (22)는 제1 및 제2의 코드(61) 및 (62)를 각각 디코드하고, 제1 및 제2의 명령 길이(71) 및 (72)를 결정하고, 이들은 다음 명령 코드 위치 지정 신호 발생기(23)에 보내진다. 이것에 따라 발생기(23)은 명령 페치 유닛(10)에 다음 명령 코드 위치 지정 신호(70)을 공급한다. 제1 및 제2의 명령 디코더(21) 및 (22)는 제어 신호 셀렉터(40)에 제1 및 제2의 명령 디코더 출력(81) 및 (82)를 공급한다. 마이크로프로그램ROM(30)은 제어 신호 셀렉터(40)에 마이크로프로그램ROM 출력(90)을 공급한다. ROM 어드레스(100)은 제어 신호 셀렉터(40)에서 마이크로프램그램ROM(30)으로 공급되고, 제1 및 제2의 명령 실행 유닛 제어 신호(111) 및 (112)는 제1 및 제2의 명령 실행 유닛(51) 및 (52)로 각각 공급된다.
[파이프라인]
제3도에 도시한 바와 같이, 제1도에 도시한 이 실시예의 마이크로프로세서는 명령 페치 스테이지I, 명령 디코드 스테이지D, 실행 스테이지E, 메모리 액세스 스테이지A, 레지스터 스토어 스테이지S를 구비하는 5개의 파이프라인 스테이지를 갖는다.
명령 스테이지I에서, 명령 페치 유닛(10)이 동작한다. 명령 디코드 스테이지D에서, 제1 및 제2의 명령 디코더(21) 및 (22), 다음 명령 코드 위치 지정 신호 발생기(23), 마이크로 프로그램ROM(30), 제어 신호 셀렉터(40)은 제1 및 제2의 명령 실행 유닛 제어 신호(111) 및 (112)를 발생할 수 있다. 실행 스테이지E, 메모리 액세스 스테이지A, 레지스터 스토어 스테이지S의 각각에서, 제1 및 제2의 명령 실행 유닛(51) 및 (52)는 연산, 메모리 액세스 또는 레지스터 스토어를 실행한다.
[기본 명령 및 고기능 명령 실행의 개요]
제1 또는 제2의 명령 실행 유닛(51) 또는 (52)를 한번 사용하여 실행할 수 있는 기본 명령은 5개의 파이프라인 스테이지의 각 스테이지를 한번 동작시켜 실행된다. 한편 기본 명령 이외의 명령, 즉 고기능 명령은 각 스테이지를 두번이상 동작시켜 실행된다.
[기본 명령 실행]
이하, 두개의 기본 명령을 병렬 실행할때의 파이프라인 동작을 먼저 상세히 설명한다.
명령 페치 스테이지I에서, 명령 페치 유닛(10)은 제1 및 제2의 명령 디코더(21) 및 (22)에 제1 및 제2의 명령 코드(61) 및 (62)를 병렬 공급한다. 명령 페치 유닛(10)은 명령 코드를 페치하여 사전에 유지하는 프리페치 큐를 가지므로 다음 명령 코드 위치 지정 신호(70)에 따라, 제1의 명령 코드(61)이 제1의 명령 디코더(21)에 공급되고, 제1의 명령 코드(61)에 대한 다음 코드는 제2의 명령 코드(62)로서 제2의 명령 디코더(22)에 공급된다. 여기서 사용하는 "다음 코드"는 제1의 명령 코드(61)이 최소 명령 길이를 가지면, 제1의 명령 코드(61) 다음의 명령 코드이다. 제1의 명령 코드(61)이 최소 명령 길이를 갖지 않으면, 제2의 명령 코드(62)는 제1의 명령 코드(61)의 확장부이다. 다음 명령 코드 위치 지정 신호(70)은 현재 명령의 명령 페치 스테이지와 동시에 실행된 이전 명령의 명령 디코드 스테이지의 전반부에서 발생되고, 명령 페치 유닛(10)으로 공급된다. 따라서, 프리페치 큐에서 제1 및 제2의 명령 코드(61) 및 (62)를 선택하는 것은 명령 프리페치 스테이지의 후반부에서 실행된다.
명령 디코드 스테이지D에서, 제1 및 제2의 명령 디코더(21) 및 (22)는 이 스테이지의 전반부에서 제1 및 제2의 명령 코드(61) 및 (62)를 디코드하고, 다음 명령 코드 위치 지정 신호 발생기(23)에 제1 및 제2의 명령 길이(71) 및 (72)를 공급한다. 제1 및 제2의 명령 길이(71) 및 (72)에 따라, 다음 명령 코드 위치 지정 신호 발생기(23)은 다음 명령 코드 위치 지정 신호(70)을 발생한다. 제1 및 제2의 명령 디코더(21) 및 (22)는 제1 및 제2의 명령 디코더 출력(81) 및 (82)를 발생하여 제어 신호 셀렉터(40)에 그들을 공급한다. 두개의 기본 명령이 제1 및 제2의 명령 디코더(21) 및 (22)에 의해 병렬로 디코드된후, 제어 신호 셀렉터(40)은 제1 및 제2의 디코더 출력(81) 및 (82)중의 하나를 ROM 어드레스(100)으로서 선택하여 마이크로프로그램 ROM(30)에 공급하고, 제1 및 제2의 명령 실행 유닛 제어 신호(111) 및 (112)로서 제1 및 제2의 명령 디코더 출력(81) 및 (82)를 공급한다. 이 경우, 공급된 ROM 어드레스(100)은 마이크로프로그램 ROM (30)을 디스에이블한다.
제1의 명령 길이(71)이 최소 명령 길이가 아니면, 제2의 명령 코드(62)는 실제 명령 코드가 아닌 제1의 명령 코드의 확장부이다. 그 결과, 제2의 명령 디코더(22)에 의해 발생된 제2의 명령 디코더 출력(82) 및 제2의 명령 길이(72)는 의미없는 정보이다. 이 때문에, 다음 명령 코드 위치 지정 신호 발생기(23)은 제1의 명령 길이(71)에 따라 정확한 다음 명령 코드 위치 지정 신호(70)을 발생한다. 또한, 이 경우, 제2의 명령 디코더(22)는 무의미한 정보로 인해 마이크로프로세서가 오동작하는 것을 피하기 위하여 디스에이블된다.
한편, 제1의 명령 길이(71)이 최소 명령 길이이면, 제2의 명령 코드(62)는 명령 코드이므로, 제2의 명령 길이(72) 및 제2의 명령 디코더 출력(82)는 정확하다. 따라서, 이 경우, 다음 명령 코드 위치 지정 신호 발생기(23)은 제2의 명령 디코더 출력(82)를 무효화하는 일없이, 제2의 명령 길이(72)를 사용하여 다음 명령 코드 위치 지정 신호(70)을 발생한다.
실행 스테이지E, 메모리 액세스 스테이지A, 레지스터 스토어 스테이지S의 각 스테이지에서, 제1 및 제2의 명령 실행 유닛 제어 신호(111) 및 (112)에 따라, 제1 및 제2의 명령 실행 유닛(51) 및 (52)는 명령 실행 유닛 제어 신호(110)에 따라 제6도에 도시한 명령 실행 유닛(50)에 의해 실행된 것과 마찬가지 동작을 실행한다.
상술한 처리에 따라, 제1 및 제2의 명령 실행 유닛(51) 및 (52)는 마이크로프로그램ROM (30)의 ROM출력 (90)을 사용하는 일없이, 제1 및 제2의 명령 디코더 출력(81) 및 (82)를 사용하여 두개의 기본 명령을 병렬 실행할 수 있다.
[고기능 명령의 실행]
이하, 고기능 명령을 실행할때의 파이프라인 동작을 상세히 설명한다.
고기능 명령을 실행하는 각 스테이지에서의 첫번째 스텝 처리는 통상 기본 명령에 대한 것과 마찬가지이다. 즉, 고기능 명령에 대한 첫번째 처리에서, 고기능 명령이 명령 페치 유닛(10)에서 제1 및 제2의 명령 디코더(21) 및 (22)중의 하나(예를 들면 디코더(21))로 공급될때, 신호 셀렉터 유닛(40)은 마이크로프로그램ROM (30)의 출력(90)의 마이크로 명령을 선택하는 일없이 하나의 명령 디코더(21)의 출력을 선택한다. 하나의 명령 디코더(21)의 출력(81)에 따라, 제1 및 제2의 명령 실행 유닛(51) 및 (52) 중의 하나(이 경우, 유닛(51))는 첫번째 스텝 처리를 실행한다. 그러나, 기본 명령을 실행하는 경우와 다음의 점이 다르다. 즉, 제1의 명령 코드(61)이 고기능 명령이고, 제2의 명령 코드(62)가 명령 코드이면, 제2의 명령 디코더 출력(82)는 제1의 명령 코드(61)이 완료될때까지 무효로 된다.
그 이유는 다음과 같다. 제2의 명령 코드(62)가 기본 명령이면, 제2의 명령 코드(62)의 처리는 제2의 명령 디코더 출력(82)가 무효화되지 않으면, 제1의 명령 코드(61)이 완료되기 전에 완료된다. 한편, 제2의 명령 코드(62)가 고기능 명령이면, 두번째 이후 스텝 처리는 마이크로프로그램ROM (30)에서 제1의 명령 코드(61)의 처리와 제2의 명령 코드(62)를 겹친다. 따라서, 제1 및 제2의 명령 실행 유닛(51) 및 (52)는 두번째 이후 스텝 처리에서 두개의 고기능 명령을 동시에 실행할 수 없다.
고기능 명령에 대한 두번째 스텝 처리에서, 신호 셀렉터(40)은 마이크로프로그램ROM(30)의 출력(90)의 마이크로프로그램을 선택하므로, 하나의 명령 실행 유닛(51)은 신호 셀렉터(40)의 출력에서 얻은 마이크로 명령에 따라 두번째 스텝 처리를 실행할 수 있다.
구체적으로, 두번째 이후 스텝 처리부터 명령 페치 스테이지I에서 다음 명령 코드 위치 지정 신호 발생기(23)은 실행중인 고기능 명령 다음의 명령에 대응하는 다음 명령 코드 위치 지정 신호(70)을 유지한다. 따라서, 명령 페치 유닛(10)은 제1 및 제2의 명령 코드(61) 및 (62)로서, 다음 명령 코드 및 그 다음 명령 코드(다음 명령이 최소 명령 길이인 경우)를 계속해서 출력할 수 있다. 명령 프리페치 큐에 공간이 있으면, 빈 공간이 남지 않도록 명령 페치가 실행된다.
두번째 이후 스텝 처리의 명령 디코드 스테이지D에서, 마이크로프로그램ROM (30)은 액티베이트되거나 또는 인에이블되는 반면, 제1 및 제2의 명령 디코더(21) 및 (22)의 동작은 정지된다. 제1 및 제2의 디코더 출력(81) 및 (82)로서, 제1의 스텝에서 유지된 디코드 결과는 계속해서 출력된다. 마이크로프로그램ROM(30)의 서어치 어드레스로서 사용된 것은 제6도에 도시한 실시예와 마찬가지 방법으로 1스텝전에 제어 신호 셀렉터(40)에 의해 선택된 ROM 어드레스(100)이다. 제어 신호 셀렉터(40)은 ROM 어드레스(100)으로서 마이크로프로그램ROM 출력(90)이 다음 마이크로 명령 어드레스를 선택하여, 마이크로프로그램ROM(30)에 그것을 공급한다. 마이크로프로그램ROM(90)의 마이크로 명령은 제1 및 제2의 명령 실행 유닛(51) 및 (52) 중의 선택된 하나에 공급된다. 어떤 유닛을 선택하여 마이크로 명령을 공급할 것이가는 제1 및 제2의 명령 디코더(21) 및 (22) 중의 어떤 것이 고기능 명령을 디코드하였는 가에 따른다. 그러나, 제6도에 도시한 실시예와, 같이, 제1 및 제2의 명령 실행 유닛 제어 신호(111) 및 (112)중, 명령에 의해 임의로 설정될 수 있는 정보는 제1 또는 제2의 정보 디코더 출력(81) 또는 (82)에서 선택되도록 배치된다. 제1 및 제2의 디코더 출력(81) 및 (82)중의 어떤 것을 선택할 것인가도 제1 및 제2의 명령 디코더(21) 및 (22)중의 어떤 것이 고기능 명령을 디코드하였는가에 따른다.
마이크로프로그램ROM 출력(90) 및 제1 및 제2의 명령 디코더 출력(81) 및 (82) 중의 하나를 선택하는 제어 신호 셀렉터 (40)에 의한 제어는 다음과 같이 실행된다. 즉, 최종 스텝지정 신호는 제1 및 제2의 명령 디코더 출력(81) 및 (82)와 마이크로프로그램ROM 출력(90)에 포함되고, 이 최종 스텝 지시 신호는 기본 명령인 경우 제1 또는 제2의 명령 디코더 출력(81) 또는 (82)에서 출력되고 고기능 명령인 경우에는 마이크로프로그램ROM 출력(90)에서 출력된다.
종료 모드 신호도 마이크로프로그램ROM 출력(90)에 포함되고, 종료 모드 신호는 제1의 명령 실행 유닛(51)만을 사용하여 최종 스텝을 실행하는가와 제1 및 제2의 명령 실행 유닛(51) 및 (52)를 사용하여 명령을 실행하는가를 판별한다. 이 종료 모드 신호는 최종 스텝에서 마이크로프로그램ROM 출력(90)으로서 출력될 수 있다.
제2의 명령 디코더 출력(82)가 고기능 명령의 제1의 명령 코드(61)의 처리가 완료될때까지 무효화되지 않으면, 그리고, 최종 스텝 지시 신호가 이전 스텝에서 제어 신호 셀렉터(40)에 의해 선택된 출력에 의해 어서트될때, 제1 및 제2의 명령 디코더(21) 및 (22)는 제1의 명령 코드(61)의 최종 처리가 완료되기 전에 명령 디코드 스테이지에서 동작된다. 이 디코드 동작동안 제1의 명령 코드(61)에 사전에 디코드된 제2의 명령 디코더 출력(82)에 따라 제2의 명령 실행 유닛(52)가 동작하는 동안, 제1의 명령 코드(61)의 최종 처리는 제1의 명령 실행 유닛(51)에 의해 실행될 수 있다.
구체적으로, 제1 및 제2의 명령 디코더(21) 및 (22)에 의한 디코드 결과에서, 제1의 명령 디코더 출력(81)이 유효하고 제1의 명령 코드가 고기능 명령이라고 판정되면, 제1의 명령 디코더 출력(81)은 ROM어드레스 및 최종 스텝 지시 신호로서 선택된다. 최종 스텝 지시 신호가 어서트되지 않으면, 제1 및 제2의 디코더(21) 및 (22)는 동작되지 않지만, 마이크로프로그램ROM이 인에이블되어 제1 및 제2의 명령 실행 유닛 제어 신호(111) 및 (112)와 ROM 어드레스(100)으로서 마이크로프로그램ROM 출력(90)을 선택한다.
제2의 명령 디코더 출력(82)가 제1의 명령 코드(61)이 완료될때가지 무효화되면, 그리고, 최종 스텝 지시 신호가 마이크로프로그램ROM 출력(90)에 의해 어서트되고 종료 모드 신호가 제1의 명령 실행 유닛(51)만의 사용을 나타낼 때, 마이크로프로그램ROM 출력(90)은 제1의 명령 실행 유닛 제어 신호(111)로서 선택되고, 제2의 명령 디코더 출력(82)는 제2의 명령 실행 유닛 제어 신호(112), ROM 어드레스(100), 최종 스텝 지시 신호로서 선택된후, 제2의 명령 디코더(22)를 무효화한다. 다음 명령 디코드 스테이지에서, 제1 및 제2의 명령 디코더(21) 및 (22)가 동작된다. 최종 스텝 지시 신호가 어서트되고 종료 모드 신호가 제1 및 제2의 명령 실행 유닛(51) 및 (52)의 사용을 나타내면, 마이크로프로그램ROM 출력(90)은 ROM 어드레스(100), 제1 및 제2의 명령 실행 유닛 제어 신호(111) 및 (112), 최종 스텝 지시 신호로서 선택되고, 다음 명령 디코드 스테이지에서, 제1 및 제2의 명령 디코더(21) 및 (22)를 동작시키지 않으면, 제1의 명령 디코더 출력(81)은 무효화되고 제2의 명령 디코더 출력(82)는 무효화된다.
상술한 처리에 의해, 제1 및 제2의 명령 디코더 출력(81) 및 (82)를 기본 명령만의 실행중에 선택하고, 고기능 명령을 디코드할때 마이크로프로그램ROM 출력(90)을 선택하며, 고기능 명령의 처리 완료후 다시 제1 및 제2의 명령 디코더 출력(81) 및 (82)를 선택하도록 마이크로프로세서를 제어할 수 있다.
또한, 제1의 명령 디코더(21)이 고기능 명령을 디코드하고, 제2의 명령 디코더(22)가 그의 디코드를 계속하면, 제2의 명령 디코더(22)에 의해 디코드된 명령을 최종 스텝에서 고기능 명령의 처리와 동시에 실행할 수 있다.
실행 스테이지, 메모리 액세스 스테이지 및 레지스터 스토어 스테이지의 두번째 이후 스텝 처리는 기본 명령과 마찬가지이다.
상술한 실시예의 시스템 구성으로, 하나의 마이크로프로그램ROM(30)을 사용하여 두개의 기본 명령을 병렬 실행할 수 있고, 제1 및 제2의 명령 실행 유닛(51) 및 (52)를 사용하여 고기능 명령의 실행을 고속화할 수 있다. 또한, 마이크로프로그램ROM(30)의 면적 및 소비 전력을 저감할 수 있고 프로세서의 동작속도를 향상시킬 수 있다.
본 발명은 상술한 실시예에 한정되지 않고, 본 발명의 기술 개념의 범위내에서 여러가지로 변경할 수 있다. 예를 들면, 3개이상의 기본 명령을 병렬 처리할 수 있는 데이타 프로세서는 3개이상의 명령 디코더 및 3개이상의 명령 실행 유닛을 사용하여 실현될 수 있다.
본 발명에 따르면, 하나의 마이크로프로그램ROM을 사용하여 여러개의 기본 명령을 병렬 처리할 수 있고, 여러개의 명령 실행 유닛을 사용하여 고기능 명령의 실행을 고속화할 수 있다. 기본 명령을 실행할때 마이크로프로그램ROM(30)을 사용할 필요가 없으므로 기본 명령에 대한 마이크로프로그램ROM(30)의 용량이 저감되고, 마이크프로그램ROM(30)의 면적 및 전력 소비도 저감되며, 동작 속도가 향상된다. 또한, 항상 명령 디코더(20)과 마이크로 ROM(30)중의 하나만이 처리중에 동작하므로, 전력 소비를 더욱 저감할 수 있다.

Claims (2)

  1. 명령 페치 유닛, 상기 명령 페치 유닛에서 공급된 명령을 각각 디코드하는 제1 및 제2의 명령 디코더, 마이크로 명령을 저장하는 마이크로 프로그램 ROM, 상기 제1의 명령 디코더의 출력, 상기 제2의 명령 디코더의 출력 및 상기 마이크로 프로그램 ROM의 출력이 입력되는 신호 셀렉터, 상기 신호 셀렉터의 제1의 출력에 의해 제어되는 제1의 명령 실행 유닛 및 상기 신호 셀렉터의 제2의 출력에 의해 제어되는 제2의 명령 실행 유닛을 포함하고, 기본 명령은 상기 제1 및 제2의 명령 실행 유닛을 한번 사용하는 것에 의해 실행되고, 2개의 기본 명령이 상기 제1 및 제2의 명령 디코더에 의해 병렬로 디코드될 때, 상기 신호 셀렉터는 상기 제1 및 제2의 명령 디코더의 상기 출력을 선택해서 상기 제1 및 제2의 출력으로 출력하고, 상기 제1 및 제2의 명령 실행 유닛은 상기 신호 셀렉터의 상기 제1 및 제2의 출력에 전달된 상기 제1 및 제2의 명령 디코더의 상기 출력에 따라 상기 2개의 기본 명령을 실행하고, 고기능 명령은 상기 제1의 명령 실행 유닛을 적어도 두번 사용하는 것에 의해 실행되고, 상기 고기능 명령이 상기 제1의 명령 디코더에 의해 디코드될 때, 상기 고기능 명령의 제1의 스텝처리에서, 상기 신호 셀렉터는 상기 제1의 명령 디코더의 출력을 선택하여 상기 제1의 출력으로 출력하고, 상기 제2의 명령 디코더의 출력을 무효로 하고, 상기 제1의 명령 실행 유닛은 상기 신호 셀렉터의 상기 제1의 출력에 전달된 상기 제1의 명령 디코더의 상기 출력에 따라 상기 제1의 스텝처리를 실행하고, 상기 고기능 명령의 제2의 스텝 처리에서, 상기 신호 셀렉터는 상기 마이크로 프로그램 ROM의 상기 출력의 마이크로 명령을 선택하여 상기 제1의 출력으로 출력하고, 상기 제1의 명령 실행 유닛은 상기 신호 셀렉터의 상기 제1의 출력에 전달된 상기 마이크로 프로그램 ROM의 상기 마이크로 명령에 따라 상기 제2의 스텝처리를 실행하는 데이타 프로세서.
  2. 제1항에 있어서, 상기 제2의 스텝처리에서 상기 제1의 명령 실행 유닛에 의해 상기 마이크로 프로그램 ROM의 상기 마이크로 명령의 최종 스텝 처리를 실행함과 동시에 상기 제2의 명령 실행 유닛은 상기 제2의 명령 디코더의 출력에 따라 명령 실행을 실행하는 데이타 프로세서.
KR1019930001903A 1992-02-20 1993-02-12 롬(rom)용량을 저감한 데이타 프로세서 KR100266424B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP92-033156 1992-02-20
JP03315692A JP3497516B2 (ja) 1992-02-20 1992-02-20 データプロセッサ

Publications (2)

Publication Number Publication Date
KR930018368A KR930018368A (ko) 1993-09-21
KR100266424B1 true KR100266424B1 (ko) 2000-09-15

Family

ID=12378710

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019930001903A KR100266424B1 (ko) 1992-02-20 1993-02-12 롬(rom)용량을 저감한 데이타 프로세서

Country Status (3)

Country Link
US (1) US5394558A (ko)
JP (1) JP3497516B2 (ko)
KR (1) KR100266424B1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3058986B2 (ja) * 1992-04-02 2000-07-04 ダイヤセミコンシステムズ株式会社 コンピュータシステムの節電制御装置
US5644769A (en) * 1993-06-14 1997-07-01 Matsushita Electric Industrial Co., Ltd. System for optimizing program by virtually executing the instruction prior to actual execution of the program to invalidate unnecessary instructions
US5931941A (en) * 1995-04-28 1999-08-03 Lsi Logic Corporation Interface for a modularized computational unit to a CPU
US5687340A (en) * 1995-05-16 1997-11-11 Hewlett-Packard Company Reduced area floating point processor control logic utilizing a decoder between a control unit and the FPU
JP3451595B2 (ja) * 1995-06-07 2003-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ
US5872947A (en) * 1995-10-24 1999-02-16 Advanced Micro Devices, Inc. Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions
US6167665B1 (en) 1996-06-07 2001-01-02 Herman Miller, Inc. Corner post for a wall panel system
US6223485B1 (en) 1996-06-07 2001-05-01 Herman Miller, Inc. Wall panel system
US5867680A (en) * 1996-07-24 1999-02-02 Advanced Micro Devices, Inc. Microprocessor configured to simultaneously dispatch microcode and directly-decoded instructions
US6049863A (en) * 1996-07-24 2000-04-11 Advanced Micro Devices, Inc. Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor
US5991884A (en) * 1996-09-30 1999-11-23 Intel Corporation Method for reducing peak power in dispatching instructions to multiple execution units
DE69838374T2 (de) * 1997-12-23 2008-05-29 Texas Instruments Inc., Dallas Prozessor und Verfahren zum Verringern von dessen Energieverbrauch
GB2353541B (en) 1999-06-04 2003-10-15 Miller Herman Inc Stackable wall panel system
CA2310548A1 (en) 1999-06-04 2000-12-04 Herman Miller, Inc. Stackable wall panel system
US6438664B1 (en) 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
US6729085B2 (en) 2001-02-09 2004-05-04 Herman Miller, Inc. Wall panel system
US7711926B2 (en) * 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
US6834353B2 (en) 2001-10-22 2004-12-21 International Business Machines Corporation Method and apparatus for reducing power consumption of a processing integrated circuit
US6751914B2 (en) * 2002-03-01 2004-06-22 Steelcase Development Corporation Post and beam furniture system
US7204417B2 (en) * 2004-11-03 2007-04-17 The Code Corporation Graphical code reader that is configured for efficient decoder management
US8560810B2 (en) * 2009-08-14 2013-10-15 Via Technologies, Inc. Microprocessor with microtranslator and tail microcode instruction for fast execution of complex macroinstructions having both memory and register forms
WO2013132767A1 (ja) 2012-03-09 2013-09-12 パナソニック株式会社 プロセッサ、マルチプロセッサシステム、コンパイラ、ソフトウェアシステム、メモリ制御システムおよびコンピュータシステム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58106636A (ja) * 1981-12-18 1983-06-25 Hitachi Ltd パイプライン演算装置
US4519033A (en) * 1982-08-02 1985-05-21 Motorola, Inc. Control state sequencer
US4574344A (en) * 1983-09-29 1986-03-04 Tandem Computers Incorporated Entry control store for enhanced CPU pipeline performance
US4812972A (en) * 1984-06-20 1989-03-14 Convex Computer Corporation Microcode computer having dispatch and main control stores for storing the first and the remaining microinstructions of machine instructions
US5202967A (en) * 1988-08-09 1993-04-13 Matsushita Electric Industrial Co., Ltd. Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction
EP0388735A3 (en) * 1989-03-10 1993-01-13 Nec Corporation Microprogram controller having fixed-instruction generator and microprogram memory

Also Published As

Publication number Publication date
JP3497516B2 (ja) 2004-02-16
KR930018368A (ko) 1993-09-21
JPH05233271A (ja) 1993-09-10
US5394558A (en) 1995-02-28

Similar Documents

Publication Publication Date Title
KR100266424B1 (ko) 롬(rom)용량을 저감한 데이타 프로세서
US6029228A (en) Data prefetching of a load target buffer for post-branch instructions based on past prediction accuracy's of branch predictions
US5233694A (en) Pipelined data processor capable of performing instruction fetch stages of a plurality of instructions simultaneously
US5850543A (en) Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return
US5235686A (en) Computer system having mixed macrocode and microcode
KR100233897B1 (ko) 2개의 명령을 병렬 디코드 할수 있는 마이크로프로세서
US5509137A (en) Store processing method in a pipelined cache memory
EP0772821B1 (en) Tagged prefetch and instruction decoder for variable length instruction set and method of operation
EP0427245B1 (en) Data processor capable of simultaneously executing two instructions
US4897787A (en) Data processing system
US11474944B2 (en) Zero latency prefetching in caches
JPH03129433A (ja) 並列処理装置および並列処理方法
JPH04309131A (ja) 命令群用マイクロコード生成装置及びコンピュータにおける組合せ装置
JP2003525476A (ja) プログラムの命令を実行するための装置及び方法
US6687808B2 (en) Data processor using indirect register addressing
US5740418A (en) Pipelined processor carrying out branch prediction by BTB
US20060095746A1 (en) Branch predictor, processor and branch prediction method
US5185870A (en) System to determine if modification of first macroinstruction to execute in fewer clock cycles
JP2682217B2 (ja) マイクロプロセッサ
EP0279953B1 (en) Computer system having mixed macrocode and microcode instruction execution
US5895497A (en) Microprocessor with pipelining, memory size evaluation, micro-op code and tags
US5187782A (en) Data processing system
KR100742002B1 (ko) 캐시 메모리 장치, 및 이를 포함하는 프로세서 및 컴퓨터시스템
JP2685727B2 (ja) データ処理装置
KR20010108104A (ko) 트레이스 기반의 명령어 캐시

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: 20040601

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee