KR100635111B1 - 지정 가능한 지연 슬롯과 스쿼싱 조건을 가지는 분기 처리프로세서 - Google Patents

지정 가능한 지연 슬롯과 스쿼싱 조건을 가지는 분기 처리프로세서 Download PDF

Info

Publication number
KR100635111B1
KR100635111B1 KR1020040051838A KR20040051838A KR100635111B1 KR 100635111 B1 KR100635111 B1 KR 100635111B1 KR 1020040051838 A KR1020040051838 A KR 1020040051838A KR 20040051838 A KR20040051838 A KR 20040051838A KR 100635111 B1 KR100635111 B1 KR 100635111B1
Authority
KR
South Korea
Prior art keywords
branch
instruction
delay
slot
squashing
Prior art date
Application number
KR1020040051838A
Other languages
English (en)
Other versions
KR20060003927A (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 KR1020040051838A priority Critical patent/KR100635111B1/ko
Publication of KR20060003927A publication Critical patent/KR20060003927A/ko
Application granted granted Critical
Publication of KR100635111B1 publication Critical patent/KR100635111B1/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
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter

Landscapes

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

Abstract

본 발명은 지정 가능한 지연 슬롯과 스쿼싱 조건을 가지는 분기 처리 프로세서에 관한 것이다. 특히, 파이프라인 프로세서에서 분기실행(branch execution)을 제어하기 위한 것으로서 지연 슬롯 수와 스쿼싱 조건을 사용자가 지정할 수 있는 분기 명령어와 이를 처리하기 위한 프로세서 구조에 관한 것이다.
본 발명에 의하면, 지연 분기 제어 및 처리를 위한 프로세서에 있어서, 분기 명령어에 표시된 지연 슬롯의 수에 해당하는 지연 슬롯 명령어들의 주소를 생성하는 명령어 주소 생성부와; 상기 분기 명령어 상에 명시된 지연 슬롯 수에 해당하는 명령어를 우선 해석하고, 지연 슬롯 수가 분기 페널티 보다 작은 경우 지연 슬롯 이후 분기 페널티까지 NOP 명령어를 해석하는 명령어 디코더; 및 상기 해석된 명령어의 분기 여부와 분기 목적지 주소를 계산하는 명령 실행부를 구비하는 것을 특징으로 하는 분기 처리 프로세서를 제시한다.
따라서, 본 발명은 프로그램에서 지연 슬롯 명령어로 사용될 수 있는 명령어의 수에 따라 지연 슬롯의 수를 지정할 수 있으므로 분기 명령어의 지연 슬롯이 NOP으로 채워지는 경우는 없게 되어 프로그램 크기가 줄일 수 있으며, 참 슬롯 명령어와 스쿼싱 슬롯 명령어를 모두 사용할 수 있으므로 지연 슬롯을 효율적으로 사용하게 되어 프로그램의 수행 속도를 향상시킬 수 있다.
지연 슬롯, 스쿼싱, 분기명령어, 프로세서, 파이프라인

Description

지정 가능한 지연 슬롯과 스쿼싱 조건을 가지는 분기 처리 프로세서{The branch processing processor having specifiable delay slots and squashing condition}
도 1은 종래 기술에서 분기문 수행에 의하여 파이프라인 정지가 발생하는 경우의 파이프라인 상태를 나타내는 도면,
도 2는 제어 헤저드를 피하기 위하여 지연 슬롯 명령어를 이용하는 지연 분기방식을 이용한 경우의 파이프라인 상태를 나타내는 도면,
도 3은 분기 명령어의 타겟 명령어를 지연 슬롯 명령어로 사용하는 경우의 도면,
도 4a 내지 도 4c는 분기 명령어의 인코딩 예를 나타내는 도면,
도 5는 본 발명에 따른 프로세서의 실시 예를 나타내는 도면,
도 6은 본 발명에 따른 명령어 디코더의 실시 예를 나타내는 도면,
도 7은 본 발명에 따른 명령어 주소 생성부의 실시 예를 나타내는 도면,
도 8은 본 발명에 따른 명령 실행부의 실시 예를 나타내는 도면,
도 9(a) ~ 도 9(c)는 본 발명에 따른 분기문의 실행되는 경우의 파이프라인을 나타내는 도면이다.
< 도면의 주요 부분에 대한 설명 >
1: 프로세서 2: 명령어 메모리
3: 데이터 메모리 4: 명령어 주소 생성부
5: 명령어 디코더 6: 명령 실행부
7: 레지스터 파일 8: 다음 명령어 주소 계산기
9: 쓰기 제어 신호 생성기 10: 실행엔진
11: 프로그램 카운터 12: 명령어 주소 읽기 버스
13: 명령어 읽기 버스 14: 지연 슬롯 제어 신호 버스
15: 스쿼싱 제어 신호 버스 16: 데이터 읽기 버스
17: 데이터 쓰기 버스 18: 데이터 번지 버스
19: 분기점 번지 버스     20: 분기 목적지 버스
21: 레지스터 파일 읽기/쓰기 버스 22: 실행결과 쓰기 버스
23: 레지스터 파일 쓰기 제어 신호 버스
24: 데이터 메모리 쓰기 제어 신호 버스
본 발명은 지정 가능한 지연 슬롯과 스쿼싱 조건을 가지는 분기 처리 프로세서에 관한 것이다. 보다 상세하게는 파이프라인 프로세서에서 분기실행(branch execution)을 제어하기 위한 것으로서 지연 슬롯 수와 스쿼싱 조건을 사용자가 지정할 수 있는 분기 명령어와 이를 처리하기 위한 프로세서 구조에 관한 것이다.
고속 프로세서에서는 명령어의 수행을 다수의 단계로 나누어 다수의 클럭 사이클 동안 실행하게 되며, 각 단계에는 서로 다른 명령어를 중첩하여 실행하는 파이프라인 기법을 채택하고 있다. 파이프라인 기법은 여러 명령어를 중첩하여 수행함으로써 실행 속도를 높이기 위한 것이며, 이상적인 경우 파이프라인 단계 수만큼 실행 속도가 높아지게 된다. 각 단계는 하나 이상의 클럭 싸이클 동안 수행되지만 일반적으로 한 사이클에 수행할 수 있도록 설계하므로 발명에 대한 설명의 편의상 각 단계는 한 사이클 동안 수행한다고 가정하고 기술한다.
예를 들면, 5단계의 파이프라인은 펫치 단계(fetch stage), 디코드 단계(decode stage), 실행 단계(execution stage), 메모리 단계(memory stage), 기록(write back) 단계로 구성된다. 펫치 단계에서는 수행할 명령어의 주소를 명령어 메모리로 보내 명령어를 읽어오고. 그 명령어를 디코드 단계에서 해석하면서 필요한 데이터를 레지스터에서 읽어오고, 실행 단계에서 데이터를 연산하여, 메모리 단계에서 필요한 경우 데이터 메모리를 접근하여 읽거나 기록하며, 기록 단계에서 레지스터에 기록된다. 첫 번째 명령어가 디코드 되는 것과 동시에, 두 번째 명령어가 펫치되고, 첫 번째 명령어가 실행되는 동안, 두 번째 명령어가 디코드 되는 식으로 계속 수행하여, 각 파이프라인 단계는 서로 다른 명령어를 수행하게 된다.
파이프라인 프로세서(pipelined processor)에서 최대 효율을 얻기 위해서는 항상 파이프라인의 각 단계가 유효한 명령어로 차 있어야 한다. 이를 위해서 매 사이클 당 하나의 명령어를 명령어 메모리에서 읽어 와야 하므로 다음에 읽어 올 명령어의 주소를 알 수 있어야 한다. 연속적인 명령어를 수행하는 경우에는 명령어는 명령 어 메모리에 연속적으로 저장되어 있으므로 이 조건은 쉽게 만족하지만, 다른 주소로 이동하는 분기 명령어의 경우에는 분기 명령어 이후에 읽어 올 명령어의 주소를 바로 알 수 없고 분기 명령어를 수행해 보아야만 실제 분기가 일어 나는 지와 분기 주소를 알 수 있게 된다. 분기 주소는 실행 단계에서 계산하고 분기 조건의 검사와 프로그램 카운터의 설정이 메모리 단계에서 이루어진다면 분기 명령어를 읽어 온 이후 세 사이클 동안에는 읽어 올 명령어의 주소를 알 수 없게 되는 상황이 발생하게 되며 이러한 경우를 제어 헤저드 라고 한다.
도 1은 종래의 제어 헤저드가 발생한 경우의 파이프라인 상태를 보이고 있다. 첫 번째 명령어가 분기 명령인 경우, 분기 명령의 타겟 주소와 분기 여부는 메모리 단계(MEM)에서 결정되므로 메모리 단계가 수행되어야만 다음 명령의 위치가 결정된다. 따라서 세 싸이클의 파이프라인 정지(pipeline stall)가 생기게 된다. 분기 명령어의 의하여 발생하는 정지 사이클의 수를 분기페널티(branch penalty) 라고 하며, 분기 페널티는 전체 성능에 큰 영향을 미치기 때문에 분기페널티를 줄이기 위한 여러 연구가 있어 왔다. 예를 들면, 전체 명령어 중에서 20%가 분기 명령어라고 가정하면 CPI(cycle per instruction)는 1.6 (=0.8 X1 + 0.2 X 4)으로 증가한다. 본 발명에서는 이러한 분기 페널티를 최소화하여 성능을 높이기 위한 새로운 분기 처리 방식에 관한 것이다.
본 발명과 관련된 종래 방식을 간단히 설명하면 다음과 같다.
분기 페널티(branch penalty)를 최소화하기 위하여 사용되는 방법 중의 하나가 지연 분기법(delayed branch)이다. 분기 페널티 동안에는 다음 명령어의 주소가 결정되지 않으므로 파이프라인은 정지해야 하지만, 파이프라인을 정지하는 대신 NOP (No Operation)과 같이 의미 없는 명령어를 수행해도 프로그램의 결과는 영향이 없게 된다. 이 경우에 파이프라인을 정지하지 않고도 같은 결과를 얻게 되지만 NOP 명령어를 분기 명령어 이후에 채워야 하므로 프로그램 크기가 커지는 단점이 있게 된다. 위와 같이 파이프라인 정지 대신 NOP 명령어를 수행하여 같은 결과를 얻는 방식을 지연 분기라고 한다.
또한, 파이프라인 정지 대신 분기 명령어 후에 수행할 NOP의 자리를 지연 슬롯이라고 하며 분기 페널티와 같은 수의 지연 슬롯이 필요하다. 지연 분기에서는 분기 명령어의 효과는 지연 슬롯의 명령어를 모두 수행한 후에 나타나는 것으로 생각할 수 있으므로 분기 명령어의 효과가 지연되는 것과 같게 된다. 지연 슬롯에는 NOP 명령어를 채워야 하지만, NOP 명령어 대신 프로그램 상에서 수행해도 되는 명령어를 찾아서 수행할 수 있다면 성능을 더 높일 수 있게 된다. 지연 분기법이란 명령어의 스케줄링을 통하여 분기 명령에 의하여 발생하는 지연 슬롯에 유효한 명령어를 삽입하여 버려지는 지연슬롯을 활용하는 기법이다.
지연 분기법에서는 분기 명령 이전의 명령어, 분기 명령어의 타겟 명령어, 분기 명령 이후의 명령어를 지연 슬롯에 옮겨올 수 있으며 이렇게 지연 슬롯에 위치한 명령어를 지연 슬롯 명령어라고 한다.
도 2는 분기 명령 이전의 명령어를 옮겨오는 것을 도식화하고 있다. 이 경우에는 옮겨오는 명령어가 분기 명령어와 데이터 연관성이 없는 명령어이어야 하며, 분기 여부에 관계없이 수행할 수 있는 명령어이므로 항상 분기 페널티를 줄일 수 있어 가장 이상적이다.
도 3은 분기 명령어의 타겟 명령어를 가져오는 경우를 보여 주고 있으며, 이 경우에는 다른 명령어 흐름에 영향을 주지 않도록 해당 명령어를 복사하여 가져온 뒤 타겟 주소를 그 다음 명령어로 조정한다. 따라서 복사에 의하여 프로그램의 크기가 늘어 날 수 있다. 타겟 주소에서 명령어 복사하여 지연 슬롯을 채우는 것은 항상 가능한 것은 아니다. 분기 명령어에서 분기하지 않는 경우에도 프로그램의 결과에 영향이 없는 것이 보장되는 타겟 명령어만 복사가 가능하다. 지연 분기법에서는 명령어 스케줄링을 통하여 지연 슬롯을 유효한 명령어로 채우려고 하지만 항상 가능한 것이 아니므로 유효한 명령어를 찾지 못한 경우에는 NOP 명령어를 지연 슬롯에 채우야 한다. 프로그램의 분석을 통한 기존의 연구에 의하면 분기 명령어 당 평균적으로 한 개 정도의 유효한 지연 슬롯 명령어를 찾을 수 있다고 알려져 있으므로, 분기 패널티가 큰 경우에는 다수의 NOP 명령어를 채워야 하므로 코드의 크기가 커지게 된다.
지연 슬롯에 항상 유효한 명령어를 찾아 채우는 것은 매우 어려운 일이므로 지연 슬롯에 취소 가능한 명령어를 채우는 방법이 제시되었다. 스쿼싱 분기라고 부르는 이 방법에서는 분기 명령어의 지연 슬롯에 있는 명령어는 취소 가능하도록 하드웨어를 구성하고 분기 여부가 결정되면 지연 슬롯에 있는 명령어가 분기 여부에 부합되면 계속 수행하고 부합되지 않으면 수행을 취소하게 된다. 수행을 취소하기 위해서는 지연 슬롯에 있는 명령어의 결과를 프로세서의 상태에 기록하지 않는 방법을 주로 사용한다. 스쿼싱 분기법은 지연 슬롯에 채울 수 있는 명령어를 보다 쉽게 찾을 수 있다는 장점이 있다.
상기에서와 같이, 종래의 지연 분기법과 스커싱 분기법은 매우 효과적인 방법이지만 두 가지의 단점을 가지고 있다.
첫째, 지연 슬롯의 수가 고정되어 있다는 점이다. 종래 기술의 분기 명령은 지연 슬롯이 없거나 지연 슬롯의 수가 고정되어 있다. 지연 슬롯이 없는 경우에는 프로그램에서 분기가 발생하는 경우에 항상 분기 페널티만큼 사이클의 소비가 일어나므로 전체 시스템의 성능의 저하된다. 지연 슬롯의 수가 고정되어 있는 분기 명령어의 경우에는 프로그램에서 지연 슬롯으로 옮겨 질 수 있는 명령어를 찾을 수 없게 되면 지연 슬롯이 NOP 명령어로 채워지기 때문에 코드의 크기가 증가하고 프로세서의 밉스(Million instructions Per Second)치를 높이는데 한계가 있다.
또한, 명령어 집합은 같더라도 파이프라인 단계 수가 다른 여러 가지 구현 형태를 가질 수 있으며 고성능 프로세서일수록 파이프라인 단계 수가 증가한다. 파이프라인 단계 수가 변하면 지연 슬롯의 수도 변화하게 되므로, 어느 특정한 지연 슬롯 수를 가정하고 생성된 프로그램은 다른 지연 슬롯을 가진 프로세서에서는 명령어 집합이 같더라도 수행할 수 없게 된다.
둘째, 종래 방식에서는 분기 명령어의 지연 슬롯에 지연 분기법이나 스쿼싱 분기법 중 한 가지만 사용하여 NOP 명령어 대신 사용할 명령어를 채우려고 하였다는 점이다. 분기 명령어의 지연 슬롯에는 항상 유효한 명령어와 취소 가능한 명령어를 모두 사용 가능하지만, 기존 방식에서는 둘 중 한 가지만 사용해 왔었다.
본 발명은 상기와 같은 종래 기술의 문제점인 분기 명령어에 의한 성능 저하 를 최소화하기 위한 새로운 분기 제어 프로세서를 제시하고자 한다.
특히, 본 발명은 분기 명령어에 지연 슬롯의 수를 명시하여 필요하지 않는 NOP 명령어를 제거함으로써 프로그램 크기를 줄이고, 지연 슬롯에 항상 유효한 명령어와 취소 가능한 명령어를 모두 사용하게 함으로써 수행 속도를 높이고자 하는데 그 기술적 특징이 있다.
상기한 본 발명의 목적을 달성하기 위한 기술적 사상으로서 본 발명은
지연 분기 제어 및 처리를 위한 프로세서에 있어서,
분기 명령어에 표시된 지연 슬롯의 수에 해당하는 지연 슬롯 명령어들의 주소를 생성하는 명령어 주소 생성부와;
상기 분기 명령어 상에 명시된 지연 슬롯 수에 해당하는 명령어를 우선 해석하고, 지연 슬롯 수가 분기 페널티 보다 작은 경우 지연 슬롯 이후 분기 페널티까지 NOP 명령어를 해석하는 명령어 디코더; 및
상기 해석된 명령어의 분기 여부와 분기 목적지 주소를 계산하는 명령 실행부를 구비하는 것을 특징으로 하는 분기 처리 프로세서를 제공한다.
이하, 본 발명의 실시 예에 대한 구성 및 그 작용을 첨부한 도면을 참조하면서 상세히 설명하기로 한다.
본 발명은 분기 명령어에 지연 슬롯의 수와 스쿼싱 방법을 지정하여 프로세서의 성능을 향상시키기 위한 것이다. 프로그램의 분석을 통하여 각 분기 명령어의 지연 슬롯에 위치할 명령어들의 수와 종류를 결정하고, 결정된 지연 슬롯의 수와 스쿼 싱 방법을 분기 명령어 상에 명시한다.
본 발명에서는 지연 슬롯 중 항상 유효한 명령어가 들어가는 슬롯을 참 슬롯(true slot), 취소 가능한 명령어가 들어가는 슬롯은 스쿼싱 슬롯(squashing slot)이라고 부르기로 한다. 분기 명령어는 이러한 정보를 기록하기 위한 필드를 가지게 되며 도 4에 나타난 바와 같이 다양한 형태로 구현할 수 있다.
도 4(a)는 가장 일반적인 분기 명령어 형식을 나타내고 있으며, 지연 슬롯을 여러 개의 그룹으로 나누고 각 그룹에 대하여 지연 슬롯의 수와 스쿼싱 방식을 (mi, si, ci)로 나타내고 있다. " mi"는 각 그룹에 속하는 지연 스롯 명령어의 수를 지정하며 "si"와 "ci"는 각 지연 슬롯 그룹에 속하는 명령어들의 스쿼싱 여부와 스쿼싱 조건을 지정한다. si 가 1 이면 스쿼싱 슬롯에 해당하며, 0 이면 참 슬롯에 해당한다. si 가 1인 경우의 스쿼싱 조건은 ci에 따르게 되는데 이 필드의 값이 1이 되면 분기 조건이 참(TRUE)인 경우에 스쿼싱 슬롯 명령어가 취소되며, 값이 0인 경우에는 분기 조건이 거짓(FALSE)인 경우에 스쿼싱 슬롯 명령어가 취소된다. 이 형식은 가장 일반적인 명령어 형식이므로 명령어 길이가 길어지게 되므로 명령어 길이의 제한이 있는 경우에는 좀 더 간단한 형식이 필요하다.
도 4(b)는 간단한 명령어 형식의 한 예를 도식화한 것으로 "t" 필드는 참 지연 슬롯의 수를 "s" 필드는 스쿼싱 슬롯의 수를 지정하며, 마지막의 "c" 필드는 스쿼싱 슬롯의 명령어가 취소될 조건을 기술하는 필드이다. 이 형식에서는 분기 명령어 후에 t 개의 참 슬롯 명령어가 먼저 수행되고 그 뒤에 s 개의 명령어가 수행되지만 c가 참이 되면 s개의 명령어는 취소된다.
도 4(c)는 좀 더 간단한 형식으로 t 와 s 로 참 슬롯의 수와 스쿼싱 슬롯의 수를 표시한다. c 필드는 생략되어 있으므로 분기 조건이 만족하면 스쿼싱 슬롯 명령어는 취소하는 것으로 스쿼싱 조건을 해석하거나 또는 그 반대로 해석한다. 스쿼싱 조건의 해석은 분기 명령어의 정의에 따른다. 이 외에도 여러 가지 형식을 생각할 수 있으며, 어떤 형식을 사용하던지 참 슬롯의 수와 스쿼싱 슬롯의 수와 조건을  명확하게 해석할 수 있어야 한다.
도 5는 위에서 설명한 분기 명령어를 처리하기 위한 프로세서(1)의 전체 구조를 도시하고 있다.
명령어 주소 생성부(4)에서는 수행할 명령어의 주소를 계산하여 명령어 주소 버스(12)를 통하여 명령어 메모리(2)에 보낸다. 명령어 메모리(2)는 이 주소의 데이터를 명령어 읽기 버스(13)를 통해 명령어 디코더(5)에 보낸다. 명령어 디코더(5)는 명령어를 해석하여 실행에 관한 정보를 실행 제어선(15)를 통해 명령어 실행부(6)로 보낸다.
분기 명령어의 경우, 분기 명령어에 명시된 지연 슬롯의 수에 대한 정보를 지연 슬롯 제어선(14)를 통해 명령어 주소 생성부로 보내어 명령어 주소 생성부(4)가 지연 슬롯 수 만큼 명령어를 읽어오게 한다. 또한 스쿼싱 슬롯 명령어에 대해서는 스쿼싱 조건을 실행 제어선(15)를 통해 명령어 실행부(6)에 보낸다. 명령어 실행부(6)는 실행 제어 신호에 따라 레지스터 파일(7)에서 데이터를 읽어 연산을 실행하며 연산 결과를 레지스터 파일(7)에 쓰거나 연산 결과를 데이터 주소로 하여 데이터 메모 리(3)로부터 값을 읽거나, 연산 결과를 데이터 메모리(3)에 쓰기를 수행한다.
분기 명령어를 수행하는 경우, 분기 조건을 판별하여 분기가 결정되면 분기 목적지 주소와 분기 결정에 대한 정보를 분기 목적지 버스(19)와 분기 정보선(20)을 통해 명령어 주소 생성부로 보내 분기 목적지 주소로부터 명령어를 읽어 오게 한다. 스쿼싱 슬롯 명령어에 대해서는 실행 제어선을 통해 전달된 스쿼싱 조건에 따라 선택적으로 쓰기를 금지한다. 명령어 메모리(2)는 명령어 메모리 주소 버스(12), 명령어 읽기 버스(13)를 통하여 명령어 메모리 주소 생성부(4)와 명령어 디코더(5)와 연결되며, 데이터 메모리(3)는 데이터 읽기 버스(16), 데이터 쓰기 버스(17) 그리고 데이터 주소 버스(18)를 통하여 명령 실행부(6)에 연결된다. 데이터 메모리(3)는 데이터 주소 버스(18)로 출력된 데이터 번지에 따라 데이터 쓰기 버스(17)에 출력된 데이터를 저장하거나 데이터 읽기 버스(16)로 이전에 저장한 데이터를 출력한다. 명령어 메모리(2)와 데이터 메모리(3)는 하나로 통합하여 구현할 수 있으며 필요에 따라 캐쉬 메모리를 포함할 수 있다.
도 6은 명령어 디코더를 도식한 것이다. 명령어 디코더에는 명령어 메모리에서 읽어 온 명령어를 저장하는 명령어 레지스터(26)를 가지고 있으며 이를 해석하는 디코더(25)가 있다. 분기 명령어의 경우 분기 명령어에 명시된 "t", "s", "m" 필드를 디코딩하여 지연 슬롯의 수를 해석하고 이 값을 계수기(28)에 저장하고 지연 슬롯 제어선(14)을 통해 명령어 주소 생성부로 보내어 분기 명령어 후에 지연 슬롯 수만큼 연속적인 명령어를 읽어오게 한다.
또한 스쿼싱 슬롯 명령어에 대해서는 스쿼싱 여부와 조건에 관한 정보를 실행 제어선(15)을 통해 명령 실행부로 보내 분기 조건과 스쿼싱 조건에 따라 스쿼싱 슬롯 명령어의 실행이 선택적으로 취소되도록 한다. 지연 슬롯 명령어가 명령어 디코더에 도착할 때 마다 계수기(28)의 값이 하나 감소하므로 계수기(28)의 값이 0이 되면 지연 슬롯 명령어가 모두 도착하였다는 것을 알 수 있다. 지연 슬롯의 수가 분기 페널티 보다 작은 경우에 명령어 디코더는 지연 슬롯 수 다음부터 분기 페널티 사이 동안 NOP에 해당하는 명령 정보를 명령 실행부에 보내야 하므로 디코더 입력 앞에는 명령어 레지스터와 NOP 중 하나를 선택하기 위한 MUX(29)가 있다.
도 7은 명령어 주소 생성부(4)를 도식한 것이다. 지연 슬롯 제어 신호는 분기 명령어에 표시된 지연 슬롯 수만큼의 명령어를 연속적으로 읽기 위한 제어 신호이며 지연 슬롯 제어선(14)를 통하여 명령어 주소 생성부(4)로 전달된다. 이 신호를 받은 명령어 주소 생성부(4)는 지연 슬롯 수 만큼의 명령어 주소를 연속적으로 생성하여 명령어를 읽은 후에 분기 명령어의 수행 결과에 따라 다음 주소를 결정하게 된다. 명령 실행부(6)는 분기 명령어를 수행하여 분기여부와 분기 주소를 결정하고 명령어 주소 생성부(4)에 필요한 정보를 보내게 된다.
분기하는 경우 분기 목적지 버스(19)을 통해 목적지 주소를 보내고 분기 정보선(20)을 통해 프로그램 카운터(11)를 재설정하여 진행하라는 정보를 보내게 된다. 분기하지 않는 경우에는 분기 정보선(20)에 분기하지 않는다는 정보를 보내게 된다. 명령어 주소 생성부(4)는 지연 슬롯 수 만큼 명령어를 읽은 후에 분기 정보선(20)의 정보를 검사하여 이 정보가 도착하였으면 분기 여부에 따라 해당하는 주소에서 명령어 읽기를 계속하고 정보가 도착하지 않았으면 아직 분기 명령어가 수행이 끝나지 않 은 상태이므로 정보가 도착할 때까지 정지하게 된다.
명령어 주소 생성부(4)에는 다음 명령어 주소 계산기(8)가 있으며, 프로그램 카운터(11)의 값과 명령어 디코더(5)에서 지연 슬롯 제어선(14)를 통하여 전송되는 지연 슬롯 제어 신호, 분지 목적지 버스(19)를 통하여 입력되는 분기 목적지주소를 이용하여 다음에 읽어올 명령어의 주소를 생성하여 프로그램 카운터(11)을 설정한다. 프로그램 카운터(11)의 값은 명령어 주소 읽기 버스(12)를 거쳐 명령어 메모리(2)로 전송한다.
도 8은 명령 실행부(6)를 보이고 있다. 명령 실행부(6)에서는 명령어 디코딩 결과를 받아서 해당되는 동작을 수행한다. 분기 명령어를 수행한 후에는 분기 여부와 분기 목적지 주소를 분기 정보선(20)과 분기 목적지 버스(19)를 통하여 명령어 주소 생성부(4)로 전송한다. 쓰기 제어 신호 생성기(9)에서는 실행제어선(15)를 통해 전달된 스쿼싱 제어 신호와 분기 명령어 실행 결과(22)를 이용하여 연산 결과를 레지스터 파일(7)이나 데이터 메모리(3)에 저장할 것인가를 결정하고 쓰기 취소 신호(23, 24)를 생성한다.
도 9(a) 내지 도 9(c)는 본 발명에 의한 분기명령어가 수행되는 경우의 파이프라인을 도식한 것이다. 이 예에서는 1개와 2개의 지연 슬롯을 가지는 분기 명령어(BEQ) 두 개를 보이고 있다. 도면 9(a)의 첫 번째 분기명령어는 참 슬롯을 한개 가지고 있으며 분기가 일어난다고 가정하였으며, 두 번째 분기명령어는 참 슬롯 1 개와 스쿼싱 슬롯 1개를 가지고 있으며 분기가 안 일어난다고 가정하였다.
도 9(b)는 분기 페널티가 3 인 경우에 도면 9(a)의 첫 번째 분기 명령어가 수 행되는 과정을 도식한 것이다. 이 경우 명령어 디코더는 한 개의 참 슬롯 명령어 후에 두개의 NOP 명령어를 명령 실행부에 보내 파이프라인이 정지하지 않게 한다. 명령어 주소 생성기는 한 개의 참 슬롯 명령어 주소를 생성한 이후 정지하게 되며 분기 명령어가 실행되어 분기 목적지 주소에 대한 정보가 도착하면 목적지 주소에서 명령어를 읽는 작업을 계속하게 된다.
도 9(c)는 분기 페널티가 3 인 경우에 도면 9(a)의 두 번째 분기 명령어가 수행되는 과정을 도식한 것이다. 이 경우 명령어 디코더는 한 개의 참 슬롯 명령어와 한 개의 스쿼싱 슬롯 명령어 후에 한 개의 NOP 명령어를 명령 실행부에 보내 파이프라인이 정지하지 않게 한다. 명령어 주소 생성기는 두 개의 지연 슬롯 명령어 주소를 생성한 이후 정지하게 되며 분기 명령어가 실행되어 분기 하지 않는다는 정보가 도착하면 지연 슬롯 다음 번지에서 명령어를 읽는 작업을 계속하게 된다. 스쿼싱 슬롯 명령어가 취소되어야 하는 경우에는 쓰기 제어 신호 생성기가 쓰기 취소 신호를 기록 단계에 보내 기록이 금지 된다.
이상에서와 같이 본 발명에 의한 분기 처리 프로세서에서는 지연 슬롯의 수를 지정할 수 있으며, 지연 슬롯에 위치하는 명령어들의 수행 조건을 표시할 수 있다. 따라서 프로그램에서 지연 슬롯 명령어로 사용될 수 있는 명령어의 수에 따라 지연 슬롯의 수를 지정할 수 있으므로 분기 명령어의 지연 슬롯이 NOP으로 채워지는 경우는 없게 되어 프로그램 크기가 줄일 수 있으며, 참 슬롯 명령어와 스쿼싱 슬롯 명령어를 모두 사용할 수 있으므로 지연 슬롯을 효율적으로 사용하게 되어 프로그램의 수 행 속도를 향상시킬 수 있다.

Claims (10)

  1. 지연 분기 제어 및 처리를 위한 프로세서에 있어서,
    분기 명령어에 표시된 지연 슬롯의 수에 해당하는 지연 슬롯 명령어들의 주소를 생성하는 명령어 주소 생성부와;
    상기 분기 명령어 상에 명시된 지연 슬롯 수에 해당하는 명령어를 우선 해석하고, 지연 슬롯 수가 분기 페널티 보다 작은 경우 지연 슬롯 이후 분기 페널티까지 NOP 명령어를 해석하는 명령어 디코더; 및
    상기 해석된 명령어의 분기 여부와 분기 목적지 주소를 계산하는 명령 실행부를 구비하는 것을 특징으로 하는 분기 처리 프로세서.
  2. 청구항 1에 있어서, 상기 지연 슬롯의 수를 분기 명령어에 지정하여 분기 제어를 실행하는 것을 특징으로 하는 분기 처리 프로세서.
  3. 청구항 1에 있어서, 상기 명령 실행부는
    해석된 명령어의 분기 여부와 분기 목적지 주소를 계산하고, 분기 명령어의 스쿼싱 조건이 참이 되면 지연 슬롯 명령어의 수행을 취소함을 특징으로 하는 분기 처리 프로세서.
  4. 청구항 1 또는 청구항 3에 있어서, 상기 지연 슬롯의 수와 스쿼싱 조건을 분 기 명령어에 지정하여 분기 제어를 실행하는 것을 특징으로 하는 분기 처리 프로세서.
  5. 지연 분기 제어 및 처리를 위한 프로세서에 있어서,
    분기 명령어에 표시된 각 그룹에 명시된 지연 슬롯의 수에 해당하는 지연 슬롯 명령어들의 주소를 생성하는 명령어 주소 생성부와;
    상기 분기 명령어 상에 명시된 지연 슬롯 수에 해당하는 명령어를 우선 해석하고, 지연 슬롯 수가 분기 페널티 보다 작은 경우 지연 슬롯 이후 분기 페널티까지 NOP 명령어를 해석하는 명령어 디코더; 및
    상기 해석된 명령어의 분기 여부와 분기 목적지 주소를 계산하고, 분기 명령어의 각 그룹에 명시된 스쿼싱 조건이 참이 되면 지연 슬롯 명령어의 수행을 취소하는 명령 실행부를 구비하는 것을 특징으로 하는 분기 처리 프로세서.
  6. 청구항 5에 있어서, 상기 지연 슬롯을 두개 이상의 그룹으로 나누고 각 그룹에 대한 지연 슬롯의 수와 스쿼싱 조건을 분기 명령어에 지정하여 분기 제어를 실행하는 것을 특징으로 하는 분기 처리 프로세서.
  7. 지연 분기 제어 및 처리를 위한 프로세서에 있어서,
    분기 명령어에 표시된 참 슬롯 그룹과 스쿼싱 슬롯 그룹에 명시된 지연 슬롯의 수에 해당하는 지연 슬롯 명령어들의 주소를 생성하는 명령어 주소 생성부와;
    상기 분기 명령어 상에 명시된 지연 슬롯 수에 해당하는 명령어를 우선 해석하고, 지연 슬롯 수가 분기 페널티 보다 작은 경우 지연 슬롯 이후 분기 페널티까지 NOP 명령어를 해석하는 명령어 디코더; 및
    상기 해석된 명령어의 분기 여부와 분기 목적지 주소를 계산하고, 분기 명령어에 명시된 스쿼싱 조건이 참이 되면 스쿼싱 슬롯 명령어의 수행을 취소하는 명령 실행부를 구비하는 것을 특징으로 하는 분기 처리 프로세서.
  8. 청구항 7에 있어서, 상기 분기 지연 슬롯을 항상 수행하는 참 슬롯과 선택적으로 수행하는 스쿼싱 그룹으로 나누어 참 슬롯의 수와, 스쿼싱 그룹의 수, 및 스쿼싱 조건을 분기 명령어에 지정하여 분기 제어를 실행하는 것을 특징으로 하는 분기 처리 프로세서.
  9. 청구항 7에 있어서, 상기 명령 실행부는
    해석된 분기명령어의 분기 여부와 분기 목적지 주소를 계산하고, 분기 명령어에 정의된 스쿼싱 조건이 참이 되면 스쿼싱 슬롯 명령어의 수행을 취소함을 특징으로 하는 분기 처리 프로세서.
  10. 청구항 7 또는 청구항 9에 있어서, 상기 분기 지연 슬롯을 항상 수행하는 참 슬롯과 스쿼싱 조건의 판단 결과에 따라 수행 여부를 결정하게 되는 스쿼싱 슬롯으로 나누어 참 슬롯의 수, 스쿼싱 슬롯의 수를 분기 명령어에 지정하고, 분기 명령어에 정의된 스쿼싱 조건이 참이 되면 스쿼싱 슬롯 명령어의 수행을 취소하는 분기 제어를 실행하는 것을 특징으로 하는 분기 처리 프로세서.
KR1020040051838A 2004-07-05 2004-07-05 지정 가능한 지연 슬롯과 스쿼싱 조건을 가지는 분기 처리프로세서 KR100635111B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020040051838A KR100635111B1 (ko) 2004-07-05 2004-07-05 지정 가능한 지연 슬롯과 스쿼싱 조건을 가지는 분기 처리프로세서

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040051838A KR100635111B1 (ko) 2004-07-05 2004-07-05 지정 가능한 지연 슬롯과 스쿼싱 조건을 가지는 분기 처리프로세서

Publications (2)

Publication Number Publication Date
KR20060003927A KR20060003927A (ko) 2006-01-12
KR100635111B1 true KR100635111B1 (ko) 2006-10-17

Family

ID=37116291

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040051838A KR100635111B1 (ko) 2004-07-05 2004-07-05 지정 가능한 지연 슬롯과 스쿼싱 조건을 가지는 분기 처리프로세서

Country Status (1)

Country Link
KR (1) KR100635111B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100892857B1 (ko) * 2008-07-30 2009-04-15 주식회사 유비콘테크놀로지 시스템온칩의 내부 메모리 장치 및 그 운영방법

Also Published As

Publication number Publication date
KR20060003927A (ko) 2006-01-12

Similar Documents

Publication Publication Date Title
US8943300B2 (en) Method and apparatus for generating return address predictions for implicit and explicit subroutine calls using predecode information
US5911057A (en) Superscalar microprocessor having combined register and memory renaming circuits, systems, and methods
JP2928695B2 (ja) 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法
JP2018060491A (ja) ローカル分岐デコーダを有するマルチ発行マイクロコードユニットを備えたパイプラインプロセッサ
US5799180A (en) Microprocessor circuits, systems, and methods passing intermediate instructions between a short forward conditional branch instruction and target instruction through pipeline, then suppressing results if branch taken
US20060259741A1 (en) Controlling out of order execution pipelines issue tagging
WO2002008893A1 (en) A microprocessor having an instruction format containing explicit timing information
JP2009099097A (ja) データ処理装置
US8799628B2 (en) Early branch determination
WO2018059337A1 (zh) 数据处理装置和方法
US6115730A (en) Reloadable floating point unit
US7873813B2 (en) Variable length VLIW instruction with instruction fetch control bits for prefetching, stalling, or realigning in order to handle padding bits and instructions that cross memory line boundaries
US7003649B2 (en) Control forwarding in a pipeline digital processor
KR100635111B1 (ko) 지정 가능한 지연 슬롯과 스쿼싱 조건을 가지는 분기 처리프로세서
US20080065870A1 (en) Information processing apparatus
JP2004192021A (ja) マイクロプロセッサ
US6016544A (en) Apparatus and method for tracking changes in address size and for different size retranslate second instruction with an indicator from address size
US5421026A (en) Data processor for processing instruction after conditional branch instruction at high speed
US6591360B1 (en) Local stall/hazard detect in superscalar, pipelined microprocessor
JPH1091441A (ja) プログラム実行方法およびその方法を利用した装置
JP2001134442A (ja) コンピュータ・プログラムのハザードを検出するシステム
US5895497A (en) Microprocessor with pipelining, memory size evaluation, micro-op code and tags
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
JP7487535B2 (ja) 演算処理装置
US6430682B1 (en) Reliable branch predictions for real-time applications

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
FPAY Annual fee payment

Payment date: 20101210

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20120928

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee