KR100961242B1 - 명령어를 지연시켜 수행하는 방법 및 명령어를 지연시켜 수행하는 시스템 - Google Patents

명령어를 지연시켜 수행하는 방법 및 명령어를 지연시켜 수행하는 시스템 Download PDF

Info

Publication number
KR100961242B1
KR100961242B1 KR1020080097948A KR20080097948A KR100961242B1 KR 100961242 B1 KR100961242 B1 KR 100961242B1 KR 1020080097948 A KR1020080097948 A KR 1020080097948A KR 20080097948 A KR20080097948 A KR 20080097948A KR 100961242 B1 KR100961242 B1 KR 100961242B1
Authority
KR
South Korea
Prior art keywords
value
bit
instruction
current
command
Prior art date
Application number
KR1020080097948A
Other languages
English (en)
Other versions
KR20100038828A (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 KR1020080097948A priority Critical patent/KR100961242B1/ko
Publication of KR20100038828A publication Critical patent/KR20100038828A/ko
Application granted granted Critical
Publication of KR100961242B1 publication Critical patent/KR100961242B1/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)

Abstract

명령어를 지연시켜 수행하는 방법은 현재 명령어가 이전 명령어와 의존성이 있는지 판단하는 단계, 현재 명령어가 이전 명령어와 의존성이 있는 경우, 현재 명령어의 N번째 비트에 제1 값을 설정하는 단계, 디코딩 단계에서 현재 명령어의 N번째 비트 값을 판단하는 단계 및 현재 명령어의 N번째 비트 값이 제1 값으로 판단된 경우, N번째 비트 값을 제1 값과 반전된 제2 값으로 변경한 후, 디코딩 단계를 한 사이클 더 수행하여 실행 단계, 메모리 접속 단계 및 기입 단계를 한 사이클씩 지연시키는 단계를 포함한다. 따라서 각 명령어의 지연 여부를 결정하는 한 비트를 이용하여 무연산(NOP: No Operation) 명령어의 요구 없이 의존성이 있는 복수의 명령어들을 정상적으로 처리할 수 있고, 이에 따라 프로그램의 크기를 감소시킬 수 있다.
Figure R1020080097948
명령어, 무연산, 프로세서, 지연

Description

