KR101669989B1 - 파이프라인 프로세서 및 이퀄 모델 보존 방법 - Google Patents

파이프라인 프로세서 및 이퀄 모델 보존 방법 Download PDF

Info

Publication number
KR101669989B1
KR101669989B1 KR1020100049852A KR20100049852A KR101669989B1 KR 101669989 B1 KR101669989 B1 KR 101669989B1 KR 1020100049852 A KR1020100049852 A KR 1020100049852A KR 20100049852 A KR20100049852 A KR 20100049852A KR 101669989 B1 KR101669989 B1 KR 101669989B1
Authority
KR
South Korea
Prior art keywords
stage
pipeline
instruction
processing
equal
Prior art date
Application number
KR1020100049852A
Other languages
English (en)
Other versions
KR20110130284A (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 KR1020100049852A priority Critical patent/KR101669989B1/ko
Priority to US12/982,201 priority patent/US9983932B2/en
Publication of KR20110130284A publication Critical patent/KR20110130284A/ko
Application granted granted Critical
Publication of KR101669989B1 publication Critical patent/KR101669989B1/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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/1407Checkpointing the instruction stream
    • 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
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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

Landscapes

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

Abstract

이퀄 모델 상의 제약 조건을 만족시키는 파이프라인 프로세서가 제공된다. 제공되는 파이프라인 프로세서는 적어도 한 개의 인스트럭션을 다수의 스테이지로 나누어서 처리하는 파이프라인 처리부 및 파이프라인 처리부 내부의 인스트럭션 전부 또는 일부의 처리 결과를 저장하고, 저장된 처리 결과를 각각의 인스트럭션의 레이턴시를 고려하여 레지스터 파일에 기록하는 이퀄 모델 보상부를 포함할 수 있다.

Description

파이프라인 프로세서 및 이퀄 모델 보존 방법{Pipeline processor and Equal model conservation method}
파이프라인 프로세서의 이퀄 모델 보존 기술과 관련된다.
파이프라인 프로세서에서는 하나의 명령어 처리가 여러 개의 단계들로 구분되어 이루어진다. 예를 들어, 명령어 처리 과정은 페치(fetch) 단계, 디코드(decode) 단계, 실행(execute) 단계, 및 기입(write-back) 단계로 구분될 수 있다. 파이프라인 프로세서에서는 복수의 명령어들이 겹쳐진 형태로 파이프라인의 각 단계들을 순차적으로 지나가면서 실행될 수 있기 때문에, 프로그램의 고속 처리가 가능하다.
파이프라인 프로세서의 일 유형으로 이퀄-모델 프로세서(Equal- Model Processor)와 LTE(Less-Than-or-Equal) 모델 프로세서가 있다. 이퀄-모델 프로세서 또는 LTE 모델 프로세서에서는 각각의 명령어에 대하여 소정 크기의 최대 레이턴시(maximum latency)가 미리 설정되어 있다. 각 명령어에 대한 최대 레이턴시의 값은 프로세서의 종류에 따라서 달라질 수 있다. 그리고 프로세서의 컴파일러(compiler)는 각 명령어에 대한 최대 레이턴시를 알고 있으며, 스케줄할 때 알고 있는 각 명령어의 최대 레이턴시를 고려한다.
'최대 레이턴시'란 각 명령어에 따른 오퍼레이션이 실행되어 그 결과가 목표 레지스터에 기입되기까지의 최대 기간을 가리킨다. 이퀄-모델 프로세서에서는 해당 명령어의 실행 결과는 설정된 최대 레이턴시가 만료된 이후에 목표 레지스터에 기입된다. 반면, LTE 모델 프로세서에서는 설정된 최대 레이턴시가 만료되기 전이라도 실행 결과가 목표 레지스터에 기입되는 것이 허용될 수 있다. 따라서 이퀄-모델 프로세서에서는 최대 레이턴시가 만료될 때까지는 실행 결과가 목표 레지스터에 기입되지 않고 기존 값이 그대로 유지되기 때문에, 목표 레지스터의 다중 할당을 통하여 유연한 스케줄이 가능하다. 반면, LTE 모델 프로세서에서는 최대 레이턴시가 만료되기 전이라도 실행 결과가 기입될 수 있기 때문에, 목표 레지스터의 다중 할당이 제한된다.
임의의 위치 또는 임의의 시점에 이벤트 처리를 위해 파이프라인을 정지 및 재시작하더라도 이퀄 모델을 보존할 수 있는 파이프라인 프로세서 장치 및 그 방법이 제공된다.
본 발명의 일 양상에 따른 파이프라인 프로세서는, 적어도 한 개의 인스트럭션을 다수의 스테이지로 나누어서 처리하는 파이프라인 처리부 및 파이프라인 처리부 내부의 인스트럭션 전부 또는 일부의 처리 결과를 저장하고, 저장된 처리 결과를 각각의 인스트럭션의 레이턴시를 고려하여 레지스터 파일에 기록하는 이퀄 모델 보상부를 포함한다.
본 발명의 일 양상에 따른 파이프라인 프로세서의 이퀄 모델 보존 방법은, 파이프라인 내부의 인스트럭션 전부 또는 일부의 처리 결과를 저장하는 단계 및 저장된 처리 결과를 각각의 인스트럭션의 레이턴시를 고려하여 레지스터 파일에 기록하는 단계를 포함한다.
개시된 내용에 의하면, 파이프라인 프로세서에서 인터럽트 또는 브레이크포인트(breakpoint)와 같은 트리거 신호가 임의의 시점에 발생하더라도 이퀄 모델 상의 제약 조건을 만족시킬 수 있고, 나아가 딜레이 없이 파이프라인을 비우고 디버깅을 위한 인스트럭션을 수행한 뒤 재시작하는 것이 가능해진다.
도 1은 본 발명의 일 실시예에 따른 파이프라인 프로세서를 도시한다.
도 2a 내지 도 2g는 본 발명의 일 실시예에 따른 파이프라인 프로세서의 동작 과정을 도시한다.
도 3은 본 발명의 일 실시예에 따른 이퀄 모델 보상부를 도시한다.
도 4는 본 발명의 일 실시예에 따른 이퀄 모델 보상부의 상태를 도시한다.
도 5는 본 발명의 다른 실시예에 따른 파이프라인 프로세서를 도시한다.
도 6은 본 발명의 또 다른 실시예에 따른 파이프라인 프로세서를 도시한다.
도 7은 본 발명의 일 실시예에 따른 파이프라인 프로세서의 이퀄 모델 보존 방법을 도시한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시를 위한 구체적인 예를 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 파이프라인 프로세서를 도시한다.
도 1을 참조하면, 본 실시예에 따른 파이프라인 프로세서(100)는 소정의 레이턴시(latency)가 경과된 이후에 처리 결과가 레지스터 파일(103)에 반영되어야 하는 이퀄 모델 프로세서(equal model processor)에 이용될 수 있다. 파이프라인 프로세서(100)는, 어떤 이벤트에 따라 파이프라인을 정지했다가 재개하는 경우, 파이프라인 정지에 대응하여 소정의 처리 결과를 임시로 저장하고 파이프라인 재개에 대응하여 임시 저장된 처리 결과를 해당 인스트럭션의 레이턴시에 따라 레지스터 파일(103)에 기록함으로써 이퀄 모델 상의 레이턴시 제약을 맞추는 것이 가능하다.
예를 들어, 파이프라인 프로세서(100)가 디버깅(debugging)을 수행하기 위하여 파이프라인 처리부(101)를 비우는 경우, 디버깅과 관련된 이벤트가 발생했을 당시에 파이프라인 처리부(101) 내부에 있던 인스트럭션들의 전부 또는 일부의 처리 결과를 저장부(109)에 선입선출(FIFO) 구조로 임시 저장했다가 이벤트 종료 후 각 인스트럭션의 레이턴시를 고려해서 저장부(109)에 저장된 처리 결과를 레지스터 파일(103)로 보내는 것이 가능하다.
파이프라인 프로세서(100)는 파이프라인 처리부(101), 이퀄 모델 보상부(102)를 포함한다. 그리고 파이프라인 처리부(101)의 처리 결과가 최종적으로 기록되는 레지스터 파일(103)을 더 포함할 수도 있다.
파이프라인 처리부(101)는 인스트럭션(instruction)을 소정의 동작 클록 또는 사이클에 따라 다수의 스테이지로 나누어서 처리한다. 본 실시예에 따라, 스테이지는 패치(fetch) 스테이지(104), 디코딩(decode) 스테이지(105), 실행(execution) 스테이지(106) 및 기입(write-back) 스테이지(107)를 포함할 수 있다. 그러나 스테이지의 개수가 여기에 한정되는 것은 아니고 사용목적 및 응용예에 따라 다양하게 변경될 수 있다.
패치 스테이지(104)는 인스트럭션을 외부 메모리로부터 가져오는 구성 또는 이러한 과정에 대응된다. 디코딩 스테이지(105)는 패치된 인스트럭션을 해석해서 명령의 내용을 밝히는 구성 또는 이러한 과정에 대응된다. 실행 스테이지(106)는 해석된 명령의 내용에 따라 피연산자를 계산하는 구성 또는 이러한 과정에 대응된다. 기입 스테이지(107)는 실행 결과를 어딘가에 기록하는 구성 또는 이러한 과정에 대응된다.
예를 들어, 파이프라인 처리부(101)는 제 1 사이클에서 인스트럭션을 패치하고, 제 2 사이클에서 패치된 인스트럭션을 디코딩하고, 제 3 사이클에서 인스트럭션을 실행하고, 제 4 사이클에서 실행 결과를 기입하는 것이 가능하다. 여기서는 실행 스테이지(106)가 하나의 사이클을 점유하는 것으로 설명하였으나 반드시 이에 한정되는 것은 아니다. 실행 스테이지(106)는 다수의 사이클에 걸쳐서 실행될 수도 있다.
또한 파이프라인 처리부(101)는 다수의 인스트럭션을 병렬적으로 동시에 처리한다. 예를 들어, 제 1 사이클에서 제 1 인스트럭션이 패치되고, 제 2 사이클에서 제 1 인스트럭션이 디코딩됨과 동시에 제 2 인스트럭션이 패치되는 것이 가능하다. 다시 말해, 어느 한 순간의 파이프라인 처리부(101)의 스냅샷을 살펴보면, 제 1 인스트럭션은 실행 스테이지(106)에 있고, 제 2 인스트럭션은 디코딩 스테이지(105)에 있고, 제 3 인스트럭션은 패치 스테이지(104)에 있을 수 있다.
이퀄 모델 보상부(102)는 제어부(108)와 저장부(109)를 포함할 수 있다. 제어부(108)는 외부로부터의 어떤 이벤트를 수신하고 수신된 이벤트에 따라 파이프라인 처리부(101) 및 저장부(109)를 제어한다. 저장부(109)는 파이프라인 처리부(101)의 인스트럭션 처리 결과를 FIFO 구조로 임시 저장한다.
일 예로써, 제어부(108)는 파이프라인 처리부(101)를 플러시(flush)하기 위한 백업(backup) 신호에 응답하여, 파이프라인 처리부(101) 내부의 인스트럭션 전부 또는 일부가 처리되고 그 처리 결과가 임시로 저장되도록 파이프라인 처리부(101) 및 저장부(109)를 제어한다.
다른 예로써, 제어부(108)는 파이프라인 처리부(101)를 재시작(restart)하기 위한 복구(restore) 신호에 응답하여, 임시로 저장되었던 처리 결과가 레지스터 파일(103)로 전달되고 파이프라인 처리부(101)에 인스터럭션이 채워지도록 파이프라인 처리부(101) 및 저장부(109)를 제어한다.
도 2a 내지 도 2g는 본 발명의 일 실시예에 따른 파이프라인 프로세서의 동작 과정을 도시한다. 도 1, 도 2a 내지 도 2g를 참조하여 파이프라인 처리부(101)가 플러시 및 재시작되는 과정을 구체적으로 설명한다.
일 예로써, 도 2a와 같이, 제 1 인스트럭션(①)이 실행 스테이지(106)에 있고, 제 2 인스트럭션(②)이 디코딩 스테이지(105)에 있고, 제 3 인스트럭션(③)이 패치 스테이지(104)에 있고, 기입 스테이지(107)는 비어있는 상태에서 디버깅 또는 인터럽트 서비스 루틴(ISR) 실행 요청에 따라 파이프라인 처리부(101)를 플러시하기 위한 백업 신호가 수신된 경우를 살펴본다.
제어부(108)가 백업 신호를 파이프라인 처리부(101)와 저장부(109)로 보내면, 제 1 사이클에서, 도 2b와 같이, 실행 스테이지(106)에 있었던 제 1 인스트럭션(①)이 실행되어 그 실행 결과(①`)가 기입 스테이지(107)로 전달되고, 이와 동시에 디코딩 스테이지(105)에 있었던 제 2 인스트럭션(②)이 실행 스테이지(106)로 전달되고, 패치 스테이지(104)에 있었던 제 3 인스트럭션(③)이 디코딩 스테이지(105)로 전달되고, 기능이 없는 무의미한 인스트럭션인 NOP가 패치 스테이지(104)에 채워진다.
이어서, 제 2 사이클에서, 도 2c와 같이, 기입 스테이지(107)에 있었던 제 1 인스트럭션 실행 결과(①`)가 저장부(109)로 입력되고, 저장부(109)는 입력 받은 제 1 인스트럭션의 실행 결과(①`)를 저장한다. 이와 동시에 파이프라인 처리부(101)의 실행 스테이지(106)에 있었던 제 2 인스트럭션(②)이 실행 되어 그 실행 결과(②`)가 기입 스테이지(107)로 전달되고, 디코딩 스테이지(105)에 있었던 제 3 인스트럭션(③)이 실행 스테이지(106)로 전달되고, 패치 스테이지(104)에 있었던 NOP가 디코딩 스테이지(105)로 전달되고, 다시 NOP가 패치 스테이지(104)에 채워진다.
이어서, 제 3 사이클에서, 도 2d와 같이, 기입 스테이지(107)에 있었던 제 2 인스트럭션 실행 결과(②`)가 저장부(109)에 저장되고, 이와 동시에 실행 스테이지(106)에 있었던 제 3 인스트럭션(③)이 실행되어 그 실행 결과(③`)가 기입 스테이지(107)로 전달되고, 디코딩 스테이지(105)의 NOP가 실행 스테이지(106)로 전달되고, 패치 스테이지(104)의 NOP가 디코딩 스테이지(105)로 전달되고, 다시 NOP가 패치 스테이지(104)에 채워진다.
마찬가지로, 제 4 사이클에서, 도 2e와 같이, 기입 스테이지(107)에 있었던 제 3 인스트럭션 실행 결과(③`)가 저장부(109)에 저장되고, 나머지 스테이지(104)(105)(106)(107)에 NOP가 채워지면, 파이프라인 처리부(101)가 플러시된다.
즉 파이프라인 처리부(101)의 플러시를 위한 어떤 이벤트가 발생하였을 때, 파이프라인 처리부(101)의 각 인스트럭션은 동작 클록 또는 사이클에 따라 스테이지를 진행하면서 처리가 되고, 그 처리 결과가 이퀄 모델 보상부(102)에 차례대로 저장되는 것을 알 수 있다.
도 2a 내지 도 2e에서, 각각의 스테이지가 하나의 사이클을 점유하는 것으로 설명하였으나 실시예에 따라 다수의 사이클을 가질 수도 있다. 예를 들어, 실행 스테이지(106)의 경우 N(N>1)개의 사이클로 구성될 수도 있다.
또한, 파이프라인 처리부(101)의 플러시를 위한 이벤트가 발생하였을 때 파이프라인 처리부(101) 내부에 존재하였던 모든 인스트럭션을 처리해서 백업하는 것으로 설명하였으나 일부의 인스트럭션에 대해서만 처리 결과를 백업하는 것도 가능하며, 어떠한 인스트럭션을 처리하고 처리 안할지는 사용목적 및 응용예에 따라 다양하게 변경될 수 있다. 예를 들어, 실행 스테이지(106)가 다수의 서브-실행 스테이지로 나누어지는 경우, 첫 번째 서브-실행 스테이지 이후의 인스트럭션들, 즉 첫 번째 서브-실행 스테이지를 제외한 나머지 실행 스테이지 및 기입 스테이지에 대응되는 인스트럭션들을 플러시하는 것이 가능하다.
도 2e와 같이, 파이프라인 처리부(101)가 모두 비워지면, 디버깅 또는 인터럽트 서비스 루틴과 같은 다양한 이벤트를 처리한 후, 이벤트 처리가 완료되면, 파이프라인 처리부(101)가 이벤트 발생 전의 원래의 인스트럭션을 처리하도록 파이프라인 처리부(101)를 재개한다.
예컨대, 도 2f와 같이, 복구 신호에 따라 제 4 인스트럭션(④)이 패치 스테이지(104)에 채워지고, 저장부(109)에 있던 제 1 인스트럭션의 처리 결과(①`)가 레지스터 파일(103)로 전달된다.
또한, 다음 사이클에서, 도 2g와 같이, 제 5 인스트럭션(⑤)이 패치 스테이지(104)에 채워지고, 패치 스테이지(104)에 있던 제 4 인스트럭션(④)이 디코딩 스테이지(105)로 옮겨지고, 저장부(109)에 있던 제 2 인스트럭션의 처리 결과(②`)가 레지스터 파일(103)로 전달된다.
이와 같이, 제 1 인스트럭션의 처리 결과(①`) 및 제 2 인스트럭션의 처리 결과(②`)는 파이프라인 처리부(101)의 각 스테이지를 모두 거친 후의 결과 값이고 저장부(109) 내에서 FIFO 구조를 통해 몇 개의 사이클을 거친 후에 레지스터 파일(103)에 기록되기 때문에 이퀄 모델 상의 레이턴시를 만족시킨다.
또한 인터럽트 또는 브레이크포인트(breakpoint)와 같은 트리거 신호가 임의의 시점에 발생하더라도 딜레이 없이 파이프라인을 비우고 디버깅을 위한 인스트럭션을 수행한 뒤 재시작하는 것이 가능해진다.
도 3은 본 발명의 일 실시예에 따른 이퀄 모델 보상부를 도시한다.
도 3을 참조하면, 이퀄 모델 보상부(102)는 제어부(108) 및 저장부(109)를 포함한다.
제어부(108)는 복구 신호(201) 및 백업 신호(202)를 저장부(109)에 인가한다. 복구 신호(201)는 파이프라인 처리부(101, 도 1 참조)를 재시작하기 위한 신호이고 백업 신호(202)는 파이프라인 처리부(101)를 플러시하기 위한 신호가 될 수 있다.
저장부(109)는 제 1 스위치(203), 제 2 스위치(204) 및 FIFO 유니트(205)를 포함한다. FIFO 유니트(205)는 파이프라인 처리부(101)의 인스트럭션 처리 결과를 저장하는 부분이다. FIFO 유니트(205)의 크기는 M과 같다. M은 파이프라인 처리부(101)의 어떤 인스트럭션이 모든 스테이지를 통과하는데 걸리는 클럭 또는 사이클 수의 최대 값보다 같거나 큰 값을 갖는다. 제 1 스위치(203)는 복구 신호(201)에 따라 기입 스테이지(107)의 출력 또는 FIFO 유니트(205)의 출력 중 어느 하나를 선택한다. 제 2 스위치(204)는 백업 신호(202)에 따라 제 1 스위치(203)의 출력 또는 디폴트 값 중 어느 하나를 선택한다. 제 2 스위치(204)의 출력은 레지스터 파일(103)로 입력된다.
선택적으로, FIFO 유니트(205)는 소정의 인터페이스를 통해 레지스터 파일(103)이 아닌 다른 레지스터와 연결될 수 있다.
도 4는 본 발명의 일 실시예에 따른 이퀄 모델 보상부의 동작 상태를 도시한다. 도 3 및 도 4를 참조하여 이퀄 모델 보상부(102)의 동작을 설명하면 다음과 같다.
상태 #1에서, 복구 신호(201)가 0이므로 제 1 스위치(203)는 기입 스테이지(107)의 출력(301)을 선택한다. 그리고 백업 신호(202)가 0이므로 제 2 스위치(204)는 제 1 스위치(203)의 출력(302)을 선택한다. 따라서 기입 스테이지(107)의 출력(301)이 FIFO 유니트(205)를 우회하여 레지스터 파일(103)로 입력된다.
상태 #2에서, 복구 신호(201)가 0이므로 제 1 스위치(203)는 기입 스테이지(107)의 출력(301)을 선택한다. 그리고 백업 신호(202)가 1이므로 제 2 스위치(204)는 디폴트 값(예컨대, 0)을 선택한다. 따라서 기입 스테이지(107)의 출력(301)은 FIFO 유니트(205)에 저장된다.
FIFO 유니트(205)에 저장되는 기입 스테이지(107)의 출력을 EQ 모델 데이터라고 명명하면, EQ 모델 데이터는 인스트럭션 처리에 따라 레지스터 파일에 기록될 데이터, 그 데이터가 기록될 곳의 주소 및 그 데이터가 레지스터 파일에 기록될지 여부를 나타내는 라이트 인에이블(write enable) 등을 포함할 수 있다.
상태 #3에서, 복구 신호(201)가 1이므로 제 1 스위치(203)는 FIFO 유니트(205)의 출력(304)을 선택한다. 그리고 백업 신호(202)가 0이므로 제 2 스위치(204)는 제 1 스위치(203)의 출력(302), 즉 FIFO 유니트(205)의 출력(304)을 선택한다. 따라서 FIFO 유니트(205)의 저장 값이 레지스터 파일(103)로 전달된다.
상태 #4에서, 복구 신호(201)가 1이므로 제 1 스위치(203)는 FIFO 유니트(205)의 출력(304)을 선택한다. 그리고 백업 신호(202)가 1이므로 제 2 스위치(204)는 디폴트 값(예컨대, 0)을 선택한다. 따라서 FIFO 유니트(205)의 저장 값이 다시 백업될 수 있다.
도 5는 본 발명의 다른 실시예에 따른 파이프라인 프로세서를 도시한다.
도 5를 참조하면, 파이프라인 프로세서(500)의 이퀄 모델 보상부(501)의 저장부(109)는 실행 스테이지(106)의 뒤 및 기입 스테이지(107)의 뒤에 형성되는 것이 가능하다. 따라서 forwarding되는 실행 스테이지(106)의 결과에 대한 이퀄 모델도 유지할 수 있다.
도 6은 본 발명의 또 다른 실시예에 따른 이퀄 모델 보상부를 도시한다.
도 6을 참조하면, 파이프라인 프로세서(600)는 다수의 파이프라인을 갖는 VLIW 프로세서가 될 수 있다. 그리고 이퀄 모델 보상부(601)의 저장부(109)는 각 파이프라인 경로 별로 형성되는 것이 가능하다. 저장부(109)의 크기는 각 파이프라인 경로 별 실행 스테이지(106)의 사이클 수에 따라 달라질 수 있다.
도 7은 본 발명의 일 실시예에 따른 파이프라인 프로세서의 이퀄 모델 보존 방법을 도시한다. 도 1 및 도 7을 참조하여 본 실시예에 따른 파이프라인 프로세서의 이퀄 모델 보존 방법을 설명하면 다음과 같다.
먼저 백업 신호에 따라 파이프라인 내부의 인스트럭션 전부 또는 일부의 처리 결과를 저장한다(701). 예컨대, 디버깅 요청을 수신한 제어부(108)가 백업 신호를 생성하여 이를 파이프라인 처리부(101) 및 저장부(109)에 인가하면, 파이프라인 처리부(101)가 내부의 인스트럭션들의 전부 또는 일부(예컨대, 첫 번째 실행 스테이지 및 기입 스테이지에 존재하는 인스트럭션들)를 처리하고, 그 처리 결과를 저장부(109)가 FIFO 구조로 저장하는 것이 가능하다.
그리고 처리 결과가 저장되면, 파이프라인 내부에 있었던 인스트럭션과 다른 이벤트를 실행한다(702). 예컨대, 파이프라인 처리부(101)에 디버깅을 위한 코드 또는 인터럽트 서비스 루틴 코드가 채워져서 실행되는 것이 가능하다.
그리고 디버깅 또는 인터럽트 처리가 완료되면, 저장된 처리 결과를 각각의 인스트럭션의 레이턴시를 고려하여 레지스터 파일에 기록한다(703). 예컨대, 디버깅이 완료된 후, 제어부(108)가 복구 신호를 생성하여 이를 파이프라인 처리부(101) 및 저장부(109)에 인가하면, 저장부(109)에 FIFO 구조로 저장되어 있던 처리 결과가 하나씩 빠져나오면서 레지스터 파일(103)로 전달되는 것이 가능하다.
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
이상에서 본 발명의 실시를 위한 구체적인 예를 살펴보았다. 전술한 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니할 것이다.

Claims (16)

  1. 적어도 한 개의 인스트럭션을 다수의 스테이지로 나누어서 처리하는 파이프라인 처리부; 및
    상기 파이프라인 처리부 내부의 인스트럭션 전부 또는 일부의 처리 결과를 저장하고, 상기 저장된 처리 결과를 각각의 인스트럭션의 레이턴시를 고려하여 레지스터 파일에 기록하는 이퀄 모델 보상부; 를 포함하고,
    상기 다수의 스테이지는 패치 스테이지, 디코딩 스테이지, 다수의 실행 스테이지 및 기입 스테이지를 포함하되,
    상기 파이프라인 처리부는 상기 파이프라인 처리부를 플러시하기 위한 백업 신호에 응답하여, 상기 다수의 실행 스테이지 중 첫 번째 실행 스테이지를 제외한 나머지 실행 스테이지 및 기입 스테이지에 대응되는 인스트럭션을 처리하는 파이프라인 프로세서.
  2. 제 1 항에 있어서, 상기 이퀄 모델 보상부는
    상기 파이프라인 처리부를 플러시하기 위한 백업 신호에 응답하여 상기 처리 결과를 저장하는 파이프라인 프로세서.
  3. 제 1 항에 있어서, 상기 이퀄 모델 보상부는
    상기 파이프라인 처리부를 재시작하기 위한 복구 신호에 응답하여 상기 처리 결과를 상기 레지스터 파일에 기록하는 파이프라인 프로세서.
  4. 제 1 항에 있어서, 상기 이퀄 모델 보상부는
    인스트럭션 처리에 따라 레지스터 파일에 기록될 데이터, 그 데이터가 기록될 곳의 주소 및 그 데이터가 레지스터 파일에 기록될지 여부를 나타내는 라이트 인에이블 중 적어도 하나를 저장하는 파이프라인 프로세서.
  5. 제 1 항에 있어서, 상기 이퀄 모델 보상부는
    상기 저장된 처리 결과에 대응되는 인스트럭션의 레이턴시가 경과된 이후에 상기 저장된 처리 결과를 상기 레지스터 파일에 기록하는 파이프라인 프로세서.
  6. 삭제
  7. 삭제
  8. 제 1 항에 있어서, 상기 이퀄 모델 보상부는
    상기 파이프라인 처리부를 플러시하기 위한 백업 신호에 응답하여, 상기 다수의 실행 스테이지 중 첫 번째 실행 스테이지를 제외한 나머지 실행 스테이지 및 기입 스테이지에 대응되는 인스트럭션의 처리 결과를 저장하는 파이프라인 프로세서.
  9. 제 1 항에 있어서, 상기 이퀄 모델 보상부는
    상기 기입 스테이지의 전단 및/또는 후단에 형성되는 파이프라인 프로세서.
  10. 제 1 항에 있어서, 상기 이퀄 모델 보상부는
    상기 파이프라인 처리부의 클럭 또는 사이클에 따라, 상기 처리 결과를 선입선출(FIFO) 구조로 저장하는 파이프라인 프로세서.
  11. 파이프라인 프로세서가 적어도 한 개의 인스트럭션을 다수의 스테이지로 나누어서 처리하는 단계;
    파이프라인 내부의 인스트럭션 전부 또는 일부의 처리 결과를 저장하는 단계; 및
    상기 저장된 처리 결과를 각각의 인스트럭션의 레이턴시를 고려하여 레지스터 파일에 기록하는 단계; 를 포함하되,
    상기 다수의 실행 스테이지 중 첫 번째 실행 스테이지를 제외한 나머지 실행 스테이지 및 기입 스테이지에 대응되는 인스트럭션을 처리하는 파이프라인 프로세서의 이퀄 모델 보존 방법.
  12. 제 11 항에 있어서,
    상기 처리 결과가 저장된 이후에, 상기 인스트럭션과 다른 이벤트를 실행하는 단계; 를 더 포함하는 파이프라인 프로세서의 이퀄 모델 보존 방법.
  13. 제 12 항에 있어서, 상기 다른 이벤트는
    파이프라인 디버깅 또는 인터럽트 서비스 루틴을 포함하는 파이프라인 프로세서의 이퀄 모델 보존 방법.
  14. 제 11 항에 있어서, 상기 처리 결과는
    인스트럭션 처리에 따라 레지스터 파일에 기록될 데이터, 그 데이터가 기록될 곳의 주소 및 그 데이터가 레지스터 파일에 기록될지 여부를 나타내는 라이트 인에이블 중 적어도 하나를 포함하는 파이프라인 프로세서의 이퀄 모델 보존 방법.
  15. 제 11 항에 있어서, 상기 저장하는 단계는 상기 파이프라인 처리를 위한 클럭 또는 사이클에 따라, 상기 처리 결과를 선입선출(FIFO) 구조로 저장하는 과정을 포함하는 파이프라인 프로세서의 이퀄 모델 보존 방법.
  16. 제 11 항에 있어서, 상기 기록하는 단계는
    상기 저장된 처리 결과에 대응되는 인스트럭션의 레이턴시가 경과된 이후에 상기 저장된 처리 결과를 상기 레지스터 파일에 기록하는 과정을 포함하는 파이프라인 프로세서의 이퀄 모델 보존 방법.
KR1020100049852A 2010-05-27 2010-05-27 파이프라인 프로세서 및 이퀄 모델 보존 방법 KR101669989B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100049852A KR101669989B1 (ko) 2010-05-27 2010-05-27 파이프라인 프로세서 및 이퀄 모델 보존 방법
US12/982,201 US9983932B2 (en) 2010-05-27 2010-12-30 Pipeline processor and an equal model compensator method and apparatus to store the processing result

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100049852A KR101669989B1 (ko) 2010-05-27 2010-05-27 파이프라인 프로세서 및 이퀄 모델 보존 방법

Publications (2)

Publication Number Publication Date
KR20110130284A KR20110130284A (ko) 2011-12-05
KR101669989B1 true KR101669989B1 (ko) 2016-10-28

Family

ID=45023101

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100049852A KR101669989B1 (ko) 2010-05-27 2010-05-27 파이프라인 프로세서 및 이퀄 모델 보존 방법

Country Status (2)

Country Link
US (1) US9983932B2 (ko)
KR (1) KR101669989B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101744150B1 (ko) * 2010-12-08 2017-06-21 삼성전자 주식회사 멀티프로세서 시스템의 지연관리 장치 및 방법
KR102570271B1 (ko) * 2018-11-01 2023-08-25 삼성전자주식회사 저장 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050108510A1 (en) * 1992-03-05 2005-05-19 Seiko Epson Corporation Register file backup queue

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4498136A (en) 1982-12-15 1985-02-05 Ibm Corporation Interrupt processor
US5673426A (en) 1995-02-14 1997-09-30 Hal Computer Systems, Inc. Processor structure and method for tracking floating-point exceptions
JP3670290B2 (ja) 1995-02-14 2005-07-13 富士通株式会社 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
US5764971A (en) * 1996-12-11 1998-06-09 Industrial Technology Research Institute Method and apparatus for implementing precise interrupts in a pipelined data processing system
US6708267B1 (en) 2000-02-04 2004-03-16 International Business Machines Corporation System and method in a pipelined processor for generating a single cycle pipeline stall
US6694425B1 (en) 2000-05-04 2004-02-17 International Business Machines Corporation Selective flush of shared and other pipeline stages in a multithread processor
US7401211B2 (en) 2000-12-29 2008-07-15 Intel Corporation Method for converting pipeline stalls caused by instructions with long latency memory accesses to pipeline flushes in a multithreaded processor
DE60201511T2 (de) 2001-02-06 2005-10-20 Adelante Technologies B.V. Verfahren, system und computerprogrammprodukt zum manipulieren eines anweisungsflusses in einer pipeline eines prozessors
US6889316B2 (en) 2001-03-28 2005-05-03 Intel Corporation Method and apparatus for restoring registers after cancelling a multi-cycle instruction
CN1678999A (zh) * 2002-09-03 2005-10-05 皇家飞利浦电子股份有限公司 用于处理嵌套中断的方法和设备
US7493478B2 (en) 2002-12-05 2009-02-17 International Business Machines Corporation Enhanced processor virtualization mechanism via saving and restoring soft processor/system states
TWI223756B (en) * 2003-10-09 2004-11-11 Univ Nat Sun Yat Sen Automatic register backup/restore system and method
JP2005275703A (ja) * 2004-03-24 2005-10-06 Toshiba Corp プロセッサ及びコンテキスト切り替え方法
US7747841B2 (en) * 2005-09-26 2010-06-29 Cornell Research Foundation, Inc. Method and apparatus for early load retirement in a processor system
US7490224B2 (en) * 2005-10-07 2009-02-10 International Business Machines Corporation Time-of-life counter design for handling instruction flushes from a queue
US7953960B2 (en) 2005-10-18 2011-05-31 International Business Machines Corporation Method and apparatus for delaying a load miss flush until issuing the dependent instruction
US7844804B2 (en) * 2005-11-10 2010-11-30 Qualcomm Incorporated Expansion of a stacked register file using shadow registers
US7583268B2 (en) 2005-11-10 2009-09-01 Via Technologies, Inc. Graphics pipeline precise interrupt method and apparatus
KR100812346B1 (ko) 2006-02-06 2008-03-11 삼성전자주식회사 재구성 어레이에서의 인터럽트 처리 방법 및 장치
KR101312281B1 (ko) 2007-11-06 2013-09-30 재단법인서울대학교산학협력재단 프로세서 및 메모리 제어 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050108510A1 (en) * 1992-03-05 2005-05-19 Seiko Epson Corporation Register file backup queue

Also Published As

Publication number Publication date
US9983932B2 (en) 2018-05-29
US20110296143A1 (en) 2011-12-01
KR20110130284A (ko) 2011-12-05

Similar Documents

Publication Publication Date Title
US9280448B2 (en) Controlling operation of a run-time instrumentation facility from a lesser-privileged state
KR101589857B1 (ko) 런-타임 계측 리포팅
KR19980018067A (ko) 비대칭 멀티프로세서 아키텍쳐의 인터럽트 및 예외사상을 핸들링하기 위한 시스템 및 방법
US6760835B1 (en) Instruction branch mispredict streaming
KR20010030587A (ko) 데이터 처리장치
KR20050089030A (ko) 이중 용도 레지스터를 식별하는 어드레스 지정 패턴에기반한 데이터 추측
US11693661B2 (en) Mechanism for interrupting and resuming execution on an unprotected pipeline processor
US20210294639A1 (en) Entering protected pipeline mode without annulling pending instructions
US20220113966A1 (en) Variable latency instructions
US20240036876A1 (en) Pipeline protection for cpus with save and restore of intermediate results
US11086631B2 (en) Illegal instruction exception handling
US20210326136A1 (en) Entering protected pipeline mode with clearing
US11023342B2 (en) Cache diagnostic techniques
KR101669989B1 (ko) 파이프라인 프로세서 및 이퀄 모델 보존 방법
CN109284176B (zh) 中断响应方法、装置及计算机可读存储介质
US10901747B2 (en) Unified store buffer
US11119149B2 (en) Debug command execution using existing datapath circuitry
US9823931B2 (en) Queued instruction re-dispatch after runahead
WO2020214624A1 (en) Variable latency instructions
JPH1049373A (ja) パイプライン・デジタル・プロセッサにおいて多重で高精度の事象を操作する方法と装置
JPH0384632A (ja) データ処理装置
KR20140111416A (ko) 정적 스케쥴 프로세서의 논블로킹 실행 장치 및 방법
US20110093863A1 (en) Context switching in a data processing apparatus
US20100241832A1 (en) Instruction fetching following changes in program flow
US20160283233A1 (en) Computer systems and methods for context switching

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

Year of fee payment: 4