KR920006613B1 - 파이프라인으로 동작하는 프로세서의 명령어 페취 유니트 - Google Patents

파이프라인으로 동작하는 프로세서의 명령어 페취 유니트 Download PDF

Info

Publication number
KR920006613B1
KR920006613B1 KR1019880015983A KR880015983A KR920006613B1 KR 920006613 B1 KR920006613 B1 KR 920006613B1 KR 1019880015983 A KR1019880015983 A KR 1019880015983A KR 880015983 A KR880015983 A KR 880015983A KR 920006613 B1 KR920006613 B1 KR 920006613B1
Authority
KR
South Korea
Prior art keywords
instruction
fetch buffer
instruction fetch
unit
ifb
Prior art date
Application number
KR1019880015983A
Other languages
English (en)
Other versions
KR900010550A (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 재단법인한국전자통신연구소
Priority to KR1019880015983A priority Critical patent/KR920006613B1/ko
Publication of KR900010550A publication Critical patent/KR900010550A/ko
Application granted granted Critical
Publication of KR920006613B1 publication Critical patent/KR920006613B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode

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)

Abstract

내용 없음.

Description

파이프라인으로 동작하는 프로세서의 명령어 페취 유니트
제1도는 본 발명의 명령어 페취 유니트 구조도.
제2도는 본 발명에 의한 명령어 프리페취(prefetch)방법의 절차도.
제3도는 본 발명에 의한 명령어 페취 버퍼의 제어절차 및 플러싱되는 명령어의 위치를 나타낸 상태도.
제4도는 본 발명에서 사용한 조건부 분기 명령어의 일실시예 포맷도.
* 도면의 주요부분에 대한 부호의 설명
IR : 명령어 레지스터부 IFB : 명령어 페취 버퍼부
CNTR : 제어로직부 V : 명령어 페취 버퍼상태 저장부
d : 지연비트
본 발명은 프로세서의 명령어 페취 유니트에 관한 것으로서, 특히, 파이프라인으로 동작하는 프로세서의 명령어 페취 유니트에 곤한 것이다.
근래에는 반도체 기술의 급격한 발전으로 마이크로 프로세서를 이용하여 종래의 수퍼미니급 컴퓨터의 성능을 얻을 수 있게 되었으며, 이들의 대부분은 한 사이클(cycle)에서 하나의 명령어 수행이 가능한 파이프라인 컴퓨터 구조를 가지고 있다.
이러한 수퍼 컴퓨터 시스템을 구현하기 위한 파이프라인은 하나의 연산과정을 여러 부분으로 나누고 각연산 과정을 여러 다른 하드웨어에 할당하여 동시에 수행하는 것을 의미한다.
그리고, 일반적으로 한클럭 사이클은 대부분은 메모리 액세스 시간으로 결정하는데, 메모리를 액세스하는 시간이 프로세서 내부의 한단계에서 소요되는 시간보다 크기 때문에 명령어 페취단계에서 병목현상이 발생하는 단점을 내포하고 있다. 따라서 이를 개선하기 의해 종래에는 고가의 액세스 시간이 빠른 메모리소자를 사용하였으며, 파이프 라인으로 동작하는 프로세서가 명령어의 동시수행으로 인하여 타이밍 해저드(timinghazard)와 시퀀싱 해저드(sequencing hazard)가 발생되는 문제를 해결하기 위하여 지연분기(delayedbranch:상흐 관련이 없는 명령어를 기본 블럭내에서 찾아 분기 명령어 다음으로 이동하여 수행시키는 분기)와 예측분기(squashing branch:분기할 어드레스(branch target address)에 있는 명령어를 분기 명령어다음으로 이동하여 수행시키는 분기)중의 한가지 방법을 채택하여 사용하였으나, 이러한 분기처리는 실패시 예측구간에 있는 2개의 명령어를 플러싱(flushing)시켜야 하는등, 파이프 라인으로 동작하는 프로세서에서 가장 다루기 어렵고 그 성능을 저하시키는 큰 요인중의 하나로 작용되었다.
따라서, 본 발명은 분기가 발생시, 파이프라인이 쉬지 않고 계속 동작할 수 있도록 지연 분기와 예측 분기를 동시에 동적으로 사용하여 분기 명령어 다음의 예측구간에 있는 명령어의 플러싱을 가능한 한 방지함으로써 무동작(NOP:No Operation)빈도를 최소화하는 파이프라인으로 동작하는 프로세서의 명령어 페취유니트를 제공함에 그 목적을 두고 있다.
본 발명은 상기 목적을 달성하기 위하여 프로세서의 명령어 페취 유니트에 있어서, 명령어 캐쉬 메모리(도시되지 않음)에 연결되어 있으며 그로부터 입력되는 1워드 명령어를 저장하는 명령어 페취 버퍼 수단; 상기 명령어 페취 버퍼수단에 연결되어 있으며유효비트를 구비하여 상기 명령어 페취 버퍼수단의 상태를 나타내는 명령어 페취 버퍼상태 저장 수단; 상기 명령어 페취 버퍼수단 및 명령어 캐쉬 메모리에 연결되어있으며 상기 명령어 페취 버퍼 수단으로 부터 입력되거나 또는 명령어 캐쉬 메모리로 부터 직접입력되는 명령어를 받아 명령어 디코더(도시되지 않음)로 출력하는 명령어 레지스터 수단; 및 상기 명령어 레지스터수단 및 명령어 페취 버퍼상태 저장 수단에 연결되어 상기 명령어 페취 버퍼 수단이 비어 있는 상태에서는 명령어 캐쉬 메모리로부터 들어온 명령어가 직접 상기 명령어 레지스터 수단으로 이동되도록 제어하는 제어로직 수단; 으로 구성되어 있는 것을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명을 상세히 설명하기로 한다.
우선, 본 발명의 일실시적용예로서, HARP(한국전자통신연구소에서 개발한 RISC형 프로세서의 고유 모델명임)에 대해 개략적으로 설명하면, 상기 HARP는 CUP, 명령어 캐쉬, 및 데이타 캐쉬의 3개의 칩으로 구성되어 있으며, 대부분의 명령어들이 수행되는 데 5클럭 사이클이 소요되며 파이프라인을 채용하고 있기 때문에 한 사이클 마다 하나의 명령어가 수행되는 것이다.
제1도는 본 발명의 페취 유니트에 대한 구조도로서, 도면에서 IFB는 명령어 페취 버퍼부를, V는 명령어 페취 버퍼상태 저장부를, CNTL은 제어 로직부를, IR은 명령어 레지스터부를 각각 나타낸다.
도면에 도시한 바와같이 본 발명의 명령어 페취 유니트(IFB)는 외부의 명령어 캐쉬 메모리에 연결되어 있으며 그로부터 입력되는 1워드 명령어를 저장하는 명령어 페취 버퍼부(IFB)와, 상기 명령어 페취 버퍼부(IFB)에 연결되어 있으며 유효비트를 구비하여 상기 명령어 페취 버퍼부의 상태를 나타내는 명령어 페취 버퍼상태 저장부(V)와, 상기 명령어 페취 버퍼부 및 외부의 명령어 캐쉬 메모리에 연결되어 있으며 상기 명령어 페취 버퍼부로 부터 입력되거나 또는 명령어 캐쉬 메모리로부터 직접 입력되는 명령어를 외부의 명령어 디코더로 출력하는 명령어 레지스터부(IR)와, 상기 명령어 레지스터부 및 명령어 페취 버퍼상태 저장부에 연결된 제어로직부(CNTL)로 구성된다.
여기에서, 상기 제어로직부(CNTL)는 상기 명령어 페취 버퍼상태 저장부(V)의 유효비트와 분기조건의 연산결과를 이용하여 명령어 순서를 재배치 한다.
또한, 프로그램이 처음 시작되었을때 상기 명령어 페취 버퍼부(IFB)는 비어 잇게 되는데, 이 경우 명령어 페취 버퍼부(IFB)를 채우기 위하여 프로세서의 수행을 중지하는 것은 효과적이지 못하므로, 상기와 같이 명령어 페취 버퍼부(IBF)가 비어 있는 상태에서는 명령어 캐쉬 메모리로 부터 들어오는 명령어가 상기 명령어 페취 버퍼부(IFB)를 거치지 않고 직접 명령어 레지스터부로 이동되어 수행되도록 하는 기능을 제어로직부(CNTL)가 수행한다.
이들의 전반적인 동작은 다음의 제2도 및 제3도를 통하여 설명한다.
제2도는 본 발명에 의한 명령어 프리페취(prefetch) 방법의 절차도이다.
명령어 페취 버퍼부(IFB)는 데이터 캐쉬실패가 발생하여 오퍼랜드를 기다리는 동안 명령어가 수행되지 않을때 채워지는데, 그 과정을 살펴보면 다음과 같다.
대기상태(21)에서 데이타 캐쉬실패가 발생되면 명령어 페취 버퍼상태 저장부의 유효비트(V) 상태를 확인하여(22), 그 값이 "1"이면 프리페취 수행을 중지하고 다시 대기 상태로 간다. 그리고 상기 유효비트(V)의 값이 "0"이면 명령어를 프리페취를 수행한다(23). 그리고 나서 명령어 캐쉬실패(Instruction cache Miss)여부를 판단하여(24) 그 결과 실패로 판단되면 명령어 캐쉬 핸들러(Instruction cache handler)를 구동시키는(26) 것으로 수행을 종료하고, 그 결과가 성공으로 판단되면 상기 명령어 페춰 버퍼상태 저장부의 유효비트(V)를 "1"로 변환시켜 놓고(25) 수행을 종료한다. 이때는 CPU(중앙처리장치)에서 명령어 요청(IREQ) 신호를 보내지 않으므로 상기 명령어 페취 버퍼부(IFB)에 빈자리가 있을때까지 프리페취를 중단한다. 그리고, 프로세서가 수행을 다시 개시하면 상기 명령어 페취 버퍼부(IFB)에 있는 명령어가 명령어 레지스터부(IR)로 이동되고, 상기와 같은 과정을 통해 명령어 캐쉬 메모리에서 프러페취된 새로운 명령어가 상기 명령어 페취 버퍼부(IFB)에 저장되게 된다.
제3도는 조건부 분기가 실패했을 경우에 지연비트와 유효비트에 의거하여 명령어 페취 버퍼를 제어하는 방법과 플러싱(flushing)되는 명령어가 어디에 있는가를 나타낸 상태도이다.
도면에 도시한 바와같이 조건부 분기를 행하는 경우, 즉 대기상태(31)에서 조건부 분기명령(i : i번째 명령어)을 받으면, 조건부 분기의 성공여부를 판단한다(32). 그 판단결과가 성공이면 수행을 종료하여 대기상태로 가고, 그 판단결과가 실패이면 상기 조건부 분기명령어 내의 지연비트 상태를 확인하고 나서(33), 다시 명령어 페취 버퍼상태 저장부의 유효비트 상태를 확인한다(34).
이때, 상기 지연비트 "0"이면 명령어 디코딩(instruction decoding) 단계에 있는 (i+1)번째 명령어는 지연구간 내에 들어 있으므로 반드시 수행되어야하고 예측구간에 있는 (i+2)번째 명령어는 플러싱(flushing) 되어야 한다.
따라서 상기 지연비트가 "0"이고, 상기 유효비트가 "0"이면 명령어 페취 버퍼(IFB)는 현재 비어 있으므로 첫번째로 명령어 캐쉬 메모리로 부터 들어오는 (i+2)번째 명령어는 플러싱(flushing)되고, 두번째로 명령어 캐쉬 메모리로 부터 들어오는 (i+3)번째 명령어는 수행된다(35).
그러나, 상기 지연비트가 "0"이고, 상기 유효비트가 "1"이면 명령어 페취 버퍼(IFB)에는 (i+2)번째 명령어가 프리페취(prefetch)되어 있으므로 바로 플러싱(flushing)되고 첫번째로 명령어 캐쉬 메모리로 부터 들어오는 (i+3)번째 명령어가 수행된다(36).
반면에, 상기 지연비트가 "1"이면 지연구간을 존재하지 않고 조건부 분기 명령어 다음에는 예측구간만 존재하므로 조건부 분기 명령어 다음 두개의 명령어(i+1, i+2)는 모두 수행되지 않아야 한다. 현재(i+1)번째 명령어는 명령어 코딩(instruction decoding)단계에 있으므로 (i+1)번째 명령어는 무동작(NOP:No operation)으로 처리되어야 한다.
따라서, 상기 지연비트가 "1"이고, 유효비트가 "0"이면 명령어 페취 버퍼(IFB)는 비어 있으므로 처음으로 명령어 캐쉬 메모리로 부터 들어오는 (i+2)번째 명령어도 수행되지 않고 두번째로 명령어 캐쉬 메모리로 부터 들어오는 (i+3)번째 명령어부터 수행된다(38).
그러나 상기 지연비트가 "1"이고, 유효비트가 "1"이면(i+2)번째 명령어는 명령어 페취 버퍼(IFB)에 있으므로 플러싱(flushing)시키고 처음으로 명령어 캐쉬로 부터 들어오는 (i+3)번째 명령어는 수행된다(39).
제4도는 본 발명에서 사용한 조건부 분기 명령어의 일실시예 포맷으로서, d가 지연비트이다.
이와같이 지연비트(d)는 조건부 분기명령어 내에 존재하는 것으로, 기본 블럭 내에 데이터와 상호 관련이 없는 명령어가 존재하면 상기 지연비트가 "0"이 되고, 데이터와 상호 관련이 없는 명링어가 존재하지 않으면 "1"이 된다.
상기와 같이 본 발명의 구조에 의해 조건부 분기 명령어의 분기 실패시에도(특히, 명령어 페취 버퍼상태 저장부의 유효비트가 1일 경우에) 명령어가 플러싱되는 것을 최대한 방지하여 그 성능을 크게 개선시키는 효과를 갖는다.

Claims (1)

  1. 프로세서의 명령어 페취 유니트에 있어서, 명령어 캐쉬 메모리(도시되지 않음)에 연결되어 있으며 그로부터 입력되는 1워드 명령어를 저장하는 명령어 페취 버퍼 수단(IFB): 상기 명령어 페취 버퍼 수단(IFB)에 연결되어 있으며, 유효비트를 구비하여 상기 명령어 페취 버퍼수단의 상태를 나타내는 명령어 페취 버퍼상태 저장수단(V); 상기 명령어 페취 버퍼 수단 및 명령어 캐쉬 메모리에 연결되어 있으며 상기 명령어 페취 버퍼 수단으로 부터 입력되거나 또는 명령어 캐쉬 메모리로 부터 지접 입력되는 명령어를 받아 명령어 디코더(도시되지 않음)로 출력하는 명령어 레지스터 수단(IR): 및 상기 명령어 레지스터 수단 및 명령어 페취 버퍼상태 저장 수단에 연결되어 상기 명령어 페취 버퍼 수단이 비어 있는 상태에서는 명령어 캐쉬 메모리로 부터 들어온 명령어가 직접 상기 명령어 레지스터 수단으로 이동되도록 제어하는 제어로직수단(CNTL); 으로 구성되어 있는 것을 특징으로 하는 파이프라인으로 동작하는 프로세서의 명령어 페취 유니트.