명령어를 지연시켜 수행하는 방법 및 명령어를 지연시켜 수행하는 시스템{METHOD AND SYSTEM OF PERFORMING INSTUCTION BY DELAYING}
본 발명은 명령어에 관한 것이다. 보다 상세하게는, 현재 명령어가 이전 명령어와 의존성이 있는 경우, 현재 명령어의 디코딩 단계를 한 사이클 더 수행하여 현재 명령어를 지연시켜 수행할 수 있는 방법 및 시스템에 관한 것이다.
고속 프로세서에서는 명령어의 수행을 여러 단계로 나누고, 한 시점에서 각 단계마다 다른 명령어를 동시에 처리하는 파이프라인 기법이 사용되고 있다.
도1은 복수의 명령어가 수행되는 과정을 나타내는 명령어 파이프라인 상태도이다.
도1을 참조하면, 파이프라인은, 펫치 단계(IF: Insturction Fetch), 디코딩 단계(ID: Instruction Decoding), 실행 단계(EX: Execution), 메모리접속 단계(MA: Memory Access) 및 기입 단계(WB: Write Back)를 포함한다.
펫치 단계에서는 명령어를 명령어 메모리로부터 읽어오고, 디코딩 단계에서는 명령어를 해석하여 수행할 값을 준비하고, 실행 단계에서는 디코딩 된 명령어를 실행하고, 메모리 접속 단계에서는 데이터 메모리로부터 데이터를 읽어오기 위해 접근하고, 기입 단계에서는 실행 단계에서 실행된 결과를 레지스터와 같은 내부 메모리에 저장한다.
파이프라인 기법을 적용하면, 도1에 도시된 바와 같이, 첫 번째 명령어가 디코드 되는 T1~T2일 때, 두 번째 명령어가 펫치되고, 첫 번째 명령어가 실행되는 있는 T2~T3일 때, 두 번째 명령어가 디코드 되고 세 번째 명령어가 펫치된다. 따라서 한 시점에서 동시에 각 단계마다 여러 명령어를 처리할 수 있다. 여기서, Tn~T(n+1)은 한 사이클의 클럭 주기일 수 있다.
제1 이동 명령어(MOVI R0, #100)는 100의 값을 제1 레지스터(R0)에 저장하고, 제2 이동 명령어(MOVI R1, #200)는 200의 값을 제2 레지스터(R1)에 저장하고, 제3 이동 명령어(MOVI R2, #300)는 300의 값을 제3 레지스터(R2)에 저장하고, 제4 이동 명령어(MOVI R3, #400)는 400의 값을 제4 레지스터(R3)에 저장한다.
도1에 도시된 바와 같이, 복수의 명령어들이 서로 의존성 없이 독립된 경우에는 각 파이프라인의 단계마다 유효한 명령어를 처리하므로 최대의 성능을 낼 수 있으나, 명령어들 사이에 의존성이 있는 경우에는 정상적인 동작을 위해서 추가적인 명령어의 삽입이 요구되는 경우가 발생한다.
도2는 명령어들 사이에 의존성이 있는 경우, 복수의 명령어들이 수행되는 과정을 나타내는 명령어 파이프라인 상태도이다.
도2를 참조하면, 로드 명령어(LD R1, #(1000))를 통해 데이터 메모리 1000번지의 값을 제2 레지스터(R1)에 저장한 후, 제1 레지스터(R0)에 저장된 값과 제2 레지스터(R1)에 저장된 값을 합산하여 제3 레지스터(R2)에 저장한다. 그러나, 로드 명령어(LD R1, #(1000))를 통해 데이터 메모리 1000번지의 값을 제2 레지스터(R1)에 저장하는 A지점이 T5이고, 제1 레지스터(R0)에 저장된 값과 제2 레지스터(R1)에 저장된 값을 합산하는 명령어를 실행하는 B 지점이 T4이므로, 합산하는 명령어의 실행 단계에서 올바른 제2 레지스터(R1)에 저장된 값을 사용할 수 없게 된다. 따라서, 명령어들의 의존성으로 인한 문제를 해결하기 위해 무연산(NOP: No Operation) 명령어의 삽입이 요구된다.
도3은 명령어들 사이에 의존성이 있는 경우, 무연산 명령어를 삽입하여 복수의 명령어들을 수행하는 과정을 나타내는 명령어 파이프라인 상태도이다.
도3을 참조하면, 데이터 메모리 1000번지의 값을 제2 레지스터(R1)로 가져오는 로드 명령어(LD R1, #(1000))와 제1 레지스터(R0)에 저장된 값과 제2 레지스터(R1)에 저장된 값을 합산하여 제3 레지스터(R2)에 저장하는 합산 명령어(ADD R2, R0, R1) 사이에 무연산 명령어를 삽입하였다. 로드 명령어(LD R1, #(1000))를 통해 데이터 메모리 1000번지의 값을 제2 레지스터(R1)에 저장하는 A 시점이 T5이고, 제1 레지스터(R0)에 저장된 값과 제2 레지스터(R1)에 저장된 값을 합산하는 명령어를 실행하는 B' 지점도 T5이므로 명령어 의존성으로 인해 발생하는 문제가 해결되었음을 알 수 있다.
그러나, 명령어 의존성으로 인한 문제를 해결하기 위해 무연산 명령어가 추가로 삽입되면 프로그램의 크기가 늘어나는 문제점이 있다. 따라서 무연산 명령어의 추가 삽입 없이 명령어 의존성으로 인해 발생하는 문제점을 해결할 수 있는 방법 및 시스템이 요구된다.
상기와 같은 문제점을 해결하기 위하여, 본 발명은 현재 명령어가 이전 명령어에 의존성이 있는 경우, 현재 명령어의 디코딩 단계를 한 사이클 더 수행하는 명령어 지연 수행 방법을 제공한다.
또한 본 발명은 현재 명령어가 이전 명령어에 의존성이 있는 경우, 현재 명령어의 디코딩 단계를 한 사이클 더 수행하는 명령어 지연 수행 시스템을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 명령어 메모리로부터 명령어를 읽어오는 페치 단계, 상기 명령어를 디코드하는 디코딩 단계, 상기 디코딩 된 명령어를 실행하는 실행 단계, 상기 명령어를 수행하는데 필요한 데이터가 저장되어 있는 데이터 메모리에 접속하는 메모리 접속 단계 및 상기 실행된 결과를 레지스터에 저장하는 기입 단계가 각각 한 사이클의 클럭 주기로 수행되는 명령어를 지연시켜 수행하는 방법은 현재 명령어가 이전 명령어와 의존성이 있는지 판단하는 단계, 상기 현재 명령어가 상기 이전 명령어와 의존성이 있는 경우, 상기 현재 명령어의 N번째 비트에 제1 값을 설정하는 단계, 상기 디코딩 단계에서 상기 현재 명령어의 상기 N번째 비트 값을 판단하는 단계 및 상기 현재 명령어의 상기 N번째 비트 값이 상기 제1 값으로 판단된 경우, 상기 N번째 비트 값을 상기 제1 값과 반전된 제2 값으로 변경한 후, 상기 디코딩 단계를 한 사이클 더 수 행하여 상기 실행 단계, 상기 메모리 접속 단계 및 상기 기입 단계를 한 사이클씩 지연시키는 단계를 포함한다.
상기 현재 명령어의 상기 N번째 비트 값이 상기 제1 값으로 판단된 경우, 상기 현재 명령어의 디코딩 단계 시점부터 수행되는 다음 명령어의 단계들도 한 사이클씩 지연시킬 수 있다.
상기 현재 명령어, 상기 이전 명령어 및 상기 다음 명령어는 각각 32비트일 수 있다.
상기 N 번째 비트는 최상위 비트일 수 있다.
상기 N 번째 비트는 최하위 비트일 수 있다.
상기 제1 값은 1이고, 상기 제2 값은 0일 수 있다.
본 발명의 일 실시예에 따른 페치 단계, 디코딩 단계, 실행 단계, 메모리 접속 단계 및 기입 단계가 각각 한 사이클의 클럭 주기로 수행되는 명령어를 지연시켜 수행하는 시스템은 프로그래밍부 및 프로세서를 포함한다. 상기 프로그래밍부는 상기 현재 명령어가 이전 명령어와 의존성이 있는지 판단하여 상기 현재 명령어가 상기 이전 명령어와 의존성이 있는 경우, 상기 현재 명령어의 N 번째 비트에 제1 값을 설정한다. 상기 프로세서는 상기 현재 명령어의 상기 N 번째 비트 값을 판단하여 상기 현재 명령어의 상기 N 번째 비트 값이 상기 제1 값으로 판단되면, 상기 현재 명령어의 상기 디코딩 단계를 한 사이클 더 수행한다. 상기 프로그래밍부는 제1 판단부 및 비트 설정부를 포함하고, 상기 프로세서는 제2 판단부, 비트 변경부 및 지연 수행부를 포함한다.
상기 제1 판단부는 상기 현재 명령어가 상기 이전 명령어와 의존성이 있는지 판단한다. 상기 비트 설정부는 상기 제1 판단부가, 상기 현재 명령어가 상기 이전 명령어와 의존성이 있다고 판단한 경우, 상기 현재 명령어의 상기 N 번째 비트에 상기 제1 값을 설정한다. 상기 제2 판단부는 상기 디코딩 단계에서, 상기 비트 설정부에 의해 설정된 상기 현재 명령어의 상기 N 번째 비트 값을 판단한다. 상기 비트 변경부는 상기 제2 판단부가, 상기 현재 명령어의 상기 N 번째 비트 값을 상기 제1 값으로 판단하면, 상기 N 번째 비트 값을 상기 제1 값과 반전된 제2 값으로 변경한다. 상기 지연 수행부는 상기 비트 변경부가 상기 N 번째 비트 값을 상기 제2 값으로 변경한 후, 상기 디코딩 단계를 한 사이클 더 수행시켜 상기 실행 단계, 상기 메모리 접속 단계 및 상기 기입 단계를 한 사이클씩 지연시킨다.
상기 지연 수행부는, 상기 현재 명령어의 상기 N번째 비트 값이 상기 제1 값으로 판단된 경우, 상기 현재 명령어의 디코딩 단계 시점부터 수행되는 다음 명령어의 단계들도 한 사이클씩 지연시킬 수 있다.
상기 현재 명령어, 상기 이전 명령어 및 상기 다음 명령어는 각각 32비트일 수 있다.
상기 N 번째 비트는 최상위 비트일 수 있다.
상기 N 번째 비트는 최하위 비트일 수 있다.
상기 제1 값은 1이고, 상기 제2 값은 0일 수 있다.
본 발명의 일 실시예에 따른 명령어를 지연시켜 수행하는 시스템은 명령어 메모리, 제1 판단부, 비트 설정부, 제2 판단부, 비트 변경부 및 지연 수행부를 포 함한다. 상기 명령어 메모리는 페치 단계, 디코딩 단계, 실행 단계, 메모리 접속 단계 및 기입 단계가 각각 한 사이클의 클럭 주기로 수행되는 현재 명령어 및 이전 명령어를 저장한다. 상기 제1 판단부는 상기 명령어 메모리로부터 상기 현재 명령어가 상기 이전 명령어와의존성이 있는지 판단한다. 상기 비트 설정부는 상기 제1 판단부가, 상기 현재 명령어가 상기 이전 명령어와 의존성이 있다고 판단한 경우, 상기 현재 명령어의 N번째 비트에 제1 값을 설정한다. 상기 제2 판단부는 상기현재 명령어의 상기 디코딩 단계에서, 상기 비트 설정부에 의해 설정된 상기 현재 명령어의 상기 N번째 비트 값을 판단한다. 상기 비트 변경부는 상기 제2 판단부가, 상기 현재 명령어의 상기 N 번째 비트 값을 상기 제1 값으로 판단하면, 상기 N번째 비트 값을 상기 제1 값과 반전된 제2 값으로 변경한다. 상기 지연 수행부는 상기 비트 변경부가 상기 N 번째 비트 값을 상기 제2 값으로 변경한 후, 상기 현재 명령어의 상기 디코딩 단계를 한 사이클 더 수행시켜 상기 실행 단계, 상기 메모리 접속 단계 및 상기 기입 단계를 한 사이클씩 지연시킨다.
본 발명의 일 실시예에 따른 페치 단계, 디코딩 단계, 실행 단계, 메모리 접속 단계 및 기입 단계가 각각 한 사이클의 클럭 주기로 수행되는 명령어를 지연시켜 수행하는 시스템은 프로그래밍부 및 프로세서를 포함한다. 상기 프로그래밍부는 상기 현재 명령어가 이전 명령어와 의존성이 있는지 판단하여, 상기 현재 명령어가 상기 이전 명령어와 의존성이 있으면 상기 현재 명령어의 N 번째 비트에 제1 값을 설정하고, 상기 현재 명령어가 상기 이전 명령어와 의존성이 없으면 상기 현재 명령어의 상기 N 번째 비트에 상기 제1 값의 반전 값인 제2 값을 설정한다. 상기 프 로세서는 상기 현재 명령어의 상기 N 번째 비트 값을 판단하여 상기 현재 명령어의 상기 N 번째 비트 값이 상기 제1 값으로 판단되면, 상기 현재 명령어의 상기 디코딩 단계를 한 사이클 더 수행한다. 상기 프로그래밍부는 제1 판단부 및 비트 설정부를 포함하고, 상기 프로세서는 제2 판단부, 일반 수행부, 비트 변경부 및 지연수행부를 포함한다.
상기 제1 판단부는 상기 현재 명령어가 상기 이전 명령어와 의존성이 있는지 판단한다. 상기 비트 설정부는 상기 제1 판단부가, 상기 현재 명령어가 상기 이전 명령어와 의존성이 있다고 판단한 경우, 상기 현재 명령어의 N 번째 비트에 상기 제1 값을 설정하고, 상기 제1 판단부가, 상기 현재 명령어가 상기 이전 명령어와 의존성이 없다고 판단한 경우, 상기 현재 명령어의 상기 N 번째 비트에 상기 제2 값을 설정한다. 상기 제2 판단부는 상기 디코딩 단계에서, 상기 비트 설정부에 의해 설정된 상기 현재 명령어의 상기 N 번째 비트 값을 판단한다. 상기 일반 수행부는 상기 제2 판단부가, 상기 현재 명령어의 상기 N 번째 비트 값을 상기 제2 값으로 판단하면, 상기 실행 단계, 상기 메모리 접속 단계 및 상기 기입 단계를 순차적으로 수행한다. 상기 비트 변경부는 상기 제2 판단부가, 상기 현재 명령어의 상기 N 번째 비트 값을 상기 제1 값으로 판단하면, 상기 N번째 비트 값을 상기 제2 값으로 변경한다. 상기 지연 수행부는 상기 비트 변경부가 상기 N 번째 비트 값을 상기 제2 값으로 변경한 후, 상기 디코딩 단계를 한 사이클 더 수행시켜 상기 실행 단계, 상기 메모리 접속 단계 및 상기 기입 단계를 한 사이클씩 지연시킨다.
본 발명의 일 실시예에 따른 명령어를 지연시켜 수행하는 시스템은 명령어 메모리, 제1 판단부, 비트 설정부, 제2 판단부, 일반 수행부, 비트 변경부 및 지연 수행부를 포함한다. 상기 명령어 메모리는 페치 단계, 디코딩 단계, 실행 단계, 메모리 접속 단계 및 기입 단계가 각각 한 사이클의 클럭 주기로 수행되는 현재 명령어 및 이전 명령어를 저장한다. 상기 제1 판단부는 상기 현재 명령어가 상기 이전 명령어와 의존성이 있는지 판단한다. 상기 비트 설정부는 상기 제1 판단부가, 상기 현재 명령어가 상기이전 명령어와 의존성이 있다고 판단한 경우, 상기 현재 명령어의 N번째 비트에 제1 값을 설정하고, 상기 제1 판단부가, 상기 현재 명령어가 상기 이전 명령어와 의존성이 없다고 판단한 경우, 상기 현재 명령어의 상기 N 번째 비트에 상기 제1 값의 반전 값인 제2 값을 설정한다. 상기 제2 판단부는 상기 디코딩 단계에서, 상기 비트 설정부에 의해 설정된 상기 현재 명령어의 상기 N번째 비트 값을 판단한다. 상기 일반 수행부는 상기 제2 판단부가, 상기 현재 명령어의 상기 N 번째 비트 값을 상기 제2 값으로 판단하면, 상기 실행 단계, 상기 메모리 접속 단계 및 상기 기입 단계를 순차적으로 수행한다. 상기 비트 변경부는 상기 제2 판단부가, 상기 현재 명령어의 상기 N 번째 비트 값이 상기 제1 값으로 판단하면, 상기 N번째 비트 값을 상기 제2 값으로 변경한다. 상기 지연 수행부는 상기 비트 변경부가 상기 N 번째 비트 값을 상기 제2 값으로 변경한 후, 상기 디코딩 단계를 한 사이클 더 수행시켜 상기 실행 단계, 상기 메모리 접속 단계 및 상기 기입 단계를 한 사이클씩 지연시킨다.
본 발명의 일 실시예에 따른 명령어를 지연시켜 수행하는 방법 및 명령어를 지연시켜 수행하는 시스템은 각 명령어의 지연 여부를 결정하는 한 비트를 이용하여 의존성이 있는 복수의 명령어들을 정상적으로 처리할 수 있다. 그러므로 무연산(NOP: No Operation) 명령어가 불필요하고, 이에 따라 프로그램의 크기를 감소시킬 수 있다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있 을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다. 본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다.
도4는 본 발명의 일 실시예에 따른 명령어를 지연시켜 수행하는 방법을 나타내는 순서도이다.
도4를 참조하면, 명령어 메모리로부터 명령어를 읽어오는 펫치 단계, 상기 명령어를 디코드하는 디코딩 단계, 상기 디코딩 된 명령어를 실행하는 실행 단계, 데이터 메모리에 접속하는 메모리 접속 단계 및 상기 실행된 결과를 레지스터와 같은 내부 메모리에 저장하는 기입 단계가 각각 한 사이클의 클럭 주기로 수행되는 현재 명령어가 이전 명령어와 의존성이 있는지 판단한다(S410). 현재 명령어가 이전 명령어에 의존성이 있으면(S410: 예), 현재 명령어의 N 번째 비트에 제1 값을 설정한다. 현재 명령어가 이전 명령어에 의존성이 없으면(S410: 아니오), 현재 명령어의 N 번째 비트에 제2 값을 설정한다. 여기서, N 번째 비트는 최상위 비트일 수도 있고 최하위 비트일 수도 있다. 예를 들면, 현재 명령어는 32비트일 수 있고, N 번째 비트는 첫 번째 비트이거나 32 번째 비트일 수 있다. 또한, 제1 값은 1, 제2 값은 0일 수도 있고, 반대로 제1 값이 0, 제2 값이 1일 수도 있다.
현재 명령어의 수행 과정 중 디코딩 단계에서 현재 명령어의 N 번째 비트에 설정된 값을 판단한다(S440). 현재 명령어의 N 번째 비트가 제1의 값으로 판단되지 않으면, 즉, 현재 명령어의 N 번째 비트가 제2의 값으로 판단되면(S440: 아니오), 현재 명령어가 이전 명령어에 의존성이 없는 것이므로 지연 없이 현재 명령어의 실행 단계, 메모리 접속 단계 및 기입 단계를 순차적으로 수행한다(S450). 현재 명령어의 N 번째 비트가 제1의 값으로 판단되면(S440: 예), 현재 명령어의 N 번째 비트 값을 제1의 값의 반전 값인 제2의 값으로 변경한다(S460). 예를 들면, 현재 명령어 가 이전 명령어와 의존성이 있어 현재 명령어의 최상위 비트에 1의 값이 설정되어 있는 경우, 현재 명령어의 최상위 비트 값을 0으로 변경할 수 있다. 현재 명령어의 N 번째 비트 값이 제1의 값으로 판단되면, 현재 명령어가 이전 명령어에 의존성이 있는 것이므로 현재 명령어의 N 번째 비트 값을 제2의 값으로 변경한 후, 현재 명령어의 디코딩 단계를 한 사이클 더 수행하여(S470) 디코딩 단계 이후의 단계인 실행 단계, 메모리 접속 단계 및 기입 단계를 각각 한 사이클씩 지연시켜 수행한다(S480).
도5는 본 발명의 일 실시예에 따른 복수의 명령어들이 수행되는 과정을 나타내는 명령어 파이프라인 상태도이다.
도5를 참조하면, 로드 명령어(LD R1, #100)를 통해 데이터 메모리 1000번지의 값을 제2 레지스터(R1)에 저장한 후, 합산 명령어(ADD R2, R0, R1)를 통해 R0와 R1의 값을 합산하여 R2에 저장한다. 그러나, 로드 명령어(LD R1, #(1000))를 통해 데이터 메모리 1000번지의 값을 제2 레지스터(R1)에 저장하는 A지점이 T5이고, 합산 명령어(ADD R2, R0, R1)를 통해 제1 레지스터(R0)에 저장된 값과 제2 레지스터(R1)에 저장된 값을 합산하는 합산 명령어(ADD R2, R0, R1)를 실행하는 B 지점이 T4이므로, 합산 명령어(ADD R2, R0, R1)의 실행 단계에서 제2 레지스터(R1)에 저장된 값을 사용할 수 없게 된다.
합산 명령어(ADD R2, R0, R1)를 현재 명령어라고 하면, 현재 명령어가 이전 명령어인 로드 명령어(LD R1, #100)에 의존성이 있으므로, 현재 명령어의 N 번째 비트에 제1의 값이 설정되어 있다. 예를 들면, 현재 명령어의 최상위 비트에 1의 값이 설정되어 있을 수 있고, 설명의 편의상, 현재 명령어가 이전 명령어에 의존성이 있으면, 현재 명령어의 최상위 비트에 1의 값이 설정되어 있다고 가정한다.
현재 명령어인 합산 명령어(ADD R2, R0, R1)의 디코딩 단계(ID)에서 현재 명령어의 최상위 비트가 1인 것을 파악하고, 현재 명령어의 최상위 비트 값을 0으로 변경한 후, 현재 명령어의 디코딩 단계(ID)를 한 사이클 더 수행한다. 즉, 현재 명령어인 합산 명령어(ADD R2, R0, R1)의 디코딩 단계(ID)를 T4~T5 시간에서 한 사이클 더 수행되도록하고, 디코딩 단계(ID) 이후의 단계들인 실행 단계(EX), 메모리 접속 단계(EX) 및 기입 단계(WB)를 각각 한 사이클씩 지연시켜 수행되도록 한다.
따라서, 현재 명령어인 합산 명령어(ADD R2, R0, R1)를 실행하는 시점 B' 지점이 T5이므로 로드 명령어(LD R1, #1000)를 통해 데이터 메모리 1000번지의 값을 제2 레지스터(R1)에 저장하는 A지점과 시간상으로 동일하므로 정상적으로 합산 명령어(ADD R2, R0, R1)를 수행할 수 있다.
T4~T5 시간에서 한 사이클 더 수행되는 디코딩 단계(ID)에서는 현재 명령어인 합산 명령어(ADD R2, R0, R1)의 최상위 비트의 값을 변경된 값인 0으로 파악하여 더 이상 디코딩 단계를 추가로 수행하지 않는다.
T3~T4에서 수행되는 현재 명령어의 디코딩 단계(ID)에서 현재 명령어의 최상위 비트의 값이 1인 것으로 파악하면, 현재 명령어의 디코딩 단계(ID) 시점부터 수행되는 다음 명령어의 단계들도 한 사이클씩 지연될 수 있다. 도5에서, 현재 명령어인 합산 명령어(ADD R2, R0, R1) 다음 명령어는 제4 이동 명령어(MOVI R3, #400)이므로, 합산 명령어(ADD R2, R0, R1)의 최상위 비트가 1인 것으로 파악되는 T3~T4 시간에서 수행되는 디코딩 단계(ID)와 동일 시점에서 수행되는 제4 이동 명령어(MOVI R3, #400)의 펫치 단계(IF)가 T4~T5 시간에서 수행되도록 지연되고, 제4 이동 명령어(MOVI R3, #400)의 디코딩 단계(ID), 실행 단계(EX), 메모리 접속 단계(MA) 및 기입 단계(WB)들도 한 사이클씩 지연되어 수행된다.
따라서, 현재 명령어가 이전 명령어에 의존성이 있는 경우, 무연산(NOP: NO Operation) 명령어의 삽입 없이도 각 명령어의 한 비트를 이용하여 명령어들을 정상적으로 수행할 수 있다.
도6은 본 발명의 일 실시예에 따른 명령어를 지연시켜 수행하는 시스템을 나타내는 블록도이다.
도6을 참조하면, 명령어를 지연시켜 수행하는 시스템(600)은 명령어 메모리(610), 프로그래밍부(615), 프로세서(635) 및 데이터 메모리(680)를 포함한다.
프로그래밍부(615)는 제1 판단부(620) 및 비트 설정부(630)를 포함하고, 프로세서(635)는 수행부(640), 비트 변경부(665) 및 레지스터(690)를 포함한다. 예를 들면, 프로세서(635)는 임베디드 프로세서일 수 있다.
명령어 메모리(610)는 페치 단계, 디코딩 단계, 실행 단계, 메모리 접속 단계 및 기입 단계가 각각 한 사이클의 클럭 주기로 수행되는 현재 명령어, 이전 명령어 및 다음 명령어를 저장한다.
프로그래밍부(615)의 제1 판단부(620)는 현재 명령어가 이전 명령어와 의존성이 있는지 판단하고, 비트 설정부(630)는 제1 판단부(620)의 판단 결과에 따라 명령어 메모리(610)내에 있는 현재 명령어의 N 번째 비트에 제1 값을 설정하거나 제2 값을 설정한다. 즉, 현재 명령어가 이전 명령어에 의존성이 있다고 판단하면, 현재 명령어의 N 번째 비트에 제1 값을 설정하고, 현재 명령어가 이전 명령어에 의존성이 없다고 판단하면, 현재 명령어의N 번째 비트에 제2 값을 설정한다. 여기서, N 번째 비트는 최상위 비트일 수도 있고 최하위 비트일 수도 있다. 또한, 제1 값은 1, 제2 값은 0일 수 있고, 반대로 제1 값이 0, 제2 값이 1일 수도 있다. 설명의 편의상, 비트 설정부(630)는 현재 명령어가 이전 명령어에 의존성이 있으면, 현재 명령어의 최상위 비트에 1의 값을 설정한다고 가정한다.
프로세서(635)의 수행부(640)는 제2 판단부(650), 일반 수행부(660) 및 지연 수행부(670)를 포함한다.
수행부(640)내의 제2 판단부(650)는 현재 명령어의 디코딩 단계에서, 비트 설정부(630)에 의해 설정된 현재 명령어의 최상위 비트 값을 판단한다.
제2 판단부(650)가 최상위 비트 값이 0인 것으로 판단하면, 현재 명령어가 이전 명령어에 의존성이 없는 것이므로 제2 판단부(650)는 판단 결과를 일반 수행부(660)로 전송한다. 일반 수행부(660)는 현재 명령어의 실행 단계, 메모리 접속 단계 및 기입 단계를 지연 없이 수행한다. 제2 판단부(650)가 최상위 비트 값이 1인 것으로 판단하면, 현재 명령어가 이전 명령어에 의존성이 있는 것이므로 제2 판단부(650)는 판단 결과를 비트 변경부(665) 및 지연 수행부(670)로 전송한다. 비트 변경부(665)는 현재 명령어의 최상위 비트 값을 1에서 0으로 변경하고, 지연 수행부(670)는, 비트 변경부(665)가 현재 명령의 최상위 비트 값을 0으로 변경한 후, 현재 명령어의 디코딩 단계를 한 사이클 더 수행하여 현재 명령어의 실행 단계, 메 모리 접속 단계 및 기입 단계를 각각 한 사이클 지연시켜 수행한다. 지연 수행부(660)는 현재 명령어의 디코딩 단계 시점부터 수행되는 다음 명령어의 단계들도 한 사이클씩 지연시켜 수행할 수 있다.
레지스터(690)는 현재 명령어의 수행 결과를 저장하고, 데이터 메모리(680)는 이전 명령어의 수행 결과를 저장할 수도 있고, 현재 명령어의 수행 과정 중 읽어올 데이터를 저장할 수도 있다.
<표1>은 밉스(MIPS: Million Instruction Per Second) 프로세서에서 명령어들의 의존성으로 인해 사용되는 무연산(NOP: No Operation) 명령어가 사용되는 비율을 나타낸다.
Figure 112008069823000-pat00001
<표1>
<표1>을 참조하면, 밉스 프로세서에서 평균적으로 10% 이상 무연산 명령어가 사용되는 것을 알 수 있다. 따라서, 본 발명에 따른 명령어를 지연시켜 수행하는 방법 및 명령어를 지연시켜 수행하는 시스템은 무연산 명령어의 삽입 없이 의존성 이 있는 복수의 명령어들을 정상적으로 처리할 수 있으므로 프로그램의 크기를 감소시킬 수 있다.
본 발명에 따르면, 명령어를 지연시켜 수행하는 방법 및 명령어를 지연시켜 수행하는 시스템은 각 명령어의 지연 여부를 결정하는 한 비트를 이용하여 의존성이 있는 복수의 명령어들을 정상적으로 처리할 수 있다. 그러므로 무연산(NOP: No Operation) 명령어가 불필요하고, 이에 따라 프로그램의 크기를 감소시킬 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
도1은 복수의 명령어가 수행되는 과정을 나타내는 명령어 파이프라인상태도이다.
도2는 명령어들 사이에 의존성이 있는 경우, 복수의 명령어들이 수행되는 과정을 나타내는 명령어 파이프라인 상태도이다.
도3은 명령어들 사이에 의존성이 있는 경우, 무연산 명령어를 삽입하여 복수의 명령어들을 수행하는 과정을 나타내는 명령어 파이프라인 상태도이다.
도4는 본 발명의 일 실시예에 따른 명령어를 지연시켜 수행하는 방법을 나타내는 순서도이다.
도5는 본 발명의 일 실시예에 따른 복수의 명령어들이 수행되는 과정을 나타내는 명령어 파이프라인 상태도이다.
도6은 본 발명의 일 실시예에 따른 명령어를 지연시켜 수행하는 시스템을 나타내는 블록도이다.
<도면의 주요 부분에 대한 설명>
610: 명령어 메모리
620: 제1 판단부
630: 비트 설정부
640: 수행부
650: 제2 판단부
660: 일반 수행부
670: 지연 수행부
680: 데이터 메모리
690: 레지스터

Claims (15)

  1. 제1 판단부, 비트 설정부, 제2 판단부, 비트 변경부 및 지연 수행부를 포함하고, 명령어를 지연시켜 수행하는 시스템에서, 명령어 메모리로부터 명령어를 읽어오는 페치 단계, 상기 명령어를 디코드하는 디코딩 단계, 상기 디코딩 된 명령어를 실행하는 실행 단계, 상기 명령어를 수행하는데 필요한 데이터가 저장되어 있는 데이터 메모리에 접속하는 메모리 접속 단계 및 상기 실행된 결과를 레지스터에 저장하는 기입 단계가 각각 한 사이클의 클럭 주기로 수행되는 명령어를 지연시켜 수행하는 방법에 있어서,
    상기 제1 판단부가 현재 명령어가 이전 명령어와 의존성이 있는지 판단하는 단계;
    상기 현재 명령어가 상기이전 명령어와 의존성이 있는 경우, 상기 비트 설정부가 상기 현재 명령어의 N 번째 비트에 제1 값을 설정하는 단계;
    상기 제2 판단부가 상기 디코딩 단계에서 상기 현재 명령어의 상기 N 번째 비트 값을 판단하는 단계; 및
    상기 현재 명령어의 상기 N 번째 비트 값이 상기 제1 값으로 판단된 경우, 상기 비트 변경부가 상기 N 번째 비트 값을 상기 제1 값과 반전된 제2 값으로 변경한 후, 상기 N번째 비트 값을 판단하는 단계가 포함되는 파이프라인에 후속하는 파이프라인에서 상기 지연 수행부가 상기 디코딩 단계를 한 사이클 더 수행하여 상기 실행 단계, 상기 메모리 접속 단계 및 상기 기입 단계를 한 사이클씩 지연시키는 단계를 포함하는 명령어를 지연시켜 수행하는 방법.
  2. 제1항에 있어서,
    상기 현재 명령어의 상기 N 번째 비트 값이 상기 제1 값으로 판단된 경우, 상기 현재 명령어의 디코딩 단계 시점부터 수행되는 다음 명령어의 단계들도 한 사이클씩 지연시키는 것을 특징으로 하는 명령어를 지연시켜 수행하는 방법.
  3. 제2항에 있어서,
    상기 현재 명령어, 상기 이전 명령어 및 상기 다음 명령어는 각각 32비트인 것을 특징으로 하는 명령어를 지연시켜 수행하는 방법.
  4. 제1항에 있어서,
    상기 N 번째 비트는 최상위 비트인 것을 특징으로 하는 명령어를 지연시켜 수행하는 방법.
  5. 제1항에 있어서,
    상기 N 번째 비트는 최하위 비트인 것을 특징으로 하는 명령어를 지연시켜 수행하는 방법.
  6. 제1항에 있어서,
    상기 제1 값은 1이고, 상기 제2 값은 0인 것을 특징으로 하는 명령어를 지연시켜 수행하는 방법.
  7. 페치 단계, 디코딩 단계, 실행 단계, 메모리 접속 단계 및 기입 단계가 각각 한 사이클의 클럭 주기로 수행되는 현재 명령어를 지연시켜 수행하는 시스템에 있어서,
    상기 현재 명령어가 이전 명령어와 의존성이 있는지 판단하여 상기 현재 명령어가 상기 이전 명령어와 의존성이 있는 경우, 상기 현재 명령어의 N 번째 비트에 제1 값을 설정하는 프로그래밍부; 및
    상기 현재 명령어의 상기 N 번째 비트 값을 판단하여 상기 현재 명령어의 상기 N 번째 비트 값이 상기 제1 값으로 판단되면, 상기 현재 명령어의 상기 디코딩 단계를 한 사이클 더 수행하는 프로세서를 포함하고,
    상기 프로그래밍부는,
    상기 현재 명령어가 상기 이전 명령어와 의존성이 있는지 판단하는 제1 판단부; 및
    상기 제1 판단부가, 상기 현재 명령어가 상기 이전 명령어와 의존성이 있다고 판단한 경우, 상기 현재 명령어의 상기 N 번째 비트에 상기 제1 값을 설정하는 비트 설정부를 포함하고,
    상기 프로세서는,
    상기 디코딩 단계에서, 상기 비트 설정부에 의해 설정된 상기 현재 명 령어의 상기 N 번째 비트 값을 판단하는 제2 판단부;
    상기 제2 판단부가, 상기 현재 명령어의 상기 N 번째 비트 값을 상기 제1 값으로 판단하면, 상기 N 번째 비트 값을 상기 제1 값과 반전된 제2 값으로 변경하는 비트 변경부; 및
    상기 비트 변경부가 상기 N 번째 비트 값을 상기 제2 값으로 변경 한후, 상기 N번째 비트 값을 판단하는 파이프라인에 후속하는 파이프라인에서 상기 디코딩 단계를 한 사이클 더 수행시켜 상기 실행 단계, 상기 메모리 접속 단계 및 상기 기입 단계를 한 사이클씩 지연시키는 지연수행부를 포함하는 것을 특징으로 하는 명령어를 지연시켜 수행하는 시스템.
  8. 제7항에 있어서, 상기 지연부는,
    상기 현재 명령어의 상기 N번째 비트 값이 상기 제1 값으로 판단된 경우, 상기 현재 명령어의 디코딩 단계 시점부터 수행되는 다음 명령어의 단계들도 한 사이클씩 지연시키는 것을 특징으로 하는 명령어를 지연시켜 수행하는 시스템.
  9. 제8항에 있어서,
    상기 현재 명령어, 상기 이전 명령어 및 상기 다음 명령어는 각각 32비트인 것을 특징으로 하는 명령어를 지연시켜 수행하는 시스템.
  10. 제7항에 있어서,
    상기 N 번째 비트는 최상위 비트인 것을 특징으로 하는 명령어를 지연시켜 수행하는 시스템.
  11. 제7항에 있어서,
    상기 N 번째 비트는 최하위 비트인 것을 특징으로 하는 명령어를 지연시켜 수행하는 시스템.
  12. 제7항에 있어서,
    상기 제1 값은 1이고, 상기 제2 값은 0인 것을 특징으로 하는 명령어를 지연시켜 수행하는 시스템.
  13. 페치 단계, 디코딩 단계, 실행 단계, 메모리 접속 단계 및 기입 단계가 각각 한 사이클의 클럭 주기로 수행되는 현재 명령어 및 이전 명령어를 저장하는 명령어 메모리;
    상기 명령어 메모리로부터 상기 현재 명령어가 상기 이전 명령어와 의존성이 있는지 판단하는 제1 판단부;
    상기 제1 판단부가, 상기 현재 명령어가 상기 이전 명령어와 의존성이 있다고 판단한 경우, 상기 현재 명령어의 N 번째 비트에 제1 값을 설정하는 비트 설정부;
    상기 현재 명령어의 상기 디코딩 단계에서, 상기 비트 설정부에 의해 설정된 상기 현재 명령어의 상기 N 번째 비트 값을 판단하는 제2 판단부;
    상기 제2 판단부가, 상기 현재 명령어의 상기 N 번째 비트 값을 상기 제1 값으로 판단하면, 상기 N 번째 비트 값을 상기 제1 값과 반전된 제2 값으로 변경하는 비트 변경부; 및
    상기 비트 변경부가 상기 N 번째 비트 값을 상기 제2 값으로 변경한 후, 상기 N번째 비트 값을 판단하는 파이프라인에 후속하는 파이프라인에서 상기 현재 명령어의 상기 디코딩 단계를 한 사이클 더 수행시켜 상기 실행 단계, 상기 메모리 접속 단계 및 상기 기입 단계를 한 사이클씩 지연시키는 지연 수행부를 포함하는 명령어를 지연시켜 수행하는 시스템.
  14. 페치 단계, 디코딩 단계, 실행 단계, 메모리 접속 단계 및 기입 단계가 각각 한 사이클의 클럭 주기로 수행되는 현재 명령어를 지연시켜 수행하는 시스템에 있어서,
    상기 현재 명령어가 이전 명령어와 의존성이 있는지 판단하여, 상기 현재 명령어가 상기 이전 명령어와 의존성이 있으면 상기 현재 명령어의 N 번째 비트에 제1 값을 설정하고, 상기 현재 명령어가 상기 이전 명령어와 의존성이 없으면 상기 현재 명령어의 상기 N 번째 비트에 상기 제1 값의 반전 값인 제2 값을 설정하는 프로그래밍부; 및
    상기 현재 명령어의 상기 N 번째 비트 값을 판단하여 상기 현재 명령어의 상기 N 번째 비트 값이 상기 제1 값으로 판단되면, 상기 현재 명령어의 상기 디코딩 단계를 한 사이클 더 수행하는 프로세서를 포함하고,
    상기 프로그래밍부는,
    상기 현재 명령어가 상기 이전 명령어와 의존성이 있는지 판단하는 제1 판단부; 및
    상기 제1 판단부가, 상기 현재 명령어가 상기 이전 명령어와 의존성이 있다고 판단한 경우, 상기 현재 명령어의 상기 N 번째 비트에 상기 제1 값을 설정하고, 상기 제1 판단부가, 상기 현재 명령어가 상기 이전 명령어와 의존성이 없다고 판단한 경우, 상기 현재 명령어의 상기 N 번째 비트에 상기 제2 값을 설정하는 비트 설정부를 포함하고,
    상기 프로세서는,
    상기 디코딩 단계에서, 상기 비트 설정부에 의해 설정된 상기 현재 명령어의 상기 N 번째 비트 값을 판단하는 제2 판단부;
    상기 제2 판단부가, 상기 현재 명령어의 상기 N 번째 비트 값을 상기 제2 값으로 판단하면, 상기 실행 단계, 상기 메모리 접속 단계 및 상기 기입 단계를 순차적으로 수행하는 일반 수행부;
    상기 제2 판단부가, 상기 현재 명령어의 상기 N 번째 비트 값을 상기 제1 값으로 판단하면, 상기 N 번째 비트 값을 상기 제2 값으로 변경하는 비트 변경부; 및
    상기 비트 변경부가 상기 N 번째 비트 값을 상기 제2 값으로 변경한 후, 상기 N번째 비트 값을 판단하는 파이프라인에 후속하는 파이프라인에서 상기 디코딩 단계를 한 사이클 더 수행시켜 상기 실행 단계, 상기 메모리 접속 단계 및 상기 기입 단계를 한 사이클씩 지연시키는 지연 수행부를 포함하는 것을 특징으로 하는 명령어를 지연시켜 수행하는 시스템.
  15. 페치 단계, 디코딩 단계, 실행 단계, 메모리 접속 단계 및 기입 단계가 각각 한 사이클의 클럭 주기로 수행되는 현재 명령어 및 이전 명령어를 저장하는 명령어 메모리;
    상기 현재 명령어가 상기이전 명령어와 의존성이 있는지 판단하는 제1 판단부;
    상기 제1 판단부가, 상기 현재 명령어가 상기 이전 명령어와 의존성이 있다고 판단한 경우, 상기 현재 명령어의 N 번째 비트에 제1 값을 설정하고, 상기 제1 판단부가, 상기 현재 명령어가 상기 이전 명령어와의존성이 없다고 판단한 경우, 상기 현재 명령어의 상기 N 번째 비트에 상기 제1 값의 반전 값인 제2 값을 설정하는 비트 설정부;
    상기 디코딩 단계에서, 상기 비트 설정부에 의해 설정된 상기 현재 명령어의 상기 N 번째 비트 값을 판단하는 제2 판단부;
    상기 제2 판단부가, 상기 현재 명령어의 상기 N 번째 비트 값을 상기 제2 값으로 판단하면, 상기 실행 단계, 상기 메모리 접속 단계 및 상기 기입 단계를 순차적으로 수행하는 일반 수행부;
    상기 제2 판단부가, 상기 현재 명령어의 상기 N 번째 비트 값이 상기 제1 값으로 판단하면, 상기 N 번째 비트 값을 상기 제2 값으로 변경하는 비트 변경부; 및
    상기 비트 변경부가 상기 N 번째 비트 값을 상기 제2 값으로 변경한 후, 상기 N번째 비트 값을 판단하는 파이프라인에 후속하는 파이프라인에서 상기 디코딩 단계를 한 사이클 더 수행시켜 상기 실행 단계, 상기 메모리 접속 단계 및 상기 기입 단계를 한 사이클씩 지연시키는 지연 수행부를 포함하는 명령어를 지연시켜 수행하는 시스템.
KR1020080097948A 2008-10-07 2008-10-07 명령어를 지연시켜 수행하는 방법 및 명령어를 지연시켜 수행하는 시스템 KR100961242B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080097948A KR100961242B1 (ko) 2008-10-07 2008-10-07 명령어를 지연시켜 수행하는 방법 및 명령어를 지연시켜 수행하는 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080097948A KR100961242B1 (ko) 2008-10-07 2008-10-07 명령어를 지연시켜 수행하는 방법 및 명령어를 지연시켜 수행하는 시스템

Publications (2)

Publication Number Publication Date
KR20100038828A KR20100038828A (ko) 2010-04-15
KR100961242B1 true KR100961242B1 (ko) 2010-06-03

Family

ID=42215482

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080097948A KR100961242B1 (ko) 2008-10-07 2008-10-07 명령어를 지연시켜 수행하는 방법 및 명령어를 지연시켜 수행하는 시스템

Country Status (1)

Country Link
KR (1) KR100961242B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463523B1 (en) * 1999-02-01 2002-10-08 Compaq Information Technologies Group, L.P. Method and apparatus for delaying the execution of dependent loads

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463523B1 (en) * 1999-02-01 2002-10-08 Compaq Information Technologies Group, L.P. Method and apparatus for delaying the execution of dependent loads

Also Published As

Publication number Publication date
KR20100038828A (ko) 2010-04-15

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
JP2009099097A (ja) データ処理装置
JP2009508180A (ja) マイクロプロセッサにおける効率的なサブプログラムリターン
RU2375768C2 (ru) Процессор и способ осуществления операций непрямого чтения и записи регистра
JP2009059246A (ja) マイクロプロセッサ
US20100306504A1 (en) Controlling issue and execution of instructions having multiple outcomes
JP4134179B2 (ja) ソフトウエアによる動的予測方法および装置
US20070260857A1 (en) Electronic Circuit
US20060095746A1 (en) Branch predictor, processor and branch prediction method
EP3198400B1 (en) Dependency-prediction of instructions
JP7269318B2 (ja) 早期リターン予測を有する分岐ターゲットバッファ
KR100961242B1 (ko) 명령어를 지연시켜 수행하는 방법 및 명령어를 지연시켜 수행하는 시스템
KR20070108936A (ko) 조건부 명령어가 실행되지 않을 경우 소스 오퍼랜드를대기하는 것을 중지하는 방법
JP5209390B2 (ja) 情報処理装置及び命令フェッチ制御方法
US7000135B2 (en) Clock control method and information processing device employing the clock control method
JP2008071061A (ja) 情報処理装置
US11086626B2 (en) Circuitry and methods
CN113946540B (zh) 一种dsp处理器及其判断跳转指令的处理方法
US9135006B1 (en) Early execution of conditional branch instruction with pc operand at which point target is fetched
US20050108698A1 (en) Assembler capable of reducing size of object code, and processor for executing the object code
CN111026442B (zh) 一种cpu中用于消除程序无条件跳转开销的方法及装置
JP5149115B2 (ja) 半導体試験装置
JP4151497B2 (ja) パイプライン処理装置
JP2010092273A (ja) 情報処理装置
CN114035848A (zh) 一种分支预测的方法、装置及处理器

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140422

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee