KR100304182B1 - 슈퍼스칼라프로세서에서트랩을검출및실행하는장치 - Google Patents

슈퍼스칼라프로세서에서트랩을검출및실행하는장치 Download PDF

Info

Publication number
KR100304182B1
KR100304182B1 KR1019970707577A KR19970707577A KR100304182B1 KR 100304182 B1 KR100304182 B1 KR 100304182B1 KR 1019970707577 A KR1019970707577 A KR 1019970707577A KR 19970707577 A KR19970707577 A KR 19970707577A KR 100304182 B1 KR100304182 B1 KR 100304182B1
Authority
KR
South Korea
Prior art keywords
instruction
register
trap
instructions
trapping
Prior art date
Application number
KR1019970707577A
Other languages
English (en)
Other versions
KR19990008053A (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 KR19990008053A publication Critical patent/KR19990008053A/ko
Application granted granted Critical
Publication of KR100304182B1 publication Critical patent/KR100304182B1/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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/327Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for interrupts
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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
    • G06F9/3842Speculative 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
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling

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)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

복수의 파이프라인식 명령에서 동작하는 슈퍼 스칼라 프로세서에서의 트래핑프로그램 명령을 검출 및 실행하는 장치는 명령 캐쉬(210)로부터 또는 메인 메모리로부터 연속의 명령을 페치하는 페치 단, 상기 페치단으로부터 페치된 명령을 기억하는 명령FIFO메모리(220) 및 상기FIFO메모리(220)에 저장된 명령의 상태 에이지에 따라 상기 FIFO 메모리에서 명령을 제거하는 명령 디코드 단(230)을 구비하며, 상기 디코드 단은 트래핑 조건을 위해 상기 FIFO메모리(220)로부터 제거된 명령을 검사하고, 명령에서의 트랩의 식별에 응답하여 상기FIFO메모리(220)으로부터 모든 덜 오래된 명령을 플러시한다. 상기 디코드 단(230)은 하드웨어 트랩과 소프트웨어 트랩을 구별한다. 소프트웨어 트래핑 명령은 실행을 위한 실행단으로 전송된다. 이 디코드단(230)에 의해 상기 페치 어드레스가 적합한 트랩 조절자 어드레스로 변경될 수 있다.

Description

슈퍼스칼라 프로세서에서 트랩을 검출 및 실행하는 장치
통상의 프로세서는 페치, 디코드, 실행의 3단에서의 명령제어부를 포함하도록 구성다. 제 1단에 있어서, 최종프로그램명령을 가르키는 프로그램 카운터에 의해 식별된 위치에서 메모리로부터 명령이 페치되어 다음의 명령이 페치될 수 있다. 상기의 페치에 이어서 가능한 데이터 종속성에 대한 명령이 체크되며, 명령이 테스트를 통과하면 상기 명령 및 오퍼랜드가 발행되어 수행된다. (데이터의 종속성은 상기 명령에 대한 데이터를 아직 활용할 수 없기 때문에 명령이 수행될 수 없는 상황에 있다.)상기 발행된 명령은 가상 발행 프로그램 카운터에 의해 식별될수 있다. 일단 어떤 명령이 디코드되어 발행되면, 그 명령이 실행단으로 전송되며, 이 실행단에서 레지스터 파일 또는 메모리에 기록되는 결과를 발생하며 이로써 프로세서의 상태를 변경할 수 있다.
보다 최근에 개발된 프로세서는 명령이 실행되도록 필요한 자원이 활용될수 있는 지를 알아보기위해 상기 명령에 대한 자원을 검사하는 소위 레지스터 스코어 보드라하는 소자를 구비하고 있다. 이 경우 실행단에서의 명령이 발행되며 이로써 실행이 잘못되게된다. 레지스터 스코어보드는 발행시의 명령이 변경되는 자원을 기록(고정)한다. 상기 자원에의 액세스를 원하는 후속의 명령은 초기에 그 명령의 발행을 중지시키고 있던 명령이 상기 자원을 갱신하고 이를 프로세서에 통지하므로써 연속적으로 명령을 발행할 때까지 발행될수 있다.
이러한 공지의 프로세서는 통상 명령간의 자원 의존성에 따라 명령의 발행이 임의적으로 정지되어 명령페치를 정지시키는 단점을 가질 수 밖에 없었다. 이러한 명령페치의 정지로서 명령이 적게 발행, 실행될 수 밖에 없기 때문에 성능의 손실을 초래하게된다.
또한 컴퓨터 시스템은 여러타입의 명령을 위한 하드웨어 트래핑조건을 형성한다. 하트웨어 트래핑조건은 현재의 조건하에서 상기 명령에 대한 의미있는 실행결과를 생성치 않는 조건에 있다. 하드웨어트래핑조건은 통상 불법의 명령, 우선 명령, 보호 바이오레이션, 페이지폴트, 무효결과, 임의적인 소수점처리기가 없을 시의 소수점명령 및 레지스터 세트 오버플로우를 포함한다.
하드웨어 트래핑 조건은 각각의 명령이 실행되기 전후에 컴퓨터 시스템에 의해 자동적으로 테스트된다. 트래핑조건이 구해지면 트랩이 얻어진다. 트랩을 얻는 단계는 트래핑 명령 및 그 명령을 따르는 모든 것이 머신의 상태에 영향을 미치는 것을 방지하는 단계, 컴퓨터 설계자에게 공지된 특정의 트랩 어드레스 레지스터에서의 트래핑 명령의 어드레스를 구하는단계, 머신의 모드를 슈퍼바이저(우선)모드로 설정하는 단계 및 트랩조절자로 부터 페칭명령으로 스위칭하는 단계로 이루어진다.
트랩조절자의 어드레스는 통상 특정 상태 레지스터 즉 트랩 베이스 레지스터(Trap Base Registor;TBR)의 내용에 대한 트래핑 상태의 타입에 따르는 상수를 연관시키므로써 결정된다.
다른 트랩형식은 소프트웨어 트랩이다. 다수의 컴퓨터 시스템은 특정 명령, 트랩을 포싱하는 사이드 효과를 가진다. 상기 컴퓨터 시스템은 동작시스템의 서비스("시스템호출")를 요청하는 유저모드 프로그램으로 이동된다.
소프트웨어 트랩을 검출하는데 취해진 단계는 트랩명령 자체에 의해 연산된 트랩조절자의 어드레스가 상수가 아니고 변수가되는 것을 제외한다면 하드웨어 트랩을 검출하는 단계와 동일하다.
대부분의 컴퓨터시스템 도구는 파이프라인식이된다. 파이프라인식 도구에 있어서, 최소 5내지 7클럭사이클을 취한다. 통상의 시퀀스 단계는 명령 캐쉬로부터의 명령을 페치하는 단계, 상기 캐쉬의 자원요구조건을 구하도록 명령을 디코드 하는 단계, 레지스터 파일로부터 명령 오퍼랜드 값을 판독하는 단계, 명령을 실행하여 임의의 결과를 얻는 단계,(이 단계는 1에서 3의 클록을 취한다.) 및 상기 결과를 레지스터 파일에 다시 기록하는 단계로 이루어진다.
하드웨어를 최대로 이용하기 위해서, 새로운 명령이 가능한 경우 파이프라인의 각 클럭 사이클에 들어간다. 이러한 식으로 해서 각각의 개별적인 명령이 완전한 실행을 위해서 각각의 사이클을 필요로 하는 경우에도, 클럭사이클마다 하나씩 명령완료속도가 높아진다.
몇몇의 트래핑조건은 실행의 결과에 따르며, 따라서 실행단 후까지 검사될 수 없다. 이러한 명령에 있어서, 무효의 결과로서 레지스터 파일을 갱신하는 것을 방지하기 위한 시간내에 재기록 사이클 동안 테스트가 행해진다. 트래핑조건이 검출되는 경우마다 트랩한 것전에 수행된 모든 명령은 재기록 단에 있게되어 그 결과 레지스터 파일을 갱신시킨다. 트래핑한 것을 따르는 모든 명령은 아직 파이프 라인에 있다. 파이프라인식 머신에서 트랩을 취하는 것은 파이프라인에서 모든 명령을 플러싱하고 트랩조절자 어드레스로 페칭단을 스위치하는 간단한 문제이다. 재기록단에서 트랩을 취하는 것은 플러시된 트래핑명령을 따르는 명령에 하드웨어가 적용된다는 사실로 인해 비효율성을 나타낸다. 통상의 프로세서에 있어서, 트랩을 취함에 있어서 플러시된 명령의 수는 거의 파이프라인의 길이와 같다. 이러한 제약을 간략화하기 위해 모든 트랩이 동일한 방식으로 조정되도록 아주 작다. 인식되지 않거나 우선되기 때문에 실행될 수 없는 명령은 파이프라인의 몇 개의 앞단에서 트래핑으로서 간단히 마크된다. 이러한 트래핑마크는 재기록단에서 인식되거나 동작하기 까지 파이프라인을 통한 명령을 수반한다.
그러나 고장이 있는 슈퍼스칼라 프로세서에 있어서, 상기 재기록단에서 트랩을 취함으로 인한 비효율이 상당히 크게된다. 간략이 기술한 바와 같이, 디코드 단 후에 하나의 버퍼("명령 셀프")를 삽입하고 실행단후에 다른 버퍼("결과 셀프")를 삽입하므로써 상기 프로세서는 종래의 파이프라인과 다르게된다. 각각의 버퍼는 각각의 명령을 유지할 수 있으며, 그 각각의 명령은 그 명령이 다음단으로 이동되게 하기위한 조건의 다른 조합을 대기하는 정해지지 않은 시간 길이 동안 버퍼에 유지된다.
미국 특허원 제 07/622,893호("디커플된 페칭 이슈잉 및 갱신동작 그리고 이론적인 브랜칭을 가지는 프로세서구조"란 제하에 1990년 12월 5일 출원됨)에 개시된 바와 같은 슈퍼스칼라 프로세서에 있어서, 파이프라인의 제 1(페치) 및 최종(재기록)단 사이의 상기 버퍼들 사이에서 최대 64의 명령이 유지될 수 있다. 따라서 재기록단에서의 트랩상의 검출 및 동작은 플러시된 명령에서의 실행 대역폭의 소모된 타스의 클럭을 가지는 결과를 나타낸다. 임의 타입의 트랩은 실행단 이후까지 검출될 수 없다. 이 때문에 노력의 소모는 불가피하다. 그러나 많은 타입의 트랩은 페치 또는 디코드 단에서 검출될 수 없다.
종래 기술의 고장이 있는 프로세서에 있어서, 페치 또는 디코드 단에서 검출된 트랩은 종래의 파이프라인식 머신에서와 같이 조정된다. 상기 명령은 트래핑으로서 마크되며, 다른 명령과 같이 상기 머신에 부가된다. 상기 명령은 자유 실행 유니트를 대기하는 명령 셀프상에 있어서 최종의 셀프로 이동될수 있으며 여기서 보다 먼저 페치된 모든 명령이 재기록단을 거치기 까지 대기해야만 한다. 이 모든 시간동안 상기 페치 및 디코드 단은 상기 디코드단이 모든 후속의 명령이 플러시되는 것을 인식하는 경우에도 트래핑된 한 명령을 따르는 명령을 계속해서 발하고 있다.
디코드 단에서 검출된 여러 타입의 하드웨어 트랩은 이제까지 나타나지 않은 다양성 즉 불법명령, 우선 또는 보호명령을 가진다. 페치단에서 검출되지 않은 페이지 폴트같은 다른 트랩타입은 몇 타스의 소모된 명령이 무의미한 경우에도 상기 트랩조절자에서 라지 오버헤드를 수반한다. 그러나 소프트웨어 트랩 및 레지스터 세트가 오버플로우하는 프로그래밍 에러가 아니며, 발생할 것으로 예상되지 않는 상기 트랩조절자에서의 로우 오버헤드를 수반하는 한 클래스의 트랩이 있게된다. 슈퍼스칼라의 고장이 있는 프로세서에서 재기록단에서 상기 클래스의 트랩을 취하도록 대기하면서 소모된 누적의 노력이 중요하게될 수 있다.
본 발명은 파이프라인식 슈퍼스칼라 프로세서(superscalar processor)에서의 동작을 촉진시키도록 디코드 단에서 트래핑 상태가 확인되는 개선된 프로세서의 구조 및 동작에 관한 것이다.
도 1은 본 발명이 이용될 수 있는 슈퍼스칼라 프로세서의 구조에대한 간략한 블럭도이고,
도 2는 상기 구조의 추가의 부품을 포함하는 블록도이며,
도 3은 브랜치 실행동작을 나타내는 플로우차트이고,
도 4는 본 발명에 따른 고장을 조정하기 위한 장치의 개략 블럭도이다.
본 발명은 복수의 파이프라인식 명령에서 동작하는 슈퍼스칼라 프로세서에서 프로그램 명령 하드웨어 및 소프트웨어 트랩을 검출 및 실행하는 장치를 구비한다. 상기 장치는 명령 캐쉬로부터 또는 메인 메모리로부터의 명령을 페칭하는 페치 수단, 상기 페치수단으로부터 페치된 명령을 기억하는 명령 FIFO메모리 그리고 저장된 명령의 상태기간에 따라 FIFO메모리로부터 명령을 제거하며, 트래핑 조건에 대해 상기 명령을 검사하는 명령디코드 수단을 구비한다.명령에서의 트랩의 식별에 응답하여 상기 디코드 수단은 상기 FIFO메모리로부터 모든 신규의 명령을 플러시한다.
본 발명에 있어서, 상기 디코드단이 한 명령을 명령 셀프에 보내는 대신에 상기 명령에 대한 하드웨어 트래핑 조건을 검출하는 경우 상기 디코드 단은 상기 명령 및 상기 명령을 따르는 페치된 모든 명령을 플러시한다. 소프트웨어 트랩의 경우에 있어서, 상기 소프트웨어 트랩은 트랩 조절자 어드레스가 연산되게하도록 트래핑 명령만을 보내며, 모든 다음의 명령을 플러시한다. 상기 소프트웨어트랩은 한 카피의 특정 트랩 어드레스 레지스터에서의 트래핑명령의 어드레스를 세이브한다. 상기 소프트웨어 트랩은 상기 모드를 슈퍼바이저모드로 설정하며, 새로운 레지스터 세트로 절환해서 트랩조절자 어드레스가 알려지자 마자 상기 페치 단으로 하여금 그 트랩조절자어드레스로부터의 명령의 페칭을 개시하도록 하게한다. 상기 트랩조절자 어드레스는 상기 트랩베이스레지스터, TBR 및 하드웨어 트랩에 대한 일정의 트랩 타입수 또는 소프트웨어 트랩명령 수행의 결과의 연결로 주어진다.
본 발명에 있어서, 디코드 단에서 검출된 하드웨어 트랩을 취하는 하나의 제약은 상기 명령 셀프에 아무 명령이 입력되지 않는 작은 시간 창이 된다.
그러나 상기 명령 셀프가 대기행렬장치이기 때문에 상기 디코드 단이 발행명령을 재점유하기까지 상기 실행단을 비지 상태로 유지하기 위해서 상기 간격의 개시시에 상기 명령셀프에는 이미 충분한 명령이 있을 수 있다. 트랩명령이 실행단에 있게되는 것을 대기하기 때문에 소프트웨어 트랩에 대한 제약이 크게되지만 이러한 제약은 재기록단에 있게되는 트랩명령을 대기하는 것보다 아직은 제약이 적게된다.
상기 디코드단에서 우선 위반(privillege violation)을 제거하기 위해서, 본 발명은 상기 실행단에서보다 상기 디코드단에서 트랩조절자의 진입 및 진출시 상기 슈퍼바이저모드로 그리고 그 모드로부터의 변화를 실행한다. 유사하게 상기 디코드 단에서 레지스터 세트 오버플로우 트랩을 검출할 수 있도록 하기위해서 본 발명은 서브루틴 호출을 위해 마련된 레지스터 세트 변화를 실행하며, 상기 실행단으로가 아니라 디코드 단으로 복귀된다.
본 발명의 목적 및 특징은 첨부도면과 관련한 이하의 상세한 설명 및 청구범위로부터 명백해 질 것이다.
도 1, 2의 블록도 및 도 3의 플로우차트는 선출원된 공동계류 중인 특허원 제 07/622,893호에 개시된 프로세서의 건축적인 개관을 나타낸다. 명령 페처(9;insruction fetcher: 도 2 및 3참조)는 공지의 명령 캐쉬(도시 않음)에 결합되며, 상기 캐쉬메모리(8)로부터 명령(8)을 수신한다. 다른 기능 중에서 상기 페처(9)는 "스로틀링(throttling)"기능을 수행한다. 예를 들면, 상기 명령 캐쉬로부터 명령이 페치될 수 없는 경우 상기 페처(9)는 상기 명령캐쉬에 전달(S100)을 위해 메인 명령 메모리(도시 않음)에서 명령을 가져오도록 동작한다. 상기 캐쉬메모리에서 명령이 한 번 페치된다(S102).상기 페처(9)에 의해 실행된 "트로틀링" 기능의 다른 예는 디스패치될 다수의 클럭 사이클을 필요로하는 명령을 관리하며, 몇가지 이유 예를 들면, 명령 할당에 활용될 수 없는 식별 코드 때문에 페치될수 없는 명령을 관리하는 것을 포함한다.(S103)
도 2에 도시된 바와 같이 상기 페처(9)는 캐쉬메모리로 부터 페치된 명령을 상기 다이나믹 레지스터파일(11)에 공급한다. 상기 다이나믹 레지스터 파일(11)은 프로세서내에 있는 모든 비 브랜치(non-branch)명령을 홀드하고 있다. 상기 캐쉬로부터 명령(8)이 페치되므로써 상기 명령이 오더 페치부에서 페치된 각각의 명령에 고정적으로 순차적인 ID값을 할당하는 (도시치않은)카운터에 의해 식별코드(29) 또는 ID로 할당된다.(S105) 이러한 연속적인 ID는 최상위 비트인 "컬러"비트를 포함하며, 크기 비교용으로 이용된다. 컬러 비트를 비교함으로써 필요한 경우 두 개의 명령 ID 와 조기에 피치된 명령의 크기가 구해질 수 있다. 이로써 두 개의 명령 사이의 "에이지"비교가된다. 즉 명령(8)이 메모리로부터 페치된 경우의 비교적인 순서를 제공한다.
도 2에 도시한 바와 같이 상기 페처(9)는 또한 브랜치가 실행될 수 없는 경우 페처(9)가 정지하지 않도록 하는 방식으로 브랜치 실행을 관리한다. 실행될 브랜치의 경우에 그 브랜치는 유효 상태코드(109)를 가져야만한다. 상기 상태코드는 그를 변경하는 명령에 의해 설정된다. 따라서 상기 상태 코드를 변경하는 명령이 디스페치되는 시간에 상기 페처(9)는 그에 고정된 비트를 제공하므로써 상태 코드 레지스터를 무효화시킨다.(S117)
상기 페처는 상기 상태코드를 고정한 명령의 ID를 기억한다. 상기 명령의 실행이 종료될 때까지 상태 코드의 고정을 유지하며, 상기 상태코드 레지스터를 갱신하므로써(S113)상기 상태코드를 해제한다.(S120)
상기 상태코드 레지스터의 내용은 상기 레지스터파일 및 메모리와 유사하게 순차적으로 갱신되는 경우 프로세서의 상태를 반영치 않을 때 본원에서는 "인세인(insane)"이라한다. 상기 상태코드가 고정된 시간동안(S117), 상기 상태코드를 변경할 필요를 나타내는 명령이 있다. 이러한 명령에 의해 결정을 하도록 다음의 브랜치가 상태 코드를 이용하는 것이 방지된다. 따라서 상기 페처는 상태코드(112)를 고정하고 있는 명령의 ID와 더불어 브랜치 셀버(13)에 다음의 브랜치 명령을 제공한다. 상기 로킹 명령의 결과에 의해서만 상기 브랜치에 대해 유효한 상태 코드가 제공된다.
상기 브랜치 셀버(13)에 있어서,상기 상태 코드가 활용될 수 있기까지 브랜치 명령이 대기된다. 즉 상기 브랜치 명령은 상기 상태코드를 고정하고 있는 명령이 실행을 완료하기 까지 대기되며, 상태 코드를 갱신한다. 브랜치가 보류되면 상기 페처(9)는 프리딕션 비트(prediction bit)에 의거 그 위치로부터 진행하도록 명령 흐름을 하향시키는 S112를 실행한다. 환언하면 프로그램의 연속적인 실행을 위해서 최상의 방향으로 흐름이 진행된다. 상기 페처(9)는 예보된 통로를 따라 "온 스페큐레이션"명령의 페치를 지속한다. 셀브 브랜치 명령이 대기되고 있는 상태코드가 유효하게되면, 브랜치 결정이 재 평가되며,(S115) 최초의 결정과 비교된다. 상기의 비교가 브랜치가 적절히 실행되었다는 것을 나타내면, 그 브랜치는 셀프로부터 제거된다. 상기 S118 에서 결정이 다른 경우 예보된 결정은 잘못된 것이며, 프로세서는 다른 예보되지 않은 브랜치를 따라 처리되야만 한다. 따라서 프로그램은 다른 방향에서 브랜치 명령으로부터 실행을 재개해야한다.
부정확하게 예보된 브랜치 결정을 따르는 방향을 프로세서가 변경하기 위해서 상기 프로세서는 임의의 지점에서 재시동할 수 있어야 한다. 예들 들어 상기 프로세서에서 허여된 N개의 명령이 있으며,페치되지만 실행되지 않는 명령이 있는 것을 가정하자. 상기 프로세서는 상기 다이나믹 레지스터 파일에 있는 임의의 명령 즉 상기 메모리의 상태를 아직 갱신하지 않은 임의의 명령으로 재시동할 수 있어야한다. 이러한 소위 재시동 기능은 IDs로 검색된 다이나믹 레지스터 파일(11)에서의 명령의 어드레스를 포함하는 N- 엔트리 레지스터파일인 본원에서 "세인(sane)"프로그램 카운터 파일(15)이라하는 프로그램 카운터 파일의 도움을 수반한다. 상기 프로세서가 브랜치 명령을 재페치함으로써 재시동할 필요가 없는 경우 상기 브랜치의 ID는 상기 세인 프로그램 카운터 파일(15)을 검색하고 그 프로개램 카운터(119)를 얻는데 이용된다. 상기 프로그램카운터는 전방의 지점에서 상기 프로세서를 재시동하는데 이용된다.
브랜치가 부정확하게 예보된 케이스(S118)에 있어서, 몇 개의 명령이 상기 실행 스트림으로 보내지며, 다이나믹 레지스터파일(11)에 있지만 상기 레지스터 파일(17)을 아직 갱신하지 않은 결과를 발생할 수 있다.상기 명령은 확실치 않기때문에 상기 세인 상태 제어기(19)에 의해 완료에 이르게되지 않는다.브랜치가 부정확하게 예보되었다는 것을 결정시 상기 다이나믹 레지스터 파일(11)로부터 상기 부정확한 예보에 따라 실행된 결과 및 모든 명령을 플래쉬한다.
상기 세인 상태 제어기(19)는 보류된 브랜치 명령의ID를 상기 브랜치 셀버(13)으로부터 수신하고 다중의 보류 브랜치에 있어서 (브랜치가 페치된 오더로 결정된) 모든 보류된 브랜치의 가장오래된 ID를 수신한다. 상기 세인 상태 제어기(19)는 상기 프로세서의 상태를 갱신시키기위해 가장 오래된 보류된 브랜치의 ID 보다 최근이 ID를 가지는 명령을 가지지 않기 때문에상기 지점에서 명령의 완료를 정지한다. 이로써 프로세서는 프로세서의 상태를 변경하도록 확실치 않은 결과를 제공하지 않으으므로써 그 세인 상태를 유지하게된다.
상기 프로세서는 또한 트랩조건 또는 외부의 인터럽트를 거친후에 재시동할 수 있다. 상기 프로세서는 트랩조건과 만나는 지점에서 프로세서의 상태를 제공하는 트랩논리(21)를 포함한다. 상기 트래핑 명령의 ID는 세인 프로그램 카운터 파일(15)로부터 프로그램 카운터를 얻는데 이용된다.
이제 도 4를 참조하면, 본 발명에따른 고장을 조정하는 장치의 개략 블록도가 도시되는데, 그 주요 구성부품은 페치 단(210), 명령 FIFO(220), 디코드 단(230) 및 "상태 레지스터(state register)"를 구비하는데, 상기 상태레지스터는 슈퍼바이저 레지스터(261), 인에이블 플로팅 포인트 레지스터(Enable Floating-point(EF)register(262)), 현재 윈도우 포인터(Current Window Pointer(CWP:263),윈도우 무효 마스크(WIM;264), 트랩 베이스 레지스터(TBR;265), 및 트랩 타입 레지스터(Trap Type register;266)를 구비한다.
전술한 바와 같이 상기 페치 단은 명령 캐쉬메모리 또는 되시치 않은 메인 메모리로부터의 명령을 페치한다. 상기 페치단은 페치 어드레스(260)에서 시작하는 연속의 어드레스로부터 페치된 와이어 211A-D를 통해 클럭사이클당 최대 4명령을 출력한다. 상기 페치 단은 또한 메모리 관리 유니트(Memory Management Unit;MMU)기능을 실행한다. 상기 MMU기능은 메인 메모리 어드레스 공간을 페이로 분할한다. 상기 메인메모리 유니트는 각 페이지에 임의의 속성을 제공한다. 본 발명에 속하는 속성은,
1. 상기 명령을 페치하는 시도에 있어서 물리 메모리 에러가 있는가?
2.메인 메모리에 현재 페이지의 카피가 있는가?
3.상기 페이지로부터 명령을 페치하는 것이 허용되는가?
4. 슈퍼바이저 모드에 없는 (즉 슈퍼버이저 비트(261)이 0인 경우)페이지로부터 페치된 명령을 실행하는 것이 허용되는가?
하는 것이다.
클럭 사이클에서 페치단에 의해 출력된 모든 4개의 명령이 같은 페이지 상으로 구속되는 경우, 상기 페치 단은 단일 세트의 4 액세스비트(212)를 출력하는데, 하나는 상기 명령들을 포함하는 페이지에 대한 상기 질문의 각각에 대한 대답을 나타낸다.
상기 명령 FIFO(220)는 각 명령에 대한 어드레스 및 액세스 비트에 따라 최대 5개의 명령을 홀드하고 있다. 상기 FIFO 내의 명령은 "에이지"로 순서지어지는 것으로 볼 수 있다. 즉 첫째로 제거되어 지는 FIFO의 헤드에서의 명령은 "최구의(oldest)"것이며, 다른 것 보다 먼저 제거되지 않는 테일에서의 명령은 "최신의(youngest)" 것이다. 상기 디코드 단(230)은 각 사이클마다 헤드(최구의 명령)로부터 제로에서 4개의 명령을 제거한다. 페치 단(210)은 그 페치 단에서의 활용을 가지는 명령의 수 및 헤드로부터의 제거후 FIFO의 테일에서의 빈 위치의 수를 고려한다면 각 클럭 사이클 마다 할 수 있는 만큼 많은 명령을 기록한다.
어드레스가 페치 어드레스(260)인 페치 단에서의 명령(211A)은 최구의 명령이며 하나가 부가된경우의 FIFO에 부가된 하나의 명령이다. 제 2명령이 상기 FIFO에 부가되면 그 명령은 다음의 높은 어드레스에서의 하나의 명령(211B)이된다. 상기FIFO는 또한 완전히 플러시되어 모든 엔트리를 제거한다. 클럭사이클에서 부가된 모든 명령은 와이어(212)상의 4개의 액세스 비트 입력의 카피를 얻는다. 상기 명령FIFO는 그에 저장된 각각의 명령의 어드레스의 트랙을 유지한다.
상기 디코드 단은 명령 디코드 FIFO(221A-D)에서의 4개의 최구의 엔트리를 병렬로 검사한다. 명령(221A)가 최구의 것이며 221D가 최신의 명령이다. 하나의 명령을 포함하는 각각의 엔트리의 경우에 상기 디코드 단은 몇 개의 가능한 트래핑 조건중 임의의 존재를 결정한다. 상기 디코드 단은 또한 그 디코드 단이 속하는 상태 레지스터, 즉 슈퍼바이저 비트, EF 비트, CWP,WIM 또는 TBR중 하나를 변경하는 임의의 비 트래핑 명령을 찻는다.
상기 상태 레지스터는 두 클래스의 명령으로 변경된다. 상기 상태레지스터 기록명령은 임의의 범용 레지스터의 내용에서의 동작을 실행하며, 상기 상태 레지스터중 하나에 상기 동작의 결과를 기록한다. (양호한 실시예에 있어서, 3개의 모든 슈퍼바이저,EF 및 CWP레지스터(261-263)는 단일의 상태 레지스터 기록 명령에 의해 기록된다.) 상태 레지스터를 변경하는 명령의 두 번째 클래스는 증분적 변경자이다. 상기 증분적 변경자는 상수로 전류 값을 변경하거나 레지스터를 상수로 세트한다.
특히 바람직한 실시예에 있어서, 상기 슈퍼바이저 비트(261)는 트랩(RETT) 명령으로부터 복귀의 사이드 효과로서 변경되며, 그 비트는 0으로 세트된다. 어느 레지스터세트가 사용중에 있나를 나타내는 3 비트 인덱스 인 현재 윈도우 포인터(263)는 세이브 명령(통상 서브루틴 호출시 실행됨)의 사이드 효과로서 하나씩 감소된다. 서브루틴 복귀에서 실행된 재저장 명령은 RETT 명령의 경우와 같이 CWP(263)를 하나씩 증가시키는 사이드 효과를 가진다.
상기 디코드 단(230)은 그것이 하나의 상태 레지스터를 변경하는 지를 알아보도록 4개의 명령(221A-D) 각각에 대해 검사한다. 임의의 명령이 상기 임의의 상태 레지스터에 기록되면, 상기 임의의 명령을 따르는 다른 명령은 상기 상태 레지스터 기록 명령의 결과가 알려지기 까지 평가된 그들의 트래핑 조건을 가질 수 없다. 따라서 상기 디코드 단은 후자의 명령 결과가 실행단의 출력에서 활용할 수 있을 때까지 상기 상태 레지스터 기록 명령을 따르는 임의의 명령을 발하지 않는다.
본 발명은 상태 레지스터 기록명령의 결과치 및 활용성을 검출하는데, 이를 위해 전술한 바와 같이 디코드 단에 의해 각각의 명령에 명령 ID가 할당되는 사실을 이용하므로써 대기한다. 상기ID는 디코드 단을 클리어하고 실행단을 아직 클리어 하지 않은 각각의 명령에 대해 고유하게되도록 보장된다. 상기 디코드 단이 상태레지스터 기록명령을 발하는 경우마다, 그 디코드 단은 기록되는 레지스타 고정된 즉 올바른 내용이 알려지지 않았으므로 레지스터가 액세스될 수 없는 사실을 기록한다. 상기 디코드 단은 또한 상기 상태 레지스터의 로커ID로서 알려진 상태 레지스터 기록명령의 ID를 기록한다.
갱신버스(251)는 상기 실행단의 출력에서 나오며, 상기갱신 버스는 명령의 결과, 그 명령의 ID 그리고 그 명령을 실행한 결과를 전달하는 경우 1 이되는 유효비트를 이룬다. 상기 디코드 단이 갱신 버스(251) 상에서 유효 비트 1을 가지면 그 디코드 단은 임의의 고정 상태 레지스터의 로커 ID에 대해 상기 버스 상의ID 를 비교한다. 정합이 검출되면 상기 디코드 단은 상기 갱신 버스의 적합한 비트로부터 올바른 새로운 값을 적합한 고정 상태 레지스터에 카피하고 상기 고정된 상태를 리세트한다.
상기 디코드 단에 의해 시험된 4개의 명령(221A-D)중 임의의 한 명령이 상태 레지스터의 증분적 변경자인 경우, 상기 디코드 단 자체는 그 명령을 실행하는데, 대응하는 물리 상태 레지스터(261, 263)의 현재값을 판독하고, 상기 명령으로 나타난 변경을 가함으로써 행해진다. 상기 변경된 값은 상기 클럭사이클 동안 상기 4개의 명령중에서 보다 새로운 명령에 대해 잠재적인 트래핑 조건을 평가하고, 상기 명령이 발행된 상기 클럭 사이클의 끝에서 물리 레지스터(261, 263)를 갱신하도록 이용된다.
예를 들면, 제 3의 오래된 명령(221C)이 슈퍼바이저 모드가 아닌한 실행될 수 없는 우선의 명령이 되는 경우, 그리고 물리 슈퍼바이저 레지스터(261)가 1을 포함하는 경우 상기 명령은 덜 오랜된 명령(221A 또는 221B)이 RETT명령이 아닌한 트래핑 조건을 가지지 않는데, 이는 슈퍼바이저 모드를 0으로 세팅하는 사이드효과를 가진다. 즉 명령(221A)이 RETT명령인 경우이면 명령(221A)에 해당하는 시간이 그 명령을 발함으로써 FIFO에서 제거될 때 까지 FIFO내에 덜 오래된 RETT명령이 있기 때문에 명령(221C)의 트래핑조건이 나타난다. 최구의 즉 가장 오래된 RETT 명령이 제거되는 클럭에서, 상기 물리 슈퍼바이저 레지스터(261)는 와이어(231)를 통해 0으로 세트되어 이어지는 클럭에서 상기 우선의 명령은 물리레지스터(261)가 0이되는 내용에 의거 트래핑조건을 가지는 것으로 보여진다.
상기 디코드 단이 동일한 상태 레지스터(261,263)을 증분적으로 변경하는 명령(221A-D)에 따라 하나 이상의 명령을 검출하는 경우, 상기 디코드 단은 한 번에 하나씩 그 명령들을 처리한다. 예를 들어, CWP레지스터(263)가 4개의 명령을 포함하는 경우, 명령(221A)는 세이브 명령이며, 명령(221C)는 리스토어 명령이며, 그리고 명령(221C) 및 이어지는 명령은 상기 명령(221A)가 제거되기 까지 무시된다.이는 명령(221D)에 대한 CWP의 정확한 값이 4개이기 때문에, 레지스터(263)내의 값은 세이브 명령(221A)에 의해 하나씩 증분되며, 이어서 명령(221C) 내의 리스토어에 의해 증분된다.
소정의 상태레지스터를 증분적으로 변경하는 적어도 하나의 명령은 각 클럭 사이클 마다 발생될 수 있다. 본 실시예에 있어서, 명령(221A)가 발행된 후까지 명령(221C)는 발행될 수 없어서 와이어(232)를 통해 물리 CWP레지스터(263)를 3으로 갱신한다. 그러면 이어지는 클럭상에서 상기 리스토어 명령은 3으로된 CWP 레지스터(263)의 새로운 내용에 하나를 부가하여 상기 리스토어 명령에 이어지는 명령에 대해 4의 정확한 값을 얻는다.
상기 디코드 단에서 검출된 트래핑조건은 하나 이상의 조건이 동일한 명령으로 만족되는 경우 우선순위를 가져야한다. 검출된 조건은 그 조건이 결정되는 방식을 따라 우선순위가 감소하는 순으로 이하와 같이 리스트된다.상태 레지스터의 값에 따르는 임의의 조건에 있어서, 사용된 값은 상기 상태 레지스터가 고정되지 않는한 4개의 명령 중에서 임의의 오래된 명령으로 증분적으로 변경된 대응 물리 레지스터(260-264)에 있어서의 값이된다. 검사된 명령에 종속하는 상태 레지스터가 고정되는 경우 그 종속 명령 및 그 명령을 따르는 명령은 상기 상태레지스터가 고정되기 까지 FIFO내에 유지된다.
1. 물리 메모리 액세스 에러. 이는 페치 단에서 검출되며, 명령이 페치되는 경우 하나의 액세스 와이어(212) 상에서 출력된다.
2. 페이지 폴트. 이는 페치 단에서 검출되며, 명령이 페치되는 경우 다른 액세스 와이어(212) 상에서 출력된다.
3. 우선 위반. 이는 슈퍼바이저 모드가 아닌한 페이지상에서의 명령이 실행될 수 없으며, 슈퍼바이저 비트가 0임을 나타내는 페치 논리에 의해 출력된 제 3어드레스 비트에 의해 시그널링된다.
4. 보호 바이오레이션. 이는 페치단에 의해 검출되며,명령이 페치되는 경우 제 4액세스 와이어에 의해 출력된다.
5.우선 명령. 이는 상기 명령이 슈퍼바이저 모드가 아닌한 실행될 수 없으며,(페치되는 페이지와 무관하게) 슈퍼바이저 비트가 0인 명령중 하나인 지를 판단하도록 그 명령을 디코드 함으로써 검출된다.
6. 불법 명령. 이는 그 명령이 한정된 명령이 아닌지를 판단하기 위해 상기 명령을 디코딩함으로써 검출된다.
7. 플로팅 포인트 디스에이블. 이는 플로팅 포인트 명령 및 EF비트 262가 0인 경우의 명령을 디코딩하므로서 검출된다. `
8. 윈도우 오버플로우. 이는 CWP레지스터(263)의 내용에 하나를 부가하고, WIM레지스터(264)에서 비트 인덱스로서의 결과를 이용함으로써 검출된다. 트래핑 조건은 WIM의 인덱스 비트 위치에 1로서 표시된다.
9. 윈도우 오버플로우. 이는 CWP레지스터(263)의 내용에 하나를 차감하고, WIM레지스터(264)에서 비트 인덱스로서의 결과를 이용함으로써 검출된다. 트래핑 조건은 WIM의 인덱스 비트 위치에 1로서 표시된다.
10. 소프트웨어 트랩.
최구의 명령이 아닌 명령(221B-D)중 하나에 대해 상기 트래핑 조건중 하나를 검출하는 경우, 상기 디코드 단은 상기 최구의 명령 또는 임의의 보다 새로운 명령을 발행하지 않는다. 상기 디코드 단은 상기 최구의 명령 보다 덜 오래된 모든 명령을 정상의 방식으로 발행한다.
상기 디코드 단이 상기 최구의 명령(221A)이 하드웨어 트래핑 조건을 가지는 것을 검출하자마자 상기 디코드 단은 다음의 동작을 실행한다.
1. 필요한 경우 CWP가 고정되도록 대기하며, 와이어(232)를 통해 그 현재의 값을 감소시키고, 와이어(231)를 통해 슈퍼바이저 레지스터 내용(261)을 1로한다.
2. FIFO내의 최구의 명령의 어드레스를 포함하는 의사 명령을 공식화해서 발행한다. 이러한 의사 명령을 실행하는 효과는 범용의 레지스터에 위치에의 트래핑 명령 어드레스를 세이브하는 것이다.
3.전체 명령FIFO(220)를 플러쉬하여 트래핑 명령을 바로 제거하고 상기 FIFO를 따르는 모든 것을 제거한다.
4.최구의 명령을 유지시키는 최고의 우선 순위의 트래핑 조건에 대해 올바른 코드를 결정하며, 그 코드를 외이어(233)를 통해 트랩 타입 레지스터(266)에 기록한다.
5. 필요한 경우 상기 트랩 베이스 레지스터가 고정되지 않게 대기하며, 페치 어드레스(260)를 와이어(267)상의 값과 같게 갱신시키도록 하기위해서 와이어(234)를 통해 페치 단에 신호하는데, 상기 와이어(267)는 상기 트랩 베이스 레지스터(265)와 트랩 타입 레지스터(266)의 내용의 연결부이다.
상기 디코드 단이 상기 최구의 명령(221A)이 소프트웨어 트래핑 조건을 가지는 것을 검출하자마자, 상기 디코드 단은 상기와 같은 단계 1 및 2를 실행하며, 이어서 다음의 단계 3 및 4를 실행한다.
3. 최구의 명령 ID를 기록하는 최구의 명령(221A)를 발행하며, 명령 FIFO로부터 나머지 명령을 플러시한다.
4. 트래핑 조건의 기록된 ID와 일치하는 명령ID를 수반하는 유효 신호를 대기하는 갱신 버스(251)룰 모니터한다. 이 경우 상기 갱신버스의 데이터 부분으로부터 올바른 버스를 얻어서 그것을 와이어(252)를 통해서 트랩타입 레지스터에 기록하고 이어서 상기의 단계 5를 수행한다.
상기 디코드 단에서 명령에서의 트랩 조건의 식별은 트랩의 조정을 촉진시키는 동시에 트래핑 조건을 따르는 플러시되어야하는 명령에서 소모된 실행 대역폭을 감소시킨다.
본 발명은 파이프라인식 슈퍼 스캘러 프로세서에서 이용될 수 있다.

Claims (22)

  1. 파이프라인식 슈퍼스칼라 컴퓨터(pipelined superscalar computer)에서의 트래핑 조건에 응답하는 방법으로서, 상기 컴퓨터가 각각의 클럭 사이클에서 명령의 시퀀스로부터의 하나 이상의 명령들을 조사하는 디코드 단(decode stage) 및 컴퓨터의 동작상태를 나타내는 디코드 단에 연결된 복수의 상태 레지스터 및 상기 디코드 단에 연결되어 상기 디코드 단에 의해 공급되는 디코드 명령들을 수신하고, 상기 디코딩된 명령들중 임의의 명령이 첫 번째 세트의 트래핑 조건들중 임의의 것을 만족하는지 평가하여, 상기 첫 번째 세트의 임의의 조건을 만족시키지 않는 명령에 대해 특수한 트랩 동작을 실행하는 실행단(execution stage)을 포함하는 몇 개의 처리단을 포함하며,
    상기 방법이 디코드 단에서 하기 단계들을 포함하는 파이프라인식 슈퍼스칼라 컴퓨터(pipelined superscalar computer)에서의 트래핑 조건에 대한 응답방법:
    a)상기 디코드단에서 검사되는 임의의 명령이 두 번째 세트의 발행 시간 트래핑 조건을 만족하는지를 평가하는 단계로서, 상기 두 번째 세트의 발행 시간 트랩은 상기 첫번째 세트의 트랩 조건의 서브세트인 단계;
    b)상기 디코드단에서 검사되는 임의의 명령이 두 번째 세트의 발행 시간 트래핑 조건을 만족하는 것으로 판단된 경우, 디코드 단에서 아래의 부수단계(substepts)들을 수행하는 단계:
    (i)상기 시퀀스에 있어서 제 1명령 뿐만아니라 상기 시퀀스에 있어서 상기 제 1명령을 따르는 하나 이상의 모든 명령이 상기 실행단에 공급되는 것을 방지하는 단계;
    (ii)실행단에서 앞서 발행된 모든 명령들이 완료되는 것을 기다리지 않고 특정 트랩동작을 실행하는 단계.
  2. 제 1항에 있어서, 상기 컴퓨터는 각각의 클럭 사이클에서 페치 어드레스 레지스터에 포함된 명령으로 개시되는 연속의 어드레스에서 명령 메모리에서의 하나 이상의 명령을 판독하는 페치단을 구비하며 상기 특정 트랩동작은 상기 페치 어드레스 레지스터에 포함된 어드레스를 트랩 조절자 어드레스로 되게 하는 동작을 포함하는 것을 특징으로 하는 방법.
  3. 제 2항에 있어서, 상기 페치단은 상기 명령메모리 및 상기 디코드 단에 결합된 명령버퍼를 구비하며;
    상기 페치단은 한 클럭 사이클에서 판독된 하나 이상의 명령을 상기 사이클의 종료시에 상기 명령버퍼에 기록하며;
    각각의 클럭사이클에서 상기 디코드 단에 의해 검사된 상기 시퀀스로부터의 하나 이상의 명령이 상기 명령 버퍼에 포함된 명령 중에 있으며;
    상기 트랩동작은 상기 명령 버퍼를 비게하여 보다 많은 명령이 상기 페치 어드레스 강요단계가 완료되기 이전에 상기 명령버퍼에 기록되는 것을 방지하는 단계를 포함하는 것을 특징으로 하는 방법.
  4. 제 2항에 있어서, 상기 트래핑 조건세트를 가지는 각각의 부재는 상대 우선순위를 가지며,
    상기 트랩조절자 어드레스는 상기 시퀀스에서 상기 제 1명령에 의해 만족되는 모든 트래핑 조건 중에서 최고의 우선순위함수이며,
    상기 제 1시퀀스내의 제 1명령이 임의의 발행시간 트래핑 조건을 만족하는 경우 상기 제 1명령에 의해 만족된 모든 트래핑 조건 중에서 최고의 우선순위는 발행시간 트래핑 조건인 것을 특징으로 하는 방법.
  5. 제 4항에 있어서, 상기 특정 트래핑 동작은 상기 시퀀스에 있어서 상기 제 1명령에 의해 만족된 모든 트래핑 조건 중에서 상기 최고의 우선순위를 고유하게 식별하는 넘버를 트랩 타입 레지스터에 기록하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  6. 제 2항에 있어서, 상기 제 1명령이 판독되는 명령 메모리 어드레스를 트랩 어드레스 레지스터에 기록하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  7. 제 6항에 있어서, 상기 디코드 단은 상기 명령 메모리 어드레스를 포함하는 의사 명령을 생성해서 실행단에 공급하는 추가의 단계를 실행하며, 상기 의사 명령에 의해 상기 실행단이 상기 트랩어드레스 레지스터에 명령 메모리 어드레스를 기록하는 것을 특징으로 하는 방법.
  8. 제 1항에 있어서, 상기 컴퓨터는 그 동작 상태를 나타내는 디코드 단에 결합된 복수의 상태레지스터를 포함하며, 각각의 발행시간 트래핑 조건은 몇몇의 상태레지스터의 값에 따르며, 상기 평가단계는 상기 상태레지스터의 내용을 검사하는 단계를 포함하는 것을 특징으로 하는 방법.
  9. 제 8항에 있어서, 상기 각각의 상태 레지스터의 경우에 명령 시퀀스의 임의의 명령이 상기 상태 레지스터를 변경시키며, 상기 시퀀스의 임의의 명령에 대한 트래핑 조건을 평가하는데 사용된 상기 상태 레지스터의 값은 상기 상태레지스터를 변경시키는 상기 시퀀스에서 상기 명령 바로 전의 명령 실행의 결과에만 의존하는 것을 특징으로 하는 방법.
  10. 제 9항에 있어서, 다)임의의 발행 시간 트래핑 조건을 따르는 임의의 상태 레지스터를 변경시키는 디코드 단에서 검사된 상기 명령중에서 모든 명령을 인식하는 단계; 및
    라)상기 인식된 임의의 변경 명령에 대해 상기 트래핑 조건이 상기 인식된 변경 명령에 의해 변경된 임의의 상태 레지스터를 따르는 시퀀스에서 상기 변경 명령의 결과가 상기 상태 레지스터에 기록될 때 까지 상기 변경 명령을 따르는 임의의 명령을 상기 디코드 단으로부터 상기 실행단으로 공급하는 것을 거절하는 단계를 포함하는 것을 특징으로 하는 방법.
  11. 제 10항에 있어서, 마) 상기 인식된 변경 명령중 임의의 명령에 대해, 상기 명령이 상기 디코드단에 의해 상기 실행단으로 공급된 시간 이전에 상기 명령으로 특정된 상태 레지스터 변경에 영향을 미치는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  12. 제 9항에 있어서, 바)임의의 발행 시간 트래핑 조건을 따르는 상태 레지스터를 변경하는 임의의 명령을 상기 디코드 단에서 검사된 하나 이상의 명령 중에서 인식하는 단계를 추가로 포함하며, 상기 평가단계는 상기 검사된 임의의 명령에 대해 상기 시퀀스에서 상기 평가된 명령을 앞서는 인식된 임의의 변경 명령의 상태 레지스터의 값에 대한 영향을 고려하는 단계를 포함하는 것을 특징으로 하는 방법.
  13. 복수의 파이프 라인식 명령 상에서 동작하는 슈퍼스칼라 프로세서에서 프로그램 명령 트랩을 검출 및 실행하는 장치에 있어서, 상기 장치가
    명령 캐쉬 및 메인메모리로부터 연속의 명령을 페칭하는 페치수단,
    상기 페치수단으로부터 페치된 명령을 기억하는 명령FIFO메모리, 및
    상기 FIFO메모리에 저장된 명령의 상대 에이지(relative age)에 따라 상기 FIFO메모리로부터 명령을 제거하는 명령 디코드 수단을 구비하며, 상기 디코드 수단은 상기FIFO메모리로부터 제거된 상기 명령을 트래핑 조건을 위해 검사하며, 한 명령의 트랩의 식별에 응답하여 상기FIFO메모리로부터 모든 덜 오래된 명령을 플러시하는 명령 디코드 수단; 및
    상기 디코드 수단에 연결되어 있고 프로세서의 동작 상태를 나타내는 복수의 상태 레지스터로서, 여기서 명령 시퀀스중의 특정 명령등이 상기 레지스터를 변경시키는 복수의 상태 레지스터를 포함하고,
    상기 디코드 수단이 상기 상태 레지스터를 변경하기 위하여 상기 명령들을 조사하고 상태 레지스터 변경 명령이 빌생될 때까지 덜 오랜된 명령들의 발행을 차단함으로써 특정 트랩 동작을 수행하며, 상기 상태 레지스터는 상기 명령의 실행에 의해 업데이트될 때까지 로킹되어 접근할 수 없는 상태인 것을 특징으로 하는 프로그램 명령 트랩 검출 및 실행 장치.
  14. 제 13항에 있어서, 상기 프로세서의 동작상태를 나타내는 복수의 상태 레지스터를 구비하며, 상기 디코드 수단은 상태 레지스터 변경 명령이 실행되기 까지 덜 오래된 명령의 발행을 차단하고, 상기 상태 레지스터를 변경하도록 상기 명령을 검사하며, 상기 상태 레지스터는 고정되어서 상기 명령의 실행에 의해 갱신되기 까지 액세스 불가능하게되어 있는 것을 특징으로 하는 장치.
  15. 제 14항에 있어서, 상기 상태 레지스터는 인에이블 플로팅 포인트(EF)레지스터, 현재 윈도루 포인터(CWP)레지스터 및 윈도우 무효 마스크(WIM)레지스터를 구비하는 것을 특징으로 하는 장치.
  16. 제 15항에 있어서, 트랩 명령을 액세스함에 있어서 상기 페치 수단에 대한 어드레스를 형성하도록 연결되는 트랩 베이스 레지스터 및 트랩 타입 레지스터를 추가로 구비하는 것을 특징으로 하는 장치.
  17. 제 16항에 있어서, 상기 페치 수단은 메인 메모리의 페이징을 서포트하는 메모리 관리 수단을 구비하는 것을 특징으로 하는 장치.
  18. 제 16항에 있어서, 상기 페치수단은 하드웨어트랩과 소트프웨어트랩을 구별하는 것을 특징으로 하는 장치.
  19. 제 18항에 있어서, 하드웨어 트랩 명령에 응답하여 상기 디코드 수단은,
    가)상기 CWP레지스터가 고정되는 것을 대기해서 CWP레지스터의 현재값을 1씩 증가시키며, 상기 슈퍼바이저 레지스터를 1로 하고,
    나)상기 FIFO메모리내의 최구의 명령의 어드레스를 포함하는 의사명령을 공식화해서 발행하며,
    다)상기 FIFO메모리의 모든 내용을 플러시해서,트래핑 명령 및 모든 오래 되지 않은 명령을 제거하고,
    라)상기 하드웨어 트랩 명령에 대한 최고의 우선순위의 트래핑 조건에 대한 장확한 코드를 결정하고, 그리고
    마)상기 트랩 베이스 레지스터 및 상기 트랩타입 레지스터의 내용의 연결부로서 페치 어드레스를 갱신하도록 상기 페치 수단에 신호하는 것을 특징으로 하는 장치.
  20. 제 18항에 있어서, 상기 소프트웨어 트랩 명령에 응답하여 상기 디코드 단은,
    가)상기 CWP레지스터가 고정되는 것을 대기해서 CWP레지스터의 현재값을 1씩 증가시키며, 상기 슈퍼바이저 레지스터를 1로 하고,
    나)상기 FIFO메모리내의 최구의 명령의 어드레스를 포함하는 의사명령을 공식화해서 발행하며,
    다)실행 수단에 최구의 명령을 발행해서 상기 최구의 명령의 식별부를 기록하고, 상기 FIFO메모리로부터 모든 나머지 명령을 플러시하며,
    라)상기 기록 식별부와 일치하는 명령 식별부를 수반하는 유효 신호에 대한 갱신버스를 상기 실행단으로부터 모니터하고,
    마)상기 실행단으로부터 데이터 부분에 대한 코드를 포획해서 상기 트랩 타입 레지스터에 상기 코드를 기록하며, 그리고
    바)상기 트랩 베이스 레지스터 및 상기 트랩타입 레지스터의 내용의 연결부로서 페치 어드레스를 갱신하도록 상기 페치 수단에 신호하는 것을 특징으로 하는 장치.
  21. 제 13항에 있어서, 트랩 명령을 액세스함에 있어서 상기 페치 수단에 대한 어드레스를 형성하도록 연결되는 트랩 베이스 레지스터 및 트랩 타입 레지스터를 추가로 구비하는 것을 특징으로 하는 장치.
  22. 제 13항에 있어서, 상기 페치수단은 상기 메인 메모리의 페이징을 서포트하는 메모리 관리 수단을 구비하는 것을 특징으로 하는 장치.
KR1019970707577A 1995-04-28 1996-04-02 슈퍼스칼라프로세서에서트랩을검출및실행하는장치 KR100304182B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US08/413219 1995-04-28
US8/431,219 1995-04-28
US08/431,219 US5692170A (en) 1995-04-28 1995-04-28 Apparatus for detecting and executing traps in a superscalar processor
PCT/US1996/004504 WO1996034335A1 (en) 1995-04-28 1996-04-02 Apparatus for detecting and executing traps in a superscalar processor

Publications (2)

Publication Number Publication Date
KR19990008053A KR19990008053A (ko) 1999-01-25
KR100304182B1 true KR100304182B1 (ko) 2001-11-22

Family

ID=23710995

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970707577A KR100304182B1 (ko) 1995-04-28 1996-04-02 슈퍼스칼라프로세서에서트랩을검출및실행하는장치

Country Status (8)

Country Link
US (2) US5692170A (ko)
EP (1) EP0740248A1 (ko)
JP (1) JP2937485B2 (ko)
KR (1) KR100304182B1 (ko)
CN (1) CN1095115C (ko)
MY (2) MY113449A (ko)
TW (1) TW337006B (ko)
WO (1) WO1996034335A1 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5692170A (en) * 1995-04-28 1997-11-25 Metaflow Technologies, Inc. Apparatus for detecting and executing traps in a superscalar processor
US6065108A (en) * 1996-01-24 2000-05-16 Sun Microsystems Inc Non-quick instruction accelerator including instruction identifier and data set storage and method of implementing same
SE509499C2 (sv) * 1996-05-03 1999-02-01 Ericsson Telefon Ab L M Metod och anordning för hantering av villkorliga hopp vid instruktionsbehandling i en pipeline-arkitektur
US5740442A (en) * 1996-08-27 1998-04-14 Hitachi Data Systems Corporation Method and apparatus for identifying and correcting date calculation errors caused by truncated year values
US5802386A (en) * 1996-11-19 1998-09-01 International Business Machines Corporation Latency-based scheduling of instructions in a superscalar processor
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
US6253317B1 (en) * 1997-01-09 2001-06-26 Sun Microsystems, Inc. Method and apparatus for providing and handling traps
US5809327A (en) * 1997-03-27 1998-09-15 Atmel Corporation Eight-bit microcontroller having a risc architecture
US5898850A (en) * 1997-03-31 1999-04-27 International Business Machines Corporation Method and system for executing a non-native mode-sensitive instruction within a computer system
US5940587A (en) * 1997-12-12 1999-08-17 Intel Corporation System and method for trap address mapping for fault isolation
US6266764B1 (en) * 1998-03-17 2001-07-24 Matsushita Electric Industrial Co., Ltd. Program controller for switching between first program and second program
US6393556B1 (en) * 1998-10-30 2002-05-21 Intel Corporation Apparatus and method to change processor privilege without pipeline flush
US6161174A (en) * 1998-11-05 2000-12-12 Wilhite; John E. Pipelined central processor incorporating indicator busy sensing and responsive pipeline timing modification
US20050149694A1 (en) * 1998-12-08 2005-07-07 Mukesh Patel Java hardware accelerator using microcode engine
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US7225436B1 (en) 1998-12-08 2007-05-29 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US6826749B2 (en) 1998-12-08 2004-11-30 Nazomi Communications, Inc. Java hardware accelerator using thread manager
US6986052B1 (en) 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
KR20020028814A (ko) * 2000-10-10 2002-04-17 나조미 커뮤니케이션즈, 인코포레이티드 마이크로코드 엔진을 이용한 자바 하드웨어 가속기
US8769508B2 (en) 2001-08-24 2014-07-01 Nazomi Communications Inc. Virtual machine hardware for RISC and CISC processors
GB2387932B (en) * 2002-04-26 2005-06-22 Motorola Inc Apparatus and method for scheduling tasks in a communications network
JP2005063358A (ja) * 2003-08-20 2005-03-10 Matsushita Electric Ind Co Ltd 命令供給制御装置および半導体装置
US7487335B1 (en) * 2003-10-14 2009-02-03 Sun Microsystems, Inc. Method and apparatus for accessing registers during deferred execution
US8144156B1 (en) 2003-12-31 2012-03-27 Zii Labs Inc. Ltd. Sequencer with async SIMD array
EP1711896B1 (en) * 2004-02-05 2015-11-18 BlackBerry Limited Memory controller interface
US8423832B2 (en) * 2006-11-07 2013-04-16 Hewlett-Packard Development Company, L.P. System and method for preventing processor errors
US7865769B2 (en) * 2007-06-27 2011-01-04 International Business Machines Corporation In situ register state error recovery and restart mechanism
KR101059899B1 (ko) * 2009-04-23 2011-08-29 광주과학기술원 마이크로 프로세서
US10324728B2 (en) * 2015-12-17 2019-06-18 International Business Machines Corporation Lightweight interrupts for condition checking
US9798549B1 (en) 2016-10-31 2017-10-24 International Business Machines Corporation Out-of-order processor that avoids deadlock in processing queues by designating a most favored instruction
CN108255745B (zh) * 2016-12-29 2020-11-06 展讯通信(上海)有限公司 处理器以及无效指令缓存的方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4017839A (en) * 1975-06-30 1977-04-12 Honeywell Information Systems, Inc. Input/output multiplexer security system
US4179737A (en) * 1977-12-23 1979-12-18 Burroughs Corporation Means and methods for providing greater speed and flexibility of microinstruction sequencing
JPS60168238A (ja) * 1984-02-10 1985-08-31 Hitachi Ltd パイプラインデータ処理装置
US5136696A (en) * 1988-06-27 1992-08-04 Prime Computer, Inc. High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
US5327567A (en) * 1989-11-16 1994-07-05 Texas Instruments Incorporated Method and system for returning emulated results from a trap handler
DE69130138T2 (de) * 1990-06-29 1999-05-06 Digital Equipment Corp Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
JP2677719B2 (ja) * 1991-05-08 1997-11-17 富士通株式会社 情報処理装置
WO1993001563A1 (en) * 1991-07-08 1993-01-21 Seiko Epson Corporation Risc microprocessor architecture with isolated architectural dependencies
ATE188786T1 (de) * 1991-07-08 2000-01-15 Seiko Epson Corp Risc-mikroprozessorarchitektur mit schnellem unterbrechungs- und ausnahmemodus
US5269017A (en) * 1991-08-29 1993-12-07 International Business Machines Corporation Type 1, 2 and 3 retry and checkpointing
DE69223303T2 (de) * 1991-09-27 1998-06-18 Sun Microsystems Inc Verfahren und Gerät für die dynamische Zuweisung von unadressierten Unterbrechungen
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
EP0651321B1 (en) * 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
US5692170A (en) * 1995-04-28 1997-11-25 Metaflow Technologies, Inc. Apparatus for detecting and executing traps in a superscalar processor

Also Published As

Publication number Publication date
TW337006B (en) 1998-07-21
EP0740248A1 (en) 1996-10-30
MY128408A (en) 2007-01-31
CN1183152A (zh) 1998-05-27
US6012141A (en) 2000-01-04
JP2937485B2 (ja) 1999-08-23
KR19990008053A (ko) 1999-01-25
US5692170A (en) 1997-11-25
JPH10506739A (ja) 1998-06-30
MY113449A (en) 2002-02-28
CN1095115C (zh) 2002-11-27
WO1996034335A1 (en) 1996-10-31

Similar Documents

Publication Publication Date Title
KR100304182B1 (ko) 슈퍼스칼라프로세서에서트랩을검출및실행하는장치
JP4990829B2 (ja) 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置
JP3014773B2 (ja) プロセサアーキテクチャ
US8539485B2 (en) Polling using reservation mechanism
US7725685B2 (en) Intelligent SMT thread hang detect taking into account shared resource contention/blocking
US7711935B2 (en) Universal branch identifier for invalidation of speculative instructions
US7302527B2 (en) Systems and methods for executing load instructions that avoid order violations
US7870369B1 (en) Abort prioritization in a trace-based processor
US7111126B2 (en) Apparatus and method for loading data values
US20030126375A1 (en) Coherency techniques for suspending execution of a thread until a specified memory access occurs
EP0689131A1 (en) A computer system for executing branch instructions
JPH096633A (ja) データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム
US20060149931A1 (en) Runahead execution in a central processing unit
JP3154660B2 (ja) 条件レジスタ・データを一時的にバッファリングする方法およびシステム
US7051191B2 (en) Resource management using multiply pendent registers
US20010023479A1 (en) Information processing unit, and exception processing method for specific application-purpose operation instruction
US7765388B2 (en) Interrupt verification support mechanism
JPH10301778A (ja) レジスタの名前変更を管理する方法および装置
US9400655B2 (en) Technique for freeing renamed registers
US7418581B2 (en) Method and apparatus for sampling instructions on a processor that supports speculative execution
US11194574B2 (en) Merging memory ordering tracking information for issued load instructions
US6711670B1 (en) System and method for detecting data hazards within an instruction group of a compiled computer program
WO2007084202A2 (en) Processor core and method for managing branch misprediction in an out-of-order processor pipeline
US11663014B2 (en) Speculatively executing instructions that follow a status updating instruction
US7783863B1 (en) Graceful degradation in a trace-based processor

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

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee