KR20110051233A - 추론적 인터럽트 벡터 프리페칭 장치 및 방법 - Google Patents

추론적 인터럽트 벡터 프리페칭 장치 및 방법 Download PDF

Info

Publication number
KR20110051233A
KR20110051233A KR1020117005358A KR20117005358A KR20110051233A KR 20110051233 A KR20110051233 A KR 20110051233A KR 1020117005358 A KR1020117005358 A KR 1020117005358A KR 20117005358 A KR20117005358 A KR 20117005358A KR 20110051233 A KR20110051233 A KR 20110051233A
Authority
KR
South Korea
Prior art keywords
instruction
interrupt
cache
address
exceptional condition
Prior art date
Application number
KR1020117005358A
Other languages
English (en)
Other versions
KR101284097B1 (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 KR20110051233A publication Critical patent/KR20110051233A/ko
Application granted granted Critical
Publication of KR101284097B1 publication Critical patent/KR101284097B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/3802Instruction prefetching
    • 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
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • 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
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

인터럽트 프로세싱을 위한 기술들이 기술되었다. 예외적 조건은 프로세서 내의 명령 파이프라인의 하나 이상의 스테이지들에서 검출된다. 검출된 예외적 조건에 대응하고 프로세서가 검출된 예외적 조건에 대응한 인터럽트를 수락하기 이전에, 명령 캐시는 인터럽트 핸들러의 시작 어드레스에서의 명령의 존재를 위해 체크된다. 인터럽트 벡터 테이블의 시작 어드레스에서의 명령은 명령 캐시 내에서 명령을 로드하기 위해 명령 캐시 내에 명령이 존재하지 않을 때 명령 캐시를 넘어선 저장 장치로부터 프리페치 되고, 이에 의해 명령은 프로세서가 검출된 예외적 조건에 대응한 인터럽트를 수락할 때까지 명령 캐시 내에서 이용된다.

Description

추론적 인터럽트 벡터 프리페칭 장치 및 방법{APPARATUS AND METHODS FOR SPECULATIVE INTERRUPT VECTOR PREFETCHING}
본 명세서는 일반적으로 프로세서 명령들을 프리페치(prefetch)하는 기술들에 관한 것이고, 특히 예외적인 조건들에 기반한 추론적 인터럽트 벡터 프리페칭에 관한 것이다.
셀룰러 폰들, 랩탑 컴퓨터들, PDA들 등과 같은 많은 휴대용 제품들은 통신, 멀티미디어 프로그램들과 같은 프로그램들을 실행하는 프로세서를 사용한다. 이런 제품들을 위한 처리 시스템들은 명령들과 데이터를 저장하기 위한 메모리 집합체(memory complex)와 프로세서를 포함하고 있다. 대용량 메인 메모리는 일반적으로 프로세서 사이클 타임에 비해 느린 액세스 타임을 갖는다. 결과적으로, 메모리 집합체는 관습적으로 프로세서 가까이에 위치한 가장 고성능이고 가장 저용량인 캐시와 함께, 캐시 메모리들의 성능과 용량에 기초하여 계층적으로 구성된다. 데이터 캐시와 명령 캐시는 분리되거나, 통합되거나, 분리와 통합의 복합이 된다. 예를 들어 레벨 1 명령 캐시와 레벨 1 데이터 캐시는 일반적으로 프로세서에 직접적으로 연결된다. 하지만, 레벨 2의 통합 캐시는 레벨 1(L1) 명령과 데이터 캐시들에 연결된다. 게다가 시스템 메모리는 일반적으로 레벨 2(L2) 통합 캐시에 연결된다. 플래쉬 메모리, 하드 디스크 드라이브들, 광학 드라이브들과 같은 외부 저장장치에 대한 연결 또한 제공된다.
레벨 1 명령 캐시는 일반적으로 프로세서 속도로 동작하고, 레벨 2 통합 캐시는 레벨 1 캐시보다 느리게 동작하지만, 시스템 메모리의 것보다 빠른 액세스 타임을 갖는다. 대안 메모리 구성들은 많이 있고, L1 및 L2 캐시에 더해진 L3캐시를 갖는 메모리 계층들이 그 예이다. 다른 메모리 구성은 오직 레벨 1 캐시 및 시스템 메모리를 사용할 수 있다.
명령 캐시들을 위한 메모리 계층이 사용될 수 있는 이유의 배경 원리들 중의 하나는 명령들이 메모리 안의 순차적 위치들로부터 접근되어지는 경향이 있다는 것이다. 캐시들이 코드(code)의 가장 최근 사용된 섹션들(sections)을 유지하게 함으로써, 프로세서들은 높은 수행 레벨에서 실행할 수 있다. 프로그램들은 또한 브랜치(branch), 콜(call), 리턴 타입 명령들을 포함하고, 인터럽트들과 같은 다른 비순차적인 동작들(operations)을 지원하고 있기 때문에, 순차적 장소 원리는 오직 코드의 상대적으로 짧은 영역들을 위해 유지되어 질 수 있다. 이러한 비순차적 동작들 때문에 명령 캐시에 대한 명령 페치(fetch)가 오류날 수 있고, 높은 메모리 용량 및 느린 액세스 타임으로 동작하는 다음의 높은 메모리 레벨에 적용되는 명령 페치를 야기할 수 있다. 이러한 오류는 프로세서가 명령을 기다리면서 멎어있게 만든다. 프로세서의 성능을 높게 유지하기 위해서는 캐시 오류 비율들이 낮아야 한다.
인터럽트가 발생할 때, 인터럽트 이벤트가 검출된 시간과 연관된 인터럽트 핸들러(interrupt handler)의 위치에 있는 명령들이 계속 페치 되고 실행을 시작할 수 있는 시간 사이에는 대기시간이 존재한다. 대기시간은 인터럽트 핸들러가 명령 캐시에 상주하지 못 한다는 것에 부분적으로 기인하며, 이로 인해 인터럽트 핸들러가 실행되고 그 영향으로 프로세서 성능을 낮추기 전에 명령들을 리트리브(retrieve)하는 페치 동작들 및 긴 오류를 야기한다. 대기시간을 줄이기 위한 한가지 접근방법은 명령 캐시 안의 인터럽트 핸들러들을 로킹(locking)하는 것을 포함하나, 이 접근방법은 캐시의 크기를 효과적으로 줄일 수 있으나, 프로세서 성능을 더 낮출 수 있다.
본 명세서는 연관 인터럽트 핸들러가 캐시되지 않은 경우, 인터럽트 이벤트가 검출된 시간과 인터럽트 이벤트 연관 인터럽트 핸들러 명령들이 실행을 위해 이용 가능하게 되는 시간 사이의 메모리 액세스 대기시간을 제거하거나 감소시키는 것이, 프로세서 성능을 향상시킬 수 있는 것을 인지한다. 이런 목적들을 위해, 발명의 실시예는 인터럽트 프로세싱을 위한 방법에 초점을 맞춘다. 아래에서 더 자세하게 다루어지는 것처럼, 명령의 실패한 실행에서 기인한 예외적인 조건은 프로세서 내의 명령 파이프라인의 하나 이상의 스테이지들에서 검출된다. 검출된 예외적 조건에 대응하고 검출된 예외적 조건에 대응한 인터럽트를 받아들이는 프로세서에 우선하여, 명령 캐시는 인터럽트 핸들러의 시작 어드레스에서의 명령의 존재에 대해 체크된다. 인터럽트 핸들러의 시작 어드레스에서의 명령은 명령 캐시 내에 명령을 로드하는 명령 캐시 내에 명령이 없는 때에 명령 캐시를 넘어선 저장 장치로부터 프리페치되고, 여기서 명령은 검출된 예외적 조건에 대응하여 명령을 프로세서가 받아들일 때까지 명령 캐시 내에서 이용 가능하다.
본 발명의 다른 실시예는 인터럽트 벡터 테이블을 활용한 인터럽트 프로세싱을 위한 방법에 초점을 맞춘다. 예외적 조건은 프로세서 내의 명령 파이프라인의 하나 이상의 단계들에서 검출된다. 검출된 예외적 조건에 대응하고 검출된 예외적 조건에 대응한 인터럽트를 받아들이는 프로세서에 우선하여, 명령 캐시는 인터럽트 벡터 테이블 내에 보유된 명령의 존재에 대해 체크된다. 명령은 명령 캐시 내에서 명령 및 벡터 테이블을 로드하기 위하여 명령 캐시 내에 명령이 존재하지 않을 때 명령 캐시를 넘어선 저장 장치로부터 프리페치된다. 검출된 예외적 조건과 연관된 인터럽트 핸들러의 브랜치 타깃 어드레스는 명령이 프로그램 카운터 관련 브랜치 명령임을 결정하는 단계와 관계하여 계산된다. 명령 캐시는 브랜치 타깃 어드레스에서의 인터럽트 핸들러 명령의 존재에 대해 체크된다. 브랜치 타깃 어드레스에서의 인터럽트 핸들러 명령은 명령 캐시 내에서 인터럽트 핸들러 명령을 로드하기 위해 명령 캐시 내에 인터럽트 핸들러 명령이 존재하지 않을 때 명령 캐시를 넘어선 저장 장치로부터 프리페치 되고, 여기서 명령은 프로세서가 검출된 예외적 조건에 대응한 인터럽트를 받아들일 때까지 명령 캐시 내에서 이용 가능하다.
본 발명의 다른 실시예는 인터럽트 프로세싱 로직을 구비하는 프로세서에 초점을 맞춘다. 예외 검출 로직 회로는 하나 이상의 예외적 조건들을 검출하기 위해 프로세서 파이프라인의 여러 단계들에서 활용된다. 우선순위부여 로직 회로는 하나 이상의 검출된 예외적 조건들로부터 선택된 가장 높은 우선순위 검출의 예외적 조건에 대한 미리 결정된 우선순위에 기초하여 예외 어드레스를 생성하는데 활용된다. 제 1 로직 회로는 선택된 예외적 조건에 대응하고 검출된 예외적 조건에 대응한 인터럽트를 받아들이는 프로세서에 우선하여 예외 벡터 어드레스에서의 명령의 존재에 대해 명령 캐시를 체크하기 위해 활용된다. 제 2 로직 회로는 명령 캐시 내에 명령을 로드하기 위하여 명령 캐시 내에 명령이 존재하지 않을 때 명령 캐시를 넘어선 저장 장치 내에 예외 벡터 어드레스에서의 명령을 프리페치하기 위해 활용되고, 여기서 명령은 프로세서가 검출된 예외적 조건에 대응한 인터럽트를 받아들일 때까지 명령 캐시 내에서 이용 가능하다.
본 발명의 다른 실시예들은 아래 상세한 설명으로부터 통상의 기술자에게 쉽게 명백하게 되고, 여기서 본 발명의 여러 실시예들은 예시로서 도시되고 기술된다. 이해될 것처럼, 본 발명은 다른 상이한 실시예들이 가능하고 이의 몇몇 세부사항들은 본 발명을 일탈함이 없이, 여러 다른 측면들에서의 변경이 가능하다. 따라서, 도면들과 상세한 설명은 본질적으로 제한적인 것이 아니라 예시적인 특성을 갖는 것으로 간주되어야 한다.
도 1은 무선 통신 시스템을 도시한다;
도 2는 독립적인 인터럽트 벡터 어드레스들을 이용하여 추론적 인터럽트 어드레스 프리페칭을 지원하는 메모리 집합체 및 예시적인 제1 프로세서의 제1 기능 블록 다이어그램이다;
도 3은 도 2의 제1 기능 블록 다이어그램에 기초한 추론적 인터럽트 프리페칭을 위한 제1 프로세스를 도시한 제1 흐름도이다;
도 4는 인터럽트 벡터 테이블로부터 발전된 인터럽트 어드레스들을 이용하여 추론적 인터럽트 어드레스 프리페칭을 지원하는 메모리 집합체 및 예시적인 제2 프로세서의 제2 기능 블록 다이어그램이다;
도 5는 도 4의 제2 기능 블록 다이어그램에 기초한 추론적 인터럽트 프리페칭을 위한 제2 프로세스를 도시한 제2 흐름도이다;
도 6은 예외적 조건들에서의 미리 결정된 우선순위들을 기초로 한 인터럽트 벡터 어드레스들을 생성하기 위해 적당하게 사용될 수 있는 예시적인 우선순위 예외 로직 회로를 도시한다.
첨부된 도면들과의 관련하여 제시되는 상세한 설명은 본 발명의 다양하고 예시적인 실시예들의 서술을 위한 것이고, 실행될 수 있는 본 발명의 유일한 실시예들의 서술을 위한 것이 아니다. 상세한 설명은 본 발명에 대해 완전한 이해를 제공하기 위한 목적을 위해 특정한 세부사항들을 포함한다. 그러나 본 발명이 이런 특정한 세부사항들 없이도 구현될 수 있는 것이 당업자들에게 명백할 것이다. 일부 예들에서 본 발명의 개념들이 애매해지는 것을 피하기 위해 잘 알려진 구조들이나 구성요소들이 블록 다이어그램 형태로 도시된다.
발명의 교시에 따른 동작들을 실행하거나 이에 따라 작동되어지기 위한 컴퓨터 프로그램 코드 또는 "프로그램 코드"는 C, C++, JAVA®, Smalltalk, JavaScript®, Visual Basic®, TSQL, Perl, 또는 다른 다양한 프로그래밍언어들과 같은 하이 레벨 프로그래밍 언어로 작성될 수 있다. 타깃 프로세서 아키텍처(target processor architecture)를 위한 프로그램들은 또한 바로 네이티브 어셈블러 언어(native assembler language)로 작성될 수 있다. 네이티브 어셈블러 프로그램은 기계 수준의 이진 명령들의 명령 연상 표현들을 사용한다. 여기에 쓰여진 프로그램 코드나 컴퓨터 판독가능 매체는 프로세서가 이해할수 있는 포맷을 가진 오브젝트 코드와 같은 기계 언어 코드를 말한다.
도 1은 본 발명의 실시예가 유리하게 사용될 수 있는 예시적인 무선 통신 시스템(100)을 도시한다. 설명의 목적들을 위해, 도 1은 3개의 원격 유닛들(120, 130, 및 150)과 2개의 기지국들(140)을 보인다. 일반 무선 통신 시스템들은 더 많은 원격 유닛들과 기지국들을 가질 수 있음이 인식될 것이다. 원격 유닛들(120, 130, 및 150)은 이하에서 추가로 논의될 것처럼 발명을 구현하기 위해 개조된 컴포넌트들(125A, 125B, 및 125C)로 대표되는 하드웨어 컴포넌트들, 소프트웨어 컴포넌트들, 또는 양자 모두를 포함한다. 도 1은 기지국들(140)로부터 원격 유닛들(120, 130, 및 150)로의 순방향 링크 신호들(180), 그리고 원격 유닛들(120, 130, 및 150)에서 기지국들(140)로 향하는 역방향 링크 신호들(190)을 보여주고 있다.
도 1에서 원격 유닛(120)은 모바일 전화기로 보여지고, 원격 유닛(130)은 휴대용 컴퓨터로 보여지고, 그리고 원격 유닛(150)은 무선 로컬 루프 시스템 내의 고정 위치 원격 유닛으로 보여진다. 예로서, 원격 유닛들은 대안으로 셀룰러 폰들, 휴대용 무선 호출기들, 무전기들, 포켓용 개인 통신 시스템(PCS) 유닛들, 개인 휴대용 정보 단말기들과 같은 휴대용 데이터 유닛들, 또는 미터 판독 설비와 같은 고정 위치 데이터 유닛들이 될 수 있다. 도 1이 본 개시내용의 교시들에 따라 원격 유닛들을 도시하지만, 본 개시내용은 이러한 예시적으로 도시된 유닛들에 한정되지 않는다. 발명의 실시예들은 아래에 더 세부적으로 논의될 레벨 1 캐시 및 레벨 2 캐시와 같은, 적어도 두 레벨들의 메모리 계층을 지닌 프로세서를 가진 임의의 장치에 적절히 이용될 수 있다.
캐시는 랜덤 액세스 메모리(RAM)에 연결된 콘텐츠 어드레스가능 메모리(CAM)를 포함할 수 있다. 캐시는 메모리 어드레스를 CAM에 저장된 어드레스들과 비교함으로써 액세스된다. 만약 메모리 어드레스가 CAM 어드레스와 매치(match)되면, 캐시는 "히트(hit)"를 표시하고 부가적으로 매치되는 CAM 어드레스에 대응하는 RAM 내의 장소로부터 명령들 또는 데이터 라인을 제공할 수 있다. 만약 메모리 어드레스가 CAM에 저장된 어떠한 어드레스와도 매치되지 않는다면, 캐시는 "미스(miss)"를 표시한다. 미스는 캐시 라인의 임의의 장소에 데이터 유닛 액세스 또는 명령을 일으킨다. 미스가 발생하면, 캐시 내의 라인은 일반적으로 미스된 명령 또는 데이터를 포함하는 새로운 라인으로 대체된다. 레벨 1 캐시의 미스는 일반적으로 레벨 1 캐시 액세스보다 많은 수의 프로세싱 사이클들을 요구하는 L2 캐시의 액세스를 유발한다. L2캐시의 미스는 더욱 큰 지연을 초래하는 시스템 메모리에의 액세스를 유발한다.
CAM 어드레스 비교의 사용을 통해 캐시 내에서 어드레스가 히트되는지 아닌지를 결정하는 프로세스는 상대적으로 전력 효율적이다. 그러나, 히트의 경우에 캐시 RAM으로부터 명령들 또는 데이터를 리트리브하는 것은 상대적으로 전력 비효율적이다. 따라서, 프로세서는 캐시 액세스 시에 명령들을 실제로 리트리브하는 전력 불이익을 초래함 없이 요구되는 명령들이 캐시에 저장되는지 아닌지를 확인하기 위해 명령 캐시 내에서 프리페치 동작을 이용한다. 여기서 사용된 "프리페치" 또는 "프리페치 동작"이라는 용어는 캐시로부터 명령들 또는 데이터를 리트리브하지 않고 히트나 미스를 생성하는 제한된 캐시 액세스를 말한다. 프리페치 동작은 일반적으로 캐시의 RAM의 내용들이 아닌 캐시의 CAM의 내용들에 액세스한다. 여기서 사용된 "페치" 또는 "페치 동작"이라는 용어는 히트 시에 캐시로부터 명령들 또는 데이터를 리트리브하고 히트 또는 미스를 생성하는 캐시 액세스를 포함하는 메모리 동작을 말한다. 페치 동작은 캐시의 CAM 및 캐시의 RAM에 액세스하고 액세스된 명령은 실행을 위한 것이다.
명령을 페치하는 것은 명령 스트림 프로세싱에 기초한 명령 캐시 RAM 어드레스 비교들을 처리하는 것을 수반한다. 예를 들어, 캐시 라인 내의 어느 장소에 위치한 명령 상에 미스가 발생하면, 캐시 라인이 페치되고, 다음 순차적인 캐시 라인이 프리페치될 것이다. 다음 캐시 라인을 언제나 프리페칭 하는 이 기술은 다음 캐시 라인이 직후에 필요한 명령들을 포함하고 있다는 가정에 기초한다. 그러나, 명령들의 순차적 액세스의 장소 원칙은 예를 들어 브랜치들, 콜들, 리턴들, 인터럽트들 등 때문에 물론 틀릴 수 있다. 일례로, 예외적 조건들 또는 외부 사건들 때문에 발생하는 인터럽트는 통상 명령 스트림 프로세싱을 멈추게 할 수 있고, 인터럽트를 야기한 사건에 대응하는 인터럽트 핸들러로 다시 방향을 바꾸게 할 수 있다. 인터럽트 벡터 테이블은 인터럽트 핸들러와 함께 인터럽트의 경우에 대응값을 구축하기 위해 사용될 수 있는 하나의 기술이다. 인터럽트 벡터 테이블이 캐시로부터 페치될 때, 언제나 다음 캐시 라인을 프리페칭하는 기존의 기술은 사용되지 않을 명령들을 페치하고 결과적으로 메모리 액세스 대역폭의 불필요한 손실과 전력 사용의 증가, 프로세서 성능의 감소를 야기한다.
페치 또는 프리페치 동작들에 부가하여 "추론적 인터럽트 프리페치" 동작 및 "실행 없는 추론적 인터럽트 페치(speculative interrupt fetch without execute)" 동작이 본 발명에 따른 명령 캐시 동작들에 대해 정의되어 진다. 추론적 인터럽트 프리페치는 "히트"표시의 경우에 명령 캐시로부터 명령들을 리트리브하지 않고 히트나 미스를 생성하는 제한된 캐시 액세스이다. 명령의 실패한 실행의 결과로 예외적인 조건이 검출된 것에 기초하여 명령은 추론적으로 프리페치 되어진다. 명령이 관련된 인터럽트를 취할 것이 확실해지기 보장하기 이전에 명령은 추론적으로 프리페치된다. 많은 경우에, 명령 캐시 라인 안에 상주하는 명령들과 같은 다수의 명령들이 추론적으로 프리페치될 수 있는 것은 있음이 인지되어야 한다. 본 발명에 따라 언제 추론적 인터럽트 프리페치 동작을 사용할지 결정하는 프로세스는 아래에서 더 상세하게 서술한다.
동작의 실행 없는 추론적 인터럽트 페치는 히트일 때 명령 캐시로부터, 미스일 때 높은-레벨 메모리로부터 명령을 리트리브하고, 히트 또는 미스를 생성하는 명령 캐시 액세스를 포함하는 메모리 동작이다. 명령은 추론적 페치 어드레스에서 명령의 유형을 결정하기 위해 검출된 예외적인 조건에 기초하여 추론적으로 페치되고, 그리고, 만약 명령이 PC-관련 브랜치로 결정되는 경우 프로그램 카운터로부터의 특정한 오프셋은 브랜치 타깃 어드레스로서 계산된다. 추론적으로 페치된 명령은 실행되지 않는다. 본 발명에 따라 동작 실행 없이 추론적 인터럽트 페치를 사용하는 때를 결정하는 프로세스는 아래에서 더 상세하게 서술될 것이다. 많은 경우에서 명령 캐시 라인 안에 상주하는 명령들과 같은 다수의 명령들이 실행 없이 추론적으로 페치될 수 있음이 인지되어야 한다.
도 2는 독립 인터럽트 벡터 어드레스들을 사용하여 추론적 인터럽트 어드레스 프리페칭을 지원하는 메모리 집합체(200) 및 전형적인 제 1 프로세서의 제1 기능 블록 다이어그램이다. 제 1 프로세서 및 메모리 집합체(200)는 인터럽트 로직 회로(202), 프리페치 로직 회로(204), 페치 로직 회로(206), 레벨 1 (L1) 명령 캐시(I-cache;208), 레벨 2 캐시(L2-cache;210), 디코드 로직 회로(212), 명령 큐(IQ;214), 및 실행 파이프라인 스테이지(stage) 로직 회로(216)을 포함한다.
프리페치 로직 회로 (204)는 멀티플렉서(218) 및 프리페치 어드레스 레지스터(220)를 포함한다. 페치 로직 회로(206)는 페치-1 스테이지(222), 페치-2 스테이지(223), 페치-3 스테이지(224)와 같은 많은 페치 스테이지들, 예외 페치 어드레스 레지스터(225)와 같은 관련 로직 회로, 멀티플렉서(226), 및 순차적 어드레스들을 계산하기 위해 사용되는 증분기(Incr;227)를 포함한다. L1 I-캐시(208)는 콘텐츠 어드레스가능 메모리(CAM) 유닛(207), 랜덤 액세스 메모리(RAM) 유닛(209), CAM 유닛(207)에 대한 페치 어드레스 인터페이스(228), H/M 신호(229)를 생성하기 위한 CAM 유닛(207) 내부의 히트 또는 미스(H/M) 로직 회로, 및 "히트" 일 때 명령들 또는 페치된 명령을 제공하는 RAM 유닛(209)에 연결된 명령 버스(230)를 포함한다. 페치-3 스테이지(224)는 프리페치 중단 신호와 같은 제1 예외적 조건(ExCond) A(231)를 생성할 수 있다. 명령 큐(IQ;214)는 명령들을 큐잉(queue)하고 이들을 실행 파이프라인에 분배하기 위해 사용되고 각각 정의되지 않은 명령 검출된 신호 및 데이터 중단 신호와 같은 예외적 조건들(ExConds) B 및 C(233 and 235) 를 생성할 수 있다.
페치 1 스테이지(222)는 명령 페치 동작 내의 제1 단계로서 페치 액세스 인터페이스(228)를 통해 L1 I-캐시(208)의 CAM 유닛(207)에 액세스하기 위해 사용된다. 페치 2 스테이지(223)는 명령 페치 동작 내의 제2 단계로서 L1 I-캐시(208)의 RAM 유닛(209)에 액세스하기 위해 사용된다. 페치 3 스테이지(224)는 "히트"일 때 L1 I-캐시(208)로부터 복귀되는 명령들의 라인으로서의 데이터를 분석하고 데이터를 개별적인 명령들로 분할하기 위해 사용된다. 또한 페치 3 스테이지(224)는 명령 페치 동작이 실패했는지 여부를 처리한다. 실패 및 실패의 유형을 검출할 시에, 페치 3 스테이지(224)는 L2-캐시(210)와 같은 L1 I-캐시(208)를 넘어선 높은 레벨들의 저장 장치(storage)에 요청들(requests)을 보낸다.
명령들은 디코드 로직 회로(212)에서 디코드되고 적당한 실행 파이프라인에 분배되기 위해 큐 로직 회로(214) 내에서 대기된다. 실행 파이프라인 스테이지 로직 회로(216)는 예를 들어, 산술 및 관련된 명령 동작들과 같은 파이프라인-A 동작들 및 메모리 액세스 및 관련된 명령 동작들과 같은 파이프라인-B 동작들로 구성된다. 특히, 랜덤 액세스 메모리(RAM) 파이프라인 A 스테이지(234)는 A 동작들에 의해서 액세스되는 일반 목적 레지스터 (GPR) 파일을 말한다. A 스테이지 실행 (Execute A stage;236)은 각각 파이프라인-A에 디스패치(dispatch)된 명령들을 실행하고 슈퍼바이저(supervisor) 콜 신호 및 모니터 콜 신호 각각과 같은 예외적 조건들(ExConds) E 및 F(237 및 239)를 생성할 수 있다. RAM 파이프라인 B 스테이지(238)는 B 동작들에 의해 GPR 파일 액세스들을 의미한다. B 스테이지 실행(Excute B stage;240)은 파이프라인-B에 디스패치된 명령들을 실행하고 데이터 정렬 중단 신호와 같은 예외적 조건(ExCond) D(241)을 생성할 수 있다. 만약 제1 명령이 제2 명령보다 파이프라인내에 더 깊은 곳에 있다면 일반적으로 제1 명령이 제2 명령보다 더 오래된 것이라고 생각되도록, 명령들은 예외적 조건이 검출되는 때에 이들의 프로세서 파이프라인 내에서의 상대적 위치에 의해 비교될 수 있다. 예를 들어, 이러한 비교에 영향을 미칠 수 있는 파이프라인 보유 상황들은 인터럽트 로직 회로(202)에 의해 설명된다.
인터럽트 로직 회로(202)는 이전의 명령들이 결함(fault) 없이 완료될 수 있는지 여부를 결정하기 위해 다양한 파이프라인 스테이지로부터 받는 예외적 조건들 (ExConds) A-F(243)를 포함한 이전의 명령들의 상태를 추적한다. 예를 들어, 그것이 예외를 포함하고 있다는 명령을 파이프라인 스테이지가 보고할 때, 파이프라인 스테이지는 파이프라인 플러쉬가 발생할 때까지 동작들을 유지할 수 있다. 인터럽트 로직 회로(202)는 예외들을 보고하고 있는 파이프라인 스테이지들을 검사한다. 파이프라인 이벤트들의 매트릭스 내부에서, 예외를 검출한 파이프라인 스테이지가 현재 매트릭스 내에 존재하는 임의의 오래된 커밋(commit)되지 않은 명령들의 부족에 의해 가장 오래된 커밋되지 않은 명령을 포함하고 있는지 여부가 결정된다. 기본적으로, 인터럽트 로직 회로(202)는 아래 도 6에서 더 상세하게 기술되는 것처럼 현존하는 예외적 조건들의 우선순위부여에 기초하여 추론적 프리페치 예외 어드레스(242)를 제공한다. 인터럽트 로직(202)은 또한 현존하는 예외적 조건들의 우선순위부여 및 파이프라인 정보의 조합에 기초하여 인터럽트 어드레스(245)를 예외 페치 어드레스 레지스터(225)에 제공한다.
제 1 프로세서 및 메모리 집합체(200)에 전형적으로 연결되어 있는 시스템 메모리 및 주변 장치들은 논의의 명확화를 위해 보여지지 않는다. 제 1 프로세서 및 메모리 집합체(200)는 예를 들어, 명령 캐시들(208 및 210)에 저장된 프로그램 코드를 실행하기 위한 구성요소들(125 A-C)과 같은 발명의 다양한 실시예들에 적절히 이용된다.
프로그램 코드를 실행할 때, 제 1 프로세서 및 메모리 집합체(200)는 예외적 조건들(231, 233, 235, 237, 239, 또는 241)과 같은 하나 이상의 예외적 조건들에 부딪힐 수 있다. 예외적 조건이 검출되면, 도 3과 관련하여 이하에 더 상세하게 기술되는 것처럼 예외적 조건들은 우선순위 부여되고 추론적 프리페치 예외 어드레스(242)가 생성되고 프리페치 동작의 실행에 사용된다. 예외 페치 어드레스 레지스터(225)의 내용들은 아래 블록(306)에 적힌 것처럼 인터럽트가 처리될 것이라는 결정이 이루어지는 시점이 도달될 때까지는 유효하지 않다. 일반적으로, 프리페치 동작들을 이용하는 메모리 집합체(200) 및 제 1 프로세서 안에는 다른 상황들이 있다. 도 2에서 입력(244)은 이런 상황들을 어드레스하기 위해 소프트웨어-기반 또는 하드웨어-기반일 수 있는 다른 프리페치 유형들을 위해 제공된다.
도 3은 도 2의 것과 같은 시스템을 사용하여 추론적 인터럽트 프리페칭을 위한 제1 프로세스(300)를 도시한 제1 흐름도이다. 제1 프로세스(300)는 메모리 집합체(200) 및 제 1 프로세서에서 검출된 예외적 조건과 함께 블록(302)에서 시작된다. 결정 블록(304)에서, 결함 없이 이전의 명령들이 완료될 수 있는지 여부에 대한 결정이 내려진다. 파이프라인의 길이 및 파이프라인 내의 명령들의 유형 때문에, 이런 결정에는 다수의 싸이클들(cycles)이 소요될 수 있고, 이 시간 동안 결정 블록(304)의 "아니오(NO)" 레그(leg)가 이어진다. 예를 들어, 로드 명령은 파이프라인 내에 있을 수 있고 지정된 로드를 위한 데이터를 페치하기 위한 동작은 레벨 1 데이터 캐시 내의 미스 및 L2-캐시(210) 내의 미스를 경험할 수 있고, 지정된 데이터를 리트리브하기 위해 시스템 메모리에 액세스해야 할 수 있다. 이러한 동작들의 시퀀스(sequence)는 완료되기 위해 수 백의 사이클들을 필요로 할 수 있다.
로드 명령은 위에서 언급한 것처럼 결함 없이 실행을 완료하거나 그 자체가 또 다른 예외를 발생되게 할 수 있다. 파이프라인 로직 회로는 이 예의 로드 명령이 블록(302)에서 내부의 예외적 조건 검출을 야기했던 명령보다 더 오래된 명령인지 여부를 결정한다. 만약 로드 명령이 더 오래된 명령이라면, 오래된 로드 명령은 플러쉬 되기 위해 내부적 예외를 야기하는 명령을 포함하는 파이프라인 내의 새로운 명령들을 야기한다. 결정 블록(305)에서, 만약 파이프라인 플러쉬 상황이 검출되지 않았다면, 제1 프로세스(300)는 결정 블록(304)으로 복귀한다. 결정 블록(305)에서, 만약 파이프라인 플러쉬가 검출되었다면, 제1 프로세스(300)는 블록(307)으로 진행된다. 블록(307)에서 파이프라인은 플러쉬되고 제1 프로세스 (300)는 프로그램 플로우로 복귀한다.
블록(306)에서는, 결정 블록(304)에서 조건의 긍정적(positive) 결정이 있은 후에, 프로세서 상태가 변화되고 인터럽트 핸들러의 어드레스가 페치되는 인터럽트가 처리를 위해 수락된다. 블록(308)에서, 인터럽트와 관련된 인터럽트 핸들러가 실행되고 인터럽트 핸들러의 완료에서, 제1 프로세스(300)는 통상의 프로그램 플로우로 복귀한다.
결정 블록(304)의 결정이 이루어지기를 기다리는 것보다, 동작들의 병렬 세트(set)는 블록(310)에서 유리하게 시작할 것이다. 블록(310)에서 인터럽트 핸들러의 추론적 프리페치는 검출된 예외적 조건들의 우선순위부여에 의해 시작된다. 블록(312)에서, 예외적 조건들 (231, 233, 235, 237, 237, 또는 241)중의 한 유형과 같은 예외적 조건의 유형에 기초하여, 인터럽트 벡터 어드레스는 멀티플렉서(218)에 의해 선택되고, 프리페치 어드레스 레지스터(220)로 로드되고, 추론적 페치 동작이 요구된다. 블록(314)에서 요청된 추론적 프리페치 동작은 멀티플렉서(226)에 의해 선택되고, 페치-1 스테이지(222) 동작은 오직 L1 I-캐시(208)의 CAM 부분(portion) 액세스에 의해 명령 페칭 없이 히트 또는 미스(miss) 표시 리턴을 시작하게 된다. 결정 블록(316)에서, "히트"를 갖는 페치-1 스테이지(222) 동작에 기초하여, 결정 블록(316)의 "네" 레그는 블록(318)으로 이어지며, 이는 인터럽트 벡터 어드레스의 명령이 L1 I-캐시(208)에 존재함을 표시한다. 만약 페치-1 스테이지(222)에서의 프리페치 동작이 미스를 리턴한다면, 결정 블록(316)은 L2 캐시 또는 시스템 메모리 같은 높은-레벨의 메모리로부터 인터럽트 벡터 어드레스에서 명령을 요청하기 위해 블록(320)으로 진행한다. 복귀되면, 요청된 명령을 포함하는 캐시 라인은 L1 I-캐시(208)에 쓰여진다. 다양한 예외적 조건들을 위한 인터럽트 벡터 어드레스들이 구조 정의(architecture definition)에 기초하거나 또는 소프트웨어에 의해 프로그램될 수 있는 고유의 주소들이라는 것이 인지되어야 한다. 인터럽트 벡터 어드레스에서의 명령이 L1 I-캐시(208)에 로드 되어지거나 프리페치 되어지는 것 이후에, 일반적으로 검출된 예외적 조건에 응답하여 인터럽트를 받아들이는 메모리 집합체(200) 및 제 1 프로세서 이전에, 제1 프로세스(300)는 블록(318)으로 진행한다. 블록(318)에서, 인터럽트 핸들러의 추론적 프리페치는 종료되고 제 1 프로세서 및 메모리 집합체(200)는 통상의 프로그램 플로우로 복귀한다.
도 4는 추론적 인터럽트 어드레스 프리페칭을 지원하는 예시적인 제 2 프로세서 및 메모리 집합체(400)의 제2 기능 블록 다이어그램이다. 이 접근 방법은 인터럽트 벡터 테이블안에 저장된 인터럽트 어드레스들을 사용한다. 제 2 프로세서 및 메모리 집합체(400)는 인터럽트 로직 회로(402), 프리페치 로직 회로(404), 페치 로직 회로(406), 명령 캐시(I-캐시; 408), 레벨 2 캐시(L2-캐시; 410), 디코드 로직 회로(412), 명령 큐(IQ; 414), 및 실행 파이프라인 스테이지 로직 회로(416)를 포함한다.
프리페치 로직 회로(404)는 가산기(adder; 417), 멀티플렉서(418), 브랜치 검출 및 오프셋 생성 로직 회로(419), 그리고 프리페치 어드레스 레지스터(420)를 포함한다. 페치 로직 회로(406)는 페치-1 스테이지(422), 페치-2 스테이지(423), 페치-3 스테이지(424)와 같은 수 많은 페치 스테이지들 및 예외 페치 어드레스 레지스터(425), 멀티플렉서(426), 및 증분기(Incr; 427)와 같은 관련된 로직 회로를 포함한다. I-캐시(408)는 페치 액세스 인터페이스(428), H/M 신호(429)를 발생시키기 위한 I-캐시 내부의 히트 또는 미스(H/M) 로직 회로, I-캐시 버스(430)에 "히트" 명령들 또는 페치된 명령을 제공하는 I-캐시 내부의 명령 페치 기능을 포함한다. 페치-3 스테이지(424)는 프리페치 중단 신호 같은 예외적 조건(ExCondA) 출력(431)을 생성할 수 있다. 명령 큐(IQ; 414)는 명령들을 대기시키고 이들을 실행 파이프라인에 분배하는데 이용되고 또한 각각, 정의되지 않은 명령 검출 신호 및 데이터 중단 신호와 같은 예외적 조건(ExConds) B 및 C 출력들(433 및 435)을 생성할 수 있다.
실행 파이프라인 스테이지 로직 회로(416)는 예를 들어, 산술 및 관련된 명령 동작들과 같은 파이프라인-A 동작들, 그리고 메모리 액세스 및 관련된 명령 동작들과 같은 파이프라인-B 동작들로 구성된다. 특히, 랜덤 액세스 메모리(RAM) 파이프라인-A 스테이지(434)는 A 동작들에 의해 일반 목적 레지스터(GPR) 파일 액세스들을 말한다. A 스테이지 실행(Excute A stage; 436)은 파이프라인-A에 디스패치된 명령들을 실행하고, 각각 슈퍼바이저 콜 신호 및 모니터 콜 신호와 같은 예외적 조건(ExConds) E 및 F 출력들(437 및 439)을 생성할 수 있다. RAM 파이프라인-B 스테이지(438)는 B 동작들에 의해 GPR 파일 액세스들을 말한다. B 스테이지 실행(Excute B stage; 440)은 파이프라인-B에 디스패치된 명령들을 실행하고 데이터 정렬 중단 신호와 같은 예외적 조건(ExCond) D 출력(441)을 생성할 수 있다. 인터럽트 로직 회로(202)와 비슷한 방식으로, 인터럽트 로직 회로(402)는 이전 명령들이 결함 없이 완료될 수 있는지 여부를 결정하기 위해 이전 명령들의 상태를 추적한다.
제 2 프로세서 및 메모리 집합체(400)에 연결되어 질 수 있는 시스템 메모리 및 주변 장치들은 논의 및 도해의 명확화를 위해 보여지지 않는다. 제 2 프로세서 및 메모리 집합체(400)는 예를 들어, 캐쉬들(408 및 410)과 같은 곳에 저장될 수 있는 프로그램 코드를 실행하기 위해 구성요소들(125A-C) 내의 발명의 다양한 실시예들로 적절히 이용될 수 있다.
프로그램 코드를 실행할 때, 프로세서 및 메모리 집합체(400)는 예외적 조건들(431, 433, 435, 437, 439, 또는 441)과 같은 하나 이상의 예외적 조건들에 부딪힐 수 있다. 예외적 조건이 검출된 때, 우선순위부여가 되고 본 발명에 따라, 도 5와 관련해 아래에서 더 상세하게 서술되는 것처럼 추론적 프리페치 예외 어드레스(442)가 프리페치 동작의 수행에 사용되기 위해 생성된다. 일반적으로, 성능을 향상시키기 위해 기대되는 캐시 라인의 프리페치를 트리거하는 소프트웨어를 통하는 것과 같이, 프리페치 동작들을 이용할 수 있는 제 2 프로세서 및 메모리 집합체(400) 안의 다른 상황들이 있다. 이러한 다른 상황들은 다른 프리페치 유형들(444)에 의해 표시된다.
도 5는 도 4의 제2 기능 블록 다이어그램에 기초하여 추론적 인터럽트 프리페칭을 위한 제2 프로세스(500)를 도시화하는 제2 흐름도이다. 제2 프로세스(500)는 블록(502)에서 시작하며, 여기서 예외적 조건이 제 2 프로세서 및 메모리 집합체(400) 내에서 검출된다. 결정 블록(504)에서, 이전의 명령들이 결함 없이 완료될 수 있는지 여부에 관한 결정이 이루어진다. 파이프라인의 길이 및 파이프라인 내의 명령들의 유형으로 인해, 이런 결정에는 다수의 싸이클들이 소요될 수 있고, 이 시간 동안 결정 블록(504)의 "아니오(NO)" 레그(leg)가 이어진다. 예를 들어, 특정 데이터를 리트리브하기 위해 시스템 메모리에 액세스 해야할 수 있고, 레벨 1 데이터 캐쉬(도시되지 않음) 내의 미스, L2-캐시(410) 내의 미스를 경험(experience)할 수 있는 특정한 로드를 위한 데이터를 페치하기 위해 로드 명령은 파이프라인 및 동작 내에 있을 수 있다. 동작들의 이런 시퀀스는 완료되기 위해 수 백의 사이클들을 요구할 수 있다. 블록(506)에서는 결정 블록(504)의 결정이 내려진 이후에, 인터럽트는 인터럽트 핸들러의 어드레스를 페칭하고 프로세서 상태를 변화시키는 것을 포함하는 프로세싱을 위해 받아들여진다. 블록(508)에서, 인터럽트와 연관된 인터럽트 핸들러가 실행되고 인터럽트 핸들러의 완료시에, 제2 프로세스(500)는 통상의 프로그램 플로우로 복귀한다.
결정 블록(504)의 결정이 이루어지기를 기다리는 것보다, 동작들의 병렬 세트는 블록(510)에서 유리하게 시작된다. 블록(510)에서, 인터럽트 핸들러의 추론적 프리페치는 벡터 테이블의 추론적 프리페치 및 예외적 조건들의 우선순위부여와 함께 시작한다. 블록(512)에서, 예외적 조건들(431, 433, 435, 437, 439, 또는 441)과 같은 예외적 조건의 유형에 기초하여, 인터럽트 벡터 테이블 어드레스가 멀티플렉서(418)에 의해 선택되고, 프리페치 어드레스 레지스터(420)에 로드되며, 동작의 실행 없는 페치가 요구된다. 예를 들어, 페치 명령 동작은 I-캐시(408) RAM으로부터 판독되기 위한 명령들 또는 명령을 야기하는 것을 발생시키기 위한 페치 2 스테이지(423) 동작 및 페치 1 스테이지(422) 동작을 포함한다. 그런 다음 특정 페치된 명령은 실행 동작들을 시작하기 위해 디코드 스테이지(412)로 넘겨지게 된다. 동작의 실행 없는 페치는 I-캐시(408) RAM으로부터의 명령들 또는 명령을 판독하는 것을 발생시키기 위해 페치 2 스테이지(423) 동작 및 페치 1 스테이지(422) 동작으로 구성된다. 그러나, 실행 사례(case)없는 이 페치 내에서, 특정 페치된 명령은 디코드 스테이지(412)로 넘겨질 수 없다. 오히려, 특정 페치된 명령은 그것이 PC-관련 브랜치 명령인지 결정하기 위해 검사된다. 이런 파이프라인 동작들은 예를 들어, 페치 동작, 프리페치 동작, 또는 동작 속성들의 실행 없는 페치와 같은 것을 표시하는 페치 동작들의 속성들을 추적함으로써 조절될 수 있다.
블록(514)에서, 동작의 실행 없이 요청된 페치는 멀티플렉서(426)에 의해 선택되고 페치-1 스테이지(422)동작은 "히트" 또는 "미스" 표시를 리턴하기 시작한다. 결정 블록(516)에서 "히트"를 갖는 페치-1 스테이지(422) 동작에 기초하여, 결정 블록(516)의 "네" 레그가 인터럽트 벡터 테이블이 I-캐시(408) 내에 있다는 것을 표시하고 예외적 조건과 연관된 어드레스에서의 명령을 리턴하는 결정 블록(518)으로 이어진다. 블록(514)에서 수행된 페치 동작은 페치된 명령의 유형을 결정하기 위해 사용된 동작의 실행 없는 유리한 페치이다. 만약 페치-1 스테이지(422)에서 동작의 실행 없는 페치가 미스를 리턴한다면, 결정 블록(516)은 예들 들어 L2-캐시(410)와 같은 높은 레벨 메모리로부터 인터럽트 벡터 테이블의 내용들을 요청하기 위해 블록(520)으로 진행한다. 인터럽트 벡터 테이블의 액세스 동안, 테이블 내에 명령들 또한, 예외적 조건과 연관된 벡터 어드레스에서의 명령을 포함하여 얻어진다. 특정한 예외 유형과 연관된 인터럽트 벡터 테이블내에 어드레스에서의 명령은 일반적으로 PC-관련 브랜치 명령이다. PC-관련 브랜치 명령의 사용은 프로세서 구조에 의해 특정된 한계들(limits) 내에서 메모리 집합체(400) 및 제 2 프로세서의 메모리 공간 내의 어떤 장소에 위치되기 위하여 예외적 조건과 연관된 인터럽트 핸들러를 허용한다. 벡터 어드레스에서의 명령이 실행 없이 추론적으로 페치되고 I-캐시(408)로 로드된 후에, 제2 프로세스(500)는 결정 블록(518)으로 진행한다.
결정 블록(518)에서, 예외 조건과 연관된 어드레스에서의 명령이 프로그램 카운터(PC) 관련 브랜치 명령인지 여부를 결정하기 위해 체크된다. 이러한 결정은 브랜치 검출 및 오프셋 생성 블록(419) 내에서 이루어진다. 만약 명령이 PC-관련 브랜치 명령이 아니라면, 제2 프로세스(500)는 블록(532)으로 진행한다. 블록(532)에서, 인터럽트 핸들러의 추론적 프리페치는 종료되고 제 2 프로세서 및 메모리 집합체(400)는 통상의 프로그램 플로우로 복귀된다.
결정 블록(518)으로 돌아가서, 만약 명령이 PC-관련 브랜치 명령이라면, 제2 프로세스(500)는 블록(522)으로 진행된다. 블록(522)에서, 브랜치 타깃 어드레스는 멀티플렉서(418)를 위해 브랜치 타깃 어드레스를 생성하는 가산기(417) 내의 추론적 프리페치 예외 어드레스(442)에 어드레스 오프셋 값(421)을 더하여 계산된다. 가산기(417)가 이런 가산적 목적을 위해 사용될 수 있는 기존 가산기일 수 있고, 이에 의해 본 발명을 구현하기 위한 하드웨어 요구사항들을 최소화할 수 있음이 인지되어야 한다. 블록(524)에서 멀티플렉서(418)는 프리페치 어드레스 레지스터(420)에 로드되어지기 위해 가산기 출력을 선택한다. 블록(526)에서, 브랜치 타깃 어드레스에서 명령의 추론적 프리페치는 페치-1 동작(422) 내에서 선택된다. 결정 블록(528)에서, 브랜치 타깃 어드레스에서의 명령이 I-캐시(408) 내에 존재하는지 여부의 결정이 이루어진다. 만약, 명령이 페치됨이 없이, 추론적 프리페치 동작이 히트 표시를 리턴한다면, 명령이 브랜치 타깃 어드레스에 존재한다는 결정은 긍정이며 이는, 예외 조건과 연관된 인터럽트 핸들러의 적어도 제1 명령이 I-캐시(408)에 있음을 나타낸다. 인터럽트 핸들러의 추론적 프리페치를 종료하기 위해, 일반적으로 검출된 예외적 조건에 대응한 인터럽트를 받아들이는 메모리 집합체(400) 및 제2 프로세서 이전에, 제2 프로세스(500)는 블록(532)으로 진행한다.
결정 블록(528)으로 돌아가서, 만약 추론적 프리페치 동작이 미스 표시를 리턴한다면, 결정은 브랜치 타깃 어드레스에서의 명령이 I-캐시(408) 내에 존재하지 않는다는 것을 가리킨다. 블록(530)에서, 브랜치 타깃 어드레스에서 명령은 L2 캐시 또는 시스템 메모리와 같은 높은-레벨 메모리로부터 요청된다. 브랜치 타깃 어드레스에서의 명령을 포함하는 캐시 라인이 I-캐시(408)에 로드되어지면, 제2 프로세스(500)는 인터럽트 핸들러의 추론적 프리페치를 종료하기 위해 블록(532)으로 진행한다.
도 6은 예외적 조건들의 미리 결정된 우선순위들에 기초하여 인터럽트 벡터 어드레스들을 생성하기 위해 적절히 사용될 수 있는 전형적인 우선순위 예외 로직 회로(600)를 도시한다. 예를 들어, 예외적 조건들 A-F는 예외적 조건 F가 가장 높은 우선순위로 우선순위부여 되고, F,E,D,C,B로 우선순위 순서가 되고, 예외적 조건 A가 가장 낮은 우선순위가 된다. 우선순위 예외 로직 회로(600)는 각각 선택 표시들(612-616)에 응답하는, 멀티플렉서들(602-606)에 의해 도시되는 선택기들(selectors)의 세트를 포함한다. 각 예외적 조건과 연관된 어드레스들은 각각, 제1 프로세서 및 메모리 집합체(200) 또는 제2 프로세서 및 메모리 집합체(400) 중 하나와 같은 프로세서 및 메모리 집합체에 의해 제공되고 프로세서 구조에 의해 미리 결정된다. 예를 들어, 각각 프로세서 구조에 의해 식별되는 특수 목적 레지스터들이 될 수 있는 저장 셀들(cells; 620-625) 내에, 예외적 조건들(A-F)과 연관된 어드레스들이 저장된다. 예외적 조건들의 미리 결정된 우선순위들에 기초하여 인터럽트 벡터 어드레스는 저장 셀(630)에 저장된다.
선택 표시들(selection indications; 612-616)은 프로세서 및 메모리 집합체 내부의 검출 로직 회로에 의해 세팅된다. 예를 들어, 예외적 조건 F가 검출되면, 선택 표시(612)가 인에이블(enabled)된다. 만약 예외적 조건 F가 존재하면, 저장 셀(625)로부터 멀티플렉서들(602 및 603)을 통하여 예외 어드레스 저장 셀(630)로 예외적 조건 F 와 연관된 어드레스를 전달하는 예외적 조건 E 또는 F 존재 선택 표시(613)가 또한 인에이블될 것이다. 만약 예외적 조건 F가 존재하지 않는다면, 저장 셀(624)로부터의 예외적 조건 E와 연관된 주소가 멀티플렉서(602)에 의해 선택된다. 만약 예외적 조건 E가 검출되면, 저장 셀(624)로부터 멀티플렉서들(602 및 603)을 통하여 예외 어드레스 저장 셀(630)로 예외적 조건 E와 연관된 어드레스를 전달하는 예외적 조건 E 또는 F 존재 표시(613)가 인에이블될 것이다.
만약 예외적 조건들 E 또는 F중 어떠한 것도 검출되지 않았다면, 다음 우선순위 예외적 조건들이 결정될 수 있다. 예를 들어, 예외적 조건 A 및 C가 검출되었으나, 예외적 조건 B, D, E, 또는 F가 검출되지 않았다면, 저장 셀(622)로부터의 예외적 조건 C의 어드레스가 멀티플렉서들(604, 605, 606 및 603)을 통해 예외 어드레스 저장 셀(630)로 통과하도록 허용하는 선택 표시 C 존재(614) 및 선택 표시 B 또는 C 존재(615)가 인에이블될 것이다. 예외적 조건이 예외 인터럽트에 의해 조절되어지면, 예외적 조건을 위한 선택 신호가 디스에이블(disable)된다는 것이 인지되어야 한다. 계류중일 수 있는 모든 더 낮은 우선순위 예외 조건들은 예외 인터럽트와 관련한 파이프라인 플러쉬로 인해 제거된다. 예외적 조건들은, 만약 예외적 조건들과 연관된 명령들이 파이프라인을 거꾸로 흐른다면 다시 검출될 수 있다. 이러한 상황에서, 어떠한 예외적 검출도 새로운 검출 상황으로 간주될 것이다.
본원에 개시된 실시예들과 관련하여 기재된 다양한 예시적인 로직 블록들, 모듈들,회로들 및 엘리먼트들 및/또는 컴포넌트들은 범용 프로세서, 디지털 신호 처리기(DSP), 주문형 집적회로(ASIC), 필드 프로그램 가능한 게이트 어레이(FPGA), 또는 다른 프로그램 가능한 로직 컴포넌트들, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본원에 기재된 기능들을 실행하도록 설계된 전술한 것들의 조합을 통해 구현 또는 수행될 수 있다. 범용 프로세서는 마이크로 프로세서 일 수 있지만, 대안으로, 이러한 프로세서는 임의의 기존 프로세서, 제어기, 마이크로 제어기, 또는 상태 머신일 수 있다. 프로세서는 예를 들어, DSP 및 마이크로프로세서, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로 프로세서들, 또는 원하는 애플리케이션에 적합한 임의의 다른 이러한 구성의 조합과 같이 컴퓨팅 컴포넌트들의 조합으로서 구현될 수 있다.
본원에 개시된 실시예들과 관련하여 기재된 방법은 하드웨어에서, 프로세서에 의해 실행되는 소프트웨어 모듈에서, 또는 이들의 조합에서 직접 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드디스크, 휴대용 디스크, CD-ROM, 또는 당업계에서 공지된 저장 매체의 임의의 다른 형태로서 존재한다. 저장매체는 프로세서와 결합되어, 프로세서는 저장매체로부터 정보를 판독하고 저장매체에 정보를 기록할 수 있다. 대안적으로, 저장 매체는 프로세서에 내장될 수 있다.
발명이 계층적 메모리 환경에서의 명령 캐시를 위한 설명적인 실시예들의 맥락에서 개시되지만, 폭넓은 실시예들이 상기 논의 및 아래 청구범위와 일치하여 당업자에 의해 구현될 수 있음이 인식될 것이다.

Claims (22)

  1. 인터럽트 프로세싱을 위한 방법으로서,
    프로세서에서 명령 파이프라인의 하나 이상의 스테이지들에서의 명령의 실패한 실행으로부터 발생하는 예외적인 조건을 검출하는 단계;
    상기 프로세서가 상기 검출된 예외적 조건에 응답하여 인터럽트를 수락하기 이전에, 상기 검출된 예외적 조건에 응답하여 인터럽트 핸들러의 시작 어드레스에서의 명령의 존재에 대해 명령 캐시를 체크하는 단계; 및
    상기 명령 캐시에서 상기 명령을 로드하기 위해 상기 명령 캐시 내에 상기 명령이 존재하지 않을 때 상기 명령 캐시 이외의 다른 저장 장치(storage)로부터 상기 인터럽트 핸들러의 상기 시작 어드레스에서 상기 명령을 프리페치하는 단계 ―이에 의해, 상기 명령은 상기 프로세서가 상기 검출된 예외적 조건에 응답하여 상기 인터럽트를 수락할 때까지 상기 명령 캐시 내에서 이용 가능하게 됨―
    를 포함하는,
    인터럽트 프로세싱을 위한 방법.
  2. 제 1 항에 있어서,
    다른 명령이 결함 표시 없이 완료될 수 있는지 여부를 결정하기 위해 상기 명령 파이프라인 내에서 처리되고 있는 또 하나의 명령을 동시에 평가하는 단계
    를 더 포함하고,
    상기 다른 명령은 상기 예외적 조건이 검출된 상기 명령보다 오래된 명령인,
    인터럽트 프로세싱을 위한 방법.
  3. 제 2 항에 있어서,
    상기 오래된 명령이 결함 표시 없이 완료될 수 있다고 결정할 때, 상기 예외적 조건에 응답하여 상기 인터럽트를 처리하는 단계 ―이에 의해, 상기 인터럽트 핸들러가 실행되고 상기 프로세서는 통상의 프로그램 플로우로 복귀함―
    를 더 포함하는
    인터럽트 프로세싱을 위한 방법.
  4. 제 2 항에 있어서,
    상기 오래된 명령이 결함 표시 없이 완료될 수 없다고 결정할 때, 상기 체크하는 단계 및 프리페치하는 단계를 종료하는 단계
    를 더 포함하는,
    인터럽트 프로세싱을 위한 방법.
  5. 제 1 항에 있어서,
    다수의 검출된 예외적 조건 중 상기 예외적 조건에 우선순위를 부여하는 단계; 및
    상기 우선순위 부여된 예외적 조건과 연관된 상기 인터럽트 핸들러의 상기 시작 어드레스인 인터럽트 벡터 어드레스를 보유하는 있는 특수 목적 레지스터(special purpose register)를 선택하는 단계
    를 더 포함하는,
    인터럽트 프로세싱을 위한 방법.
  6. 제 5 항에 있어서,
    프리페치 어드레스 레지스터 내의 상기 선택된 특수 목적 레지스터로부터 상기 인터럽트 벡터 어드레스를 저장하는 단계; 및
    상기 프리페치 어드레스 레지스터 내에 저장된 상기 어드레스에서 상기 명령을 프리페치하는 단계
    를 더 포함하는,
    인터럽트 프로세싱을 위한 방법.
  7. 제 1 항에 있어서,
    명령 캐시에서 인터럽트 핸들러의 시작 어드레스에서의 명령의 존재에 대해 체크하는 단계는,
    상기 시작 어드레스에서 상기 명령 캐시의 콘텐츠 어드레스가능(content addressable) 메모리 부분을 판독하는 단계; 및
    상기 명령 캐시의 랜덤 액세스 메모리 부분을 판독하지 않고 상기 명령 캐시내의 상기 명령의 존재하는지 부존재하는지에 대한 표시를 생성하는 단계
    를 포함하는,
    인터럽트 프로세싱을 위한 방법.
  8. 인터럽트 벡터 테이블을 이용하여 인터럽트 프로세싱을 하는 방법으로서,
    프로세서의 명령 파이프라인의 하나 이상의 스테이지들에서 예외적 조건을 검출하는 단계;
    상기 프로세서가 상기 검출된 예외적 조건에 응답하여 인터럽트를 수락하기 이전에 상기 검출된 예외적 조건에 응답하여 인터럽트 벡터 테이블내에 보유된 명령의 존재에 대해 명령 캐시를 체크하는 단계; 및
    상기 명령 캐시에서 상기 벡터 테이블 및 상기 명령을 로드하기 위해 상기 명령 캐시 내에 상기 명령이 존재하지 않을 때 상기 명령 캐시 이외의 저장 장치로부터 상기 명령을 프리페치하는 단계
    를 포함하는,
    인터럽트 프로세싱을 위한 방법.
  9. 제 8 항에 있어서,
    상기 명령이 프로그램 카운터 관련 브랜치 명령으로 결정될 시에 상기 검출된 예외적 조건과 연관된 인터럽트 핸들러의 브랜치 타깃 어드레스를 계산하는 단계;
    상기 브랜치 타깃 어드레스에서 인터럽트 핸들러 명령의 존재에 대해 상기 명령 캐시를 체크하는 단계; 및
    상기 명령 캐시에서 상기 인터럽트 핸들러 명령을 로드하기 위해 상기 명령 캐시 내에 상기 인터럽트 핸들러 명령이 존재하지 않을 때 상기 명령 캐시를 넘어선 저장 장치로부터의 상기 브랜치 타깃 어드레스에서 상기 인터럽트 핸들러 명령을 프리페치하는 단계 ―이에 의해, 상기 명령은 상기 프로세서가 상기 검출된 예외적 조건에 응답하여 상기 인터럽트를 수락할 때까지 상기 명령 캐시 내에서 이용가능하게 됨―
    를 더 포함하는,
    인터럽트 프로세싱을 위한 방법.
  10. 제 8 항에 있어서,
    또 하나의(another) 명령이 결함 표시 없이 완료될 수 있는지 여부를 결정하기 위해 상기 명령 파이프라인 내에서 처리되고 있는 다른 명령들을 동시에 평가하는 단계
    를 더 포함하고,
    상기 다른 명령은 상기 예외적 조건이 검출된 상기 명령보다 더 오래된 명령인,
    인터럽트 프로세싱을 위한 방법.
  11. 제 10 항에 있어서,
    상기 오래된 명령이 결함 표시 없이 완료될 수 있다고 결정할 때, 상기 예외적 조건에 응답하여 상기 인터럽트를 처리하는 단계 ―이에 의해, 상기 인터럽트 핸들러가 실행되고 상기 프로세서는 통상의 프로그램 플로우로 복귀함―
    를 더 포함하는,
    인터럽트 프로세싱을 위한 방법.
  12. 제 10 항에 있어서,
    상기 오래된 명령이 결함 표시 없이 완료될 수 없다고 결정할 때, 상기 인터럽트 핸들러 명령이 상기 명령 캐시 내에 존재함을 보장하기 위해 상기 단계들을 종료하는 단계
    를 더 포함하는,
    인터럽트 프로세싱을 위한 방법.
  13. 제 8 항에 있어서,
    다수의 검출된 예외적 조건들 중 상기 예외적 조건에 우선순위를 부여하는 단계; 및
    상기 우선순위 부여된 예외적 조건과 연관된 프로그램 카운터 관련 브랜치 명령의 어드레스인 인터럽트 벡터 테이블 어드레스를 보유하는 특수 목적 레지스터를 선택하는 단계
    를 더 포함하는,
    인터럽트 프로세싱을 위한 방법.
  14. 제 13 항에 있어서,
    상기 명령은 프로그램 카운터(PC) 관련 브랜치 명령인,
    인터럽트 프로세싱을 위한 방법.
  15. 제 8 항에 있어서,
    상기 명령의 실행 없이 상기 명령이 상기 명령 캐시 내에 존재할 때 상기 명령 캐시 내의 상기 명령을 페치하는 단계
    를 더 포함하는,
    인터럽트 프로세싱을 위한 방법.
  16. 인터럽트 프로세싱 로직을 포함하는 프로세서로서,
    하나 이상의 예외적 조건들을 검출하도록 프로세서 파이프라인의 다양한 스테이지들에서 동작가능한 예외 검출 로직 회로;
    하나 이상의 검출된 예외적 조건들로부터 선택된 가장 높은 우선순위의 검출된 예외적 조건을 위해 미리 결정된 우선순위에 기초하여 예외 벡터 어드레스를 생성하도록 동작가능한 우선순위부여 로직 회로;
    상기 프로세서가 상기 검출된 예외적 조건에 응답하여 인터럽트를 수락하기 이전에 상기 선택된 예외적 조건에 응답하여 상기 예외 벡터 어드레스에서의 명령의 존재에 대해 명령 캐시를 체크하도록 동작가능한 제1 로직 회로; 및
    상기 명령 캐시에서 상기 명령을 로드하기 위해 상기 명령 캐시 내에 상기 명령이 존재하지 않을 때 상기 명령 캐시를 넘어선 저장 장치 내의 상기 예외 벡터 어드레스에서 상기 명령을 프리페치하도록 동작가능한 제2 로직 회로 ―이에 의해, 상기 프로세서가 상기 검출된 예외적 조건에 응답하여 상기 인터럽트를 수락할 때까지 상기 명령 캐시 내에서 상기 명령이 이용 가능함―
    를 포함하는,
    인터럽트 프로세싱 로직을 포함하는 프로세서.
  17. 제 16 항에 있어서,
    상기 예외 어드레스에서의 상기 명령은 상기 가장 높은 우선순위의 검출된 예외적 조건과 연관된 인터럽트 핸들러의 시작 어드레스인,
    인터럽트 프로세싱 로직을 포함하는 프로세서.
  18. 제 16 항에 있어서,
    상기 예외 어드레스에서의 상기 명령은 상기 가장 높은 우선순위의 검출된 예외적 조건과 연관된 인터럽트 벡터 테이블내에 보유되는 명령인,
    인터럽트 프로세싱 로직을 포함하는 프로세서.
  19. 제 18 항에 있어서,
    상기 명령이 프로그램 카운터(PC) 관련 브랜치 명령이라고 결정할 때 상기 가장 높은 우선순위의 검출된 예외적 조건과 연관된 인터럽트 핸들러의 브랜치 타깃 어드레스를 계산하기 위한 제3 로직 회로;
    상기 브랜치 타깃 어드레스에서 인터럽트 핸들러 명령의 상기 존재에 대해 상기 명령 캐시를 체크하기 위한 제4 로직 회로; 및
    상기 명령 캐시에서 상기 인터럽트 핸들러 명령을 로드하기 위해 상기 명령 캐시 내에 상기 인터럽트 핸들러 명령이 존재하지 않을 때 상기 명령 캐시를 넘어선 저장 장치 내의 상기 브랜치 타깃 어드레스에서 상기 인터럽트 핸들러 명령을 프리페치하기 위한 제5 로직 회로
    를 더 포함하는
    인터럽트 프로세싱 로직을 포함하는 프로세서.
  20. 제 19 항에 있어서,
    상기 제3 로직 회로는,
    어드레스 오프셋을 생성하고 상기 명령이 PC-관련 브랜치 명령인지를 결정하기 위한 로직 회로를 갖는 브랜치 검출 및 오프셋 생성기(offset generator); 및
    상기 어드레스 오프셋을 사용하여 브랜치 타깃 어드레스를 생성하기 위한 가산기
    를 포함하는
    인터럽트 프로세싱 로직을 포함하는 프로세서.
  21. 제 16 항에 있어서,
    명령 캐시를 더 포함하고,
    상기 명령 캐시는,
    다수의 프로그램 명령들을 보유하기 위한 랜덤 액세스 메모리(RAM) 부분; 및
    상기 프로그램 명령들과 연관된 어드레스들을 보유하기 위한 콘텐츠 어드레스가능 메모리(CAM) 부분 ―상기 CAM 부분은 상기 명령 캐시의 상기 RAM 부분을 판독하지 않고 상기 어드레스와 연관된 명령이 상기 명령 캐시의 상기 RAM 부분 내에 존재하는지 부존재 하는지에 대한 표시를 생성하기 위해 어드레스와 함께 액세스 될 수 있음―
    을 포함하는,
    인터럽트 프로세싱 로직을 포함하는 프로세서.
  22. 제 16 항에 있어서,
    결함 표시 없이 또 하나의 명령이 완료될 수 있는지 여부를 결정하기 위해 상기 명령 파이프라인 내에서 처리되고 있는 다른 명령들을 동시에 평가하기 위한 인터럽트 로직 회로
    를 더 포함하고,
    상기 다른 명령은 상기 예외적 조건이 검출된 상기 명령보다 더 오래된 명령인,
    인터럽트 프로세싱 로직을 포함하는 프로세서.
KR1020117005358A 2008-08-08 2009-07-29 추론적 인터럽트 벡터 프리페칭 장치 및 방법 KR101284097B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/188,626 US8291202B2 (en) 2008-08-08 2008-08-08 Apparatus and methods for speculative interrupt vector prefetching
US12/188,626 2008-08-08
PCT/US2009/052118 WO2010017077A2 (en) 2008-08-08 2009-07-29 Apparatus and methods for speculative interrupt vector prefetching

Publications (2)

Publication Number Publication Date
KR20110051233A true KR20110051233A (ko) 2011-05-17
KR101284097B1 KR101284097B1 (ko) 2013-07-15

Family

ID=41653950

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117005358A KR101284097B1 (ko) 2008-08-08 2009-07-29 추론적 인터럽트 벡터 프리페칭 장치 및 방법

Country Status (7)

Country Link
US (1) US8291202B2 (ko)
EP (1) EP2327013A2 (ko)
JP (1) JP5323936B2 (ko)
KR (1) KR101284097B1 (ko)
CN (1) CN102112966B (ko)
TW (1) TW201017531A (ko)
WO (1) WO2010017077A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150024927A (ko) * 2012-06-27 2015-03-09 노르딕 세미컨덕터 에이에스에이 집적 회로 무선
KR20160065145A (ko) * 2013-10-09 2016-06-08 에이알엠 리미티드 데이터 처리장치 및 추론 벡터 연산의 수행 제어방법

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9569363B2 (en) 2009-03-30 2017-02-14 Via Technologies, Inc. Selective prefetching of physically sequential cache line to cache line that includes loaded page table entry
US8161246B2 (en) * 2009-03-30 2012-04-17 Via Technologies, Inc. Prefetching of next physically sequential cache line after cache line that includes loaded page table entry
US8392644B2 (en) * 2010-07-30 2013-03-05 Mips Technologies, Inc. System and method for automatic hardware interrupt handling
KR20130045894A (ko) * 2010-12-14 2013-05-06 미쓰비시덴키 가부시키가이샤 인터럽트 요인 관리 장치 및 인터럽트 처리 시스템
US8972642B2 (en) * 2011-10-04 2015-03-03 Qualcomm Incorporated Low latency two-level interrupt controller interface to multi-threaded processor
WO2013095532A1 (en) 2011-12-22 2013-06-27 Intel Corporation Interrupt return instruction with embedded interrupt service functionality
WO2013095608A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method for vectorization with speculation support
US10019390B2 (en) * 2012-03-30 2018-07-10 Intel Corporation Using memory cache for a race free interrupt scheme without the use of “read clear” registers
GB2513042B (en) * 2013-01-15 2015-09-30 Imagination Tech Ltd Improved control of pre-fetch traffic
US9330011B2 (en) * 2013-09-20 2016-05-03 Via Alliance Semiconductor Co., Ltd. Microprocessor with integrated NOP slide detector
GB2522477B (en) * 2014-01-28 2020-06-17 Advanced Risc Mach Ltd Speculative interrupt signalling
GB2535514B (en) * 2015-02-19 2021-09-22 Advanced Risc Mach Ltd Processor exception handling
DE102015211458A1 (de) * 2015-06-22 2016-12-22 Robert Bosch Gmbh Verfahren und Vorrichtung zum Absichern einer Programmzählerstruktur eines Prozessorsystems und zum Überwachen der Behandlung einer Unterbrechungsanfrage
CN105183541B (zh) * 2015-08-10 2019-07-12 上海斐讯数据通信技术有限公司 一种中断响应方法及系统
GB2543302B (en) * 2015-10-14 2018-03-21 Advanced Risc Mach Ltd Vector load instruction
US11188336B2 (en) * 2015-12-28 2021-11-30 Qualcomm Incorporated Replay of partially executed instruction blocks in a processor-based system employing a block-atomic execution model
CN105893165B (zh) * 2016-03-29 2020-01-14 杭州和利时自动化有限公司 一种指令cache的故障诊断方法及系统
US9570134B1 (en) 2016-03-31 2017-02-14 Altera Corporation Reducing transactional latency in address decoding
US10095637B2 (en) * 2016-09-15 2018-10-09 Advanced Micro Devices, Inc. Speculative retirement of post-lock instructions
US10120819B2 (en) 2017-03-20 2018-11-06 Nxp Usa, Inc. System and method for cache memory line fill using interrupt indication
US10360374B2 (en) * 2017-05-25 2019-07-23 Intel Corporation Techniques for control flow protection
US11650753B2 (en) * 2021-07-27 2023-05-16 Beijing Tenafe Electronic Technology Co., Ltd. Firmware-controlled and table-based conditioning for synchronous handling of exception cases
CN113568349B (zh) * 2021-07-27 2023-05-02 深圳市轱辘车联数据技术有限公司 数据处理方法、装置、终端设备及可读存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09101892A (ja) * 1995-10-06 1997-04-15 Denso Corp 情報処理装置及び例外処理用シーケンサ
JP2929980B2 (ja) * 1995-10-06 1999-08-03 株式会社デンソー 情報処理装置
US5938762A (en) 1995-10-06 1999-08-17 Denso Corporation Method and apparatus for performing exception processing routine in pipeline processing
US6192466B1 (en) 1999-01-21 2001-02-20 International Business Machines Corporation Pipeline control for high-frequency pipelined designs
JP2000242507A (ja) * 1999-02-23 2000-09-08 Matsushita Electric Ind Co Ltd プロセッサ
JP2000347931A (ja) * 1999-06-03 2000-12-15 Matsushita Electric Ind Co Ltd キャッシュメモリおよびキャッシュメモリ制御方法
JP2001056781A (ja) * 1999-08-19 2001-02-27 Sharp Corp 情報処理装置
US6487653B1 (en) 1999-08-25 2002-11-26 Advanced Micro Devices, Inc. Method and apparatus for denormal load handling
US6651163B1 (en) 2000-03-08 2003-11-18 Advanced Micro Devices, Inc. Exception handling with reduced overhead in a multithreaded multiprocessing system
JP2001306335A (ja) * 2000-04-27 2001-11-02 Sony Corp コンピュータ
JP4423757B2 (ja) * 2000-06-27 2010-03-03 ソニー株式会社 例外処理システム及び方法、並びに、プロセッサ
US20040111593A1 (en) * 2002-12-05 2004-06-10 International Business Machines Corporation Interrupt handler prediction method and system
AU2003203386A1 (en) * 2003-01-24 2004-08-13 Fujitsu Limited Interrupt control method and interrupt control device
US20050182920A1 (en) 2004-02-13 2005-08-18 Alexandre Palus Apparatus and method for expedited exception handling using a dedicated port
US7613911B2 (en) 2004-03-12 2009-11-03 Arm Limited Prefetching exception vectors by early lookup exception vectors within a cache memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150024927A (ko) * 2012-06-27 2015-03-09 노르딕 세미컨덕터 에이에스에이 집적 회로 무선
KR20160065145A (ko) * 2013-10-09 2016-06-08 에이알엠 리미티드 데이터 처리장치 및 추론 벡터 연산의 수행 제어방법

Also Published As

Publication number Publication date
JP5323936B2 (ja) 2013-10-23
CN102112966A (zh) 2011-06-29
WO2010017077A2 (en) 2010-02-11
WO2010017077A3 (en) 2011-04-28
EP2327013A2 (en) 2011-06-01
US8291202B2 (en) 2012-10-16
TW201017531A (en) 2010-05-01
KR101284097B1 (ko) 2013-07-15
CN102112966B (zh) 2015-07-01
JP2011530741A (ja) 2011-12-22
US20100036987A1 (en) 2010-02-11

Similar Documents

Publication Publication Date Title
KR101284097B1 (ko) 추론적 인터럽트 벡터 프리페칭 장치 및 방법
JP2889955B2 (ja) 分岐予測の方法とそのための装置
US8713294B2 (en) Heap/stack guard pages using a wakeup unit
US9519586B2 (en) Methods and apparatus to reduce cache pollution caused by data prefetching
US20100306473A1 (en) Cache line use history based done bit modification to d-cache replacement scheme
US5860151A (en) Data cache fast address calculation system and method
KR101541001B1 (ko) 아직 발행되지 않은 명령들에 대한 얼리 액세스를 가진 코프로세서를 구비한 프로세서
JP2009540411A (ja) 高速で安価なストア−ロード競合スケジューリング及び転送機構
KR20060108644A (ko) 트레이스 캐시 기반 프로세서에서 예외 명령어들을 처리하는 시스템 및 방법
US20120311308A1 (en) Branch Predictor with Jump Ahead Logic to Jump Over Portions of Program Code Lacking Branches
US20080022080A1 (en) Data access handling in a data processing system
KR20090042303A (ko) 가변 길이 명령 세트의 브랜치 명령의 최종 입도와 캐싱된 브랜치 정보의 관련
JP2013545194A (ja) 分岐命令の中に符号化されたバイモーダル分岐予測子
CN116302106A (zh) 用于促进分支预测单元的改善的带宽的设备、方法和系统
US20080141002A1 (en) Instruction pipeline monitoring device and method thereof
US8332587B2 (en) Cache line use history based done bit modification to I-cache replacement scheme
US20040225866A1 (en) Branch prediction in a data processing system
US11294684B2 (en) Indirect branch predictor for dynamic indirect branches
JP3683439B2 (ja) 分岐予測を抑止する情報処理装置および方法
CN116048627B (zh) 指令缓冲方法、装置、处理器、电子设备及可读存储介质
US11379240B2 (en) Indirect branch predictor based on register operands
US10983801B2 (en) Load/store ordering violation management
Karimi et al. On the impact of performance faults in modern microprocessors
US7343481B2 (en) Branch prediction in a data processing system utilizing a cache of previous static predictions
CN115380273A (zh) 处理器流水线中的间接跳转的提取级处置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20160629

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170629

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee