KR20040049255A - 프로세서 내에서의 인터럽트 처리 방법, 프로세서 및데이터 처리 시스템 - Google Patents

프로세서 내에서의 인터럽트 처리 방법, 프로세서 및데이터 처리 시스템 Download PDF

Info

Publication number
KR20040049255A
KR20040049255A KR1020030078049A KR20030078049A KR20040049255A KR 20040049255 A KR20040049255 A KR 20040049255A KR 1020030078049 A KR1020030078049 A KR 1020030078049A KR 20030078049 A KR20030078049 A KR 20030078049A KR 20040049255 A KR20040049255 A KR 20040049255A
Authority
KR
South Korea
Prior art keywords
interrupt handler
interrupt
execution
processor
predicted
Prior art date
Application number
KR1020030078049A
Other languages
English (en)
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 KR20040049255A publication Critical patent/KR20040049255A/ko

Links

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/22Microcontrol or microprogram arrangements
    • 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
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow 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/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
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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
    • 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
    • G06F9/384Register renaming
    • 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/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Abstract

본 발명은 히스토리 정보에 의거하여, 인터럽트를 처리하기 위해 제 2 레벨 인터럽트 핸들러(SLIH)를 예측하는 방법 및 시스템에 관한 것이다. 예측된 SLIH는 제 1 레벨 인터럽트 핸들러(FLIH)와 동시에 추론적으로 실행되며, FLIH는 인터럽트에 대해 정확한 SLIH를 결정한다. 예측된 SLIH가 올바르게 예측되었다면, FLIH에 의해 호출된 SlIH의 실행이 중지되고, 예측된 SLIH가 실행을 완료한다. 예측된 SLIH가 잘못 예측되었다면, 예측된 SLIH의 실행이 중지되고, FLIH에 의해 호출된 SLIH가 계속되어 완료된다.

Description

프로세서 내에서의 인터럽트 처리 방법, 프로세서 및 데이터 처리 시스템{INTERRUPT HANDLER PREDICTION METHOD AND SYSTEM}
본 발명은 동일한 날짜에 출원된 계류중인 미국 특허 출원 제 10/______(Docket No. AUS920020161US1), 10/______(Docket No. AUS920020162US1), 10/313,320(Docket No. AUS920020164US1), 10/313,301(Docket No. AUS920020165US1), 10/______(Docket No. AUS920020166US1), 및 10/313,308(Docket No. AUS920020167US1)의 주제와 관련이 있다. 상기 출원들의 내용은 그 전체가 본원 명세서에 포함된다.
본 발명은 일반적으로 데이터 처리 분야에 관한 것으로, 특히 인터럽트를 처리하기 위한 개선된 데이터 처리 시스템 및 방법에 관한 것이다.
컴퓨터 인스트럭션 세트를 실행할 때, 프로세서가 빈번히 중단된다. 이 중단(interruption)은 인터럽트 또는 예외(exception)에 의해 비롯될 수도 있다.
인터럽트는, 인터럽트가 발생할 때 실행 중인 인스트럭션과 관련이 없는 비동기 중단 이벤트이다. 즉, 중단은 종종 입력/출력(I/O) 디바이스로부터의 입력, 다른 프로세서로부터의 동작에 대한 호출 등과 같은 프로세서 외부의 일부 이벤트에 의해 비롯된다. 기타 인터럽트들은 내부적으로, 예를 들어 태스크 스위칭을 제어하는 타이머의 만료에 의해 비롯될 수도 있다.
예외(exception)는, 그 예외가 발생할 때 실행 중인 인스트럭션의 실행으로부터 직접 발생하는 동기 이벤트이다. 즉, 예외는 산술 넘침(an arithmetic overflow), 시간 관리 검사(a timed maintenance check), 내부 성능 감시(an internal performance monitor), 온-보드 작업부하 관리자(an on-board workloadmanager) 등과 같은 프로세서 내에서의 이벤트이다. 통상적으로, 예외들은 인터럽트보다 훨씬 더 빈번하다.
용어 "인터럽트(interrupt)" 및 "예외(exception)"는 때론 서로 바꾸어 사용된다. 이러한 이유로, 용어 "인터럽트"가 "인터럽트" 및 "예외" 중단 모두를 나타내는데 사용될 것이다.
컴퓨터 소프트웨어 및 하드웨어가 점점 복잡해짐에 따라, 인터럽트의 수 및 빈도는 엄청나게 증가되었다. 이들 인터럽트는, 복수의 프로세스의 실행, 복수의 주변장치의 동작 및 여러 가지 구성요소들의 성능 감시를 지원하므로 필요한 것이다. 이러한 특징은 유익하지만, 프로세서의 처리 속도 개선을 능가할 정도로 인터럽트에 의한 컴퓨팅 전력의 소비를 크게 증가시키고 있다. 따라서, 많은 경우에 있어서, 프로세서의 클록 주파수가 증가함에도 불구하고, 실제로는 시스템 성능이 떨어진다.
도 1은 종래의 프로세서 코어(100)를 도시한 것이다. 프로세서 코어(100) 내에서, 레벨 1 인스트럭션 캐시(L1 캐시)(102)는 인스트럭션들을 인스트럭션 순서화 로직(instruction sequencing logic)(104)에게 공급하고, 이 인스트럭션 순서화 로직은 인스트럭션들을 실행시키기 위해 적절한 실행 유닛(108)에게 넘겨준다. 실행 유닛(108)은 로드/저장 유닛(LSU)(108a)을 포함하며, 부동 소숫점 실행 유닛, 고정 소숫점 실행 유닛, 분기 실행 유닛 등을 포함할 수도 있다. LSU(108a)는 인스트럭션들의 로드 및 저장을 실행하고, 레벨 1 데이터 캐시(L1 D-캐시)(112)로부터 구성 레지스터(architected register)(110)로 데이터를 로드하고, 구성 레지스터(110)로부터 L1 D-캐시(112)로 데이터를 저장한다. L1 캐시(102, 112)를 지나치는 데이터 및 인스트럭션에 대한 요청들은 메모리 버스(116)를 통해 시스템 메모리(118)에 액세스함으로써 해결될 수 있다.
전술한 바와 같이, 프로세서 코어(100)는 외부 인터럽트 라인(114)으로 표시된 다수의 소스로부터 인터럽트된다. 인터럽트 신호가 (예를 들어 인터럽트 라인(114) 중 하나를 통해) 프로세서 코어(100)에 의해 수신되면, 현재의 프로세스의 실행이 일시 중지되고, 그 인터럽트가 인터럽트 핸들러로 알려진 인터럽트 특정 소프트웨어에 의해 처리된다. 다른 동작들 가운데, 인터럽트 핸들러는 LSU(108a)에 의한 인스트럭션들의 저장 및 로드 실행을 통해 인터럽트 시에 실행중인 프로세스의 구성 상태(architected state)를 저장하고 복원한다. 시스템 메모리(118)로/로부터 상기 구성 상태를 전송하기 위해 LSU(108a)를 사용하면, 상기 상태 전송이 완료될 때까지 인터럽트 핸들러에 의한 다른 메모리 액세스 인스트럭션의 실행(또는 수퍼스칼라 컴퓨터의 경우에는 다른 프로세스)이 차단된다. 따라서, 프로세서의 실행 유닛을 통해 프로세스의 구성 상태를 저장하고 순차적으로 복원하면, 중단된 프로세스와 인터럽트 핸들러 모두의 실행이 지연된다. 이 지연은 프로세서의 전체 성능의 저하를 가져온다. 따라서, 본 발명은, 특히 인터럽트에 응답하여 구성 상태를 저장하고 복원함으로써 발생하는 프로세싱 지연을 최소화하는 방법 및 시스템이 필요하다는 점에서 착안된 것이다.
본 발명은 데이터 처리 시스템의 프로세서 내에서 인터럽트 핸들링을 개선하기 위한 방법 및 시스템에 관한 것이다.
도 1은 로드/저장 유닛을 이용하여 프로세서의 구성 상태(architected state)를 저장하기 위한 종래기술의 방법을 채용하는 종래의 컴퓨터 시스템의 블록도.
도 2는 본 발명에 따른 데이터 처리 시스템의 일실시예의 블록도.
도 3a 및 3b는 도 2에 도시된 처리 유닛을 보다 상세하게 도시한 도면.
도 4는 본 발명에 따른 예시적인 소프트웨어 구성을 층으로 도시한 도면.
도 5a 및 5b는 본 발명에 따른 예시적인 인터럽트 처리 프로세스의 흐름도.
도 6a 및 6b는 본 발명에 따른 하드 구성 상태(architected state) 및 소프트 상태를 저장하기 위한 도 5a에 도시된 단계를 보다 상세하게 도시한 흐름도.
도 7은 프로세스의 적어도 소프트 상태를 메모리와 통신하기 위해 본 발명에 의해 사용된 스캔 체인(scan chain) 경로를 도시한 도면.
도 8a 내지 8c는, 적어도 제 1 레벨의 인터럽트 핸들러(FLIH; First Level Interrupt Handler), 제 2 레벨의 인터럽트 핸들러(SLIH; Second Level Interrupt Handler) 및 제조-레벨(manufacturing-level) 테스트 인스트럭션을 저장하기 위해본 발명에 따라 사용된 도 2에 도시된 플래시 ROM을 보다 상세하게 도시한 도면.
도 9는 본 발명에 따라서 프로세서에 의한 인터럽션의 수신시에 예고된 SLIH로 점프하는 것을 도시한 흐름도.
도 10은 저장된 하드 구성 상태, 저장된 소프트 상태, 메모리 파티션 및 프로세서 사이의 논리적인 통신 관계를 도시한 도면.
도 11은 메모리 내에 소프트 상태를 저장하기 위한 예시적인 데이터 구조를 도시한 도면.
도 12는 컴퓨터 시스템의 정상 동작 동안 제조 레벨의 실행을 통해 프로세서를 테스트하는 예시적인 방법의 흐름도.
도면의 주요 부분에 대한 부호의 설명
116 : 버스118 : 시스템 메모리
200 : 처리 유닛201 : MP 데이터 처리 시스템
202 : 인스트럭션 순서화 유닛(ISU; instruction sequencing unit)
204 : 실행 유닛(EU)206 : 하드 상태 레지스터
208 : 섀도우 레지스터210 : 다음 하드 상태 레지스터
212 : 캐시 계층222 : 상호접속부
인터럽트 신호가 프로세서에서 수신되면, 현재 실행 중인 프로세스의 하드 구성 상태(hard architected state)가 하나 이상의 전용 섀도우 레지스터로 로드된다. 하드 구성 상태는 인터럽트된 프로세스의 실행에 필수적인 프로세서 내의 정보를 포함한다. 이 하드 구성 상태를 추가로 저장하는 유익한 방법은, 프로세서의 실행 유닛 및 정상 로드/저장 경로를 이용하지 않고(따라서 여기에 구속되지 않고) 고 대역폭 버스를 이용하여 섀도우 레지스터로부터 시스템 메모리로 하드 구성 상태를 직접 전송하는 것이다. 하드 구성 상태가 섀도우 레지스터로 로드된 후에, 인터럽트 핸들러는 즉시 실행하기 시작한다. 캐시 내용을 포함하는 프로세스의 소프트 상태는 또한 시스템 메모리에 적어도 부분적으로 저장된다. 소프트 상태의 저장을 가속하기 위해, 그리고 실행 인터럽트 핸들러와의 데이터 충돌을 회피하기 위해, 소프트 상태는 스캔 체인 경로를 이용하여 프로세서로부터 전송되는 것이 바람직한데, 일반적으로 이것은, 종래 기술에서는 제조업자가 테스트하는 동안에만 이용되며 정상 동작 동안에는 이용되지 않는다.
종래기술에서, 인터럽트는 일반적으로 제 1 레벨 인터럽트 핸들러(FLIH)를 순차적으로 실행함으로서 처리되며, 그 후 상기 FLIH는 제 2 레벨 인터럽트핸들러(SLIH)를 호출한다. 어느 SLIH가 FLIH에 의해 호출될지의 예측은, 유사한 인터럽트로부터의 히스토리 데이터에 의거하여 이루어진다. 예측된 SLIH로의 점프가 취해지면, 인스트럭션들은 예측된 SLIH 내의 예측된 위치에서 시작하여 실행된다. 따라서, FLIH가 샐행되어 SLIH를 호출하게 되는 것이다. 만약 FLIH에 의해 호출된 SLIH가 예측된 SLIH와 동일하다면, FLIH에 의해 호출된 SLIH의 실행이 중지되고, 예측된 SLIH의 실행이 완료된다. 만약 SLIH에 대한 예측이 올바르지 않으면, 예측된 SLIH의 실행이 중지되고, FLIH에 의해 호출된 SLIH의 실행이 계속되어 완료된다. 예측된 점프는, 마찬가지로 FLIH 또는 SLIH 내의 실행 지점을 포함하는, 인스트럭션의 FLIH/SLIH 체인을 따른 임의의 지점으로 될 수 있다.
인터럽트 핸들러의 완료시에, 하드 구성 상태 및 소프트 상태는 인터럽트된 프로세스에 대해 복원되며, 이는 하드 구성 상태의 로딩 시에 바로 실행될 수 있다.
상이한 운영 체제를 실행하는 다른 프로세서 및 다른 파티션에 액세스하기 위해, 하드 및 소프트 상태 모두 어떠한 프로세서 및/또는 파티션에도 액세스 가능한 시스템 메모리의 예약된 영역 내에 저장될 수도 있다.
본 발명의 상기 및 다른 목적, 특징들 및 이점들은 후술하는 상세한 설명에서 명확해질 것이다.
본 발명의 신규한 특징들은 첨부한 청구범위에 개시되어 있다. 그러나, 본 발명 그 자체 및 바람직한 실시예, 본 발명의 추가적인 목적 및 이점들은 첨부한 도면과 함께 하기의 예시적인 실시예의 상세한 설명을 참조하면 잘 이해할 수 있을것이다.
도 2에는 멀티프로세서(MP) 데이터 처리 시스템(201)의 예시적인 실시예의 고 레벨 블록도가 도시되어 있다. MP 데이터 처리 시스템(201)은 대칭형 멀티프로세서(SMP)로서 도시되어 있지만, 본 발명은, NUMA(non-uinform memory access) MP 또는 COMA(Cache Only Memory Architecture) MP를 포함하여, 컴퓨터 구조 분야의 당업자들에게 공지되어 있는 어떠한 MP 데이터 처리 시스템에도 이용될 수 있다.
본 발명에 따르면, MP 데이터 처리 시스템(201)은, 상호접속부(222)에 의한 통신을 위해 결합된, 처리 유닛(200a 내지 200n)으로 표시된 복수의 처리 유닛(200)을 포함한다. 바람직한 실시예에서, MP 데이터 처리 시스템(201) 내에 처리 유닛(200a) 및 처리 유닛(200n)을 포함하는, 각각의 처리 유닛(200)은 구조적으로 유사하거나 동일한 것으로 이해된다. 처리 유닛(200a)은 단일의 집적 회로 수퍼스칼라 프로세서이며, 후술하는 바와 같이, 여러 가지 실행 유닛, 레지스터, 버퍼, 메모리, 및 집적 회로에 의해 형성된 기타 기능 유닛을 포함한다. MP 데이터 처리 시스템(201)에서, 각각의 처리 유닛(200)은 고 대역폭 개인용 버스(116)에 의해 각각의 시스템 메모리(118)에 결합되는데, 도면에서는 시스템 메모리가 처리 유닛(200a)용 시스템 메모리(118a)와 처리 유닛(200n)용 시스템 메모리(118n)로 표시되어 있다.
처리 유닛(200a)은 실행 유닛(EU)(204)에 의해 실행될 인스트럭션들을 페칭하고 스케줄링하며 발행하는 로직을 포함하는 인스트럭션 순서화 유닛(ISU; instruction sequencing unit)(202)을 포함한다. ISU(202) 및 EU(204)의 상세는도 3에 전형적인 형태로 도시되어 있다.
하드 상태 레지스터(206)에 결합된 현재 실행 중인 프로세스를 실행하는데 필수적인, 처리 유닛(200a) 내에 정보를 포함하는 "하드(hard)" 상태 레지스터(206)는 EU(204)와 관련되며, 다음 하드 상태 레지스터(210)는 예를 들어, 현재의 프로세스가 종료되거나 인터럽트될 때 실행될 다음 프로세스에 대한 하드 상태를 포함한다.
또한, 현재 실행중인 프로세스가 종료되거나 인터럽트될 때 하드 상태 레지스터(206)의 내용의 카피를 포함하는(또는 포함할) 섀도우 레지스터(208)가 하드 상태 레지스터(206)와 관련된다.
각각의 처리 유닛(200)은 캐시 계층(212)을 더 포함하며, 캐시 계층은 캐시 메모리의 다중 레벨을 포함할 수도 있다. 시스템 메모리(118)로부터 로드된 인스트럭션 및 데이터의 온-칩(on-chip) 저장은, 예를 들면 캐시 계층(212)에 의해 이루어질 수도 있으며, 캐시 계층은 도 3에 도시된 바와 같이 레벨 1 인스트럭션 캐시(L1 I-cache)(18), 레벨 1 데이터 캐시(L1 D-cache)(20), 단일 레벨 2 캐시(L2 cache)(16)를 포함할 수도 있다. 캐시 계층(212)은 캐시 데이터 경로(218)를 통해 시스템 메모리(118)에 대한 온-칩 집적 메모리 제어기(IMC; integrated memory controller)(220)에 결합되며, 적어도 일실시예에 따르면, 스캔 체인 경로(214)를 통해 결합된다. 스캔 체인 경로(214)는 직렬 경로이며, 직렬-병렬 인터페이스(216)는 스캔 체인 경로(214)와 IMC(220) 사이에 결합된다. 처리 유닛(200a)의 도시된 구성요소의 기능은 이하에 상세하게 설명한다.
도 3a는 처리 유닛(200)을 보다 상세하게 도시하고 있다. 처리 유닛(200)은 단일 레벨 2(L2) 캐시(16) 및 두 갈래의(bifurcated) 레벨 1(L1) 인스트럭션(I) 및 데이터(D) 캐시(18, 20)를 각각 갖는 온-칩 다중-레벨의 캐시 계층을 포함한다. 당업자들에게 공지되어 있는 바와 같이, 캐시(16, 18, 20)는 시스템 메모리(118) 내의 메모리 위치에 대응하는 캐시 라인에 낮은 지연 액세스를 제공한다.
인스트럭션들은, 인스트럭션 페치 어드레스 레지스터(IFAR)(30)에 존재하는 유효 어드레스(EA; effective address)에 응답하여 L1 I-캐시(18)로부터의 처리를 위해 페치된다. 각각의 사이클 동안, 새로운 인스트럭션 페치 어드레스가 세 개의 소스, 즉, 조건부의 분기 인스트럭션들의 예측에 의해 추론적인 타겟 경로 및 순차 어드레스를 제공하는 분기 예측 유닛(BPU; branch prediction unit)(36), 플러시 및 인터럽트 어드레스를 제공하는 글로벌 컴플리션 테이블(GCT; global completion table)(38), 및 예측된 조건부 분기 인스트럭션들의 분석에 의해 비추론적인 어드레스를 제공하는 분기 실행 유닛(BEU; branch execution unit)(92) 중 하나로부터 IFAR(30)로 로드될 수도 있다. 장래의 분기 인스트럭션들의 예측을 돕기 위해 조건부의 분기 인스트럭션의 분석이 기록되는 분기 히스토리 테이블(BHT; branch history table)(35)이 BPU(36)와 관련된다.
IFAR(30) 내의 인스트럭션 페치 어드레스와 같은, 유효 어드레스(EA)는 프로세서에 의해 발생된 인스트럭션 또는 데이터의 어드레스이다. EA는 세그먼트 레지스터 및 그 세그먼트 내의 오프셋 정보를 지정한다. 메모리 내의 데이터(인스트럭션을 포함함)를 액세스하기 위해, EA는 하나 이상의 번역 레벨(translation level)을 통해, 데이터 또는 인스트럭션이 저장되는 물리적인 위치와 관련된 실제 어드레스(RA; real address)로 변환된다.
처리 유닛(200) 내에서, 유효 어드레스로부터 실제 어드레스로의 번역은 메모리 관리 유닛(MMU; memory management unit) 및 관련 어드레스 번역 장비에 의해 이루어진다. 바람직하게는, 별도의 MMU가 인스트럭션 액세스 및 데이터 액세스를 위해 제공된다. 도 3a에는, 단일 MMU(112)가 도시되어 있는데, 명확성을 위해 단지 ISU(202)에 대한 접속부가 도시되어 있다. 그러나, 당업자라면, MMU(112)가 바람직하게는 로드/저장 유닛(LSU)(96, 98)에 대한 접속부(도시되어 있지 않음) 및 메모리 액세스를 관리하는데 필요한 다른 구성요소들을 포함함을 알 수 있을 것이다. MMU(112)는 데이터 번역 색인 버퍼(ITLB; data translation lookaside buffer)(113) 인스트럭션 번역 색인 버퍼(instruction translation lookaside buffer)(115)를 포함한다. 각각의 TLB는 최근에 참조된 페이지 테이블 엔트리를 포함하며, 이들 엔트리는 액세스되어 EA를 데이터(DTLB(113)) 또는 인스트럭션(ITLB(115))을 위한 RA로 번역한다. ITLB(115)로부터의 최근에 참조된 EA-RA 번역은 EOP 유효 어드레스로부터 실제 어드레스로의 테이블(ERAT(effective-to-real address table)(32)에 캐시된다.
만약, ERAT(32)에 의해 IFAR(30)에 포함된 EA의 번역 및 I-캐시 디렉토리(34) 내의 실제 어드레스(RA)의 룩업 후에, 히트(hit)/미스(miss) 로직(22)이 IFAR(30) 내의 EA에 대응하는 인스트럭션들의 캐시 라인이 L1 I-캐시(18) 내에 존재하지 않는다고 판정하면, 히트/미스 로직(22)은 I-캐시 요청버스(24)를 통해 RA를 요청 어드레스로서 L2 캐시(16)에게 제공한다. 이러한 요청 어드레스는 최근의 액세스 패턴에 의거하여 L2 캐시(16) 내의 프리페치 로직에 의해 발생할 수도 있다. 요청 어드레스에 응답하여, L2 캐시(16)는, 어떻게든 선택적인 프리 디코드 로직(144)을 통과한 후에, I-캐시 리로드 버스(26)를 통해 프리페치 버퍼(PB)(28) 및 L1 I-캐시(18)로 로드되는 인스트럭션들의 캐시 라인을 출력한다.
일단 IFAR(30) 내의 EA에 의해 지정된 캐시 라인이 L1 캐시(18)에 존재하면, L1 I-캐시(18)는 분기 예측 유닛(BPU)(36) 및 인스트럭션 페치 버퍼(IFB)(40)로 캐시 라인을 출력한다. BPU(36)는 분기 인스트럭션용 인스트력선들의 캐시 라인을 스캔하여 조건부 분기 인스트럭션이 있다면 그 결과를 예측한다. 분기 예측 후에, BPU(36)는 위에서 논의한 바와 같이 추론적인 인스트럭션 페치 어드레스를 IFAR(30)에게 제공하고, 상기 예측을 분기 인스트럭션 큐(64)에 전달하여, 조건부의 분기 인스트럭션이 분기 실행 유닛(92)에 의해 나중에 분석될 때 예측의 정확도가 결정될 수 있게 된다.
IFB(40)는, 인스트럭션의 캐시 라인이 인스트럭션 번역 유닛(ITU)(42)에 의해 번역될 수 있을 때까지 L1 I-캐시(18)로부터 인스트럭션의 캐시 라인을 버퍼링한다. 처리 유닛(200)의 도시된 실시예에서, ITU(42)는 유저 인스트럭션 세트 아키텍처(UISA) 인스트럭션으로부터의 인스트럭션을 처리 유닛(200)의 실행 유닛에 의해 직접 실행가능한 상이한 수의 내부 ISA(IISA) 인스트럭션으로 번역한다. 이러한 번역은, 예를 들어 판독 전용 메모리(ROM) 템플리트에 저장된 마이크로코드를참조하여 이루어질 수도 있다. 적어도 일부 실시예에서는, UISA-IISA 번역으로 인해 IISA 인스트럭션의 수가 UISA 인스트럭션의 수와 상이해지고, 및/또는 IISA 인스트럭션의 길이가 대응하는 UISA 인스트럭션의 길이와 상이하게 된다. 따라서 결과의 IISA 인스트럭션이 글로벌 컴플리션 테이블(38)에 의해 인스트럭션 그룹으로 할당되며, 그 멤버들은 서로에 대해 디스패치되어 무순서로(out-of-order) 실행되도록 허용된다. 글로벌 컴플리션 테이블(38)은, 적어도 하나의 관련된 EA에 의해 이미 완료되어야 하는 각각의 인스트럭션 그룹을 추적하는데, 상기 EA는 인스트럭션 그룹 내에서 가장 오래된 인스트럭션의 EA인 것이 바람직하다.
UISA-IISA 인스트럭션 번역 후에, 인스트럭션들은 인스트럭션 유형에 의거하여, 가능하게는 무순서로 래치(44, 46, 48, 50) 중 하나로 디스패치된다. 즉, 분기 인스트럭션 및 기타 CR(condition register) 변경 인스트럭션들이 래치(44)로 디스패치되고, 고정 소수점 및 로드-저장 인스트럭션들이 래치들(46, 48) 중 어느 하나로 디스패치되며, 부동 소수점 인스트럭션들이 래치(50)로 디스패치된다. 그 다음에, 실행 결과를 일시적으로 저장하는 리네임 레지스터를 요구하는 각각의 인스트럭션은 CR 맵퍼(52), 링크 및 카운트(LC) 레지스터 맵퍼(5), 예외 레지스터(XER) 맵퍼(56), 범용 레지스터(GPR) 맵퍼(58), 및 부동 소수점 레지스터(FPR) 맵퍼(60)에 의해 하나 이상의 리네임 레지스터를 할당받는다.
그 다음에, 디스패치된 인스트럭션은 CR 발행 큐(CRIQ)(62), 분기 발행 큐(BIQ)(64), 고정 소수점 발행 큐(FXIQ)(66, 68), 및 부도 소수점 발행 큐(FPIQ)(70, 72) 중 적절한 하나에 일시적으로 위치한다. 발행 큐(62, 64, 66,68, 70, 72)로부터, 인스트럭션들은, 데이터 의존도 및 반의존도(antidependency)가 지켜지는 한, 실행에 대한 처리 유닛(10)의 실행 유닛으로 적절히 발행될 수 있다. 그러나, 인스트럭션들의 실행이 완료될 때까지 인스트럭션들은 발행 큐(62-72) 내에 유지되고, 인스트럭션들 중 어느 하나라도 재발행될 필요가 있는 경우에는, 그 결과 데이터가, 존재한다면, 다시 기록된다.
도시된 바와 같이, 처리 유닛(204)의 실행 유닛은 CR 변경 인스트럭션을 실행하는 CR 유닛(CRU)(90), 분기 인스트럭션을 실행하는 분기 실행 유닛(BEU)(92), 고정 소수점 인스트럭션을 실행하는 두 개의 고정 소수점 유닛(FXU)(94, 100), 로드 및 저장 인스트럭션을 실행하는 두 개의 로드-저장 유닛(LSU)(96, 98), 및 부동 소수점 인스트럭션을 실행하는 두 개의 부동 소수점 유닛(FPU)(102, 104)을 포함한다. 각각의 실행 유닛(90-104)은 바람직하게는 다수의 파이프라인 스테이지를 갖는 실행 파이프라인으로서 구현된다.
실행 유닛(90-104) 중 하나의 실행 유닛 내에서 실행되는 동안, 인스트럭션은, 실행 유닛에 결합된 레지스터 파일 내의 하나 이상의 구성 및/또는 리네임 레지스터로부터, 만약 존재한다면, 오퍼랜드를 수신한다. CR 변경 또는 CR 의존 인스트럭션을 실행할 때, CRU(90) 및 BEU(92)는 CR 레지스터 파일(80)에 액세스하며, 이 CR 레지스터 파일은 바람직한 실시예에서 하나 이상의 비트로 형성된 다수의 별개의 필드를 각각 포함하는 다수의 CR 리네임 레지스터 및 CR을 포함한다. 이들 필드 중에는, 값(통상적으로 인스트럭션의 오퍼랜드 또는 결과)이 0보다 작은지, 0보다 큰지 또는 0인지를 각각 나타내는 LT, GT, EQ 필드가 있다. 링크 및 카운트레지스터(LCR) 레지스터 파일(82)은 카운트 레지스터(CTR), 링크 레지스터(LR) 및 각각의 리네임 레지스터를 포함하며, 이에 따라 BEU(92)는 또한 조건부 분기를 분석하여 경로 어드레스를 획득한다. 동기화된 이중 레지스터 파일인 범용 레지스터 파일(GPR)(84, 86)은 FXU(94, 100) 및 LSU(96, 98)에 의해 액세스되어 생성된 고정 소수점 및 정수 값을 저장한다. GPR(84, 86)과 같이 동기화된 레지스터의 이중 세트로서 구현될 수도 있는 부동 소수점 레지스터 파일(FPR)(88)은 FPU(102, 104)에 의한 부동 소수점 인스트럭션 및 LSU(96, 98)에 의한 부동 소수점 로드 인스트럭션의 실행에 기인하는 부동 소수점 값을 포함한다.
실행 유닛은 인스트럭션의 실행을 완료한 후에, 프로그램 순서로 인스트럭션을 스케줄링하는 GCT(38)에게 실행을 통보한다. CRU(90), FXU(94, 100) 또는 FPU(102, 104) 중 하나에 의해 실행된 인스트럭션을 완료하기 위해, GCT(38)는 신호들 실행 유닛에게 신호를 보내고, 실행 유닛은 결과 데이터가 존재하면 그 결과 데이터를, 할당된 리네임 레지스터로부터 적절한 레지스터 파일 내의 하나 이상의 구성 레지스터로 다시 기록한다. 그 다음에 인스트러션은 발행 큐로부터 제거되며, 그 인스트럭션 그룹 내의 모든 인스트럭션이 완료되면, GCT(38)로부터 제거된다. 그러나, 다른 유형의 인스트럭션은 상이하게 완료된다.
BEU(92)가 조건부의 분기 인스트럭션을 분석하여 선택할 실행 경로의 경로 어드레스를 결정할 때, 경로 어드레스는 BPU(36)에 의해 예측된 추론적인 경로 어드레스에 대해 비교된다. 만약 경로 어드레스가 일치하면, 더 이상의 처리는 요구되지 않는다. 그러나, 추론적인 경로 어드레스가 예측된 경로 어드레스와 일치하지 않으면, BEU(92)는 올바른 경로 어드레스를 IFAR(30)에게 제공한다. 어느 경우든, 분기 인스트럭션은 BIQ(64)로부터 제거될 수 있으며, 동일한 인스트럭션 그룹 내의 모든 다른 인스트럭션이 완료되면 GCT(38)로부터 제거될 수 있다.
로드 인스트럭션의 실행에 후속하여, 로드 인스트럭션의 실행에 의해 계산된 유효 어드레스는 데이터 ERAT(도시되지 않음)에 의해 실제 어드레스로 번역되어 요청 어드레스로서 L1 D-캐시(20)에 제공된다. 이 점에서, 로드 인스트럭션은 FXIQ(66 또는 68)로부터 제거되어, 지시된 로드가 수행될 때까지 LRQ(load reorder queue)(114)에 위치한다. 만약, 요청 어드레스가 L1 D-캐시(20)에서 누락되면, 요청 어드레스는 LMQ(load miss queue)(116)에 위치하며, 이로부터 요청된 데이터는 L2 캐시(16)로부터 검색되고, 그것에 실패하면 다른 처리 유닛(200) 또는 시스템 메모리(118)(도 2에 도시되어 있음)로부터 검색된다. LRQ(114)는 배타적인 액세스 요청(예를 들면, 수정 목적의 판독(read-with-intent-to-modify))을 스누핑하며, 진행중인 로드를 상호접속(222) 구조(도 2에 도시되어 있음) 상에서 제거하거나(flush) 킬(kill)시키며, 만약, 충돌이 발생하면, 그 로드 인스트럭션을 취소하고 재발행한다. 저장 인스트럭션은, 저장을 위한 유효 어드레스가 저장 인스트럭션의 실행에 후속하여 로드되는 저장 큐(STQ)(110)를 이용하여 유사하게 완료된다. STQ(110)로부터, 데이터는 L1 D-캐시(20) 및 L2 캐시(16) 중 하나 또는 둘 모두에 저장될 수 있다.
프로세서 상태(Processor states)
프로세서의 상태는 특정 시간에 저장된 데이터, 인스트럭션, 및 하드웨어 상태를 포함하며, 본 명세서에서는 "하드(hard)" 또는 "소프트(soft)"로 정의된다. "하드" 상태는 프로세서가 프로세스 내의 현 시점으로부터 프로세스를 실행하는데 구조적으로 요구되는, 프로세서 내의 정보로 정의된다. 반대로, "소프트" 상태는 프로세스의 실행 효율을 개선시키는 프로세서 내의 정보로서 정의되며, 구조적으로 올바른 결과를 얻는 것은 요구되지 않는다. 처리 도 3a의 유닛(200)에서, 하드 상태는 수퍼바이저(supervisor) 레벨 레지스터(51) 뿐만 아니라, CRR(80), LCR(82), GPR(84, 86), FPR(88)과 같은 유저 레벨 레지스터의 내용을 포함한다. 처리 유닛(200)의 소프트 상태는 L-1 I-캐시(18), L-1 D-캐시(20)의 내용, DTLB(113) 및 ITLB(115)와 같은 어드레스 번역 정보와 같은 "필수 기능(performance-critical)"과, L2 캐시(16)의 내용 전부 또는 일부 및 BHT(35)와 같은 덜 중요한 정보를 모두 포함한다.
레지스터
전술한 설명에서, GPR(86), FPR(88), CRR(80) 및 LCR(82)과 같은 처리 유닛(200)의 레지스터 파일은, 이들 레지스터가 유저 또는 수퍼바이저 특권을 갖는 모든 소프트웨어에 의해 액세스될 수 있기 때문에, 일반적으로 "유저-레벨 레지스터"로 정의된다. 수퍼바이저 레벨 레지스터(51)는, 통상적으로 운영 체제 커널에서 메모리 관리, 구성 및 예외 처리와 같은 동작을 위해 운영 체제에 의해 통상적으로 사용되는 레지스터들을 포함한다. 이로서, 수퍼바이저 레벨 레지스터(51)에 대한 액세스는 일반적으로 충분한 액세스 허용을 갖는 단지 일부의 프로세스(즉, 수퍼바이저 레벨 프로세스)에만 한정된다.
도 3b에 도시된 바와 같이, 수퍼바이저 레벨 레지스터(51)는 일반적으로 구성(configuration) 레지스터(302), 메모리 관리 레지스터(308), 예외 처리 레지스터(314), 및 기타 레지스터(miscellaneous register)(322)를 포함하는데, 이들은 하기에 보다 상세히 설명한다.
구성 레지스터(302)는 머신 상태 레지스터(MSR)(306) 및 프로세서 버전 레지스터(PVR)(304)를 포함한다. MSR(306)은 프로세서의 상태를 정의한다. 즉, MSR(306)은, 인스트럭션 인터럽트(예외)가 처리된 후에 인스트럭션 실행이 어디에서 다시 시작되는지를 정의한다. PVR(304)은 처리 유닛(200)의 특정 타입(버전)을 식별한다.
메모리 관리 레지스터(308)는 블록 어드레스 번역(BAT; block-address translation) 레지스터(310)를 포함한다. BAT 레지스터(310)는 사용 가능한 블록 어드레스 번역을 온칩에 저장하는 소프트웨어 제어형 어레이이다. 바람직하게는 이들은 IBAT(309) 및 DBAT(311)로 도시된 바와 같이 별도의 인스트럭션 및 데이터 BAT 레지스터가 있다. 메모리 관리 레지스터는 또한, BAT 번역이 실패하면 EA를 가상 어드레스(VA)로 번역하는데 사용되는 세그먼트 레지스터(SR)(312)를 포함한다.
예외 처리 레지스터(314)는 데이터 어드레스 레지스터(DAR)(316), 특수 목적레지스터(SPR; special purpose register)(318), 및 머신 상태 저장/복원(SSR; status save/restore) 레지스터(320)를 포함한다. DAR(316)은, 액세스가 정렬 예외(alignment exception)와 같은 예외를 일으키면 메모리 액세스 인스트럭션에 의해 발생된 유효 어드레스를 포함한다. SPR은, 예를 들어 제 1 레벨 예외 핸들러(FLIH; first-level exception handler)에 의한 사용을 위해 예약된 메모리 영역을 식별하기 위해, 운영 체제에 의해 정의된 특수 목적용으로 사용된다. 이 메모리 영역은 시스템 내의 각각의 프로세서에 대해 유일한 것이 바람직하다. SPR(318)은 범용 레지스터(GPR)의 내용을 저장하기 위해 FLIH에 의해 스크래치 레지스터로서 사용될 수도 있으며, 이것은 SPR(318)로부터 로드되어 다른 GPR을 메모리에 저장하는 베이스 레지스터로서 사용될 수 있다. SSR 레지스터(320)는 예외(인터럽트) 시에 머신 상태를 저장하고, 인터럽트 인스트럭션으로부터의 리턴이 실행되면 머신 상태를 복원한다.
기타 레지스터(322)는 시간을 관리하는 타임 베이스(TB) 레지스터(324), 계수를 감소시키는 DEC(decrementer register)(326), 지정된 데이터 어드레스에 도달하면 브레이크포인트가 발생하도록 하는 데이터 어드레스 브레이크포인트 레지스터(DABR)(328)를 포함한다. 또한, 기타 레지스터(322)는 사전 정의된 기간 후에 인터럽트를 개시하는 시간 기반 인터럽트 레지스터(TBIR; time based interrupt register)를 포함한다. 이러한 시간 기반 인터럽트는 처리 유닛(200) 상에서 실행되는 주기적인 관리 루틴과 함께 사용될 수도 있다.
소프트웨어 조직(SORTWARE ORGANIZATION)
도 2의 MP 데이터 처리 시스템(201)과 같은 MP 데이터 처리 시스템에서, 다수의 애플리케이션이 상이한 운영 체제 하에서 동시에 실행될 수 있다. 도 4는 본 발명에 따른 MP 데이터 처리 시스템(201)의 전형적인 소프트웨어 구성의 층 도표를 도시한 것이다.
도시되어 있는 바와 같이, 소프트웨어 구성은, MP 데이터 처리 시스템(201)의 자원을 복수의 파티션에 할당하고, 복수의 파티션 내의 복수의(가능한 상이한) 운영 체제의 실행을 조정하는 관리(supervisory) 소프트웨어인 하이퍼바이저(hypervisor)(402)를 포함한다. 예를 들면, 하이퍼바이저(402)는 처리 유닛(200a), 시스템 메모리의 제 1 영역(118a), 및 기타 자원들을 운영 체제(404a)가 작동되고 있는 제 1 파티션에 할당할 수도 있다. 마찬가지로, 하이퍼바이저(402)는 처리 유닛(200n), 시스템 메모리의 제 2 영역(118n), 및 기타 자원들을 운영 체제(404n)가 작동되고 있는 제 2 파티션에 할당할 수도 있다.
운영 체제(404)의 제어 하에서, 워드 프로세서, 스프레드시트, 브라우저 등과 같은 복수의 애플리케이션(406)이 실행될 수도 있다. 예를 들면, 애플리케이션(406a 내지 406x)은 모두 운영 체제(404a)의 제어 하에서 실행된다.
각각의 운영시스템(404) 및 애플리케이션(406)은 통상적으로 복수의 프로세스를 포함한다. 예를 들어, 애플리케이션(406a)은 복수의 프로세스(408a 내지 408z)를 갖는 것으로 도시되어 있다. 처리 유닛(200)이 프로세스에 대해 필요한 인스트럭션, 데이터 및 상태 정보를 갖는다고 가정하면, 각각의 처리 유닛(200)은독립적으로 그 프로세스를 실행할 수 있다.
인터럽트 처리(INTERRUPT HANDLING)
도 5a 및 5b에는, 본 발명에 따른, 처리 유닛(200)과 같은 처리 유닛이 인터럽트를 처리하는 전형적인 방법의 흐름도가 도시되어 있다. 블록(502)에 도시된 바와 같이, 인터럽트는 프로세서에 의해 수신된다. 인터럽트는 예외(예를 들면, 오버플로), 외부 인터럽트(예를 들면, I/O 디바이스로부터의) 또는 내부 인터럽트일 수도 있다.
인터럽트 수신 시, 현재 실행중인 프로세스의 하드 구성 상태(블록(504)) 및 소프트 상태(블록(505))가 저장된다. 본 발명에 따른 하드 및 소프트 상태를 저장하고 관리하는 바람직한 프로세스의 상세는 이하에 도 6a(하드) 및 도 6b(소프트)를 참조하여 설명한다. 프로세스의 하드 상태가 메모리에 저장된 후, 적어도 제 1 레벨 인터럽트 핸들러(FLIH) 및 제 2 레벨 인터럽트 핸들러(SLIH)가 실행되어 인터럽트를 처리한다.
FLIH는 인터럽트로 인한 프로세서의 제어를 수신하는 루틴이다. 인터럽트 통지 시에, FLIH는 인터럽트 제어기 파일을 판독하여 인터럽트의 원인을 판단한다. 바람직하게는, 이 판정은 벡터 레지스터의 사용을 통해 이루어진다. 즉, FLIH는 테이블을 판독하여 인터럽트를 인터럽트의 최초 프로세싱을 처리하는 예외 벡터 어드레스와 매칭시킨다.
SLIH는 특정 인터럽트 소스로부터 인터럽트의 프로세싱을 처리하는 인터럽트의존 루틴이다. 즉, FLIH는 SLIH를 호출하는데, SLIH는 디바이스 인터럽트를 처리하지만, 디바이스 드라이버 그 자체는 아니다.
도 5a에서는, 원(506) 내에 도시된 단계들이 FLIH에 의해 수행된다. 블록(508)에서 도시된 바와 같이, 인터럽트는 전술한 바와 같이 바람직하게는 벡터 레지스터를 이용하여 고유하게 식별된다.
당업자들은 알 수 있듯이, 어떠한 SLIH도 입력/출력(I/O) 디바이스 또는 다른 프로세서(외부 인터럽트)와의 통신 절차를 개설할 수도 있거나, 또는 운영 체제 또는 인터럽트된 프로세서를 제어하는 하이퍼바이저의 제어 하에서 인스트럭션 세트를 실행할 수도 있다. 예를 들면, 블록(510 및 516)에 도시된 바와 같이, 제 1 인터럽트는 프로세서가 벡터 어드레스 1로 점프하도록 할 수도 있으며, 그 결과 SLIH A가 실행되게 된다. 도시된 바와 같이, SLIH A는 임의의 부가적인 소프트웨어 루틴을 호출하지 않고 인터럽트의 처리를 완료한다. 마찬가지로, 블록(512, 520 및 526)에 도시된 바와 같이, 벡터 어드레스 3으로의 분기로 인해 전형적인 SLIH C가 실행되며, 그 다음에 운영 체제(404) 또는 하이퍼바이저(402)(도 4에 도시되어 있음)에 속하는 하나 이상의 인스트럭션을 실행하여 인터럽트를 처리한다. 한편, 인터럽트가 프로세서에게 벡터 어드레스 2로 점프하도록 명령하면, 블록 514 및 518에 도시된 바와 같이, 전형적인 SLIH B가 실행된다. 그러면, SLIH B는 인터럽트를 발행한 디바이스에 대해 디바이스 드라이버를 호출한다(블록 524).
블록(516, 524 또는 526) 중 어느 블록 다음에, 상기 프로세스는 페이지 커넥터 "A"를 통해 도 5b의 블록(528)으로 진행한다. 인터럽트가 처리되면, SLIH 및FLIH는 분석되어, 블록(528 및 530)에 도시된 바와 같이 인터럽트의 실행 및 완료를 반영하도록 재설정된다. 그 다음에, 블록(534-536)에 도시된 바와 같이, 다음 프로세스가 로드되어 실행된다. 그러면, 인터럽트 처리 프로세스는 종료된다.
통상적으로 프로세서의 운영 체제 또는 MP 컴퓨터 시스템의 하이퍼바이저에 의해, 어느 프로세스가 다음에 실행되고(블록(532)) 어느 프로세서 상에서 실행될 지(블록(534))에 대한 선택이 이루어진다(MP 컴퓨터 시스템 내인 경우). 선택된 프로세스는 현재의 프로세서 상에서 인터럽트된 프로세스이거나, 또는 새로운 다른 프로세스이거나, 또는 현재의 프로세서 또는 다른 프로세서 상에서 실행 중인 동안 인터럽트된 다른 프로세스일 수도 있다.
블록(536)에 도시된 바와 같이, 프로세스 및 프로세서가 선택되면, 선택된 프로세서는 도 2에 도시된 그 다음(next) 하드 상태 레지스터(210)를 사용하여 실행될 다음 프로세스의 상태로 초기화된다. 그 다음 하드 상태 레지스터(210)는 그 다음 "하티스트(hottest)" 프로세스의 하드 구성 상태를 포함한다. 일반적으로, 상기 그 다음 하티스트 프로세스는 이전에 인터럽트되었으며 지금 재시작 중인 프로세스이다. 간혹, 그 다음의 하티스트 프로세스가 이전에 인터럽트되지 않은 새로운 프로세스일 수도 있다.
그 다음 하티스트 프로세스는 실행에 대해 최고 우선순위를 갖도록 결정되는 프로세스이다. 우선순위는 프로세스가 전체 애플리케이션에 얼마나 중요한 지, 프로세스로 인한 결과에 대한 필요성, 또는 우선순위화에 대한 임의의 다른 이유에 기초할 수도 있다. 복수의 프로세스가 실행될 때, 재시작을 기다리는 각 프로세스의 우선순위는 빈번히 변경된다. 따라서, 하드 구성 상태는 갱신된 우선순위 레벨을 동적으로 할당받는다. 즉, 임의의 주어진 순간에, 그 다음 하드 상태 레지스터(210)는 시스템 메모리(118)로부터 연속적으로 그리고 동적으로 갱신되는 하드 구성 상태를 포함하여, 실행될 필요가 있는 그 다음에의 "하티스트" 프로세스를 포함한다.
하드 구성 상태 저장(SAVING HARD ARCHITECTED STATE)
종래기술에서, 하드 구성 상태는, 다수의 프로세서 클록 사이클 동안 인터럽트 핸들러 또는 다른 프로세스의 실행을 차단하는 프로세서 코어의 로드/저장 유닛을 통해 시스템 메모리에 저장된다. 본 발명에서, 도 5a의 블록(504)에 도시된 하드 상태를 저장하는 단계는 도 6a에 도시된 방법에 따라서 촉진되는데, 이는 도 2에 개략적으로 도시된 하드웨어를 참조하여 설명한다.
인터럽트 수신 시, 처리 유닛(200)은, 블록(602)에 도시된 바와 같이, 현재 실행 중인 프로세스의 실행을 중단한다. 그 다음에, 블록(604)에 도시된 바와 같이, 하드 상태 레지스터(206)에 저장된 하드 구성 상태가 섀도우 레지스터(208)에 직접 카피된다. (대안으로, 섀도우 레지스터(208)는 현재의 하드 구성 상태로 섀도우 레지스터(208)를 연속적으로 갱신하는 프로세스를 통해 하드 구성 상태의 카피를 이미 갖고 있을 수도 있다.) 그 다음에 블록(606)에 도시된 바와 같이, 하드 구성 상태의 섀도우 카피(처리 유닛(200)에 의해 봤을 때 실행가능하지 않는 것이 바람직함)는 IMC(220)의 제어 하에서 시스템 메모리(118)에 저장된다. 하드 구성상태의 섀도우 카피는 고 대역폭 메모리 버스(116)를 통해 시스템 메모리(118)로 전송된다. 현재의 하드 구성 상태의 카피를 섀도우 레지스터(208)로 저장하는 것은 많아야 단지 몇 사이클 밖에 걸리지 않기 때문에, 처리 유닛(200)은 인터럽트를 처리하거나 또는 다음 프로세스를 실행하는 "실제 작업(real work)"을 신속하게 시작할 수 있다.
하드 구성 상태의 섀도우 카피는, 도 10과 관련하여 후술하는 바와 같이, 바람직하게는 하드 구성 상태를 위해 예약되어 있는 시스템 메모리(118) 내의 특별한 메모리 영역 내에 저장된다.
소프트 상태 저장(SAVING SOFT STATE)
인터럽트 핸들러가 종래의 프로세서에 의해 실행될 때, 인터럽트된 프로세스의 소프트 상태는 통상적으로 오염된다. 즉, 인터럽트 핸들러 소프트웨어의 실행은 프로세서의 캐시, 어드레스 번역 장비, 및 인터럽트 핸들러에 의해 사용되는 데이터(인스트럭션들을 포함함)를 갖는 히스토리 테이블을 파퓰레이트(populate)한다. 따라서, 인터럽트가 처리된 후에 인터럽트된 프로세스가 재시작되면, 프로세스는 증가된 인스트럭션 및 데이터 캐시 미스, 증가된 번역 미스, 및 증가된 분기의 잘못된 예측(misprediction)을 경험할 것이다. 그러한 미스(miss) 및 잘못된 예측은, 인터럽트 처리와 관련된 정보가 프로세서 및 캐시로부터 제거되고 프로세스의 소프트 상태를 저장하는 기타 구성요소들이 그 프로세스와 관련된 정보로 다시 파퓰레이트될 때까지, 프로세스 성능을 심각하게 저하시킨다. 따라서, 본 발명은 인터럽트 처리와 관련된 성능의 대가(penalty)를 감소시키기 위해 프로세스의 소프트 상태의 적어도 일부를 저장하고 복원한다.
이제 도 6b 및 도 2 및 도 3a에 도시된 대응 하드웨어를 참조하면, L1 I-캐시(18) 및 L1 D-캐시(20)의 전체 내용은 블록(610)에 도시되어 있는 바와 같이, 시스템 메모리(118)의 전용 영역에 저장된다. 마찬가지로, BHT(35)의 내용(블록(612)), ITLB(115) 및 DTLB(113)(블록(614), ERAT(32)(블록(616)), 및 L2 캐시(16)(블록(618))가 시스템 메모리(118)에 저장된 수도 있다.
L2 캐시(16)는 상당히 크기 때문에(즉, 사이즈가 수 메가바이트), 모든 L2 캐시(16)를 저장하는 것은 시스템 메모리 내의 예정 지역(footprint) 및 데이터를 전송하는데 요구된 시간/대역폭 모두에 의해 금지될 수도 있다. 따라서, 바람직한 실시예에서는, 가장 최근에 사용된(MRU; most recently used) 세트의 서브세트(예를 들면, 2)만이 각각의 적합 계층 내에 저장된다.
도 6b는 프로세스의 소프트 상태의 다수의 상이한 구성요소의 각각을 저장하는 것을 도시하고 있지만, 저장되는 이들 구성요소의 수 및 이들 구성요소가 저장되는 순서는 실시 중에 변할 수 있으며, 소프트웨어 프로그램가능하거나 하드웨어 모드 비트를 통해 제어될 수 있음에 주의하라.
따라서, 본 발명은, 인터럽트 핸들러 루틴(또는 다음 프로세스)이 실행되는 동안 소프트 상태를 내보낸(stream out). 이 비동기 동작(인터럽트 핸들러의 실행에 독립적인)으로 인해 소프트 상태(인터럽트된 프로세스의 소프트 상태와 인터럽트 핸들러의 소프트 상태)가 혼합될 수도 있다. 그럼에도 불구하고, 이러한 데이터의 혼합은 용인될 수 있는데, 그것은 소프트 상태의 정확한 보존이 구성 수정에 요구되지 않기 때문이며, 인터럽트 핸들러를 실행하는 중에 보다 짧은 지연으로 인해 개선된 성능이 얻어지기 때문이다.
다시 도 2를 참조하면, L1 I-캐시(18), L1 D-캐시(20), 및 캐시(16)로부터의 소프트 상태는 캐시 데이터 경로(218)를 통해 IMC(220)으로 전송되며, BHT(35)와 같은 다른 소프트 상태는 유사한 내부 데이터 경로(도시되지 않음)를 통해 IMC(220)으로 전송된다. 대안으로 또는 부가적으로, 바람직한 실시예에서, 적어도 일부의 소프트 상태 구성요소가 스캔 체인 경로(214)를 통해 IMC(220)로 전송된다.
스캔 체인 경로를 통해 소프트 상태 저장(SAVING SOFT STATES VIA A SCAN CHAIN PATHWAY)
이들의 복잡도 때문에, 프로세서 및 기타 IC는 통상적으로 IC의 테스팅을 용이하게 하는 회로를 포함한다. 테스트 회로는, 본 명세서에서 그 전체를 참조로서 포함하고 있는 IEEE(Institute of Electrical and Electronic Engineer) 표준 1149.1-1990, "Standard Test Access Port and Boundary Scan Architecture"에 개시된 바운다리 스캔 체인을 포함한다. 통상적으로 실장된 집적 회로 상의 전용 핀을 통해 액세스되는 바운다리 스캔 체인은 집적 회로의 소자들 사이의 테스트 데이터를 위한 경로를 제공한다.
도 7에는 본 발명에 따른, 집적 회로(700)의 도표에 따른 블록이 도시되어 있다. 집적 회로(700)는 바람직하게는, 도 2의 처리 유닛(200)과 같은 프로세서이다. 집적 회로(700)는, 본 발명의 설명을 위해, 프로세스의 소프트 상태를 저장하는 세 개의 메모리 요소를 포함하는 세 개의 논리 소자(로직)(702, 704, 706)를 포함한다. 예를 들면, 로직(702)은 도 3a에 도시된 L1 D-캐시(20)이고, 로직(704)은 ERAT(32)이며, 로직(706)은 L2 캐시(16)의 일부일 수 있다.
제조업자가 집적 회로(700)를 테스트하는 동안, 바람직하게는 클록 제어형 래치인 스캔 체인 바운다리 셀(708)을 통해 신호가 전송된다. 스캔 체인 바운다리 셀(708a)에 의해 출력된 신호는 테스트 입력을 로직(702)에 제공하며, 그 다음에 로직(702)은 신호를 스캔 체인 바운다리 셀(708b)에 출력하고, 그 다음에 상기 신호가 스캔 체인 바운다리(708c)에 도달할 때까지 다른 스캔 체인 바운다리 셀(708)을 경유하여 다른 로직(704 및 706)을 통해 상기 신호를 전송한다. 따라서, 예기된 출력이 스캔 체인 바운다리 셀(708c)로부터 수신되기만 하면, 로직(702-706)이 테스트를 통과하는 도미노 효과가 존재한다.
기존에는 집적 회로의 바운다리 스캔 체인이 제조 후에 사용되지 않는다. 그러나, 본 발명은 상술한 테스트 경로를 경로로서 이용하여, 캐시/레지스터 포트를 차단하지 않는 방식으로 소프트 구성 상태를 도 2의 IMC(220)로 전송한다. 즉, 스캔 체인 테스트 경로를 이용함으로써, 다음 프로세스 또는 인터럽트 핸들러에 의한 캐시/레지스터로의 액세스의 차단없이 IH 또는 그 다음 프로세스가 실행 중인 동안, 소프트 구성 상태가 캐시/레지스터로부터 나올 수 있다.
스캔 체인(214)이 직렬 경로이면, 도 2에 도시된 직렬-병렬 로직(216)이, 소프트 상태를 시스템 메모리(118)로 적절히 전송하기 위해, 병렬 데이터를 ICM(220)에 제공한다. 바람직한 실시예에서, 직렬-병렬 로직(216)은 또한 어느 데이터가 어느 레지스터/캐시로부터의 것인지를 식별하는 로직을 포함한다. 그러한 식별은 당업자에게 공지된 임의의 방법에 의해 직렬 데이터에 대한 선두의 식별 태그의 식별을 포함할 수도 있다. 소프트 상태 데이터를 병렬 포맷으로 변환한 후, IMC(220)는 고 대역폭 메모리 버스(222)를 통해 시스템 메모리(118)로 소프트 상태를 전송한다.
이들 동일한 스캔 체인 경로는 도 2에 도시된 섀도우 레지스터(208)에 포함된 것과 같은 하드 구성 상태를 추가로 전송하는 데 사용될 수도 있다.
SLIH/FLIH 플래시 ROM
종래기술의 시스템에서, 제 1 레벨 인터럽트 핸들러(FLIH) 및 제 2 레벨 인터럽트 핸들러(SLIH)는 시스템 메모리에 저장되며, 호출시 캐시 메모리 계층을 파퓰레이트한다. 종래의 시스템에서 시스템 메모리로부터 처음으로 FLIH 또는 SLIH를 호출하면 긴 액세스 지연이 발생한다(캐시 미스 후 시스템 메모리로부터 FLIH/SlIH를 위치시키고 로드하기 때문에). FLIH/SLIH 인스트럭션 및 데이터로 캐시 메모리를 파퓰레이트하는 것은 후속 프로세스에 의해 요구되지 않는 데이터 및 인스트럭션으로 캐시를 "오염시킨다".
FLIH 및 SLIH의 액세스 지연을 줄이기 위해, 그리고 캐시 오염을 회피하기 위해, 처리 유닛(200)은 도 3a 및 도 8a에 도시된 바와 같이, 특별한 온-칩 메모리(예를 들면, 플래시 판독 전용 메모리(ROM)(802)) 내에 적어도 일부 FLIH 및SLIH를 저장한다. FLIH(804) 및 SLIH(806)가 제조시에 플래시 ROM(802) 내로 구워질 수도 있거나 또는 당업자에게 공지된 플래시 프로그래밍 기법에 의해 제조 후에 구워질 수도 있다. 인터럽트가 처리 유닛(200)(도 2에 도시되어 있음)에 의해 수신될 때, FLIH/SLIH는 시스템 메모리(118) 또는 캐시 계층(212) 보다는 플래시 ROM(802)로부터 직접 액세스된다.
SLIH 예측
일반적으로, 인터럽트가 처리 유닛(200)에서 발생하면, FLIH가 호출되고, 그 다음에 FLIH가 SLIH를 호출하며, SLIH가 인터럽트의 처리를 완료한다. 어느 SLIH가 호출되고 SLIH 실행이 어떻게 변하는 지는 전달된 파라미터, 조건 상태 등을 포함하는 다양한 인자에 의존한다. 예를 들면, 도 8b에서, FLIH(812)를 호출하면 SLIH(814)를 호출하여 실행하게 되며, 그 결과 B에 위치한 인스트럭션을 실행하게 된다.
프로그램 동작은 반복될 수 있기 때문에, 인터럽트가 복수 회 발생하여 동일한 FLIH 및 SLIH(예를 들면, FLIH(812) 및 SLIH(814))를 실행하게 되는 경우가 빈번하다. 결국, 본 발명은, 인터럽트의 후속 발생에 대한 인터럽트 처리가, 인터럽트 처리 프로세스의 제어 그래프가 반복될 것이라는 것을 예측하고 FLIH를 먼저 실행하지 않고 SLIH의 부분을 추론적으로 실행함으로써, 촉진될 수도 있음을 인지하고 있다.
인터럽트 처리 예측을 용이하게 하기 위해, 처리 유닛(200)은 인터럽트 핸들러 예측 테이블(IHPT; Interrupt Handler Predictioin Table)(808)을 구비하고 있으며, 이는 도 8c에 보다 상세히 도시된다. IHPT(808)는 복수의 FLIH의 베이스 어드레스(816)(인터럽트 벡터)의 리스트를 포함한다. 각각의 FLIH 어드레스(816)와 관련하여, IHPT(808)는 관련된 FLIH에 의해 사전에 호출된 하나 이상의 SLIH 어드레스(818)의 각각의 세트를 저장한다. IHPT(808)이 특정 FLIH에 대한 베이스 어드레스와 관련되면, 예측 로직(820)은 지정된 FLIH에 의해 호출될 것 같은 SLIH의 어드레스로서 IHPT(808) 내의 지정된 FLIH 어드레스(816)와 관련된 SLIH 어드레스(818)를 선택한다. 예시한 예측된 SLIH 어드레스는 도 8b에 도시된 바와 같이 SLIH(814)의 베이스 어드레스일 수도 있지만, 시작 점(예를 들면, B)에 후속하는 SLIH(814) 내의 인스트럭션의 어드레스일 수도 있음에 주의하라.
예측 로직(820)은 어느 SLIH가 지정된 FLIH에 의해 호출될 지를 예측하는 알고리즘을 사용한다. 바람직한 실시예에서, 이 알고리즘은 가장 최근에 사용된, 지정된 FLIH와 관련된 SLIH를 선택한다. 다른 바람직한 실시예에서, 이 알고리즘은 가장 빈번히 호출된, 지정된 FLIH와 관련된 SLIH를 선택한다. 어느 실시예에서도, 알고리즘은 예측된 SLIH에 대한 요청시에 실행될 수 있거나, 또는 예측된 SLIH가 IHPT(808)에서 연속적으로 갱신되어 저장될 수도 있다.
본 발명은 종래기술의 분기 예측 방법과는 상이하다. 첫째, 전술한 방법은 결국 특정 인터럽트 핸들러로 점프하며, 분기 인스트럭션 어드레스에 의거하지 않는다. 즉, 종래기술에서 사용된 분기 예측 방법은 분기 동작의 결과를 예측하지만, 본 발명은 (가능하게는) 비 분기 인스트럭션에 의거하여 특정 인터럽트 핸들러로의 점프를 예측한다. 이 때문에 두 번째 차이가 발생하는 데, 그것은, 종래기술의 분기 예측에 비해 본 발명에 의해 제공된 인터럽트 핸들러 예측에 의해 보다 많은 양의 코드가 생략될 수 있다는 것으로서, 종래의 분기 예측 메카니즘에 의해 스캐닝될 수 있는 인스트럭션 윈도우의 사이즈는 본래 한계가 있어서 예측된 분기 전에 제한된 수의 인스트럭션만 통과를 허용하는 반면에, 본 발명은 어떠한 수의 인스트럭션(예를 들면, FLIH)도 통과시킬 수 있기 때문이다. 셋째, 본 발명에 따른 인터럽트 핸들러 예측은, 종래기술에서 공지된 분기 예측을 취하는 지/취하지 않는 지의 2원 결정으로 한정되지 않는다. 따라서, 도 8c를 다시 참조하면, 예측 로직(820)은 어떠한 수의 히스토리컬(historical) SLIH 어드레스(818)로부터 예측된 SLIH 어드레스(822)를 선택할 수 있지만, 분기 예측 구조는 단지 순차적인 경로 및 분기 경로 중에서 선택한다.
도 9는 본 발명에 따른 인터럽트 핸들러를 예측하는 전형적인 방법의 흐름도를 도시한다. 인터럽트가 프로세서에 의해 수신되면(블록(902)), 동시 멀티쓰레딩(SMT)(simultaneous multithreading)에 의한 동시 실행이, 종래의 실행 히스토리에 의거하여 IHPT(808)에 의해 나타낸 예측된 SLIH(블록(906)) 및 인터럽트(블록(904))에 의해 호출된 FLIH 상에서 시작된다.
바람직한 실시예에서, 예측된 SLIH(블록(906))으로의 점핑은, 인터럽트의 수신 시에 호출된 FLIH를 감시하는 것에 응답하여 실행될 수도 있다. 예를 들어, 도 8에 도시된 IHPT(808)을 다시 참조하면, 인터럽트가 수신될 때, FLIH는 IHPT(808)에 저장된 FLIH 어드레스(816)와 비교된다. 만약 IHPT(808) 내의 저장된 FLIH 어드레스(816)가 인터럽트에 의해 호출된 FLIH 어드레스와 동일하다면, IHPT(808)는 예측된 SLIH 어드레스(822)를 제공하고, 예측된 SLIH 어드레스9822)의 어드레스에서 시작하는 코드 실행이 즉시 개시된다.
공지된 정확한 SLIH와 예측된 SLIH의 후속 비교는, IHPT(808)를 이용하여 호출된 예측된 SLIH 어드레스(822)를, 예측 플래그와 함께 FLIH 어드레스를 포함하는 SLIH 예측 레지스터 내에 저장함으로써 바람직하게 수행된다. 본 발명의 바람직한 실시예에서, "점프" 인스트럭션과 같은, FLIH로부터의 SLIH 호출로 알려져 있는 인스트럭션이 실행되면, 점프에 의해 호출된 어드레스는 예측 레지스터 내에 위치한 예측된 SLIH 어드레스(822)의 어드레스와 비교된다(그리고 예측 플래그에 의해 실행되었거나 현재 실행 중인 것으로 식별된다). 예측 레지스터로부터의 예측된 SLIH 어드레스(822) 및 실행 FLIH에 의해 선택된 SLIH가 비교된다(블록(910)). 올바른 SLIH가 예측되면, 예측된 SLIH는 실행을 완료하고(블록(914)), 따라서 인터럽트 처리를 촉진한다. 그러나, SLIH가 잘못 예측되면, 예측된 SLIH의 추가적인 실행이 취소되고, 그 대신에 올바른 SLIH가 실행된다(블록(916)).
상태 관리(STATE MANAGEMENT)
도 10은 시스템 메모리 내에 저장된 하드 및 소프트 상태와 다양한 프로세서 및 전형적인 MP 데이터 처리 시스템의 메모리 파티션 사이의 논리 관계를 도시한 개념도이다. 도 10에 도시된 바와 같이, 모든 하드 구성 상태 및 소프트 상태는, 임의의 파티션 내의 프로세서에 의해 액세스 가능한 하이퍼바이저(402)에 의해 할당된 특정 메모리 영역 내에 저장된다. 즉, 프로세서 A 및 프로세서 B는 파티션 X 내의 SMP로서 기능하도록 처음에 하이퍼바이저(402)에 의해 구성될 수 있으며, 반면에 프로세서 C 및 프로세서 D는 파티션 Y 내에 SMP로서 구성된다. 실행 중에, 프로세서 A-D가 인터럽트되면, 각각의 프로세서 A-D가 하드 상태 A-D 및 및 소프트 상태 A-D 중 각 하나씩 위에서 논의한 방식으로 메모리에 저장한다. 상이한 파티션 내의 프로세서가 동일한 메모리 공간을 액세스하도록 허용하지 않는 종래기술의 시스템과 달리, 어떠한 프로세서도 관련된 인터럽트된 프로세스를 재개할 수 있도록 하드 또는 소프트 상태 A-D를 액세스할 수 있다. 예를 들면, 그 파티션 내에서 생성된 하드 및 소프트 상태 C 및 D 외에, 프로세서 D는 하드 및 소프트 상태 A 및 B를 액세스할 수 있다. 따라서, 어떠한 프로세스 상태도 어떠한 파티션 또는 프로세서에 의해 액세스될 수 있다. 결국, 하이퍼바이저(402)는 파티션들 사이에서 로드 균형에 있어 큰 자유도 및 유연성을 갖고 있다.
소프트 상태 캐시 일치성(SOFT STATE CACHE COHERENCY)
위에서 논의한 바와 같이, 인터럽트된 프로세스의 소프트 상태는 도 3a에 도시된 L1 I-캐시(18), L2 D-캐시(20) 및 L2 캐시(16)와 같은 캐시 메모리의 내용을 포함할 수도 있다. 이들 소프트 상태는 도 6b와 관련하여 전술한 바와 같이, 시스템 메모리 내에 저장될 수도 있지만, 소프트 상태를 포함하는 데이터의 적어도 일부가 다른 프로세스에 의해 이루어진 데이터 변형으로 인해 변형될 수도 있다. 따라서 본 발명은 시스템 메모리 내에 저장된 소프트 상태를 캐시 일치되도록 유지하는 메카니즘을 제공한다.
도 11에 도시된 바와 같이, 시스템 메모리(118) 내에 저장된 소프트 상태는 "가상 캐시"에 저장되는 것으로 개념화될 수 있다. 예를 들면, L2 캐시(16)의 소프트 상태는 L2 가상 캐시(1102) 내에 있다. L2 가상 캐시는 L2 캐시(16)로부터 저장된 데이터(1110)의 각각의 캐시 라인의 태그(1104) 및 인덱스(1106)를 포함하는 어드레스 부분을 포함한다. 마찬가지로, L1 가상 I-캐시(1112)는 L1 I-캐시(18)로부터 저장된 인스트럭션(1120)의, 태그(1114) 및 인덱스(1116)를 포함하는 어드레스 부분을 포함하고, L1 가상 D-캐시(1122는 L1 D-캐시(20)로부터 저장된 데이터(1130)의 각각의 캐시 라인의 태그(1124) 및 인덱스(1126)를 포함하는 어드레스 부분을 포함한다. 각각의 이들 "가상 캐시"는 일치성(coherency)을 유지하도록 집적된 메모리 제어기(IMC; integrated memory controller)(220)에 의해 상호접속부(222)를 통해 관리된다.
IMC(220)는 시스템 상호접속부(22) 상에서 각 동작을 스누프(snoop)한다. 동작이 스누프될 때마다, 이는 캐시 라인의 무효를 요구할 수도 있는데, IMC(220)는 가상 캐시 디렉토리(1132)에 대해 그 동작을 스누프한다. 만약 스누프 히트(snoop hit)가 검출되면, IMC(220)는 적절한 가상 캐시 디렉토리를 갱신함으로써 시스템 메모리(118) 내의 가상 캐시 라인을 무효화시킨다. 스누프 무효화에 대한 정확한 어드레스 정합(즉, 태그 및 인덱스의 정합)을 요구하는 것이 가능하다 하더라도, 정확한 어드레스 정합을 실시하는 것은 IMC(220) 내에 많은 양의 회로를 요구할 것이다(특히 64 비트 및 보다 많은 어드레스를 위해). 따라서, 바람직한실시예에서, 스누프 무효화는 불투명하며, 스누프된 어드레스와 정합하는 선택된 최상위 비트(MSB)를 갖는 모든 가상 캐시 라인이 무효화된다. 어느 캐시 라인이 가상 캐시 메모리 내에서 무효화되는지를 결정하는 데 어느 MSB가 사용되는 지는 구현하기 나름이며, 모드 비트를 통해 소프트웨어 제어가능하거나 하드웨어 제어가능할 수 있다. 따라서, 어드레스는 태그 또는 태그의 단지 일부(예컨대, 10개의 최상위 비트)에 대해서만 스누프될 수도 있다. 가상 캐시 메모리의 무효 구조는 유효 데이터를 여전히 포함하는 캐시 라인을 무효화시키는 공인된 문제점을 갖지만, 이 문제점은 가상 캐시 라인의 일관성을 유지하는 가장 빠른 방법을 제공함으로써 얻어지는 성능 이점에 의해 능가된다.
제조 레벨 테스트(MANUFACTURING LEVEL TEST)
제조 동안, 집적 회로는 다양한 동작 상태 하에서 종합적으로 테스트된다. 그 중 한 테스트는, 집적 회로의 내부 게이트들이 모두 전술한 IEEE 1149.1 테스트 스캔 체인을 이용하여 테스트 데이터 스트림으로 테스트되는 데이터 테스트이다. 종래 기술에서, 동작 환경 내에서 집적 회로의 설치 후에, 그러한 테스트 프로그램은 다시 실행되지 않는데, 부분적으로는 테스트를 수행하기 위해 집적 회로를 테스트 설치물에 접속하는 것이 최선의 동작 환경에서 실시불가능하기 때문이며, 그러한 테스팅이 의도하는 목적 때문에 집적 회로의 사용을 막기 때문이다. 예를 들면, 프로세서(100)에서 하드 구성 상태는 로드/저장 실행 경로를 통해 시스템 메모리에 저장되고 시스템 메모리로부터 복원되어야 하는데, 이는 테스팅 동안에 실제작업의 실행을 막고 및 상당한 지연을 유입한다.
그러나, 전술한 하드 구성 상태 저장 방법을 이용하면, 하드 구성 상태를 저장하고 복원하는 시간이 아주 짧기 때문에(바람직하게는 단지 몇 클록 사이클), 프로세서가 정상 동작 환경(예를 들면, 컴퓨터 시스템)에서 설치되는 동안에 프로세서는 제조 레벨 테스트 프로그램을 기계적으로 실행할 수 있다.
도 12에는 본 발명에 따른 제조 레벨 테스트 프로그램의 전형적인 방법의 흐름도가 도시되어 있다. 테스트 프로그램은 바람직하게는 주기적으로 실행된다. 따라서, 블록(1202, 1204)에 도시된 바와 같이, 사전에 정해진 양의 시간이 경과하면, 프로세서에서 인터럽트가 개시된다(블록(1206)). 본 발명을 사용하는 어떠한 인터럽트에 의해서도, 테스트 프로그램이 실행을 시작하여 인터럽트를 발행할 때, 블록(1208)에 도시된 바와 같이, 하드 구성 상태를 저장하는 전술한 바람직한 방법을 이용하여, 현재 실행 중인 프로세스의 하드 구성 상태는 즉시 저장된다(일반적으로 2 내지 3 클록 사이클 내에). 바람직하게는 도 6b에서 전술한 방식으로, 동시에 실행하는 프로세스에 대한 소프트 상태의 적어도 일부가 동시에 저장된다(블록(1210).
제조 테스트 프로그램에 대한 하드 구성 상태는, 블록(1212)에 개시되어 있는 바와 같이, 프로세서 내로 선택적으로 로드된다. 본 발명의 바람직한 실시예에서, 제조 레벨 테스트 프로그램은, 도 8a에 도시된 플래시 ROM(802)으로부터 로드된 제조 레벨 테스트 프로그램(810)으로부터 로드된다. 제조 레벨 테스트 프로그램(810)은 처리 유닛(200)이 처음에 제조될 때 플래시 ROM(802)으로 구워지거나,또는 제조 레벨 테스트 프로그램(810)은 그 후에 구워질 수도 있다. 복수의 제조 레벨 테스트 프로그램이 플래시 ROM(802)에 저장되면, 제조 레벨 테스트 프로그램 중 하나가 예외를 위해 선택된다. 본 발명의 바람직한 실시예에서, 제조 레벨 테스트 프로그램은, 블록(1202, 1204)에 대해 위에서 설명한 바와 같이, 타이머 인터럽트가 실행될 때마다 실행된다.
하드 구성 상태가 프로세서로 로드되면, 제조 레벨 테스트 프로그램은, 바람직하게는 전술한 IEEE 1149.1 테스트 스캔 체인을 이용하여 실행하기 시작한다(블록(1214). 동시에, 소프트 구성 상태가, 바람직하게는 소프트 상태 갱신에 대해 전술한 바와 같은 방식으로(도 6b 참조), 프로세서 내로 들어간다(블록(1206)). 제조 레벨 테스트 프로그램의 실행 완료 시, 인터럽트가 완료되고 그 다음 프로세스가 그 프로세스에 대한 하드 구성 상태 및 소프트 상태를 로딩함으로써 실행된다(블록(1218)).
하드 구성 상태의 로딩은 단지 몇 클록 사이클만을 요구하기 때문에, 테스트 프로그램 그 자체를 실행하는데 요구된 시간의 범위 내에서, 제조 레벨 테스트 프로그램은 설계자가 원하는 만큼 빈번하게 실행될 수 있다. 제조 테스트 프로그램의 실행은 사용자, 운영시스템, 또는 하이퍼바이저에 의해 개시될 수 있다.
따라서 본 발명은 인터럽트와 관련된 지연 문제를 해결하기 위한 방법 및 시스템을 제공한다. 예를 들면, 종래 기술에서는, 인터럽트 핸들러가 빈번하게 요청되는 프로세스이면, 통상적으로 보다 낮은 캐시 레벨, 및 심지어 시스템 메모리가 적절한 인터럽트 핸들러를 검색하기 때문에 긴 지연이 존재한다.
인터럽트 핸들러가 실행중일 때, 인터럽트 핸들러는 인터럽트를 처리하는데 필요한 인스트럭션/데이터로 프로세서의 캐시 계층을 파플레이트하여, 인터럽트된 프로세스가 실행을 위해 복원될 때 캐시 계층을 오염시킨다. 본 발명은 본 명세서에 개시된 신규한 프로세스를 이용하여 이들 문제를 해결한다.
이상 컴퓨터 프로세서 및 소프트웨어와 관련하여 본 발명의 특징을 설명하였지만 본 발명의 적어도 몇몇 특징들은 데이터 저장 시스템 또는 컴퓨터 시스템에 의해 사용되는 프로그램 제품으로써 구현될 수도 있다. 본 발명의 프로그램 정의 기능은 기록 불가능한 저장 매체(예를 들면, CD ROM), 기록 가능한 저장 매체(예를 들면 플로피 디스켓, 하드디스크 드라이브, 판독/기록 CD ROM, 광학 매체), 및 이더넷을 포함하는 컴퓨터 및 전화 네트워크와 같은 통신 매체를 포함하는 다양한 신호 전달 매체를 통해 데이터 저장 시스템 또는 컴퓨터 시스템으로 전송될 수 있다. 따라서 그러한 신호 전달 매체는, 본 발명의 방법 기능들을 지시하는 컴퓨터 판독 가능한 인스트럭션을 운반하거나 인코딩할 때 본 발명의 다른 실시예를 나타낸다는 점에 주의하라. 또한 본 발명은 본원 명세서에 개시된 바와 같은 하드웨어, 소프트웨어, 또는 소프트웨어 및 하드웨어의 조합의 형태로 또는 그 등가 수단을 갖는 시스템에 의해 구현될 수 있다.
이상 바람직한 실시예를 참조하여 본 발명을 구체적으로 설명하였지만, 당업자라면 본 발명의 사상 및 범주로부터 벗어나지 않고, 형식 및 상세에 있어서 다양한 변경이 이루어질 수 있음을 알 수 있을 것이다.
본 발명에 따르면, 인터럽트에 응답하여 구성 상태를 저장하고 복원함으로써 발생하는 프로세싱 지연을 최소화하는 방법 및 시스템이 제공된다.

Claims (19)

  1. 프로세서 내에서의 인터럽트 처리 방법에 있어서,
    상기 프로세서에서의 프로세스 인터럽트의 수신에 응답하여, 이전의 실행 히스토리에 의거하여 인터럽트 핸들러의 실행을 예측하는 단계와,
    상기 예측된 인터럽트 핸들러를 추론적으로 실행하는 단계와,
    상기 예측된 인터럽트 핸들러의 추론적인 실행을 개시한 후에, 상기 추론적인 실행이 올바르게 예측되었는지 또는 잘못 예측되었는지 분석하는 단계
    를 포함하는 인터럽트 처리 방법.
  2. 제 1 항에 있어서,
    상기 추론적인 실행이 잘못 예측된 것이라는 분석에 응답하여, 상기 예측된 인터럽트 핸들러의 실행을 중지하고, 대안적인 인터럽트 핸들러를 실행하는 단계를 더 포함하는 인터럽트 처리 방법.
  3. 제 1 항에 있어서,
    상기 분석 단계는, 제 1 레벨 인터럽트 핸들러(FLIH)를 실행하여 정확한 제 2 레벨 인터럽트 핸들러(SLIH)를 결정하는 단계를 포함하고, 상기 방법은
    상기 추론적인 실행이 올바르게 예측된 것이라는 분석에 응답하여, 상기 정확한 SLIH의 실행을 중지하고 상기 예측된 인터럽트 핸들러의 실행을 완료하는 단계를 더 포함하는 인터럽트 처리 방법.
  4. 제 1 항에 있어서,
    상기 프로세서가 실행 히스토리에 의거하여 인터럽트 핸들러 예측을 유지하는 단계를 더 포함하고,
    상기 예측 단계는 상기 인터럽트 핸들러 예측 테이블을 참조하여 상기 예측된 인터럽트 핸들러의 실행을 예측하는 단계를 포함하는 인터럽트 처리 방법.
  5. 제 4 항에 있어서,
    상기 인터럽트 핸들러 예측 테이블은 상기 프로세서 내에서 유지되는 인터럽트 처리 방법.
  6. 제 1 항에 있어서,
    판독 전용 메모리(ROM) 내에 상기 인터럽트 핸들러를 저장하는 단계를 더 포함하는 인터럽트 처리 방법.
  7. 제 6 항에 있어서,
    상기 인터럽트 핸들러를 상기 ROM에 저장하는 단계는 상기 프로세서 내에 집적된 ROM 내에 상기 인터럽트 핸들러를 저장하는 단계를 포함하는 인터럽트 처리 방법.
  8. 프로세서에 있어서,
    적어도 하나의 실행 유닛과,
    상기 적어도 하나의 실행 유닛에 결합된 인터럽트 순서화 유닛과,
    상기 인스트럭션 순서화 유닛에 결합된 인터럽트 핸들러 예측 테이블을 포함하고,
    상기 인터럽트 핸들러 예측 테이블은 상기 프로세서가 인터럽트를 수신하는 것에 응답하여, 상기 인터럽트 핸들러 예측 테이블 내에 유지된 인터럽트 핸들러 실행의 히스토리에 의거하여 복수의 인터럽트 핸들러 중 하나의 실행을 예측하고, 상기 인스트럭션 순서화 유닛은 상기 적어도 하나의 실행 유닛이 상기 예측된 인터럽트 핸들러를 실행하도록 지시하는 프로세서.
  9. 제 8 항에 있어서,
    상기 프로세서가 상기 예측된 인터럽트 핸들러가 잘못된 예측이라고 판정하는 것에 응답하여, 상기 프로세서는 상기 예측된 인터럽트 핸들러의 실행을 중단하는 프로세서.
  10. 제 8 항에 있어서,
    복수의 인터럽트 핸들러를 포함하는 상기 인스트럭션 순서화 유닛에 결합된 온-보드(on-board) 프로그램 가능한 메모리를 더 포함하는 프로세서.
  11. 데이터 처리 시스템에 있어서,
    제 8 항에 따른 프로세서를 포함하는 복수의 프로세서와,
    상기 복수의 프로세서에 결합된 휘발성 메모리 계층과,
    상기 복수의 프로세서를 결합시키는 상호접속부를 포함하는 데이터 처리 시스템.
  12. 프로세서에 있어서,
    상기 프로세서에서의 프로세스 인터럽트의 수신에 응답하여, 이전의 실행 히스토리에 의거하여 인터럽트 핸들러의 실행을 예측하는 수단과,
    상기 예측된 인터럽트 핸들러를 추론적으로 실행하는 수단과,
    상기 예측된 인터럽트 핸들러의 추론적인 실행을 개시한 후에, 상기 추론적인 실행이 올바르게 예측되었는지 또는 잘못 예측되었는지 분석하는 수단
    을 포함하는 프로세서.
  13. 제 12 항에 있어서,
    상기 추론적인 실행이 잘못 예측된 것이라는 분석에 응답하여, 상기 예측된 인터럽트 핸들러의 실행을 중지하고, 대안적인 인터럽트 핸들러를 실행하는 수단을 더 포함하는 프로세서.
  14. 제 12 항에 있어서,
    상기 분석 수단은, 제 1 레벨 인터럽트 핸들러(FLIH)를 실행하여 정확한 제 2 레벨 인터럽트 핸들러(SLIH)를 결정하는 수단을 포함하고, 상기 프로세서는
    상기 추론적인 실행이 올바르게 예측된 것이라는 분석에 응답하여, 상기 정확한 SLIH의 실행을 중지하고 상기 예측된 인터럽트 핸들러의 실행을 완료하는 수단을 더 포함하는 프로세서.
  15. 제 12 항에 있어서,
    상기 프로세서가 실행 히스토리에 의거하여 인터럽트 핸들러 예측을 유지하는 수단을 더 포함하고,
    상기 예측 수단은 상기 인터럽트 핸들러 예측 테이블을 참조하여 상기 예측된 인터럽트 핸들러의 실행을 예측하는 수단을 포함하는 프로세서.
  16. 제 15 항에 있어서,
    상기 인터럽트 핸들러 예측 테이블을 상기 프로세서 내에서 유지하는 유지 수단을 포함하는 프로세서.
  17. 제 12 항에 있어서,
    판독 전용 메모리(ROM) 내에 상기 인터럽트 핸들러를 저장하는 수단을 더 포함하는 프로세서.
  18. 제 17 항에 있어서,
    상기 인터럽트 핸들러를 상기 ROM에 저장하는 수단은 상기 프로세서 내에 집적된 ROM 내에 상기 인터럽트 핸들러를 저장하는 수단을 포함하는 프로세서.
  19. 데이터 처리 시스템에 있어서,
    제 11 항에 따른 프로세서를 포함하는 복수의 프로세서와,
    상기 복수의 프로세서에 결합된 휘발성 메모리 계층과,
    상기 복수의 프로세서를 결합시키는 상호접속부를 포함하는 데이터 처리 시스템.
KR1020030078049A 2002-12-05 2003-11-05 프로세서 내에서의 인터럽트 처리 방법, 프로세서 및데이터 처리 시스템 KR20040049255A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/313,301 2002-12-05
US10/313,301 US20040111593A1 (en) 2002-12-05 2002-12-05 Interrupt handler prediction method and system

Publications (1)

Publication Number Publication Date
KR20040049255A true KR20040049255A (ko) 2004-06-11

Family

ID=32468210

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030078049A KR20040049255A (ko) 2002-12-05 2003-11-05 프로세서 내에서의 인터럽트 처리 방법, 프로세서 및데이터 처리 시스템

Country Status (5)

Country Link
US (1) US20040111593A1 (ko)
JP (1) JP2004185603A (ko)
KR (1) KR20040049255A (ko)
CN (1) CN1295611C (ko)
TW (1) TWI240205B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101950259A (zh) * 2008-12-30 2011-01-19 英特尔公司 在硬件中登记用户处理程序以用于事务存储器事件处理
KR101284097B1 (ko) * 2008-08-08 2013-07-15 퀄컴 인코포레이티드 추론적 인터럽트 벡터 프리페칭 장치 및 방법
US8892803B2 (en) 2009-09-23 2014-11-18 Samsung Electronics Co., Ltd. Interrupt on/off management apparatus and method for multi-core processor

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7529914B2 (en) * 2004-06-30 2009-05-05 Intel Corporation Method and apparatus for speculative execution of uncontended lock instructions
US7424563B2 (en) * 2006-02-24 2008-09-09 Qualcomm Incorporated Two-level interrupt service routine
US7913009B2 (en) * 2007-06-20 2011-03-22 Microsoft Corporation Monitored notification facility for reducing inter-process/inter-partition interrupts
US8024504B2 (en) * 2008-06-26 2011-09-20 Microsoft Corporation Processor interrupt determination
US20090327556A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Processor Interrupt Selection
US8171328B2 (en) * 2008-12-31 2012-05-01 Intel Corporation State history storage for synchronizing redundant processors
US8972642B2 (en) 2011-10-04 2015-03-03 Qualcomm Incorporated Low latency two-level interrupt controller interface to multi-threaded processor
GB2513043B (en) * 2013-01-15 2015-09-30 Imagination Tech Ltd Improved control of pre-fetch traffic
GB2517493A (en) * 2013-08-23 2015-02-25 Advanced Risc Mach Ltd Handling access attributes for data accesses
GB2522477B (en) 2014-01-28 2020-06-17 Advanced Risc Mach Ltd Speculative interrupt signalling

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5214785A (en) * 1989-09-27 1993-05-25 Third Point Systems, Inc. Controller with keyboard emulation capability for control of host computer operation
US6356989B1 (en) * 1992-12-21 2002-03-12 Intel Corporation Translation lookaside buffer (TLB) arrangement wherein the TLB contents retained for a task as swapped out and reloaded when a task is rescheduled
DE69326935T2 (de) * 1993-03-02 2000-05-18 Ibm Verfahren und Vorrichtung zur Übertragung von einem Datenstrom mit hoher Bitfolgefrequenz über unabhängige digitale Kommunikationskanäle
WO1994022081A1 (en) * 1993-03-25 1994-09-29 Taligent, Inc. Multi-level interrupt system
DK0661625T3 (da) * 1994-01-03 2000-04-03 Intel Corp Fremgangsmåde og apparatur til implementering af et firetrins system til bestemmelse af programforgreninger (Four Stage Bra
US6189112B1 (en) * 1998-04-30 2001-02-13 International Business Machines Corporation Transparent processor sparing
US6247109B1 (en) * 1998-06-10 2001-06-12 Compaq Computer Corp. Dynamically assigning CPUs to different partitions each having an operation system instance in a shared memory space
US6571359B1 (en) * 1999-12-13 2003-05-27 Intel Corporation Systems and methods for testing processors
JP3404322B2 (ja) * 1999-05-25 2003-05-06 株式会社エルミックシステム 割込処理方法、os支援システム、情報処理装置、記録媒体
US6981129B1 (en) * 2000-11-02 2005-12-27 Intel Corporation Breaking replay dependency loops in a processor using a rescheduled replay queue

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101284097B1 (ko) * 2008-08-08 2013-07-15 퀄컴 인코포레이티드 추론적 인터럽트 벡터 프리페칭 장치 및 방법
CN101950259A (zh) * 2008-12-30 2011-01-19 英特尔公司 在硬件中登记用户处理程序以用于事务存储器事件处理
KR101291016B1 (ko) * 2008-12-30 2013-07-30 인텔 코포레이션 사용자 핸들러 등록 장치, 프로세서, 시스템 및 방법
US9785462B2 (en) 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US8892803B2 (en) 2009-09-23 2014-11-18 Samsung Electronics Co., Ltd. Interrupt on/off management apparatus and method for multi-core processor

Also Published As

Publication number Publication date
CN1504882A (zh) 2004-06-16
US20040111593A1 (en) 2004-06-10
TWI240205B (en) 2005-09-21
JP2004185603A (ja) 2004-07-02
CN1295611C (zh) 2007-01-17
TW200422960A (en) 2004-11-01

Similar Documents

Publication Publication Date Title
KR100570415B1 (ko) 프로세스 상태 관리 방법 및 데이터 처리 시스템
KR100615775B1 (ko) 프로세서 작동 방법 및 프로세서
KR100650412B1 (ko) 프로세서 내의 상태 정보 관리 방법, 프로세서 및 데이터처리 시스템
US8037288B2 (en) Hybrid branch predictor having negative ovedrride signals
US20080127182A1 (en) Managing Memory Pages During Virtual Machine Migration
US20070101102A1 (en) Selectively pausing a software thread
JP3874287B2 (ja) 割込み時のプロセッサのアーキテクチャ状態の管理
US10996990B2 (en) Interrupt context switching using dedicated processors
KR20040049255A (ko) 프로세서 내에서의 인터럽트 처리 방법, 프로세서 및데이터 처리 시스템
JP3872470B2 (ja) メモリにおいてセーブされたプロセス状態を管理する方法、処理ユニットおよびデータ処理システム
US7039832B2 (en) Robust system reliability via systolic manufacturing level chip test operating real time on microprocessors/systems

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
NORF Unpaid initial registration fee