KR1019880015983A 1988-12-01 1988-12-01 파이프라인으로 동작하는 프로세서의 명령어 페취 유니트 KR920006613B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019880015983A KR920006613B1 (ko) 1988-12-01 1988-12-01 파이프라인으로 동작하는 프로세서의 명령어 페취 유니트

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019880015983A KR920006613B1 (ko) 1988-12-01 1988-12-01 파이프라인으로 동작하는 프로세서의 명령어 페취 유니트

Publications (2)

Publication Number Publication Date
KR900010550A KR900010550A (ko) 1990-07-07
KR920006613B1 true KR920006613B1 (ko) 1992-08-10

Family

ID=19279816

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019880015983A KR920006613B1 (ko) 1988-12-01 1988-12-01 파이프라인으로 동작하는 프로세서의 명령어 페취 유니트

Country Status (1)

Country Link
KR (1) KR920006613B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100325176B1 (ko) * 1991-07-08 2002-02-25 고성능 알아이에스씨 마이크로프로세서 구조

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100325176B1 (ko) * 1991-07-08 2002-02-25 고성능 알아이에스씨 마이크로프로세서 구조

Also Published As

Publication number Publication date
KR900010550A (ko) 1990-07-07

Similar Documents

Publication Publication Date Title
US6647467B1 (en) Method and apparatus for high performance branching in pipelined microsystems
KR940009100B1 (ko) 데이타 프로세서 제어 유닛과 지시사이클 및 오버헤드 최소화 방법
US5127091A (en) System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor
US6978350B2 (en) Methods and apparatus for improving throughput of cache-based embedded processors
EP0689131B1 (en) A computer system for executing branch instructions
JP5047542B2 (ja) マルチスレッドプロセッサのディスパッチ時にスレッドをブロックする方法、コンピュータプログラム、および装置(精細なマルチスレッドディスパッチロックメカニズム)
US5421020A (en) Counter register implementation for speculative execution of branch on count instructions
US4775927A (en) Processor including fetch operation for branch instruction with control tag
KR920006275B1 (ko) 데이타 처리 장치
JPH10232776A (ja) 複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ
JPH0334024A (ja) 分岐予測の方法とそのための装置
JPS5831014B2 (ja) 命令先取り装置
US5146570A (en) System executing branch-with-execute instruction resulting in next successive instruction being execute while specified target instruction is prefetched for following execution
US4763253A (en) Microcomputer with change of flow
KR100210205B1 (ko) 스톨캐쉬를 제공하기 위한 장치 및 방법
KR20040045467A (ko) 자바 하드웨어 가속기에 대한 추론적 실행
JP3779012B2 (ja) 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法
US6754813B1 (en) Apparatus and method of processing information for suppression of branch prediction
US20020161987A1 (en) System and method including distributed instruction buffers holding a second instruction form
KR920006613B1 (ko) 파이프라인으로 동작하는 프로세서의 명령어 페취 유니트
JP2000056970A (ja) 命令及びデータの先読み方法、マイクロコントローラ、疑似命令検出回路、及び、記録媒体
US5363490A (en) Apparatus for and method of conditionally aborting an instruction within a pipelined architecture
JP3602801B2 (ja) メモリデータアクセス構造およびその方法
EP0633521B1 (en) Microprocessor including circuit for generating signal used for tracing executed instruction stream
KR100376639B1 (ko) 프로세서에서 사용하기에 적합한 메모리 데이터 액세스구조 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 19950809

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee